2016-02-19 20:19:26 +01:00
// 4.3.4 (2016-02-11)
! 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/EditorCommands" , ne = "tinymce/util/URI" , re = "tinymce/util/Class" , ie = "tinymce/util/EventDispatcher" , oe = "tinymce/data/Binding" , ae = "tinymce/util/Observable" , se = "tinymce/data/ObservableObject" , le = "tinymce/ui/Selector" , ce = "tinymce/ui/Collection" , ue = "tinymce/ui/DomUtils" , de = "tinymce/ui/BoxUtils" , fe = "tinymce/ui/ClassList" , he = "tinymce/ui/ReflowQueue" , pe = "tinymce/ui/Control" , me = "tinymce/ui/Factory" , ge = "tinymce/ui/KeyboardNavigation" , ve = "tinymce/ui/Container" , ye = "tinymce/ui/DragHelper" , be = "tinymce/ui/Scrollable" , Ce = "tinymce/ui/Panel" , xe = "tinymce/ui/Movable" , we = "tinymce/ui/Resizable" , Ee = "tinymce/ui/FloatPanel" , Ne = "tinymce/ui/Window" , _e = "tinymce/ui/MessageBox" , Se = "tinymce/WindowManager" , ke = "tinymce/ui/Tooltip" , Te = "tinymce/ui/Widget" , Re = "tinymce/ui/Progress" , Ae = "tinymce/ui/Notification" , Be = "tinymce/NotificationManager" , De = "tinymce/dom/NodePath" , Me = "tinymce/util/Quirks" , Le = "tinymce/EditorObservable" , Pe = "tinymce/Mode" , He = "tinymce/Shortcuts" , Oe = "tinymce/file/Uploader" , Ie = "tinymce/file/Conversions" , Fe = "tinymce/file/ImageScanner" , ze = "tinymce/file/BlobCache" , We = "tinymce/EditorUpload" , Ve = "tinymce/caret/CaretUtils" , Ue = "tinymce/caret/CaretWalker" , $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
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 , n , r ) { var i ; if ( a ( t ) ) t = l ( t , v ( e [ 0 ] ) ) ; else if ( t . length && ! t . nodeType ) { if ( t = f . makeArray ( t ) , r ) for ( i = t . length - 1 ; i >= 0 ; i -- ) c ( e , t [
} , 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 this . $$ ( e ) . hasClass ( t ) } , toggleClass : function ( e , t , r ) { this . $$ ( e ) . toggleClass ( t , r ) . each ( function ( ) { "" === this . classN
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 ] } ) , y . img . attributesDefault = [ { name : "alt" , value : "" } ] , 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 s ( e , t , n , r , o ) { var a , s , l = /[\s\u0000-\u001F]+/g ; if ( t = t . toLowe
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 ] ) ) ? ! 0 : ! 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 . setEnd ( r , 1 ) , a = o . clone ( n . getBoundingClientRect ( ) ) , i . removeChild ( r ) , a } function n ( e ) { var n , r ; return r = e . getClientRects ( ) , n = r . length > 0 ? o . clone ( r [ 0 ] ) : o . clone ( e . getBoundingClientRect ( ) ) , y ( e ) && 0 === n . left ? t ( e ) : n } function r ( e , t ) { return e = o . collapse ( e , t ) , e . width = 1 , e . right = e . left + 1 , e } function i ( e ) { 0 !== e . height && ( c . length > 0 && o . is
} } , null , e ) } ) } ) } var h = m ( e ) , p = h [ 0 ] , g , v , b = ! 0 ; if ( n ) return void ( n . nodeType ? ( v = j . createRng ( ) , v . setStartBefore ( n ) , v . setEndAfter ( n ) , f ( v ) ) : f ( n ) ) ; if ( "false" !== oe ( Y . getNode ( ) ) ) Y . isCollapsed ( ) && p . inline && ! j . select ( "td[data-mce-selected],th[data-mce-selected]" ) . length ? U ( "remove" , e , t , r ) : ( g = Y . getBookmark ( ) , f ( Y . getRng ( ne ) ) , Y . moveToBookmark ( g ) , p . inline && N ( e , t , Y . getStart ( ) ) && $ ( Y . getRng ( ! 0 ) ) , s . nodeChanged ( ) ) ; else { n = Y . getNode ( ) ; for ( var C = 0 , x = h . length ; x > C && ( ! h [ C ] . ceFalseOverride || ! I ( h [ C ] , t , n , n ) ) ; C ++ ) ; } } function w ( e , t , n ) { var r = m ( e ) ; ! N ( e , t , n ) || "toggle" in r [ 0 ] && ! r [ 0 ] . toggle ? C ( e , t , n ) : x ( e , t , n ) } function E ( 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 === ie ) { for ( o in s ) if ( s . hasOwnProperty ( o ) ) { if ( a = "attributes" === i ? j . getAttrib ( e , o ) : B ( e , o ) , r && ! a && ! t . exact ) return ; if ( ( ! r || t . exact ) && ! A ( a , D ( M ( s [ o ] , n ) , o ) ) ) return } } else for ( l = 0 ; l < s . length ; l ++ ) if ( "attributes" === i ? j . getAttrib ( e , s [ l ] ) : B ( 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 ] , R ( e , a ) && i ( e , a , "attributes" ) && i ( e , a , "styles" ) ) { if ( l = a . classes ) for ( s = 0 ; s < l . length ; s ++ ) if ( ! j . hasClass ( e , l [ s ] ) ) return ; return a } } function N ( e , t , n ) { function r ( n ) { var r = j . getRoot ( ) ; return n === r ? ! 1 : ( n = j . getParent ( n , function ( n ) { return n . parentNode === r || ! ! E ( n , e , t , ! 0 ) } ) , E ( n , e , t ) ) } var i ; return n ? r ( n ) : ( n = Y . getNode ( ) , r ( n ) ? ne : ( i = Y . getStart ( ) , i != n && r ( i ) ? ne : te ) ) } function _ ( e , t ) { var n , r = [ ] , i = { } ; return n = Y . getStart ( ) , j . getParent ( n , function ( n ) { var o , a ; for ( o = 0 ; o < e . length ; o ++ ) a = e [ o ] , ! i [ a ] && E ( n , a , t ) && ( i [ a ] = ! 0 , r . push ( a ) ) } , j . getRoot ( ) ) , r } function S ( e ) { var t = m ( e ) , n , r , i , o , a ; if ( t ) for ( n = Y . getStart ( ) , r = d ( n ) , o = t . length - 1 ; o >= 0 ; o -- ) { if ( a = t [ o ] . selector , ! a || t [ o ] . defaultBlock ) return ne ; for ( i = r . length - 1 ; i >= 0 ; i -- ) if ( j . is ( r [ i ] , a ) ) return ne } return te } function k ( e , t , n ) { var r ; return re || ( re = { } , 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" ) } ) , ce ( re , function ( e , i ) { ce ( t , function ( o ) { return E ( o , i , { } , e . similar ) ? ( r [ i ] || ( ce ( e , function ( e ) { e ( ! 0 , { node : o , format : i , parents : t } ) } ) , r [ i ] = e ) , n [ i ] = e , ! 1 ) : void 0 } ) } ) , ce ( r , function ( i , o ) { n [ o ] || ( delete r [ o ] , ce ( i , function ( n ) { n ( ! 1 , { node : e . element , format : o , parents : t } ) } ) ) } ) } ) ) , ce ( e . split ( "," ) , function ( e ) { re [ e ] || ( re [ e ] = [ ] , re [ e ] . similar = n ) , re [ e ] . push ( t ) } ) , this } function T ( e ) { return o . getCssText ( s , e ) } function R ( e , t ) { return A ( e , t . inline ) ? ne : A ( e , t . block ) ? ne : t . selector ? 1 == e . nodeType && j . is ( e , t . selector ) : void 0 } function A ( e , t ) { return e = e || "" , t = t || "" , e = "" + ( e . nodeName || e ) , t = "" + ( t . nodeName || t ) , e . toLowerCase ( ) == t . toLowerCase ( ) } function B ( e , t ) { return D ( j . getStyle ( e , t ) , t ) } function D ( e , t ) { return ( "color" == t || "backgroundColor" == t ) && ( e = j . toHex ( e ) ) , "fontWeight" == t && 700 == e && ( e = "bold" ) , "fontFamily" == t && ( e = e . replace ( /[\'\"]/g , "" ) . replace ( /,\s+/g , "," ) ) , "" + e } function M ( e , t ) { return "string" != typeof e ? e = e ( t ) : t && ( e = e . replace ( /%(\w+)/g , function ( e , n ) { return t [ n ] || e } ) ) , e } function L ( e ) { return e && 3 === e . nodeType && /^([\t \r\n]+|)$/ . test ( e . nodeValue ) } function P ( e , t , n ) { var r = j . create ( t , n ) ; return e . parentNode . insertBefore ( r , e ) , r . appendChild ( e ) , r } function H ( 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 = j . getRoot ( ) , 3 == r . nodeType && ! L ( r ) && ( e ? v > 0 : b < r . nodeValue . length ) ) return r ; for ( ; ; ) { if ( ! n [ 0 ] . block _expand && G ( i ) ) return i ; for ( o = i [ a ] ; o ; o = o [ a ] ) if ( ! le ( o ) && ! L ( 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 === ie && ( t = 3 === e . nodeType ? e . length : e . childNodes . length ) ; e && e . hasChildNodes ( ) ; ) e = e . childNodes [ t ] , e && ( t = 3 === e . nodeType ? e . length : e . childNodes . length ) ; return { node : e , offset : t } } function a ( e ) { for ( var t = e ; t ; ) { if ( 1 === t . nodeType && oe ( t ) ) return "false" === oe ( t ) ? t : e ; t = t . parentNode } return e } function c ( t , n , i ) { function o ( e , t ) { var n , o , a = e . nodeValue ; return "undefined" == typeof t && ( t = i ? a . length : 0 ) , i ? ( n = a . lastIndexOf ( " " , t ) , o = a . lastIndexOf ( "\xa0" , t ) , n = n > o ? n : o , - 1 === n || r || n ++ ) : ( n = a . indexOf ( " " , t ) , o = a . indexOf ( "\xa0" , t ) , n = - 1 !== n && ( - 1 === o || o > n ) ? n : o ) , n } var a , l , c , u ; if ( 3 === t . nodeType ) { if ( c = o ( t , n ) , - 1 !== c ) return { container : t , offset : c } ; u = t } for ( a = new e ( t , j . getParent ( t , G ) || s . getBody ( ) )
return ! ! D . matchNode ( e , t ) } ) ; return - 1 !== u ( r , p ) } , "Bold,Italic,Underline,Strikethrough,Superscript,Subscript" : function ( e ) { return S ( e ) } , mceBlockQuote : function ( ) { return S ( "blockquote" ) } , Outdent : function ( ) { var e ; if ( L . inline _styles ) { if ( ( e = A . getParent ( B . getStart ( ) , A . isBlock ) ) && parseInt ( e . style . paddingLeft , 10 ) > 0 ) return p ; if ( ( e = A . getParent ( B . getEnd ( ) , A . isBlock ) ) && parseInt ( e . style . paddingLeft , 10 ) > 0 ) return p } return v ( "InsertUnorderedList" ) || v ( "InsertOrderedList" ) || ! L . inline _styles && ! ! A . getParent ( B . getNode ( ) , "BLOCKQUOTE" ) } , "InsertUnorderedList,InsertOrderedList" : function ( e ) { var t = A . getParent ( B . getNode ( ) , "ul,ol" ) ; return t && ( "insertunorderedlist" === e && "UL" === t . tagName || "insertorderedlist" === e && "OL" === t . tagName ) } } , "state" ) , b ( { "FontSize,FontName" : function ( e ) { var t = 0 , n ; return ( n = A . getParent ( B . getNode ( ) , "span" ) ) && ( t = "fontsize" == e ? n . style . fontSize : n . style . fontFamily . replace ( /, /g , "," ) . replace ( /[\'\"]/g , "" ) . toLowerCase ( ) ) , t } } , "value" ) , b ( { Undo : function ( ) { r . undoManager . undo ( ) } , Redo : function ( ) { r . undoManager . redo ( ) } } ) } } ) , r ( ne , [ m ] , function ( e ) { function t ( e , o ) { var a = this , s , l ; if ( e = r ( e ) , o = a . settings = o || { } , s = o . base _uri , /^([\w\-]+):([^\/]{2})/i . test ( e ) || /^\s*#/ . test ( e ) ) return void ( a . source = e ) ; var c = 0 === e . indexOf ( "//" ) ; 0 !== e . indexOf ( "/" ) || c || ( e = ( s ? s . protocol || "http" : "http" ) + "://mce_host" + e ) , /^[\w\-]*:?\/\// . test ( e ) || ( l = o . base _uri ? o . base _uri . path : new t ( location . href ) . directory , "" === o . base _uri . protocol ? e = "//mce_host" + a . toAbsPath ( l , e ) : ( e = /([^#?]*)([#?]?.*)/ . exec ( e ) , e = ( s && s . protocol || "http" ) + "://mce_host" + a . toAbsPath ( l , e [ 1 ] ) + e [ 2 ] ) ) , e = e . replace ( /@@/g , "(mce_at)" ) , e = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ . exec ( e ) , n ( i , function ( t , n ) { var r = e [ n ] ; r && ( r = r . replace ( /\(mce_at\)/g , "@@" ) ) , a [ t ] = r } ) , s && ( a . protocol || ( a . protocol = s . protocol ) , a . userInfo || ( a . userInfo = s . userInfo ) , a . port || "mce_host" !== a . host || ( a . port = s . port ) , a . host && "mce_host" !== a . host || ( a . host = s . host ) , a . source = "" ) , c && ( a . protocol = "" ) } var n = e . each , r = e . trim , i = "source protocol authority userInfo user password host port relative path directory file query anchor" . split ( " " ) , o = { ftp : 21 , http : 80 , https : 443 , mailto : 25 } ; return t . prototype = { setPath : function ( e ) { var t = this ; e = /^(.*?)\/?(\w+)?$/ . exec ( e ) , t . path = e [ 0 ] , t . directory = e [ 1 ] , t . file = e [ 2 ] , t . source = "" , t . getURI ( ) } , toRelative : function ( e ) { var n = this , r ; if ( "./" === e ) return e ; if ( e = new t ( e , { base _uri : n } ) , "mce_host" != e . host && n . host != e . host && e . host || n . port != e . port || n . protocol != e . protocol && "" !== e . protocol ) return e . getURI ( ) ; var i = n . getURI ( ) , o = e . getURI ( ) ; return i == o || "/" == i . charAt ( i . length - 1 ) && i . substr ( 0 , i . length - 1 ) == o ? i : ( r = n . toRelPath ( n . path , e . path ) , e . query && ( r += "?" + e . query ) , e . anchor && ( r += "#" + e . anchor ) , r ) } , toAbsolute : function ( e , n ) { return e = new t ( e , { base _uri : this } ) , e . getURI ( n && this . isSameOrigin ( e ) ) } , isSameOrigin : function ( e ) { if ( this . host == e . host && this . protocol == e . protocol ) { if ( this . port == e . port ) return ! 0 ; var t = o [ this . protocol ] ; if ( t && ( this . port || t ) == ( e . port || t ) ) return ! 0 } return ! 1 } , toRelPath : function ( e , t ) { var n , r = 0 , i = "" , o , a ; if ( e = e . substring ( 0 , e . lastIndexOf ( "/" ) ) , e = e . split ( "/" ) , n = t . split ( "/" ) , e . length >= n . length ) for ( o = 0 , a = e . length ; a > o ; o ++ ) if ( o >= n . length || e [ o ] != n [ o ] ) { r = o + 1 ; break } if ( e . length < n . length ) for ( o = 0 , a = n . length ; a > o ; o ++ ) if ( o >= e . length || e [ o ] != n [ o ] ) { r = o + 1 ; break } if ( 1 === r ) return t ; for ( o = 0 , a = e . length - ( r - 1 ) ; a > o ; o ++ ) i += "../" ; for ( o = r - 1 , a = n . length ; a > o ; o ++ ) i += o != r - 1 ? "/" + n [ o ] : n [ o ] ; return i } , toAbsPath : function ( e , t ) { var r , i = 0 , o = [ ] , a , s ; for ( a = /\/$/ . test ( t ) ? "/" : "" , e = e . split ( "/" ) , t = t . split ( "/" ) , n ( e , function ( e ) { e && o . push ( e ) } ) , e = o , r = t . length - 1 , o = [ ] ; r >= 0 ; r -- ) 0 !== t [ r ] . length && "." !== t [ r ] && ( ".." !== t [ r ] ? i > 0 ? i -- : o . push ( t [ r ] ) : i ++ ) ; return r = e . length - i , s = 0 >= r ? o . reverse ( ) . join ( "/" ) : e . slice ( 0 , r ) . join ( "/" ) + "/" + o . reverse ( ) . join ( "/" ) , 0 !== s . indexOf ( "/" ) && ( s = "/" + s ) , a && s . lastIndexOf ( "/" ) !== s . length - 1 && ( s += a ) , s } , getURI : function ( e ) { var t , n = this ; return ( ! n . source || e ) && ( t = "" , e || ( t += n . protocol ? n . protocol + "://" : "//" , n . userInfo && ( t += n . userInfo + "@" ) , n . host && ( t += n . host ) , n . port && ( t += ":" + n . port ) ) , n . path && ( t += n . path ) , n . query && ( t += "?" + n . query ) , n . anchor && ( t += "#" + n . anchor ) , n . source = t ) , n . source
l = c ( t . offsetHeight , n . offsetHeight ) , { width : o > r ? i : r , height : l > a ? s : a } } function n ( e ) { var t , n ; if ( e . changedTouches ) for ( t = "screenX screenY pageX pageY clientX clientY" . split ( " " ) , n = 0 ; n < t . length ; n ++ ) e [ t [ n ] ] = e . changedTouches [ 0 ] [ t [ n ] ] } return function ( r , i ) { function o ( ) { return s . getElementById ( i . handle || r ) } var a , s = i . document || document , l , c , u , d , f , h ; i = i || { } , c = function ( r ) { var c = t ( s ) , p , m ; n ( r ) , r . preventDefault ( ) , l = r . button , p = o ( ) , f = r . screenX , h = r . screenY , m = window . getComputedStyle ? window . getComputedStyle ( p , null ) . getPropertyValue ( "cursor" ) : p . runtimeStyle . cursor , a = e ( "<div>" ) . css ( { position : "absolute" , top : 0 , left : 0 , width : c . width , height : c . height , zIndex : 2147483647 , opacity : 1e-4 , cursor : m } ) . appendTo ( s . body ) , e ( s ) . on ( "mousemove touchmove" , d ) . on ( "mouseup touchend" , u ) , i . start ( r ) } , d = function ( e ) { return n ( e ) , e . button !== l ? u ( e ) : ( e . deltaX = e . screenX - f , e . deltaY = e . screenY - h , e . preventDefault ( ) , void i . drag ( e ) ) } , u = function ( t ) { n ( t ) , e ( s ) . off ( "mousemove touchmove" , d ) . off ( "mouseup touchend" , u ) , a . remove ( ) , i . stop && i . stop ( t ) } , this . destroy = function ( ) { e ( o ( ) ) . off ( ) } , e ( o ( ) ) . on ( "mousedown touchstart" , c ) } } ) , r ( be , [ g , ye ] , function ( e , t ) { return { init : function ( ) { var e = this ; e . on ( "repaint" , e . renderScroll ) } , renderScroll : function ( ) { function n ( ) { function t ( t , a , s , l , c , u ) { var d , f , h , p , m , g , v , y , b ; if ( f = i . getEl ( "scroll" + t ) ) { if ( y = a . toLowerCase ( ) , b = s . toLowerCase ( ) , e ( i . getEl ( "absend" ) ) . css ( y , i . layoutRect ( ) [ l ] - 1 ) , ! c ) return void e ( f ) . css ( "display" , "none" ) ; e ( f ) . css ( "display" , "block" ) , d = i . getEl ( "body" ) , h = i . getEl ( "scroll" + t + "t" ) , p = d [ "client" + s ] - 2 * o , p -= n && r ? f [ "client" + u ] : 0 , m = d [ "scroll" + s ] , g = p / m , v = { } , v [ y ] = d [ "offset" + a ] + o , v [ b ] = p , e ( f ) . css ( v ) , v = { } , v [ y ] = d [ "scroll" + a ] * g , v [ b ] = p * g , e ( h ) . css ( v ) } } var n , r , a ; a = i . getEl ( "body" ) , n = a . scrollWidth > a . clientWidth , r = a . scrollHeight > a . clientHeight , t ( "h" , "Left" , "Width" , "contentW" , n , "Height" ) , t ( "v" , "Top" , "Height" , "contentH" , r , "Width" ) } function r ( ) { function n ( n , r , a , s , l ) { var c , u = i . _id + "-scroll" + n , d = i . classPrefix ; e ( i . getEl ( ) ) . append ( '<div id="' + u + '" class="' + d + "scrollbar " + d + "scrollbar-" + n + '"><div id="' + u + 't" class="' + d + 'scrollbar-thumb"></div></div>' ) , i . draghelper = new t ( u + "t" , { start : function ( ) { c = i . getEl ( "body" ) [ "scroll" + r ] , e ( "#" + u ) . addClass ( d + "active" ) } , drag : function ( e ) { var t , u , d , f , h = i . layoutRect ( ) ; u = h . contentW > h . innerW , d = h . contentH > h . innerH , f = i . getEl ( "body" ) [ "client" + a ] - 2 * o , f -= u && d ? i . getEl ( "scroll" + n ) [ "client" + l ] : 0 , t = f / i . getEl ( "body" ) [ "scroll" + a ] , i . getEl ( "body" ) [ "scroll" + r ] = c + e [ "delta" + s ] / t } , stop : function ( ) { e ( "#" + u ) . removeClass ( d + "active" ) } } ) } i . classes . add ( "scroll" ) , n ( "v" , "Top" , "Height" , "Y" , "Width" ) , n ( "h" , "Left" , "Width" , "X" , "Height" ) } var i = this , o = 2 ; i . settings . autoScroll && ( i . _hasScroll || ( i . _hasScroll = ! 0 , r ( ) , i . on ( "wheel" , function ( e ) { var t = i . getEl ( "body" ) ; t . scrollLeft += 10 * ( e . deltaX || 0 ) , t . scrollTop += 10 * e . deltaY , n ( ) } ) , e ( i . getEl ( "body" ) ) . on ( "scroll" , n ) ) , n ( ) ) } } } ) , r ( Ce , [ ve , be ] , function ( e , t ) { return e . extend ( { Defaults : { layout : "fit" , containerCls : "panel" } , Mixins : [ t ] , renderHtml : function ( ) { var e = this , t = e . _layout , n = e . settings . html ; return e . preRender ( ) , t . preRender ( e ) , "undefined" == typeof n ? n = '<div id="' + e . _id + '-body" class="' + e . bodyClasses + '">' + t . renderHtml ( e ) + "</div>" : ( "function" == typeof n && ( n = n . call ( e ) ) , e . _hasBody = ! 1 ) , '<div id="' + e . _id + '" class="' + e . classes + '" hidefocus="1" tabindex="-1" role="group">' + ( e . _preBodyHtml || "" ) + n + "</div>" } } ) } ) , r ( xe , [ ue ] , function ( e ) { function t ( t , n , r ) { var i , o , a , s , l , c , u , d , f , h ; return f = e . getViewPort ( ) , o = e . getPos ( n ) , a = o . x , s = o . y , t . state . get ( "fixed" ) && "static" == e . getRuntimeStyle ( document . body , "position" ) && ( a -= f . x , s -= f . y ) , i = t . getEl ( ) , h = e . getSize ( i ) , l = h . width , c = h . height , h = e . getSize ( n ) , u = h . width , d = h . height , r = ( r || "" ) . split ( "" ) , "b" === r [ 0 ] && ( s += d ) , "r" === r [ 1 ] && ( a += u ) , "c" === r [ 0 ] && ( s += Math . round ( d / 2 ) ) , "c" === r [ 1 ] && ( a += Math . round ( u / 2 ) ) , "b" === r [ 3 ] && ( s -= c ) , "r" === r [ 4 ] && ( a -= l ) , "c" === r [ 3 ] && ( s -= Math . round ( c / 2 ) ) , "c" === r [ 4 ] && ( a -= Math . round ( l / 2 ) ) , { x : a , y : s , w : l , h : c } } return { testMoveRel : function ( n , r ) { for ( var i = e . getViewPort ( ) , o = 0 ; o < r . length ; o ++ ) { var a = t ( this , n , r [ o ] ) ; if ( this . state . get ( "fixed" ) ) { if ( a . x > 0 && a . x + a . w < i . w && a . y > 0 && a . y + a . h < i . h ) return r [ o ] } else if ( a . x > i . x && a . x + a . w < i . w + i . x && a . y > i . y && a . y + a . h < i . h + i . y ) return r [ o ] } return r [ 0 ] } , moveRel : function ( e , n ) { "string" != typeof n && ( n = this . testMoveRel ( e , n ) ) ; var r
( e = J . getStyle ( t , "height" ) ) && ( J . setAttrib ( t , "height" , e . replace ( /[^0-9%]+/g , "" ) ) , J . setStyle ( t , "height" , "" ) ) ) } ) } function R ( ) { u . on ( "keydown" , function ( t ) { var n , r , i , o , a ; if ( ! h ( t ) && t . keyCode == e . BACKSPACE && ( n = Q . getRng ( ) , r = n . startContainer , i = n . startOffset , o = J . getRoot ( ) , a = r , n . collapsed && 0 === i ) ) { for ( ; a && a . parentNode && a . parentNode . firstChild == a && a . parentNode != o ; ) a = a . parentNode ; "BLOCKQUOTE" === a . tagName && ( u . formatter . toggle ( "blockquote" , null , a ) , n = J . createRng ( ) , n . setStart ( r , 0 ) , n . setEnd ( r , 0 ) , Q . setRng ( n ) ) } } ) } function A ( ) { function e ( ) { u . _refreshContentEditable ( ) , d ( "StyleWithCSS" , ! 1 ) , d ( "enableInlineTableEditing" , ! 1 ) , Z . object _resizing || d ( "enableObjectResizing" , ! 1 ) } Z . readonly || u . on ( "BeforeExecCommand MouseDown" , e ) } function B ( ) { function e ( ) { Y ( J . select ( "a" ) , function ( e ) { var t = e . parentNode , n = J . getRoot ( ) ; if ( t . lastChild === e ) { for ( ; t && ! J . isBlock ( t ) ; ) { if ( t . parentNode . lastChild !== t || t === n ) return ; t = t . parentNode } J . add ( t , "br" , { "data-mce-bogus" : 1 } ) } } ) } u . on ( "SetContent ExecCommand" , function ( t ) { ( "setcontent" == t . type || "mceInsertLink" === t . command ) && e ( ) } ) } function D ( ) { Z . forced _root _block && u . on ( "init" , function ( ) { d ( "DefaultParagraphSeparator" , Z . forced _root _block ) } ) } function M ( ) { u . on ( "keydown" , function ( e ) { var t ; h ( e ) || e . keyCode != K || ( t = u . getDoc ( ) . selection . createRange ( ) , t && t . item && ( e . preventDefault ( ) , u . undoManager . beforeChange ( ) , J . remove ( t . item ( 0 ) ) , u . undoManager . add ( ) ) ) } ) } function L ( ) { var e ; f ( ) >= 10 && ( e = "" , Y ( "p div h1 h2 h3 h4 h5 h6" . split ( " " ) , function ( t , n ) { e += ( n > 0 ? "," : "" ) + t + ":empty" } ) , u . contentStyles . push ( e + "{padding-right: 1px !important}" ) ) } function P ( ) { f ( ) < 9 && ( ee . addNodeFilter ( "noscript" , function ( e ) { for ( var t = e . length , n , r ; t -- ; ) n = e [ t ] , r = n . firstChild , r && n . attr ( "data-mce-innertext" , r . value ) } ) , te . addNodeFilter ( "noscript" , function ( e ) { for ( var t = e . length , n , r , a ; t -- ; ) n = e [ t ] , r = e [ t ] . firstChild , r ? r . value = o . decode ( r . value ) : ( a = n . attributes . map [ "data-mce-innertext" ] , a && ( n . attr ( "data-mce-innertext" , null ) , r = new i ( "#text" , 3 ) , r . value = a , r . raw = ! 0 , n . append ( r ) ) ) } ) ) } function H ( ) { function e ( e , t ) { var n = i . createTextRange ( ) ; try { n . moveToPoint ( e , t ) } catch ( r ) { n = null } return n } function t ( t ) { var r ; t . button ? ( r = e ( t . x , t . y ) , r && ( r . compareEndPoints ( "StartToStart" , a ) > 0 ? r . setEndPoint ( "StartToStart" , a ) : r . setEndPoint ( "EndToEnd" , a ) , r . select ( ) ) ) : n ( ) } function n ( ) { var e = r . selection . createRange ( ) ; a && ! e . item && 0 === e . compareEndPoints ( "StartToEnd" , e ) && a . select ( ) , J . unbind ( r , "mouseup" , n ) , J . unbind ( r , "mousemove" , t ) , a = o = 0 } var r = J . doc , i = r . body , o , a , s ; r . documentElement . unselectable = ! 0 , J . bind ( r , "mousedown contextmenu" , function ( i ) { if ( "HTML" === i . target . nodeName ) { if ( o && n ( ) , s = r . documentElement , s . scrollHeight > s . clientHeight ) return ; o = 1 , a = e ( i . x , i . y ) , a && ( J . bind ( r , "mouseup" , n ) , J . bind ( r , "mousemove" , t ) , J . getRoot ( ) . focus ( ) , a . select ( ) ) } } ) } function O ( ) { u . on ( "keyup focusin mouseup" , function ( t ) { 65 == t . keyCode && e . metaKeyPressed ( t ) || Q . normalize ( ) } , ! 0 ) } function I ( ) { u . contentStyles . push ( "img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}" ) } function F ( ) { u . inline || u . on ( "keydown" , function ( ) { document . activeElement == document . body && u . getWin ( ) . focus ( ) } ) } function z ( ) { u . inline || ( u . contentStyles . push ( "body {min-height: 150px}" ) , u . on ( "click" , function ( e ) { var t ; if ( "HTML" == e . target . nodeName ) { if ( a . ie > 11 ) return void u . getBody ( ) . focus ( ) ; t = u . selection . getRng ( ) , u . getBody ( ) . focus ( ) , u . selection . setRng ( t ) , u . selection . normalize ( ) , u . nodeChanged ( ) } } ) ) } function W ( ) { a . mac && u . on ( "keydown" , function ( t ) { ! e . metaKeyPressed ( t ) || t . shiftKey || 37 != t . keyCode && 39 != t . keyCode || ( t . preventDefault ( ) , u . selection . getSel ( ) . modify ( "move" , 37 == t . keyCode ? "backward" : "forward" , "lineboundary" ) ) } ) } function V ( ) { d ( "AutoUrlDetect" , ! 1 ) } function U ( ) { u . on ( "click" , function ( e ) { var t = e . target ; do if ( "A" === t . tagName ) return void e . preventDefault ( ) ; while ( t = t . parentNode ) } ) , u . contentStyles . push ( ".mce-content-body {-webkit-touch-callout: none}" ) } function $ ( ) { u . on ( "init" , function ( ) { u . dom . bind ( u . getBody ( ) , "submit" , function ( e ) { e . preventDefault ( ) } ) } ) } function q ( ) { ee . addNodeFilter ( "br" , function ( e ) { for ( var t = e . length ; t -- ; ) "Apple-interchange-newline" == e [ t ] . attr ( "class" ) && e [ t ] . remove ( ) } ) } function j ( ) { u . on ( "dragstart" , function ( e ) { p ( e ) } ) , u . on ( "drop" , function ( e ) { if ( ! h ( e ) ) { var n = m ( e ) ; if ( n && n . id != u
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 && ( w . cacheSuffix = t . cache _suffix . replace ( /^[\?\&]+/ , "" ) ) , t . override _viewport === ! 1 && ( w . overrideViewPort = ! 1 ) , i . fire ( "SetupEditor" , o ) , o . execCallback ( "setup" , o ) , o . $ = n . overrideDefaults ( function ( ) { return { context : o . inline ? o . getBody ( ) : o . getDoc ( ) , element : o . getBody ( ) } } ) } var B = e . DOM , D = r . ThemeManager , M = r . PluginManager , L = E . extend , P = E . each , H = E . explode , O = E . inArray , I = E . trim , F = E . resolve , z = g . Event , W = w . gecko , V = w . ie ; return A . prototype = { render : function ( ) { function e ( ) { B . unbind ( window , "ready" , e ) , n . render ( ) } function t ( ) { var e = m . ScriptLoader ; if ( r . language && "en" != r . language && ! r . language _url && ( r . language _url = n . editorManager . baseURL + "/langs/" + r . language + ".js" ) , r . language _url && e . add ( r . language _url ) , r . theme && "function" != typeof r . theme && "-" != r . theme . charAt ( 0 ) && ! D . urls [ r . theme ] ) { var t = r . theme _url ; t = t ? n . documentBaseURI . toAbsolute ( t ) : "themes/" + r . theme + "/theme" + o + ".js" , D . load ( r . theme , t ) } E . isArray ( r . plugins ) && ( r . plugins = r . plugins . join ( " " ) ) , P ( r . external _plugins , function ( e , t ) { M . load ( t , e ) , r . plugins += " " + t } ) , P ( r . plugins . split ( /[ ,]/ ) , function ( e ) { if ( e = I ( e ) , e && ! M . urls [ e ] ) if ( "-" == e . charAt ( 0 ) ) { e = e . substr ( 1 , e . length ) ; var t = M . dependencies ( e ) ; P ( t , function ( e ) { var t = { prefix : "plugins/" , resource : e , suffix : "/plugin" + o + ".js" } ; e = M . createUrl ( t , e ) , M . load ( e . resource , e ) } ) } else M . load ( e , { prefix : "plugins/" , resource : e , suffix : "/plugin" + o + ".js" } ) } ) , e . loadQueue ( function ( ) { n . removed || n . init ( ) } ) } var n = this , r = n . settings , i = n . id , o = n . suffix ; if ( ! z . domLoaded ) return void B . bind ( window , "ready" , e ) ; if ( n . getElement ( ) && w . contentEditable ) { r . inline ? n . inline = ! 0 : ( n . orgVisibility = n . getElement ( ) . style . visibility , n . getElement ( ) . style . visibility = "hidden" ) ; var a = n . getElement ( ) . form || B . getParent ( i , "form" ) ; a && ( n . formElement = a , r . hidden _input && ! /TEXTAREA|INPUT/i . test ( n . getElement ( ) . nodeName ) && ( B . insertAfter ( B . create ( "input" , { type : "hidden" , name : i } ) , i ) , n . hasHiddenInput = ! 0 ) , n . formEventDelegate = function ( e ) { n . fire ( e . type , e ) } , B . bind ( a , "submit reset" , n . formEventDelegate ) , n . on ( "reset" , function ( ) { n . setContent ( n . startContent , { format : "raw" } ) } ) , ! r . submit _patch || a . submit . nodeType || a . submit . length || a . _mceOldSubmit || ( a . _mceOldSubmit = a . submit , a . submit = function ( ) { return n . editorManager . triggerSave ( ) , n . setDirty ( ! 1 ) , a . _mceOldSubmit ( a ) } ) ) , n . windowManager = new v ( n ) , n . notificationManager = new y ( n ) , "xml" == r . encoding && n . on ( "GetContent" , function ( e ) { e . save && ( e . content = B . encode ( e . content ) ) } ) , r . add _form _submit _trigger && n . on ( "submit" , function ( ) { n . initialized && n . save ( ) } ) , r . add _unload _trigger && ( n . _beforeUnload = function ( ) { ! n . initialized || n . destroyed || n . isHidden ( ) || n . save ( { format : "raw" , no _events : ! 0 , set _dirty : ! 1 } ) } , n . editorManager . on ( "BeforeUnload" , n . _beforeUnload ) ) , t ( ) } } , init : function ( ) { function e ( n ) { var r = M . get ( n ) , i , o ; if ( i = M . urls [ n ] || t . documentBaseUrl . replace ( /\/$/ , "" ) , n = I ( n ) , r && - 1 === O ( m , n ) ) { if ( P ( M . dependencies ( n ) , function ( t ) { e ( t ) } ) , t . plugins [ n ] ) return ; o = new r ( t , i , t . $ ) , t . plugins [ n ] = o , o . init && ( o . init ( t , i ) , m . push ( n ) ) } } var t = this , n = t . settings , r = t . getElement ( ) , i , o , a , s , l , c , u , d , f , h , p , m = [ ] ; if ( this . editorManager . i18n . setCode ( n . language ) , t . rtl = n . rtl _ui || this . editorManager . i18n . rtl , t . editorManager . add ( t ) , n . aria _label = n . aria _label || B . getAttrib ( r , "aria-label" , t . getLang ( "aria.rich_text_area" ) ) , n . theme && ( "function" != typeof n . theme ? ( n . theme = n . theme . replace ( /-/ , "" ) , c = D . get ( n . theme ) , t . theme = new c ( t , D . urls [ n . theme ] ) , t . theme . init && t . theme . init ( t , D . urls [ n . theme ] || t . documentBaseUrl . replace ( /\/$/ , "" ) , t . $ ) ) : t . theme = n . theme ) , P ( n . plugins . replace ( /\-/g , "" ) . split ( /[ ,]/ ) , e ) , n . render _ui && t . theme && ( t . orgDisplay = r . style . display , "function" != typeof n . theme ? ( i = n . width || r . style . width || r . offsetWidth , o = n . height || r . style . height || r . offsetHeight , a = n . min _height || 100 , h = /^[0-9\.]+(|px)$/i , h . test ( "" + i ) && ( i = Math . max ( parseInt ( i , 10 ) , 100 ) ) , h . test ( "" + o ) && ( o = Math . max ( parseInt ( o , 10 ) , a ) ) , l = t . theme . renderUI ( { targetNode : r , width : i , height : o , deltaWidth : n . delta _width , deltaHeight : n . delta _height } ) , n . content _editable || ( o = ( l
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" , "string" != typeof i && ( i = window . getSelection ? i [ 0 ] : i [ 1 ] ) , i = " style=\"background-image: url('" + i + "')\"" ) : i = "" , o && ( e . classes . add ( "btn-has-text" ) , a = '<span class="' + n + 'txt">' + e . encode ( o ) + "</span>" ) , r = e . settings . icon ? n + "ico " + n + "i-" + r : "" , '<div id="' + t + '" class="' + e . classes + '" tabindex="-1" aria-labelledby="' + t + '"><button role="presentation" type="button" tabindex="-1">' + ( r ? '<i class="' + r + '"' + i + "></i>" : "" ) + a + "</button></div>" } , bindStates : function ( ) { function e ( e ) { var i = n ( "span." + r , t . getEl ( ) ) ; e ? ( i [ 0 ] || ( n ( "button:first" , t . getEl ( ) ) . append ( '<span class="' + r + '"></span>' ) , i = n ( "span." + r , t . getEl ( ) ) ) , i . html ( t . encode ( e ) ) ) : i . remove ( ) , t . classes . toggle ( "btn-has-text" , ! ! e ) } var t = this , n = t . $ , r = t . classPrefix + "txt" ; return t . state . on ( "change:text" , function ( t ) { e ( t . value ) } ) , t . state . on ( "change:icon" , function ( n ) { var r = n . value , i = t . classPrefix ; t . settings . icon = r , r = r ? i + "ico " + i + "i-" + t . settings . icon : "" ; var o = t . getEl ( ) . firstChild , a = o . getElementsByTagName ( "i" ) [ 0 ] ; r ? ( a && a == o . firstChild || ( a = document . createElement ( "i" ) , o . insertBefore ( a , o . firstChild ) ) , a . className = r ) : a && o . removeChild ( a ) , e ( t . state . get ( "text" ) ) } ) , t . _super ( ) } } ) } ) , r ( ut , [ ve ] , function ( e ) { return e . extend ( { Defaults : { defaultType : "button" , role : "group" } , renderHtml : function ( ) { var e = this , t = e . _layout ; return e . classes . add ( "btn-group" ) , e . preRender ( ) , t . preRender ( e ) , '<div id="' + e . _id + '" class="' + e . classes + '"><div id="' + e . _id + '-body">' + ( e . settings . html || "" ) + t . renderHtml ( e ) + "</div></div>" } } ) } ) , r ( dt , [ Te ] , function ( e ) { return e . extend ( { Defaults : { classes : "checkbox" , role : "checkbox" , checked : ! 1 } , init : function ( e ) { var t = this ; t . _super ( e ) , t . on ( "click mousedown" , function ( e ) { e . preventDefault ( ) } ) , t . on ( "click" , function ( e ) { e . preventDefault ( ) , t . disabled ( ) || t . checked ( ! t . checked ( ) ) } ) , t . checked ( t . settings . checked ) } , checked : function ( e ) { return arguments . length ? ( this . state . set ( "checked" , e ) , this ) : this . state . get ( "checked" ) } , value : function ( e ) { return arguments . length ? this . checked ( e ) : this . checked ( ) } , renderHtml : function ( ) { var e = this , t = e . _id , n = e . classPrefix ; return '<div id="' + t + '" class="' + e . classes + '" unselectable="on" aria-labelledby="' + t + '-al" tabindex="-1"><i class="' + n + "ico " + n + 'i-checkbox"></i><span id="' + t + '-al" class="' + n + 'label">' + e . encode ( e . state . get ( "text" ) ) + "</span></div>" } , bindStates : function ( ) { function e ( e ) { t . classes . toggle ( "checked" , e ) , t . aria ( "checked" , e ) } var t = this ; return t . state . on ( "change:text" , function ( e ) { t . getEl ( "al" ) . firstChild . data = t . translate ( e . value ) } ) , t . state . on ( "change:checked change:value" , function ( n ) { t . fire ( "change" ) , e ( n . value ) } ) , t . state . on ( "change:icon" , function ( e ) { var n = e . value , r = t . classPrefix ; if ( "undefined" == typeof n ) return t . settings . icon ; t . settings . icon = n , n = n ? r + "ico " + r + "i-" + t . settings . icon : "" ; var i = t . getEl ( ) . firstChild , o = i . getElementsByTagName ( "i" ) [ 0 ] ; n ? ( o && o == i . firstChild || ( o = document . createElement ( "i" ) , i . insertBefore ( o , i . firstChild ) ) , o . className = n ) : o && i . removeChild ( o ) } ) , t . state . get ( "checked" ) && e ( ! 0 ) , t . _super ( ) } } ) } ) , r ( ft , [ Te , me , ue , g ] , function ( e , t , n , r ) { return e . extend ( { init : function ( e ) { var t = this ; t . _super ( e ) , e = t . settings , t . classes . add ( "combobox" ) , t . subinput = ! 0 , t . ariaTarget = "inp" , e . menu = e . menu || e . values , e . menu && ( e . icon = "caret" ) , t . on ( "click" , function ( n ) { var i = n . target , o = t . getEl ( ) ; if ( r . contains ( o , i ) || i == o ) for ( ; i && i != o ; ) i . id && - 1 != i . id . indexOf ( "-open" ) && ( t . fire ( "action" ) , e . menu && ( t . showMenu ( ) , n . aria && t . menu . items ( ) [ 0 ] . focus ( ) ) ) , i = i . parentNode } ) , t . on ( "keydown" , function ( e ) { "INPUT" == e . target . nodeName && 13 == e . keyCode && t . parents ( ) . reverse ( ) . each ( function ( n ) { var r = t . state . get ( "value" ) , i = t . getEl ( "inp" ) . value ; return e . preventDefault ( ) , t . state . set ( "value" , i ) , r != i && t . fire ( "change" ) , n . hasEventListeners ( "submit" ) && n . toJSON ? ( n . fire ( "submit" , { data : n . toJSON ( ) } ) , ! 1 ) : void 0 } ) } ) , t . on ( "keyup" , function ( e ) { "INPUT" == e . target . nodeName && t . state . set ( " val
e . focus ( ) , e . hideMenu ( ) ) } ) , e . menu . on ( "select" , function ( ) { e . focus ( ) } ) , e . menu . on ( "show hide" , function ( t ) { t . control == e . menu && e . activeMenu ( "show" == t . type ) , e . aria ( "expanded" , "show" == t . type ) } ) . fire ( "show" ) ) , e . menu . show ( ) , e . menu . layoutRect ( { w : e . layoutRect ( ) . w } ) , void e . menu . moveRel ( e . getEl ( ) , e . isRtl ( ) ? [ "br-tr" , "tr-br" ] : [ "bl-tl" , "tl-bl" ] ) ) } , hideMenu : function ( ) { var e = this ; e . menu && ( e . menu . items ( ) . each ( function ( e ) { e . hideMenu && e . hideMenu ( ) } ) , e . menu . hide ( ) ) } , activeMenu : function ( e ) { this . classes . toggle ( "active" , e ) } , renderHtml : function ( ) { var e = this , t = e . _id , r = e . classPrefix , i = e . settings . icon , o , a = e . state . get ( "text" ) , s = "" ; return o = e . settings . image , o ? ( i = "none" , "string" != typeof o && ( o = window . getSelection ? o [ 0 ] : o [ 1 ] ) , o = " style=\"background-image: url('" + o + "')\"" ) : o = "" , a && ( e . classes . add ( "btn-has-text" ) , s = '<span class="' + r + 'txt">' + e . encode ( a ) + "</span>" ) , i = e . settings . icon ? r + "ico " + r + "i-" + i : "" , e . aria ( "role" , e . parent ( ) instanceof n ? "menuitem" : "button" ) , '<div id="' + t + '" class="' + e . classes + '" tabindex="-1" aria-labelledby="' + t + '"><button id="' + t + '-open" role="presentation" type="button" tabindex="-1">' + ( i ? '<i class="' + i + '"' + o + "></i>" : "" ) + s + ' <i class="' + r + 'caret"></i></button></div>' } , postRender : function ( ) { var e = this ; return e . on ( "click" , function ( t ) { t . control === e && r ( t . target , e . getEl ( ) ) && ( e . showMenu ( ) , t . aria && e . menu . items ( ) [ 0 ] . focus ( ) ) } ) , e . on ( "mouseenter" , function ( t ) { var n = t . control , r = e . parent ( ) , o ; n && r && n instanceof i && n . parent ( ) == r && ( r . items ( ) . filter ( "MenuButton" ) . each ( function ( e ) { e . hideMenu && e != n && ( e . menu && e . menu . visible ( ) && ( o = ! 0 ) , e . hideMenu ( ) ) } ) , o && ( n . focus ( ) , n . showMenu ( ) ) ) } ) , e . _super ( ) } , bindStates : function ( ) { var e = this ; return e . state . on ( "change:menu" , function ( ) { e . menu && e . menu . remove ( ) , e . menu = null } ) , e . _super ( ) } , remove : function ( ) { this . _super ( ) , this . menu && this . menu . remove ( ) } } ) ; return i } ) , r ( Lt , [ Te , me , h , u ] , function ( e , t , n , r ) { return e . extend ( { Defaults : { border : 0 , role : "menuitem" } , init : function ( e ) { var t = this , n ; t . _super ( e ) , e = t . settings , t . classes . add ( "menu-item" ) , e . menu && t . classes . add ( "menu-item-expand" ) , e . preview && t . classes . add ( "menu-item-preview" ) , n = t . state . get ( "text" ) , ( "-" === n || "|" === n ) && ( t . classes . add ( "menu-item-sep" ) , t . aria ( "role" , "separator" ) , t . state . set ( "text" , "-" ) ) , e . selectable && ( t . aria ( "role" , "menuitemcheckbox" ) , t . classes . add ( "menu-item-checkbox" ) , e . icon = "selected" ) , e . preview || e . selectable || t . classes . add ( "menu-item-normal" ) , t . on ( "mousedown" , function ( e ) { e . preventDefault ( ) } ) , e . menu && ! e . ariaHideMenu && t . aria ( "haspopup" , ! 0 ) } , hasMenus : function ( ) { return ! ! this . settings . menu } , showMenu : function ( ) { var e = this , n = e . settings , r , i = e . parent ( ) ; if ( i . items ( ) . each ( function ( t ) { t !== e && t . hideMenu ( ) } ) , n . menu ) { r = e . menu , r ? r . show ( ) : ( r = n . menu , r . length ? r = { type : "menu" , items : r } : r . type = r . type || "menu" , i . settings . itemDefaults && ( r . itemDefaults = i . settings . itemDefaults ) , r = e . menu = t . create ( r ) . parent ( e ) . renderTo ( ) , r . reflow ( ) , r . on ( "cancel" , function ( t ) { t . stopPropagation ( ) , e . focus ( ) , r . hide ( ) } ) , r . on ( "show hide" , function ( e ) { e . control . items ( ) . each ( function ( e ) { e . active ( e . settings . selected ) } ) } ) . fire ( "show" ) , r . on ( "hide" , function ( t ) { t . control === r && e . classes . remove ( "selected" ) } ) , r . submenu = ! 0 ) , r . _parentMenu = i , r . classes . add ( "menu-sub" ) ; var o = r . testMoveRel ( e . getEl ( ) , e . isRtl ( ) ? [ "tl-tr" , "bl-br" , "tr-tl" , "br-bl" ] : [ "tr-tl" , "br-bl" , "tl-tr" , "bl-br" ] ) ; r . moveRel ( e . getEl ( ) , o ) , r . rel = o , o = "menu-sub-" + o , r . classes . remove ( r . _lastRel ) . add ( o ) , r . _lastRel = o , e . classes . add ( "selected" ) , e . aria ( "expanded" , ! 0 ) } } , hideMenu : function ( ) { var e = this ; return e . menu && ( e . menu . items ( ) . each ( function ( e ) { e . hideMenu && e . hideMenu ( ) } ) , e . menu . hide ( ) , e . aria ( "expanded" , ! 1 ) ) , e } , renderHtml : function ( ) { function e ( e ) { var t , r , i = { } ; for ( i = n . mac ? { alt : "⌥" , ctrl : "⌘" , shift : "⇧" , meta : "⌘" } : { meta : "Ctrl" } , e = e . split ( "+" ) , t = 0 ; t < e . length ; t ++ ) r = i [ e [ t ] . toLowerCase ( ) ] , r && ( e [ t ] = r ) ; return e . join ( "+" ) } var t = this , r = t . _id , i = t . settings , o = t . classPrefix , a = t . encode ( t . state . get ( "text" ) ) , s = t . settings . icon , l = "" , c = i . shortcut ; return s && t . parent ( ) . classes . add ( "menu-has-icons" ) , i . image && ( l = " style=\"background-image: url('" + i . image + "')\"" ) , c && ( c = e ( c ) ) , s = o + "ico " + o + "i-" + ( t . settings . icon || "none" ) , '<div id="' + r + '" class="' + t . classes + '" tabindex="-1">' + ( "-" !== a ? ' < i class = "