2018-01-23 14:35:31 -05:00
! function ( ) { var a = { } , b = function ( b ) { for ( var c = a [ b ] , e = c . deps , f = c . defn , g = e . length , h = new Array ( g ) , i = 0 ; i < g ; ++ i ) h [ i ] = d ( e [ i ] ) ; var j = f . apply ( null , h ) ; if ( void 0 === j ) throw "module [" + b + "] returned undefined" ; c . instance = j } , c = function ( b , c , d ) { if ( "string" != typeof b ) throw "module id must be a string" ; if ( void 0 === c ) throw "no dependencies for " + b ; if ( void 0 === d ) throw "no definition function for " + b ; a [ b ] = { deps : c , defn : d , instance : void 0 } } , d = function ( c ) { var d = a [ c ] ; if ( void 0 === d ) throw "module [" + c + "] was undefined" ; return void 0 === d . instance && b ( c ) , d . instance } , e = function ( a , b ) { for ( var c = a . length , e = new Array ( c ) , f = 0 ; f < c ; ++ f ) e . push ( d ( a [ f ] ) ) ; b . apply ( null , b ) } , f = { } ; f . bolt = { module : { api : { define : c , require : e , demand : d } } } ; var g = c , h = function ( a , b ) { g ( a , [ ] , function ( ) { return b } ) } ; h ( "global!Array" , Array ) , h ( "global!Error" , Error ) , g ( "ephox.katamari.api.Fun" , [ "global!Array" , "global!Error" ] , function ( a , b ) { var c = function ( ) { } , d = function ( a , b ) { return function ( ) { return a ( b . apply ( null , arguments ) ) } } , e = function ( a ) { return function ( ) { return a } } , f = function ( a ) { return a } , g = function ( a , b ) { return a === b } , h = function ( b ) { for ( var c = new a ( arguments . length - 1 ) , d = 1 ; d < arguments . length ; d ++ ) c [ d - 1 ] = arguments [ d ] ; return function ( ) { for ( var d = new a ( arguments . length ) , e = 0 ; e < d . length ; e ++ ) d [ e ] = arguments [ e ] ; var f = c . concat ( d ) ; return b . apply ( null , f ) } } , i = function ( a ) { return function ( ) { return ! a . apply ( null , arguments ) } } , j = function ( a ) { return function ( ) { throw new b ( a ) } } , k = function ( a ) { return a ( ) } , l = function ( a ) { a ( ) } , m = e ( ! 1 ) , n = e ( ! 0 ) ; return { noop : c , compose : d , constant : e , identity : f , tripleEquals : g , curry : h , not : i , die : j , apply : k , call : l , never : m , always : n } } ) , g ( "tinymce.core.util.Promise" , [ ] , function ( ) { function a ( a , b ) { return function ( ) { a . apply ( b , arguments ) } } function b ( b ) { if ( "object" != typeof this ) throw new TypeError ( "Promises must be constructed via new" ) ; if ( "function" != typeof b ) throw new TypeError ( "not a function" ) ; this . _state = null , this . _value = null , this . _deferreds = [ ] , h ( b , a ( d , this ) , a ( e , this ) ) } function c ( a ) { var b = this ; return null === this . _state ? void this . _deferreds . push ( a ) : void i ( function ( ) { var c = b . _state ? a . onFulfilled : a . onRejected ; if ( null === c ) return void ( b . _state ? a . resolve : a . reject ) ( b . _value ) ; var d ; try { d = c ( b . _value ) } catch ( e ) { return void a . reject ( e ) } a . resolve ( d ) } ) } function d ( b ) { try { if ( b === this ) throw new TypeError ( "A promise cannot be resolved with itself." ) ; if ( b && ( "object" == typeof b || "function" == typeof b ) ) { var c = b . then ; if ( "function" == typeof c ) return void h ( a ( c , b ) , a ( d , this ) , a ( e , this ) ) } this . _state = ! 0 , this . _value = b , f . call ( this ) } catch ( g ) { e . call ( this , g ) } } function e ( a ) { this . _state = ! 1 , this . _value = a , f . call ( this ) } function f ( ) { for ( var a = 0 , b = this . _deferreds . length ; a < b ; a ++ ) c . call ( this , this . _deferreds [ a ] ) ; this . _deferreds = null } function g ( a , b , c , d ) { this . onFulfilled = "function" == typeof a ? a : null , this . onRejected = "function" == typeof b ? b : null , this . resolve = c , this . reject = d } function h ( a , b , c ) { var d = ! 1 ; try { a ( function ( a ) { d || ( d = ! 0 , b ( a ) ) } , function ( a ) { d || ( d = ! 0 , c ( a ) ) } ) } catch ( e ) { if ( d ) return ; d = ! 0 , c ( e ) } } if ( window . Promise ) return window . Promise ; var i = b . immediateFn || "function" == typeof setImmediate && setImmediate || function ( a ) { setTimeout ( a , 1 ) } , j = Array . isArray || function ( a ) { return "[object Array]" === Object . prototype . toString . call ( a ) } ; return b . prototype [ "catch" ] = function ( a ) { return this . then ( null , a ) } , b . prototype . then = function ( a , d ) { var e = this ; return new b ( function ( b , f ) { c . call ( e , new g ( a , d , b , f ) ) } ) } , b . all = function ( ) { var a = Array . prototype . slice . call ( 1 === arguments . length && j ( arguments [ 0 ] ) ? arguments [ 0 ] : arguments ) ; return new b ( function ( b , c ) { function d ( f , g ) { try { if ( g && ( "object" == typeof g || "function" == typeof g ) ) { var h = g . then ; if ( "function" == typeof h ) return void h . call ( g , function ( a ) { d ( f , a ) } , c ) } a [ f ] = g , 0 === -- e && b ( a ) } catch ( i ) { c ( i ) } } if ( 0 === a . length ) return b ( [ ] ) ; for ( var e = a . length , f = 0 ; f < a . length ; f ++ ) d ( f , a [ f ] ) } ) } , b . resolve = function ( a ) { return a && "object" == typeof a && a . constructor === b ? a : new b ( function ( b ) { b ( a ) } ) } , b . reject = function ( a ) { return new b ( function ( b , c ) { c ( a ) } ) } , b . race = function ( a ) { return new b ( function ( b , c ) { for ( var d = 0 , e = a . length ; d < e ; d ++ ) a [ d ] . then ( b , c ) } ) } , b } ) , g ( "tinymce.core.util.Delay" , [ "tinymce.core.util.Promise" ] , function ( a ) { function b ( a , b ) { function c ( a ) { window . setTimeout ( a , 0 ) } var d , e = window . request
"for" : "htmlFor" , "class" : "className" , readonly : "readOnly" } , F = { "float" : "cssFloat" } , G = { } , H = { } , I = /^\s*|\s*$/g ; return l . fn = l . prototype = { constructor : l , selector : "" , context : null , length : 0 , init : function ( a , b ) { var c , d , e = this ; if ( ! a ) return e ; if ( a . nodeType ) return e . context = e [ 0 ] = a , e . length = 1 , e ; if ( b && b . nodeType ) e . context = b ; else { if ( b ) return l ( a ) . attr ( b ) ; e . context = b = document } if ( f ( a ) ) { if ( e . selector = a , c = "<" === a . charAt ( 0 ) && ">" === a . charAt ( a . length - 1 ) && a . length >= 3 ? [ null , a , null ] : z . exec ( a ) , ! c ) return l ( b ) . find ( a ) ; if ( c [ 1 ] ) for ( d = h ( a , q ( b ) ) . firstChild ; d ; ) x . call ( e , d ) , d = d . nextSibling ; else { if ( d = q ( b ) . getElementById ( c [ 2 ] ) , ! d ) return e ; if ( d . id !== c [ 2 ] ) return e . find ( a ) ; e . length = 1 , e [ 0 ] = d } } else this . add ( a , ! 1 ) ; return e } , toArray : function ( ) { return c . toArray ( this ) } , add : function ( a , b ) { var c , d , e = this ; if ( f ( a ) ) return e . add ( l ( a ) ) ; if ( b !== ! 1 ) for ( c = l . unique ( e . toArray ( ) . concat ( l . makeArray ( a ) ) ) , e . length = c . length , d = 0 ; d < c . length ; d ++ ) e [ d ] = c [ d ] ; else x . apply ( e , l . makeArray ( a ) ) ; return e } , attr : function ( a , b ) { var c , d = this ; if ( "object" == typeof a ) o ( a , function ( a , b ) { d . attr ( a , b ) } ) ; else { if ( ! e ( b ) ) { if ( d [ 0 ] && 1 === d [ 0 ] . nodeType ) { if ( c = G [ a ] , c && c . get ) return c . get ( d [ 0 ] , a ) ; if ( D [ a ] ) return d . prop ( a ) ? a : v ; b = d [ 0 ] . getAttribute ( a , 2 ) , null === b && ( b = v ) } return b } this . each ( function ( ) { var c ; if ( 1 === this . nodeType ) { if ( c = G [ a ] , c && c . set ) return void c . set ( this , b ) ; null === b ? this . removeAttribute ( a , 2 ) : this . setAttribute ( a , b , 2 ) } } ) } return d } , removeAttr : function ( a ) { return this . attr ( a , null ) } , prop : function ( a , b ) { var c = this ; if ( a = E [ a ] || a , "object" == typeof a ) o ( a , function ( a , b ) { c . prop ( a , b ) } ) ; else { if ( ! e ( b ) ) return c [ 0 ] && c [ 0 ] . nodeType && a in c [ 0 ] ? c [ 0 ] [ a ] : b ; this . each ( function ( ) { 1 == this . nodeType && ( this [ a ] = b ) } ) } return c } , css : function ( a , b ) { function c ( a ) { return a . replace ( /-(\D)/g , function ( a , b ) { return b . toUpperCase ( ) } ) } function d ( a ) { return a . replace ( /[A-Z]/g , function ( a ) { return "-" + a } ) } var f , g , h = this ; if ( "object" == typeof a ) o ( a , function ( a , b ) { h . css ( a , b ) } ) ; else if ( e ( b ) ) a = c ( a ) , "number" != typeof b || C [ a ] || ( b += "px" ) , h . each ( function ( ) { var c = this . style ; if ( g = H [ a ] , g && g . set ) return void g . set ( this , b ) ; try { this . style [ F [ a ] || a ] = b } catch ( e ) { } null !== b && "" !== b || ( c . removeProperty ? c . removeProperty ( d ( a ) ) : c . removeAttribute ( a ) ) } ) ; else { if ( f = h [ 0 ] , g = H [ a ] , g && g . get ) return g . get ( f ) ; if ( f . ownerDocument . defaultView ) try { return f . ownerDocument . defaultView . getComputedStyle ( f , null ) . getPropertyValue ( d ( a ) ) } catch ( i ) { return v } else if ( f . currentStyle ) return f . currentStyle [ c ( a ) ] } return h } , remove : function ( ) { for ( var a , b = this , c = this . length ; c -- ; ) a = b [ c ] , A . clean ( a ) , a . parentNode && a . parentNode . removeChild ( a ) ; return this } , empty : function ( ) { for ( var a , b = this , c = this . length ; c -- ; ) for ( a = b [ c ] ; a . firstChild ; ) a . removeChild ( a . firstChild ) ; return this } , html : function ( a ) { var b , c = this ; if ( e ( a ) ) { b = c . length ; try { for ( ; b -- ; ) c [ b ] . innerHTML = a } catch ( d ) { l ( c [ b ] ) . empty ( ) . append ( a ) } return c } return c [ 0 ] ? c [ 0 ] . innerHTML : "" } , text : function ( a ) { var b , c = this ; if ( e ( a ) ) { for ( b = c . length ; b -- ; ) "innerText" in c [ b ] ? c [ b ] . innerText = a : c [ 0 ] . textContent = a ; return c } return c [ 0 ] ? c [ 0 ] . innerText || c [ 0 ] . textContent : "" } , append : function ( ) { return i ( this , arguments , function ( a ) { ( 1 === this . nodeType || this . host && 1 === this . host . nodeType ) && this . appendChild ( a ) } ) } , prepend : function ( ) { return i ( this , arguments , function ( a ) { ( 1 === this . nodeType || this . host && 1 === this . host . nodeType ) && this . insertBefore ( a , this . firstChild ) } , ! 0 ) } , before : function ( ) { var a = this ; return a [ 0 ] && a [ 0 ] . parentNode ? i ( a , arguments , function ( a ) { this . parentNode . insertBefore ( a , this ) } ) : a } , after : function ( ) { var a = this ; return a [ 0 ] && a [ 0 ] . parentNode ? i ( a , arguments , function ( a ) { this . parentNode . insertBefore ( a , this . nextSibling ) } , ! 0 ) : a } , appendTo : function ( a ) { return l ( a ) . append ( this ) , this } , prependTo : function ( a ) { return l ( a ) . prepend ( this ) , this } , replaceWith : function ( a ) { return this . before ( a ) . remove ( ) } , wrap : function ( a ) { return k ( this , a ) } , wrapAll : function ( a ) { return k ( this , a , ! 0 ) } , wrapInner : function ( a ) { return this . each ( function ( ) { l ( this ) . contents ( ) . wrapAll ( a ) } ) , this } , unwrap : function ( ) { return this . parent ( ) . each ( function ( ) { l ( this ) . replaceWith ( this . childNodes ) } ) } , clone : function ( ) { var a = [ ] ; return this . each ( function ( ) { a . push ( this . cloneNode ( ! 0 ) ) } ) , l ( a ) } , addClass : function ( a ) { return this . toggleClass ( a , ! 0 ) } , removeClass : function ( a ) { return this . toggleClass ( a , ! 1 ) } ,
"html5-strict" != a && ( d ( "script" , "language xml:space" ) , d ( "style" , "xml:space" ) , d ( "object" , "declare classid code codebase codetype archive standby align border hspace vspace" ) , d ( "embed" , "align name hspace vspace" ) , d ( "param" , "valuetype type" ) , d ( "a" , "charset name rev shape coords" ) , d ( "br" , "clear" ) , d ( "applet" , "codebase archive code object alt name width height align hspace vspace" ) , d ( "img" , "name longdesc align border hspace vspace" ) , d ( "iframe" , "longdesc frameborder marginwidth marginheight scrolling align" ) , d ( "font basefont" , "size color face" ) , d ( "input" , "usemap align" ) , d ( "select" , "onchange" ) , d ( "textarea" ) , d ( "h1 h2 h3 h4 h5 h6 div p legend caption" , "align" ) , d ( "ul" , "type compact" ) , d ( "li" , "type" ) , d ( "ol dl menu dir" , "compact" ) , d ( "pre" , "width xml:space" ) , d ( "hr" , "align noshade size width" ) , d ( "isindex" , "prompt" ) , d ( "table" , "summary width frame rules cellspacing cellpadding align bgcolor" ) , d ( "col" , "width align char charoff valign" ) , d ( "colgroup" , "width align char charoff valign" ) , d ( "thead" , "align char charoff valign" ) , d ( "tr" , "align char charoff valign bgcolor" ) , d ( "th" , "axis align char charoff valign nowrap bgcolor width height" ) , d ( "form" , "accept" ) , d ( "td" , "abbr axis scope align char charoff valign nowrap bgcolor width height" ) , d ( "tfoot" , "align char charoff valign" ) , d ( "tbody" , "align char charoff valign" ) , d ( "area" , "nohref" ) , d ( "body" , "background bgcolor text link vlink alink" ) ) , "html4" != a && ( d ( "input button select textarea" , "autofocus" ) , d ( "input textarea" , "placeholder" ) , d ( "a" , "download" ) , d ( "link script img" , "crossorigin" ) , d ( "iframe" , "sandbox seamless allowfullscreen" ) ) , h ( b ( "a form meter progress dfn" ) , function ( a ) { n [ a ] && delete n [ a ] . children [ a ] } ) , delete n . caption . children . table , delete n . script , e [ a ] = n , n ) } function d ( a , b ) { var c ; return a && ( c = { } , "string" == typeof a && ( a = { "*" : a } ) , h ( a , function ( a , d ) { c [ d ] = c [ d . toUpperCase ( ) ] = "map" == b ? g ( a , /[, ]/ ) : j ( a , /[, ]/ ) } ) ) , c } var e = { } , f = { } , g = a . makeMap , h = a . each , i = a . extend , j = a . explode , k = a . inArray ; return function ( a ) { function f ( b , c , d ) { var f = a [ b ] ; return f ? f = g ( f , /[, ]/ , g ( f . toUpperCase ( ) , /[, ]/ ) ) : ( f = e [ b ] , f || ( f = g ( c , " " , g ( c . toUpperCase ( ) , " " ) ) , f = i ( f , d ) , e [ b ] = f ) ) , f } function l ( a ) { return new RegExp ( "^" + a . replace ( /([?+*])/g , ".$1" ) + "$" ) } function m ( a ) { var c , d , e , f , h , i , j , m , n , o , p , q , r , s , t , u , v , w , x , y = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/ , z = /^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/ , A = /[*?+]/ ; if ( a ) for ( a = b ( a , "," ) , F [ "@" ] && ( u = F [ "@" ] . attributes , v = F [ "@" ] . attributesOrder ) , c = 0 , d = a . length ; c < d ; c ++ ) if ( h = y . exec ( a [ c ] ) ) { if ( s = h [ 1 ] , n = h [ 2 ] , t = h [ 3 ] , m = h [ 5 ] , q = { } , r = [ ] , i = { attributes : q , attributesOrder : r } , "#" === s && ( i . paddEmpty = ! 0 ) , "-" === s && ( i . removeEmpty = ! 0 ) , "!" === h [ 4 ] && ( i . removeEmptyAttrs = ! 0 ) , u ) { for ( w in u ) q [ w ] = u [ w ] ; r . push . apply ( r , v ) } if ( m ) for ( m = b ( m , "|" ) , e = 0 , f = m . length ; e < f ; e ++ ) if ( h = z . exec ( m [ e ] ) ) { if ( j = { } , p = h [ 1 ] , o = h [ 2 ] . replace ( /::/g , ":" ) , s = h [ 3 ] , x = h [ 4 ] , "!" === p && ( i . attributesRequired = i . attributesRequired || [ ] , i . attributesRequired . push ( o ) , j . required = ! 0 ) , "-" === p ) { delete q [ o ] , r . splice ( k ( r , o ) , 1 ) ; continue } s && ( "=" === s && ( i . attributesDefault = i . attributesDefault || [ ] , i . attributesDefault . push ( { name : o , value : x } ) , j . defaultValue = x ) , ":" === s && ( i . attributesForced = i . attributesForced || [ ] , i . attributesForced . push ( { name : o , value : x } ) , j . forcedValue = x ) , "<" === s && ( j . validValues = g ( x , "?" ) ) ) , A . test ( o ) ? ( i . attributePatterns = i . attributePatterns || [ ] , j . pattern = l ( o ) , i . attributePatterns . push ( j ) ) : ( q [ o ] || r . push ( o ) , q [ o ] = j ) } u || "@" != n || ( u = q , v = r ) , t && ( i . outputName = n , F [ t ] = i ) , A . test ( n ) ? ( i . pattern = l ( n ) , H . push ( i ) ) : F [ n ] = i } } function n ( a ) { F = { } , H = [ ] , m ( a ) , h ( t , function ( a , b ) { G [ b ] = a . children } ) } function o ( a ) { var c = /^(~)?(.+)$/ ; a && ( e . text _block _elements = e . block _elements = null , h ( b ( a , "," ) , function ( a ) { var b = c . exec ( a ) , d = "~" === b [ 1 ] , e = d ? "span" : "div" , f = b [ 2 ] ; if ( G [ f ] = G [ e ] , I [ f ] = e , d || ( z [ f . toUpperCase ( ) ] = { } , z [ f ] = { } ) , ! F [ f ] ) { var g = F [ e ] ; g = i ( { } , g ) , delete g . removeEmptyAttrs , delete g . removeEmpty , F [ f ] = g } h ( G , function ( a , b ) { a [ e ] && ( G [ b ] = a = i ( { } , G [ b ] ) , a [ f ] = a [ e ] ) } ) } ) ) } function p ( c ) { var d = /^([+\-]?)(\w+)\[([^\]]+)\]$/ ; e [ a . schema ] = null , c && h ( b ( c , "," ) , function ( a ) { var c , e , f = d . exec ( a ) ; f && ( e = f [ 1 ] , c = e ? G [ f [ 2 ] ] : G [ f [ 2 ] ] = { "#comment" : { } } , c = G [ f [ 2 ] ] , h ( b ( f [ 3 ] , "|" ) , function ( a ) { "-" === e ? delete c [ a ] : c [ a ] = { } } ) ) } ) } function q ( a ) { var b , c = F [ a ] ; if ( c ) re
b = a [ a . length - 1 ] , 0 === t && a . length > 0 && b === s && 3 === b . nodeType && a . splice ( a . length - 1 , 1 ) , a } function e ( a , b , c ) { for ( var d = [ ] ; a && a != c ; a = a [ b ] ) d . push ( a ) ; return d } function f ( a , b ) { do { if ( a . parentNode == b ) return a ; a = a . parentNode } while ( a ) } function h ( a , b , f ) { var g = f ? "nextSibling" : "previousSibling" ; for ( l = a , m = l . parentNode ; l && l != b ; l = m ) m = l . parentNode , n = e ( l == a ? l : l [ g ] , g ) , n . length && ( f || n . reverse ( ) , c ( d ( n ) ) ) } var i , j , k , l , m , n , o , q = b . startContainer , r = b . startOffset , s = b . endContainer , t = b . endOffset ; if ( o = a . select ( "td[data-mce-selected],th[data-mce-selected]" ) , o . length > 0 ) return void p ( o , function ( a ) { c ( [ a ] ) } ) ; if ( 1 == q . nodeType && q . hasChildNodes ( ) && ( q = q . childNodes [ r ] ) , 1 == s . nodeType && s . hasChildNodes ( ) && ( s = g ( s , t ) ) , q == s ) return c ( d ( [ q ] ) ) ; for ( i = a . findCommonAncestor ( q , s ) , l = q ; l ; l = l . parentNode ) { if ( l === s ) return h ( q , i , ! 0 ) ; if ( l === i ) break } for ( l = s ; l ; l = l . parentNode ) { if ( l === q ) return h ( s , i ) ; if ( l === i ) break } j = f ( q , i ) || q , k = f ( s , i ) || s , h ( q , j , ! 0 ) , n = e ( j == q ? j : j . nextSibling , "nextSibling" , k == s ? k . nextSibling : k ) , n . length && c ( d ( n ) ) , h ( s , k ) } , this . split = function ( a ) { function b ( a , b ) { return a . splitText ( b ) } var c = a . startContainer , d = a . startOffset , e = a . endContainer , f = a . endOffset ; return c == e && 3 == c . nodeType ? d > 0 && d < c . nodeValue . length && ( e = b ( c , d ) , c = e . previousSibling , f > d ? ( f -= d , c = e = b ( e , f ) . previousSibling , f = e . nodeValue . length , d = 0 ) : f = 0 ) : ( 3 == c . nodeType && d > 0 && d < c . nodeValue . length && ( c = b ( c , d ) , d = 0 ) , 3 == e . nodeType && f > 0 && f < e . nodeValue . length && ( e = b ( e , f ) . previousSibling , f = e . nodeValue . length ) ) , { startContainer : c , startOffset : d , endContainer : e , endOffset : f } } , this . normalize = function ( c ) { function d ( d ) { function g ( a ) { return a && /^(TD|TH|CAPTION)$/ . test ( a . nodeName ) } function h ( c , d ) { for ( var e = new b ( c , a . getParent ( c . parentNode , a . isBlock ) || w ) ; c = e [ d ? "prev" : "next" ] ( ) ; ) if ( "BR" === c . nodeName ) return ! 0 } function i ( a ) { for ( ; a && a != w ; ) { if ( r ( a ) ) return ! 0 ; a = a . parentNode } return ! 1 } function k ( a , b ) { return a . previousSibling && a . previousSibling . nodeName == b } function m ( c , d ) { var g , h , i ; if ( d = d || n , i = a . getParent ( d . parentNode , a . isBlock ) || w , c && "BR" == d . nodeName && v && a . isEmpty ( i ) ) return n = d . parentNode , o = a . nodeIndex ( d ) , void ( f = ! 0 ) ; for ( g = new b ( d , i ) ; q = g [ c ? "prev" : "next" ] ( ) ; ) { if ( "false" === a . getContentEditableParent ( q ) || l ( q , a . getRoot ( ) ) ) return ; if ( 3 === q . nodeType && q . nodeValue . length > 0 ) return void ( j ( q , w , "A" ) === ! 1 && ( n = q , o = c ? q . nodeValue . length : 0 , f = ! 0 ) ) ; if ( a . isBlock ( q ) || t [ q . nodeName . toLowerCase ( ) ] ) return ; h = q } e && h && ( n = h , f = ! 0 , o = 0 ) } var n , o , p , q , t , u , v , w = a . getRoot ( ) ; if ( n = c [ ( d ? "start" : "end" ) + "Container" ] , o = c [ ( d ? "start" : "end" ) + "Offset" ] , v = 1 == n . nodeType && o === n . childNodes . length , t = a . schema . getNonEmptyElements ( ) , u = d , ! s ( n ) ) { if ( 1 == n . nodeType && o > n . childNodes . length - 1 && ( u = ! 1 ) , 9 === n . nodeType && ( n = a . getRoot ( ) , o = 0 ) , n === w ) { if ( u && ( q = n . childNodes [ o > 0 ? o - 1 : 0 ] ) ) { if ( s ( q ) ) return ; if ( t [ q . nodeName ] || "TABLE" == q . nodeName ) return } if ( n . hasChildNodes ( ) ) { if ( o = Math . min ( ! u && o > 0 ? o - 1 : o , n . childNodes . length - 1 ) , n = n . childNodes [ o ] , o = 0 , ! e && n === w . lastChild && "TABLE" === n . nodeName ) return ; if ( i ( n ) || s ( n ) ) return ; if ( n . hasChildNodes ( ) && ! /TABLE/ . test ( n . nodeName ) ) { q = n , p = new b ( n , w ) ; do { if ( r ( q ) || s ( q ) ) { f = ! 1 ; break } if ( 3 === q . nodeType && q . nodeValue . length > 0 ) { o = u ? 0 : q . nodeValue . length , n = q , f = ! 0 ; break } if ( t [ q . nodeName . toLowerCase ( ) ] && ! g ( q ) ) { o = a . nodeIndex ( q ) , n = q . parentNode , "IMG" !== q . nodeName && "PRE" !== q . nodeName || u || o ++ , f = ! 0 ; break } } while ( q = u ? p . next ( ) : p . prev ( ) ) } } } e && ( 3 === n . nodeType && 0 === o && m ( ! 0 ) , 1 === n . nodeType && ( q = n . childNodes [ o ] , q || ( q = n . childNodes [ o - 1 ] ) , ! q || "BR" !== q . nodeName || k ( q , "A" ) || h ( q ) || h ( q , ! 0 ) || m ( ! 0 , q ) ) ) , u && ! e && 3 === n . nodeType && o === n . nodeValue . length && m ( ! 1 ) , f && c [ "set" + ( d ? "Start" : "End" ) ] ( n , o ) } } var e , f = ! 1 ; return e = c . collapsed , d ( ! 0 ) , e || d ( ) , f && e && c . collapse ( ! 0 ) , f } } function n ( b , c , d ) { var e , f , g ; if ( e = d . elementFromPoint ( b , c ) , f = d . body . createTextRange ( ) , e && "HTML" != e . tagName || ( e = d . body ) , f . moveToElementText ( e ) , g = a . toArray ( f . getClientRects ( ) ) , g = g . sort ( function ( a , b ) { return a = Math . abs ( Math . max ( a . top - c , a . bottom - c ) ) , b = Math . abs ( Math . max ( b . top - c , b . bottom - c ) ) , a - b } ) , g . length > 0 ) { c = ( g [ 0 ] . bottom + g [ 0 ] . top ) / 2 ; try { return f . moveToPoint ( b , c ) , f . collapse ( ! 0 ) , f } catch ( h ) { } } return null } function o ( a , b ) { var c = a && a . parentElement ? a . parentElement ( ) : null ; return r ( h ( c , b , f ) ) ? null : a } var p = a . each , q = c . isContentEditableTrue , r = c . isContentEditableFalse , s = e . isCaretContainer ; return m . compareRanges = function ( a
isSafari : i ( h , b ) } } ; return { unknown : j , nu : k , edge : a . constant ( c ) , chrome : a . constant ( d ) , ie : a . constant ( e ) , opera : a . constant ( f ) , firefox : a . constant ( g ) , safari : a . constant ( h ) } } ) , g ( "ephox.sand.core.OperatingSystem" , [ "ephox.katamari.api.Fun" , "ephox.sand.detect.Version" ] , function ( a , b ) { var c = "Windows" , d = "iOS" , e = "Android" , f = "Linux" , g = "OSX" , h = "Solaris" , i = "FreeBSD" , j = function ( a , b ) { return function ( ) { return b === a } } , k = function ( ) { return l ( { current : void 0 , version : b . unknown ( ) } ) } , l = function ( a ) { var b = a . current , k = a . version ; return { current : b , version : k , isWindows : j ( c , b ) , isiOS : j ( d , b ) , isAndroid : j ( e , b ) , isOSX : j ( g , b ) , isLinux : j ( f , b ) , isSolaris : j ( h , b ) , isFreeBSD : j ( i , b ) } } ; return { unknown : k , nu : l , windows : a . constant ( c ) , ios : a . constant ( d ) , android : a . constant ( e ) , linux : a . constant ( f ) , osx : a . constant ( g ) , solaris : a . constant ( h ) , freebsd : a . constant ( i ) } } ) , g ( "ephox.sand.detect.DeviceType" , [ "ephox.katamari.api.Fun" ] , function ( a ) { return function ( b , c , d ) { var e = b . isiOS ( ) && /ipad/i . test ( d ) === ! 0 , f = b . isiOS ( ) && ! e , g = b . isAndroid ( ) && 3 === b . version . major , h = b . isAndroid ( ) && 4 === b . version . major , i = e || g || h && /mobile/i . test ( d ) === ! 0 , j = b . isiOS ( ) || b . isAndroid ( ) , k = j && ! i , l = c . isSafari ( ) && b . isiOS ( ) && /safari/i . test ( d ) === ! 1 ; return { isiPad : a . constant ( e ) , isiPhone : a . constant ( f ) , isTablet : a . constant ( i ) , isPhone : a . constant ( k ) , isTouch : a . constant ( j ) , isAndroid : b . isAndroid , isiOS : b . isiOS , isWebView : a . constant ( l ) } } } ) , g ( "ephox.sand.detect.UaString" , [ "ephox.katamari.api.Arr" , "ephox.sand.detect.Version" , "global!String" ] , function ( a , b , c ) { var d = function ( b , d ) { var e = c ( d ) . toLowerCase ( ) ; return a . find ( b , function ( a ) { return a . search ( e ) } ) } , e = function ( a , c ) { return d ( a , c ) . map ( function ( a ) { var d = b . detect ( a . versionRegexes , c ) ; return { current : a . name , version : d } } ) } , f = function ( a , c ) { return d ( a , c ) . map ( function ( a ) { var d = b . detect ( a . versionRegexes , c ) ; return { current : a . name , version : d } } ) } ; return { detectBrowser : e , detectOs : f } } ) , g ( "ephox.katamari.str.StrAppend" , [ ] , function ( ) { var a = function ( a , b ) { return b + a } , b = function ( a , b ) { return a + b } , c = function ( a , b ) { return a . substring ( b ) } , d = function ( a , b ) { return a . substring ( 0 , a . length - b ) } ; return { addToStart : a , addToEnd : b , removeFromStart : c , removeFromEnd : d } } ) , g ( "ephox.katamari.str.StringParts" , [ "ephox.katamari.api.Option" , "global!Error" ] , function ( a , b ) { var c = function ( a , b ) { return a . substr ( 0 , b ) } , d = function ( a , b ) { return a . substr ( a . length - b , a . length ) } , e = function ( b ) { return "" === b ? a . none ( ) : a . some ( b . substr ( 0 , 1 ) ) } , f = function ( b ) { return "" === b ? a . none ( ) : a . some ( b . substring ( 1 ) ) } ; return { first : c , last : d , head : e , tail : f } } ) , g ( "ephox.katamari.api.Strings" , [ "ephox.katamari.str.StrAppend" , "ephox.katamari.str.StringParts" , "global!Error" ] , function ( a , b , c ) { var d = function ( a , b , c ) { if ( "" === b ) return ! 0 ; if ( a . length < b . length ) return ! 1 ; var d = a . substr ( c , c + b . length ) ; return d === b } , e = function ( a , b ) { var c = function ( a ) { var b = typeof a ; return "string" === b || "number" === b } ; return a . replace ( /\${([^{}]*)}/g , function ( a , d ) { var e = b [ d ] ; return c ( e ) ? e : a } ) } , f = function ( b , c ) { return l ( b , c ) ? a . removeFromStart ( b , c . length ) : b } , g = function ( b , c ) { return m ( b , c ) ? a . removeFromEnd ( b , c . length ) : b } , h = function ( b , c ) { return l ( b , c ) ? b : a . addToStart ( b , c ) } , i = function ( b , c ) { return m ( b , c ) ? b : a . addToEnd ( b , c ) } , j = function ( a , b ) { return a . indexOf ( b ) !== - 1 } , k = function ( a ) { return b . head ( a ) . bind ( function ( c ) { return b . tail ( a ) . map ( function ( a ) { return c . toUpperCase ( ) + a } ) } ) . getOr ( a ) } , l = function ( a , b ) { return d ( a , b , 0 ) } , m = function ( a , b ) { return d ( a , b , a . length - b . length ) } , n = function ( a ) { return a . replace ( /^\s+|\s+$/g , "" ) } , o = function ( a ) { return a . replace ( /^\s+/g , "" ) } , p = function ( a ) { return a . replace ( /\s+$/g , "" ) } ; return { supplant : e , startsWith : l , removeLeading : f , removeTrailing : g , ensureLeading : h , ensureTrailing : i , endsWith : m , contains : j , trim : n , lTrim : o , rTrim : p , capitalize : k } } ) , g ( "ephox.sand.info.PlatformInfo" , [ "ephox.katamari.api.Fun" , "ephox.katamari.api.Strings" ] , function ( a , b ) { var c = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/ , d = function ( a ) { return function ( c ) { return b . contains ( c , a ) } } , e = [ { name : "Edge" , versionRegexes : [ /.*?edge\/ ?([0-9]+)\.([0-9]+)$/ ] , search : function ( a ) { var c = b . contains ( a , "edge/" ) && b . contains ( a , "chrome" ) && b . contains ( a , "safari" ) && b . contains ( a , "applewebkit" ) ; return c } } , { name : "Chrome" , versionRegexes : [ /.*?chrome\/([0-9]+)\.([0-9]+).*/ , c ] , search : function ( a ) { return b . con
3 === d . nodeType && 0 === d . data . length && ( d = a ? c . previousSibling || c . nextSibling : c . nextSibling || c . previousSibling ) , y . remove ( c , ! 0 ) , d } , D = function ( b ) { var d , e , h = b . commonAncestorContainer ; if ( b = f . expandRng ( a , b , s , ! 0 ) , w . split ) { if ( d = n ( a , b , ! 0 ) , e = n ( a , b ) , d !== e ) { if ( /^(TR|TH|TD)$/ . test ( d . nodeName ) && d . firstChild && ( d = "TR" === d . nodeName ? d . firstChild . firstChild || d : d . firstChild || d ) , h && /^T(HEAD|BODY|FOOT|R)$/ . test ( h . nodeName ) && m ( e ) && e . firstChild && ( e = e . firstChild || e ) , y . isChildOf ( d , e ) && ! y . isBlock ( e ) && ! m ( d ) && ! m ( e ) ) return d = o ( y , d , "span" , { id : "_start" , "data-mce-type" : "bookmark" } ) , A ( d ) , void ( d = C ( ! 0 ) ) ; d = o ( y , d , "span" , { id : "_start" , "data-mce-type" : "bookmark" } ) , e = o ( y , e , "span" , { id : "_end" , "data-mce-type" : "bookmark" } ) , A ( d ) , A ( e ) , d = C ( ! 0 ) , e = C ( ) } else d = e = A ( d ) ; b . startContainer = d . parentNode ? d . parentNode : d , b . startOffset = y . nodeIndex ( d ) , b . endContainer = e . parentNode ? e . parentNode : e , b . endOffset = y . nodeIndex ( e ) + 1 } new c ( y ) . walk ( b , function ( b ) { k ( b , function ( b ) { B ( b ) , 1 === b . nodeType && "underline" === a . dom . getStyle ( b , "text-decoration" ) && b . parentNode && "underline" === g . getTextDecoration ( y , b . parentNode ) && t ( a , { deep : ! 1 , exact : ! 0 , inline : "span" , styles : { textDecoration : "underline" } } , null , b ) } ) } ) } ; if ( l ) return void ( l . nodeType ? ( r = y . createRng ( ) , r . setStartBefore ( l ) , r . setEndAfter ( l ) , D ( r ) ) : D ( l ) ) ; if ( "false" !== y . getContentEditable ( z . getNode ( ) ) ) z . isCollapsed ( ) && w . inline && ! y . select ( "td[data-mce-selected],th[data-mce-selected]" ) . length ? e . removeCaretFormat ( a , d , j , p ) : ( q = z . getBookmark ( ) , D ( z . getRng ( ! 0 ) ) , z . moveToBookmark ( q ) , w . inline && h . match ( a , d , j , z . getStart ( ) ) && g . moveStart ( y , z , z . getRng ( ! 0 ) ) , a . nodeChanged ( ) ) ; else { l = z . getNode ( ) ; for ( var E = 0 , F = s . length ; E < F && ( ! s [ E ] . ceFalseOverride || ! t ( a , s [ E ] , j , l , l ) ) ; E ++ ) ; } } ; return { removeFormat : t , remove : w } } ) , g ( "tinymce.core.fmt.MergeFormats" , [ "ephox.katamari.api.Fun" , "tinymce.core.dom.BookmarkManager" , "tinymce.core.dom.ElementUtils" , "tinymce.core.dom.NodeType" , "tinymce.core.fmt.CaretFormat" , "tinymce.core.fmt.FormatUtils" , "tinymce.core.fmt.MatchFormat" , "tinymce.core.fmt.RemoveFormat" , "tinymce.core.util.Tools" ] , function ( a , b , c , d , e , f , g , h , i ) { var j = i . each , k = function ( a ) { return a && 1 === a . nodeType && ! b . isBookmarkNode ( a ) && ! e . isCaretNode ( a ) && ! d . isBogus ( a ) } , l = function ( a , c ) { var d ; for ( d = a ; d ; d = d [ c ] ) { if ( 3 === d . nodeType && 0 !== d . nodeValue . length ) return a ; if ( 1 === d . nodeType && ! b . isBookmarkNode ( d ) ) return d } return a } , m = function ( a , b , d ) { var e , f , g = new c ( a ) ; if ( b && d && ( b = l ( b , "previousSibling" ) , d = l ( d , "nextSibling" ) , g . compare ( b , d ) ) ) { for ( e = b . nextSibling ; e && e !== d ; ) f = e , e = e . nextSibling , b . appendChild ( f ) ; return a . remove ( d ) , i . each ( i . grep ( d . childNodes ) , function ( a ) { b . appendChild ( a ) } ) , b } return d } , n = function ( a , b , c ) { j ( a . childNodes , function ( a ) { k ( a ) && ( b ( a ) && c ( a ) , a . hasChildNodes ( ) && n ( a , b , c ) ) } ) } , o = function ( b , c ) { return a . curry ( function ( a , c ) { return ! ( ! c || ! f . getStyle ( b , c , a ) ) } , c ) } , p = function ( b , c , d ) { return a . curry ( function ( a , c , d ) { b . setStyle ( d , a , c ) , "" === d . getAttribute ( "style" ) && d . removeAttribute ( "style" ) , q ( b , d ) } , c , d ) } , q = function ( a , b ) { "SPAN" === b . nodeName && 0 === a . getAttribs ( b ) . length && a . remove ( b , ! 0 ) } , r = function ( a , b ) { var c ; 1 === b . nodeType && b . parentNode && 1 === b . parentNode . nodeType && ( c = f . getTextDecoration ( a , b . parentNode ) , a . getStyle ( b , "color" ) && c ? a . setStyle ( b , "text-decoration" , c ) : a . getStyle ( b , "text-decoration" ) === c && a . setStyle ( b , "text-decoration" , null ) ) } , s = function ( b , c , d , e ) { ( c . styles . color || c . styles . textDecoration ) && ( i . walk ( e , a . curry ( r , b ) , "childNodes" ) , r ( b , e ) ) } , t = function ( a , b , c , d ) { b . styles && b . styles . backgroundColor && n ( d , o ( a , "fontSize" ) , p ( a , "backgroundColor" , f . replaceVars ( b . styles . backgroundColor , c ) ) ) } , u = function ( a , b , c , d ) { "sub" !== b . inline && "sup" !== b . inline || ( n ( d , o ( a , "fontSize" ) , p ( a , "fontSize" , "" ) ) , a . remove ( a . select ( "sup" === b . inline ? "sub" : "sup" , d ) , ! 0 ) ) } , v = function ( a , b , c , d ) { d && b . merge _siblings !== ! 1 && ( d = m ( a , f . getNonWhiteSpaceSibling ( d ) , d ) , d = m ( a , d , f . getNonWhiteSpaceSibling ( d , ! 0 ) ) ) } , w = function ( a , b , c ) { if ( b . clear _child _styles ) { var d = b . links ? "*:not(a)" : "*" ; j ( a . select ( d , c ) , function ( c ) { k ( c ) && j ( b . styles , function ( b , d ) { a . setStyle ( c , d , "" ) } ) } ) } } , x = function ( a , b , c , d ) { j ( b , function ( b ) { j ( a . dom . select ( b . inline , d ) , function ( d ) { k ( d ) && h . removeFormat ( a , b , c , d , b . exact ? d : null ) } ) , w ( a . dom , b , d ) } ) } , y = function ( a , b , c , d , e ) { g . matchNode ( a , e . parentNode , c , d ) && h . removeFormat ( a , b , d , e ) || b . merge _wit
} , addClass : function ( a ) { return this . each ( function ( b ) { b . classes . add ( a ) } ) } , removeClass : function ( a ) { return this . each ( function ( b ) { b . classes . remove ( a ) } ) } } , a . each ( "fire on off show hide append prepend before after reflow" . split ( " " ) , function ( b ) { e [ b ] = function ( ) { var c = a . toArray ( arguments ) ; return this . each ( function ( a ) { b in a && a [ b ] . apply ( a , c ) } ) , this } } ) , a . each ( "text name disabled active selected checked visible parent value data" . split ( " " ) , function ( a ) { e [ a ] = function ( b ) { return this . prop ( a , b ) } } ) , d = c . extend ( e ) , b . Collection = d , d } ) , g ( "tinymce.core.ui.BoxUtils" , [ ] , function ( ) { "use strict" ; return { parseBox : function ( a ) { var b , c = 10 ; if ( a ) return "number" == typeof a ? ( a = a || 0 , { top : a , left : a , bottom : a , right : a } ) : ( a = a . split ( " " ) , b = a . length , 1 === b ? a [ 1 ] = a [ 2 ] = a [ 3 ] = a [ 0 ] : 2 === b ? ( a [ 2 ] = a [ 0 ] , a [ 3 ] = a [ 1 ] ) : 3 === b && ( a [ 3 ] = a [ 1 ] ) , { top : parseInt ( a [ 0 ] , c ) || 0 , right : parseInt ( a [ 1 ] , c ) || 0 , bottom : parseInt ( a [ 2 ] , c ) || 0 , left : parseInt ( a [ 3 ] , c ) || 0 } ) } , measureBox : function ( a , b ) { function c ( b ) { var c = document . defaultView ; return c ? ( b = b . replace ( /[A-Z]/g , function ( a ) { return "-" + a } ) , c . getComputedStyle ( a , null ) . getPropertyValue ( b ) ) : a . currentStyle [ b ] } function d ( a ) { var b = parseFloat ( c ( a ) , 10 ) ; return isNaN ( b ) ? 0 : b } return { top : d ( b + "TopWidth" ) , right : d ( b + "RightWidth" ) , bottom : d ( b + "BottomWidth" ) , left : d ( b + "LeftWidth" ) } } } } ) , g ( "tinymce.core.ui.ClassList" , [ "tinymce.core.util.Tools" ] , function ( a ) { "use strict" ; function b ( ) { } function c ( a ) { this . cls = [ ] , this . cls . _map = { } , this . onchange = a || b , this . prefix = "" } return a . extend ( c . prototype , { add : function ( a ) { return a && ! this . contains ( a ) && ( this . cls . _map [ a ] = ! 0 , this . cls . push ( a ) , this . _change ( ) ) , this } , remove : function ( a ) { if ( this . contains ( a ) ) { for ( var b = 0 ; b < this . cls . length && this . cls [ b ] !== a ; b ++ ) ; this . cls . splice ( b , 1 ) , delete this . cls . _map [ a ] , this . _change ( ) } return this } , toggle : function ( a , b ) { var c = this . contains ( a ) ; return c !== b && ( c ? this . remove ( a ) : this . add ( a ) , this . _change ( ) ) , this } , contains : function ( a ) { return ! ! this . cls . _map [ a ] } , _change : function ( ) { delete this . clsValue , this . onchange . call ( this ) } } ) , c . prototype . toString = function ( ) { var a ; if ( this . clsValue ) return this . clsValue ; a = "" ; for ( var b = 0 ; b < this . cls . length ; b ++ ) b > 0 && ( a += " " ) , a += this . prefix + this . cls [ b ] ; return a } , c } ) , g ( "tinymce.core.ui.ReflowQueue" , [ "tinymce.core.util.Delay" ] , function ( a ) { var b , c = { } ; return { add : function ( d ) { var e = d . parent ( ) ; if ( e ) { if ( ! e . _layout || e . _layout . isNative ( ) ) return ; c [ e . _id ] || ( c [ e . _id ] = e ) , b || ( b = ! 0 , a . requestAnimationFrame ( function ( ) { var a , d ; b = ! 1 ; for ( a in c ) d = c [ a ] , d . state . get ( "rendered" ) && d . reflow ( ) ; c = { } } , document . body ) ) } } , remove : function ( a ) { c [ a . _id ] && delete c [ a . _id ] } } } ) , g ( "tinymce.core.ui.Control" , [ "tinymce.core.util.Class" , "tinymce.core.util.Tools" , "tinymce.core.util.EventDispatcher" , "tinymce.core.data.ObservableObject" , "tinymce.core.ui.Collection" , "tinymce.core.ui.DomUtils" , "tinymce.core.dom.DomQuery" , "tinymce.core.ui.BoxUtils" , "tinymce.core.ui.ClassList" , "tinymce.core.ui.ReflowQueue" ] , function ( a , b , c , d , e , f , g , h , i , j ) { "use strict" ; function k ( a ) { return a . _eventDispatcher || ( a . _eventDispatcher = new c ( { scope : a , toggleEvent : function ( b , d ) { d && c . isNative ( b ) && ( a . _nativeEvents || ( a . _nativeEvents = { } ) , a . _nativeEvents [ b ] = ! 0 , a . state . get ( "rendered" ) && l ( a ) ) } } ) ) , a . _eventDispatcher } function l ( a ) { function b ( b ) { var c = a . getParentCtrl ( b . target ) ; c && c . fire ( b . type , b ) } function c ( ) { var a = j . _lastHoverCtrl ; a && ( a . fire ( "mouseleave" , { target : a . getEl ( ) } ) , a . parents ( ) . each ( function ( a ) { a . fire ( "mouseleave" , { target : a . getEl ( ) } ) } ) , j . _lastHoverCtrl = null ) } function d ( b ) { var c , d , e , f = a . getParentCtrl ( b . target ) , g = j . _lastHoverCtrl , h = 0 ; if ( f !== g ) { if ( j . _lastHoverCtrl = f , d = f . parents ( ) . toArray ( ) . reverse ( ) , d . push ( f ) , g ) { for ( e = g . parents ( ) . toArray ( ) . reverse ( ) , e . push ( g ) , h = 0 ; h < e . length && d [ h ] === e [ h ] ; h ++ ) ; for ( c = e . length - 1 ; c >= h ; c -- ) g = e [ c ] , g . fire ( "mouseleave" , { target : g . getEl ( ) } ) } for ( c = h ; c < d . length ; c ++ ) f = d [ c ] , f . fire ( "mouseenter" , { target : f . getEl ( ) } ) } } function e ( b ) { b . preventDefault ( ) , "mousewheel" == b . type ? ( b . deltaY = - . 025 * b . wheelDelta , b . wheelDeltaX && ( b . deltaX = - . 025 * b . wheelDeltaX ) ) : ( b . deltaX = 0 , b . deltaY = b . detail ) , b = a . fire ( "wheel" , b ) } var f , h , i , j , k , l ; if ( k = a . _nativeEvents ) { for ( i = a . parents ( ) . toArray ( ) , i . unshift ( a ) , f = 0 , h = i . length ; ! j && f < h ; f ++ ) j = i [ f ] . _eventsRoot ; for ( j || ( j = i [ i . length - 1 ] || a ) , a . _eventsRoot = j , h = f , f = 0 ; f < h ; f ++ ) i [
if ( d && ( g ( d , c ) || c . parent ( ) === d ) ) continue ; a = c . fire ( "autohide" , { target : a . target } ) , a . isDefaultPrevented ( ) || c . hide ( ) } } } function i ( ) { o || ( o = function ( a ) { 2 != a . button && h ( a ) } , e ( document ) . on ( "click touchstart" , o ) ) } function j ( ) { p || ( p = function ( ) { var a ; for ( a = s . length ; a -- ; ) l ( s [ a ] ) } , e ( window ) . on ( "scroll" , p ) ) } function k ( ) { if ( ! q ) { var a = document . documentElement , b = a . clientWidth , c = a . clientHeight ; q = function ( ) { document . all && b == a . clientWidth && c == a . clientHeight || ( b = a . clientWidth , c = a . clientHeight , u . hideAll ( ) ) } , e ( window ) . on ( "resize" , q ) } } function l ( a ) { function b ( b , c ) { for ( var d , e = 0 ; e < s . length ; e ++ ) if ( s [ e ] != a ) for ( d = s [ e ] . parent ( ) ; d && ( d = d . parent ( ) ) ; ) d == a && s [ e ] . fixed ( b ) . moveBy ( 0 , c ) . repaint ( ) } var c = d . getViewPort ( ) . y ; a . settings . autofix && ( a . state . get ( "fixed" ) ? a . _autoFixY > c && ( a . fixed ( ! 1 ) . layoutRect ( { y : a . _autoFixY } ) . repaint ( ) , b ( ! 1 , a . _autoFixY - c ) ) : ( a . _autoFixY = a . layoutRect ( ) . y , a . _autoFixY < c && ( a . fixed ( ! 0 ) . layoutRect ( { y : 0 } ) . repaint ( ) , b ( ! 0 , c - a . _autoFixY ) ) ) ) } function m ( a , b ) { var c , d , f = u . zIndex || 65535 ; if ( a ) t . push ( b ) ; else for ( c = t . length ; c -- ; ) t [ c ] === b && t . splice ( c , 1 ) ; if ( t . length ) for ( c = 0 ; c < t . length ; c ++ ) t [ c ] . modal && ( f ++ , d = t [ c ] ) , t [ c ] . getEl ( ) . style . zIndex = f , t [ c ] . zIndex = f , f ++ ; var g = e ( "#" + b . classPrefix + "modal-block" , b . getContainerElm ( ) ) [ 0 ] ; d ? e ( g ) . css ( "z-index" , d . zIndex - 1 ) : g && ( g . parentNode . removeChild ( g ) , r = ! 1 ) , u . currentZIndex = f } function n ( a ) { var b ; for ( b = s . length ; b -- ; ) s [ b ] === a && s . splice ( b , 1 ) ; for ( b = t . length ; b -- ; ) t [ b ] === a && t . splice ( b , 1 ) } var o , p , q , r , s = [ ] , t = [ ] , u = a . extend ( { Mixins : [ b , c ] , init : function ( a ) { var b = this ; b . _super ( a ) , b . _eventsRoot = b , b . classes . add ( "floatpanel" ) , a . autohide && ( i ( ) , k ( ) , s . push ( b ) ) , a . autofix && ( j ( ) , b . on ( "move" , function ( ) { l ( this ) } ) ) , b . on ( "postrender show" , function ( a ) { if ( a . control == b ) { var c , d = b . classPrefix ; b . modal && ! r && ( c = e ( "#" + d + "modal-block" , b . getContainerElm ( ) ) , c [ 0 ] || ( c = e ( '<div id="' + d + 'modal-block" class="' + d + "reset " + d + 'fade"></div>' ) . appendTo ( b . getContainerElm ( ) ) ) , f . setTimeout ( function ( ) { c . addClass ( d + "in" ) , e ( b . getEl ( ) ) . addClass ( d + "in" ) } ) , r = ! 0 ) , m ( ! 0 , b ) } } ) , b . on ( "show" , function ( ) { b . parents ( ) . each ( function ( a ) { if ( a . state . get ( "fixed" ) ) return b . fixed ( ! 0 ) , ! 1 } ) } ) , a . popover && ( b . _preBodyHtml = '<div class="' + b . classPrefix + 'arrow"></div>' , b . classes . add ( "popover" ) . add ( "bottom" ) . add ( b . isRtl ( ) ? "end" : "start" ) ) , b . aria ( "label" , a . ariaLabel ) , b . aria ( "labelledby" , b . _id ) , b . aria ( "describedby" , b . describedBy || b . _id + "-none" ) } , fixed : function ( a ) { var b = this ; if ( b . state . get ( "fixed" ) != a ) { if ( b . state . get ( "rendered" ) ) { var c = d . getViewPort ( ) ; a ? b . layoutRect ( ) . y -= c . y : b . layoutRect ( ) . y += c . y } b . classes . toggle ( "fixed" , a ) , b . state . set ( "fixed" , a ) } return b } , show : function ( ) { var a , b = this , c = b . _super ( ) ; for ( a = s . length ; a -- && s [ a ] !== b ; ) ; return a === - 1 && s . push ( b ) , c } , hide : function ( ) { return n ( this ) , m ( ! 1 , this ) , this . _super ( ) } , hideAll : function ( ) { u . hideAll ( ) } , close : function ( ) { var a = this ; return a . fire ( "close" ) . isDefaultPrevented ( ) || ( a . remove ( ) , m ( ! 1 , a ) ) , a } , remove : function ( ) { n ( this ) , this . _super ( ) } , postRender : function ( ) { var a = this ; return a . settings . bodyRole && this . getEl ( "body" ) . setAttribute ( "role" , a . settings . bodyRole ) , a . _super ( ) } } ) ; return u . hideAll = function ( ) { for ( var a = s . length ; a -- ; ) { var b = s [ a ] ; b && b . settings . autohide && ( b . hide ( ) , s . splice ( a , 1 ) ) } } , u } ) , g ( "tinymce.core.ui.Window" , [ "tinymce.core.ui.FloatPanel" , "tinymce.core.ui.Panel" , "tinymce.core.ui.DomUtils" , "tinymce.core.dom.DomQuery" , "tinymce.core.ui.DragHelper" , "tinymce.core.ui.BoxUtils" , "tinymce.core.Env" , "tinymce.core.util.Delay" ] , function ( a , b , c , d , e , f , g , h ) { "use strict" ; function i ( a ) { var b , c = "width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0" , e = d ( "meta[name=viewport]" ) [ 0 ] ; g . overrideViewPort !== ! 1 && ( e || ( e = document . createElement ( "meta" ) , e . setAttribute ( "name" , "viewport" ) , document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( e ) ) , b = e . getAttribute ( "content" ) , b && "undefined" != typeof n && ( n = b ) , e . setAttribute ( "content" , a ? c : n ) ) } function j ( a , b ) { k ( ) && b === ! 1 && d ( [ document . documentElement , document . body ] ) . removeClass ( a + "fullscreen" ) } function k ( ) { for ( var a = 0 ; a < m . length ; a ++ ) if ( m [ a ] . _fullscreen ) return ! 0 ; return ! 1 } function l ( ) { function a ( ) { var a , b , d = c . getWindowSize ( ) ; for ( a = 0 ; a < m . length ; a ++ ) b = m [ a ] . layoutRect ( ) , m [ a ] . moveTo ( m [ a ] . settings . x || Math . max ( 0 , d . w / 2 - b . w / 2 ) , m [ a ] . s
var d = function ( a ) { var b = [ ] ; if ( a ) for ( var c = 0 ; c < a . rangeCount ; c ++ ) b . push ( a . getRangeAt ( c ) ) ; return b } , e = function ( d ) { return a . bind ( d , function ( a ) { var d = c . getSelectedNode ( a ) ; return d ? [ b . fromDom ( d ) ] : [ ] } ) } , f = function ( a ) { return d ( a ) . length > 1 } ; return { getRanges : d , getSelectedNodes : e , hasMultipleRanges : f } } ) , g ( "tinymce.core.selection.TableCellSelection" , [ "ephox.katamari.api.Arr" , "ephox.sugar.api.node.Element" , "ephox.sugar.api.search.SelectorFilter" , "tinymce.core.dom.ElementType" , "tinymce.core.selection.MultiRange" ] , function ( a , b , c , d , e ) { var f = function ( b ) { return a . filter ( e . getSelectedNodes ( b ) , d . isTableCell ) } , g = function ( a ) { var b = c . descendants ( a , "td[data-mce-selected],th[data-mce-selected]" ) ; return b } , h = function ( a , b ) { var c = g ( b ) , d = f ( a ) ; return c . length > 0 ? c : d } , i = function ( a ) { return h ( e . getRanges ( a . selection . getSel ( ) ) , b . fromDom ( a . getBody ( ) ) ) } ; return { getCellsFromRanges : f , getCellsFromElement : g , getCellsFromElementOrRanges : h , getCellsFromEditor : i } } ) , g ( "tinymce.core.selection.FragmentReader" , [ "ephox.katamari.api.Arr" , "ephox.katamari.api.Fun" , "ephox.sugar.api.dom.Compare" , "ephox.sugar.api.dom.Insert" , "ephox.sugar.api.dom.Replication" , "ephox.sugar.api.node.Element" , "ephox.sugar.api.node.Fragment" , "ephox.sugar.api.node.Node" , "ephox.sugar.api.search.SelectorFind" , "ephox.sugar.api.search.Traverse" , "tinymce.core.dom.ElementType" , "tinymce.core.dom.Parents" , "tinymce.core.selection.SelectionUtils" , "tinymce.core.selection.SimpleTableModel" , "tinymce.core.selection.TableCellSelection" ] , function ( a , b , c , d , e , f , g , h , i , j , k , l , m , n , o ) { var p = function ( b ) { return a . find ( b , function ( a ) { return "ul" === h . name ( a ) || "ol" === h . name ( a ) } ) } , q = function ( c , d ) { return a . find ( c , function ( a ) { return "li" === h . name ( a ) && m . hasAllContentsSelected ( a , d ) } ) . fold ( b . constant ( [ ] ) , function ( a ) { return p ( c ) . map ( function ( a ) { return [ f . fromTag ( "li" ) , f . fromTag ( h . name ( a ) ) ] } ) . getOr ( [ ] ) } ) } , r = function ( b , c ) { var e = a . foldl ( c , function ( a , b ) { return d . append ( b , a ) , b } , b ) ; return c . length > 0 ? g . fromElements ( [ e ] ) : e } , s = function ( a ) { return k . isListItem ( a ) ? j . parent ( a ) . filter ( k . isList ) . fold ( b . constant ( [ ] ) , function ( b ) { return [ a , b ] } ) : k . isList ( a ) ? [ a ] : [ ] } , t = function ( b , c ) { var d = f . fromDom ( c . commonAncestorContainer ) , g = l . parentsAndSelf ( d , b ) , h = a . filter ( g , function ( a ) { return k . isInline ( a ) || k . isHeading ( a ) } ) , i = q ( g , c ) , j = h . concat ( i . length ? i : s ( d ) ) ; return a . map ( j , e . shallow ) } , u = function ( ) { return g . fromElements ( [ ] ) } , v = function ( a , b ) { return r ( f . fromDom ( b . cloneContents ( ) ) , t ( a , b ) ) } , w = function ( a , d ) { return i . ancestor ( d , "table" , b . curry ( c . eq , a ) ) } , x = function ( a , b ) { return w ( a , b [ 0 ] ) . bind ( function ( a ) { var c = b [ 0 ] , d = b [ b . length - 1 ] , e = n . fromDom ( a ) ; return n . subsection ( e , c , d ) . map ( function ( a ) { return g . fromElements ( [ n . toDom ( a ) ] ) } ) } ) . getOrThunk ( u ) } , y = function ( a , b ) { return b . length > 0 && b [ 0 ] . collapsed ? u ( ) : v ( a , b [ 0 ] ) } , z = function ( a , b ) { var c = o . getCellsFromElementOrRanges ( b , a ) ; return c . length > 0 ? x ( a , c ) : y ( a , b ) } ; return { read : z } } ) , g ( "tinymce.core.dom.Selection" , [ "ephox.katamari.api.Arr" , "ephox.sugar.api.dom.Compare" , "ephox.sugar.api.node.Element" , "tinymce.core.caret.CaretPosition" , "tinymce.core.dom.BookmarkManager" , "tinymce.core.dom.ControlSelection" , "tinymce.core.dom.NodeType" , "tinymce.core.dom.RangeUtils" , "tinymce.core.dom.ScrollIntoView" , "tinymce.core.dom.TreeWalker" , "tinymce.core.dom.TridentSelection" , "tinymce.core.Env" , "tinymce.core.selection.FragmentReader" , "tinymce.core.selection.MultiRange" , "tinymce.core.text.Zwsp" , "tinymce.core.util.Tools" ] , function ( a , b , c , d , e , f , g , h , i , j , k , l , m , n , o , p ) { function q ( a , b , c , d ) { var g = this ; g . dom = a , g . win = b , g . serializer = c , g . editor = d , g . bookmarkManager = new e ( g ) , g . controlSelection = new f ( g , d ) , g . win . getSelection || ( g . tridentSel = new k ( g ) ) } var r = p . each , s = p . trim , t = l . ie , u = function ( a ) { return ! ( ! a || ! a . ownerDocument ) && b . contains ( c . fromDom ( a . ownerDocument ) , c . fromDom ( a ) ) } , v = function ( a ) { return ! ! a && ( ! ! a . select || u ( a . startContainer ) && u ( a . endContainer ) ) } , w = function ( b , c ) { return a . map ( c , function ( a ) { var c = b . fire ( "GetSelectionRange" , { range : a } ) ; return c . range !== a ? c . range : a } ) } ; return q . prototype = { setCursorLocation : function ( a , b ) { var c = this , d = c . dom . createRng ( ) ; a ? ( d . setStart ( a , b ) , d . setEnd ( a , b ) , c . setRng ( d ) , c . collapse ( ! 1 ) ) : ( c . _moveEndPoint ( d , c . editor . getBody ( ) , ! 0 ) , c . setRng ( d ) ) } , getContent : function ( a ) { va
b . type = 3 , b . raw = ! 0 , b . value = unescape ( b . value ) . substr ( 14 ) ) } ) , u . addNodeFilter ( "xml:namespace,input" , function ( a , b ) { for ( var c , d = a . length ; d -- ; ) c = a [ d ] , 7 === c . type ? c . remove ( ) : 1 === c . type && ( "input" !== b || "type" in c . attributes . map || c . attr ( "type" , "text" ) ) } ) , u . addAttributeFilter ( "data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize" , function ( a , b ) { for ( var c = a . length ; c -- ; ) a [ c ] . attr ( b , null ) } ) , { schema : t , addNodeFilter : u . addNodeFilter , addAttributeFilter : u . addAttributeFilter , serialize : function ( b , c ) { var d , f , g , i , n , o , p = this ; return h . ie && s . select ( "script,style,select,map" ) . length > 0 ? ( n = b . innerHTML , b = b . cloneNode ( ! 1 ) , s . setHTML ( b , n ) ) : b = b . cloneNode ( ! 0 ) , d = document . implementation , d . createHTMLDocument && ( f = d . createHTMLDocument ( "" ) , l ( "BODY" == b . nodeName ? b . childNodes : [ b ] , function ( a ) { f . body . appendChild ( f . importNode ( a , ! 0 ) ) } ) , b = "BODY" != b . nodeName ? f . body . firstChild : f . body , g = s . doc , s . doc = f ) , c = c || { } , c . format = c . format || "html" , c . selection && ( c . forced _root _block = "" ) , c . no _events || ( c . node = b , p . onPreProcess ( c ) ) , n = j . trim ( m ( c . getInner ? b . innerHTML : s . getOuterHTML ( b ) ) ) , o = u . parse ( n , c ) , k ( o ) , i = new e ( a , t ) , c . content = i . serialize ( o ) , c . no _events || p . onPostProcess ( c ) , g && ( s . doc = g ) , c . node = null , c . content } , addRules : function ( a ) { t . addValidElements ( a ) } , setRules : function ( a ) { t . setValidElements ( a ) } , onPreProcess : function ( a ) { f && f . fire ( "PreProcess" , a ) } , onPostProcess : function ( a ) { f && f . fire ( "PostProcess" , a ) } , addTempAttr : r , trimHtml : o , getTrimmedContent : q , trimContent : p } } } ) , g ( "tinymce.core.delete.DeleteUtils" , [ "ephox.katamari.api.Option" , "ephox.sugar.api.dom.Compare" , "ephox.sugar.api.node.Element" , "ephox.sugar.api.search.PredicateFind" , "tinymce.core.dom.ElementType" ] , function ( a , b , c , d , e ) { var f = function ( a ) { return function ( d ) { return b . eq ( a , c . fromDom ( d . dom ( ) . parentNode ) ) } } , g = function ( c , g ) { return b . contains ( c , g ) ? d . closest ( g , function ( a ) { return e . isTextBlock ( a ) || e . isListItem ( a ) } , f ( c ) ) : a . none ( ) } , h = function ( a ) { var b = a . getBody ( ) , c = b . firstChild && a . dom . isBlock ( b . firstChild ) ? b . firstChild : b ; a . selection . setCursorLocation ( c , 0 ) } , i = function ( a ) { a . dom . isEmpty ( a . getBody ( ) ) && ( a . setContent ( "" ) , h ( a ) ) } ; return { getParentBlock : g , paddEmptyBody : i } } ) , g ( "ephox.sugar.api.search.SelectorExists" , [ "ephox.sugar.api.search.SelectorFind" ] , function ( a ) { var b = function ( b ) { return a . first ( b ) . isSome ( ) } , c = function ( b , c , d ) { return a . ancestor ( b , c , d ) . isSome ( ) } , d = function ( b , c ) { return a . sibling ( b , c ) . isSome ( ) } , e = function ( b , c ) { return a . child ( b , c ) . isSome ( ) } , f = function ( b , c ) { return a . descendant ( b , c ) . isSome ( ) } , g = function ( b , c , d ) { return a . closest ( b , c , d ) . isSome ( ) } ; return { any : b , ancestor : c , sibling : d , child : e , descendant : f , closest : g } } ) , g ( "tinymce.core.dom.Empty" , [ "ephox.katamari.api.Fun" , "ephox.sugar.api.dom.Compare" , "ephox.sugar.api.node.Element" , "ephox.sugar.api.search.SelectorExists" , "tinymce.core.caret.CaretCandidate" , "tinymce.core.dom.NodeType" , "tinymce.core.dom.TreeWalker" ] , function ( a , b , c , d , e , f , g ) { var h = function ( e , f ) { var g = c . fromDom ( e ) , h = c . fromDom ( f ) ; return d . ancestor ( h , "pre,code" , a . curry ( b . eq , g ) ) } , i = function ( a , b ) { return f . isText ( b ) && /^[ \t\r\n]*$/ . test ( b . data ) && h ( a , b ) === ! 1 } , j = function ( a ) { return f . isElement ( a ) && "A" === a . nodeName && a . hasAttribute ( "name" ) } , k = function ( a , b ) { return e . isCaretCandidate ( b ) && i ( a , b ) === ! 1 || j ( b ) || l ( b ) } , l = f . hasAttribute ( "data-mce-bookmark" ) , m = f . hasAttribute ( "data-mce-bogus" ) , n = f . hasAttributeValue ( "data-mce-bogus" , "all" ) , o = function ( a ) { var b , c , d = 0 ; if ( k ( a , a ) ) return ! 1 ; if ( c = a . firstChild , ! c ) return ! 0 ; b = new g ( c , a ) ; do if ( n ( c ) ) c = b . next ( ! 0 ) ; else if ( m ( c ) ) c = b . next ( ) ; else if ( f . isBr ( c ) ) d ++ , c = b . next ( ) ; else { if ( k ( a , c ) ) return ! 1 ; c = b . next ( ) } while ( c ) ; return d <= 1 } , p = function ( a ) { return o ( a . dom ( ) ) } ; return { isEmpty : p } } ) , g ( "tinymce.core.delete.BlockBoundary" , [ "ephox.katamari.api.Arr" , "ephox.katamari.api.Fun" , "ephox.katamari.api.Option" , "ephox.katamari.api.Options" , "ephox.katamari.api.Struct" , "ephox.sugar.api.dom.Compare" , "ephox.sugar.api.node.Element" , "ephox.sugar.api.node.Node" , "ephox.sugar.api.search.PredicateFind" , "ephox.sugar.api.search.Traverse" , "tinymce.core.caret.CaretFinder" , "tinymce.core.caret.CaretPosition" , "tinymce.core.delete.DeleteUtils" , "tinymce.core.dom.Empty" , "tinymce.core.dom.NodeType" ] , function ( a , b , c , d , e , f
var b = c . fromDom ( a . getBody ( ) ) , d = a . selection . getRng ( ) , e = g . getCellsFromEditor ( a ) ; return 0 !== e . length ? h ( a , e ) : j ( a , b , d ) } , l = function ( a ) { return ! a . selection . isCollapsed ( ) && k ( a ) } ; return { backspaceDelete : l } } ) , g ( "tinymce.core.delete.DeleteCommands" , [ "tinymce.core.delete.BlockBoundaryDelete" , "tinymce.core.delete.BlockRangeDelete" , "tinymce.core.delete.CefDelete" , "tinymce.core.delete.DeleteUtils" , "tinymce.core.delete.InlineBoundaryDelete" , "tinymce.core.delete.TableDelete" ] , function ( a , b , c , d , e , f ) { var g = function ( a , b ) { a . getDoc ( ) . execCommand ( b , ! 1 , null ) } , h = function ( h ) { c . backspaceDelete ( h , ! 1 ) || e . backspaceDelete ( h , ! 1 ) || a . backspaceDelete ( h , ! 1 ) || f . backspaceDelete ( h ) || b . backspaceDelete ( h , ! 1 ) || ( g ( h , "Delete" ) , d . paddEmptyBody ( h ) ) } , i = function ( d ) { c . backspaceDelete ( d , ! 0 ) || e . backspaceDelete ( d , ! 0 ) || a . backspaceDelete ( d , ! 0 ) || f . backspaceDelete ( d ) || b . backspaceDelete ( d , ! 0 ) || g ( d , "ForwardDelete" ) } ; return { deleteCommand : h , forwardDeleteCommand : i } } ) , g ( "tinymce.core.InsertList" , [ "tinymce.core.util.Tools" , "tinymce.core.caret.CaretWalker" , "tinymce.core.caret.CaretPosition" ] , function ( a , b , c ) { var d = function ( a ) { return a . firstChild && a . firstChild === a . lastChild } , e = function ( a ) { return "br" === a . name || "\xa0" === a . value } , f = function ( a , b ) { var c = a . getBlockElements ( ) ; return c [ b . name ] && d ( b ) && e ( b . firstChild ) } , g = function ( a , b ) { var c = a . getNonEmptyElements ( ) ; return b && ( b . isEmpty ( c ) || f ( a , b ) ) } , h = function ( a , b ) { var c = b . firstChild , d = b . lastChild ; return c && "meta" === c . name && ( c = c . next ) , d && "mce_marker" === d . attr ( "id" ) && ( d = d . prev ) , g ( a , d ) && ( d = d . prev ) , ! ( ! c || c !== d ) && ( "ul" === c . name || "ol" === c . name ) } , i = function ( a ) { var b = a . firstChild , c = a . lastChild ; return b && "META" === b . nodeName && b . parentNode . removeChild ( b ) , c && "mce_marker" === c . id && c . parentNode . removeChild ( c ) , a } , j = function ( a , b , c ) { var d = b . serialize ( c ) , e = a . createFragment ( d ) ; return i ( e ) } , k = function ( b ) { return a . grep ( b . childNodes , function ( a ) { return "LI" === a . nodeName } ) } , l = function ( a ) { return ! a . firstChild } , m = function ( a ) { return a . length > 0 && l ( a [ a . length - 1 ] ) ? a . slice ( 0 , - 1 ) : a } , n = function ( a , b ) { var c = a . getParent ( b , a . isBlock ) ; return c && "LI" === c . nodeName ? c : null } , o = function ( a , b ) { return ! ! n ( a , b ) } , p = function ( a , b ) { var c = b . cloneRange ( ) , d = b . cloneRange ( ) ; return c . setStartBefore ( a ) , d . setEndAfter ( a ) , [ c . cloneContents ( ) , d . cloneContents ( ) ] } , q = function ( a , d ) { var e = c . before ( a ) , f = new b ( d ) , g = f . next ( e ) ; return g ? g . toRange ( ) : null } , r = function ( a , d ) { var e = c . after ( a ) , f = new b ( d ) , g = f . prev ( e ) ; return g ? g . toRange ( ) : null } , s = function ( b , c , d , e ) { var f = p ( b , e ) , g = b . parentNode ; return g . insertBefore ( f [ 0 ] , b ) , a . each ( c , function ( a ) { g . insertBefore ( a , b ) } ) , g . insertBefore ( f [ 1 ] , b ) , g . removeChild ( b ) , r ( c [ c . length - 1 ] , d ) } , t = function ( b , c , d ) { var e = b . parentNode ; return a . each ( c , function ( a ) { e . insertBefore ( a , b ) } ) , q ( b , d ) } , u = function ( a , b , c , d ) { return d . insertAfter ( b . reverse ( ) , a ) , r ( b [ 0 ] , c ) } , v = function ( a , d , e , f ) { var g = j ( d , a , f ) , h = n ( d , e . startContainer ) , i = m ( k ( g . firstChild ) ) , l = 1 , o = 2 , p = d . getRoot ( ) , q = function ( a ) { var f = c . fromRangeStart ( e ) , g = new b ( d . getRoot ( ) ) , i = a === l ? g . prev ( f ) : g . next ( f ) ; return ! i || n ( d , i . getNode ( ) ) !== h } ; return q ( l ) ? t ( h , i , p ) : q ( o ) ? u ( h , i , p , d ) : s ( h , i , p , e ) } ; return { isListFragment : h , insertAtCaret : v , isParentBlockLi : o , trimListItems : m , listItems : k } } ) , g ( "tinymce.core.InsertContent" , [ "ephox.katamari.api.Option" , "ephox.sugar.api.node.Element" , "tinymce.core.caret.CaretPosition" , "tinymce.core.caret.CaretWalker" , "tinymce.core.dom.ElementUtils" , "tinymce.core.dom.NodeType" , "tinymce.core.dom.PaddingBr" , "tinymce.core.dom.RangeNormalizer" , "tinymce.core.Env" , "tinymce.core.html.Serializer" , "tinymce.core.InsertList" , "tinymce.core.util.Tools" ] , function ( a , b , c , d , e , f , g , h , i , j , k , l ) { var m = f . matchNodeNames ( "td th" ) , n = function ( a , b , c ) { if ( "all" === c . getAttribute ( "data-mce-bogus" ) ) c . parentNode . insertBefore ( a . dom . createFragment ( b ) , c ) ; else { var d = c . firstChild , e = c . lastChild ; ! d || d === e && "BR" === d . nodeName ? a . dom . setHTML ( c , b ) : a . selection . setContent ( b ) } } , o = function ( c , d ) { a . from ( c . getParent ( d , "td,th" ) ) . map ( b . fromDom ) . each ( g . trimBlockTrailingBr ) } , p = function ( a , b , f ) { function g ( a ) { function b ( a ) { return d [ a ] && 3 == d [ a ] . nodeType } var c , d , e ; return c = J . getRng ( ! 0 ) , d = c . startContainer , e = c . startOffset , 3 == d . nodeType && ( e > 0 ? a = a . replace ( /^ / , " " ) : b ( "previousSibling" ) || ( a = a . replace ( /^ / , " " ) ) , e < d . l
function h ( a , b ) { return Math . abs ( a . left - b ) } function i ( a , b ) { return Math . abs ( a . right - b ) } function j ( a , c ) { function d ( a , b ) { return a >= b . left && a <= b . right } return b . reduce ( a , function ( a , b ) { var e , f ; return e = Math . min ( h ( a , c ) , i ( a , c ) ) , f = Math . min ( h ( b , c ) , i ( b , c ) ) , d ( c , b ) ? b : d ( c , a ) ? a : f == e && p ( b . node ) ? b : f < e ? b : a } ) } function k ( a , b , c , d ) { for ( ; d = q ( d , a , g . isEditableCaretCandidate , b ) ; ) if ( c ( d ) ) return } function l ( a , c ) { function f ( a , e ) { var f ; return f = b . filter ( d . getClientRects ( e ) , function ( b ) { return ! a ( b , c ) } ) , g = g . concat ( f ) , 0 === f . length } var g = [ ] ; return g . push ( c ) , k ( - 1 , a , r ( f , e . isAbove ) , c . node ) , k ( 1 , a , r ( f , e . isBelow ) , c . node ) , g } function m ( a ) { return b . filter ( b . toArray ( a . getElementsByTagName ( "*" ) ) , p ) } function n ( a , b ) { return { node : a . node , before : h ( a , b ) < i ( a , b ) } } function o ( a , c , e ) { var f , g ; return f = d . getClientRects ( m ( a ) ) , f = b . filter ( f , function ( a ) { return e >= a . top && e <= a . bottom } ) , g = j ( f , c ) , g && ( g = j ( l ( a , g ) , c ) , g && p ( g . node ) ) ? n ( g , c ) : null } var p = c . isContentEditableFalse , q = f . findNode , r = a . curry ; return { findClosestClientRect : j , findLineNodeRects : l , closestCaret : o } } ) , g ( "tinymce.core.caret.LineWalker" , [ "tinymce.core.util.Fun" , "tinymce.core.util.Arr" , "tinymce.core.dom.Dimensions" , "tinymce.core.caret.CaretCandidate" , "tinymce.core.caret.CaretUtils" , "tinymce.core.caret.CaretWalker" , "tinymce.core.caret.CaretPosition" , "tinymce.core.geom.ClientRect" ] , function ( a , b , c , d , e , f , g , h ) { function i ( a , b , c , f ) { for ( ; f = e . findNode ( f , a , d . isEditableCaretCandidate , b ) ; ) if ( c ( f ) ) return } function j ( a , d , e , f , g , h ) { function j ( f ) { var h , i , j ; for ( j = c . getClientRects ( f ) , a == - 1 && ( j = j . reverse ( ) ) , h = 0 ; h < j . length ; h ++ ) if ( i = j [ h ] , ! e ( i , l ) ) { if ( n . length > 0 && d ( i , b . last ( n ) ) && m ++ , i . line = m , g ( i ) ) return ! 0 ; n . push ( i ) } } var k , l , m = 0 , n = [ ] ; return ( l = b . last ( h . getClientRects ( ) ) ) ? ( k = h . getNode ( ) , j ( k ) , i ( a , f , j , k ) , n ) : n } function k ( a , b ) { return b . line > a } function l ( a , b ) { return b . line === a } function m ( a , c , d , e ) { function i ( c ) { return 1 == a ? b . last ( c . getClientRects ( ) ) : b . last ( c . getClientRects ( ) ) } var j , k , l , m , n , o , p = new f ( c ) , q = [ ] , r = 0 ; 1 == a ? ( j = p . next , k = h . isBelow , l = h . isAbove , m = g . after ( e ) ) : ( j = p . prev , k = h . isAbove , l = h . isBelow , m = g . before ( e ) ) , o = i ( m ) ; do if ( m . isVisible ( ) && ( n = i ( m ) , ! l ( n , o ) ) ) { if ( q . length > 0 && k ( n , b . last ( q ) ) && r ++ , n = h . clone ( n ) , n . position = m , n . line = r , d ( n ) ) return q ; q . push ( n ) } while ( m = j ( m ) ) ; return q } var n = a . curry , o = n ( j , - 1 , h . isAbove , h . isBelow ) , p = n ( j , 1 , h . isBelow , h . isAbove ) ; return { upUntil : o , downUntil : p , positionsUntil : m , isAboveLine : n ( k ) , isLine : n ( l ) } } ) , g ( "tinymce.core.keyboard.CefUtils" , [ "tinymce.core.caret.CaretPosition" , "tinymce.core.caret.CaretUtils" , "tinymce.core.dom.NodeType" , "tinymce.core.util.Fun" ] , function ( a , b , c , d ) { var e = c . isContentEditableTrue , f = c . isContentEditableFalse , g = function ( a , b , c , d ) { return b . _selectionOverrides . showCaret ( a , c , d ) } , h = function ( a ) { var b = a . ownerDocument . createRange ( ) ; return b . selectNode ( a ) , b } , i = function ( a , b ) { var c ; return c = a . fire ( "BeforeObjectSelected" , { target : b } ) , c . isDefaultPrevented ( ) ? null : h ( b ) } , j = function ( c , h ) { var i , j ; return h = b . normalizeRange ( 1 , c . getBody ( ) , h ) , i = a . fromRangeStart ( h ) , f ( i . getNode ( ) ) ? g ( 1 , c , i . getNode ( ) , ! i . isAtEnd ( ) ) : f ( i . getNode ( ! 0 ) ) ? g ( 1 , c , i . getNode ( ! 0 ) , ! 1 ) : ( j = c . dom . getParent ( i . getNode ( ) , d . or ( f , e ) ) , f ( j ) ? g ( 1 , c , j , ! 1 ) : null ) } , k = function ( a , b ) { var c ; return b && b . collapsed ? ( c = j ( a , b ) , c ? c : b ) : b } ; return { showCaret : g , selectNode : i , renderCaretAtRange : j , renderRangeCaret : k } } ) , g ( "tinymce.core.keyboard.CefNavigation" , [ "tinymce.core.caret.CaretContainer" , "tinymce.core.caret.CaretPosition" , "tinymce.core.caret.CaretUtils" , "tinymce.core.caret.CaretWalker" , "tinymce.core.caret.LineUtils" , "tinymce.core.caret.LineWalker" , "tinymce.core.dom.NodeType" , "tinymce.core.dom.RangeUtils" , "tinymce.core.Env" , "tinymce.core.keyboard.CefUtils" , "tinymce.core.util.Arr" , "tinymce.core.util.Fun" ] , function ( a , b , c , d , e , f , g , h , i , j , k , l ) { var m = g . isContentEditableFalse , n = h . getSelectedNode , o = c . isAfterContentEditableFalse , p = c . isBeforeContentEditableFalse , q = function ( a , b ) { for ( ; b = a ( b ) ; ) if ( b . isVisible ( ) ) return b ; return b } , r = function ( a , b ) { var d = c . isInSameBlock ( a , b ) ; return ! ( d || ! g . isBr ( a . getNode ( ) ) ) || d } , s = function ( b ) { return a . isCaretContainerBlock ( b . startContainer ) } , t = function ( a , d , e ) { return e = c . normalizeRange ( a , d , e ) , a === - 1 ? b . fromRangeStart ( e ) : b . fromRangeEnd ( e ) } , u = function ( a , b , c , d , e ) { var f , g , h , i ; return ! e . collapsed && ( f = n ( e ) , m
var i = b - a , j = f - c ; if ( 0 === i || 0 === j ) return null ; var l = i - j , m = j + i , n = ( m % 2 === 0 ? m : m + 1 ) / 2 ; g [ 1 + n ] = a , h [ 1 + n ] = b + 1 ; for ( var o = 0 ; o <= n ; ++ o ) { for ( var p = - o ; p <= o ; p += 2 ) { var q = p + n ; p === - o || p != o && g [ q - 1 ] < g [ q + 1 ] ? g [ q ] = g [ q + 1 ] : g [ q ] = g [ q - 1 ] + 1 ; for ( var r = g [ q ] , s = r - a + c - p ; r < b && s < f && d [ r ] === e [ s ] ; ) g [ q ] = ++ r , ++ s ; if ( l % 2 != 0 && l - o <= p && p <= l + o && h [ q - l ] <= g [ q ] ) return k ( h [ q - l ] , p + a - c , b , f ) } for ( p = l - o ; p <= l + o ; p += 2 ) { for ( q = p + n - l , p === l - o || p != l + o && h [ q + 1 ] <= h [ q - 1 ] ? h [ q ] = h [ q + 1 ] - 1 : h [ q ] = h [ q - 1 ] , r = h [ q ] - 1 , s = r - a + c - p ; r >= a && s >= c && d [ r ] === e [ s ] ; ) h [ q ] = r -- , s -- ; if ( l % 2 === 0 && - o <= p && p <= o && h [ q ] <= g [ q + l ] ) return k ( h [ q ] , p + a - c , b , f ) } } } , m = [ ] ; return j ( 0 , d . length , 0 , e . length , m ) , m } ; return { KEEP : a , DELETE : c , INSERT : b , diff : d } } ) , g ( "tinymce.core.undo.Fragments" , [ "tinymce.core.util.Arr" , "tinymce.core.html.Entities" , "tinymce.core.undo.Diff" ] , function ( a , b , c ) { var d = function ( a ) { return 1 === a . nodeType ? a . outerHTML : 3 === a . nodeType ? b . encodeRaw ( a . data , ! 1 ) : 8 === a . nodeType ? "<!--" + a . data + "-->" : "" } , e = function ( a ) { var b , c , d ; for ( d = document . createElement ( "div" ) , b = document . createDocumentFragment ( ) , a && ( d . innerHTML = a ) ; c = d . firstChild ; ) b . appendChild ( c ) ; return b } , f = function ( a , b , c ) { var d = e ( b ) ; if ( a . hasChildNodes ( ) && c < a . childNodes . length ) { var f = a . childNodes [ c ] ; f . parentNode . insertBefore ( d , f ) } else a . appendChild ( d ) } , g = function ( a , b ) { if ( a . hasChildNodes ( ) && b < a . childNodes . length ) { var c = a . childNodes [ b ] ; c . parentNode . removeChild ( c ) } } , h = function ( b , d ) { var e = 0 ; a . each ( b , function ( a ) { a [ 0 ] === c . KEEP ? e ++ : a [ 0 ] === c . INSERT ? ( f ( d , a [ 1 ] , e ) , e ++ ) : a [ 0 ] === c . DELETE && g ( d , e ) } ) } , i = function ( b ) { return a . filter ( a . map ( b . childNodes , d ) , function ( a ) { return a . length > 0 } ) } , j = function ( b , e ) { var f = a . map ( e . childNodes , d ) ; return h ( c . diff ( f , b ) , e ) , e } ; return { read : i , write : j } } ) , g ( "tinymce.core.undo.Levels" , [ "tinymce.core.util.Arr" , "tinymce.core.undo.Fragments" ] , function ( a , b ) { var c = function ( a ) { return a . indexOf ( "</iframe>" ) !== - 1 } , d = function ( a ) { return { type : "fragmented" , fragments : a , content : "" , bookmark : null , beforeBookmark : null } } , e = function ( a ) { return { type : "complete" , fragments : null , content : a , bookmark : null , beforeBookmark : null } } , f = function ( f ) { var g , h , i ; return g = b . read ( f . getBody ( ) ) , i = a . map ( g , function ( a ) { return f . serializer . trimContent ( a ) } ) , h = i . join ( "" ) , c ( h ) ? d ( i ) : e ( h ) } , g = function ( a , c , d ) { "fragmented" === c . type ? b . write ( c . fragments , a . getBody ( ) ) : a . setContent ( c . content , { format : "raw" } ) , a . selection . moveToBookmark ( d ? c . beforeBookmark : c . bookmark ) } , h = function ( a ) { return "fragmented" === a . type ? a . fragments . join ( "" ) : a . content } , i = function ( a , b ) { return ! ! a && ! ! b && h ( a ) === h ( b ) } ; return { createFragmentedLevel : d , createCompleteLevel : e , createFromEditor : f , applyToEditor : g , isEq : i } } ) , g ( "tinymce.core.UndoManager" , [ "tinymce.core.util.VK" , "tinymce.core.util.Tools" , "tinymce.core.undo.Levels" ] , function ( a , b , c ) { return function ( a ) { function d ( b ) { a . setDirty ( b ) } function e ( a ) { n ( ! 1 ) , i . add ( { } , a ) } function f ( ) { i . typing && ( n ( ! 1 ) , i . add ( ) ) } var g , h , i = this , j = 0 , k = [ ] , l = 0 , m = function ( ) { return 0 === l } , n = function ( a ) { m ( ) && ( i . typing = a ) } ; return a . on ( "init" , function ( ) { i . add ( ) } ) , a . on ( "BeforeExecCommand" , function ( a ) { var b = a . command ; "Undo" !== b && "Redo" !== b && "mceRepaint" !== b && ( f ( ) , i . beforeChange ( ) ) } ) , a . on ( "ExecCommand" , function ( a ) { var b = a . command ; "Undo" !== b && "Redo" !== b && "mceRepaint" !== b && e ( a ) } ) , a . on ( "ObjectResizeStart Cut" , function ( ) { i . beforeChange ( ) } ) , a . on ( "SaveContent ObjectResized blur" , e ) , a . on ( "DragEnd" , e ) , a . on ( "KeyUp" , function ( b ) { var f = b . keyCode ; b . isDefaultPrevented ( ) || ( ( f >= 33 && f <= 36 || f >= 37 && f <= 40 || 45 === f || b . ctrlKey ) && ( e ( ) , a . nodeChanged ( ) ) , 46 !== f && 8 !== f || a . nodeChanged ( ) , h && i . typing && c . isEq ( c . createFromEditor ( a ) , k [ 0 ] ) === ! 1 && ( a . isDirty ( ) === ! 1 && ( d ( ! 0 ) , a . fire ( "change" , { level : k [ 0 ] , lastLevel : null } ) ) , a . fire ( "TypingUndo" ) , h = ! 1 , a . nodeChanged ( ) ) ) } ) , a . on ( "KeyDown" , function ( a ) { var b = a . keyCode ; if ( ! a . isDefaultPrevented ( ) ) { if ( b >= 33 && b <= 36 || b >= 37 && b <= 40 || 45 === b ) return void ( i . typing && e ( a ) ) ; var c = a . ctrlKey && ! a . altKey || a . metaKey ; ! ( b < 16 || b > 20 ) || 224 === b || 91 === b || i . typing || c || ( i . beforeChange ( ) , n ( ! 0 ) , i . add ( { } , a ) , h = ! 0 ) } } ) , a . on ( "MouseDown" , function ( a ) { i . typing && e ( a ) } ) , a . addShortcut ( "meta+z" , "" , "Undo" ) , a . addShortcut ( "meta+y,meta+shift+z" , "" , "Redo" ) , a . on ( "AddUndo Undo Redo ClearUndos" , function ( b ) { b . isDefaultPrevented ( ) || a . nodeChanged ( ) } ) , i = { data : k , typing : ! 1 , beforeChange : function ( ) { m ( ) && ( g = a . selection . getBook
} ) , a = h , c = b . length - 1 , h = [ ] ; c >= 0 ; c -- ) 0 !== b [ c ] . length && "." !== b [ c ] && ( ".." !== b [ c ] ? g > 0 ? g -- : h . push ( b [ c ] ) : g ++ ) ; return c = a . length - g , f = c <= 0 ? h . reverse ( ) . join ( "/" ) : a . slice ( 0 , c ) . join ( "/" ) + "/" + h . reverse ( ) . join ( "/" ) , 0 !== f . indexOf ( "/" ) && ( f = "/" + f ) , e && f . lastIndexOf ( "/" ) !== f . length - 1 && ( f += e ) , f } , getURI : function ( a ) { var b , c = this ; return c . source && ! a || ( b = "" , a || ( b += c . protocol ? c . protocol + "://" : "//" , c . userInfo && ( b += c . userInfo + "@" ) , c . host && ( b += c . host ) , c . port && ( b += ":" + c . port ) ) , c . path && ( b += c . path ) , c . query && ( b += "?" + c . query ) , c . anchor && ( b += "#" + c . anchor ) , c . source = b ) , c . source } } , c . parseDataUri = function ( a ) { var b , c ; return a = decodeURIComponent ( a ) . split ( "," ) , c = /data:([^;]+)/ . exec ( a [ 0 ] ) , c && ( b = c [ 1 ] ) , { type : b , data : a [ 1 ] } } , c . getDocumentBaseUrl = function ( a ) { var b ; return b = 0 !== a . protocol . indexOf ( "http" ) && "file:" !== a . protocol ? a . href : a . protocol + "//" + a . host + a . pathname , /^[^:]+:\/\/\/?[^\/]+\// . test ( b ) && ( b = b . replace ( /[\?#].*$/ , "" ) . replace ( /[\/\\][^\/]+$/ , "" ) , /[\/\\]$/ . test ( b ) || ( b += "/" ) ) , b } , c } ) , g ( "tinymce.core.Editor" , [ "tinymce.core.AddOnManager" , "tinymce.core.dom.DomQuery" , "tinymce.core.dom.DOMUtils" , "tinymce.core.EditorCommands" , "tinymce.core.EditorFocus" , "tinymce.core.EditorObservable" , "tinymce.core.EditorSettings" , "tinymce.core.Env" , "tinymce.core.html.Serializer" , "tinymce.core.init.Render" , "tinymce.core.Mode" , "tinymce.core.Shortcuts" , "tinymce.core.ui.Sidebar" , "tinymce.core.util.Tools" , "tinymce.core.util.URI" , "tinymce.core.util.Uuid" ] , function ( a , b , c , d , e , f , g , h , i , j , k , l , m , n , o , p ) { function q ( c , e , f ) { var i , j , k = this ; i = k . documentBaseUrl = f . documentBaseURL , j = f . baseURI , e = g . getEditorSettings ( k , c , i , f . defaultSettings , e ) , k . settings = e , a . language = e . language || "en" , a . languageLoad = e . language _load , a . baseURL = f . baseURL , k . id = c , k . setDirty ( ! 1 ) , k . plugins = { } , k . documentBaseURI = new o ( e . document _base _url , { base _uri : j } ) , k . baseURI = j , k . contentCSS = [ ] , k . contentStyles = [ ] , k . shortcuts = new l ( k ) , k . loadedCSS = { } , k . editorCommands = new d ( k ) , k . suffix = f . suffix , k . editorManager = f , k . inline = e . inline , e . cache _suffix && ( h . cacheSuffix = e . cache _suffix . replace ( /^[\?\&]+/ , "" ) ) , e . override _viewport === ! 1 && ( h . overrideViewPort = ! 1 ) , f . fire ( "SetupEditor" , k ) , k . execCallback ( "setup" , k ) , k . $ = b . overrideDefaults ( function ( ) { return { context : k . inline ? k . getBody ( ) : k . getDoc ( ) , element : k . getBody ( ) } } ) } var r = c . DOM , s = n . extend , t = n . each , u = n . trim , v = n . resolve , w = h . ie ; return q . prototype = { render : function ( ) { j . render ( this ) } , focus : function ( a ) { e . focus ( this , a ) } , execCallback : function ( a ) { var b , c = this , d = c . settings [ a ] ; if ( d ) return c . callbackLookup && ( b = c . callbackLookup [ a ] ) && ( d = b . func , b = b . scope ) , "string" == typeof d && ( b = d . replace ( /\.\w+$/ , "" ) , b = b ? v ( b ) : 0 , d = v ( d ) , c . callbackLookup = c . callbackLookup || { } , c . callbackLookup [ a ] = { func : d , scope : b } ) , d . apply ( b || c , Array . prototype . slice . call ( arguments , 1 ) ) } , translate : function ( a ) { if ( a && n . is ( a , "string" ) ) { var b = this . settings . language || "en" , c = this . editorManager . i18n ; a = c . data [ b + "." + a ] || a . replace ( /\{\#([^\}]+)\}/g , function ( a , d ) { return c . data [ b + "." + d ] || "{#" + d + "}" } ) } return this . editorManager . translate ( a ) } , getLang : function ( a , b ) { return this . editorManager . i18n . data [ ( this . settings . language || "en" ) + "." + a ] || ( void 0 !== b ? b : "{#" + a + "}" ) } , getParam : function ( a , b , c ) { var d , e = a in this . settings ? this . settings [ a ] : b ; return "hash" === c ? ( d = { } , "string" == typeof e ? t ( e . indexOf ( "=" ) > 0 ? e . split ( /[;,](?![^=;,]*(?:[;,]|$))/ ) : e . split ( "," ) , function ( a ) { a = a . split ( "=" ) , a . length > 1 ? d [ u ( a [ 0 ] ) ] = u ( a [ 1 ] ) : d [ u ( a [ 0 ] ) ] = u ( a ) } ) : d = e , d ) : e } , nodeChanged : function ( a ) { this . _nodeChangeDispatcher . nodeChanged ( a ) } , addButton : function ( a , b ) { var c = this ; b . cmd && ( b . onclick = function ( ) { c . execCommand ( b . cmd ) } ) , b . text || b . icon || ( b . icon = a ) , c . buttons = c . buttons || { } , b . tooltip = b . tooltip || b . title , c . buttons [ a ] = b } , addSidebar : function ( a , b ) { return m . add ( this , a , b ) } , addMenuItem : function ( a , b ) { var c = this ; b . cmd && ( b . onclick = function ( ) { c . execCommand ( b . cmd ) } ) , c . menuItems = c . menuItems || { } , c . menuItems [ a ] = b } , addContextToolbar : function ( a , b ) { var c , d = this ; d . contextToolbars = d . contextToolbars || [ ] , "string" == typeof a && ( c = a , a = function ( a ) { return d . dom . is ( a , c ) } ) , d . contextToolbars . push ( { id : p . uuid ( "mcet" ) , predicate : a , items : b } ) } , addCommand : function ( a , b , c ) { this . editorCommands . addCommand ( a , b , c ) } , addQueryStateHandler : function ( a , b , c ) { this . editorCommands . addQueryStateH
} ; return a . on ( "keydown" , function ( c ) { var d = c . keyCode ; "INPUT" === c . target . nodeName && ( d === e . DOWN ? ( c . preventDefault ( ) , a . fire ( "autocomplete" ) , b ( 0 , a . menu ) ) : d === e . UP && ( c . preventDefault ( ) , b ( - 1 , a . menu ) ) ) } ) , a . _super ( ) } , remove : function ( ) { d ( this . getEl ( "inp" ) ) . off ( ) , this . menu && this . menu . remove ( ) , this . _super ( ) } } ) } ) , g ( "tinymce.core.ui.ColorBox" , [ "tinymce.core.ui.ComboBox" ] , function ( a ) { "use strict" ; return a . extend ( { init : function ( a ) { var b = this ; a . spellcheck = ! 1 , a . onaction && ( a . icon = "none" ) , b . _super ( a ) , b . classes . add ( "colorbox" ) , b . on ( "change keyup postrender" , function ( ) { b . repaintColor ( b . value ( ) ) } ) } , repaintColor : function ( a ) { var b = this . getEl ( "open" ) , c = b ? b . getElementsByTagName ( "i" ) [ 0 ] : null ; if ( c ) try { c . style . background = a } catch ( d ) { } } , bindStates : function ( ) { var a = this ; return a . state . on ( "change:value" , function ( b ) { a . state . get ( "rendered" ) && a . repaintColor ( b . value ) } ) , a . _super ( ) } } ) } ) , g ( "tinymce.core.ui.PanelButton" , [ "tinymce.core.ui.Button" , "tinymce.core.ui.FloatPanel" ] , function ( a , b ) { "use strict" ; return a . extend ( { showPanel : function ( ) { var a = this , c = a . settings ; if ( a . active ( ! 0 ) , a . panel ) a . panel . show ( ) ; else { var d = c . panel ; d . type && ( d = { layout : "grid" , items : d } ) , d . role = d . role || "dialog" , d . popover = ! 0 , d . autohide = ! 0 , d . ariaRoot = ! 0 , a . panel = new b ( d ) . on ( "hide" , function ( ) { a . active ( ! 1 ) } ) . on ( "cancel" , function ( b ) { b . stopPropagation ( ) , a . focus ( ) , a . hidePanel ( ) } ) . parent ( a ) . renderTo ( a . getContainerElm ( ) ) , a . panel . fire ( "show" ) , a . panel . reflow ( ) } var e = a . panel . testMoveRel ( a . getEl ( ) , c . popoverAlign || ( a . isRtl ( ) ? [ "bc-tc" , "bc-tl" , "bc-tr" ] : [ "bc-tc" , "bc-tr" , "bc-tl" ] ) ) ; a . panel . classes . toggle ( "start" , "bc-tl" === e ) , a . panel . classes . toggle ( "end" , "bc-tr" === e ) , a . panel . moveRel ( a . getEl ( ) , e ) } , hidePanel : function ( ) { var a = this ; a . panel && a . panel . hide ( ) } , postRender : function ( ) { var a = this ; return a . aria ( "haspopup" , ! 0 ) , a . on ( "click" , function ( b ) { b . control === a && ( a . panel && a . panel . visible ( ) ? a . hidePanel ( ) : ( a . showPanel ( ) , a . panel . focus ( ! ! b . aria ) ) ) } ) , a . _super ( ) } , remove : function ( ) { return this . panel && ( this . panel . remove ( ) , this . panel = null ) , this . _super ( ) } } ) } ) , g ( "tinymce.core.ui.ColorButton" , [ "tinymce.core.ui.PanelButton" , "tinymce.core.dom.DOMUtils" ] , function ( a , b ) { "use strict" ; var c = b . DOM ; return a . extend ( { init : function ( a ) { this . _super ( a ) , this . classes . add ( "colorbutton" ) } , color : function ( a ) { return a ? ( this . _color = a , this . getEl ( "preview" ) . style . backgroundColor = a , this ) : this . _color } , resetColor : function ( ) { return this . _color = null , this . getEl ( "preview" ) . style . backgroundColor = null , this } , renderHtml : function ( ) { var a = this , b = a . _id , c = a . classPrefix , d = a . state . get ( "text" ) , e = a . settings . icon ? c + "ico " + c + "i-" + a . settings . icon : "" , f = a . settings . image ? " style=\"background-image: url('" + a . settings . image + "')\"" : "" , g = "" ; return d && ( a . classes . add ( "btn-has-text" ) , g = '<span class="' + c + 'txt">' + a . encode ( d ) + "</span>" ) , '<div id="' + b + '" class="' + a . classes + '" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">' + ( e ? '<i class="' + e + '"' + f + "></i>" : "" ) + '<span id="' + b + '-preview" class="' + c + 'preview"></span>' + g + '</button><button type="button" class="' + c + 'open" hidefocus="1" tabindex="-1"> <i class="' + c + 'caret"></i></button></div>' } , postRender : function ( ) { var a = this , b = a . settings . onclick ; return a . on ( "click" , function ( d ) { d . aria && "down" == d . aria . key || d . control != a || c . getParent ( d . target , "." + a . classPrefix + "open" ) || ( d . stopImmediatePropagation ( ) , b . call ( a , d ) ) } ) , delete a . settings . onclick , a . _super ( ) } } ) } ) , g ( "tinymce.core.util.Color" , [ ] , function ( ) { function a ( a ) { function e ( a , e , f ) { var g , h , i , j , k , l ; return g = 0 , h = 0 , i = 0 , a /= 255 , e /= 255 , f /= 255 , k = b ( a , b ( e , f ) ) , l = c ( a , c ( e , f ) ) , k == l ? ( i = k , { h : 0 , s : 0 , v : 100 * i } ) : ( j = a == k ? e - f : f == k ? a - e : f - a , g = a == k ? 3 : f == k ? 1 : 5 , g = 60 * ( g - j / ( l - k ) ) , h = ( l - k ) / l , i = l , { h : d ( g ) , s : d ( 100 * h ) , v : d ( 100 * i ) } ) } function f ( a , e , f ) { var g , h , i , j ; if ( a = ( parseInt ( a , 10 ) || 0 ) % 360 , e = parseInt ( e , 10 ) / 100 , f = parseInt ( f , 10 ) / 100 , e = c ( 0 , b ( e , 1 ) ) , f = c ( 0 , b ( f , 1 ) ) , 0 === e ) return void ( l = m = n = d ( 255 * f ) ) ; switch ( g = a / 60 , h = f * e , i = h * ( 1 - Math . abs ( g % 2 - 1 ) ) , j = f - h , Math . floor ( g ) ) { case 0 : l = h , m = i , n = 0 ; break ; case 1 : l = i , m = h , n = 0 ; break ; case 2 : l = 0 , m = h , n = i ; break ; case 3 : l = 0 , m = i , n = h ; break ; case 4 : l = i , m = 0 , n = h ; break ; case 5 : l = h , m = 0 , n = i ; break ; default : l = m = n = 0 } l = d ( 255 * ( l + j ) ) , m = d ( 255 * ( m + j ) ) , n = d ( 255 * ( n + j ) ) } function g ( )
var d = this , e = this . getEl ( ) . contentWindow . document . body ; return e ? ( e . innerHTML = a , c && c ( ) ) : b . setTimeout ( function ( ) { d . html ( a ) } ) , this } } ) } ) , g ( "tinymce.core.ui.InfoBox" , [ "tinymce.core.ui.Widget" ] , function ( a ) { "use strict" ; return a . extend ( { init : function ( a ) { var b = this ; b . _super ( a ) , b . classes . add ( "widget" ) . add ( "infobox" ) , b . canFocus = ! 1 } , severity : function ( a ) { this . classes . remove ( "error" ) , this . classes . remove ( "warning" ) , this . classes . remove ( "success" ) , this . classes . add ( a ) } , help : function ( a ) { this . state . set ( "help" , a ) } , renderHtml : function ( ) { var a = this , b = a . classPrefix ; return '<div id="' + a . _id + '" class="' + a . classes + '"><div id="' + a . _id + '-body">' + a . encode ( a . state . get ( "text" ) ) + '<button role="button" tabindex="-1"><i class="' + b + "ico " + b + 'i-help"></i></button></div></div>' } , bindStates : function ( ) { var a = this ; return a . state . on ( "change:text" , function ( b ) { a . getEl ( "body" ) . firstChild . data = a . encode ( b . value ) , a . state . get ( "rendered" ) && a . updateLayoutRect ( ) } ) , a . state . on ( "change:help" , function ( b ) { a . classes . toggle ( "has-help" , b . value ) , a . state . get ( "rendered" ) && a . updateLayoutRect ( ) } ) , a . _super ( ) } } ) } ) , g ( "tinymce.core.ui.Label" , [ "tinymce.core.ui.Widget" , "tinymce.core.ui.DomUtils" ] , function ( a , b ) { "use strict" ; return a . extend ( { init : function ( a ) { var b = this ; b . _super ( a ) , b . classes . add ( "widget" ) . add ( "label" ) , b . canFocus = ! 1 , a . multiline && b . classes . add ( "autoscroll" ) , a . strong && b . classes . add ( "strong" ) } , initLayoutRect : function ( ) { var a = this , c = a . _super ( ) ; if ( a . settings . multiline ) { var d = b . getSize ( a . getEl ( ) ) ; d . width > c . maxW && ( c . minW = c . maxW , a . classes . add ( "multiline" ) ) , a . getEl ( ) . style . width = c . minW + "px" , c . startMinH = c . h = c . minH = Math . min ( c . maxH , b . getSize ( a . getEl ( ) ) . height ) } return c } , repaint : function ( ) { var a = this ; return a . settings . multiline || ( a . getEl ( ) . style . lineHeight = a . layoutRect ( ) . h + "px" ) , a . _super ( ) } , severity : function ( a ) { this . classes . remove ( "error" ) , this . classes . remove ( "warning" ) , this . classes . remove ( "success" ) , this . classes . add ( a ) } , renderHtml : function ( ) { var a , b , c = this , d = c . settings . forId , e = c . settings . html ? c . settings . html : c . encode ( c . state . get ( "text" ) ) ; return ! d && ( b = c . settings . forName ) && ( a = c . getRoot ( ) . find ( "#" + b ) [ 0 ] , a && ( d = a . _id ) ) , d ? '<label id="' + c . _id + '" class="' + c . classes + '"' + ( d ? ' for="' + d + '"' : "" ) + ">" + e + "</label>" : '<span id="' + c . _id + '" class="' + c . classes + '">' + e + "</span>" } , bindStates : function ( ) { var a = this ; return a . state . on ( "change:text" , function ( b ) { a . innerHtml ( a . encode ( b . value ) ) , a . state . get ( "rendered" ) && a . updateLayoutRect ( ) } ) , a . _super ( ) } } ) } ) , g ( "tinymce.core.ui.Toolbar" , [ "tinymce.core.ui.Container" ] , function ( a ) { "use strict" ; return a . extend ( { Defaults : { role : "toolbar" , layout : "flow" } , init : function ( a ) { var b = this ; b . _super ( a ) , b . classes . add ( "toolbar" ) } , postRender : function ( ) { var a = this ; return a . items ( ) . each ( function ( a ) { a . classes . add ( "toolbar-item" ) } ) , a . _super ( ) } } ) } ) , g ( "tinymce.core.ui.MenuBar" , [ "tinymce.core.ui.Toolbar" ] , function ( a ) { "use strict" ; return a . extend ( { Defaults : { role : "menubar" , containerCls : "menubar" , ariaRoot : ! 0 , defaults : { type : "menubutton" } } } ) } ) , g ( "tinymce.core.ui.MenuButton" , [ "tinymce.core.ui.Button" , "tinymce.core.ui.Factory" , "tinymce.core.ui.MenuBar" ] , function ( a , b , c ) { "use strict" ; function d ( a , b ) { for ( ; a ; ) { if ( b === a ) return ! 0 ; a = a . parentNode } return ! 1 } var e = a . extend ( { init : function ( a ) { var b = this ; b . _renderOpen = ! 0 , b . _super ( a ) , a = b . settings , b . classes . add ( "menubtn" ) , a . fixedWidth && b . classes . add ( "fixed-width" ) , b . aria ( "haspopup" , ! 0 ) , b . state . set ( "menu" , a . menu || b . render ( ) ) } , showMenu : function ( a ) { var c , d = this ; return d . menu && d . menu . visible ( ) && a !== ! 1 ? d . hideMenu ( ) : ( d . menu || ( c = d . state . get ( "menu" ) || [ ] , c . length ? c = { type : "menu" , items : c } : c . type = c . type || "menu" , c . renderTo ? d . menu = c . parent ( d ) . show ( ) . renderTo ( ) : d . menu = b . create ( c ) . parent ( d ) . renderTo ( ) , d . fire ( "createmenu" ) , d . menu . reflow ( ) , d . menu . on ( "cancel" , function ( a ) { a . control . parent ( ) === d . menu && ( a . stopPropagation ( ) , d . focus ( ) , d . hideMenu ( ) ) } ) , d . menu . on ( "select" , function ( ) { d . focus ( ) } ) , d . menu . on ( "show hide" , function ( a ) { a . control == d . menu && d . activeMenu ( "show" == a . type ) , d . aria ( "expanded" , "show" == a . type ) } ) . fire ( "show" ) ) , d . menu . show ( ) , d . menu . layoutRect ( { w : d . layoutRect ( ) . w } ) , d . menu . moveRel ( d . getEl ( ) , d . isRtl ( ) ? [ "br-tr" , "tr-br" ] : [ "bl-tl" , "tl-bl" ] ) , void d . fire ( "showmenu" ) ) } , hideMenu : function ( ) { var a
e . setAttribute ( h , c ) ; try { e . save ( h ) } catch ( g ) { } a ( ) } } var d , e , f , g , h , i ; try { if ( window . localStorage ) return localStorage } catch ( j ) { } return h = "tinymce" , e = document . documentElement , i = ! ! e . addBehavior , i && e . addBehavior ( "#default#userData" ) , d = { key : function ( a ) { return g [ a ] } , getItem : function ( a ) { return a in f ? f [ a ] : null } , setItem : function ( a , b ) { f [ a ] = "" + b , c ( ) } , removeItem : function ( a ) { delete f [ a ] , c ( ) } , clear : function ( ) { f = { } , c ( ) } } , b ( ) , d } ) , g ( "tinymce.core.api.Tinymce" , [ "tinymce.core.AddOnManager" , "tinymce.core.api.Formatter" , "tinymce.core.api.NotificationManager" , "tinymce.core.api.WindowManager" , "tinymce.core.dom.BookmarkManager" , "tinymce.core.dom.ControlSelection" , "tinymce.core.dom.DomQuery" , "tinymce.core.dom.DOMUtils" , "tinymce.core.dom.EventUtils" , "tinymce.core.dom.RangeUtils" , "tinymce.core.dom.ScriptLoader" , "tinymce.core.dom.Selection" , "tinymce.core.dom.Serializer" , "tinymce.core.dom.Sizzle" , "tinymce.core.dom.TreeWalker" , "tinymce.core.Editor" , "tinymce.core.EditorCommands" , "tinymce.core.EditorManager" , "tinymce.core.EditorObservable" , "tinymce.core.Env" , "tinymce.core.FocusManager" , "tinymce.core.geom.Rect" , "tinymce.core.html.DomParser" , "tinymce.core.html.Entities" , "tinymce.core.html.Node" , "tinymce.core.html.SaxParser" , "tinymce.core.html.Schema" , "tinymce.core.html.Serializer" , "tinymce.core.html.Styles" , "tinymce.core.html.Writer" , "tinymce.core.Shortcuts" , "tinymce.core.ui.Api" , "tinymce.core.UndoManager" , "tinymce.core.util.Class" , "tinymce.core.util.Color" , "tinymce.core.util.Delay" , "tinymce.core.util.EventDispatcher" , "tinymce.core.util.I18n" , "tinymce.core.util.JSON" , "tinymce.core.util.JSONP" , "tinymce.core.util.JSONRequest" , "tinymce.core.util.LocalStorage" , "tinymce.core.util.Observable" , "tinymce.core.util.Promise" , "tinymce.core.util.Tools" , "tinymce.core.util.URI" , "tinymce.core.util.VK" , "tinymce.core.util.XHR" ] , function ( a , b , c , d , e , f , g , h , i , j , k , l , m , n , o , p , q , r , s , t , u , v , w , x , y , z , A , B , C , D , E , F , G , H , I , J , K , L , M , N , O , P , Q , R , S , T , U , V ) { var W = r , X = { geom : { Rect : v } , util : { Promise : R , Delay : J , Tools : S , VK : U , URI : T , Class : H , EventDispatcher : K , Observable : Q , I18n : L , XHR : V , JSON : M , JSONRequest : O , JSONP : N , LocalStorage : P , Color : I } , dom : { EventUtils : i , Sizzle : n , DomQuery : g , TreeWalker : o , DOMUtils : h , ScriptLoader : k , RangeUtils : j , Serializer : m , ControlSelection : f , BookmarkManager : e , Selection : l , Event : i . Event } , html : { Styles : C , Entities : x , Node : y , Schema : A , SaxParser : z , DomParser : w , Writer : D , Serializer : B } , Env : t , AddOnManager : a , Formatter : b , UndoManager : G , EditorCommands : q , WindowManager : d , NotificationManager : c , EditorObservable : s , Shortcuts : E , Editor : p , FocusManager : u , EditorManager : r , DOM : h . DOM , ScriptLoader : k . ScriptLoader , PluginManager : a . PluginManager , ThemeManager : a . ThemeManager , trim : S . trim , isArray : S . isArray , is : S . is , toArray : S . toArray , makeMap : S . makeMap , each : S . each , map : S . map , grep : S . grep , inArray : S . inArray , extend : S . extend , create : S . create , walk : S . walk , createNS : S . createNS , resolve : S . resolve , explode : S . explode , _addCacheSuffix : S . _addCacheSuffix , isOpera : t . opera , isWebKit : t . webkit , isIE : t . ie , isGecko : t . gecko , isMac : t . mac } ; return W = S . extend ( W , X ) , F . appendTo ( W ) , W } ) , g ( "tinymce.core.api.Main" , [ "ephox.katamari.api.Fun" , "tinymce.core.api.Tinymce" ] , function ( a , b ) { var c = this || window , d = function ( b ) { "function" != typeof c . define || c . define . amd || ( c . define ( "ephox/tinymce" , [ ] , a . constant ( b ) ) , c . define ( "tinymce.core.EditorManager" , [ ] , a . constant ( b ) ) ) , "object" == typeof module && ( module . exports = b ) } , e = function ( a ) { window . tinymce = a , window . tinyMCE = a } ; return function ( ) { return e ( b ) , d ( b ) , b } } ) , d ( "tinymce.core.api.Main" ) ( ) } ( ) ;