2016-04-18 23:46:29 +02:00
// 4.3.10 (2016-04-12)
! function ( e , t ) { "use strict" ; function n ( e , t ) { for ( var n , r = [ ] , i = 0 ; i < e . length ; ++ i ) { if ( n = s [ e [ i ] ] || o ( e [ i ] ) , ! n ) throw "module definition dependecy not found: " + e [ i ] ; r . push ( n ) } t . apply ( null , r ) } function r ( e , r , i ) { if ( "string" != typeof e ) throw "invalid module definition, module id must be defined and be a string" ; if ( r === t ) throw "invalid module definition, dependencies must be specified" ; if ( i === t ) throw "invalid module definition, definition function must be specified" ; n ( r , function ( ) { s [ e ] = i . apply ( null , arguments ) } ) } function i ( e ) { return ! ! s [ e ] } function o ( t ) { for ( var n = e , r = t . split ( /[.\/]/ ) , i = 0 ; i < r . length ; ++ i ) { if ( ! n [ r [ i ] ] ) return ; n = n [ r [ i ] ] } return n } function a ( n ) { var r , i , o , a , l ; for ( r = 0 ; r < n . length ; r ++ ) { i = e , o = n [ r ] , a = o . split ( /[.\/]/ ) ; for ( var c = 0 ; c < a . length - 1 ; ++ c ) i [ a [ c ] ] === t && ( i [ a [ c ] ] = { } ) , i = i [ a [ c ] ] ; i [ a [ a . length - 1 ] ] = s [ o ] } if ( e . AMDLC _TESTS ) { l = e . privateModules || { } ; for ( o in s ) l [ o ] = s [ o ] ; for ( r = 0 ; r < n . length ; r ++ ) delete l [ n [ r ] ] ; e . privateModules = l } } var s = { } , l = "tinymce/geom/Rect" , c = "tinymce/util/Promise" , u = "tinymce/util/Delay" , d = "tinymce/dom/EventUtils" , f = "tinymce/dom/Sizzle" , h = "tinymce/Env" , p = "tinymce/util/Arr" , m = "tinymce/util/Tools" , g = "tinymce/dom/DomQuery" , v = "tinymce/html/Styles" , y = "tinymce/dom/TreeWalker" , b = "tinymce/dom/Range" , C = "tinymce/html/Entities" , x = "tinymce/dom/StyleSheetLoader" , w = "tinymce/dom/DOMUtils" , E = "tinymce/dom/ScriptLoader" , N = "tinymce/AddOnManager" , _ = "tinymce/dom/NodeType" , S = "tinymce/text/Zwsp" , k = "tinymce/caret/CaretContainer" , T = "tinymce/dom/RangeUtils" , R = "tinymce/NodeChange" , A = "tinymce/html/Node" , B = "tinymce/html/Schema" , D = "tinymce/html/SaxParser" , M = "tinymce/html/DomParser" , L = "tinymce/html/Writer" , P = "tinymce/html/Serializer" , H = "tinymce/dom/Serializer" , O = "tinymce/dom/TridentSelection" , I = "tinymce/util/VK" , F = "tinymce/dom/ControlSelection" , z = "tinymce/util/Fun" , W = "tinymce/caret/CaretCandidate" , V = "tinymce/geom/ClientRect" , U = "tinymce/text/ExtendingChar" , $ = "tinymce/caret/CaretPosition" , q = "tinymce/caret/CaretBookmark" , j = "tinymce/dom/BookmarkManager" , Y = "tinymce/dom/Selection" , X = "tinymce/dom/ElementUtils" , K = "tinymce/fmt/Preview" , G = "tinymce/fmt/Hooks" , J = "tinymce/Formatter" , Q = "tinymce/UndoManager" , Z = "tinymce/EnterKey" , ee = "tinymce/ForceBlocks" , te = "tinymce/caret/CaretUtils" , ne = "tinymce/caret/CaretWalker" , re = "tinymce/EditorCommands" , ie = "tinymce/util/URI" , oe = "tinymce/util/Class" , ae = "tinymce/util/EventDispatcher" , se = "tinymce/data/Binding" , le = "tinymce/util/Observable" , ce = "tinymce/data/ObservableObject" , ue = "tinymce/ui/Selector" , de = "tinymce/ui/Collection" , fe = "tinymce/ui/DomUtils" , he = "tinymce/ui/BoxUtils" , pe = "tinymce/ui/ClassList" , me = "tinymce/ui/ReflowQueue" , ge = "tinymce/ui/Control" , ve = "tinymce/ui/Factory" , ye = "tinymce/ui/KeyboardNavigation" , be = "tinymce/ui/Container" , Ce = "tinymce/ui/DragHelper" , xe = "tinymce/ui/Scrollable" , we = "tinymce/ui/Panel" , Ee = "tinymce/ui/Movable" , Ne = "tinymce/ui/Resizable" , _e = "tinymce/ui/FloatPanel" , Se = "tinymce/ui/Window" , ke = "tinymce/ui/MessageBox" , Te = "tinymce/WindowManager" , Re = "tinymce/ui/Tooltip" , Ae = "tinymce/ui/Widget" , Be = "tinymce/ui/Progress" , De = "tinymce/ui/Notification" , Me = "tinymce/NotificationManager" , Le = "tinymce/dom/NodePath" , Pe = "tinymce/util/Quirks" , He = "tinymce/EditorObservable" , Oe = "tinymce/Mode" , Ie = "tinymce/Shortcuts" , Fe = "tinymce/file/Uploader" , ze = "tinymce/file/Conversions" , We = "tinymce/file/ImageScanner" , Ve = "tinymce/file/BlobCache" , Ue = "tinymce/EditorUpload" , $e = "tinymce/caret/FakeCaret" , qe = "tinymce/dom/Dimensions" , je = "tinymce/caret/LineWalker" , Ye = "tinymce/caret/LineUtils" , Xe = "tinymce/DragDropOverrides" , Ke = "tinymce/SelectionOverrides" , Ge = "tinymce/Editor" , Je = "tinymce/util/I18n" , Qe = "tinymce/FocusManager" , Ze = "tinymce/EditorManager" , et = "tinymce/LegacyInput" , tt = "tinymce/util/XHR" , nt = "tinymce/util/JSON" , rt = "tinymce/util/JSONRequest" , it = "tinymce/util/JSONP" , ot = "tinymce/util/LocalStorage" , at = "tinymce/Compat" , st = "tinymce/ui/Layout" , lt = "tinymce/ui/AbsoluteLayout" , ct = "tinymce/ui/Button" , ut = "tinymce/ui/ButtonGroup" , dt = "tinymce/ui/Checkbox" , ft = "tinymce/ui/ComboBox" , ht = "tinymce/ui/ColorBox" , pt = "tinymce/ui/PanelButton" , mt = "tinymce/ui/ColorButton" , gt = "tinymce/util/Color" , vt = "tinymce/ui/ColorPicker" , yt = "tinymce/ui/Path" , bt = "tinymce/ui/ElementPath" , Ct = " tinymce / ui / F
o = o && /MSIE (\w+)\./ . exec ( n ) [ 1 ] , a = - 1 == n . indexOf ( "Trident/" ) || - 1 == n . indexOf ( "rv:" ) && - 1 == t . appName . indexOf ( "Netscape" ) ? ! 1 : 11 , s = - 1 == n . indexOf ( "Edge/" ) || o || a ? ! 1 : 12 , o = o || a || s , l = ! i && ! a && /Gecko/ . test ( n ) , c = - 1 != n . indexOf ( "Mac" ) , u = /(iPad|iPhone)/ . test ( n ) , f = "FormData" in window && "FileReader" in window && "URL" in window && ! ! URL . createObjectURL , h = e ( "only screen and (max-device-width: 480px)" ) && ( d || u ) , p = e ( "only screen and (min-width: 800px)" ) && ( d || u ) , m = - 1 != n . indexOf ( "Windows Phone" ) , s && ( i = ! 1 ) ; var g = ! u || f || n . match ( /AppleWebKit\/(\d*)/ ) [ 1 ] >= 534 ; return { opera : r , webkit : i , ie : o , gecko : l , mac : c , iOS : u , android : d , contentEditable : g , transparentSrc : "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" , caretAfter : 8 != o , range : window . getSelection && "Range" in window , documentMode : o && ! s ? document . documentMode || 7 : 10 , fileApi : f , ceFalse : o === ! 1 || o > 8 , desktop : ! h && ! p , windowsPhone : m } } ) , r ( p , [ ] , function ( ) { function e ( e ) { var t = e , n , r ; if ( ! u ( e ) ) for ( t = [ ] , n = 0 , r = e . length ; r > n ; n ++ ) t [ n ] = e [ n ] ; return t } function n ( e , n , r ) { var i , o ; if ( ! e ) return 0 ; if ( r = r || e , e . length !== t ) { for ( i = 0 , o = e . length ; o > i ; i ++ ) if ( n . call ( r , e [ i ] , i , e ) === ! 1 ) return 0 } else for ( i in e ) if ( e . hasOwnProperty ( i ) && n . call ( r , e [ i ] , i , e ) === ! 1 ) return 0 ; return 1 } function r ( e , t ) { var r = [ ] ; return n ( e , function ( n , i ) { r . push ( t ( n , i , e ) ) } ) , r } function i ( e , t ) { var r = [ ] ; return n ( e , function ( n , i ) { t && ! t ( n , i , e ) || r . push ( n ) } ) , r } function o ( e , t ) { var n , r ; if ( e ) for ( n = 0 , r = e . length ; r > n ; n ++ ) if ( e [ n ] === t ) return n ; return - 1 } function a ( e , t , n , r ) { var i = 0 ; for ( arguments . length < 3 && ( n = e [ 0 ] ) ; i < e . length ; i ++ ) n = t . call ( r , n , e [ i ] , i ) ; return n } function s ( e , t , n ) { var r , i ; for ( r = 0 , i = e . length ; i > r ; r ++ ) if ( t . call ( n , e [ r ] , r , e ) ) return r ; return - 1 } function l ( e , n , r ) { var i = s ( e , n , r ) ; return - 1 !== i ? e [ i ] : t } function c ( e ) { return e [ e . length - 1 ] } var u = Array . isArray || function ( e ) { return "[object Array]" === Object . prototype . toString . call ( e ) } ; return { isArray : u , toArray : e , each : n , map : r , filter : i , indexOf : o , reduce : a , findIndex : s , find : l , last : c } } ) , r ( m , [ h , p ] , function ( e , n ) { function r ( e ) { return null === e || e === t ? "" : ( "" + e ) . replace ( h , "" ) } function i ( e , r ) { return r ? "array" == r && n . isArray ( e ) ? ! 0 : typeof e == r : e !== t } function o ( e , t , n ) { var r ; for ( e = e || [ ] , t = t || "," , "string" == typeof e && ( e = e . split ( t ) ) , n = n || { } , r = e . length ; r -- ; ) n [ e [ r ] ] = { } ; return n } function a ( e , t , n ) { var r = this , i , o , a , s , l , c = 0 ; if ( e = /^((static) )?([\w.]+)(:([\w.]+))?/ . exec ( e ) , a = e [ 3 ] . match ( /(^|\.)(\w+)$/i ) [ 2 ] , o = r . createNS ( e [ 3 ] . replace ( /\.\w+$/ , "" ) , n ) , ! o [ a ] ) { if ( "static" == e [ 2 ] ) return o [ a ] = t , void ( this . onCreate && this . onCreate ( e [ 2 ] , e [ 3 ] , o [ a ] ) ) ; t [ a ] || ( t [ a ] = function ( ) { } , c = 1 ) , o [ a ] = t [ a ] , r . extend ( o [ a ] . prototype , t ) , e [ 5 ] && ( i = r . resolve ( e [ 5 ] ) . prototype , s = e [ 5 ] . match ( /\.(\w+)$/i ) [ 1 ] , l = o [ a ] , c ? o [ a ] = function ( ) { return i [ s ] . apply ( this , arguments ) } : o [ a ] = function ( ) { return this . parent = i [ s ] , l . apply ( this , arguments ) } , o [ a ] . prototype [ a ] = o [ a ] , r . each ( i , function ( e , t ) { o [ a ] . prototype [ t ] = i [ t ] } ) , r . each ( t , function ( e , t ) { i [ t ] ? o [ a ] . prototype [ t ] = function ( ) { return this . parent = i [ t ] , e . apply ( this , arguments ) } : t != a && ( o [ a ] . prototype [ t ] = e ) } ) ) , r . each ( t [ "static" ] , function ( e , t ) { o [ a ] [ t ] = e } ) } } function s ( e , n ) { var r , i , o , a = arguments , s ; for ( r = 1 , i = a . length ; i > r ; r ++ ) { n = a [ r ] ; for ( o in n ) n . hasOwnProperty ( o ) && ( s = n [ o ] , s !== t && ( e [ o ] = s ) ) } return e } function l ( e , t , r , i ) { i = i || this , e && ( r && ( e = e [ r ] ) , n . each ( e , function ( e , n ) { return t . call ( i , e , n , r ) === ! 1 ? ! 1 : void l ( e , t , r , i ) } ) ) } function c ( e , t ) { var n , r ; for ( t = t || window , e = e . split ( "." ) , n = 0 ; n < e . length ; n ++ ) r = e [ n ] , t [ r ] || ( t [ r ] = { } ) , t = t [ r ] ; return t } function u ( e , t ) { var n , r ; for ( t = t || window , e = e . split ( "." ) , n = 0 , r = e . length ; r > n && ( t = t [ e [ n ] ] , t ) ; n ++ ) ; return t } function d ( e , t ) { return ! e || i ( e , "array" ) ? e : n . map ( e . split ( t || "," ) , r ) } function f ( t ) { var n = e . cacheSuffix ; return n && ( t += ( - 1 === t . indexOf ( "?" ) ? "?" : "&" ) + n ) , t } var h = /^\s*|\s*$/g ; return { trim : r , isArray : n . isArray , is : i , toArray : n . toArray , makeMap : o , each : n . each , map : n . map , grep : n . filter , inArray : n . indexOf , extend : s , create : a , walk : l , createNS : c , resolve : u , explode : d , _addCacheSuffix : f } } ) , r ( g , [ d , f , m , h ] , function ( e , n , r , i ) { function o ( e ) { return "undefined" != typeof e } function a ( e ) { return "string" == typeof e } function s ( e ) { return e && e == e . window } function l ( e , t ) { var n , r , i ; for ( t = t || w , i = t . createElement ( "div" ) , n = t . createDocumentFragment ( ) , i . innerHTML = e ; r = i . firstChild ; ) n . appendChild ( r ) ; return n } function c ( e , t
e && e . id !== t ) ? this . doc . getElementsByName ( t ) [ 1 ] : e } , getNext : function ( e , t ) { return this . _findSib ( e , t , "nextSibling" ) } , getPrev : function ( e , t ) { return this . _findSib ( e , t , "previousSibling" ) } , select : function ( t , n ) { var r = this ; return e ( t , r . get ( n ) || r . settings . root _element || r . doc , [ ] ) } , is : function ( n , r ) { var i ; if ( n . length === t ) { if ( "*" === r ) return 1 == n . nodeType ; if ( C . test ( r ) ) { for ( r = r . toLowerCase ( ) . split ( /,/ ) , n = n . nodeName . toLowerCase ( ) , i = r . length - 1 ; i >= 0 ; i -- ) if ( r [ i ] == n ) return ! 0 ; return ! 1 } } if ( n . nodeType && 1 != n . nodeType ) return ! 1 ; var o = n . nodeType ? [ n ] : n ; return e ( r , o [ 0 ] . ownerDocument || o [ 0 ] , null , o ) . length > 0 } , add : function ( e , t , n , r , i ) { var o = this ; return this . run ( e , function ( e ) { var a ; return a = g ( t , "string" ) ? o . doc . createElement ( t ) : t , o . setAttribs ( a , n ) , r && ( r . nodeType ? a . appendChild ( r ) : o . setHTML ( a , r ) ) , i ? a : e . appendChild ( a ) } ) } , create : function ( e , t , n ) { return this . add ( this . doc . createElement ( e ) , e , t , n , 1 ) } , createHTML : function ( e , t , n ) { var r = "" , i ; r += "<" + e ; for ( i in t ) t . hasOwnProperty ( i ) && null !== t [ i ] && "undefined" != typeof t [ i ] && ( r += " " + i + '="' + this . encode ( t [ i ] ) + '"' ) ; return "undefined" != typeof n ? r + ">" + n + "</" + e + ">" : r + " />" } , createFragment : function ( e ) { var t , n , r = this . doc , i ; for ( i = r . createElement ( "div" ) , t = r . createDocumentFragment ( ) , e && ( i . innerHTML = e ) ; n = i . firstChild ; ) t . appendChild ( n ) ; return t } , remove : function ( e , t ) { return e = this . $$ ( e ) , t ? e . each ( function ( ) { for ( var e ; e = this . firstChild ; ) 3 == e . nodeType && 0 === e . data . length ? this . removeChild ( e ) : this . parentNode . insertBefore ( e , this ) } ) . remove ( ) : e . remove ( ) , e . length > 1 ? e . toArray ( ) : e [ 0 ] } , setStyle : function ( e , t , n ) { e = this . $$ ( e ) . css ( t , n ) , this . settings . update _styles && f ( this , e ) } , getStyle : function ( e , n , r ) { return e = this . $$ ( e ) , r ? e . css ( n ) : ( n = n . replace ( /-(\D)/g , function ( e , t ) { return t . toUpperCase ( ) } ) , "float" == n && ( n = l . ie && l . ie < 12 ? "styleFloat" : "cssFloat" ) , e [ 0 ] && e [ 0 ] . style ? e [ 0 ] . style [ n ] : t ) } , setStyles : function ( e , t ) { e = this . $$ ( e ) . css ( t ) , this . settings . update _styles && f ( this , e ) } , removeAllAttribs : function ( e ) { return this . run ( e , function ( e ) { var t , n = e . attributes ; for ( t = n . length - 1 ; t >= 0 ; t -- ) e . removeAttributeNode ( n . item ( t ) ) } ) } , setAttrib : function ( e , t , n ) { var r = this , i , o , a = r . settings ; "" === n && ( n = null ) , e = r . $$ ( e ) , i = e . attr ( t ) , e . length && ( o = r . attrHooks [ t ] , o && o . set ? o . set ( e , n , t ) : e . attr ( t , n ) , i != n && a . onSetAttrib && a . onSetAttrib ( { attrElm : e , attrName : t , attrValue : n } ) ) } , setAttribs : function ( e , t ) { var n = this ; n . $$ ( e ) . each ( function ( e , r ) { m ( t , function ( e , t ) { n . setAttrib ( r , t , e ) } ) } ) } , getAttrib : function ( e , t , n ) { var r = this , i , o ; return e = r . $$ ( e ) , e . length && ( i = r . attrHooks [ t ] , o = i && i . get ? i . get ( e , t ) : e . attr ( t ) ) , "undefined" == typeof o && ( o = n || "" ) , o } , getPos : function ( e , t ) { var r = this , i = 0 , o = 0 , a , s = r . doc , l = s . body , c ; if ( e = r . get ( e ) , t = t || l , e ) { if ( t === l && e . getBoundingClientRect && "static" === n ( l ) . css ( "position" ) ) return c = e . getBoundingClientRect ( ) , t = r . boxModel ? s . documentElement : l , i = c . left + ( s . documentElement . scrollLeft || l . scrollLeft ) - t . clientLeft , o = c . top + ( s . documentElement . scrollTop || l . scrollTop ) - t . clientTop , { x : i , y : o } ; for ( a = e ; a && a != t && a . nodeType ; ) i += a . offsetLeft || 0 , o += a . offsetTop || 0 , a = a . offsetParent ; for ( a = e . parentNode ; a && a != t && a . nodeType ; ) i -= a . scrollLeft || 0 , o -= a . scrollTop || 0 , a = a . parentNode } return { x : i , y : o } } , parseStyle : function ( e ) { return this . styles . parse ( e ) } , serializeStyle : function ( e , t ) { return this . styles . serialize ( e , t ) } , addStyle : function ( e ) { var t = this , n = t . doc , r , i ; if ( t !== p . DOM && n === document ) { var o = p . DOM . addedStyles ; if ( o = o || [ ] , o [ e ] ) return ; o [ e ] = ! 0 , p . DOM . addedStyles = o } i = n . getElementById ( "mceDefaultStyles" ) , i || ( i = n . createElement ( "style" ) , i . id = "mceDefaultStyles" , i . type = "text/css" , r = n . getElementsByTagName ( "head" ) [ 0 ] , r . firstChild ? r . insertBefore ( i , r . firstChild ) : r . appendChild ( i ) ) , i . styleSheet ? i . styleSheet . cssText += e : i . appendChild ( n . createTextNode ( e ) ) } , loadCSS : function ( e ) { var t = this , n = t . doc , r ; return t !== p . DOM && n === document ? void p . DOM . loadCSS ( e ) : ( e || ( e = "" ) , r = n . getElementsByTagName ( "head" ) [ 0 ] , void m ( e . split ( "," ) , function ( e ) { var i ; e = c . _addCacheSuffix ( e ) , t . files [ e ] || ( t . files [ e ] = ! 0 , i = t . create ( "link" , { rel : "stylesheet" , href : e } ) , b && n . documentMode && n . recalc && ( i . onload = function ( ) { n . recalc && n . recalc ( ) , i . onload = null } ) , r . appendChild ( i ) ) } ) ) } , addClass : function ( e , t ) { this . $$ ( e ) . addClass ( t ) } , removeClass : function ( e , t ) { this . toggleClass ( e , t , ! 1 ) } , hasClass : function ( e , t ) { return th
a = l ( { } , a ) , delete a . removeEmptyAttrs , delete a . removeEmpty , y [ o ] = a } s ( b , function ( e , t ) { e [ i ] && ( b [ t ] = e = l ( { } , b [ t ] ) , e [ o ] = e [ i ] ) } ) } ) ) } function m ( n ) { var r = /^([+\-]?)(\w+)\[([^\]]+)\]$/ ; i [ e . schema ] = null , n && s ( t ( n , "," ) , function ( e ) { var n = r . exec ( e ) , i , o ; n && ( o = n [ 1 ] , i = o ? b [ n [ 2 ] ] : b [ n [ 2 ] ] = { "#comment" : { } } , i = b [ n [ 2 ] ] , s ( t ( n [ 3 ] , "|" ) , function ( e ) { "-" === o ? delete i [ e ] : i [ e ] = { } } ) ) } ) } function g ( e ) { var t = y [ e ] , n ; if ( t ) return t ; for ( n = C . length ; n -- ; ) if ( t = C [ n ] , t . pattern . test ( e ) ) return t } var v = this , y = { } , b = { } , C = [ ] , x , w , E , N , _ , S , k , T , R , A , B , D , M , L = { } , P = { } ; e = e || { } , E = n ( e . schema ) , e . verify _html === ! 1 && ( e . valid _elements = "*[*]" ) , x = r ( e . valid _styles ) , w = r ( e . invalid _styles , "map" ) , T = r ( e . valid _classes , "map" ) , N = o ( "whitespace_elements" , "pre script noscript style textarea video audio iframe object" ) , _ = o ( "self_closing_elements" , "colgroup dd dt li option p td tfoot th thead tr" ) , S = o ( "short_ended_elements" , "area base basefont br col frame hr img input isindex link meta param embed source wbr track" ) , k = o ( "boolean_attributes" , "checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls" ) , A = o ( "non_empty_elements" , "td th iframe video audio object script" , S ) , B = o ( "move_caret_before_on_enter_elements" , "table" , A ) , D = o ( "text_block_elements" , "h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure" ) , R = o ( "block_elements" , "hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption" , D ) , M = o ( "text_inline_elements" , "span strong b em i font strike u var cite dfn code mark q sup sub samp" ) , s ( ( e . special || "script noscript style textarea" ) . split ( " " ) , function ( e ) { P [ e ] = new RegExp ( "</" + e + "[^>]*>" , "gi" ) } ) , e . valid _elements ? h ( e . valid _elements ) : ( s ( E , function ( e , t ) { y [ t ] = { attributes : e . attributes , attributesOrder : e . attributesOrder } , b [ t ] = e . children } ) , "html5" != e . schema && s ( t ( "strong/b em/i" ) , function ( e ) { e = t ( e , "/" ) , y [ e [ 1 ] ] . outputName = e [ 0 ] } ) , s ( t ( "ol ul sub sup blockquote span font a table tbody tr strong em b i" ) , function ( e ) { y [ e ] && ( y [ e ] . removeEmpty = ! 0 ) } ) , s ( t ( "p h1 h2 h3 h4 h5 h6 th td pre div address caption" ) , function ( e ) { y [ e ] . paddEmpty = ! 0 } ) , s ( t ( "span" ) , function ( e ) { y [ e ] . removeEmptyAttrs = ! 0 } ) ) , p ( e . custom _elements ) , m ( e . valid _children ) , f ( e . extended _valid _elements ) , m ( "+ol[ul|ol],+ul[ul|ol]" ) , e . invalid _elements && s ( c ( e . invalid _elements ) , function ( e ) { y [ e ] && delete y [ e ] } ) , g ( "span" ) || f ( "span[!data-mce-type|*]" ) , v . children = b , v . getValidStyles = function ( ) { return x } , v . getInvalidStyles = function ( ) { return w } , v . getValidClasses = function ( ) { return T } , v . getBoolAttrs = function ( ) { return k } , v . getBlockElements = function ( ) { return R } , v . getTextBlockElements = function ( ) { return D } , v . getTextInlineElements = function ( ) { return M } , v . getShortEndedElements = function ( ) { return S } , v . getSelfClosingElements = function ( ) { return _ } , v . getNonEmptyElements = function ( ) { return A } , v . getMoveCaretBeforeOnEnterElements = function ( ) { return B } , v . getWhiteSpaceElements = function ( ) { return N } , v . getSpecialElements = function ( ) { return P } , v . isValidChild = function ( e , t ) { var n = b [ e ] ; return ! ( ! n || ! n [ t ] ) } , v . isValid = function ( e , t ) { var n , r , i = g ( e ) ; if ( i ) { if ( ! t ) return ! 0 ; if ( i . attributes [ t ] ) return ! 0 ; if ( n = i . attributePatterns ) for ( r = n . length ; r -- ; ) if ( n [ r ] . pattern . test ( e ) ) return ! 0 } return ! 1 } , v . getElementRule = g , v . getCustomElements = function ( ) { return L } , v . addValidElements = f , v . setValidElements = h , v . addCustomElements = p , v . addValidChildren = m , v . elements = y } } ) , r ( D , [ B , C , m ] , function ( e , t , n ) { function r ( e , t , n ) { var r = 1 , i , o , a , s ; for ( s = e . getShortEndedElements ( ) , a = /<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g , a . lastIndex = i = n ; o = a . exec ( t ) ; ) { if ( i = a . lastIndex , "/" === o [ 1 ] ) r -- ; else if ( ! o [ 1 ] ) { if ( o [ 2 ] in s ) continue ; r ++ } if ( 0 === r ) break } return i } function i ( i , a ) { function s ( ) { } var l = this ; i = i || { } , l . schema = a = a || new e , i . fix _self _closing !== ! 1 && ( i . fix _self _closing = ! 0 ) , o ( "comment cdata text start end pi doctype" . split ( " " ) , function ( e ) { e && ( l [ e ] = i [ e ] || s ) } ) , l . parse = function ( e ) { function o ( e ) { var t , n ; for ( t = h . length ; t -- && h [ t ] . name !== e ; ) ; if ( t >= 0 ) { for ( n = h . length - 1 ; n >= t ; n -- ) e = h [ n ] , e . valid && l . end ( e . name ) ; h . length = t } } function
} , ! 1 ) !== ! 0 : ! 1 } function a ( e ) { return h ( e ) || o ( e ) } function s ( e , t ) { return r ( e ) && i ( e , t ) } var l = e . isContentEditableTrue , c = e . isContentEditableFalse , u = e . isBr , d = e . isText , f = e . matchNodeNames ( "script style textarea" ) , h = e . matchNodeNames ( "img input textarea hr iframe video audio object" ) , p = e . matchNodeNames ( "table" ) , m = n . isCaretContainer ; return { isCaretCandidate : r , isInEditable : i , isAtomic : a , isEditableCaretCandidate : s } } ) , r ( V , [ ] , function ( ) { function e ( e ) { return e ? { left : u ( e . left ) , top : u ( e . top ) , bottom : u ( e . bottom ) , right : u ( e . right ) , width : u ( e . width ) , height : u ( e . height ) } : { left : 0 , top : 0 , bottom : 0 , right : 0 , width : 0 , height : 0 } } function t ( t , n ) { return t = e ( t ) , n ? t . right = t . left : ( t . left = t . left + t . width , t . right = t . left ) , t . width = 0 , t } function n ( e , t ) { return e . left === t . left && e . top === t . top && e . bottom === t . bottom && e . right === t . right } function r ( e , t , n ) { return e >= 0 && e <= Math . min ( t . height , n . height ) / 2 } function i ( e , t ) { return e . bottom < t . top ? ! 0 : e . top > t . bottom ? ! 1 : r ( t . top - e . bottom , e , t ) } function o ( e , t ) { return e . top > t . bottom ? ! 0 : e . bottom < t . top ? ! 1 : r ( t . bottom - e . top , e , t ) } function a ( e , t ) { return e . left < t . left } function s ( e , t ) { return e . right > t . right } function l ( e , t ) { return i ( e , t ) ? - 1 : o ( e , t ) ? 1 : a ( e , t ) ? - 1 : s ( e , t ) ? 1 : 0 } function c ( e , t , n ) { return t >= e . left && t <= e . right && n >= e . top && n <= e . bottom } var u = Math . round ; return { clone : e , collapse : t , isEqual : n , isAbove : i , isBelow : o , isLeft : a , isRight : s , compare : l , containsXY : c } } ) , r ( U , [ ] , function ( ) { function e ( e ) { return "string" == typeof e && e . charCodeAt ( 0 ) >= 768 && t . test ( e ) } var t = new RegExp ( "[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]" ) ; return { isExtendingChar : e } } ) , r ( $ , [ z , _ , w , T , W , V , U ] , function ( e , t , n , r , i , o , a ) { function s ( e ) { return e && /[\r\n\t ]/ . test ( e ) } function l ( e ) { var t = e . startContainer , n = e . startOffset , r ; return ! ! ( s ( e . toString ( ) ) && g ( t . parentNode ) && ( r = t . data , s ( r [ n - 1 ] ) || s ( r [ n + 1 ] ) ) ) } function c ( e ) { function t ( e ) { var t = e . ownerDocument , n = t . createRange ( ) , r = t . createTextNode ( "\xa0" ) , i = e . parentNode , a ; return i . insertBefore ( r , e ) , n . setStart ( r , 0 ) , n .
Y . isChildOf ( t , n ) && ! J ( n ) && ! c ( t ) && ! c ( n ) ) return t = H ( t , "span" , { id : "_start" , "data-mce-type" : "bookmark" } ) , l ( t ) , void ( t = u ( re ) ) ; t = H ( t , "span" , { id : "_start" , "data-mce-type" : "bookmark" } ) , n = H ( n , "span" , { id : "_end" , "data-mce-type" : "bookmark" } ) , l ( t ) , l ( n ) , t = u ( re ) , n = u ( ) } else t = n = l ( t ) ; e . startContainer = t . parentNode ? t . parentNode : t , e . startOffset = Z ( t ) , e . endContainer = n . parentNode ? n . parentNode : n , e . endOffset = Z ( n ) + 1 } K . walk ( e , function ( e ) { ue ( e , function ( e ) { i ( e ) , 1 === e . nodeType && "underline" === s . dom . getStyle ( e , "text-decoration" ) && e . parentNode && "underline" === b ( e . parentNode ) && F ( { deep : ! 1 , exact : ! 0 , inline : "span" , styles : { textDecoration : "underline" } } , null , e ) } ) } ) } var h = m ( e ) , p = h [ 0 ] , g , v , y = ! 0 ; if ( n ) return void ( n . nodeType ? ( v = Y . createRng ( ) , v . setStartBefore ( n ) , v . setEndAfter ( n ) , f ( v ) ) : f ( n ) ) ; if ( "false" !== ae ( X . getNode ( ) ) ) X . isCollapsed ( ) && p . inline && ! Y . select ( "td[data-mce-selected],th[data-mce-selected]" ) . length ? $ ( "remove" , e , t , r ) : ( g = X . getBookmark ( ) , f ( X . getRng ( re ) ) , X . moveToBookmark ( g ) , p . inline && _ ( e , t , X . getStart ( ) ) && q ( X . getRng ( ! 0 ) ) , s . nodeChanged ( ) ) ; else { n = X . getNode ( ) ; for ( var C = 0 , x = h . length ; x > C && ( ! h [ C ] . ceFalseOverride || ! F ( h [ C ] , t , n , n ) ) ; C ++ ) ; } } function E ( e , t , n ) { var r = m ( e ) ; ! _ ( e , t , n ) || "toggle" in r [ 0 ] && ! r [ 0 ] . toggle ? x ( e , t , n ) : w ( e , t , n ) } function N ( e , t , n , r ) { function i ( e , t , i ) { var o , a , s = t [ i ] , l ; if ( t . onmatch ) return t . onmatch ( e , t , i ) ; if ( s ) if ( s . length === oe ) { for ( o in s ) if ( s . hasOwnProperty ( o ) ) { if ( a = "attributes" === i ? Y . getAttrib ( e , o ) : D ( e , o ) , r && ! a && ! t . exact ) return ; if ( ( ! r || t . exact ) && ! B ( a , M ( L ( s [ o ] , n ) , o ) ) ) return } } else for ( l = 0 ; l < s . length ; l ++ ) if ( "attributes" === i ? Y . getAttrib ( e , s [ l ] ) : D ( e , s [ l ] ) ) return t ; return t } var o = m ( t ) , a , s , l ; if ( o && e ) for ( s = 0 ; s < o . length ; s ++ ) if ( a = o [ s ] , A ( e , a ) && i ( e , a , "attributes" ) && i ( e , a , "styles" ) ) { if ( l = a . classes ) for ( s = 0 ; s < l . length ; s ++ ) if ( ! Y . hasClass ( e , l [ s ] ) ) return ; return a } } function _ ( e , t , n ) { function r ( n ) { var r = Y . getRoot ( ) ; return n === r ? ! 1 : ( n = Y . getParent ( n , function ( n ) { return y ( n , e ) ? ! 0 : n . parentNode === r || ! ! N ( n , e , t , ! 0 ) } ) , N ( n , e , t ) ) } var i ; return n ? r ( n ) : ( n = X . getNode ( ) , r ( n ) ? re : ( i = X . getStart ( ) , i != n && r ( i ) ? re : ne ) ) } function S ( e , t ) { var n , r = [ ] , i = { } ; return n = X . getStart ( ) , Y . getParent ( n , function ( n ) { var o , a ; for ( o = 0 ; o < e . length ; o ++ ) a = e [ o ] , ! i [ a ] && N ( n , a , t ) && ( i [ a ] = ! 0 , r . push ( a ) ) } , Y . getRoot ( ) ) , r } function k ( e ) { var t = m ( e ) , n , r , i , o , a ; if ( t ) for ( n = X . getStart ( ) , r = d ( n ) , o = t . length - 1 ; o >= 0 ; o -- ) { if ( a = t [ o ] . selector , ! a || t [ o ] . defaultBlock ) return re ; for ( i = r . length - 1 ; i >= 0 ; i -- ) if ( Y . is ( r [ i ] , a ) ) return re } return ne } function T ( e , t , n ) { var r ; return ie || ( ie = { } , r = { } , s . on ( "NodeChange" , function ( e ) { var t = d ( e . element ) , n = { } ; t = i . grep ( t , function ( e ) { return 1 == e . nodeType && ! e . getAttribute ( "data-mce-bogus" ) } ) , ue ( ie , function ( e , i ) { ue ( t , function ( o ) { return N ( o , i , { } , e . similar ) ? ( r [ i ] || ( ue ( e , function ( e ) { e ( ! 0 , { node : o , format : i , parents : t } ) } ) , r [ i ] = e ) , n [ i ] = e , ! 1 ) : y ( o , i ) ? ! 1 : void 0 } ) } ) , ue ( r , function ( i , o ) { n [ o ] || ( delete r [ o ] , ue ( i , function ( n ) { n ( ! 1 , { node : e . element , format : o , parents : t } ) } ) ) } ) } ) ) , ue ( e . split ( "," ) , function ( e ) { ie [ e ] || ( ie [ e ] = [ ] , ie [ e ] . similar = n ) , ie [ e ] . push ( t ) } ) , this } function R ( e ) { return o . getCssText ( s , e ) } function A ( e , t ) { return B ( e , t . inline ) ? re : B ( e , t . block ) ? re : t . selector ? 1 == e . nodeType && Y . is ( e , t . selector ) : void 0 } function B ( e , t ) { return e = e || "" , t = t || "" , e = "" + ( e . nodeName || e ) , t = "" + ( t . nodeName || t ) , e . toLowerCase ( ) == t . toLowerCase ( ) } function D ( e , t ) { return M ( Y . getStyle ( e , t ) , t ) } function M ( e , t ) { return "color" != t && "backgroundColor" != t || ( e = Y . toHex ( e ) ) , "fontWeight" == t && 700 == e && ( e = "bold" ) , "fontFamily" == t && ( e = e . replace ( /[\'\"]/g , "" ) . replace ( /,\s+/g , "," ) ) , "" + e } function L ( e , t ) { return "string" != typeof e ? e = e ( t ) : t && ( e = e . replace ( /%(\w+)/g , function ( e , n ) { return t [ n ] || e } ) ) , e } function P ( e ) { return e && 3 === e . nodeType && /^([\t \r\n]+|)$/ . test ( e . nodeValue ) } function H ( e , t , n ) { var r = Y . create ( t , n ) ; return e . parentNode . insertBefore ( r , e ) , r . appendChild ( e ) , r } function O ( t , n , r ) { function i ( e ) { function t ( e ) { return "BR" == e . nodeName && e . getAttribute ( "data-mce-bogus" ) && ! e . nextSibling } var r , i , o , a , s ; if ( r = i = e ? g : y , a = e ? "previousSibling" : "nextSibling" , s = Y . getRoot ( ) , 3 == r . nodeType && ! P ( r ) && ( e ? v > 0 : b < r . nodeValue . length ) ) return r ; for ( ; ; ) { if ( ! n [ 0 ] . block _expand && J ( i ) ) return i ; for ( o = i [ a ] ; o ; o = o [ a ] ) if ( ! ce ( o ) && ! P ( o ) && ! t ( o ) ) return i ; if ( i == s || i . parentNode == s ) { r = i ; break } i = i . parentNode } return r } function o ( e , t ) { for ( t === oe && ( t = 3 === e . nodeTyp
! b ( o ) && ( a = n ( N ) ) ? ( N = a , M . remove ( o ) ) : M . add ( o , M . create ( "br" , { "data-mce-bogus" : "1" } ) ) ) , L . setRng ( N ) } } var g , v , y , C , x , w , E , N , _ , S , k , T , R , A = r . schema . getTextInlineElements ( ) ; "string" != typeof o && ( T = o . merge , R = o . data , o = o . content ) , /^ | $/ . test ( o ) && ( o = a ( o ) ) , g = r . parser , v = new e ( { validate : O . validate } , r . schema ) , k = '<span id="mce_marker" data-mce-type="bookmark">​</span>' , w = { content : o , format : "html" , selection : ! 0 } , r . fire ( "BeforeSetContent" , w ) , o = w . content , - 1 == o . indexOf ( "{$caret}" ) && ( o += "{$caret}" ) , o = o . replace ( /\{\$caret\}/ , k ) , N = L . getRng ( ) ; var B = N . startContainer || ( N . parentElement ? N . parentElement ( ) : null ) , D = r . getBody ( ) ; B === D && L . isCollapsed ( ) && M . isBlock ( D . firstChild ) && h ( D . firstChild ) && M . isEmpty ( D . firstChild ) && ( N = M . createRng ( ) , N . setStart ( D . firstChild , 0 ) , N . setEnd ( D . firstChild , 0 ) , L . setRng ( N ) ) , L . isCollapsed ( ) || ( r . selection . setRng ( r . selection . getRng ( ) ) , r . getDoc ( ) . execCommand ( "Delete" , ! 1 , null ) , c ( ) ) , y = L . getNode ( ) ; var P = { context : y . nodeName . toLowerCase ( ) , data : R } ; if ( x = g . parse ( o , P ) , d ( x ) , _ = x . lastChild , "mce_marker" == _ . attr ( "id" ) ) for ( E = _ , _ = _ . prev ; _ ; _ = _ . walk ( ! 0 ) ) if ( 3 == _ . type || ! M . isBlock ( _ . name ) ) { r . schema . isValidChild ( _ . parent . name , "span" ) && _ . parent . insert ( E , _ , "br" === _ . name ) ; break } if ( r . _selectionOverrides . showBlockCaretContainer ( y ) , P . invalid ) { for ( L . setContent ( k ) , y = L . getNode ( ) , C = r . getBody ( ) , 9 == y . nodeType ? y = _ = C : _ = y ; _ !== C ; ) y = _ , _ = _ . parentNode ; o = y == C ? C . innerHTML : M . getOuterHTML ( y ) , o = v . serialize ( g . parse ( o . replace ( /<span (id="mce_marker"|id=mce_marker).+?<\/span>/i , function ( ) { return v . serialize ( x ) } ) ) ) , y == C ? M . setHTML ( C , o ) : M . setOuterHTML ( y , o ) } else o = v . serialize ( x ) , _ = y . firstChild , S = y . lastChild , ! _ || _ === S && "BR" === _ . nodeName ? M . setHTML ( y , o ) : L . setContent ( o ) ; f ( ) , p ( M . get ( "mce_marker" ) ) , r . fire ( "SetContent" , w ) , r . addVisual ( ) } , mceInsertRawHTML : function ( e , t , n ) { L . setContent ( "tiny_mce_marker" ) , r . setContent ( r . getContent ( ) . replace ( /tiny_mce_marker/g , function ( ) { return n } ) ) } , mceToggleFormat : function ( e , t , n ) { A ( n ) } , mceSetContent : function ( e , t , n ) { r . setContent ( n ) } , "Indent,Outdent" : function ( e ) { var t , n , i ; t = O . indentation , n = /[a-z%]+$/i . exec ( t ) , t = parseInt ( t , 10 ) , C ( "InsertUnorderedList" ) || C ( "InsertOrderedList" ) ? T ( e ) : ( O . forced _root _block || M . getParent ( L . getNode ( ) , M . isBlock ) || P . apply ( "div" ) , u ( L . getSelectedBlocks ( ) , function ( o ) { if ( "false" !== M . getContentEditable ( o ) && "LI" != o . nodeName ) { var a = r . getParam ( "indent_use_margin" , ! 1 ) ? "margin" : "padding" ; a += "rtl" == M . getStyle ( o , "direction" , ! 0 ) ? "Right" : "Left" , "outdent" == e ? ( i = Math . max ( 0 , parseInt ( o . style [ a ] || 0 , 10 ) - t ) , M . setStyle ( o , a , i ? i + n : "" ) ) : ( i = parseInt ( o . style [ a ] || 0 , 10 ) + t + n , M . setStyle ( o , a , i ) ) } } ) ) } , mceRepaint : function ( ) { } , InsertHorizontalRule : function ( ) { r . execCommand ( "mceInsertContent" , ! 1 , "<hr />" ) } , mceToggleVisualAid : function ( ) { r . hasVisual = ! r . hasVisual , r . addVisual ( ) } , mceReplaceContent : function ( e , t , n ) { r . execCommand ( "mceInsertContent" , ! 1 , n . replace ( /\{\$selection\}/g , L . getContent ( { format : "text" } ) ) ) } , mceInsertLink : function ( e , t , n ) { var r ; "string" == typeof n && ( n = { href : n } ) , r = M . getParent ( L . getNode ( ) , "a" ) , n . href = n . href . replace ( " " , "%20" ) , r && n . href || P . remove ( "link" ) , n . href && P . apply ( "link" , n , r ) } , selectAll : function ( ) { var e = M . getRoot ( ) , t ; L . getRng ( ) . setStart ? ( t = M . createRng ( ) , t . setStart ( e , 0 ) , t . setEnd ( e , e . childNodes . length ) , L . setRng ( t ) ) : ( t = L . getRng ( ) , t . item || ( t . moveToElementText ( e ) , t . select ( ) ) ) } , "delete" : function ( ) { T ( "Delete" ) ; var e = r . getBody ( ) ; M . isEmpty ( e ) && ( r . setContent ( "" ) , e . firstChild && M . isBlock ( e . firstChild ) ? r . selection . setCursorLocation ( e . firstChild , 0 ) : r . selection . setCursorLocation ( e , 0 ) ) } , mceNewDocument : function ( ) { r . setContent ( "" ) } , InsertLineBreak : function ( e , t , n ) { function i ( ) { for ( var e = new a ( h , m ) , t , n = r . schema . getNonEmptyElements ( ) ; t = e . next ( ) ; ) if ( n [ t . nodeName . toLowerCase ( ) ] || t . length > 0 ) return ! 0 } var s = n , l , c , u , d = L . getRng ( ! 0 ) ; new o ( M ) . normalize ( d ) ; var f = d . startOffset , h = d . startContainer ; if ( 1 == h . nodeType && h . hasChildNodes ( ) ) { var p = f > h . childNodes . length - 1 ; h = h . childNodes [ Math . min ( f , h . childNodes . length - 1 ) ] || h , f = p && 3 == h . nodeType ? h . nodeValue . length : 0 } var m = M . getParent ( h , M . isBlock ) , y = m ? m . nodeName . toUpperCase ( ) : "" , b = m ? M . getParent ( m . parentNode , M . isBlock ) : null , C = b ? b . nodeName . toUpperCase ( ) : "" , x = s && s . ctrlKey ; "LI" != C || x || ( m = b , y = C ) , h && 3 == h . nodeType && f >= h . nodeValue . length && ( g || i ( ) || ( l = M . create ( "
n . unshift ( e ) ; for ( var r = 0 ; r < n . length && ( t = n [ r ] , ! t . settings . ariaRoot ) ; r ++ ) ; return t } function c ( e ) { var t = l ( e ) , n = s ( t . getEl ( ) ) ; t . settings . ariaRemember && "lastAriaIndex" in t ? u ( t . lastAriaIndex , n ) : u ( 0 , n ) } function u ( e , t ) { return 0 > e ? e = t . length - 1 : e >= t . length && ( e = 0 ) , t [ e ] && t [ e ] . focus ( ) , e } function d ( e , t ) { var n = - 1 , r = l ( ) ; t = t || s ( r . getEl ( ) ) ; for ( var i = 0 ; i < t . length ; i ++ ) t [ i ] === C && ( n = i ) ; n += e , r . lastAriaIndex = u ( n , t ) } function f ( ) { var e = r ( ) ; "tablist" == e ? d ( - 1 , s ( C . parentNode ) ) : x . parent ( ) . submenu ? v ( ) : d ( - 1 ) } function h ( ) { var e = n ( ) , t = r ( ) ; "tablist" == t ? d ( 1 , s ( C . parentNode ) ) : "menuitem" == e && "menu" == t && i ( "haspopup" ) ? y ( ) : d ( 1 ) } function p ( ) { d ( - 1 ) } function m ( ) { var e = n ( ) , t = r ( ) ; "menuitem" == e && "menubar" == t ? y ( ) : "button" == e && i ( "haspopup" ) ? y ( { key : "down" } ) : d ( 1 ) } function g ( e ) { var t = r ( ) ; if ( "tablist" == t ) { var n = s ( x . getEl ( "body" ) ) [ 0 ] ; n && n . focus ( ) } else d ( e . shiftKey ? - 1 : 1 ) } function v ( ) { x . fire ( "cancel" ) } function y ( e ) { e = e || { } , x . fire ( "click" , { target : C , aria : e } ) } var b = e . root , C , x ; try { C = document . activeElement } catch ( w ) { C = document . body } return x = b . getParentCtrl ( C ) , b . on ( "keydown" , function ( e ) { function t ( e , t ) { o ( C ) || "slider" !== n ( C ) && t ( e ) !== ! 1 && e . preventDefault ( ) } if ( ! e . isDefaultPrevented ( ) ) switch ( e . keyCode ) { case 37 : t ( e , f ) ; break ; case 39 : t ( e , h ) ; break ; case 38 : t ( e , p ) ; break ; case 40 : t ( e , m ) ; break ; case 27 : v ( ) ; break ; case 14 : case 13 : case 32 : t ( e , y ) ; break ; case 9 : g ( e ) !== ! 1 && e . preventDefault ( ) } } ) , b . on ( "focusin" , function ( e ) { C = e . target , x = e . control } ) , { focusFirst : c } } } ) , r ( be , [ ge , de , ue , ve , ye , m , g , pe , me ] , function ( e , t , n , r , i , o , a , s , l ) { var c = { } ; return e . extend ( { init : function ( e ) { var n = this ; n . _super ( e ) , e = n . settings , e . fixed && n . state . set ( "fixed" , ! 0 ) , n . _items = new t , n . isRtl ( ) && n . classes . add ( "rtl" ) , n . bodyClasses = new s ( function ( ) { n . state . get ( "rendered" ) && ( n . getEl ( "body" ) . className = this . toString ( ) ) } ) , n . bodyClasses . prefix = n . classPrefix , n . classes . add ( "container" ) , n . bodyClasses . add ( "container-body" ) , e . containerCls && n . classes . add ( e . containerCls ) , n . _layout = r . create ( ( e . layout || "" ) + "layout" ) , n . settings . items ? n . add ( n . settings . items ) : n . add ( n . render ( ) ) , n . _hasBody = ! 0 } , items : function ( ) { return this . _items } , find : function ( e ) { return e = c [ e ] = c [ e ] || new n ( e ) , e . find ( this ) } , add : function ( e ) { var t = this ; return t . items ( ) . add ( t . create ( e ) ) . parent ( t ) , t } , focus : function ( e ) { var t = this , n , r , i ; return e && ( r = t . keyboardNav || t . parents ( ) . eq ( - 1 ) [ 0 ] . keyboardNav ) ? void r . focusFirst ( t ) : ( i = t . find ( "*" ) , t . statusbar && i . add ( t . statusbar . items ( ) ) , i . each ( function ( e ) { return e . settings . autofocus ? ( n = null , ! 1 ) : void ( e . canFocus && ( n = n || e ) ) } ) , n && n . focus ( ) , t ) } , replace : function ( e , t ) { for ( var n , r = this . items ( ) , i = r . length ; i -- ; ) if ( r [ i ] === e ) { r [ i ] = t ; break } i >= 0 && ( n = t . getEl ( ) , n && n . parentNode . removeChild ( n ) , n = e . getEl ( ) , n && n . parentNode . removeChild ( n ) ) , t . parent ( this ) } , create : function ( t ) { var n = this , i , a = [ ] ; return o . isArray ( t ) || ( t = [ t ] ) , o . each ( t , function ( t ) { t && ( t instanceof e || ( "string" == typeof t && ( t = { type : t } ) , i = o . extend ( { } , n . settings . defaults , t ) , t . type = i . type = i . type || t . type || n . settings . defaultType || ( i . defaults ? i . defaults . type : null ) , t = r . create ( i ) ) , a . push ( t ) ) } ) , a } , renderNew : function ( ) { var e = this ; return e . items ( ) . each ( function ( t , n ) { var r ; t . parent ( e ) , t . state . get ( "rendered" ) || ( r = e . getEl ( "body" ) , r . hasChildNodes ( ) && n <= r . childNodes . length - 1 ? a ( r . childNodes [ n ] ) . before ( t . renderHtml ( ) ) : a ( r ) . append ( t . renderHtml ( ) ) , t . postRender ( ) , l . add ( t ) ) } ) , e . _layout . applyClasses ( e . items ( ) . filter ( ":visible" ) ) , e . _lastRect = null , e } , append : function ( e ) { return this . add ( e ) . renderNew ( ) } , prepend : function ( e ) { var t = this ; return t . items ( ) . set ( t . create ( e ) . concat ( t . items ( ) . toArray ( ) ) ) , t . renderNew ( ) } , insert : function ( e , t , n ) { var r = this , i , o , a ; return e = r . create ( e ) , i = r . items ( ) , ! n && t < i . length - 1 && ( t += 1 ) , t >= 0 && t < i . length && ( o = i . slice ( 0 , t ) . toArray ( ) , a = i . slice ( t ) . toArray ( ) , i . set ( o . concat ( e , a ) ) ) , r . renderNew ( ) } , fromJSON : function ( e ) { var t = this ; for ( var n in e ) t . find ( "#" + n ) . value ( e [ n ] ) ; return t } , toJSON : function ( ) { var e = this , t = { } ; return e . find ( "*" ) . each ( function ( e ) { var n = e . name ( ) , r = e . value ( ) ; n && "undefined" != typeof r && ( t [ n ] = r ) } ) , t } , renderHtml : function ( ) { var e = this , t = e . _layout , n = this . settings . role ; return e . preRender ( ) , t . preRender ( e ) , '<div id="' + e . _id + '" class="' + e . classes + '"' + ( n ? ' role="' + this . settings . role + '"' : "" ) + '><div id="' + e . _id + '-body" class="' + e . bodyClasses + ' " >
r . addEventListener ( "DOMAttrModified" , t , ! 1 ) } , this . disconnect = function ( ) { r . removeEventListener ( "DOMSubtreeModified" , e , ! 1 ) , r . removeEventListener ( "DOMNodeInsertedIntoDocument" , e , ! 1 ) , r . removeEventListener ( "DOMNodeInserted" , e , ! 1 ) , r . removeEventListener ( "DOMAttrModified" , t , ! 1 ) } , this . takeRecords = function ( ) { return n } } ) , u . on ( "keydown" , function ( e ) { var t = e . keyCode == Q , n = e . ctrlKey || e . metaKey ; if ( ! h ( e ) && ( t || e . keyCode == J ) ) { var r = u . selection . getRng ( ) , i = r . startContainer , o = r . startOffset ; if ( t && e . shiftKey ) return ; if ( v ( t , r ) ) return void e . preventDefault ( ) ; if ( ! n && r . collapsed && 3 == i . nodeType && ( t ? o < i . data . length : o > 0 ) ) return ; e . preventDefault ( ) , n && u . selection . getSel ( ) . modify ( "extend" , t ? "forward" : "backward" , e . metaKey ? "lineboundary" : "word" ) , y ( t ) } } ) , u . on ( "keypress" , function ( t ) { if ( ! h ( t ) && ! x . isCollapsed ( ) && t . charCode > 31 && ! e . metaKeyPressed ( t ) ) { var n , r , i , o , a , s ; n = u . selection . getRng ( ) , s = String . fromCharCode ( t . charCode ) , t . preventDefault ( ) , r = G ( n . startContainer ) . parents ( ) . filter ( function ( e , t ) { return ! ! u . schema . getTextInlineElements ( ) [ t . nodeName ] } ) , y ( ! 0 ) , r = r . filter ( function ( e , t ) { return ! G . contains ( u . getBody ( ) , t ) } ) , r . length ? ( i = C . createFragment ( ) , r . each ( function ( e , t ) { t = t . cloneNode ( ! 1 ) , i . hasChildNodes ( ) ? ( t . appendChild ( i . firstChild ) , i . appendChild ( t ) ) : ( a = t , i . appendChild ( t ) ) , i . appendChild ( t ) } ) , a . appendChild ( u . getDoc ( ) . createTextNode ( s ) ) , o = C . getParent ( n . startContainer , C . isBlock ) , C . isEmpty ( o ) ? G ( o ) . empty ( ) . append ( i ) : n . insertNode ( i ) , n . setStart ( a . firstChild , 1 ) , n . setEnd ( a . firstChild , 1 ) , u . selection . setRng ( n ) ) : u . selection . setContent ( s ) } } ) , u . addCommand ( "Delete" , function ( ) { y ( ) } ) , u . addCommand ( "ForwardDelete" , function ( ) { y ( ! 0 ) } ) , E || ( u . on ( "dragstart" , function ( e ) { N = x . getRng ( ) , p ( e ) } ) , u . on ( "drop" , function ( e ) { if ( ! h ( e ) ) { var n = m ( e ) ; n && ( e . preventDefault ( ) , l . setEditorTimeout ( u , function ( ) { var r = t . getCaretRangeFromPoint ( e . x , e . y , b ) ; N && ( x . setRng ( N ) , N = null ) , y ( ) , x . setRng ( r ) , g ( n . html ) } ) ) } } ) , u . on ( "cut" , function ( e ) { h ( e ) || ! e . clipboardData || u . selection . isCollapsed ( ) || ( e . preventDefault ( ) , e . clipboardData . clearData ( ) , e . clipboardData . setData ( "text/html" , u . selection . getContent ( ) ) , e . clipboardData . setData ( "text/plain" , u . selection . getContent ( { format : "text" } ) ) , l . setEditorTimeout ( u , function ( ) { y ( ! 0 ) } ) ) } ) ) } function y ( ) { function e ( e ) { var t = Z . create ( "body" ) , n = e . cloneContents ( ) ; return t . appendChild ( n ) , ee . serializer . serialize ( t , { format : "html" } ) } function n ( n ) { if ( ! n . setStart ) { if ( n . item ) return ! 1 ; var r = n . duplicate ( ) ; return r . moveToElementText ( u . getBody ( ) ) , t . compareRanges ( n , r ) } var i = e ( n ) , o = Z . createRng ( ) ; o . selectNode ( u . getBody ( ) ) ; var a = e ( o ) ; return i === a } u . on ( "keydown" , function ( e ) { var t = e . keyCode , r , i ; if ( ! h ( e ) && ( t == Q || t == J ) ) { if ( r = u . selection . isCollapsed ( ) , i = u . getBody ( ) , r && ! Z . isEmpty ( i ) ) return ; if ( ! r && ! n ( u . selection . getRng ( ) ) ) return ; e . preventDefault ( ) , u . setContent ( "" ) , i . firstChild && Z . isBlock ( i . firstChild ) ? u . selection . setCursorLocation ( i . firstChild , 0 ) : u . selection . setCursorLocation ( i , 0 ) , u . nodeChanged ( ) } } ) } function b ( ) { u . shortcuts . add ( "meta+a" , null , "SelectAll" ) } function C ( ) { u . settings . content _editable || Z . bind ( u . getDoc ( ) , "mousedown mouseup" , function ( e ) { var t ; if ( e . target == u . getDoc ( ) . documentElement ) if ( t = ee . getRng ( ) , u . getBody ( ) . focus ( ) , "mousedown" == e . type ) { if ( c . isCaretContainer ( t . startContainer ) ) return ; ee . placeCaretAt ( e . clientX , e . clientY ) } else ee . setRng ( t ) } ) } function x ( ) { u . on ( "keydown" , function ( e ) { if ( ! h ( e ) && e . keyCode === J ) { if ( ! u . getBody ( ) . getElementsByTagName ( "hr" ) . length ) return ; if ( ee . isCollapsed ( ) && 0 === ee . getRng ( ! 0 ) . startOffset ) { var t = ee . getNode ( ) , n = t . previousSibling ; if ( "HR" == t . nodeName ) return Z . remove ( t ) , void e . preventDefault ( ) ; n && n . nodeName && "hr" === n . nodeName . toLowerCase ( ) && ( Z . remove ( n ) , e . preventDefault ( ) ) } } } ) } function w ( ) { window . Range . prototype . getClientRects || u . on ( "mousedown" , function ( e ) { if ( ! h ( e ) && "HTML" === e . target . nodeName ) { var t = u . getBody ( ) ; t . blur ( ) , l . setEditorTimeout ( u , function ( ) { t . focus ( ) } ) } } ) } function E ( ) { u . on ( "click" , function ( e ) { var t = e . target ; /^(IMG|HR)$/ . test ( t . nodeName ) && "false" !== Z . getContentEditableParent ( t ) && ( e . preventDefault ( ) , ee . getSel ( ) . setBaseAndExtent ( t , 0 , t , 1 ) , u . nodeChanged ( ) ) , "A" == t . nodeName && Z . hasClass ( t , "mce-item-anchor" ) && ( e . preventDefault ( ) , ee . select ( t ) ) } ) } function N ( ) { function e ( ) { var e = Z . getAttribs ( ee . getStar
e . range = t } } ) , c . on ( "setSelectionRange" , function ( e ) { var t ; t = K ( e . range ) , t && ( e . range = t ) } ) , c . on ( "focus" , function ( ) { p . setEditorTimeout ( c , function ( ) { c . selection . setRng ( U ( c . selection . getRng ( ) ) ) } , 0 ) } ) , m . init ( c ) } function Y ( ) { var e = c . contentStyles , t = ".mce-content-body" ; e . push ( ne . getCss ( ) ) , e . push ( t + " .mce-offscreen-selection {position: absolute;left: -9999999999px;width: 100px;height: 100px;}" + t + " *[contentEditable=false] {cursor: default;}" + t + " *[contentEditable=true] {cursor: text;}" ) } function X ( e ) { return r . isCaretContainer ( e . startContainer ) || r . isCaretContainer ( e . endContainer ) } function K ( t ) { var n , r = c . $ , i = c . dom , o , a , s , l , u , d , f , h , p ; if ( ! t ) return G ( ) , null ; if ( t . collapsed ) { if ( G ( ) , ! X ( t ) ) { if ( f = M ( 1 , t ) , x ( f . getNode ( ) ) ) return R ( 1 , f . getNode ( ) , ! f . isAtEnd ( ) ) ; if ( x ( f . getNode ( ! 0 ) ) ) return R ( 1 , f . getNode ( ! 0 ) , ! 1 ) } return null } return s = t . startContainer , l = t . startOffset , u = t . endOffset , 3 == s . nodeType && 0 == l && x ( s . parentNode ) && ( s = s . parentNode , l = i . nodeIndex ( s ) , s = s . parentNode ) , 1 != s . nodeType ? ( G ( ) , null ) : ( u == l + 1 && ( n = s . childNodes [ l ] ) , x ( n ) ? ( h = p = n . cloneNode ( ! 0 ) , d = c . fire ( "ObjectSelected" , { target : n , targetClone : h } ) , d . isDefaultPrevented ( ) ? ( G ( ) , null ) : ( h = d . targetClone , o = r ( "#" + re ) , 0 === o . length && ( o = r ( '<div data-mce-bogus="all" class="mce-offscreen-selection"></div>' ) . attr ( "id" , re ) , o . appendTo ( c . getBody ( ) ) ) , t = c . dom . createRng ( ) , h === p && e . ie ? ( o . empty ( ) . append ( g . ZWSP ) . append ( h ) . append ( g . ZWSP ) , t . setStart ( o [ 0 ] . firstChild , 0 ) , t . setEnd ( o [ 0 ] . lastChild , 1 ) ) : ( o . empty ( ) . append ( "\xa0" ) . append ( h ) . append ( "\xa0" ) , t . setStart ( o [ 0 ] . firstChild , 1 ) , t . setEnd ( o [ 0 ] . lastChild , 0 ) ) , o . css ( { top : i . getPos ( n , c . getBody ( ) ) . y } ) , c . getBody ( ) . focus ( ) , o [ 0 ] . focus ( ) , a = c . selection . getSel ( ) , a . removeAllRanges ( ) , a . addRange ( t ) , c . $ ( "*[data-mce-selected]" ) . removeAttr ( "data-mce-selected" ) , n . setAttribute ( "data-mce-selected" , 1 ) , ie = n , t ) ) : ( G ( ) , null ) ) } function G ( ) { ie && ( ie . removeAttribute ( "data-mce-selected" ) , c . $ ( "#" + re ) . remove ( ) , ie = null ) } function J ( ) { ne . destroy ( ) , ie = null } var Q = c . getBody ( ) , Z = new t ( Q ) , ee = b ( v , Z . next ) , te = b ( v , Z . prev ) , ne = new o ( c . getBody ( ) , y ) , re = "sel-" + c . dom . uniqueId ( ) , ie , oe = c . $ ; return e . ceFalse && ( j ( ) , Y ( ) ) , { showBlockCaretContainer : W , destroy : J } } var b = f . curry , C = l . isContentEditableTrue , x = l . isContentEditableFalse , w = l . isElement , E = i . isAfterContentEditableFalse , N = i . isBeforeContentEditableFalse , _ = c . getSelectedNode ; return y } ) , r ( Ge , [ w , g , N , R , A , H , P , Y , J , Q , Z , ee , re , ie , E , d , Te , Me , B , M , Pe , h , m , u , He , Oe , Ie , Ue , Ke ] , function ( e , n , r , i , o , a , s , l , c , u , d , f , h , p , m , g , v , y , b , C , x , w , E , N , _ , S , k , T , R ) { function A ( e , t , i ) { var o = this , a , s , l ; a = o . documentBaseUrl = i . documentBaseURL , s = i . baseURI , l = i . defaultSettings , t = L ( { id : e , theme : "modern" , delta _width : 0 , delta _height : 0 , popup _css : "" , plugins : "" , document _base _url : a , add _form _submit _trigger : ! 0 , submit _patch : ! 0 , add _unload _trigger : ! 0 , convert _urls : ! 0 , relative _urls : ! 0 , remove _script _host : ! 0 , object _resizing : ! 0 , doctype : "<!DOCTYPE html>" , visual : ! 0 , font _size _style _values : "xx-small,x-small,small,medium,large,x-large,xx-large" , font _size _legacy _values : "xx-small,small,medium,large,x-large,xx-large,300%" , forced _root _block : "p" , hidden _input : ! 0 , padd _empty _editor : ! 0 , render _ui : ! 0 , indentation : "30px" , inline _styles : ! 0 , convert _fonts _to _spans : ! 0 , indent : "simple" , indent _before : "p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist" , indent _after : "p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist" , validate : ! 0 , entity _encoding : "named" , url _converter : o . convertURL , url _converter _scope : o , ie7 _compat : ! 0 } , l , t ) , l && l . external _plugins && t . external _plugins && ( t . external _plugins = L ( { } , l . external _plugins , t . external _plugins ) ) , o . settings = t , r . language = t . language || "en" , r . languageLoad = t . language _load , r . baseURL = i . baseURL , o . id = t . id = e , o . setDirty ( ! 1 ) , o . plugins = { } , o . documentBaseURI = new p ( t . document _base _url || a , { base _uri : s } ) , o . baseURI = s , o . contentCSS = [ ] , o . contentStyles = [ ] , o . shortcuts = new k ( o ) , o . loadedCSS = { } , o . editorCommands = new h ( o ) , t . target && ( o . targetElm = t . target ) , o . suffix = i . suffix , o . editorManager = i , o . inline = t . inline , t . cache _suffix
return i + "}" } return "" + t } return { serialize : e , parse : function ( e ) { try { return window [ String . fromCharCode ( 101 ) + "val" ] ( "(" + e + ")" ) } catch ( t ) { } } } } ) , r ( rt , [ nt , tt , m ] , function ( e , t , n ) { function r ( e ) { this . settings = i ( { } , e ) , this . count = 0 } var i = n . extend ; return r . sendRPC = function ( e ) { return ( new r ) . send ( e ) } , r . prototype = { send : function ( n ) { var r = n . error , o = n . success ; n = i ( this . settings , n ) , n . success = function ( t , i ) { t = e . parse ( t ) , "undefined" == typeof t && ( t = { error : "JSON Parse error." } ) , t . error ? r . call ( n . error _scope || n . scope , t . error , i ) : o . call ( n . success _scope || n . scope , t . result ) } , n . error = function ( e , t ) { r && r . call ( n . error _scope || n . scope , e , t ) } , n . data = e . serialize ( { id : n . id || "c" + this . count ++ , method : n . method , params : n . params } ) , n . content _type = "application/json" , t . send ( n ) } } , r } ) , r ( it , [ w ] , function ( e ) { return { callbacks : { } , count : 0 , send : function ( n ) { var r = this , i = e . DOM , o = n . count !== t ? n . count : r . count , a = "tinymce_jsonp_" + o ; r . callbacks [ o ] = function ( e ) { i . remove ( a ) , delete r . callbacks [ o ] , n . callback ( e ) } , i . add ( i . doc . body , "script" , { id : a , src : n . url , type : "text/javascript" } ) , r . count ++ } } } ) , r ( ot , [ ] , function ( ) { function e ( ) { s = [ ] ; for ( var e in a ) s . push ( e ) ; i . length = s . length } function n ( ) { function n ( e ) { var n , r ; return r = e !== t ? u + e : i . indexOf ( "," , u ) , - 1 === r || r > i . length ? null : ( n = i . substring ( u , r ) , u = r + 1 , n ) } var r , i , s , u = 0 ; if ( a = { } , c ) { o . load ( l ) , i = o . getAttribute ( l ) || "" ; do { var d = n ( ) ; if ( null === d ) break ; if ( r = n ( parseInt ( d , 32 ) || 0 ) , null !== r ) { if ( d = n ( ) , null === d ) break ; s = n ( parseInt ( d , 32 ) || 0 ) , r && ( a [ r ] = s ) } } while ( null !== r ) ; e ( ) } } function r ( ) { var t , n = "" ; if ( c ) { for ( var r in a ) t = a [ r ] , n += ( n ? "," : "" ) + r . length . toString ( 32 ) + "," + r + "," + t . length . toString ( 32 ) + "," + t ; o . setAttribute ( l , n ) ; try { o . save ( l ) } catch ( i ) { } e ( ) } } var i , o , a , s , l , c ; try { if ( window . localStorage ) return localStorage } catch ( u ) { } return l = "tinymce" , o = document . documentElement , c = ! ! o . addBehavior , c && o . addBehavior ( "#default#userData" ) , i = { key : function ( e ) { return s [ e ] } , getItem : function ( e ) { return e in a ? a [ e ] : null } , setItem : function ( e , t ) { a [ e ] = "" + t , r ( ) } , removeItem : function ( e ) { delete a [ e ] , r ( ) } , clear : function ( ) { a = { } , r ( ) } } , n ( ) , i } ) , r ( at , [ w , d , E , N , m , h ] , function ( e , t , n , r , i , o ) { var a = window . tinymce ; return a . DOM = e . DOM , a . ScriptLoader = n . ScriptLoader , a . PluginManager = r . PluginManager , a . ThemeManager = r . ThemeManager , a . dom = a . dom || { } , a . dom . Event = t . Event , i . each ( i , function ( e , t ) { a [ t ] = e } ) , i . each ( "isOpera isWebKit isIE isGecko isMac" . split ( " " ) , function ( e ) { a [ e ] = o [ e . substr ( 2 ) . toLowerCase ( ) ] } ) , { } } ) , r ( st , [ oe , m ] , function ( e , t ) { return e . extend ( { Defaults : { firstControlClass : "first" , lastControlClass : "last" } , init : function ( e ) { this . settings = t . extend ( { } , this . Defaults , e ) } , preRender : function ( e ) { e . bodyClasses . add ( this . settings . containerClass ) } , applyClasses : function ( e ) { var t = this , n = t . settings , r , i , o , a ; r = n . firstControlClass , i = n . lastControlClass , e . each ( function ( e ) { e . classes . remove ( r ) . remove ( i ) . add ( n . controlClass ) , e . visible ( ) && ( o || ( o = e ) , a = e ) } ) , o && o . classes . add ( r ) , a && a . classes . add ( i ) } , renderHtml : function ( e ) { var t = this , n = "" ; return t . applyClasses ( e . items ( ) ) , e . items ( ) . each ( function ( e ) { n += e . renderHtml ( ) } ) , n } , recalc : function ( ) { } , postRender : function ( ) { } , isNative : function ( ) { return ! 1 } } ) } ) , r ( lt , [ st ] , function ( e ) { return e . extend ( { Defaults : { containerClass : "abs-layout" , controlClass : "abs-layout-item" } , recalc : function ( e ) { e . items ( ) . filter ( ":visible" ) . each ( function ( e ) { var t = e . settings ; e . layoutRect ( { x : t . x , y : t . y , w : t . w , h : t . h } ) , e . recalc && e . recalc ( ) } ) } , renderHtml : function ( e ) { return '<div id="' + e . _id + '-absend" class="' + e . classPrefix + 'abs-end"></div>' + this . _super ( e ) } } ) } ) , r ( ct , [ Ae ] , function ( e ) { return e . extend ( { Defaults : { classes : "widget btn" , role : "button" } , init : function ( e ) { var t = this , n ; t . _super ( e ) , e = t . settings , n = t . settings . size , t . on ( "click mousedown" , function ( e ) { e . preventDefault ( ) } ) , t . on ( "touchstart" , function ( e ) { t . fire ( "click" , e ) , e . preventDefault ( ) } ) , e . subtype && t . classes . add ( e . subtype ) , n && t . classes . add ( "btn-" + n ) , e . icon && t . icon ( e . icon ) } , icon : function ( e ) { return arguments . length ? ( this . state . set ( "icon" , e ) , this ) : this . state . get ( "icon" ) } , repaint : function ( ) { var e = this . getEl ( ) . firstChild , t ; e && ( t = e . style , t . width = t . height = "100%" ) , this . _super ( ) } , renderHtml : function ( ) { var e = this , t = e . _id , n = e . classPrefix , r = e . state . get ( "icon" ) , i , o = e . state . get ( "text" ) , a = "" ; return i = e . settings . image , i ? ( r = " none
T -= ( d > 0 ? y : 0 ) + N [ d ] ; for ( R = o . innerH - g . top - g . bottom , E = 0 , f = 0 ; n > f ; f ++ ) E += _ [ f ] + ( f > 0 ? b : 0 ) , R -= ( f > 0 ? b : 0 ) + _ [ f ] ; if ( w += g . left + g . right , E += g . top + g . bottom , l = { } , l . minW = w + ( o . w - o . innerW ) , l . minH = E + ( o . h - o . innerH ) , l . contentW = l . minW - o . deltaW , l . contentH = l . minH - o . deltaH , l . minW = Math . min ( l . minW , o . maxW ) , l . minH = Math . min ( l . minH , o . maxH ) , l . minW = Math . max ( l . minW , o . startMinWidth ) , l . minH = Math . max ( l . minH , o . startMinHeight ) , ! o . autoResize || l . minW == o . minW && l . minH == o . minH ) { o . autoResize && ( l = e . layoutRect ( l ) , l . contentW = l . minW - o . deltaW , l . contentH = l . minH - o . deltaH ) ; var D ; D = "start" == t . packV ? 0 : R > 0 ? Math . floor ( R / n ) : 0 ; var M = 0 , L = t . flexWidths ; if ( L ) for ( d = 0 ; d < L . length ; d ++ ) M += L [ d ] ; else M = r ; var P = T / M ; for ( d = 0 ; r > d ; d ++ ) N [ d ] += L ? L [ d ] * P : P ; for ( p = g . top , f = 0 ; n > f ; f ++ ) { for ( h = g . left , s = _ [ f ] + D , d = 0 ; r > d && ( B = A ? f * r + r - 1 - d : f * r + d , u = i [ B ] , u ) ; d ++ ) m = u . settings , c = u . layoutRect ( ) , a = Math . max ( N [ d ] , c . startMinWidth ) , c . x = h , c . y = p , v = m . alignH || ( C ? C [ d ] || C [ 0 ] : null ) , "center" == v ? c . x = h + a / 2 - c . w / 2 : "right" == v ? c . x = h + a - c . w : "stretch" == v && ( c . w = a ) , v = m . alignV || ( x ? x [ d ] || x [ 0 ] : null ) , "center" == v ? c . y = p + s / 2 - c . h / 2 : "bottom" == v ? c . y = p + s - c . h : "stretch" == v && ( c . h = s ) , u . layoutRect ( c ) , h += a + y , u . recalc && u . recalc ( ) ; p += s + b } } else if ( l . w = l . minW , l . h = l . minH , e . layoutRect ( l ) , this . recalc ( e ) , null === e . _lastRect ) { var H = e . parent ( ) ; H && ( H . _lastRect = null , H . recalc ( ) ) } } } ) } ) , r ( Rt , [ Ae , u ] , function ( e , t ) { return e . extend ( { renderHtml : function ( ) { var e = this ; return e . classes . add ( "iframe" ) , e . canFocus = ! 1 , '<iframe id="' + e . _id + '" class="' + e . classes + '" tabindex="-1" src="' + ( e . settings . url || "javascript:''" ) + '" frameborder="0"></iframe>' } , src : function ( e ) { this . getEl ( ) . src = e } , html : function ( e , n ) { var r = this , i = this . getEl ( ) . contentWindow . document . body ; return i ? ( i . innerHTML = e , n && n ( ) ) : t . setTimeout ( function ( ) { r . html ( e ) } ) , this } } ) } ) , r ( At , [ Ae ] , function ( e ) { return e . extend ( { init : function ( e ) { var t = this ; t . _super ( e ) , t . classes . add ( "widget" ) . add ( "infobox" ) , t . canFocus = ! 1 } , severity : function ( e ) { this . classes . remove ( "error" ) , this . classes . remove ( "warning" ) , this . classes . remove ( "success" ) , this . classes . add ( e ) } , help : function ( e ) { this . state . set ( "help" , e ) } , renderHtml : function ( ) { var e = this , t = e . classPrefix ; return '<div id="' + e . _id + '" class="' + e . classes + '"><div id="' + e . _id + '-body">' + e . encode ( e . state . get ( "text" ) ) + '<button role="button" tabindex="-1"><i class="' + t + "ico " + t + 'i-help"></i></button></div></div>' } , bindStates : function ( ) { var e = this ; return e . state . on ( "change:text" , function ( t ) { e . getEl ( "body" ) . firstChild . data = e . encode ( t . value ) , e . state . get ( "rendered" ) && e . updateLayoutRect ( ) } ) , e . state . on ( "change:help" , function ( t ) { e . classes . toggle ( "has-help" , t . value ) , e . state . get ( "rendered" ) && e . updateLayoutRect ( ) } ) , e . _super ( ) } } ) } ) , r ( Bt , [ Ae , fe ] , function ( e , t ) { return e . extend ( { init : function ( e ) { var t = this ; t . _super ( e ) , t . classes . add ( "widget" ) . add ( "label" ) , t . canFocus = ! 1 , e . multiline && t . classes . add ( "autoscroll" ) , e . strong && t . classes . add ( "strong" ) } , initLayoutRect : function ( ) { var e = this , n = e . _super ( ) ; if ( e . settings . multiline ) { var r = t . getSize ( e . getEl ( ) ) ; r . width > n . maxW && ( n . minW = n . maxW , e . classes . add ( "multiline" ) ) , e . getEl ( ) . style . width = n . minW + "px" , n . startMinH = n . h = n . minH = Math . min ( n . maxH , t . getSize ( e . getEl ( ) ) . height ) } return n } , repaint : function ( ) { var e = this ; return e . settings . multiline || ( e . getEl ( ) . style . lineHeight = e . layoutRect ( ) . h + "px" ) , e . _super ( ) } , severity : function ( e ) { this . classes . remove ( "error" ) , this . classes . remove ( "warning" ) , this . classes . remove ( "success" ) , this . classes . add ( e ) } , renderHtml : function ( ) { var e = this , t , n , r = e . settings . forId ; return ! r && ( n = e . settings . forName ) && ( t = e . getRoot ( ) . find ( "#" + n ) [ 0 ] , t && ( r = t . _id ) ) , r ? '<label id="' + e . _id + '" class="' + e . classes + '"' + ( r ? ' for="' + r + '"' : "" ) + ">" + e . encode ( e . state . get ( "text" ) ) + "</label>" : '<span id="' + e . _id + '" class="' + e . classes + '">' + e . encode ( e . state . get ( "text" ) ) + "</span>" } , bindStates : function ( ) { var e = this ; return e . state . on ( "change:text" , function ( t ) { e . innerHtml ( e . encode ( t . value ) ) , e . state . get ( "rendered" ) && e . updateLayoutRect ( ) } ) , e . _super ( ) } } ) } ) , r ( Dt , [ be ] , function ( e ) { return e . extend ( { Defaults : { role : "toolbar" , layout : "flow" } , init : function ( e ) { var t = this ; t . _super ( e ) , t . classes . add ( "toolbar" ) } , postRender : function ( ) { var e = this ; return e . items ( ) . each ( function ( e ) { e . classes . add ( "toolbar-item" ) } ) , e . _super ( ) } } ) } ) , r ( Mt , [ Dt ] , function ( e ) { re