@ -2,9 +2,9 @@
Copyright ( c ) 2003 - 2015 , CKSource - Frederico Knabben . All rights reserved .
Copyright ( c ) 2003 - 2015 , CKSource - Frederico Knabben . All rights reserved .
For licensing , see LICENSE . md or http : //ckeditor.com/license
For licensing , see LICENSE . md or http : //ckeditor.com/license
* /
* /
( function ( ) { window . CKEDITOR && window . CKEDITOR . dom || ( window . CKEDITOR || ( window . CKEDITOR = function ( ) { var a = /(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i , e = { timestamp : "FA 3A", version : "4.5.4" , revision : "d4677a3 ", rnd : Math . floor ( 900 * Math . random ( ) ) + 100 , _ : { pending : [ ] , basePathSrcPattern : a } , status : "unloaded" , basePath : function ( ) { var f = window . CKEDITOR _BASEPATH || "" ; if ( ! f ) for ( var g = document . getElementsByTagName ( "script" ) , c = 0 ; c < g . length ; c ++ ) { var k = g [ c ] . src . match ( a ) ; if ( k ) { f = k [ 1 ] ; break } } - 1 == f . indexOf ( ":/" ) && "//" != f . slice ( 0 ,
( function ( ) { window . CKEDITOR && window . CKEDITOR . dom || ( window . CKEDITOR || ( window . CKEDITOR = function ( ) { var a = /(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i , e = { timestamp : "FA D9", version : "4.5.5" , revision : "b34ea4d ", rnd : Math . floor ( 900 * Math . random ( ) ) + 100 , _ : { pending : [ ] , basePathSrcPattern : a } , status : "unloaded" , basePath : function ( ) { var f = window . CKEDITOR _BASEPATH || "" ; if ( ! f ) for ( var g = document . getElementsByTagName ( "script" ) , c = 0 ; c < g . length ; c ++ ) { var k = g [ c ] . src . match ( a ) ; if ( k ) { f = k [ 1 ] ; break } } - 1 == f . indexOf ( ":/" ) && "//" != f . slice ( 0 ,
2 ) && ( f = 0 === f . indexOf ( "/" ) ? location . href . match ( /^.*?:\/\/[^\/]*/ ) [ 0 ] + f : location . href . match ( /^[^\?]*\/(?:)/ ) [ 0 ] + f ) ; if ( ! f ) throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.' ; return f } ( ) , getUrl : function ( a ) { - 1 == a . indexOf ( ":/" ) && 0 !== a . indexOf ( "/" ) && ( a = this . basePath + a ) ; this . timestamp && "/" != a . charAt ( a . length - 1 ) && ! /[&?]t=/ . test ( a ) && ( a += ( 0 <= a . indexOf ( "?" ) ? "\x26" : "?" ) + "t\x3d" + this . timestamp ) ; return a } ,
2 ) && ( f = 0 === f . indexOf ( "/" ) ? location . href . match ( /^.*?:\/\/[^\/]*/ ) [ 0 ] + f : location . href . match ( /^[^\?]*\/(?:)/ ) [ 0 ] + f ) ; if ( ! f ) throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.' ; return f } ( ) , getUrl : function ( a ) { - 1 == a . indexOf ( ":/" ) && 0 !== a . indexOf ( "/" ) && ( a = this . basePath + a ) ; this . timestamp && "/" != a . charAt ( a . length - 1 ) && ! /[&?]t=/ . test ( a ) && ( a += ( 0 <= a . indexOf ( "?" ) ? "\x26" : "?" ) + "t\x3d" + this . timestamp ) ; return a } ,
domReady : function ( ) { function a ( ) { try { document . addEventListener ? ( document . removeEventListener ( "DOMContentLoaded" , a , ! 1 ) , g ( ) ) : document . attachEvent && "complete" === document . readyState && ( document . detachEvent ( "onreadystatechange" , a ) , g ( ) ) } catch ( k ) { } } function g ( ) { for ( var a; a = c . shift ( ) ; ) a ( ) } var c = [ ] ; return function ( k ) { function b ( ) { try { document . documentElement . doScroll ( "left" ) } catch ( h ) { setTimeout ( b , 1 ) ; return } a ( ) } c . push ( k ) ; "complete" === document . readyState && setTimeout ( a , 1 ) ; if ( 1 == c . length ) if ( document . addEventListener ) document . addEventListener ( "DOMContentLoaded" ,
domReady : function ( ) { function a ( ) { try { document . addEventListener ? ( document . removeEventListener ( "DOMContentLoaded" , a , ! 1 ) , g ( ) ) : document . attachEvent && "complete" === document . readyState && ( document . detachEvent ( "onreadystatechange" , a ) , g ( ) ) } catch ( k ) { } } function g ( ) { for ( var k; k = c . shift ( ) ; ) k ( ) } var c = [ ] ; return function ( k ) { function b ( ) { try { document . documentElement . doScroll ( "left" ) } catch ( h ) { setTimeout ( b , 1 ) ; return } a ( ) } c . push ( k ) ; "complete" === document . readyState && setTimeout ( a , 1 ) ; if ( 1 == c . length ) if ( document . addEventListener ) document . addEventListener ( "DOMContentLoaded" ,
a , ! 1 ) , window . addEventListener ( "load" , a , ! 1 ) ; else if ( document . attachEvent ) { document . attachEvent ( "onreadystatechange" , a ) ; window . attachEvent ( "onload" , a ) ; k = ! 1 ; try { k = ! window . frameElement } catch ( d ) { } document . documentElement . doScroll && k && b ( ) } } } ( ) } , c = window . CKEDITOR _GETURL ; if ( c ) { var g = e . getUrl ; e . getUrl = function ( a ) { return c . call ( e , a ) || g . call ( e , a ) } } return e } ( ) ) , CKEDITOR . event || ( CKEDITOR . event = function ( ) { } , CKEDITOR . event . implementOn = function ( a ) { var e = CKEDITOR . event . prototype , c ; for ( c in e ) null == a [ c ] && ( a [ c ] = e [ c ] ) } ,
a , ! 1 ) , window . addEventListener ( "load" , a , ! 1 ) ; else if ( document . attachEvent ) { document . attachEvent ( "onreadystatechange" , a ) ; window . attachEvent ( "onload" , a ) ; k = ! 1 ; try { k = ! window . frameElement } catch ( d ) { } document . documentElement . doScroll && k && b ( ) } } } ( ) } , c = window . CKEDITOR _GETURL ; if ( c ) { var g = e . getUrl ; e . getUrl = function ( a ) { return c . call ( e , a ) || g . call ( e , a ) } } return e } ( ) ) , CKEDITOR . event || ( CKEDITOR . event = function ( ) { } , CKEDITOR . event . implementOn = function ( a ) { var e = CKEDITOR . event . prototype , c ; for ( c in e ) null == a [ c ] && ( a [ c ] = e [ c ] ) } ,
CKEDITOR . event . prototype = function ( ) { function a ( a ) { var f = e ( this ) ; return f [ a ] || ( f [ a ] = new c ( a ) ) } var e = function ( a ) { a = a . getPrivate && a . getPrivate ( ) || a . _ || ( a . _ = { } ) ; return a . events || ( a . events = { } ) } , c = function ( a ) { this . name = a ; this . listeners = [ ] } ; c . prototype = { getListenerIndex : function ( a ) { for ( var c = 0 , e = this . listeners ; c < e . length ; c ++ ) if ( e [ c ] . fn == a ) return c ; return - 1 } } ; return { define : function ( c , f ) { var e = a . call ( this , c ) ; CKEDITOR . tools . extend ( e , f , ! 0 ) } , on : function ( c , f , e , l , k ) { function b ( h , b , a , k ) { h = { name : c , sender : this , editor : h ,
CKEDITOR . event . prototype = function ( ) { function a ( a ) { var f = e ( this ) ; return f [ a ] || ( f [ a ] = new c ( a ) ) } var e = function ( a ) { a = a . getPrivate && a . getPrivate ( ) || a . _ || ( a . _ = { } ) ; return a . events || ( a . events = { } ) } , c = function ( a ) { this . name = a ; this . listeners = [ ] } ; c . prototype = { getListenerIndex : function ( a ) { for ( var c = 0 , e = this . listeners ; c < e . length ; c ++ ) if ( e [ c ] . fn == a ) return c ; return - 1 } } ; return { define : function ( c , f ) { var e = a . call ( this , c ) ; CKEDITOR . tools . extend ( e , f , ! 0 ) } , on : function ( c , f , e , l , k ) { function b ( h , b , a , k ) { h = { name : c , sender : this , editor : h ,
data : b , listenerData : l , stop : a , cancel : k , removeListener : d } ; return ! 1 === f . call ( e , h ) ? ! 1 : h . data } function d ( ) { p . removeListener ( c , f ) } var h = a . call ( this , c ) ; if ( 0 > h . getListenerIndex ( f ) ) { h = h . listeners ; e || ( e = this ) ; isNaN ( k ) && ( k = 10 ) ; var p = this ; b . fn = f ; b . priority = k ; for ( var v = h . length - 1 ; 0 <= v ; v -- ) if ( h [ v ] . priority <= k ) return h . splice ( v + 1 , 0 , b ) , { removeListener : d } ; h . unshift ( b ) } return { removeListener : d } } , once : function ( ) { var a = Array . prototype . slice . call ( arguments ) , c = a [ 1 ] ; a [ 1 ] = function ( a ) { a . removeListener ( ) ; return c . apply ( this ,
data : b , listenerData : l , stop : a , cancel : k , removeListener : d } ; return ! 1 === f . call ( e , h ) ? ! 1 : h . data } function d ( ) { p . removeListener ( c , f ) } var h = a . call ( this , c ) ; if ( 0 > h . getListenerIndex ( f ) ) { h = h . listeners ; e || ( e = this ) ; isNaN ( k ) && ( k = 10 ) ; var p = this ; b . fn = f ; b . priority = k ; for ( var v = h . length - 1 ; 0 <= v ; v -- ) if ( h [ v ] . priority <= k ) return h . splice ( v + 1 , 0 , b ) , { removeListener : d } ; h . unshift ( b ) } return { removeListener : d } } , once : function ( ) { var a = Array . prototype . slice . call ( arguments ) , c = a [ 1 ] ; a [ 1 ] = function ( a ) { a . removeListener ( ) ; return c . apply ( this ,
@ -16,11 +16,11 @@ function(a,e){a in{instanceReady:1,loaded:1}&&(this[a]=!0);return CKEDITOR.event
534 > g ) ; c . hidpi = 2 <= window . devicePixelRatio ; c . needsBrFiller = c . gecko || c . webkit || c . ie && 10 < g ; c . needsNbspFiller = c . ie && 11 > g ; c . cssClass = "cke_browser_" + ( c . ie ? "ie" : c . gecko ? "gecko" : c . webkit ? "webkit" : "unknown" ) ; c . quirks && ( c . cssClass += " cke_browser_quirks" ) ; c . ie && ( c . cssClass += " cke_browser_ie" + ( c . quirks ? "6 cke_browser_iequirks" : c . version ) ) ; c . air && ( c . cssClass += " cke_browser_air" ) ; c . iOS && ( c . cssClass += " cke_browser_ios" ) ; c . hidpi && ( c . cssClass += " cke_hidpi" ) ; return c } ( ) ) , "unloaded" == CKEDITOR . status && function ( ) { CKEDITOR . event . implementOn ( CKEDITOR ) ;
534 > g ) ; c . hidpi = 2 <= window . devicePixelRatio ; c . needsBrFiller = c . gecko || c . webkit || c . ie && 10 < g ; c . needsNbspFiller = c . ie && 11 > g ; c . cssClass = "cke_browser_" + ( c . ie ? "ie" : c . gecko ? "gecko" : c . webkit ? "webkit" : "unknown" ) ; c . quirks && ( c . cssClass += " cke_browser_quirks" ) ; c . ie && ( c . cssClass += " cke_browser_ie" + ( c . quirks ? "6 cke_browser_iequirks" : c . version ) ) ; c . air && ( c . cssClass += " cke_browser_air" ) ; c . iOS && ( c . cssClass += " cke_browser_ios" ) ; c . hidpi && ( c . cssClass += " cke_hidpi" ) ; return c } ( ) ) , "unloaded" == CKEDITOR . status && function ( ) { CKEDITOR . event . implementOn ( CKEDITOR ) ;
CKEDITOR . loadFullCore = function ( ) { if ( "basic_ready" != CKEDITOR . status ) CKEDITOR . loadFullCore . _load = 1 ; else { delete CKEDITOR . loadFullCore ; var a = document . createElement ( "script" ) ; a . type = "text/javascript" ; a . src = CKEDITOR . basePath + "ckeditor.js" ; document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( a ) } } ; CKEDITOR . loadFullCoreTimeout = 0 ; CKEDITOR . add = function ( a ) { ( this . _ . pending || ( this . _ . pending = [ ] ) ) . push ( a ) } ; ( function ( ) { CKEDITOR . domReady ( function ( ) { var a = CKEDITOR . loadFullCore , e = CKEDITOR . loadFullCoreTimeout ; a && ( CKEDITOR . status =
CKEDITOR . loadFullCore = function ( ) { if ( "basic_ready" != CKEDITOR . status ) CKEDITOR . loadFullCore . _load = 1 ; else { delete CKEDITOR . loadFullCore ; var a = document . createElement ( "script" ) ; a . type = "text/javascript" ; a . src = CKEDITOR . basePath + "ckeditor.js" ; document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( a ) } } ; CKEDITOR . loadFullCoreTimeout = 0 ; CKEDITOR . add = function ( a ) { ( this . _ . pending || ( this . _ . pending = [ ] ) ) . push ( a ) } ; ( function ( ) { CKEDITOR . domReady ( function ( ) { var a = CKEDITOR . loadFullCore , e = CKEDITOR . loadFullCoreTimeout ; a && ( CKEDITOR . status =
"basic_ready" , a && a . _load ? a ( ) : e && setTimeout ( function ( ) { CKEDITOR . loadFullCore && CKEDITOR . loadFullCore ( ) } , 1E3 * e ) ) } ) } ) ( ) ; CKEDITOR . status = "basic_loaded" } ( ) , "use strict" , CKEDITOR . VERBOSITY _WARN = 1 , CKEDITOR . VERBOSITY _ERROR = 2 , CKEDITOR . verbosity = CKEDITOR . VERBOSITY _WARN | CKEDITOR . VERBOSITY _ERROR , CKEDITOR . warn = function ( a , e ) { CKEDITOR . verbosity & CKEDITOR . VERBOSITY _WARN && CKEDITOR . fire ( "log" , { type : "warn" , errorCode : a , additionalData : e } ) } , CKEDITOR . error = function ( a , e ) { CKEDITOR . verbosity & CKEDITOR . VERBOSITY _ERROR && CKEDITOR . fire ( "log" ,
"basic_ready" , a && a . _load ? a ( ) : e && setTimeout ( function ( ) { CKEDITOR . loadFullCore && CKEDITOR . loadFullCore ( ) } , 1E3 * e ) ) } ) } ) ( ) ; CKEDITOR . status = "basic_loaded" } ( ) , "use strict" , CKEDITOR . VERBOSITY _WARN = 1 , CKEDITOR . VERBOSITY _ERROR = 2 , CKEDITOR . verbosity = CKEDITOR . VERBOSITY _WARN | CKEDITOR . VERBOSITY _ERROR , CKEDITOR . warn = function ( a , e ) { CKEDITOR . verbosity & CKEDITOR . VERBOSITY _WARN && CKEDITOR . fire ( "log" , { type : "warn" , errorCode : a , additionalData : e } ) } , CKEDITOR . error = function ( a , e ) { CKEDITOR . verbosity & CKEDITOR . VERBOSITY _ERROR && CKEDITOR . fire ( "log" ,
{ type : "error" , errorCode : a , additionalData : e } ) } , CKEDITOR . on ( "log" , function ( a ) { if ( window . console && window . console . log ) { var e = console [ a . data . type ] ? a . data . type : "log" , c = a . data . errorCode ; if ( a = a . data . additionalData ) console [ e ] ( "[CKEDITOR] "+ c , a ) ; else console [ e ] ( "[CKEDITOR] "+ c ) ; console [ e ] ( "[CKEDITOR] For more information go to http://docs.ckeditor.com/#!/guide/dev_errors-section-"+ c ) } } , null , null , 999 ) , CKEDITOR . dom = { } , function ( ) { var a = [ ] , e = CKEDITOR . env . gecko ? "-moz-" : CKEDITOR . env . webkit ? "-webkit-" : CKEDITOR . env . ie ?
{ type : "error" , errorCode : a , additionalData : e } ) } , CKEDITOR . on ( "log" , function ( a ) { if ( window . console && window . console . log ) { var e = console [ a . data . type ] ? a . data . type : "log" , c = a . data . errorCode ; if ( a = a . data . additionalData ) console [ e ] ( "[CKEDITOR] Error code: "+ c + "." , a ) ; else console [ e ] ( "[CKEDITOR] Error code: "+ c + "." ) ; console [ e ] ( "[CKEDITOR] For more information about this error go to http://docs.ckeditor.com/#!/guide/dev_errors-section-"+ c ) } } , null , null , 999 ) , CKEDITOR . dom = { } , function ( ) { var a = [ ] , e = CKEDITOR . env . gecko ? "-moz-" :
"-ms-" : "" , c = /&/g , g = />/g , f = /</g , m = /"/g , l = /&(lt|gt|amp|quot|nbsp|shy|#\d{1,5});/g , k = { lt : "\x3c" , gt : "\x3e" , amp : "\x26" , quot : '"' , nbsp : " " , shy : " " } , b = function ( d , h ) { return "#" == h [ 0 ] ? String . fromCharCode ( parseInt ( h . slice ( 1 ) , 10 ) ) : k [ h ] } ; CKEDITOR . on ( "reset" , function ( ) { a = [ ] } ) ; CKEDITOR . tools = { arrayCompare : function ( d , h ) { if ( ! d && ! h ) return ! 0 ; if ( ! d || ! h || d . length != h . length ) return ! 1 ; for ( var b = 0 ; b < d . length ; b ++ ) if ( d [ b ] != h [ b ] ) return ! 1 ; return ! 0 } , getIndex : function ( d , h ) { for ( var b = 0 ; b < d . length ; ++ b ) if ( h ( d [ b ] ) ) return b ; return - 1 } ,
CKEDITOR . env . webkit ? "-webkit-" : CKEDITOR . env . ie ? "-ms-" : "" , c = /&/g , g = />/g , f = /</g , m = /"/g , l = /&(lt|gt|amp|quot|nbsp|shy|#\d{1,5});/g , k = { lt : "\x3c" , gt : "\x3e" , amp : "\x26" , quot : '"' , nbsp : " " , shy : " " } , b = function ( d , h ) { return "#" == h [ 0 ] ? String . fromCharCode ( parseInt ( h . slice ( 1 ) , 10 ) ) : k [ h ] } ; CKEDITOR . on ( "reset" , function ( ) { a = [ ] } ) ; CKEDITOR . tools = { arrayCompare : function ( d , h ) { if ( ! d && ! h ) return ! 0 ; if ( ! d || ! h || d . length != h . length ) return ! 1 ; for ( var b = 0 ; b < d . length ; b ++ ) if ( d [ b ] != h [ b ] ) return ! 1 ; return ! 0 } , getIndex : function ( d , h ) { for ( var b =
clone : function ( d ) { var h ; if ( d && d instanceof Array ) { h = [ ] ; for ( var b = 0 ; b < d . length ; b ++ ) h [ b ] = CKEDITOR . tools . clone ( d [ b ] ) ; return h } if ( null === d || "object" != typeof d || d instanceof String || d instanceof Number || d instanceof Boolean || d instanceof Date || d instanceof RegExp || d . nodeType || d . window === d ) return d ; h = new d . constructor ; for ( b in d ) h [ b ] = CKEDITOR . tools . clone ( d [ b ] ) ; return h } , capitalize : function ( d , h ) { return d . charAt ( 0 ) . toUpperCase ( ) + ( h ? d . slice ( 1 ) : d . slice ( 1 ) . toLowerCase ( ) ) } , extend : function ( d ) { var h = arguments . length ,
0 ; b < d . length ; ++ b ) if ( h ( d [ b ] ) ) return b ; return - 1 } , clone : function ( d ) { var h ; if ( d && d instanceof Array ) { h = [ ] ; for ( var b = 0 ; b < d . length ; b ++ ) h [ b ] = CKEDITOR . tools . clone ( d [ b ] ) ; return h } if ( null === d || "object" != typeof d || d instanceof String || d instanceof Number || d instanceof Boolean || d instanceof Date || d instanceof RegExp || d . nodeType || d . window === d ) return d ; h = new d . constructor ; for ( b in d ) h [ b ] = CKEDITOR . tools . clone ( d [ b ] ) ; return h } , capitalize : function ( d , h ) { return d . charAt ( 0 ) . toUpperCase ( ) + ( h ? d . slice ( 1 ) : d . slice ( 1 ) . toLowerCase ( ) ) } ,
b , a ; "boolean" == typeof ( b = arguments [ h - 1 ] ) ? h -- : "boolean" == typeof ( b = arguments [ h - 2 ] ) && ( a = arguments [ h - 1 ] , h -= 2 ) ; for ( var k = 1 ; k < h ; k ++ ) { var c = arguments [ k ] , n ; for ( n in c ) if ( ! 0 === b || null == d [ n ] ) if ( ! a || n in a ) d [ n ] = c [ n ] } return d } , prototypedCopy : function ( d ) { var h = function ( ) { } ; h . prototype = d ; return new h } , copy : function ( d ) { var h = { } , b ; for ( b in d ) h [ b ] = d [ b ] ; return h } , isArray : function ( d ) { return "[object Array]" == Object . prototype . toString . call ( d ) } , isEmpty : function ( d ) { for ( var h in d ) if ( d . hasOwnProperty ( h ) ) return ! 1 ; return ! 0 } ,
extend : function ( d ) { var h = arguments . length , b , a ; "boolean" == typeof ( b = arguments [ h - 1 ] ) ? h -- : "boolean" == typeof ( b = arguments [ h - 2 ] ) && ( a = arguments [ h - 1 ] , h -= 2 ) ; for ( var k = 1 ; k < h ; k ++ ) { var c = arguments [ k ] , n ; for ( n in c ) if ( ! 0 === b || null == d [ n ] ) if ( ! a || n in a ) d [ n ] = c [ n ] } return d } , prototypedCopy : function ( d ) { var h = function ( ) { } ; h . prototype = d ; return new h } , copy : function ( d ) { var h = { } , b ; for ( b in d ) h [ b ] = d [ b ] ; return h } , isArray : function ( d ) { return "[object Array]" == Object . prototype . toString . call ( d ) } , isEmpty : function ( d ) { for ( var h in d ) if ( d . hasOwnProperty ( h ) ) return ! 1 ;
cssVendorPrefix : function ( d , h , b ) { if ( b ) return e + d + ":" + h + ";" + d + ":" + h ; b = { } ; b [ d ] = h ; b [ e + d ] = h ; return b } , cssStyleToDomStyle : function ( ) { var d = document . createElement ( "div" ) . style , h = "undefined" != typeof d . cssFloat ? "cssFloat" : "undefined" != typeof d . styleFloat ? "styleFloat" : "float" ; return function ( d ) { return "float" == d ? h : d . replace ( /-./g , function ( h ) { return h . substr ( 1 ) . toUpperCase ( ) } ) } } ( ) , buildStyleHtml : function ( d ) { d = [ ] . concat ( d ) ; for ( var h , b = [ ] , a = 0 ; a < d . length ; a ++ ) if ( h = d [ a ] ) / @ import | [ { } ] / . test ( h ) ? b . push ( "\x3cstyle\x3e" +
return ! 0 } , cssVendorPrefix : function ( d , h , b ) { if ( b ) return e + d + ":" + h + ";" + d + ":" + h ; b = { } ; b [ d ] = h ; b [ e + d ] = h ; return b } , cssStyleToDomStyle : function ( ) { var d = document . createElement ( "div" ) . style , h = "undefined" != typeof d . cssFloat ? "cssFloat" : "undefined" != typeof d . styleFloat ? "styleFloat" : "float" ; return function ( d ) { return "float" == d ? h : d . replace ( /-./g , function ( h ) { return h . substr ( 1 ) . toUpperCase ( ) } ) } } ( ) , buildStyleHtml : function ( d ) { d = [ ] . concat ( d ) ; for ( var h , b = [ ] , a = 0 ; a < d . length ; a ++ ) if ( h = d [ a ] ) / @ import | [ { } ] / . test ( h ) ? b . push ( "\x3cstyle\x3e" +
h + "\x3c/style\x3e" ) : b . push ( '\x3clink type\x3d"text/css" rel\x3dstylesheet href\x3d"' + h + '"\x3e' ) ; return b . join ( "" ) } , htmlEncode : function ( d ) { return void 0 === d || null === d ? "" : String ( d ) . replace ( c , "\x26amp;" ) . replace ( g , "\x26gt;" ) . replace ( f , "\x26lt;" ) } , htmlDecode : function ( d ) { return d . replace ( l , b ) } , htmlEncodeAttr : function ( d ) { return CKEDITOR . tools . htmlEncode ( d ) . replace ( m , "\x26quot;" ) } , htmlDecodeAttr : function ( d ) { return CKEDITOR . tools . htmlDecode ( d ) } , transformPlainTextToHtml : function ( d , h ) { var b = h == CKEDITOR . ENTER _BR ,
h + "\x3c/style\x3e" ) : b . push ( '\x3clink type\x3d"text/css" rel\x3dstylesheet href\x3d"' + h + '"\x3e' ) ; return b . join ( "" ) } , htmlEncode : function ( d ) { return void 0 === d || null === d ? "" : String ( d ) . replace ( c , "\x26amp;" ) . replace ( g , "\x26gt;" ) . replace ( f , "\x26lt;" ) } , htmlDecode : function ( d ) { return d . replace ( l , b ) } , htmlEncodeAttr : function ( d ) { return CKEDITOR . tools . htmlEncode ( d ) . replace ( m , "\x26quot;" ) } , htmlDecodeAttr : function ( d ) { return CKEDITOR . tools . htmlDecode ( d ) } , transformPlainTextToHtml : function ( d , h ) { var b = h == CKEDITOR . ENTER _BR ,
a = this . htmlEncode ( d . replace ( /\r\n/g , "\n" ) ) , a = a . replace ( /\t/g , "\x26nbsp;\x26nbsp; \x26nbsp;" ) , k = h == CKEDITOR . ENTER _P ? "p" : "div" ; if ( ! b ) { var c = /\n{2}/g ; if ( c . test ( a ) ) var n = "\x3c" + k + "\x3e" , f = "\x3c/" + k + "\x3e" , a = n + a . replace ( c , function ( ) { return f + n } ) + f } a = a . replace ( /\n/g , "\x3cbr\x3e" ) ; b || ( a = a . replace ( new RegExp ( "\x3cbr\x3e(?\x3d\x3c/" + k + "\x3e)" ) , function ( h ) { return CKEDITOR . tools . repeat ( h , 2 ) } ) ) ; a = a . replace ( /^ | $/g , "\x26nbsp;" ) ; return a = a . replace ( /(>|\s) /g , function ( h , d ) { return d + "\x26nbsp;" } ) . replace ( / (?=<)/g ,
a = this . htmlEncode ( d . replace ( /\r\n/g , "\n" ) ) , a = a . replace ( /\t/g , "\x26nbsp;\x26nbsp; \x26nbsp;" ) , k = h == CKEDITOR . ENTER _P ? "p" : "div" ; if ( ! b ) { var c = /\n{2}/g ; if ( c . test ( a ) ) var n = "\x3c" + k + "\x3e" , f = "\x3c/" + k + "\x3e" , a = n + a . replace ( c , function ( ) { return f + n } ) + f } a = a . replace ( /\n/g , "\x3cbr\x3e" ) ; b || ( a = a . replace ( new RegExp ( "\x3cbr\x3e(?\x3d\x3c/" + k + "\x3e)" ) , function ( h ) { return CKEDITOR . tools . repeat ( h , 2 ) } ) ) ; a = a . replace ( /^ | $/g , "\x26nbsp;" ) ; return a = a . replace ( /(>|\s) /g , function ( h , d ) { return d + "\x26nbsp;" } ) . replace ( / (?=<)/g ,
"\x26nbsp;" ) } , getNextNumber : function ( ) { var d = 0 ; return function ( ) { return ++ d } } ( ) , getNextId : function ( ) { return "cke_" + this . getNextNumber ( ) } , getUniqueId : function ( ) { for ( var d = "e" , h = 0 ; 8 > h ; h ++ ) d += Math . floor ( 65536 * ( 1 + Math . random ( ) ) ) . toString ( 16 ) . substring ( 1 ) ; return d } , override : function ( d , h ) { var b = h ( d ) ; b . prototype = d . prototype ; return b } , setTimeout : function ( d , h , b , a , k ) { k || ( k = window ) ; b || ( b = k ) ; return k . setTimeout ( function ( ) { a ? d . apply ( b , [ ] . concat ( a ) ) : d . apply ( b ) } , h || 0 ) } , trim : function ( ) { var d = /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g ;
"\x26nbsp;" ) } , getNextNumber : function ( ) { var d = 0 ; return function ( ) { return ++ d } } ( ) , getNextId : function ( ) { return "cke_" + this . getNextNumber ( ) } , getUniqueId : function ( ) { for ( var d = "e" , h = 0 ; 8 > h ; h ++ ) d += Math . floor ( 65536 * ( 1 + Math . random ( ) ) ) . toString ( 16 ) . substring ( 1 ) ; return d } , override : function ( d , h ) { var b = h ( d ) ; b . prototype = d . prototype ; return b } , setTimeout : function ( d , h , b , a , k ) { k || ( k = window ) ; b || ( b = k ) ; return k . setTimeout ( function ( ) { a ? d . apply ( b , [ ] . concat ( a ) ) : d . apply ( b ) } , h || 0 ) } , trim : function ( ) { var d = /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g ;
@ -28,7 +28,7 @@ return function(h){return h.replace(d,"")}}(),ltrim:function(){var d=/^[ \t\n\r]
h ) { return function ( ) { return d . apply ( h , arguments ) } } , createClass : function ( d ) { var h = d . $ , b = d . base , a = d . privates || d . _ , k = d . proto ; d = d . statics ; ! h && ( h = function ( ) { b && this . base . apply ( this , arguments ) } ) ; if ( a ) var c = h , h = function ( ) { var h = this . _ || ( this . _ = { } ) , d ; for ( d in a ) { var b = a [ d ] ; h [ d ] = "function" == typeof b ? CKEDITOR . tools . bind ( b , this ) : b } c . apply ( this , arguments ) } ; b && ( h . prototype = this . prototypedCopy ( b . prototype ) , h . prototype . constructor = h , h . base = b , h . baseProto = b . prototype , h . prototype . base = function ( ) { this . base = b . prototype . base ;
h ) { return function ( ) { return d . apply ( h , arguments ) } } , createClass : function ( d ) { var h = d . $ , b = d . base , a = d . privates || d . _ , k = d . proto ; d = d . statics ; ! h && ( h = function ( ) { b && this . base . apply ( this , arguments ) } ) ; if ( a ) var c = h , h = function ( ) { var h = this . _ || ( this . _ = { } ) , d ; for ( d in a ) { var b = a [ d ] ; h [ d ] = "function" == typeof b ? CKEDITOR . tools . bind ( b , this ) : b } c . apply ( this , arguments ) } ; b && ( h . prototype = this . prototypedCopy ( b . prototype ) , h . prototype . constructor = h , h . base = b , h . baseProto = b . prototype , h . prototype . base = function ( ) { this . base = b . prototype . base ;
b . apply ( this , arguments ) ; this . base = arguments . callee } ) ; k && this . extend ( h . prototype , k , ! 0 ) ; d && this . extend ( h , d , ! 0 ) ; return h } , addFunction : function ( d , h ) { return a . push ( function ( ) { return d . apply ( h || this , arguments ) } ) - 1 } , removeFunction : function ( d ) { a [ d ] = null } , callFunction : function ( d ) { var h = a [ d ] ; return h && h . apply ( window , Array . prototype . slice . call ( arguments , 1 ) ) } , cssLength : function ( ) { var d = /^-?\d+\.?\d*px$/ , h ; return function ( b ) { h = CKEDITOR . tools . trim ( b + "" ) + "px" ; return d . test ( h ) ? h : b || "" } } ( ) , convertToPx : function ( ) { var d ;
b . apply ( this , arguments ) ; this . base = arguments . callee } ) ; k && this . extend ( h . prototype , k , ! 0 ) ; d && this . extend ( h , d , ! 0 ) ; return h } , addFunction : function ( d , h ) { return a . push ( function ( ) { return d . apply ( h || this , arguments ) } ) - 1 } , removeFunction : function ( d ) { a [ d ] = null } , callFunction : function ( d ) { var h = a [ d ] ; return h && h . apply ( window , Array . prototype . slice . call ( arguments , 1 ) ) } , cssLength : function ( ) { var d = /^-?\d+\.?\d*px$/ , h ; return function ( b ) { h = CKEDITOR . tools . trim ( b + "" ) + "px" ; return d . test ( h ) ? h : b || "" } } ( ) , convertToPx : function ( ) { var d ;
return function ( h ) { d || ( d = CKEDITOR . dom . element . createFromHtml ( '\x3cdiv style\x3d"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"\x3e\x3c/div\x3e' , CKEDITOR . document ) , CKEDITOR . document . getBody ( ) . append ( d ) ) ; return /%$/ . test ( h ) ? h : ( d . setStyle ( "width" , h ) , d . $ . clientWidth ) } } ( ) , repeat : function ( d , h ) { return Array ( h + 1 ) . join ( d ) } , tryThese : function ( ) { for ( var d , h = 0 , b = arguments . length ; h < b ; h ++ ) { var a = arguments [ h ] ; try { d = a ( ) ; break } catch ( k ) { } } return d } , genKey : function ( ) { return Array . prototype . slice . call ( arguments ) . join ( "-" ) } ,
return function ( h ) { d || ( d = CKEDITOR . dom . element . createFromHtml ( '\x3cdiv style\x3d"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"\x3e\x3c/div\x3e' , CKEDITOR . document ) , CKEDITOR . document . getBody ( ) . append ( d ) ) ; return /%$/ . test ( h ) ? h : ( d . setStyle ( "width" , h ) , d . $ . clientWidth ) } } ( ) , repeat : function ( d , h ) { return Array ( h + 1 ) . join ( d ) } , tryThese : function ( ) { for ( var d , h = 0 , b = arguments . length ; h < b ; h ++ ) { var a = arguments [ h ] ; try { d = a ( ) ; break } catch ( k ) { } } return d } , genKey : function ( ) { return Array . prototype . slice . call ( arguments ) . join ( "-" ) } ,
defer : function ( d ) { return function ( ) { var h = arguments , b = this ; window . setTimeout ( function ( ) { d . apply ( b , h ) } , 0 ) } } , normalizeCssText : function ( b, h ) { var a = [ ] , k , c = CKEDITOR . tools . parseCssText ( b , ! 0 , h ) ; for ( k in c ) a . push ( k + ":" + c [ k ] ) ; a . sort ( ) ; return a . length ? a . join ( ";" ) + ";" : "" } , convertRgbToHex : function ( b ) { return b . replace ( /(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi , function ( h , b , d , a ) { h = [ b , d , a ] ; for ( b = 0 ; 3 > b ; b ++ ) h [ b ] = ( "0" + parseInt ( h [ b ] , 10 ) . toString ( 16 ) ) . slice ( - 2 ) ; return "#" + h . join ( "" ) } ) } , parseCssText : function ( b ,
defer : function ( d ) { return function ( ) { var h = arguments , b = this ; window . setTimeout ( function ( ) { d . apply ( b , h ) } , 0 ) } } , normalizeCssText : function ( d, h ) { var b = [ ] , a , k = CKEDITOR . tools . parseCssText ( d , ! 0 , h ) ; for ( a in k ) b . push ( a + ":" + k [ a ] ) ; b . sort ( ) ; return b . length ? b . join ( ";" ) + ";" : "" } , convertRgbToHex : function ( b ) { return b . replace ( /(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi , function ( h , b , d , a ) { h = [ b , d , a ] ; for ( b = 0 ; 3 > b ; b ++ ) h [ b ] = ( "0" + parseInt ( h [ b ] , 10 ) . toString ( 16 ) ) . slice ( - 2 ) ; return "#" + h . join ( "" ) } ) } , parseCssText : function ( b ,
h , a ) { var k = { } ; a && ( a = new CKEDITOR . dom . element ( "span" ) , a . setAttribute ( "style" , b ) , b = CKEDITOR . tools . convertRgbToHex ( a . getAttribute ( "style" ) || "" ) ) ; if ( ! b || ";" == b ) return k ; b . replace ( /"/g , '"' ) . replace ( /\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g , function ( b , d , a ) { h && ( d = d . toLowerCase ( ) , "font-family" == d && ( a = a . toLowerCase ( ) . replace ( /["']/g , "" ) . replace ( /\s*,\s*/g , "," ) ) , a = CKEDITOR . tools . trim ( a ) ) ; k [ d ] = a } ) ; return k } , writeCssText : function ( b , h ) { var a , k = [ ] ; for ( a in b ) k . push ( a + ":" + b [ a ] ) ; h && k . sort ( ) ; return k . join ( "; " ) } ,
h , a ) { var k = { } ; a && ( a = new CKEDITOR . dom . element ( "span" ) , a . setAttribute ( "style" , b ) , b = CKEDITOR . tools . convertRgbToHex ( a . getAttribute ( "style" ) || "" ) ) ; if ( ! b || ";" == b ) return k ; b . replace ( /"/g , '"' ) . replace ( /\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g , function ( b , d , a ) { h && ( d = d . toLowerCase ( ) , "font-family" == d && ( a = a . toLowerCase ( ) . replace ( /["']/g , "" ) . replace ( /\s*,\s*/g , "," ) ) , a = CKEDITOR . tools . trim ( a ) ) ; k [ d ] = a } ) ; return k } , writeCssText : function ( b , h ) { var a , k = [ ] ; for ( a in b ) k . push ( a + ":" + b [ a ] ) ; h && k . sort ( ) ; return k . join ( "; " ) } ,
objectCompare : function ( b , h , a ) { var k ; if ( ! b && ! h ) return ! 0 ; if ( ! b || ! h ) return ! 1 ; for ( k in b ) if ( b [ k ] != h [ k ] ) return ! 1 ; if ( ! a ) for ( k in h ) if ( b [ k ] != h [ k ] ) return ! 1 ; return ! 0 } , objectKeys : function ( b ) { var h = [ ] , a ; for ( a in b ) h . push ( a ) ; return h } , convertArrayToObject : function ( b , h ) { var a = { } ; 1 == arguments . length && ( h = ! 0 ) ; for ( var k = 0 , c = b . length ; k < c ; ++ k ) a [ b [ k ] ] = h ; return a } , fixDomain : function ( ) { for ( var b ; ; ) try { b = window . parent . document . domain ; break } catch ( h ) { b = b ? b . replace ( /.+?(?:\.|$)/ , "" ) : document . domain ; if ( ! b ) break ; document . domain =
objectCompare : function ( b , h , a ) { var k ; if ( ! b && ! h ) return ! 0 ; if ( ! b || ! h ) return ! 1 ; for ( k in b ) if ( b [ k ] != h [ k ] ) return ! 1 ; if ( ! a ) for ( k in h ) if ( b [ k ] != h [ k ] ) return ! 1 ; return ! 0 } , objectKeys : function ( b ) { var h = [ ] , a ; for ( a in b ) h . push ( a ) ; return h } , convertArrayToObject : function ( b , h ) { var a = { } ; 1 == arguments . length && ( h = ! 0 ) ; for ( var k = 0 , c = b . length ; k < c ; ++ k ) a [ b [ k ] ] = h ; return a } , fixDomain : function ( ) { for ( var b ; ; ) try { b = window . parent . document . domain ; break } catch ( h ) { b = b ? b . replace ( /.+?(?:\.|$)/ , "" ) : document . domain ; if ( ! b ) break ; document . domain =
b } return ! ! b } , eventsBuffer : function ( b , h , a ) { function k ( ) { f = ( new Date ) . getTime ( ) ; c = ! 1 ; a ? h . call ( a ) : h ( ) } var c , f = 0 ; return { input : function ( ) { if ( ! c ) { var h = ( new Date ) . getTime ( ) - f ; h < b ? c = setTimeout ( k , b - h ) : k ( ) } } , reset : function ( ) { c && clearTimeout ( c ) ; c = f = 0 } } } , enableHtml5Elements : function ( b , h ) { for ( var a = "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video" . split ( " " ) , k = a . length , c ; k -- ; ) c = b . createElement ( a [ k ] ) ,
b } return ! ! b } , eventsBuffer : function ( b , h , a ) { function k ( ) { f = ( new Date ) . getTime ( ) ; c = ! 1 ; a ? h . call ( a ) : h ( ) } var c , f = 0 ; return { input : function ( ) { if ( ! c ) { var h = ( new Date ) . getTime ( ) - f ; h < b ? c = setTimeout ( k , b - h ) : k ( ) } } , reset : function ( ) { c && clearTimeout ( c ) ; c = f = 0 } } } , enableHtml5Elements : function ( b , h ) { for ( var a = "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video" . split ( " " ) , k = a . length , c ; k -- ; ) c = b . createElement ( a [ k ] ) ,
@ -59,7 +59,7 @@ CKEDITOR.POSITION_FOLLOWING}if("sourceIndex"in e)return 0>e.sourceIndex||0>c.sou
getAscendant : function ( a , e ) { var c = this . $ , g , f ; e || ( c = c . parentNode ) ; "function" == typeof a ? ( f = ! 0 , g = a ) : ( f = ! 1 , g = function ( c ) { c = "string" == typeof c . nodeName ? c . nodeName . toLowerCase ( ) : "" ; return "string" == typeof a ? c == a : c in a } ) ; for ( ; c ; ) { if ( g ( f ? new CKEDITOR . dom . node ( c ) : c ) ) return new CKEDITOR . dom . node ( c ) ; try { c = c . parentNode } catch ( m ) { c = null } } return null } , hasAscendant : function ( a , e ) { var c = this . $ ; e || ( c = c . parentNode ) ; for ( ; c ; ) { if ( c . nodeName && c . nodeName . toLowerCase ( ) == a ) return ! 0 ; c = c . parentNode } return ! 1 } , move : function ( a , e ) { a . append ( this . remove ( ) ,
getAscendant : function ( a , e ) { var c = this . $ , g , f ; e || ( c = c . parentNode ) ; "function" == typeof a ? ( f = ! 0 , g = a ) : ( f = ! 1 , g = function ( c ) { c = "string" == typeof c . nodeName ? c . nodeName . toLowerCase ( ) : "" ; return "string" == typeof a ? c == a : c in a } ) ; for ( ; c ; ) { if ( g ( f ? new CKEDITOR . dom . node ( c ) : c ) ) return new CKEDITOR . dom . node ( c ) ; try { c = c . parentNode } catch ( m ) { c = null } } return null } , hasAscendant : function ( a , e ) { var c = this . $ ; e || ( c = c . parentNode ) ; for ( ; c ; ) { if ( c . nodeName && c . nodeName . toLowerCase ( ) == a ) return ! 0 ; c = c . parentNode } return ! 1 } , move : function ( a , e ) { a . append ( this . remove ( ) ,
e ) } , remove : function ( a ) { var e = this . $ , c = e . parentNode ; if ( c ) { if ( a ) for ( ; a = e . firstChild ; ) c . insertBefore ( e . removeChild ( a ) , e ) ; c . removeChild ( e ) } return this } , replace : function ( a ) { this . insertBefore ( a ) ; a . remove ( ) } , trim : function ( ) { this . ltrim ( ) ; this . rtrim ( ) } , ltrim : function ( ) { for ( var a ; this . getFirst && ( a = this . getFirst ( ) ) ; ) { if ( a . type == CKEDITOR . NODE _TEXT ) { var e = CKEDITOR . tools . ltrim ( a . getText ( ) ) , c = a . getLength ( ) ; if ( e ) e . length < c && ( a . split ( c - e . length ) , this . $ . removeChild ( this . $ . firstChild ) ) ; else { a . remove ( ) ; continue } } break } } ,
e ) } , remove : function ( a ) { var e = this . $ , c = e . parentNode ; if ( c ) { if ( a ) for ( ; a = e . firstChild ; ) c . insertBefore ( e . removeChild ( a ) , e ) ; c . removeChild ( e ) } return this } , replace : function ( a ) { this . insertBefore ( a ) ; a . remove ( ) } , trim : function ( ) { this . ltrim ( ) ; this . rtrim ( ) } , ltrim : function ( ) { for ( var a ; this . getFirst && ( a = this . getFirst ( ) ) ; ) { if ( a . type == CKEDITOR . NODE _TEXT ) { var e = CKEDITOR . tools . ltrim ( a . getText ( ) ) , c = a . getLength ( ) ; if ( e ) e . length < c && ( a . split ( c - e . length ) , this . $ . removeChild ( this . $ . firstChild ) ) ; else { a . remove ( ) ; continue } } break } } ,
rtrim : function ( ) { for ( var a ; this . getLast && ( a = this . getLast ( ) ) ; ) { if ( a . type == CKEDITOR . NODE _TEXT ) { var e = CKEDITOR . tools . rtrim ( a . getText ( ) ) , c = a . getLength ( ) ; if ( e ) e . length < c && ( a . split ( e . length ) , this . $ . lastChild . parentNode . removeChild ( this . $ . lastChild ) ) ; else { a . remove ( ) ; continue } } break } CKEDITOR . env . needsBrFiller && ( a = this . $ . lastChild ) && 1 == a . type && "br" == a . nodeName . toLowerCase ( ) && a . parentNode . removeChild ( a ) } , isReadOnly : function ( a ) { var e = this ; this . type != CKEDITOR . NODE _ELEMENT && ( e = this . getParent ( ) ) ; CKEDITOR . env . edge &&
rtrim : function ( ) { for ( var a ; this . getLast && ( a = this . getLast ( ) ) ; ) { if ( a . type == CKEDITOR . NODE _TEXT ) { var e = CKEDITOR . tools . rtrim ( a . getText ( ) ) , c = a . getLength ( ) ; if ( e ) e . length < c && ( a . split ( e . length ) , this . $ . lastChild . parentNode . removeChild ( this . $ . lastChild ) ) ; else { a . remove ( ) ; continue } } break } CKEDITOR . env . needsBrFiller && ( a = this . $ . lastChild ) && 1 == a . type && "br" == a . nodeName . toLowerCase ( ) && a . parentNode . removeChild ( a ) } , isReadOnly : function ( a ) { var e = this ; this . type != CKEDITOR . NODE _ELEMENT && ( e = this . getParent ( ) ) ; CKEDITOR . env . edge &&
e && e . is ( "textarea" )&& ( a = ! 0 ) ; if ( ! a && e && "undefined" != typeof e . $ . isContentEditable ) return ! ( e . $ . isContentEditable || e . data ( "cke-editable" ) ) ; for ( ; e ; ) { if ( e . data ( "cke-editable" ) ) return ! 1 ; if ( e . hasAttribute ( "contenteditable" ) ) return "false" == e . getAttribute ( "contenteditable" ) ; e = e . getParent ( ) } return ! 0 } } ) , CKEDITOR . dom . window = function ( a ) { CKEDITOR . dom . domObject . call ( this , a ) } , CKEDITOR . dom . window . prototype = new CKEDITOR . dom . domObject , CKEDITOR . tools . extend ( CKEDITOR . dom . window . prototype , { focus : function ( ) { this . $ . focus ( ) } ,
e && e . is ( "textarea" ,"input" )&& ( a = ! 0 ) ; if ( ! a && e && "undefined" != typeof e . $ . isContentEditable ) return ! ( e . $ . isContentEditable || e . data ( "cke-editable" ) ) ; for ( ; e ; ) { if ( e . data ( "cke-editable" ) ) return ! 1 ; if ( e . hasAttribute ( "contenteditable" ) ) return "false" == e . getAttribute ( "contenteditable" ) ; e = e . getParent ( ) } return ! 0 } } ) , CKEDITOR . dom . window = function ( a ) { CKEDITOR . dom . domObject . call ( this , a ) } , CKEDITOR . dom . window . prototype = new CKEDITOR . dom . domObject , CKEDITOR . tools . extend ( CKEDITOR . dom . window . prototype , { focus : function ( ) { this . $ . focus ( ) } ,
getViewPaneSize : function ( ) { var a = this . $ . document , e = "CSS1Compat" == a . compatMode ; return { width : ( e ? a . documentElement . clientWidth : a . body . clientWidth ) || 0 , height : ( e ? a . documentElement . clientHeight : a . body . clientHeight ) || 0 } } , getScrollPosition : function ( ) { var a = this . $ ; if ( "pageXOffset" in a ) return { x : a . pageXOffset || 0 , y : a . pageYOffset || 0 } ; a = a . document ; return { x : a . documentElement . scrollLeft || a . body . scrollLeft || 0 , y : a . documentElement . scrollTop || a . body . scrollTop || 0 } } , getFrame : function ( ) { var a = this . $ . frameElement ; return a ?
getViewPaneSize : function ( ) { var a = this . $ . document , e = "CSS1Compat" == a . compatMode ; return { width : ( e ? a . documentElement . clientWidth : a . body . clientWidth ) || 0 , height : ( e ? a . documentElement . clientHeight : a . body . clientHeight ) || 0 } } , getScrollPosition : function ( ) { var a = this . $ ; if ( "pageXOffset" in a ) return { x : a . pageXOffset || 0 , y : a . pageYOffset || 0 } ; a = a . document ; return { x : a . documentElement . scrollLeft || a . body . scrollLeft || 0 , y : a . documentElement . scrollTop || a . body . scrollTop || 0 } } , getFrame : function ( ) { var a = this . $ . frameElement ; return a ?
new CKEDITOR . dom . element . get ( a ) : null } } ) , CKEDITOR . dom . document = function ( a ) { CKEDITOR . dom . domObject . call ( this , a ) } , CKEDITOR . dom . document . prototype = new CKEDITOR . dom . domObject , CKEDITOR . tools . extend ( CKEDITOR . dom . document . prototype , { type : CKEDITOR . NODE _DOCUMENT , appendStyleSheet : function ( a ) { if ( this . $ . createStyleSheet ) this . $ . createStyleSheet ( a ) ; else { var e = new CKEDITOR . dom . element ( "link" ) ; e . setAttributes ( { rel : "stylesheet" , type : "text/css" , href : a } ) ; this . getHead ( ) . append ( e ) } } , appendStyleText : function ( a ) { if ( this . $ . createStyleSheet ) { var e =
new CKEDITOR . dom . element . get ( a ) : null } } ) , CKEDITOR . dom . document = function ( a ) { CKEDITOR . dom . domObject . call ( this , a ) } , CKEDITOR . dom . document . prototype = new CKEDITOR . dom . domObject , CKEDITOR . tools . extend ( CKEDITOR . dom . document . prototype , { type : CKEDITOR . NODE _DOCUMENT , appendStyleSheet : function ( a ) { if ( this . $ . createStyleSheet ) this . $ . createStyleSheet ( a ) ; else { var e = new CKEDITOR . dom . element ( "link" ) ; e . setAttributes ( { rel : "stylesheet" , type : "text/css" , href : a } ) ; this . getHead ( ) . append ( e ) } } , appendStyleText : function ( a ) { if ( this . $ . createStyleSheet ) { var e =
this . $ . createStyleSheet ( "" ) ; e . cssText = a } else { var c = new CKEDITOR . dom . element ( "style" , this ) ; c . append ( new CKEDITOR . dom . text ( a , this ) ) ; this . getHead ( ) . append ( c ) } return e || c . $ . sheet } , createElement : function ( a , e ) { var c = new CKEDITOR . dom . element ( a , this ) ; e && ( e . attributes && c . setAttributes ( e . attributes ) , e . styles && c . setStyles ( e . styles ) ) ; return c } , createText : function ( a ) { return new CKEDITOR . dom . text ( a , this ) } , focus : function ( ) { this . getWindow ( ) . focus ( ) } , getActive : function ( ) { var a ; try { a = this . $ . activeElement } catch ( e ) { return null } return new CKEDITOR . dom . element ( a ) } ,
this . $ . createStyleSheet ( "" ) ; e . cssText = a } else { var c = new CKEDITOR . dom . element ( "style" , this ) ; c . append ( new CKEDITOR . dom . text ( a , this ) ) ; this . getHead ( ) . append ( c ) } return e || c . $ . sheet } , createElement : function ( a , e ) { var c = new CKEDITOR . dom . element ( a , this ) ; e && ( e . attributes && c . setAttributes ( e . attributes ) , e . styles && c . setStyles ( e . styles ) ) ; return c } , createText : function ( a ) { return new CKEDITOR . dom . text ( a , this ) } , focus : function ( ) { this . getWindow ( ) . focus ( ) } , getActive : function ( ) { var a ; try { a = this . $ . activeElement } catch ( e ) { return null } return new CKEDITOR . dom . element ( a ) } ,
@ -69,10 +69,10 @@ a);return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a))},getHead:fun
! 0 ) , this . setCustomData ( "html5ShivFrag" , a ) ) ; return a } } ) , CKEDITOR . dom . nodeList = function ( a ) { this . $ = a } , CKEDITOR . dom . nodeList . prototype = { count : function ( ) { return this . $ . length } , getItem : function ( a ) { return 0 > a || a >= this . $ . length ? null : ( a = this . $ [ a ] ) ? new CKEDITOR . dom . node ( a ) : null } } , CKEDITOR . dom . element = function ( a , e ) { "string" == typeof a && ( a = ( e ? e . $ : document ) . createElement ( a ) ) ; CKEDITOR . dom . domObject . call ( this , a ) } , CKEDITOR . dom . element . get = function ( a ) { return ( a = "string" == typeof a ? document . getElementById ( a ) || document . getElementsByName ( a ) [ 0 ] :
! 0 ) , this . setCustomData ( "html5ShivFrag" , a ) ) ; return a } } ) , CKEDITOR . dom . nodeList = function ( a ) { this . $ = a } , CKEDITOR . dom . nodeList . prototype = { count : function ( ) { return this . $ . length } , getItem : function ( a ) { return 0 > a || a >= this . $ . length ? null : ( a = this . $ [ a ] ) ? new CKEDITOR . dom . node ( a ) : null } } , CKEDITOR . dom . element = function ( a , e ) { "string" == typeof a && ( a = ( e ? e . $ : document ) . createElement ( a ) ) ; CKEDITOR . dom . domObject . call ( this , a ) } , CKEDITOR . dom . element . get = function ( a ) { return ( a = "string" == typeof a ? document . getElementById ( a ) || document . getElementsByName ( a ) [ 0 ] :
a ) && ( a . $ ? a : new CKEDITOR . dom . element ( a ) ) } , CKEDITOR . dom . element . prototype = new CKEDITOR . dom . node , CKEDITOR . dom . element . createFromHtml = function ( a , e ) { var c = new CKEDITOR . dom . element ( "div" , e ) ; c . setHtml ( a ) ; return c . getFirst ( ) . remove ( ) } , CKEDITOR . dom . element . setMarker = function ( a , e , c , g ) { var f = e . getCustomData ( "list_marker_id" ) || e . setCustomData ( "list_marker_id" , CKEDITOR . tools . getNextNumber ( ) ) . getCustomData ( "list_marker_id" ) , m = e . getCustomData ( "list_marker_names" ) || e . setCustomData ( "list_marker_names" , { } ) . getCustomData ( "list_marker_names" ) ;
a ) && ( a . $ ? a : new CKEDITOR . dom . element ( a ) ) } , CKEDITOR . dom . element . prototype = new CKEDITOR . dom . node , CKEDITOR . dom . element . createFromHtml = function ( a , e ) { var c = new CKEDITOR . dom . element ( "div" , e ) ; c . setHtml ( a ) ; return c . getFirst ( ) . remove ( ) } , CKEDITOR . dom . element . setMarker = function ( a , e , c , g ) { var f = e . getCustomData ( "list_marker_id" ) || e . setCustomData ( "list_marker_id" , CKEDITOR . tools . getNextNumber ( ) ) . getCustomData ( "list_marker_id" ) , m = e . getCustomData ( "list_marker_names" ) || e . setCustomData ( "list_marker_names" , { } ) . getCustomData ( "list_marker_names" ) ;
a [ f ] = e ; m [ c ] = 1 ; return e . setCustomData ( c , g ) } , CKEDITOR . dom . element . clearAllMarkers = function ( a ) { for ( var e in a ) CKEDITOR . dom . element . clearMarkers ( a , a [ e ] , 1 ) } , CKEDITOR . dom . element . clearMarkers = function ( a , e , c ) { var g = e . getCustomData ( "list_marker_names" ) , f = e . getCustomData ( "list_marker_id" ) , m ; for ( m in g ) e . removeCustomData ( m ) ; e . removeCustomData ( "list_marker_names" ) ; c && ( e . removeCustomData ( "list_marker_id" ) , delete a [ f ] ) } , function ( ) { function a ( a , b ) { return - 1 < ( " " + a + " " ) . replace ( m , " " ) . indexOf ( " " + b + " " ) } function e ( a ) { var b =
a [ f ] = e ; m [ c ] = 1 ; return e . setCustomData ( c , g ) } , CKEDITOR . dom . element . clearAllMarkers = function ( a ) { for ( var e in a ) CKEDITOR . dom . element . clearMarkers ( a , a [ e ] , 1 ) } , CKEDITOR . dom . element . clearMarkers = function ( a , e , c ) { var g = e . getCustomData ( "list_marker_names" ) , f = e . getCustomData ( "list_marker_id" ) , m ; for ( m in g ) e . removeCustomData ( m ) ; e . removeCustomData ( "list_marker_names" ) ; c && ( e . removeCustomData ( "list_marker_id" ) , delete a [ f ] ) } , function ( ) { function a ( a , b ) { return - 1 < ( " " + a + " " ) . replace ( m , " " ) . indexOf ( " " + b + " " ) } function e ( a ) { var b =
! 0 ; a . $ . id || ( a . $ . id = "cke_tmp_" + CKEDITOR . tools . getNextNumber ( ) , b = ! 1 ) ; return function ( ) { b || a . removeAttribute ( "id" ) } } function c ( a , b ) { return "#" + a . $ . id + " " + b . split ( /,\s*/ ) . join ( ", #" + a . $ . id + " " ) } function g ( a ) { for ( var b = 0 , d = 0 , h = l [ a ] . length ; d < h ; d ++ ) b += parseInt ( this . getComputedStyle ( l [ a ] [ d ] ) || 0 , 10 ) || 0 ; return b } var f = ! ! document . createElement ( " span ") . classList , m= /[\n\t\r]/g ; CKEDITOR . tools . extend ( CKEDITOR . dom . element . prototype , { type : CKEDITOR . NODE _ELEMENT , addClass : f ? function ( a ) { this . $ . classList . add ( a ) ; return this } :
! 0 ; a . $ . id || ( a . $ . id = "cke_tmp_" + CKEDITOR . tools . getNextNumber ( ) , b = ! 1 ) ; return function ( ) { b || a . removeAttribute ( "id" ) } } function c ( a , b ) { return "#" + a . $ . id + " " + b . split ( /,\s*/ ) . join ( ", #" + a . $ . id + " " ) } function g ( a ) { for ( var b = 0 , d = 0 , h = l [ a ] . length ; d < h ; d ++ ) b += parseInt ( this . getComputedStyle ( l [ a ] [ d ] ) || 0 , 10 ) || 0 ; return b } var f = document . createElement ( " _ ") . classList , f= "undefined" !== typeof f && null !== String ( f . add ) . match ( /\[Native code\]/gi ) , m= /[\n\t\r]/g ; CKEDITOR . tools . extend ( CKEDITOR . dom . element . prototype , { type : CKEDITOR . NODE _ELEMENT ,
function ( k ) { var b = this . $ . className ; b && ( a ( b , k ) || ( b += " " + k ) ) ; this . $ . className = b || k ; return this } , removeClass : f ? function ( a ) { var b = this . $ ; b . classList . remove ( a ) ; b . className || b . removeAttribute ( "class" ) ; return this } : function ( k ) { var b = this . getAttribute ( "class" ) ; b && a ( b , k ) && ( ( b = b . replace ( new RegExp ( "(?:^|\\s+)" + k + "(?\x3d\\s|$)" ) , "" ) . replace ( /^\s+/ , "" ) ) ? this . setAttribute ( "class" , b ) : this . removeAttribute ( "class" ) ) ; return this } , hasClass : function ( k ) { return a ( this . $ . className , k ) } , append : function ( a , b ) { "string" == typeof a &&
addClass : f ? function ( a ) { this . $ . classList . add ( a ) ; return this } : function ( k ) { var b = this . $ . className ; b && ( a ( b , k ) || ( b += " " + k ) ) ; this . $ . className = b || k ; return this } , removeClass : f ? function ( a ) { var b = this . $ ; b . classList . remove ( a ) ; b . className || b . removeAttribute ( "class" ) ; return this } : function ( k ) { var b = this . getAttribute ( "class" ) ; b && a ( b , k ) && ( ( b = b . replace ( new RegExp ( "(?:^|\\s+)" + k + "(?\x3d\\s|$)" ) , "" ) . replace ( /^\s+/ , "" ) ) ? this . setAttribute ( "class" , b ) : this . removeAttribute ( "class" ) ) ; return this } , hasClass : function ( k ) { return a ( this . $ . className ,
( a = this . getDocument ( ) . createElement ( a ) ) ; b ? this . $ . insertBefore ( a . $ , this . $ . firstChild ) : this . $ . appendChild ( a . $ ) ; return a } , appendHtml : function ( a ) { if ( this . $ . childNodes . length ) { var b = new CKEDITOR . dom . element ( "div" , this . getDocument ( ) ) ; b . setHtml ( a ) ; b . moveChildren ( this ) } else this . setHtml ( a ) } , appendText : function ( a ) { null != this . $ . text && CKEDITOR . env . ie && 9 > CKEDITOR . env . version ? this . $ . text += a : this . append ( new CKEDITOR . dom . text ( a ) ) } , appendBogus : function ( a ) { if ( a || CKEDITOR . env . needsBrFiller ) { for ( a = this . getLast ( ) ; a &&
k ) } , append : function ( a , b ) { "string" == typeof a && ( a = this . getDocument ( ) . createElement ( a ) ) ; b ? this . $ . insertBefore ( a . $ , this . $ . firstChild ) : this . $ . appendChild ( a . $ ) ; return a } , appendHtml : function ( a ) { if ( this . $ . childNodes . length ) { var b = new CKEDITOR . dom . element ( "div" , this . getDocument ( ) ) ; b . setHtml ( a ) ; b . moveChildren ( this ) } else this . setHtml ( a ) } , appendText : function ( a ) { null != this . $ . text && CKEDITOR . env . ie && 9 > CKEDITOR . env . version ? this . $ . text += a : this . append ( new CKEDITOR . dom . text ( a ) ) } , appendBogus : function ( a ) { if ( a || CKEDITOR . env . needsBrFiller ) { for ( a =
a . type == CKEDITOR . NODE _TEXT && ! CKEDITOR . tools . rtrim ( a . getText ( ) ) ; ) a = a . getPrevious ( ) ; a && a . is && a . is ( "br" ) || ( a = this . getDocument ( ) . createElement ( "br" ) , CKEDITOR . env . gecko && a . setAttribute ( "type" , "_moz" ) , this . append ( a ) ) } } , breakParent : function ( a , b ) { var d = new CKEDITOR . dom . range ( this . getDocument ( ) ) ; d . setStartAfter ( this ) ; d . setEndAfter ( a ) ; var h = d . extractContents ( ! 1 , b || ! 1 ) ; d . insertNode ( this . remove ( ) ) ; h . insertAfterNode ( this ) } , contains : document . compareDocumentPosition ? function ( a ) { return ! ! ( this . $ . compareDocumentPosition ( a . $ ) &
this . getLast ( ) ; a && a . type == CKEDITOR . NODE _TEXT && ! CKEDITOR . tools . rtrim ( a . getText ( ) ) ; ) a = a . getPrevious ( ) ; a && a . is && a . is ( "br" ) || ( a = this . getDocument ( ) . createElement ( "br" ) , CKEDITOR . env . gecko && a . setAttribute ( "type" , "_moz" ) , this . append ( a ) ) } } , breakParent : function ( a , b ) { var d = new CKEDITOR . dom . range ( this . getDocument ( ) ) ; d . setStartAfter ( this ) ; d . setEndAfter ( a ) ; var h = d . extractContents ( ! 1 , b || ! 1 ) ; d . insertNode ( this . remove ( ) ) ; h . insertAfterNode ( this ) } , contains : document . compareDocumentPosition ? function ( a ) { return ! ! ( this . $ . compareDocumentPosition ( a . $ ) &
16 ) } : function ( a ) { var b = this . $ ; return a . type != CKEDITOR . NODE _ELEMENT ? b . contains ( a . getParent ( ) . $ ) : b != a . $ && b . contains ( a . $ ) } , focus : function ( ) { function a ( ) { try { this . $ . focus ( ) } catch ( b ) { } } return function ( b ) { b ? CKEDITOR . tools . setTimeout ( a , 100 , this ) : a . call ( this ) } } ( ) , getHtml : function ( ) { var a = this . $ . innerHTML ; return CKEDITOR . env . ie ? a . replace ( /<\?[^>]*>/g , "" ) : a } , getOuterHtml : function ( ) { if ( this . $ . outerHTML ) return this . $ . outerHTML . replace ( /<\?[^>]*>/ , "" ) ; var a = this . $ . ownerDocument . createElement ( "div" ) ; a . appendChild ( this . $ . cloneNode ( ! 0 ) ) ;
16 ) } : function ( a ) { var b = this . $ ; return a . type != CKEDITOR . NODE _ELEMENT ? b . contains ( a . getParent ( ) . $ ) : b != a . $ && b . contains ( a . $ ) } , focus : function ( ) { function a ( ) { try { this . $ . focus ( ) } catch ( b ) { } } return function ( b ) { b ? CKEDITOR . tools . setTimeout ( a , 100 , this ) : a . call ( this ) } } ( ) , getHtml : function ( ) { var a = this . $ . innerHTML ; return CKEDITOR . env . ie ? a . replace ( /<\?[^>]*>/g , "" ) : a } , getOuterHtml : function ( ) { if ( this . $ . outerHTML ) return this . $ . outerHTML . replace ( /<\?[^>]*>/ , "" ) ; var a = this . $ . ownerDocument . createElement ( "div" ) ; a . appendChild ( this . $ . cloneNode ( ! 0 ) ) ;
return a . innerHTML } , getClientRect : function ( ) { var a = CKEDITOR . tools . extend ( { } , this . $ . getBoundingClientRect ( ) ) ; ! a . width && ( a . width = a . right - a . left ) ; ! a . height && ( a . height = a . bottom - a . top ) ; return a } , setHtml : CKEDITOR . env . ie && 9 > CKEDITOR . env . version ? function ( a ) { try { var b = this . $ ; if ( this . getParent ( ) ) return b . innerHTML = a ; var d = this . getDocument ( ) . _getHtml5ShivFrag ( ) ; d . appendChild ( b ) ; b . innerHTML = a ; d . removeChild ( b ) ; return a } catch ( h ) { this . $ . innerHTML = "" ; b = new CKEDITOR . dom . element ( "body" , this . getDocument ( ) ) ; b . $ . innerHTML =
return a . innerHTML } , getClientRect : function ( ) { var a = CKEDITOR . tools . extend ( { } , this . $ . getBoundingClientRect ( ) ) ; ! a . width && ( a . width = a . right - a . left ) ; ! a . height && ( a . height = a . bottom - a . top ) ; return a } , setHtml : CKEDITOR . env . ie && 9 > CKEDITOR . env . version ? function ( a ) { try { var b = this . $ ; if ( this . getParent ( ) ) return b . innerHTML = a ; var d = this . getDocument ( ) . _getHtml5ShivFrag ( ) ; d . appendChild ( b ) ; b . innerHTML = a ; d . removeChild ( b ) ; return a } catch ( h ) { this . $ . innerHTML = "" ; b = new CKEDITOR . dom . element ( "body" , this . getDocument ( ) ) ; b . $ . innerHTML =
a ; for ( b = b . getChildren ( ) ; b . count ( ) ; ) this . append ( b . getItem ( 0 ) ) ; return a } } : function ( a ) { return this . $ . innerHTML = a } , setText : function ( ) { var a = document . createElement ( "p" ) ; a . innerHTML = "x" ; a = a . textContent ; return function ( b ) { this . $ [ a ? "textContent" : "innerText" ] = b } } ( ) , getAttribute : function ( ) { var a = function ( a ) { return this . $ . getAttribute ( a , 2 ) } ; return CKEDITOR . env . ie && ( CKEDITOR . env . ie7Compat || CKEDITOR . env . quirks ) ? function ( a ) { switch ( a ) { case "class" : a = "className" ; break ; case "http-equiv" : a = "httpEquiv" ; break ; case "name" : return this . $ . name ;
a ; for ( b = b . getChildren ( ) ; b . count ( ) ; ) this . append ( b . getItem ( 0 ) ) ; return a } } : function ( a ) { return this . $ . innerHTML = a } , setText : function ( ) { var a = document . createElement ( "p" ) ; a . innerHTML = "x" ; a = a . textContent ; return function ( b ) { this . $ [ a ? "textContent" : "innerText" ] = b } } ( ) , getAttribute : function ( ) { var a = function ( a ) { return this . $ . getAttribute ( a , 2 ) } ; return CKEDITOR . env . ie && ( CKEDITOR . env . ie7Compat || CKEDITOR . env . quirks ) ? function ( a ) { switch ( a ) { case "class" : a = "className" ; break ; case "http-equiv" : a = "httpEquiv" ; break ; case "name" : return this . $ . name ;
@ -85,8 +85,8 @@ a.removeAttributes(["_moz_dirty","data-cke-expando","data-cke-saved-href","data-
a } , isVisible : function ( ) { var a = ( this . $ . offsetHeight || this . $ . offsetWidth ) && "hidden" != this . getComputedStyle ( "visibility" ) , b , d ; a && CKEDITOR . env . webkit && ( b = this . getWindow ( ) , ! b . equals ( CKEDITOR . document . getWindow ( ) ) && ( d = b . $ . frameElement ) && ( a = ( new CKEDITOR . dom . element ( d ) ) . isVisible ( ) ) ) ; return ! ! a } , isEmptyInlineRemoveable : function ( ) { if ( ! CKEDITOR . dtd . $removeEmpty [ this . getName ( ) ] ) return ! 1 ; for ( var a = this . getChildren ( ) , b = 0 , d = a . count ( ) ; b < d ; b ++ ) { var h = a . getItem ( b ) ; if ( h . type != CKEDITOR . NODE _ELEMENT || ! h . data ( "cke-bookmark" ) ) if ( h . type ==
a } , isVisible : function ( ) { var a = ( this . $ . offsetHeight || this . $ . offsetWidth ) && "hidden" != this . getComputedStyle ( "visibility" ) , b , d ; a && CKEDITOR . env . webkit && ( b = this . getWindow ( ) , ! b . equals ( CKEDITOR . document . getWindow ( ) ) && ( d = b . $ . frameElement ) && ( a = ( new CKEDITOR . dom . element ( d ) ) . isVisible ( ) ) ) ; return ! ! a } , isEmptyInlineRemoveable : function ( ) { if ( ! CKEDITOR . dtd . $removeEmpty [ this . getName ( ) ] ) return ! 1 ; for ( var a = this . getChildren ( ) , b = 0 , d = a . count ( ) ; b < d ; b ++ ) { var h = a . getItem ( b ) ; if ( h . type != CKEDITOR . NODE _ELEMENT || ! h . data ( "cke-bookmark" ) ) if ( h . type ==
CKEDITOR . NODE _ELEMENT && ! h . isEmptyInlineRemoveable ( ) || h . type == CKEDITOR . NODE _TEXT && CKEDITOR . tools . trim ( h . getText ( ) ) ) return ! 1 } return ! 0 } , hasAttributes : CKEDITOR . env . ie && ( CKEDITOR . env . ie7Compat || CKEDITOR . env . quirks ) ? function ( ) { for ( var a = this . $ . attributes , b = 0 ; b < a . length ; b ++ ) { var d = a [ b ] ; switch ( d . nodeName ) { case "class" : if ( this . getAttribute ( "class" ) ) return ! 0 ; case "data-cke-expando" : continue ; default : if ( d . specified ) return ! 0 } } return ! 1 } : function ( ) { var a = this . $ . attributes , b = a . length , d = { "data-cke-expando" : 1 , _moz _dirty : 1 } ;
CKEDITOR . NODE _ELEMENT && ! h . isEmptyInlineRemoveable ( ) || h . type == CKEDITOR . NODE _TEXT && CKEDITOR . tools . trim ( h . getText ( ) ) ) return ! 1 } return ! 0 } , hasAttributes : CKEDITOR . env . ie && ( CKEDITOR . env . ie7Compat || CKEDITOR . env . quirks ) ? function ( ) { for ( var a = this . $ . attributes , b = 0 ; b < a . length ; b ++ ) { var d = a [ b ] ; switch ( d . nodeName ) { case "class" : if ( this . getAttribute ( "class" ) ) return ! 0 ; case "data-cke-expando" : continue ; default : if ( d . specified ) return ! 0 } } return ! 1 } : function ( ) { var a = this . $ . attributes , b = a . length , d = { "data-cke-expando" : 1 , _moz _dirty : 1 } ;
return 0 < b && ( 2 < b || ! d [ a [ 0 ] . nodeName ] || 2 == b && ! d [ a [ 1 ] . nodeName ] ) } , hasAttribute : function ( ) { function a ( b ) { var d = this . $ . attributes . getNamedItem ( b ) ; if ( "input" == this . getName ( ) ) switch ( b ) { case "class" : return 0 < this . $ . className . length ; case "checked" : return ! ! this . $ . checked ; case "value" : return b = this . getAttribute ( "type" ) , "checkbox" == b || "radio" == b ? "on" != this . $ . value : ! ! this . $ . value } return d ? d . specified : ! 1 } return CKEDITOR . env . ie ? 8 > CKEDITOR . env . version ? function ( b ) { return "name" == b ? ! ! this . $ . name : a . call ( this , b ) } : a : function ( a ) { return ! ! this . $ . attributes . getNamedItem ( a ) } } ( ) ,
return 0 < b && ( 2 < b || ! d [ a [ 0 ] . nodeName ] || 2 == b && ! d [ a [ 1 ] . nodeName ] ) } , hasAttribute : function ( ) { function a ( b ) { var d = this . $ . attributes . getNamedItem ( b ) ; if ( "input" == this . getName ( ) ) switch ( b ) { case "class" : return 0 < this . $ . className . length ; case "checked" : return ! ! this . $ . checked ; case "value" : return b = this . getAttribute ( "type" ) , "checkbox" == b || "radio" == b ? "on" != this . $ . value : ! ! this . $ . value } return d ? d . specified : ! 1 } return CKEDITOR . env . ie ? 8 > CKEDITOR . env . version ? function ( b ) { return "name" == b ? ! ! this . $ . name : a . call ( this , b ) } : a : function ( a ) { return ! ! this . $ . attributes . getNamedItem ( a ) } } ( ) ,
hide : function ( ) { this . setStyle ( "display" , "none" ) } , moveChildren : function ( a , b ) { var d = this . $ ; a = a . $ ; if ( d != a ) { var h ; if ( b ) for ( ; h = d . lastChild ; ) a . insertBefore ( d . removeChild ( h ) , a . firstChild ) ; else for ( ; h = d . firstChild ; ) a . appendChild ( d . removeChild ( h ) ) } } , mergeSiblings : function ( ) { function a ( b , d , h ) { if ( d && d . type == CKEDITOR . NODE _ELEMENT ) { for ( var c = [ ] ; d . data ( "cke-bookmark" ) || d . isEmptyInlineRemoveable ( ) ; ) if ( c . push ( d ) , d = h ? d . getNext ( ) : d . getPrevious ( ) , ! d || d . type != CKEDITOR . NODE _ELEMENT ) return ; if ( b . isIdentical ( d ) ) { for ( var f =
hide : function ( ) { this . setStyle ( "display" , "none" ) } , moveChildren : function ( a , b ) { var d = this . $ ; a = a . $ ; if ( d != a ) { var h ; if ( b ) for ( ; h = d . lastChild ; ) a . insertBefore ( d . removeChild ( h ) , a . firstChild ) ; else for ( ; h = d . firstChild ; ) a . appendChild ( d . removeChild ( h ) ) } } , mergeSiblings : function ( ) { function a ( b , d , h ) { if ( d && d . type == CKEDITOR . NODE _ELEMENT ) { for ( var c = [ ] ; d . data ( "cke-bookmark" ) || d . isEmptyInlineRemoveable ( ) ; ) if ( c . push ( d ) , d = h ? d . getNext ( ) : d . getPrevious ( ) , ! d || d . type != CKEDITOR . NODE _ELEMENT ) return ; if ( b . isIdentical ( d ) ) { for ( var k =
h ? b . getLast ( ) : b . getFirst ( ) ; c . length ; ) c . shift ( ) . move ( b , ! h ) ; d . moveChildren ( b , ! h ) ; d . remove ( ) ; f&& f . type == CKEDITOR . NODE _ELEMENT && f . mergeSiblings ( ) } } } return function ( b ) { if ( ! 1 === b || CKEDITOR . dtd . $removeEmpty [ this . getName ( ) ] || this . is ( "a" ) ) a ( this , this . getNext ( ) , ! 0 ) , a ( this , this . getPrevious ( ) ) } } ( ) , show : function ( ) { this . setStyles ( { display : "" , visibility : "" } ) } , setAttribute : function ( ) { var a = function ( a , d ) { this . $ . setAttribute ( a , d ) ; return this } ; return CKEDITOR . env . ie && ( CKEDITOR . env . ie7Compat || CKEDITOR . env . quirks ) ? function ( b ,
h ? b . getLast ( ) : b . getFirst ( ) ; c . length ; ) c . shift ( ) . move ( b , ! h ) ; d . moveChildren ( b , ! h ) ; d . remove ( ) ; k&& k . type == CKEDITOR . NODE _ELEMENT && k . mergeSiblings ( ) } } } return function ( b ) { if ( ! 1 === b || CKEDITOR . dtd . $removeEmpty [ this . getName ( ) ] || this . is ( "a" ) ) a ( this , this . getNext ( ) , ! 0 ) , a ( this , this . getPrevious ( ) ) } } ( ) , show : function ( ) { this . setStyles ( { display : "" , visibility : "" } ) } , setAttribute : function ( ) { var a = function ( a , d ) { this . $ . setAttribute ( a , d ) ; return this } ; return CKEDITOR . env . ie && ( CKEDITOR . env . ie7Compat || CKEDITOR . env . quirks ) ? function ( b ,
d ) { "class" == b ? this . $ . className = d : "style" == b ? this . $ . style . cssText = d : "tabindex" == b ? this . $ . tabIndex = d : "checked" == b ? this . $ . checked = d : "contenteditable" == b ? a . call ( this , "contentEditable" , d ) : a . apply ( this , arguments ) ; return this } : CKEDITOR . env . ie8Compat && CKEDITOR . env . secure ? function ( b , d ) { if ( "src" == b && d . match ( /^http:\/\// ) ) try { a . apply ( this , arguments ) } catch ( h ) { } else a . apply ( this , arguments ) ; return this } : a } ( ) , setAttributes : function ( a ) { for ( var b in a ) this . setAttribute ( b , a [ b ] ) ; return this } , setValue : function ( a ) { this . $ . value =
d ) { "class" == b ? this . $ . className = d : "style" == b ? this . $ . style . cssText = d : "tabindex" == b ? this . $ . tabIndex = d : "checked" == b ? this . $ . checked = d : "contenteditable" == b ? a . call ( this , "contentEditable" , d ) : a . apply ( this , arguments ) ; return this } : CKEDITOR . env . ie8Compat && CKEDITOR . env . secure ? function ( b , d ) { if ( "src" == b && d . match ( /^http:\/\// ) ) try { a . apply ( this , arguments ) } catch ( h ) { } else a . apply ( this , arguments ) ; return this } : a } ( ) , setAttributes : function ( a ) { for ( var b in a ) this . setAttribute ( b , a [ b ] ) ; return this } , setValue : function ( a ) { this . $ . value =
a ; return this } , removeAttribute : function ( ) { var a = function ( a ) { this . $ . removeAttribute ( a ) } ; return CKEDITOR . env . ie && ( CKEDITOR . env . ie7Compat || CKEDITOR . env . quirks ) ? function ( a ) { "class" == a ? a = "className" : "tabindex" == a ? a = "tabIndex" : "contenteditable" == a && ( a = "contentEditable" ) ; this . $ . removeAttribute ( a ) } : a } ( ) , removeAttributes : function ( a ) { if ( CKEDITOR . tools . isArray ( a ) ) for ( var b = 0 ; b < a . length ; b ++ ) this . removeAttribute ( a [ b ] ) ; else for ( b in a ) a . hasOwnProperty ( b ) && this . removeAttribute ( b ) } , removeStyle : function ( a ) { var b =
a ; return this } , removeAttribute : function ( ) { var a = function ( a ) { this . $ . removeAttribute ( a ) } ; return CKEDITOR . env . ie && ( CKEDITOR . env . ie7Compat || CKEDITOR . env . quirks ) ? function ( a ) { "class" == a ? a = "className" : "tabindex" == a ? a = "tabIndex" : "contenteditable" == a && ( a = "contentEditable" ) ; this . $ . removeAttribute ( a ) } : a } ( ) , removeAttributes : function ( a ) { if ( CKEDITOR . tools . isArray ( a ) ) for ( var b = 0 ; b < a . length ; b ++ ) this . removeAttribute ( a [ b ] ) ; else for ( b in a ) a . hasOwnProperty ( b ) && this . removeAttribute ( b ) } , removeStyle : function ( a ) { var b =
this . $ . style ; if ( b . removeProperty || "border" != a && "margin" != a && "padding" != a ) b . removeProperty ? b . removeProperty ( a ) : b . removeAttribute ( CKEDITOR . tools . cssStyleToDomStyle ( a ) ) , this . $ . style . cssText || this . removeAttribute ( "style" ) ; else { var d = [ "top" , "left" , "right" , "bottom" ] , h ; "border" == a && ( h = [ "color" , "style" , "width" ] ) ; for ( var b = [ ] , c = 0 ; c < d . length ; c ++ ) if ( h ) for ( var f = 0 ; f < h . length ; f ++ ) b . push ( [ a , d [ c ] , h [ f ] ] . join ( "-" ) ) ; else b . push ( [ a , d [ c ] ] . join ( "-" ) ) ; for ( a = 0 ; a < b . length ; a ++ ) this . removeStyle ( b [ a ] ) } } , setStyle : function ( a ,
this . $ . style ; if ( b . removeProperty || "border" != a && "margin" != a && "padding" != a ) b . removeProperty ? b . removeProperty ( a ) : b . removeAttribute ( CKEDITOR . tools . cssStyleToDomStyle ( a ) ) , this . $ . style . cssText || this . removeAttribute ( "style" ) ; else { var d = [ "top" , "left" , "right" , "bottom" ] , h ; "border" == a && ( h = [ "color" , "style" , "width" ] ) ; for ( var b = [ ] , c = 0 ; c < d . length ; c ++ ) if ( h ) for ( var f = 0 ; f < h . length ; f ++ ) b . push ( [ a , d [ c ] , h [ f ] ] . join ( "-" ) ) ; else b . push ( [ a , d [ c ] ] . join ( "-" ) ) ; for ( a = 0 ; a < b . length ; a ++ ) this . removeStyle ( b [ a ] ) } } , setStyle : function ( a ,
@ -172,38 +172,38 @@ h=h.block;!h&&q&&!this.enforceRealBlocks&&w[q.getName()]&&e.checkStartOfBlock()&
this . range . root ; for ( a = a . getNextSourceNode ( b , null , f ) ; ! m ( a ) ; ) a = a . getNextSourceNode ( b , null , f ) ; return a } } ; CKEDITOR . dom . range . prototype . createIterator = function ( ) { return new a ( this ) } } ( ) , CKEDITOR . command = function ( a , e ) { this . uiItems = [ ] ; this . exec = function ( c ) { if ( this . state == CKEDITOR . TRISTATE _DISABLED || ! this . checkAllowed ( ) ) return ! 1 ; this . editorFocus && a . focus ( ) ; return ! 1 === this . fire ( "exec" ) ? ! 0 : ! 1 !== e . exec . call ( this , a , c ) } ; this . refresh = function ( a , c ) { if ( ! this . readOnly && a . readOnly ) return ! 0 ; if ( this . context && ! c . isContextFor ( this . context ) ||
this . range . root ; for ( a = a . getNextSourceNode ( b , null , f ) ; ! m ( a ) ; ) a = a . getNextSourceNode ( b , null , f ) ; return a } } ; CKEDITOR . dom . range . prototype . createIterator = function ( ) { return new a ( this ) } } ( ) , CKEDITOR . command = function ( a , e ) { this . uiItems = [ ] ; this . exec = function ( c ) { if ( this . state == CKEDITOR . TRISTATE _DISABLED || ! this . checkAllowed ( ) ) return ! 1 ; this . editorFocus && a . focus ( ) ; return ! 1 === this . fire ( "exec" ) ? ! 0 : ! 1 !== e . exec . call ( this , a , c ) } ; this . refresh = function ( a , c ) { if ( ! this . readOnly && a . readOnly ) return ! 0 ; if ( this . context && ! c . isContextFor ( this . context ) ||
! this . checkAllowed ( ! 0 ) ) return this . disable ( ) , ! 0 ; this . startDisabled || this . enable ( ) ; this . modes && ! this . modes [ a . mode ] && this . disable ( ) ; return ! 1 === this . fire ( "refresh" , { editor : a , path : c } ) ? ! 0 : e . refresh && ! 1 !== e . refresh . apply ( this , arguments ) } ; var c ; this . checkAllowed = function ( g ) { return g || "boolean" != typeof c ? c = a . activeFilter . checkFeature ( this ) : c } ; CKEDITOR . tools . extend ( this , e , { modes : { wysiwyg : 1 } , editorFocus : 1 , contextSensitive : ! ! e . context , state : CKEDITOR . TRISTATE _DISABLED } ) ; CKEDITOR . event . call ( this ) } , CKEDITOR . command . prototype =
! this . checkAllowed ( ! 0 ) ) return this . disable ( ) , ! 0 ; this . startDisabled || this . enable ( ) ; this . modes && ! this . modes [ a . mode ] && this . disable ( ) ; return ! 1 === this . fire ( "refresh" , { editor : a , path : c } ) ? ! 0 : e . refresh && ! 1 !== e . refresh . apply ( this , arguments ) } ; var c ; this . checkAllowed = function ( g ) { return g || "boolean" != typeof c ? c = a . activeFilter . checkFeature ( this ) : c } ; CKEDITOR . tools . extend ( this , e , { modes : { wysiwyg : 1 } , editorFocus : 1 , contextSensitive : ! ! e . context , state : CKEDITOR . TRISTATE _DISABLED } ) ; CKEDITOR . event . call ( this ) } , CKEDITOR . command . prototype =
{ enable : function ( ) { this . state == CKEDITOR . TRISTATE _DISABLED && this . checkAllowed ( ) && this . setState ( this . preserveState && "undefined" != typeof this . previousState ? this . previousState : CKEDITOR . TRISTATE _OFF ) } , disable : function ( ) { this . setState ( CKEDITOR . TRISTATE _DISABLED ) } , setState : function ( a ) { if ( this . state == a || a != CKEDITOR . TRISTATE _DISABLED && ! this . checkAllowed ( ) ) return ! 1 ; this . previousState = this . state ; this . state = a ; this . fire ( "state" ) ; return ! 0 } , toggleState : function ( ) { this . state == CKEDITOR . TRISTATE _OFF ? this . setState ( CKEDITOR . TRISTATE _ON ) :
{ enable : function ( ) { this . state == CKEDITOR . TRISTATE _DISABLED && this . checkAllowed ( ) && this . setState ( this . preserveState && "undefined" != typeof this . previousState ? this . previousState : CKEDITOR . TRISTATE _OFF ) } , disable : function ( ) { this . setState ( CKEDITOR . TRISTATE _DISABLED ) } , setState : function ( a ) { if ( this . state == a || a != CKEDITOR . TRISTATE _DISABLED && ! this . checkAllowed ( ) ) return ! 1 ; this . previousState = this . state ; this . state = a ; this . fire ( "state" ) ; return ! 0 } , toggleState : function ( ) { this . state == CKEDITOR . TRISTATE _OFF ? this . setState ( CKEDITOR . TRISTATE _ON ) :
this . state == CKEDITOR . TRISTATE _ON && this . setState ( CKEDITOR . TRISTATE _OFF ) } } , CKEDITOR . event . implementOn ( CKEDITOR . command . prototype ) , CKEDITOR . ENTER _P = 1 , CKEDITOR . ENTER _BR = 2 , CKEDITOR . ENTER _DIV = 3 , CKEDITOR . config = { customConfig : "config.js" , autoUpdateElement : ! 0 , language : "" , defaultLanguage : "en" , contentsLangDirection : "" , enterMode : CKEDITOR . ENTER _P , forceEnterMode : ! 1 , shiftEnterMode : CKEDITOR . ENTER _BR , docType : "\x3c!DOCTYPE html\x3e" , bodyId : "" , bodyClass : "" , fullPage : ! 1 , height : 200 , extraPlugins: "" , removePlugins : "" , protectedSource : [ ] ,
this . state == CKEDITOR . TRISTATE _ON && this . setState ( CKEDITOR . TRISTATE _OFF ) } } , CKEDITOR . event . implementOn ( CKEDITOR . command . prototype ) , CKEDITOR . ENTER _P = 1 , CKEDITOR . ENTER _BR = 2 , CKEDITOR . ENTER _DIV = 3 , CKEDITOR . config = { customConfig : "config.js" , autoUpdateElement : ! 0 , language : "" , defaultLanguage : "en" , contentsLangDirection : "" , enterMode : CKEDITOR . ENTER _P , forceEnterMode : ! 1 , shiftEnterMode : CKEDITOR . ENTER _BR , docType : "\x3c!DOCTYPE html\x3e" , bodyId : "" , bodyClass : "" , fullPage : ! 1 , height : 200 , contentsCss: CKEDITOR . getUrl ( "contents.css" ) ,
tabIndex : 0 , width : "" , baseFloatZIndex : 1E4 , blockedKeystrokes : [ CKEDITOR . CTRL + 66 , CKEDITOR . CTRL + 73 , CKEDITOR . CTRL + 85 ] } , function ( ) { function a ( a , b , d , c , h ) { var f , g ; a = [ ] ; for ( f in b ) { g = b [ f ] ; g = "boolean" == typeof g ? { } : "function" == typeof g ? { match : g } : F ( g ) ; "$" != f . charAt ( 0 ) && ( g . elements = f ) ; d && ( g . featureName = d . toLowerCase ( ) ) ; var e = g ; e . elements = l ( e . elements , /\s+/ ) || null ; e . propertiesOnly = e . propertiesOnly || ! 0 === e . elements ; var n= /\s*,\s*/ , k = void 0 ; for ( k in N ) { e [ k] = l ( e [ k ] , n)|| null ; var r = e , m = E [ k ], p = l ( e [ E [ k ] ] , n ) , x = e [ k ] , q = [ ] ,
extraPlugins : "" , removePlugins : "" , protectedSource : [ ] , tabIndex : 0 , width : "" , baseFloatZIndex : 1E4 , blockedKeystrokes : [ CKEDITOR . CTRL + 66 , CKEDITOR . CTRL + 73 , CKEDITOR . CTRL + 85 ] } , function ( ) { function a ( a , b , d , c , h ) { var f , g ; a = [ ] ; for ( f in b ) { g = b [ f ] ; g = "boolean" == typeof g ? { } : "function" == typeof g ? { match : g } : F ( g ) ; "$" != f . charAt ( 0 ) && ( g . elements = f ) ; d && ( g . featureName = d . toLowerCase ( ) ) ; var e = g ; e . elements = l ( e . elements , /\s+/ ) || null ; e . propertiesOnly = e . propertiesOnly || ! 0 === e . elements ; var k= /\s*,\s*/ , n = void 0 ; for ( n in N ) { e [ n ]= l ( e [ n ] ,
C = ! 0 , B = void 0 ; p ? C = ! 1 : p = { } ; for ( B in x ) "!" == B . charAt ( 0 ) && ( B = B . slice ( 1 ) , q . push ( B ) , p [ B ] = ! 0 , C = ! 1 ) ; for ( ; B = q . pop ( ) ; ) x [ B ] = x [ "!" + B ] , delete x [ "!" + B ] ; r [ m ] = ( C ? ! 1 : p ) || null } e . match = e . match || null ; c . push ( g ) ; a . push ( g ) } b = h . elements ; h = h . generic ; var t ; d = 0 ; for ( c = a . length ; d < c ; ++ d ) { f = F ( a [ d ] ) ; g = ! 0 === f . classes || ! 0 === f . styles || ! 0 === f . attributes ; e = f ; k= m = n = void 0 ; for ( n in N ) e [ n ] = w ( e [ n ] ) ; r = ! 0 ; for ( k in E ) { n = E [ k ] ; m = e [ n ] ; p = [ ] ; x = void 0 ; for ( x in m ) - 1 < x . indexOf ( "*" ) ? p . push ( new RegExp ( "^" + x . replace ( /\*/g , ".*" ) + "$" ) ) : p . push ( x ) ; m = p ; m . length &&
k ) || null ; var r = e , m = E [ n ] , p = l ( e [ E [ n ] ] , k ) , x = e [ n ] , q = [ ] , C = ! 0 , B = void 0 ; p ? C = ! 1 : p = { } ; for ( B in x ) "!" == B . charAt ( 0 ) && ( B = B . slice ( 1 ) , q . push ( B ) , p [ B ] = ! 0 , C = ! 1 ) ; for ( ; B = q . pop ( ) ; ) x [ B ] = x [ "!" + B ] , delete x [ "!" + B ] ; r [ m ] = ( C ? ! 1 : p ) || null } e . match = e . match || null ; c . push ( g ) ; a . push ( g ) } b = h . elements ; h = h . generic ; var t ; d = 0 ; for ( c = a . length ; d < c ; ++ d ) { f = F ( a [ d ] ) ; g = ! 0 === f . classes || ! 0 === f . styles || ! 0 === f . attributes ; e = f ; n= m = k = void 0 ; for ( k in N ) e [ k ] = w ( e [ k ] ) ; r = ! 0 ; for ( n in E ) { k = E [ n ] ; m = e [ k ] ; p = [ ] ; x = void 0 ; for ( x in m ) - 1 < x . indexOf ( "*" ) ? p . push ( new RegExp ( "^" +
( e [ n ] = m , r = ! 1 ) } e . nothingRequired = r ; e . noProperties = ! ( e . attributes || e . classes || e . styles ) ; if ( ! 0 === f . elements || null === f . elements ) h [ g ? "unshift" : "push" ] ( f ) ; else for ( t in e = f . elements , delete f . elements , e ) if ( b [ t ] ) b [ t ] [ g ? "unshift" : "push" ] ( f ) ; else b [ t ] = [ f ] } } function e ( a , b , d , h ) { if ( ! a . match || a . match ( b ) ) if ( h || k ( a , b ) ) if ( a . propertiesOnly || ( d . valid = ! 0 ) , d . allAttributes || ( d . allAttributes = c ( a . attributes , b . attributes , d . validAttributes ) ) , d . allStyles || ( d . allStyles = c ( a . styles , b . styles , d . validStyles ) ) , ! d . allClasses ) { a = a . classes ;
x . replace ( /\*/g , ".*" ) + "$" ) ) : p . push ( x ) ; m = p ; m . length && ( e [ k ] = m , r = ! 1 ) } e . nothingRequired = r ; e . noProperties = ! ( e . attributes || e . classes || e . styles ) ; if ( ! 0 === f . elements || null === f . elements ) h [ g ? "unshift" : "push" ] ( f ) ; else for ( t in e = f . elements , delete f . elements , e ) if ( b [ t ] ) b [ t ] [ g ? "unshift" : "push" ] ( f ) ; else b [ t ] = [ f ] } } function e ( a , b , d , h ) { if ( ! a . match || a . match ( b ) ) if ( h || k ( a , b ) ) if ( a . propertiesOnly || ( d . valid = ! 0 ) , d . allAttributes || ( d . allAttributes = c ( a . attributes , b . attributes , d . validAttributes ) ) , d . allStyles || ( d . allStyles = c ( a . styles ,
b = b . classes ; h = d . validClasses ; if ( a ) if ( ! 0 === a ) a = ! 0 ; else { for ( var f = 0 , g = b . length , e ; f < g ; ++ f ) e = b [ f ] , h [ e ] || ( h [ e ] = a ( e ) ) ; a = ! 1 } else a = ! 1 ; d . allClasses = a } } function c ( a , b , d ) { if ( ! a ) return ! 1 ; if ( ! 0 === a ) return ! 0 ; for ( var c in b ) d [ c ] || ( d [ c ] = a ( c ) ) ; return ! 1 } function g ( a , b , d ) { if ( ! a . match || a . match ( b ) ) { if ( a . noProperties ) return ! 1 ; d . hadInvalidAttribute = f ( a . attributes , b . attributes ) || d . hadInvalidAttribute ; d . hadInvalidStyle = f ( a . styles , b . styles ) || d . hadInvalidStyle ; a = a . classes ; b = b . classes ; if ( a ) { for ( var c = ! 1 , h = ! 0 === a , g = b . length ; g -- ; ) if ( h ||
b . styles , d . validStyles ) ) , ! d . allClasses ) { a = a . classes ; b = b . classes ; h = d . validClasses ; if ( a ) if ( ! 0 === a ) a = ! 0 ; else { for ( var f = 0 , g = b . length , e ; f < g ; ++ f ) e = b [ f ] , h [ e ] || ( h [ e ] = a ( e ) ) ; a = ! 1 } else a = ! 1 ; d . allClasses = a } } function c ( a , b , d ) { if ( ! a ) return ! 1 ; if ( ! 0 === a ) return ! 0 ; for ( var c in b ) d [ c ] || ( d [ c ] = a ( c ) ) ; return ! 1 } function g ( a , b , d ) { if ( ! a . match || a . match ( b ) ) { if ( a . noProperties ) return ! 1 ; d . hadInvalidAttribute = f ( a . attributes , b . attributes ) || d . hadInvalidAttribute ; d . hadInvalidStyle = f ( a . styles , b . styles ) || d . hadInvalidStyle ; a = a . classes ;
a ( b [ g ] ) ) b . splice ( g , 1 ) , c = ! 0 ; a = c } else a = ! 1 ; d . hadInvalidClass = a || d . hadInvalidClass } } function f ( a , b ) { if ( ! a ) return ! 1 ; var d = ! 1 , c = ! 0 === a , h ; for ( h in b ) if ( c || a ( h ) ) delete b [ h ] , d = ! 0 ; return d } function m ( a , b , d ) { if ( a . disabled || a . customConfig && ! d || ! b ) return ! 1 ; a . _ . cachedChecks = { } ; return ! 0 } function l ( a , b ) { if ( ! a ) return ! 1 ; if ( ! 0 === a ) return a ; if ( "string" == typeof a ) return a = J ( a ) , "*" == a ? ! 0 : CKEDITOR . tools . convertArrayToObject ( a . split ( b ) ) ; if ( CKEDITOR . tools . isArray ( a ) ) return a . length ? CKEDITOR . tools . convertArrayToObject ( a ) :
b = b . classes ; if ( a ) { for ( var c = ! 1 , h = ! 0 === a , g = b . length ; g -- ; ) if ( h || a ( b [ g ] ) ) b . splice ( g , 1 ) , c = ! 0 ; a = c } else a = ! 1 ; d . hadInvalidClass = a || d . hadInvalidClass } } function f ( a , b ) { if ( ! a ) return ! 1 ; var d = ! 1 , c = ! 0 === a , h ; for ( h in b ) if ( c || a ( h ) ) delete b [ h ] , d = ! 0 ; return d } function m ( a , b , d ) { if ( a . disabled || a . customConfig && ! d || ! b ) return ! 1 ; a . _ . cachedChecks = { } ; return ! 0 } function l ( a , b ) { if ( ! a ) return ! 1 ; if ( ! 0 === a ) return a ; if ( "string" == typeof a ) return a = J ( a ) , "*" == a ? ! 0 : CKEDITOR . tools . convertArrayToObject ( a . split ( b ) ) ; if ( CKEDITOR . tools . isArray ( a ) ) return a . length ?
! 1 ; var d = { } , c = 0 , h ; for ( h in a ) d [ h ] = a [ h ] , c ++ ; return c ? d : ! 1 } function k ( a , d ) { if ( a . nothingRequired ) return ! 0 ; var c , h , f , g ; if ( f = a . requiredClasses ) for ( g = d . classes , c = 0 ; c < f . length ; ++ c ) if ( h = f [ c ] , "string" == typeof h ) { if ( - 1 == CKEDITOR . tools . indexOf ( g , h ) ) return ! 1 } else if ( ! CKEDITOR . tools . checkIfAnyArrayItemMatches ( g , h ) ) return ! 1 ; return b ( d . styles , a . requiredStyles ) && b ( d . attributes , a . requiredAttributes ) } function b ( a , b ) { if ( ! b ) return ! 0 ; for ( var d = 0 , c ; d < b . length ; ++ d ) if ( c = b [ d ] , "string" == typeof c ) { if ( ! ( c in a ) ) return ! 1 } else if ( ! CKEDITOR . tools . checkIfAnyObjectPropertyMatches ( a ,
CKEDITOR . tools . convertArrayToObject ( a ) : ! 1 ; var d = { } , c = 0 , h ; for ( h in a ) d [ h ] = a [ h ] , c ++ ; return c ? d : ! 1 } function k ( a , d ) { if ( a . nothingRequired ) return ! 0 ; var c , h , f , g ; if ( f = a . requiredClasses ) for ( g = d . classes , c = 0 ; c < f . length ; ++ c ) if ( h = f [ c ] , "string" == typeof h ) { if ( - 1 == CKEDITOR . tools . indexOf ( g , h ) ) return ! 1 } else if ( ! CKEDITOR . tools . checkIfAnyArrayItemMatches ( g , h ) ) return ! 1 ; return b ( d . styles , a . requiredStyles ) && b ( d . attributes , a . requiredAttributes ) } function b ( a , b ) { if ( ! b ) return ! 0 ; for ( var d = 0 , c ; d < b . length ; ++ d ) if ( c = b [ d ] , "string" ==
c ) ) return ! 1 ; return ! 0 } function d ( a ) { if ( ! a ) return { } ; a = a . split ( /\s*,\s*/ ) . sort ( ) ; for ( var b = { } ; a . length ; ) b [ a . shift ( ) ] = "cke-test" ; return b } function h ( a ) { var b , d , c , h , f = { } , g = 1 ; for ( a = J ( a ) ; b = a . match ( P ) ; ) ( d = b [ 2 ] ) ? ( c = p ( d , "styles" ) , h = p ( d , "attrs" ) , d = p ( d , "classes" ) ) : c = h = d = null , f [ "$" + g ++ ] = { elements : b [ 1 ] , classes : d , styles : c , attributes : h } , a = a . slice ( b [ 0 ] . length ) ; return f } function p ( a , b ) { var d = a . match ( T [ b ] ) ; return d ? J ( d [ 1 ] ) : null } function v ( a ) { var b = a . styleBackup = a . attributes . style , d = a . classBackup = a . attributes [ "class" ] ;
typeof c ) { if ( ! ( c in a ) ) return ! 1 } else if ( ! CKEDITOR . tools . checkIfAnyObjectPropertyMatches ( a , c ) ) return ! 1 ; return ! 0 } function d ( a ) { if ( ! a ) return { } ; a = a . split ( /\s*,\s*/ ) . sort ( ) ; for ( var b = { } ; a . length ; ) b [ a . shift ( ) ] = "cke-test" ; return b } function h ( a ) { var b , d , c , h , f = { } , g = 1 ; for ( a = J ( a ) ; b = a . match ( P ) ; ) ( d = b [ 2 ] ) ? ( c = p ( d , "styles" ) , h = p ( d , "attrs" ) , d = p ( d , "classes" ) ) : c = h = d = null , f [ "$" + g ++ ] = { elements : b [ 1 ] , classes : d , styles : c , attributes : h } , a = a . slice ( b [ 0 ] . length ) ; return f } function p ( a , b ) { var d = a . match ( T [ b ] ) ; return d ? J ( d [ 1 ] ) : null }
a . styles || ( a . styles = CKEDITOR . tools . parseCssText ( b || "" , 1 ) ) ; a . classes || ( a . classes = d ? d . split ( /\s+/ ) : [ ] ) } function u ( a , b , d , c ) { var h = 0 , f ; c . toHtml && ( b . name = b . name . replace ( L , "$1" ) ) ; if ( c . doCallbacks && a . elementCallbacks ) { a : { f = a . elementCallbacks ; for ( var k = 0 , r = f . length , m ; k < r ; ++ k ) if ( m = f [ k ] ( b ) ) { f = m ; break a } f = void 0 } if ( f ) return f } if ( c . doTransform && ( f = a . _ . transformations [ b . name ] ) ) { v ( b ) ; for ( k = 0 ; k < f . length ; ++ k ) x ( a , b , f [ k ] ) ; n ( b ) } if ( c . doFilter ) { a : { k = b . name ; r = a . _ ; a = r . allowedRules . elements [ k ] ; f = r . allowedRules . generic ; k =
function v ( a ) { var b = a . styleBackup = a . attributes . style , d = a . classBackup = a . attributes [ "class" ] ; a . styles || ( a . styles = CKEDITOR . tools . parseCssText ( b || "" , 1 ) ) ; a . classes || ( a . classes = d ? d . split ( /\s+/ ) : [ ] ) } function u ( a , b , d , c ) { var h = 0 , f ; c . toHtml && ( b . name = b . name . replace ( L , "$1" ) ) ; if ( c . doCallbacks && a . elementCallbacks ) { a : { f = a . elementCallbacks ; for ( var k = 0 , r = f . length , m ; k < r ; ++ k ) if ( m = f [ k ] ( b ) ) { f = m ; break a } f = void 0 } if ( f ) return f } if ( c . doTransform && ( f = a . _ . transformations [ b . name ] ) ) { v ( b ) ; for ( k = 0 ; k < f . length ; ++ k ) x ( a , b , f [ k ] ) ; n ( b ) } if ( c . doFilter ) { a : { k =
r . disallowedRules . elements [ k ] ; r = r . disallowedRules . generic ; m = c . skipRequired ; var p = { valid : ! 1 , validAttributes : { } , validClasses : { } , validStyles : { } , allAttributes : ! 1 , allClasses : ! 1 , allStyles : ! 1 , hadInvalidAttribute : ! 1 , hadInvalidClass : ! 1 , hadInvalidStyle : ! 1 } , E , l ; if ( a || f ) { v ( b ) ; if ( k ) for ( E = 0 , l = k . length ; E < l ; ++ E ) if ( ! 1 === g ( k [ E ] , b , p ) ) { a = null ; break a } if ( r ) for ( E = 0 , l = r . length ; E < l ; ++ E ) g ( r [ E ] , b , p ) ; if ( a ) for ( E = 0 , l = a . length ; E < l ; ++ E ) e ( a [ E ] , b , p , m ) ; if ( f ) for ( E = 0 , l = f . length ; E < l ; ++ E ) e ( f [ E ] , b , p , m ) ; a = p } else a = null } if ( ! a || ! a . valid ) return d . push ( b ) ,
b . name ; r = a . _ ; a = r . allowedRules . elements [ k ] ; f = r . allowedRules . generic ; k = r . disallowedRules . elements [ k ] ; r = r . disallowedRules . generic ; m = c . skipRequired ; var p = { valid : ! 1 , validAttributes : { } , validClasses : { } , validStyles : { } , allAttributes : ! 1 , allClasses : ! 1 , allStyles : ! 1 , hadInvalidAttribute : ! 1 , hadInvalidClass : ! 1 , hadInvalidStyle : ! 1 } , E , l ; if ( a || f ) { v ( b ) ; if ( k ) for ( E = 0 , l = k . length ; E < l ; ++ E ) if ( ! 1 === g ( k [ E ] , b , p ) ) { a = null ; break a } if ( r ) for ( E = 0 , l = r . length ; E < l ; ++ E ) g ( r [ E ] , b , p ) ; if ( a ) for ( E = 0 , l = a . length ; E < l ; ++ E ) e ( a [ E ] , b , p , m ) ; if ( f ) for ( E =
1 ; l = a . validAttributes ; var B = a . validStyles ; f = a . validClasses ; var k = b . attributes , C = b . styles , r = b . classes ; m = b . classBackup ; var w = b . styleBackup , t , z , A = [ ] , p = [ ] , u = /^data-cke-/ ; E = ! 1 ; delete k . style ; delete k [ "class" ] ; delete b . classBackup ; delete b . styleBackup ; if ( ! a . allAttributes ) for ( t in k ) l [ t ] || ( u . test ( t ) ? t == ( z = t . replace ( /^data-cke-saved-/ , "" ) ) || l [ z ] || ( delete k [ t ] , E = ! 0 ) : ( delete k [ t ] , E = ! 0 ) ) ; if ( ! a . allStyles || a . hadInvalidStyle ) { for ( t in C ) a . allStyles || B [ t ] ? A . push ( t + ":" + C [ t ] ) : E = ! 0 ; A . length && ( k . style = A . sort ( ) . join ( "; " ) ) } else w &&
0 , l = f . length ; E < l ; ++ E ) e ( f [ E ] , b , p , m ) ; a = p } else a = null } if ( ! a || ! a . valid ) return d . push ( b ) , 1 ; l = a . validAttributes ; var B = a . validStyles ; f = a . validClasses ; var k = b . attributes , C = b . styles , r = b . classes ; m = b . classBackup ; var w = b . styleBackup , t , z , A = [ ] , p = [ ] , u = /^data-cke-/ ; E = ! 1 ; delete k . style ; delete k [ "class" ] ; delete b . classBackup ; delete b . styleBackup ; if ( ! a . allAttributes ) for ( t in k ) l [ t ] || ( u . test ( t ) ? t == ( z = t . replace ( /^data-cke-saved-/ , "" ) ) || l [ z ] || ( delete k [ t ] , E = ! 0 ) : ( delete k [ t ] , E = ! 0 ) ) ; if ( ! a . allStyles || a . hadInvalidStyle ) { for ( t in C ) a . allStyles ||
( k . style = w ) ; if ( ! a . allClasses || a . hadInvalidClass ) { for ( t = 0 ; t < r . length ; ++ t ) ( a . allClasses || f [ r [ t ] ] ) && p . push ( r [ t ] ) ; p . length && ( k [ "class" ] = p . sort ( ) . join ( " " ) ) ; m && p . length < m . split ( /\s+/ ) . length && ( E = ! 0 ) } else m && ( k [ "class" ] = m ) ; E && ( h = 1 ) ; if ( ! c . skipFinalValidation && ! q ( b ) ) return d . push ( b ) , 1 } c . toHtml && ( b . name = b . name . replace ( Q , "cke:$1" ) ) ; return h } function t ( a ) { var b = [ ] , d ; for ( d in a ) - 1 < d . indexOf ( "*" ) && b . push ( d . replace ( /\*/g , ".*" ) ) ; return b . length ? new RegExp ( "^(?:" + b . join ( "|" ) + ")$" ) : null } function n ( a ) { var b = a . attributes ,
B [ t ] ? A . push ( t + ":" + C [ t ] ) : E = ! 0 ; A . length && ( k . style = A . sort ( ) . join ( "; " ) ) } else w && ( k . style = w ) ; if ( ! a . allClasses || a . hadInvalidClass ) { for ( t = 0 ; t < r . length ; ++ t ) ( a . allClasses || f [ r [ t ] ] ) && p . push ( r [ t ] ) ; p . length && ( k [ "class" ] = p . sort ( ) . join ( " " ) ) ; m && p . length < m . split ( /\s+/ ) . length && ( E = ! 0 ) } else m && ( k [ "class" ] = m ) ; E && ( h = 1 ) ; if ( ! c . skipFinalValidation && ! q ( b ) ) return d . push ( b ) , 1 } c . toHtml && ( b . name = b . name . replace ( Q , "cke:$1" ) ) ; return h } function t ( a ) { var b = [ ] , d ; for ( d in a ) - 1 < d . indexOf ( "*" ) && b . push ( d . replace ( /\*/g , ".*" ) ) ; return b . length ?
d ; delete b . style ; delete b [ "class" ] ; if ( d = CKEDITOR . tools . writeCssText ( a . styles , ! 0 ) ) b . style = d ; a . classes . length && ( b [ "class" ] = a . classes . sort ( ) . join ( " " ) ) } function q ( a ) { switch ( a . name ) { case "a" : if ( ! ( a . children . length || a . attributes . name || a . attributes . id ) ) return ! 1 ; break ; case "img" : if ( ! a . attributes . src ) return ! 1 } return ! 0 } function w ( a ) { if ( ! a ) return ! 1 ; if ( ! 0 === a ) return ! 0 ; var b = t ( a ) ; return function ( d ) { return d in a || b && d . match ( b ) } } function y ( ) { return new CKEDITOR . htmlParser . element ( "br" ) } function C ( a ) { return a . type ==
new RegExp ( "^(?:" + b . join ( "|" ) + ")$" ) : null } function n ( a ) { var b = a . attributes , d ; delete b . style ; delete b [ "class" ] ; if ( d = CKEDITOR . tools . writeCssText ( a . styles , ! 0 ) ) b . style = d ; a . classes . length && ( b [ "class" ] = a . classes . sort ( ) . join ( " " ) ) } function q ( a ) { switch ( a . name ) { case "a" : if ( ! ( a . children . length || a . attributes . name || a . attributes . id ) ) return ! 1 ; break ; case "img" : if ( ! a . attributes . src ) return ! 1 } return ! 0 } function w ( a ) { if ( ! a ) return ! 1 ; if ( ! 0 === a ) return ! 0 ; var b = t ( a ) ; return function ( d ) { return d in a || b && d . match ( b ) } } function y ( ) { return new CKEDITOR . htmlParser . element ( "br" ) }
CKEDITOR . NODE _ELEMENT && ( "br" == a . name || G . $block [ a . name ] ) } function r ( a , b , d ) { var c = a . name ; if ( G . $empty [ c ] || ! a . children . length ) "hr" == c && "br" == b ? a . replaceWith ( y ( ) ) : ( a . parent && d . push ( { check : "it" , el : a . parent } ) , a . remove ( ) ) ; else if ( G . $block [ c ] || "tr" == c ) if ( "br" == b ) a . previous && ! C ( a . previous ) && ( b = y ( ) , b . insertBefore ( a ) ) , a . next && ! C ( a . next ) && ( b = y ( ) , b . insertAfter ( a ) ) , a . replaceWithChildren ( ) ; else { var c = a . children , h ; b : { h = G [ b ] ; for ( var f = 0 , g = c . length , e ; f < g ; ++ f ) if ( e= c [ f ] , e . type == CKEDITOR . NODE _ELEMENT && ! h [ e . name ] ) { h = ! 1 ;
function C ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && ( "br" == a . name || G . $block [ a . name ] ) } function r ( a , b , d ) { var c = a . name ; if ( G . $empty [ c ] || ! a . children . length ) "hr" == c && "br" == b ? a . replaceWith ( y ( ) ) : ( a . parent && d . push ( { check : "it" , el : a . parent } ) , a . remove ( ) ) ; else if ( G . $block [ c ] || "tr" == c ) if ( "br" == b ) a . previous && ! C ( a . previous ) && ( b = y ( ) , b . insertBefore ( a ) ) , a . next && ! C ( a . next ) && ( b = y ( ) , b . insertAfter ( a ) ) , a . replaceWithChildren ( ) ; else { var c = a . children , h ; b : { h = G [ b ] ; for ( var f = 0 , g = c . length , k ; f < g ; ++ f ) if ( k= c [ f ] , k . type == CKEDITOR . NODE _ELEMENT &&
break b } h = ! 0 } if ( h ) a . name = b , a . attributes = { } , d . push ( { check : "parent-down" , el : a } ) ; else { h = a . parent ; for ( var f = h . type == CKEDITOR . NODE _DOCUMENT _FRAGMENT || "body" == h . name , k , n , g = c . length ; 0 < g ; ) e = c [ -- g ] , f && ( e. type == CKEDITOR . NODE _TEXT || e . type == CKEDITOR . NODE _ELEMENT && G . $inline [ e. name ] ) ? ( k || ( k = new CKEDITOR . htmlParser . element ( b ) , k . insertAfter ( a ) , d . push ( { check : "parent-down" , el : k} ) ) , k . add ( e , 0 ) ) : ( k = null , n = G [ h . name ] || G . span , e . insertAfter ( a ) , h . type == CKEDITOR . NODE _DOCUMENT _FRAGMENT || e . type != CKEDITOR . NODE _ELEMENT || n [ e . name ] ||
! h [ k . name ] ) { h = ! 1 ; break b } h = ! 0 } if ( h ) a . name = b , a . attributes = { } , d . push ( { check : "parent-down" , el : a } ) ; else { h = a . parent ; for ( var f = h . type == CKEDITOR . NODE _DOCUMENT _FRAGMENT || "body" == h . name , e , n , g = c . length ; 0 < g ; ) k = c [ -- g ] , f && ( k. type == CKEDITOR . NODE _TEXT || k . type == CKEDITOR . NODE _ELEMENT && G . $inline [ k. name ] ) ? ( e || ( e = new CKEDITOR . htmlParser . element ( b ) , e . insertAfter ( a ) , d . push ( { check : "parent-down" , el : e} ) ) , e . add ( k , 0 ) ) : ( e = null , n = G [ h . name ] || G . span , k . insertAfter ( a ) , h . type == CKEDITOR . NODE _DOCUMENT _FRAGMENT || k . type != CKEDITOR . NODE _ELEMENT ||
d . push ( { check : "el-up" , el : e } ) ) ; a . remove ( ) } } else c in { style : 1 , script : 1 } ? a . remove ( ) : ( a . parent && d . push ( { check : "it" , el : a . parent } ) , a . replaceWithChildren ( ) ) } function x ( a , b , d ) { var c , h ; for ( c = 0 ; c < d . length ; ++ c ) if ( h = d [ c ] , ! ( h . check && ! a . check ( h . check , ! 1 ) || h . left && ! h . left ( b ) ) ) { h . right ( b , O ) ; break } } function B ( a , b ) { var d = b . getDefinition ( ) , c = d . attributes , h = d . styles , f , g , e, k ; if ( a . name != d . element ) return ! 1 ; for ( f in c ) if ( "class" == f ) for ( d = c [ f ] . split ( /\s+/ ) , e = a . classes . join ( "|" ) ; k = d . pop ( ) ; ) { if ( - 1 == e. indexOf ( k ) ) return ! 1 } else if ( a . attributes [ f ] !=
n [ k . name ] || d . push ( { check : "el-up" , el : k } ) ) ; a . remove ( ) } } else c in { style : 1 , script : 1 } ? a . remove ( ) : ( a . parent && d . push ( { check : "it" , el : a . parent } ) , a . replaceWithChildren ( ) ) } function x ( a , b , d ) { var c , h ; for ( c = 0 ; c < d . length ; ++ c ) if ( h = d [ c ] , ! ( h . check && ! a . check ( h . check , ! 1 ) || h . left && ! h . left ( b ) ) ) { h . right ( b , O ) ; break } } function B ( a , b ) { var d = b . getDefinition ( ) , c = d . attributes , h = d . styles , f , g , k, e ; if ( a . name != d . element ) return ! 1 ; for ( f in c ) if ( "class" == f ) for ( d = c [ f ] . split ( /\s+/ ) , k = a . classes . join ( "|" ) ; e = d . pop ( ) ; ) { if ( - 1 == k. indexOf ( e ) ) return ! 1 } else if ( a . attributes [ f ] !=
c [ f ] ) return ! 1 ; for ( g in h ) if ( a . styles [ g ] != h [ g ] ) return ! 1 ; return ! 0 } function A ( a , b ) { var d , c ; "string" == typeof a ? d = a : a instanceof CKEDITOR . style ? c = a : ( d = a [ 0 ] , c = a [ 1 ] ) ; return [ { element : d , left : c , right : function ( a , d ) { d . transform ( a , b ) } } ] } function z ( a ) { return function ( b ) { return B ( b , a ) } } function D ( a ) { return function ( b , d ) { d [ a ] ( b ) } } var G = CKEDITOR . dtd , F = CKEDITOR . tools . copy , J = CKEDITOR . tools . trim , I = [ "" , "p" , "br" , "div" ] ; CKEDITOR . FILTER _SKIP _TREE = 2 ; CKEDITOR . filter = function ( a ) { this . allowedContent = [ ] ; this . disallowedContent =
c [ f ] ) return ! 1 ; for ( g in h ) if ( a . styles [ g ] != h [ g ] ) return ! 1 ; return ! 0 } function A ( a , b ) { var d , c ; "string" == typeof a ? d = a : a instanceof CKEDITOR . style ? c = a : ( d = a [ 0 ] , c = a [ 1 ] ) ; return [ { element : d , left : c , right : function ( a , d ) { d . transform ( a , b ) } } ] } function z ( a ) { return function ( b ) { return B ( b , a ) } } function D ( a ) { return function ( b , d ) { d [ a ] ( b ) } } var G = CKEDITOR . dtd , F = CKEDITOR . tools . copy , J = CKEDITOR . tools . trim , I = [ "" , "p" , "br" , "div" ] ; CKEDITOR . FILTER _SKIP _TREE = 2 ; CKEDITOR . filter = function ( a ) { this . allowedContent = [ ] ; this . disallowedContent =
[ ] ; this . elementCallbacks = null ; this . disabled = ! 1 ; this . editor = null ; this . id = CKEDITOR . tools . getNextNumber ( ) ; this . _ = { allowedRules : { elements : { } , generic : [ ] } , disallowedRules : { elements : { } , generic : [ ] } , transformations : { } , cachedTests : { } } ; CKEDITOR . filter . instances [ this . id ] = this ; if ( a instanceof CKEDITOR . editor ) { a = this . editor = a ; this . customConfig = ! 0 ; var b = a . config . allowedContent ; ! 0 === b ? this . disabled = ! 0 : ( b || ( this . customConfig = ! 1 ) , this . allow ( b , "config" , 1 ) , this . allow ( a . config . extraAllowedContent , "extra" , 1 ) , this . allow ( I [ a . enterMode ] +
[ ] ; this . elementCallbacks = null ; this . disabled = ! 1 ; this . editor = null ; this . id = CKEDITOR . tools . getNextNumber ( ) ; this . _ = { allowedRules : { elements : { } , generic : [ ] } , disallowedRules : { elements : { } , generic : [ ] } , transformations : { } , cachedTests : { } } ; CKEDITOR . filter . instances [ this . id ] = this ; if ( a instanceof CKEDITOR . editor ) { a = this . editor = a ; this . customConfig = ! 0 ; var b = a . config . allowedContent ; ! 0 === b ? this . disabled = ! 0 : ( b || ( this . customConfig = ! 1 ) , this . allow ( b , "config" , 1 ) , this . allow ( a . config . extraAllowedContent , "extra" , 1 ) , this . allow ( I [ a . enterMode ] +
" " + I [ a . shiftEnterMode ] , "default" , 1 ) , this . disallow ( a . config . disallowedContent ) ) } else this . customConfig = ! 1 , this . allow ( a , "default" , 1 ) } ; CKEDITOR . filter . instances = { } ; CKEDITOR . filter . prototype = { allow : function ( b , d , c ) { if ( ! m ( this , b , c ) ) return ! 1 ; var f , g ; if ( "string" == typeof b ) b = h ( b ) ; else if ( b instanceof CKEDITOR . style ) { if ( b . toAllowedContentRules ) return this . allow ( b . toAllowedContentRules ( this . editor ) , d , c ) ; f = b . getDefinition ( ) ; b = { } ; c = f . attributes ; b [ f . element ] = f = { styles : f . styles , requiredStyles : f . styles && CKEDITOR . tools . objectKeys ( f . styles ) } ;
" " + I [ a . shiftEnterMode ] , "default" , 1 ) , this . disallow ( a . config . disallowedContent ) ) } else this . customConfig = ! 1 , this . allow ( a , "default" , 1 ) } ; CKEDITOR . filter . instances = { } ; CKEDITOR . filter . prototype = { allow : function ( b , d , c ) { if ( ! m ( this , b , c ) ) return ! 1 ; var f , g ; if ( "string" == typeof b ) b = h ( b ) ; else if ( b instanceof CKEDITOR . style ) { if ( b . toAllowedContentRules ) return this . allow ( b . toAllowedContentRules ( this . editor ) , d , c ) ; f = b . getDefinition ( ) ; b = { } ; c = f . attributes ; b [ f . element ] = f = { styles : f . styles , requiredStyles : f . styles && CKEDITOR . tools . objectKeys ( f . styles ) } ;
c && ( c = F ( c ) , f . classes = c [ "class" ] ? c [ "class" ] . split ( /\s+/ ) : null , f . requiredClasses = f . classes , delete c [ "class" ] , f . attributes = c , f . requiredAttributes = c && CKEDITOR . tools . objectKeys ( c ) ) } else if ( CKEDITOR . tools . isArray ( b ) ) { for ( f = 0 ; f < b . length ; ++ f ) g = this . allow ( b [ f ] , d , c ) ; return g } a ( this , b , d , this . allowedContent , this . _ . allowedRules ) ; return ! 0 } , applyTo : function ( a , b , d , c ) { if ( this . disabled ) return ! 1 ; var h = this , f = [ ] , g = this . editor && this . editor . config . protectedSource , e, k = ! 1 , n = { doFilter : ! d , doTransform : ! 0 , doCallbacks : ! 0 , toHtml : b } ;
c && ( c = F ( c ) , f . classes = c [ "class" ] ? c [ "class" ] . split ( /\s+/ ) : null , f . requiredClasses = f . classes , delete c [ "class" ] , f . attributes = c , f . requiredAttributes = c && CKEDITOR . tools . objectKeys ( c ) ) } else if ( CKEDITOR . tools . isArray ( b ) ) { for ( f = 0 ; f < b . length ; ++ f ) g = this . allow ( b [ f ] , d , c ) ; return g } a ( this , b , d , this . allowedContent , this . _ . allowedRules ) ; return ! 0 } , applyTo : function ( a , b , d , c ) { if ( this . disabled ) return ! 1 ; var h = this , f = [ ] , g = this . editor && this . editor . config . protectedSource , k, e = ! 1 , n = { doFilter : ! d , doTransform : ! 0 , doCallbacks : ! 0 , toHtml : b } ;
a . forEach ( function ( a ) { if ( a . type == CKEDITOR . NODE _ELEMENT ) { if ( "off" == a . attributes [ "data-cke-filter" ] ) return ! 1 ; if ( ! b || "span" != a . name || ! ~ CKEDITOR . tools . objectKeys ( a . attributes ) . join ( "|" ) . indexOf ( "data-cke-" ) ) if ( e = u ( h , a , f , n ) , e& 1 ) k = ! 0 ; else if ( e & 2 ) return ! 1 } else if ( a . type == CKEDITOR . NODE _COMMENT && a . value . match ( /^\{cke_protected\}(?!\{C\})/ ) ) { var d ; a : { var c = decodeURIComponent ( a . value . replace ( /^\{cke_protected\}/ , "" ) ) ; d = [ ] ; var r , m , p ; if ( g ) for ( m = 0 ; m < g . length ; ++ m ) if ( ( p = c . match ( g [ m ] ) ) && p [ 0 ] . length == c . length ) { d = ! 0 ;
a . forEach ( function ( a ) { if ( a . type == CKEDITOR . NODE _ELEMENT ) { if ( "off" == a . attributes [ "data-cke-filter" ] ) return ! 1 ; if ( ! b || "span" != a . name || ! ~ CKEDITOR . tools . objectKeys ( a . attributes ) . join ( "|" ) . indexOf ( "data-cke-" ) ) if ( k = u ( h , a , f , n ) , k& 1 ) e = ! 0 ; else if ( k & 2 ) return ! 1 } else if ( a . type == CKEDITOR . NODE _COMMENT && a . value . match ( /^\{cke_protected\}(?!\{C\})/ ) ) { var d ; a : { var c = decodeURIComponent ( a . value . replace ( /^\{cke_protected\}/ , "" ) ) ; d = [ ] ; var r , m , p ; if ( g ) for ( m = 0 ; m < g . length ; ++ m ) if ( ( p = c . match ( g [ m ] ) ) && p [ 0 ] . length == c . length ) { d = ! 0 ;
break a } c = CKEDITOR . htmlParser . fragment . fromHtml ( c ) ; 1 == c . children . length && ( r = c . children [ 0 ] ) . type == CKEDITOR . NODE _ELEMENT && u ( h , r , d , n ) ; d = ! d . length } d || f . push ( a ) } } , null , ! 0 ) ; f . length && ( k = ! 0 ) ; var m ; a = [ ] ; c = I [ c || ( this . editor ? this . editor . enterMode : CKEDITOR . ENTER _P ) ] ; for ( var p ; d = f . pop ( ) ; ) d . type == CKEDITOR . NODE _ELEMENT ? r ( d , c , a ) : d . remove ( ) ; for ( ; m = a . pop ( ) ; ) if ( d = m . el , d . parent ) switch ( p = G [ d . parent . name ] || G . span , m . check ) { case "it" : G . $removeEmpty [ d . name ] && ! d . children . length ? r ( d , c , a ) : q ( d ) || r ( d , c , a ) ; break ; case "el-up" : d . parent . type ==
break a } c = CKEDITOR . htmlParser . fragment . fromHtml ( c ) ; 1 == c . children . length && ( r = c . children [ 0 ] ) . type == CKEDITOR . NODE _ELEMENT && u ( h , r , d , n ) ; d = ! d . length } d || f . push ( a ) } } , null , ! 0 ) ; f . length && ( e = ! 0 ) ; var m ; a = [ ] ; c = I [ c || ( this . editor ? this . editor . enterMode : CKEDITOR . ENTER _P ) ] ; for ( var p ; d = f . pop ( ) ; ) d . type == CKEDITOR . NODE _ELEMENT ? r ( d , c , a ) : d . remove ( ) ; for ( ; m = a . pop ( ) ; ) if ( d = m . el , d . parent ) switch ( p = G [ d . parent . name ] || G . span , m . check ) { case "it" : G . $removeEmpty [ d . name ] && ! d . children . length ? r ( d , c , a ) : q ( d ) || r ( d , c , a ) ; break ; case "el-up" : d . parent . type ==
CKEDITOR . NODE _DOCUMENT _FRAGMENT || p [ d . name ] || r ( d , c , a ) ; break ; case "parent-down" : d . parent . type == CKEDITOR . NODE _DOCUMENT _FRAGMENT || p [ d . name ] || r ( d . parent , c , a ) } return k } , checkFeature : function ( a ) { if ( this . disabled || ! a ) return ! 0 ; a . toFeature && ( a = a . toFeature ( this . editor ) ) ; return ! a . requiredContent || this . check ( a . requiredContent ) } , disable : function ( ) { this . disabled = ! 0 } , disallow : function ( b ) { if ( ! m ( this , b , ! 0 ) ) return ! 1 ; "string" == typeof b && ( b = h ( b ) ) ; a ( this , b , null , this . disallowedContent , this . _ . disallowedRules ) ; return ! 0 } ,
CKEDITOR . NODE _DOCUMENT _FRAGMENT || p [ d . name ] || r ( d , c , a ) ; break ; case "parent-down" : d . parent . type == CKEDITOR . NODE _DOCUMENT _FRAGMENT || p [ d . name ] || r ( d . parent , c , a ) } return e } , checkFeature : function ( a ) { if ( this . disabled || ! a ) return ! 0 ; a . toFeature && ( a = a . toFeature ( this . editor ) ) ; return ! a . requiredContent || this . check ( a . requiredContent ) } , disable : function ( ) { this . disabled = ! 0 } , disallow : function ( b ) { if ( ! m ( this , b , ! 0 ) ) return ! 1 ; "string" == typeof b && ( b = h ( b ) ) ; a ( this , b , null , this . disallowedContent , this . _ . disallowedRules ) ; return ! 0 } ,
addContentForms : function ( a ) { if ( ! this . disabled && a ) { var b , d , c = [ ] , h ; for ( b = 0 ; b < a . length && ! h ; ++ b ) d = a [ b ] , ( "string" == typeof d || d instanceof CKEDITOR . style ) && this . check ( d ) && ( h = d ) ; if ( h ) { for ( b = 0 ; b < a . length ; ++ b ) c . push ( A ( a [ b ] , h ) ) ; this . addTransformations ( c ) } } } , addElementCallback : function ( a ) { this . elementCallbacks || ( this . elementCallbacks = [ ] ) ; this . elementCallbacks . push ( a ) } , addFeature : function ( a ) { if ( this . disabled || ! a ) return ! 0 ; a . toFeature && ( a = a . toFeature ( this . editor ) ) ; this . allow ( a . allowedContent , a . name ) ; this . addTransformations ( a . contentTransformations ) ;
addContentForms : function ( a ) { if ( ! this . disabled && a ) { var b , d , c = [ ] , h ; for ( b = 0 ; b < a . length && ! h ; ++ b ) d = a [ b ] , ( "string" == typeof d || d instanceof CKEDITOR . style ) && this . check ( d ) && ( h = d ) ; if ( h ) { for ( b = 0 ; b < a . length ; ++ b ) c . push ( A ( a [ b ] , h ) ) ; this . addTransformations ( c ) } } } , addElementCallback : function ( a ) { this . elementCallbacks || ( this . elementCallbacks = [ ] ) ; this . elementCallbacks . push ( a ) } , addFeature : function ( a ) { if ( this . disabled || ! a ) return ! 0 ; a . toFeature && ( a = a . toFeature ( this . editor ) ) ; this . allow ( a . allowedContent , a . name ) ; this . addTransformations ( a . contentTransformations ) ;
this . addContentForms ( a . contentForms ) ; return a . requiredContent && ( this . customConfig || this . disallowedContent . length ) ? this . check ( a . requiredContent ) : ! 0 } , addTransformations : function ( a ) { var b , d ; if ( ! this . disabled && a ) { var c = this . _ . transformations , h ; for ( h = 0 ; h < a . length ; ++ h ) { b = a [ h ] ; var f = void 0 , g = void 0 , e= void 0 , k = void 0 , n = void 0 , r = void 0 ; d = [ ] ; for ( g = 0 ; g < b . length ; ++ g ) e = b [ g ] , "string" == typeof e? ( e = e . split ( /\s*:\s*/ ) , k = e [ 0 ] , n = null , r = e[ 1 ] ) : ( k = e . check , n = e . left , r = e . right ) , f || ( f = e , f = f . element ? f . element : k? k . match ( /^([a-z0-9]+)/i ) [ 0 ] :
this . addContentForms ( a . contentForms ) ; return a . requiredContent && ( this . customConfig || this . disallowedContent . length ) ? this . check ( a . requiredContent ) : ! 0 } , addTransformations : function ( a ) { var b , d ; if ( ! this . disabled && a ) { var c = this . _ . transformations , h ; for ( h = 0 ; h < a . length ; ++ h ) { b = a [ h ] ; var f = void 0 , g = void 0 , k= void 0 , e = void 0 , n = void 0 , r = void 0 ; d = [ ] ; for ( g = 0 ; g < b . length ; ++ g ) k = b [ g ] , "string" == typeof k? ( k = k . split ( /\s*:\s*/ ) , e = k [ 0 ] , n = null , r = k[ 1 ] ) : ( e = k . check , n = k . left , r = k . right ) , f || ( f = k , f = f . element ? f . element : e? e . match ( /^([a-z0-9]+)/i ) [ 0 ] :
f . left . getDefinition ( ) . element ) , n instanceof CKEDITOR . style && ( n = z ( n ) ) , d . push ( { check : k== f ? null : k , left : n , right : "string" == typeof r ? D ( r ) : r } ) ; b = f ; c [ b ] || ( c [ b ] = [ ] ) ; c [ b ] . push ( d ) } } } , check : function ( a , b , c ) { if ( this . disabled ) return ! 0 ; if ( CKEDITOR . tools . isArray ( a ) ) { for ( var f = a . length ; f -- ; ) if ( this . check ( a [ f ] , b , c ) ) return ! 0 ; return ! 1 } var g , e ; if ( "string" == typeof a ) { e = a + "\x3c" + ( ! 1 === b ? "0" : "1" ) + ( c ? "1" : "0" ) + "\x3e" ; if ( e in this . _ . cachedChecks ) return this . _ . cachedChecks [ e ] ; f = h ( a ) . $1 ; g = f . styles ; var k = f . classes ; f . name = f . elements ;
f . left . getDefinition ( ) . element ) , n instanceof CKEDITOR . style && ( n = z ( n ) ) , d . push ( { check : e== f ? null : e , left : n , right : "string" == typeof r ? D ( r ) : r } ) ; b = f ; c [ b ] || ( c [ b ] = [ ] ) ; c [ b ] . push ( d ) } } } , check : function ( a , b , c ) { if ( this . disabled ) return ! 0 ; if ( CKEDITOR . tools . isArray ( a ) ) { for ( var f = a . length ; f -- ; ) if ( this . check ( a [ f ] , b , c ) ) return ! 0 ; return ! 1 } var g , k ; if ( "string" == typeof a ) { k = a + "\x3c" + ( ! 1 === b ? "0" : "1" ) + ( c ? "1" : "0" ) + "\x3e" ; if ( k in this . _ . cachedChecks ) return this . _ . cachedChecks [ k ] ; f = h ( a ) . $1 ; g = f . styles ; var e = f . classes ; f . name = f . elements ;
f . classes = k= k ? k . split ( /\s*,\s*/ ) : [ ] ; f . styles = d ( g ) ; f . attributes = d ( f . attributes ) ; f . children = [ ] ; k . length && ( f . attributes [ "class" ] = k . join ( " " ) ) ; g && ( f . attributes . style = CKEDITOR . tools . writeCssText ( f . styles ) ) ; g = f } else f = a . getDefinition ( ) , g = f . styles , k = f . attributes || { } , g ? ( g = F ( g ) , k . style = CKEDITOR . tools . writeCssText ( g , ! 0 ) ) : g = { } , g = { name : f . element , attributes : k, classes : k [ "class" ] ? k [ "class" ] . split ( /\s+/ ) : [ ] , styles : g , children : [ ] } ; var k = CKEDITOR . tools . clone ( g ) , r = [ ] , m ; if ( ! 1 !== b && ( m = this . _ . transformations [ g . name ] ) ) { for ( f =
f . classes = e= e ? e . split ( /\s*,\s*/ ) : [ ] ; f . styles = d ( g ) ; f . attributes = d ( f . attributes ) ; f . children = [ ] ; e . length && ( f . attributes [ "class" ] = e . join ( " " ) ) ; g && ( f . attributes . style = CKEDITOR . tools . writeCssText ( f . styles ) ) ; g = f } else f = a . getDefinition ( ) , g = f . styles , e = f . attributes || { } , g ? ( g = F ( g ) , e . style = CKEDITOR . tools . writeCssText ( g , ! 0 ) ) : g = { } , g = { name : f . element , attributes : e, classes : e [ "class" ] ? e [ "class" ] . split ( /\s+/ ) : [ ] , styles : g , children : [ ] } ; var e = CKEDITOR . tools . clone ( g ) , r = [ ] , m ; if ( ! 1 !== b && ( m = this . _ . transformations [ g . name ] ) ) { for ( f =
0 ; f < m . length ; ++ f ) x ( this , g , m [ f ] ) ; n ( g ) } u ( this , k , r , { doFilter : ! 0 , doTransform : ! 1 !== b , skipRequired : ! c , skipFinalValidation : ! c } ) ; b = 0 < r . length ? ! 1 : CKEDITOR . tools . objectCompare ( g . attributes , k . attributes , ! 0 ) ? ! 0 : ! 1 ; "string" == typeof a && ( this . _ . cachedChecks [ e ] = b ) ; return b } , getAllowedEnterMode : function ( ) { var a = [ "p" , "div" , "br" ] , b = { p : CKEDITOR . ENTER _P , div : CKEDITOR . ENTER _DIV , br : CKEDITOR . ENTER _BR } ; return function ( d , c ) { var h = a . slice ( ) , f ; if ( this . check ( I [ d ] ) ) return d ; for ( c || ( h = h . reverse ( ) ) ; f = h . pop ( ) ; ) if ( this . check ( f ) ) return b [ f ] ;
0 ; f < m . length ; ++ f ) x ( this , g , m [ f ] ) ; n ( g ) } u ( this , e , r , { doFilter : ! 0 , doTransform : ! 1 !== b , skipRequired : ! c , skipFinalValidation : ! c } ) ; b = 0 < r . length ? ! 1 : CKEDITOR . tools . objectCompare ( g . attributes , e . attributes , ! 0 ) ? ! 0 : ! 1 ; "string" == typeof a && ( this . _ . cachedChecks [ k ] = b ) ; return b } , getAllowedEnterMode : function ( ) { var a = [ "p" , "div" , "br" ] , b = { p : CKEDITOR . ENTER _P , div : CKEDITOR . ENTER _DIV , br : CKEDITOR . ENTER _BR } ; return function ( d , c ) { var h = a . slice ( ) , f ; if ( this . check ( I [ d ] ) ) return d ; for ( c || ( h = h . reverse ( ) ) ; f = h . pop ( ) ; ) if ( this . check ( f ) ) return b [ f ] ;
return CKEDITOR . ENTER _BR } } ( ) , destroy : function ( ) { delete CKEDITOR . filter . instances [ this . id ] ; delete this . _ ; delete this . allowedContent ; delete this . disallowedContent } } ; var N = { styles : 1 , attributes : 1 , classes : 1 } , E = { styles : "requiredStyles" , attributes : "requiredAttributes" , classes : "requiredClasses" } , P = /^([a-z0-9\-*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i , T = { styles : /{([^}]+)}/ , attrs : /\[([^\]]+)\]/ , classes : /\(([^\)]+)\)/ } , L = /^cke:(object|embed|param)$/ ,
return CKEDITOR . ENTER _BR } } ( ) , destroy : function ( ) { delete CKEDITOR . filter . instances [ this . id ] ; delete this . _ ; delete this . allowedContent ; delete this . disallowedContent } } ; var N = { styles : 1 , attributes : 1 , classes : 1 } , E = { styles : "requiredStyles" , attributes : "requiredAttributes" , classes : "requiredClasses" } , P = /^([a-z0-9\-*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i , T = { styles : /{([^}]+)}/ , attrs : /\[([^\]]+)\]/ , classes : /\(([^\)]+)\)/ } , L = /^cke:(object|embed|param)$/ ,
Q = /^(object|embed|param)$/ , O = CKEDITOR . filter . transformationsTools = { sizeToStyle : function ( a ) { this . lengthToStyle ( a , "width" ) ; this . lengthToStyle ( a , "height" ) } , sizeToAttribute : function ( a ) { this . lengthToAttribute ( a , "width" ) ; this . lengthToAttribute ( a , "height" ) } , lengthToStyle : function ( a , b , d ) { d = d || b ; if ( ! ( d in a . styles ) ) { var c = a . attributes [ b ] ; c && ( /^\d+$/ . test ( c ) && ( c += "px" ) , a . styles [ d ] = c ) } delete a . attributes [ b ] } , lengthToAttribute : function ( a , b , d ) { d = d || b ; if ( ! ( d in a . attributes ) ) { var c = a . styles [ b ] , h = c && c . match ( /^(\d+)(?:\.\d*)?px$/ ) ;
Q = /^(object|embed|param)$/ , O = CKEDITOR . filter . transformationsTools = { sizeToStyle : function ( a ) { this . lengthToStyle ( a , "width" ) ; this . lengthToStyle ( a , "height" ) } , sizeToAttribute : function ( a ) { this . lengthToAttribute ( a , "width" ) ; this . lengthToAttribute ( a , "height" ) } , lengthToStyle : function ( a , b , d ) { d = d || b ; if ( ! ( d in a . styles ) ) { var c = a . attributes [ b ] ; c && ( /^\d+$/ . test ( c ) && ( c += "px" ) , a . styles [ d ] = c ) } delete a . attributes [ b ] } , lengthToAttribute : function ( a , b , d ) { d = d || b ; if ( ! ( d in a . attributes ) ) { var c = a . styles [ b ] , h = c && c . match ( /^(\d+)(?:\.\d*)?px$/ ) ;
h ? a . attributes [ d ] = h [ 1 ] : "cke-test" == c && ( a . attributes [ d ] = "cke-test" ) } delete a . styles [ b ] } , alignmentToStyle : function ( a ) { if ( ! ( "float" in a . styles ) ) { var b = a . attributes . align ; if ( "left" == b || "right" == b ) a . styles [ "float" ] = b } delete a . attributes . align } , alignmentToAttribute : function ( a ) { if ( ! ( "align" in a . attributes ) ) { var b = a . styles [ "float" ] ; if ( "left" == b || "right" == b ) a . attributes . align = b } delete a . styles [ "float" ] } , matchesStyle : B , transform : function ( a , b ) { if ( "string" == typeof b ) a . name = b ; else { var d = b . getDefinition ( ) , c = d . styles ,
h ? a . attributes [ d ] = h [ 1 ] : "cke-test" == c && ( a . attributes [ d ] = "cke-test" ) } delete a . styles [ b ] } , alignmentToStyle : function ( a ) { if ( ! ( "float" in a . styles ) ) { var b = a . attributes . align ; if ( "left" == b || "right" == b ) a . styles [ "float" ] = b } delete a . attributes . align } , alignmentToAttribute : function ( a ) { if ( ! ( "align" in a . attributes ) ) { var b = a . styles [ "float" ] ; if ( "left" == b || "right" == b ) a . attributes . align = b } delete a . styles [ "float" ] } , matchesStyle : B , transform : function ( a , b ) { if ( "string" == typeof b ) a . name = b ; else { var d = b . getDefinition ( ) , c = d . styles ,
h = d . attributes , f , g , e, k ; a . name = d . element ; for ( f in h ) if ( "class" == f ) for ( d = a . classes . join ( "|" ) , e = h [ f ] . split ( /\s+/ ) ; k= e . pop ( ) ; ) - 1 == d . indexOf ( k) && a . classes . push ( k ) ; else a . attributes [ f ] = h [ f ] ; for ( g in c ) a . styles [ g ] = c [ g ] } } } } ( ) , function ( ) { CKEDITOR . focusManager = function ( a ) { if ( a . focusManager ) return a . focusManager ; this . hasFocus = ! 1 ; this . currentActive = null ; this . _ = { editor : a } ; return this } ; CKEDITOR . focusManager . _ = { blurDelay : 200 } ; CKEDITOR . focusManager . prototype = { focus : function ( a ) { this . _ . timer && clearTimeout ( this . _ . timer ) ;
h = d . attributes , f , g , k, e ; a . name = d . element ; for ( f in h ) if ( "class" == f ) for ( d = a . classes . join ( "|" ) , k = h [ f ] . split ( /\s+/ ) ; e= k . pop ( ) ; ) - 1 == d . indexOf ( e) && a . classes . push ( e ) ; else a . attributes [ f ] = h [ f ] ; for ( g in c ) a . styles [ g ] = c [ g ] } } } } ( ) , function ( ) { CKEDITOR . focusManager = function ( a ) { if ( a . focusManager ) return a . focusManager ; this . hasFocus = ! 1 ; this . currentActive = null ; this . _ = { editor : a } ; return this } ; CKEDITOR . focusManager . _ = { blurDelay : 200 } ; CKEDITOR . focusManager . prototype = { focus : function ( a ) { this . _ . timer && clearTimeout ( this . _ . timer ) ;
a && ( this . currentActive = a ) ; this . hasFocus || this . _ . locked || ( ( a = CKEDITOR . currentInstance ) && a . focusManager . blur ( 1 ) , this . hasFocus = ! 0 , ( a = this . _ . editor . container ) && a . addClass ( "cke_focus" ) , this . _ . editor . fire ( "focus" ) ) } , lock : function ( ) { this . _ . locked = 1 } , unlock : function ( ) { delete this . _ . locked } , blur : function ( a ) { function e ( ) { if ( this . hasFocus ) { this . hasFocus = ! 1 ; var a = this . _ . editor . container ; a && a . removeClass ( "cke_focus" ) ; this . _ . editor . fire ( "blur" ) } } if ( ! this . _ . locked ) { this . _ . timer && clearTimeout ( this . _ . timer ) ; var c =
a && ( this . currentActive = a ) ; this . hasFocus || this . _ . locked || ( ( a = CKEDITOR . currentInstance ) && a . focusManager . blur ( 1 ) , this . hasFocus = ! 0 , ( a = this . _ . editor . container ) && a . addClass ( "cke_focus" ) , this . _ . editor . fire ( "focus" ) ) } , lock : function ( ) { this . _ . locked = 1 } , unlock : function ( ) { delete this . _ . locked } , blur : function ( a ) { function e ( ) { if ( this . hasFocus ) { this . hasFocus = ! 1 ; var a = this . _ . editor . container ; a && a . removeClass ( "cke_focus" ) ; this . _ . editor . fire ( "blur" ) } } if ( ! this . _ . locked ) { this . _ . timer && clearTimeout ( this . _ . timer ) ; var c =
CKEDITOR . focusManager . _ . blurDelay ; a || ! c ? e . call ( this ) : this . _ . timer = CKEDITOR . tools . setTimeout ( function ( ) { delete this . _ . timer ; e . call ( this ) } , c , this ) } } , add : function ( a , e ) { var c = a . getCustomData ( "focusmanager" ) ; if ( ! c || c != this ) { c && c . remove ( a ) ; var c = "focus" , g = "blur" ; e && ( CKEDITOR . env . ie ? ( c = "focusin" , g = "focusout" ) : CKEDITOR . event . useCapture = 1 ) ; var f = { blur : function ( ) { a . equals ( this . currentActive ) && this . blur ( ) } , focus : function ( ) { this . focus ( a ) } } ; a . on ( c , f . focus , this ) ; a . on ( g , f . blur , this ) ; e && ( CKEDITOR . event . useCapture =
CKEDITOR . focusManager . _ . blurDelay ; a || ! c ? e . call ( this ) : this . _ . timer = CKEDITOR . tools . setTimeout ( function ( ) { delete this . _ . timer ; e . call ( this ) } , c , this ) } } , add : function ( a , e ) { var c = a . getCustomData ( "focusmanager" ) ; if ( ! c || c != this ) { c && c . remove ( a ) ; var c = "focus" , g = "blur" ; e && ( CKEDITOR . env . ie ? ( c = "focusin" , g = "focusout" ) : CKEDITOR . event . useCapture = 1 ) ; var f = { blur : function ( ) { a . equals ( this . currentActive ) && this . blur ( ) } , focus : function ( ) { this . focus ( a ) } } ; a . on ( c , f . focus , this ) ; a . on ( g , f . blur , this ) ; e && ( CKEDITOR . event . useCapture =
0 ) ; a . setCustomData ( "focusmanager" , this ) ; a . setCustomData ( "focusmanager_handlers" , f ) } } , remove : function ( a ) { a . removeCustomData ( "focusmanager" ) ; var e = a . removeCustomData ( "focusmanager_handlers" ) ; a . removeListener ( "blur" , e . blur ) ; a . removeListener ( "focus" , e . focus ) } } } ( ) , CKEDITOR . keystrokeHandler = function ( a ) { if ( a . keystrokeHandler ) return a . keystrokeHandler ; this . keystrokes = { } ; this . blockedKeystrokes = { } ; this . _ = { editor : a } ; return this } , function ( ) { var a , e = function ( c ) { c = c . data ; var f = c . getKeystroke ( ) , e = this . keystrokes [ f ] ,
0 ) ; a . setCustomData ( "focusmanager" , this ) ; a . setCustomData ( "focusmanager_handlers" , f ) } } , remove : function ( a ) { a . removeCustomData ( "focusmanager" ) ; var e = a . removeCustomData ( "focusmanager_handlers" ) ; a . removeListener ( "blur" , e . blur ) ; a . removeListener ( "focus" , e . focus ) } } } ( ) , CKEDITOR . keystrokeHandler = function ( a ) { if ( a . keystrokeHandler ) return a . keystrokeHandler ; this . keystrokes = { } ; this . blockedKeystrokes = { } ; this . _ = { editor : a } ; return this } , function ( ) { var a , e = function ( c ) { c = c . data ; var f = c . getKeystroke ( ) , e = this . keystrokes [ f ] ,
@ -220,23 +220,23 @@ d.push(v[k])}if(d.length)l.call(this,d);else{for(c in m)k=m[c],k.onLoad&&!k.onLo
CKEDITOR . ui . prototype = { add : function ( a , e , c ) { c . name = a . toLowerCase ( ) ; var g = this . items [ a ] = { type : e , command : c . command || null , args : Array . prototype . slice . call ( arguments , 2 ) } ; CKEDITOR . tools . extend ( g , c ) } , get : function ( a ) { return this . instances [ a ] } , create : function ( a ) { var e = this . items [ a ] , c = e && this . _ . handlers [ e . type ] , g = e && e . command && this . editor . getCommand ( e . command ) , c = c && c . create . apply ( this , e . args ) ; this . instances [ a ] = c ; g && g . uiItems . push ( c ) ; c && ! c . type && ( c . type = e . type ) ; return c } , addHandler : function ( a , e ) { this . _ . handlers [ a ] =
CKEDITOR . ui . prototype = { add : function ( a , e , c ) { c . name = a . toLowerCase ( ) ; var g = this . items [ a ] = { type : e , command : c . command || null , args : Array . prototype . slice . call ( arguments , 2 ) } ; CKEDITOR . tools . extend ( g , c ) } , get : function ( a ) { return this . instances [ a ] } , create : function ( a ) { var e = this . items [ a ] , c = e && this . _ . handlers [ e . type ] , g = e && e . command && this . editor . getCommand ( e . command ) , c = c && c . create . apply ( this , e . args ) ; this . instances [ a ] = c ; g && g . uiItems . push ( c ) ; c && ! c . type && ( c . type = e . type ) ; return c } , addHandler : function ( a , e ) { this . _ . handlers [ a ] =
e } , space : function ( a ) { return CKEDITOR . document . getById ( this . spaceId ( a ) ) } , spaceId : function ( a ) { return this . editor . id + "_" + a } } , CKEDITOR . event . implementOn ( CKEDITOR . ui ) , function ( ) { function a ( a , b , d ) { CKEDITOR . event . call ( this ) ; a = a && CKEDITOR . tools . clone ( a ) ; if ( void 0 !== b ) { if ( ! ( b instanceof CKEDITOR . dom . element ) ) throw Error ( "Expect element of type CKEDITOR.dom.element." ) ; if ( ! d ) throw Error ( "One of the element modes must be specified." ) ; if ( CKEDITOR . env . ie && CKEDITOR . env . quirks && d == CKEDITOR . ELEMENT _MODE _INLINE ) throw Error ( "Inline element mode is not supported on IE quirks." ) ;
e } , space : function ( a ) { return CKEDITOR . document . getById ( this . spaceId ( a ) ) } , spaceId : function ( a ) { return this . editor . id + "_" + a } } , CKEDITOR . event . implementOn ( CKEDITOR . ui ) , function ( ) { function a ( a , b , d ) { CKEDITOR . event . call ( this ) ; a = a && CKEDITOR . tools . clone ( a ) ; if ( void 0 !== b ) { if ( ! ( b instanceof CKEDITOR . dom . element ) ) throw Error ( "Expect element of type CKEDITOR.dom.element." ) ; if ( ! d ) throw Error ( "One of the element modes must be specified." ) ; if ( CKEDITOR . env . ie && CKEDITOR . env . quirks && d == CKEDITOR . ELEMENT _MODE _INLINE ) throw Error ( "Inline element mode is not supported on IE quirks." ) ;
if ( ! c ( b , d ) ) throw Error ( 'The specified element mode is not supported on element: "' + b . getName ( ) + '".' ) ; this . element = b ; this . elementMode = d ; this . name = this . elementMode != CKEDITOR . ELEMENT _MODE _APPENDTO && ( b . getId ( ) || b . getNameAtt ( ) ) } else this . elementMode = CKEDITOR . ELEMENT _MODE _NONE ; this . _ = { } ; this . commands = { } ; this . templates = { } ; this . name = this . name || e ( ) ; this . id = CKEDITOR . tools . getNextId ( ) ; this . status = "unloaded" ; this . config = CKEDITOR . tools . prototypedCopy ( CKEDITOR . config ) ; this . ui = new CKEDITOR . ui ( this ) ; this . focusManager =
if ( ! c ( b , d ) ) throw Error ( 'The specified element mode is not supported on element: "' + b . getName ( ) + '".' ) ; this . element = b ; this . elementMode = d ; this . name = this . elementMode != CKEDITOR . ELEMENT _MODE _APPENDTO && ( b . getId ( ) || b . getNameAtt ( ) ) } else this . elementMode = CKEDITOR . ELEMENT _MODE _NONE ; this . _ = { } ; this . commands = { } ; this . templates = { } ; this . name = this . name || e ( ) ; this . id = CKEDITOR . tools . getNextId ( ) ; this . status = "unloaded" ; this . config = CKEDITOR . tools . prototypedCopy ( CKEDITOR . config ) ; this . ui = new CKEDITOR . ui ( this ) ; this . focusManager =
new CKEDITOR . focusManager ( this ) ; this . keystrokeHandler = new CKEDITOR . keystrokeHandler ( this ) ; this . on ( "readOnly" , g ) ; this . on ( "selectionChange" , function ( a ) { m ( this , a . data . path ) } ) ; this . on ( "activeFilterChange" , function ( ) { m ( this , this . elementPath ( ) , ! 0 ) } ) ; this . on ( "mode" , g ) ; this . on ( "instanceReady" , function ( ) { this . config . startupFocus && this . focus ( ) } ) ; CKEDITOR . fire ( "instanceCreated" , null , this ) ; CKEDITOR . add ( this ) ; CKEDITOR . tools . setTimeout ( function ( ) { k ( this , a ) } , 0 , this ) } function e ( ) { do var a = "editor" + ++ u ; while ( CKEDITOR . instances [ a ] ) ;
new CKEDITOR . focusManager ( this ) ; this . keystrokeHandler = new CKEDITOR . keystrokeHandler ( this ) ; this . on ( "readOnly" , g ) ; this . on ( "selectionChange" , function ( a ) { m ( this , a . data . path ) } ) ; this . on ( "activeFilterChange" , function ( ) { m ( this , this . elementPath ( ) , ! 0 ) } ) ; this . on ( "mode" , g ) ; this . on ( "instanceReady" , function ( ) { this . config . startupFocus && this . focus ( ) } ) ; CKEDITOR . fire ( "instanceCreated" , null , this ) ; CKEDITOR . add ( this ) ; CKEDITOR . tools . setTimeout ( function ( ) { "destroyed" !== this . status ? k ( this , a ) : CKEDITOR . warn ( "editor-incorrect-destroy" ) } ,
return a } function c ( a , b ) { return b == CKEDITOR . ELEMENT _MODE _INLINE ? a . is ( CKEDITOR . dtd . $editable ) || a . is ( "textarea" ) : b == CKEDITOR . ELEMENT _MODE _REPLACE ? ! a . is ( CKEDITOR . dtd . $nonBodyContent ) : 1 } function g ( ) { var a = this . commands , b ; for ( b in a ) f ( this , a [ b ] ) } function f ( a , b ) { b [ b . startDisabled ? "disable" : a . readOnly && ! b . readOnly ? "disable" : b . modes [ a . mode ] ? "enable" : "disable" ] ( ) } function m ( a , b , d ) { if ( b ) { var c , h , f = a . commands ; for ( h in f ) c = f [ h ] , ( d || c . contextSensitive ) && c . refresh ( a , b ) } } function l ( a ) { var b = a . config . customConfig ;
0 , this ) } function e ( ) { do var a = "editor" + ++ u ; while ( CKEDITOR . instances [ a ] ) ; return a } function c ( a , b ) { return b == CKEDITOR . ELEMENT _MODE _INLINE ? a . is ( CKEDITOR . dtd . $editable ) || a . is ( "textarea" ) : b == CKEDITOR . ELEMENT _MODE _REPLACE ? ! a . is ( CKEDITOR . dtd . $nonBodyContent ) : 1 } function g ( ) { var a = this . commands , b ; for ( b in a ) f ( this , a [ b ] ) } function f ( a , b ) { b [ b . startDisabled ? "disable" : a . readOnly && ! b . readOnly ? "disable" : b . modes [ a . mode ] ? "enable" : "disable" ] ( ) } function m ( a , b , d ) { if ( b ) { var c , h , f = a . commands ; for ( h in f ) c = f [ h ] , ( d || c . contextSensitive ) &&
if ( ! b ) return ! 1 ; var b = CKEDITOR . getUrl ( b ) , d = t [ b ] || ( t [ b ] = { } ) ; d . fn ? ( d . fn . call ( a , a . config ) , CKEDITOR . getUrl ( a . config . customConfig ) != b && l ( a ) || a . fireOnce ( "customConfigLoaded" ) ) : CKEDITOR . scriptLoader . queue ( b , function ( ) { d . fn = CKEDITOR . editorConfig ? CKEDITOR . editorConfig : function ( ) { } ; l ( a ) } ) ; return ! 0 } function k ( a , d ) { a . on ( "customConfigLoaded" , function ( ) { if ( d ) { if ( d . on ) for ( var c in d . on ) a . on ( c , d . on [ c ] ) ; CKEDITOR . tools . extend ( a . config , d , ! 0 ) ; delete a . config . on } c = a . config ; a . readOnly = c . readOnly ? ! 0 : a . elementMode == CKEDITOR . ELEMENT _MODE _INLINE ?
c . refresh ( a , b ) } } function l ( a ) { var b = a . config . customConfig ; if ( ! b ) return ! 1 ; var b = CKEDITOR . getUrl ( b ) , d = t [ b ] || ( t [ b ] = { } ) ; d . fn ? ( d . fn . call ( a , a . config ) , CKEDITOR . getUrl ( a . config . customConfig ) != b && l ( a ) || a . fireOnce ( "customConfigLoaded" ) ) : CKEDITOR . scriptLoader . queue ( b , function ( ) { d . fn = CKEDITOR . editorConfig ? CKEDITOR . editorConfig : function ( ) { } ; l ( a ) } ) ; return ! 0 } function k ( a , d ) { a . on ( "customConfigLoaded" , function ( ) { if ( d ) { if ( d . on ) for ( var c in d . on ) a . on ( c , d . on [ c ] ) ; CKEDITOR . tools . extend ( a . config , d , ! 0 ) ; delete a . config . on } c =
a . element . is ( "textarea" ) ? a . element . hasAttribute ( "disabled" ) || a . element . hasAttribute ( "readonly" ) : a . element . isReadOnly ( ) : a . elementMode == CKEDITOR . ELEMENT _MODE _REPLACE ? a . element . hasAttribute ( "disabled" ) || a . element . hasAttribute ( "readonly" ) : ! 1 ; a . blockless = a . elementMode == CKEDITOR . ELEMENT _MODE _INLINE ? ! ( a . element . is ( "textarea" ) || CKEDITOR . dtd [ a . element . getName ( ) ] . p ) : ! 1 ; a . tabIndex = c . tabIndex || a . element && a . element . getAttribute ( "tabindex" ) || 0 ; a . activeEnterMode = a . enterMode = a . blockless ? CKEDITOR . ENTER _BR : c . enterMode ;
a . config ; a . readOnly = c . readOnly ? ! 0 : a . elementMode == CKEDITOR . ELEMENT _MODE _INLINE ? a . element . is ( "textarea" ) ? a . element . hasAttribute ( "disabled" ) || a . element . hasAttribute ( "readonly" ) : a . element . isReadOnly ( ) : a . elementMode == CKEDITOR . ELEMENT _MODE _REPLACE ? a . element . hasAttribute ( "disabled" ) || a . element . hasAttribute ( "readonly" ) : ! 1 ; a . blockless = a . elementMode == CKEDITOR . ELEMENT _MODE _INLINE ? ! ( a . element . is ( "textarea" ) || CKEDITOR . dtd [ a . element . getName ( ) ] . p ) : ! 1 ; a . tabIndex = c . tabIndex || a . element && a . element . getAttribute ( "tabindex" ) ||
a . activeShiftEnterMode = a . shiftEnterMode = a . blockless ? CKEDITOR . ENTER _BR : c . shiftEnterMode ; c . skin && ( CKEDITOR . skinName = c . skin ) ; a . fireOnce ( "configLoaded" ) ; a . dataProcessor = new CKEDITOR . htmlDataProcessor ( a ) ; a . filter = a . activeFilter = new CKEDITOR . filter ( a ) ; b ( a ) } ) ; d && null != d . customConfig && ( a . config . customConfig = d . customConfig ) ; l ( a ) || a . fireOnce ( "customConfigLoaded" ) } function b ( a ) { CKEDITOR . skin . loadPart ( "editor" , function ( ) { d ( a ) } ) } function d ( a ) { CKEDITOR . lang . load ( a . config . language , a . config . defaultLanguage , function ( b ,
0 ; a . activeEnterMode = a . enterMode = a . blockless ? CKEDITOR . ENTER _BR : c . enterMode ; a . activeShiftEnterMode = a . shiftEnterMode = a . blockless ? CKEDITOR . ENTER _BR : c . shiftEnterMode ; c . skin && ( CKEDITOR . skinName = c . skin ) ; a . fireOnce ( "configLoaded" ) ; a . dataProcessor = new CKEDITOR . htmlDataProcessor ( a ) ; a . filter = a . activeFilter = new CKEDITOR . filter ( a ) ; b ( a ) } ) ; d && null != d . customConfig && ( a . config . customConfig = d . customConfig ) ; l ( a ) || a . fireOnce ( "customConfigLoaded" ) } function b ( a ) { CKEDITOR . skin . loadPart ( "editor" , function ( ) { d ( a ) } ) } function d ( a ) { CKEDITOR . lang . load ( a . config . language ,
d ) { var c = a . config . title ; a . langCode = b ; a . lang = CKEDITOR . tools . prototypedCopy ( d ) ; a . title = "string" == typeof c || ! 1 === c ? c : [ a . lang . editor , a . name ] . join ( ", " ) ; a . config . contentsLangDirection || ( a . config . contentsLangDirection = a . elementMode == CKEDITOR . ELEMENT _MODE _INLINE ? a . element . getDirection ( 1 ) : a . lang . dir ) ; a . fire ( "langLoaded" ) ; h ( a ) } ) } function h ( a ) { a . getStylesSet ( function ( b ) { a . once ( "loaded" , function ( ) { a . fire ( "stylesSet" , { styles : b } ) } , null , null , 1 ) ; p ( a ) } ) } function p ( a ) { var b = a . config , d = b . plugins , c = b . extraPlugins , h =
a . config . defaultLanguage , function ( b , d ) { var c = a . config . title ; a . langCode = b ; a . lang = CKEDITOR . tools . prototypedCopy ( d ) ; a . title = "string" == typeof c || ! 1 === c ? c : [ a . lang . editor , a . name ] . join ( ", " ) ; a . config . contentsLangDirection || ( a . config . contentsLangDirection = a . elementMode == CKEDITOR . ELEMENT _MODE _INLINE ? a . element . getDirection ( 1 ) : a . lang . dir ) ; a . fire ( "langLoaded" ) ; h ( a ) } ) } function h ( a ) { a . getStylesSet ( function ( b ) { a . once ( "loaded" , function ( ) { a . fire ( "stylesSet" , { styles : b } ) } , null , null , 1 ) ; p ( a ) } ) } function p ( a ) { var b = a . config ,
b . removePlugins ; if ( c ) var f = new RegExp ( "(?:^|,)(?:" + c . replace ( /\s*,\s*/g , "|" ) + ")(?\x3d,|$)" , "g" ) , d = d . replace ( f , "" ) , d = d + ( "," + c ) ; if ( h ) var g = new RegExp ( "(?:^|,)(?:" + h . replace ( /\s*,\s*/g , "|" ) + ")(?\x3d,|$)" , "g" ) , d = d . replace ( g , "" ) ; CKEDITOR . env . air && ( d += ",adobeair" ) ; CKEDITOR . plugins . load ( d . split ( "," ) , function ( d ) { var c = [ ] , h = [ ] , f = [ ] ; a . plugins = d ; for ( var k in d ) { var e = d [ k ] , r = e . lang , m = null , p = e . requires , E ; CKEDITOR . tools . isArray ( p ) && ( p = p . join ( "," ) ) ; if ( p && ( E = p . match ( g ) ) ) for ( ; p = E . pop ( ) ; ) CKEDITOR . error ( "editor-plugin-required" ,
d = b . plugins , c = b . extraPlugins , h = b . removePlugins ; if ( c ) var f = new RegExp ( "(?:^|,)(?:" + c . replace ( /\s*,\s*/g , "|" ) + ")(?\x3d,|$)" , "g" ) , d = d . replace ( f , "" ) , d = d + ( "," + c ) ; if ( h ) var g = new RegExp ( "(?:^|,)(?:" + h . replace ( /\s*,\s*/g , "|" ) + ")(?\x3d,|$)" , "g" ) , d = d . replace ( g , "" ) ; CKEDITOR . env . air && ( d += ",adobeair" ) ; CKEDITOR . plugins . load ( d . split ( "," ) , function ( d ) { var c = [ ] , h = [ ] , f = [ ] ; a . plugins = d ; for ( var k in d ) { var e = d [ k ] , r = e . lang , m = null , p = e . requires , E ; CKEDITOR . tools . isArray ( p ) && ( p = p . join ( "," ) ) ; if ( p && ( E = p . match ( g ) ) ) for ( ; p = E . pop ( ) ; ) CKEDITOR . error ( "editor-plugin-required" ,
{ plugin : p . replace ( "," , "" ) , requiredBy : k } ) ; r && ! a . lang [ k ] && ( r . split && ( r = r . split ( "," ) ) , 0 <= CKEDITOR . tools . indexOf ( r , a . langCode ) ? m = a . langCode : ( m = a . langCode . replace ( /-.*/ , "" ) , m = m != a . langCode && 0 <= CKEDITOR . tools . indexOf ( r , m ) ? m : 0 <= CKEDITOR . tools . indexOf ( r , "en" ) ? "en" : r [ 0 ] ) , e . langEntries && e . langEntries [ m ] ? ( a . lang [ k ] = e . langEntries [ m ] , m = null ) : f . push ( CKEDITOR . getUrl ( e . path + "lang/" + m + ".js" ) ) ) ; h . push ( m ) ; c . push ( e ) } CKEDITOR . scriptLoader . load ( f , function ( ) { for ( var d = [ "beforeInit" , "init" , "afterInit" ] , f = 0 ; f < d . length ; f ++ ) for ( var g =
{ plugin : p . replace ( "," , "" ) , requiredBy : k } ) ; r && ! a . lang [ k ] && ( r . split && ( r = r . split ( "," ) ) , 0 <= CKEDITOR . tools . indexOf ( r , a . langCode ) ? m = a . langCode : ( m = a . langCode . replace ( /-.*/ , "" ) , m = m != a . langCode && 0 <= CKEDITOR . tools . indexOf ( r , m ) ? m : 0 <= CKEDITOR . tools . indexOf ( r , "en" ) ? "en" : r [ 0 ] ) , e . langEntries && e . langEntries [ m ] ? ( a . lang [ k ] = e . langEntries [ m ] , m = null ) : f . push ( CKEDITOR . getUrl ( e . path + "lang/" + m + ".js" ) ) ) ; h . push ( m ) ; c . push ( e ) } CKEDITOR . scriptLoader . load ( f , function ( ) { for ( var d = [ "beforeInit" , "init" , "afterInit" ] , f = 0 ; f < d . length ; f ++ ) for ( var g =
0 ; g < c . length ; g ++ ) { var k = c [ g ] ; 0 === f && h [ g ] && k . lang && k . langEntries && ( a . lang [ k . name ] = k . langEntries [ h [ g ] ] ) ; if ( k [ d [ f ] ] ) k [ d [ f ] ] ( a ) } a . fireOnce ( "pluginsLoaded" ) ; b . keystrokes && a . setKeystroke ( a . config . keystrokes ) ; for ( g = 0 ; g < a . config . blockedKeystrokes . length ; g ++ ) a . keystrokeHandler . blockedKeystrokes [ a . config . blockedKeystrokes [ g ] ] = 1 ; a . status = "loaded" ; a . fireOnce ( "loaded" ) ; CKEDITOR . fire ( "instanceLoaded" , null , a ) } ) } ) } function v ( ) { var a = this . element ; if ( a && this . elementMode != CKEDITOR . ELEMENT _MODE _APPENDTO ) { var b = this . getData ( ) ;
0 ; g < c . length ; g ++ ) { var k = c [ g ] ; 0 === f && h [ g ] && k . lang && k . langEntries && ( a . lang [ k . name ] = k . langEntries [ h [ g ] ] ) ; if ( k [ d [ f ] ] ) k [ d [ f ] ] ( a ) } a . fireOnce ( "pluginsLoaded" ) ; b . keystrokes && a . setKeystroke ( a . config . keystrokes ) ; for ( g = 0 ; g < a . config . blockedKeystrokes . length ; g ++ ) a . keystrokeHandler . blockedKeystrokes [ a . config . blockedKeystrokes [ g ] ] = 1 ; a . status = "loaded" ; a . fireOnce ( "loaded" ) ; CKEDITOR . fire ( "instanceLoaded" , null , a ) } ) } ) } function v ( ) { var a = this . element ; if ( a && this . elementMode != CKEDITOR . ELEMENT _MODE _APPENDTO ) { var b = this . getData ( ) ;
this . config . htmlEncodeOutput && ( b = CKEDITOR . tools . htmlEncode ( b ) ) ; a . is ( "textarea" ) ? a . setValue ( b ) : a . setHtml ( b ) ; return ! 0 } return ! 1 } a . prototype = CKEDITOR . editor . prototype ; CKEDITOR . editor = a ; var u = 0 , t = { } ; CKEDITOR . tools . extend ( CKEDITOR . editor . prototype , { addCommand : function ( a , b ) { b . name = a . toLowerCase ( ) ; var d = new CKEDITOR . command ( this , b ) ; this . mode && f ( this , d ) ; return this . commands [ a ] = d } , _attachToForm : function ( ) { function a ( b ) { d . updateElement ( ) ; d . _ . required && ! c . getValue ( ) && ! 1 === d . fire ( "required" ) && b . data . preventDefault ( ) }
this . config . htmlEncodeOutput && ( b = CKEDITOR . tools . htmlEncode ( b ) ) ; a . is ( "textarea" ) ? a . setValue ( b ) : a . setHtml ( b ) ; return ! 0 } return ! 1 } a . prototype = CKEDITOR . editor . prototype ; CKEDITOR . editor = a ; var u = 0 , t = { } ; CKEDITOR . tools . extend ( CKEDITOR . editor . prototype , { addCommand : function ( a , b ) { b . name = a . toLowerCase ( ) ; var d = new CKEDITOR . command ( this , b ) ; this . mode && f ( this , d ) ; return this . commands [ a ] = d } , _attachToForm : function ( ) { function a ( b ) { d . updateElement ( ) ; d . _ . required && ! c . getValue ( ) && ! 1 === d . fire ( "required" ) && b . data . preventDefault ( ) }
function b ( a ) { return ! ! ( a && a . call && a . apply ) } var d = this , c = d . element , h = new CKEDITOR . dom . element ( c . $ . form ) ; c . is ( "textarea" ) && h && ( h . on ( "submit" , a ) , b ( h . $ . submit ) && ( h . $ . submit = CKEDITOR . tools . override ( h . $ . submit , function ( b ) { return function ( ) { a ( ) ; b . apply ? b . apply ( this ) : b ( ) } } ) ) , d . on ( "destroy" , function ( ) { h . removeListener ( "submit" , a ) } ) ) } , destroy : function ( a ) { this . fire ( "beforeDestroy" ) ; ! a && v . call ( this ) ; this . editable ( null ) ; this . filter . destroy ( ) ; delete this . filter ; delete this . activeFilter ; this . status = "destroyed" ;
function b ( a ) { return ! ! ( a && a . call && a . apply ) } var d = this , c = d . element , h = new CKEDITOR . dom . element ( c . $ . form ) ; c . is ( "textarea" ) && h && ( h . on ( "submit" , a ) , b ( h . $ . submit ) && ( h . $ . submit = CKEDITOR . tools . override ( h . $ . submit , function ( b ) { return function ( ) { a ( ) ; b . apply ? b . apply ( this ) : b ( ) } } ) ) , d . on ( "destroy" , function ( ) { h . removeListener ( "submit" , a ) } ) ) } , destroy : function ( a ) { this . fire ( "beforeDestroy" ) ; ! a && v . call ( this ) ; this . editable ( null ) ; this . filter && ( this . filter . destroy ( ) , delete this . filter ) ; delete this . activeFilter ; this . status =
this . fire ( "destroy" ) ; this . removeAllListeners ( ) ; CKEDITOR . remove ( this ) ; CKEDITOR . fire ( "instanceDestroyed" , null , this ) } , elementPath : function ( a ) { if ( ! a ) { a = this . getSelection ( ) ; if ( ! a ) return null ; a = a . getStartElement ( ) } return a ? new CKEDITOR . dom . elementPath ( a , this . editable ( ) ) : null } , createRange : function ( ) { var a = this . editable ( ) ; return a ? new CKEDITOR . dom . range ( a ) : null } , execCommand : function ( a , b ) { var d = this . getCommand ( a ) , c = { name : a , commandData : b , command : d } ; return d && d . state != CKEDITOR . TRISTATE _DISABLED && ! 1 !== this . fire ( "beforeCommandExec" ,
"destroyed" ; this . fire ( "destroy" ) ; this . removeAllListeners ( ) ; CKEDITOR . remove ( this ) ; CKEDITOR . fire ( "instanceDestroyed" , null , this ) } , elementPath : function ( a ) { if ( ! a ) { a = this . getSelection ( ) ; if ( ! a ) return null ; a = a . getStartElement ( ) } return a ? new CKEDITOR . dom . elementPath ( a , this . editable ( ) ) : null } , createRange : function ( ) { var a = this . editable ( ) ; return a ? new CKEDITOR . dom . range ( a ) : null } , execCommand : function ( a , b ) { var d = this . getCommand ( a ) , c = { name : a , commandData : b , command : d } ; return d && d . state != CKEDITOR . TRISTATE _DISABLED &&
c ) && ( c . returnValue = d . exec ( c . commandData ) , ! d . async && ! 1 !== this . fire ( "afterCommandExec" , c ) ) ? c . returnValue : ! 1 } , getCommand : function ( a ) { return this . commands [ a ] } , getData : function ( a ) { ! a && this . fire ( "beforeGetData" ) ; var b = this . _ . data ; "string" != typeof b && ( b = ( b = this . element ) && this . elementMode == CKEDITOR . ELEMENT _MODE _REPLACE ? b . is ( "textarea" ) ? b . getValue ( ) : b . getHtml ( ) : "" ) ; b = { dataValue : b } ; ! a && this . fire ( "getData" , b ) ; return b . dataValue } , getSnapshot : function ( ) { var a = this . fire ( "getSnapshot" ) ; "string" != typeof a && ( a = ( a =
! 1 !== this . fire ( "beforeCommandExec" , c ) && ( c . returnValue = d . exec ( c . commandData ) , ! d . async && ! 1 !== this . fire ( "afterCommandExec" , c ) ) ? c . returnValue : ! 1 } , getCommand : function ( a ) { return this . commands [ a ] } , getData : function ( a ) { ! a && this . fire ( "beforeGetData" ) ; var b = this . _ . data ; "string" != typeof b && ( b = ( b = this . element ) && this . elementMode == CKEDITOR . ELEMENT _MODE _REPLACE ? b . is ( "textarea" ) ? b . getValue ( ) : b . getHtml ( ) : "" ) ; b = { dataValue : b } ; ! a && this . fire ( "getData" , b ) ; return b . dataValue } , getSnapshot : function ( ) { var a = this . fire ( "getSnapshot" ) ;
this . element ) && this . elementMode == CKEDITOR . ELEMENT _MODE _REPLACE ? a . is ( "textarea" ) ? a . getValue ( ) : a . getHtml ( ) : "" ) ; return a } , loadSnapshot : function ( a ) { this . fire ( "loadSnapshot" , a ) } , setData : function ( a , b , d ) { var c = ! 0 , h = b ; b && "object" == typeof b && ( d = b . internal , h = b . callback , c = ! b . noSnapshot ) ; ! d && c && this . fire ( "saveSnapshot" ) ; if ( h || ! d ) this . once ( "dataReady" , function ( a ) { ! d && c && this . fire ( "saveSnapshot" ) ; h && h . call ( a . editor ) } ) ; a = { dataValue : a } ; ! d && this . fire ( "setData" , a ) ; this . _ . data = a . dataValue ; ! d && this . fire ( "afterSetData" ,
"string" != typeof a && ( a = ( a = this . element ) && this . elementMode == CKEDITOR . ELEMENT _MODE _REPLACE ? a . is ( "textarea" ) ? a . getValue ( ) : a . getHtml ( ) : "" ) ; return a } , loadSnapshot : function ( a ) { this . fire ( "loadSnapshot" , a ) } , setData : function ( a , b , d ) { var c = ! 0 , h = b ; b && "object" == typeof b && ( d = b . internal , h = b . callback , c = ! b . noSnapshot ) ; ! d && c && this . fire ( "saveSnapshot" ) ; if ( h || ! d ) this . once ( "dataReady" , function ( a ) { ! d && c && this . fire ( "saveSnapshot" ) ; h && h . call ( a . editor ) } ) ; a = { dataValue : a } ; ! d && this . fire ( "setData" , a ) ; this . _ . data = a . dataValue ;
a ) } , setReadOnly : function ( a ) { a = null == a || a ; this . readOnly != a && ( this . readOnly = a , this . keystrokeHandler . blockedKeystrokes [ 8 ] = + a , this . editable ( ) . setReadOnly ( a ) , this . fire ( "readOnly" ) ) } , insertHtml : function ( a , b , d ) { this . fire ( "insertHtml" , { dataValue : a , mode : b , range : d } ) } , insertText : function ( a ) { this . fire ( "insertText" , a ) } , insertElement : function ( a ) { this . fire ( "insertElement" , a ) } , getSelectedHtml : function ( a ) { var b = this . editable ( ) , d = this . getSelection ( ) , d = d && d . getRanges ( ) ; if ( ! b || ! d || 0 === d . length ) return null ; b = b . getHtmlFromRange ( d [ 0 ] ) ;
! d && this . fire ( "afterSetData" , a ) } , setReadOnly : function ( a ) { a = null == a || a ; this . readOnly != a && ( this . readOnly = a , this . keystrokeHandler . blockedKeystrokes [ 8 ] = + a , this . editable ( ) . setReadOnly ( a ) , this . fire ( "readOnly" ) ) } , insertHtml : function ( a , b , d ) { this . fire ( "insertHtml" , { dataValue : a , mode : b , range : d } ) } , insertText : function ( a ) { this . fire ( "insertText" , a ) } , insertElement : function ( a ) { this . fire ( "insertElement" , a ) } , getSelectedHtml : function ( a ) { var b = this . editable ( ) , d = this . getSelection ( ) , d = d && d . getRanges ( ) ; if ( ! b || ! d || 0 === d . length ) return null ;
return a ? b . getHtml ( ) : b } , extractSelectedHtml : function ( a , b ) { var d = this . editable ( ) , c = this . getSelection ( ) . getRanges ( ) ; if ( ! d || 0 === c . length ) return null ; c = c [ 0 ] ; d = d . extractHtmlFromRange ( c , b ) ; b || this . getSelection ( ) . selectRanges ( [ c ] ) ; return a ? d . getHtml ( ) : d } , focus : function ( ) { this . fire ( "beforeFocus" ) } , checkDirty : function ( ) { return "ready" == this . status && this . _ . previousValue !== this . getSnapshot ( ) } , resetDirty : function ( ) { this . _ . previousValue = this . getSnapshot ( ) } , updateElement : function ( ) { return v . call ( this ) } , setKeystroke : function ( ) { for ( var a =
b = b . getHtmlFromRange ( d [ 0 ] ) ; return a ? b . getHtml ( ) : b } , extractSelectedHtml : function ( a , b ) { var d = this . editable ( ) , c = this . getSelection ( ) . getRanges ( ) ; if ( ! d || 0 === c . length ) return null ; c = c [ 0 ] ; d = d . extractHtmlFromRange ( c , b ) ; b || this . getSelection ( ) . selectRanges ( [ c ] ) ; return a ? d . getHtml ( ) : d } , focus : function ( ) { this . fire ( "beforeFocus" ) } , checkDirty : function ( ) { return "ready" == this . status && this . _ . previousValue !== this . getSnapshot ( ) } , resetDirty : function ( ) { this . _ . previousValue = this . getSnapshot ( ) } , updateElement : function ( ) { return v . call ( this ) } ,
this . keystrokeHandler . keystrokes , b = CKEDITOR . tools . isArray ( arguments [ 0 ] ) ? arguments [ 0 ] : [ [ ] . slice . call ( arguments , 0 ) ] , d , c , h = b . length ; h -- ; ) d = b [ h ] , c = 0 , CKEDITOR . tools . isArray ( d ) && ( c = d [ 1 ] , d = d [ 0 ] ) , c ? a [ d ] = c : delete a [ d ] } , addFeature : function ( a ) { return this . filter . addFeature ( a ) } , setActiveFilter : function ( a ) { a || ( a = this . filter ) ; this . activeFilter !== a && ( this . activeFilter = a , this . fire ( "activeFilterChange" ) , a === this . filter ? this . setActiveEnterMode ( null , null ) : this . setActiveEnterMode ( a . getAllowedEnterMode ( this . enterMode ) ,
setKeystroke : function ( ) { for ( var a = this . keystrokeHandler . keystrokes , b = CKEDITOR . tools . isArray ( arguments [ 0 ] ) ? arguments [ 0 ] : [ [ ] . slice . call ( arguments , 0 ) ] , d , c , h = b . length ; h -- ; ) d = b [ h ] , c = 0 , CKEDITOR . tools . isArray ( d ) && ( c = d [ 1 ] , d = d [ 0 ] ) , c ? a [ d ] = c : delete a [ d ] } , addFeature : function ( a ) { return this . filter . addFeature ( a ) } , setActiveFilter : function ( a ) { a || ( a = this . filter ) ; this . activeFilter !== a && ( this . activeFilter = a , this . fire ( "activeFilterChange" ) , a === this . filter ? this . setActiveEnterMode ( null , null ) : this . setActiveEnterMode ( a . getAllowedEnterMode ( this . enterMode ) ,
a . getAllowedEnterMode ( this . shiftEnterMode , ! 0 ) ) ) } , setActiveEnterMode : function ( a , b ) { a = a ? this . blockless ? CKEDITOR . ENTER _BR : a : this . enterMode ; b = b ? this . blockless ? CKEDITOR . ENTER _BR : b : this . shiftEnterMode ; if ( this . activeEnterMode != a || this . activeShiftEnterMode != b ) this . activeEnterMode = a , this . activeShiftEnterMode = b , this . fire ( "activeEnterModeChange" ) } , showNotification : function ( a ) { alert ( a ) } } ) } ( ) , CKEDITOR . ELEMENT _MODE _NONE = 0 , CKEDITOR . ELEMENT _MODE _REPLACE = 1 , CKEDITOR . ELEMENT _MODE _APPENDTO = 2 , CKEDITOR . ELEMENT _MODE _INLINE =
a . getAllowedEnterMode ( this . shiftEnterMode , ! 0 ) ) ) } , setActiveEnterMode : function ( a , b ) { a = a ? this . blockless ? CKEDITOR . ENTER _BR : a : this . enterMode ; b = b ? this . blockless ? CKEDITOR . ENTER _BR : b : this . shiftEnterMode ; if ( this . activeEnterMode != a || this . activeShiftEnterMode != b ) this . activeEnterMode = a , this . activeShiftEnterMode = b , this . fire ( "activeEnterModeChange" ) } , showNotification : function ( a ) { alert ( a ) } } ) } ( ) , CKEDITOR . ELEMENT _MODE _NONE = 0 , CKEDITOR . ELEMENT _MODE _REPLACE = 1 , CKEDITOR . ELEMENT _MODE _APPENDTO = 2 , CKEDITOR . ELEMENT _MODE _INLINE =
3 , CKEDITOR . htmlParser = function ( ) { this . _ = { htmlPartsRegex : /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--\x3e)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g } } , function ( ) { var a = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g , e = { checked : 1 , compact : 1 , declare : 1 , defer : 1 , disabled : 1 , ismap : 1 , multiple : 1 , nohref : 1 , noresize : 1 , noshade : 1 , nowrap : 1 , readonly : 1 , selected : 1 } ; CKEDITOR . htmlParser . prototype = { onTagOpen : function ( ) { } , onTagClose : function ( ) { } ,
3 , CKEDITOR . htmlParser = function ( ) { this . _ = { htmlPartsRegex : /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--\x3e)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g } } , function ( ) { var a = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g , e = { checked : 1 , compact : 1 , declare : 1 , defer : 1 , disabled : 1 , ismap : 1 , multiple : 1 , nohref : 1 , noresize : 1 , noshade : 1 , nowrap : 1 , readonly : 1 , selected : 1 } ; CKEDITOR . htmlParser . prototype = { onTagOpen : function ( ) { } , onTagClose : function ( ) { } ,
onText : function ( ) { } , onCDATA : function ( ) { } , onComment : function ( ) { } , parse : function ( c ) { for ( var g , f , m = 0 , l ; g = this . _ . htmlPartsRegex . exec ( c ) ; ) { f = g . index ; if ( f > m ) if ( m = c . substring ( m , f ) , l ) l . push ( m ) ; else this . onText ( m ) ; m = this . _ . htmlPartsRegex . lastIndex ; if ( f = g [ 1 ] ) if ( f = f . toLowerCase ( ) , l && CKEDITOR . dtd . $cdata [ f ] && ( this . onCDATA ( l . join ( "" ) ) , l = null ) , ! l ) { this . onTagClose ( f ) ; continue } if ( l ) l . push ( g [ 0 ] ) ; else if ( f = g [ 3 ] ) { if ( f = f . toLowerCase ( ) , ! /="/ . test ( f ) ) { var k = { } , b , d = g [ 4 ] ; g = ! ! g [ 5 ] ; if ( d ) for ( ; b = a . exec ( d ) ; ) { var h = b [ 1 ] . toLowerCase ( ) ;
onText : function ( ) { } , onCDATA : function ( ) { } , onComment : function ( ) { } , parse : function ( c ) { for ( var g , f , m = 0 , l ; g = this . _ . htmlPartsRegex . exec ( c ) ; ) { f = g . index ; if ( f > m ) if ( m = c . substring ( m , f ) , l ) l . push ( m ) ; else this . onText ( m ) ; m = this . _ . htmlPartsRegex . lastIndex ; if ( f = g [ 1 ] ) if ( f = f . toLowerCase ( ) , l && CKEDITOR . dtd . $cdata [ f ] && ( this . onCDATA ( l . join ( "" ) ) , l = null ) , ! l ) { this . onTagClose ( f ) ; continue } if ( l ) l . push ( g [ 0 ] ) ; else if ( f = g [ 3 ] ) { if ( f = f . toLowerCase ( ) , ! /="/ . test ( f ) ) { var k = { } , b , d = g [ 4 ] ; g = ! ! g [ 5 ] ; if ( d ) for ( ; b = a . exec ( d ) ; ) { var h = b [ 1 ] . toLowerCase ( ) ;
@ -262,10 +262,10 @@ f,g);a.elements&&e(this.elementsRules,a.elements,f,g);a.attributes&&e(this.attri
g , f ) { return this . commentRules . exec ( a , g , f ) } , onRoot : function ( a , g ) { return this . rootRules . exec ( a , g ) } , onElement : function ( a , g ) { for ( var f = [ this . elementsRules [ "^" ] , this . elementsRules [ g . name ] , this . elementsRules . $ ] , e , l = 0 ; 3 > l ; l ++ ) if ( e = f [ l ] ) { e = e . exec ( a , g , this ) ; if ( ! 1 === e ) return null ; if ( e && e != g ) return this . onNode ( a , e ) ; if ( g . parent && ! g . name ) break } return g } , onNode : function ( a , g ) { var f = g . type ; return f == CKEDITOR . NODE _ELEMENT ? this . onElement ( a , g ) : f == CKEDITOR . NODE _TEXT ? new CKEDITOR . htmlParser . text ( this . onText ( a , g . value ) ) :
g , f ) { return this . commentRules . exec ( a , g , f ) } , onRoot : function ( a , g ) { return this . rootRules . exec ( a , g ) } , onElement : function ( a , g ) { for ( var f = [ this . elementsRules [ "^" ] , this . elementsRules [ g . name ] , this . elementsRules . $ ] , e , l = 0 ; 3 > l ; l ++ ) if ( e = f [ l ] ) { e = e . exec ( a , g , this ) ; if ( ! 1 === e ) return null ; if ( e && e != g ) return this . onNode ( a , e ) ; if ( g . parent && ! g . name ) break } return g } , onNode : function ( a , g ) { var f = g . type ; return f == CKEDITOR . NODE _ELEMENT ? this . onElement ( a , g ) : f == CKEDITOR . NODE _TEXT ? new CKEDITOR . htmlParser . text ( this . onText ( a , g . value ) ) :
f == CKEDITOR . NODE _COMMENT ? new CKEDITOR . htmlParser . comment ( this . onComment ( a , g . value ) ) : null } , onAttribute : function ( a , g , f , e ) { return ( f = this . attributesRules [ f ] ) ? f . exec ( a , e , g , this ) : e } } } ) ; CKEDITOR . htmlParser . filterRulesGroup = a ; a . prototype = { add : function ( a , g , f ) { this . rules . splice ( this . findIndex ( g ) , 0 , { value : a , priority : g , options : f } ) } , addMany : function ( a , g , f ) { for ( var e = [ this . findIndex ( g ) , 0 ] , l = 0 , k = a . length ; l < k ; l ++ ) e . push ( { value : a [ l ] , priority : g , options : f } ) ; this . rules . splice . apply ( this . rules , e ) } , findIndex : function ( a ) { for ( var g =
f == CKEDITOR . NODE _COMMENT ? new CKEDITOR . htmlParser . comment ( this . onComment ( a , g . value ) ) : null } , onAttribute : function ( a , g , f , e ) { return ( f = this . attributesRules [ f ] ) ? f . exec ( a , e , g , this ) : e } } } ) ; CKEDITOR . htmlParser . filterRulesGroup = a ; a . prototype = { add : function ( a , g , f ) { this . rules . splice ( this . findIndex ( g ) , 0 , { value : a , priority : g , options : f } ) } , addMany : function ( a , g , f ) { for ( var e = [ this . findIndex ( g ) , 0 ] , l = 0 , k = a . length ; l < k ; l ++ ) e . push ( { value : a [ l ] , priority : g , options : f } ) ; this . rules . splice . apply ( this . rules , e ) } , findIndex : function ( a ) { for ( var g =
this . rules , f = g . length - 1 ; 0 <= f && a < g [ f ] . priority ; ) f -- ; return f + 1 } , exec : function ( a , g ) { var f = g instanceof CKEDITOR . htmlParser . node || g instanceof CKEDITOR . htmlParser . fragment , e = Array . prototype . slice . call ( arguments , 1 ) , l = this . rules , k = l . length , b , d , h , p ; for ( p = 0 ; p < k ; p ++ ) if ( f && ( b = g . type , d = g . name ) , h = l [ p ] , ! ( a . nonEditable && ! h . options . applyToAll || a . nestedEditable && h . options . excludeNestedEditable ) ) { h = h . value . apply ( null , e ) ; if ( ! 1 === h || f && h && ( h . name != d || h . type != b ) ) return h ; null != h && ( e [ 0 ] = g = h ) } return g } , execOnName : function ( a ,
this . rules , f = g . length - 1 ; 0 <= f && a < g [ f ] . priority ; ) f -- ; return f + 1 } , exec : function ( a , g ) { var f = g instanceof CKEDITOR . htmlParser . node || g instanceof CKEDITOR . htmlParser . fragment , e = Array . prototype . slice . call ( arguments , 1 ) , l = this . rules , k = l . length , b , d , h , p ; for ( p = 0 ; p < k ; p ++ ) if ( f && ( b = g . type , d = g . name ) , h = l [ p ] , ! ( a . nonEditable && ! h . options . applyToAll || a . nestedEditable && h . options . excludeNestedEditable ) ) { h = h . value . apply ( null , e ) ; if ( ! 1 === h || f && h && ( h . name != d || h . type != b ) ) return h ; null != h && ( e [ 0 ] = g = h ) } return g } , execOnName : function ( a ,
g ) { for ( var f = 0 , e = this . rules , l = e . length , k ; g && f < l ; f ++ ) k = e [ f ] , a . nonEditable && ! k . options . applyToAll || a . nestedEditable && k . options . excludeNestedEditable || ( g = g . replace ( k . value [ 0 ] , k . value [ 1 ] ) ) ; return g } } } ( ) , function ( ) { function a ( a , b ) { function d ( a ) { return a || CKEDITOR . env . needsNbspFiller ? new CKEDITOR . htmlParser . text ( " " ) : new CKEDITOR . htmlParser . element ( "br" , { "data-cke-bogus" : 1 } ) } function h ( a , b ) { return function ( f ) { if ( f . type != CKEDITOR . NODE _DOCUMENT _FRAGMENT ) { var h = [ ] , k = c ( f ) , r , E ; if ( k ) for ( e ( k , 1 ) && h . push ( k ) ; k ; ) m ( k ) &&
g ) { for ( var f = 0 , e = this . rules , l = e . length , k ; g && f < l ; f ++ ) k = e [ f ] , a . nonEditable && ! k . options . applyToAll || a . nestedEditable && k . options . excludeNestedEditable || ( g = g . replace ( k . value [ 0 ] , k . value [ 1 ] ) ) ; return g } } } ( ) , function ( ) { function a ( a , b ) { function d ( a ) { return a || CKEDITOR . env . needsNbspFiller ? new CKEDITOR . htmlParser . text ( " " ) : new CKEDITOR . htmlParser . element ( "br" , { "data-cke-bogus" : 1 } ) } function h ( a , b ) { return function ( f ) { if ( f . type != CKEDITOR . NODE _DOCUMENT _FRAGMENT ) { var h = [ ] , k = c ( f ) , r , p ; if ( k ) for ( e ( k , 1 ) && h . push ( k ) ; k ; ) m ( k ) &&
( r = g ( k ) ) && e ( r ) && ( ( E = g ( r ) ) && ! m ( E ) ? h . push ( r ) : ( d ( p ) . insertAfter ( r ) , r . remove ( ) ) ) , k = k . previous ; for ( k = 0 ; k < h . length ; k ++ ) h [ k ] . remove ( ) ; if ( h = ! a || ! 1 !== ( "function" == typeof b ? b ( f ) : b ) ) p || CKEDITOR . env . needsBrFiller || f . type != CKEDITOR . NODE _DOCUMENT _FRAGMENT ? p || CKEDITOR . env . needsBrFiller || ! ( 7 < document . documentMode || f . name in CKEDITOR . dtd . tr || f . name in CKEDITOR . dtd . $listItem ) ? ( h = c ( f ) , h = ! h || "form" == f . name && "input" == h . name ) : h = ! 1 : h = ! 1 ; h && f . add ( d ( a ) ) } } } function e ( a , b ) { if ( ( ! p || CKEDITOR . env . needsBrFiller ) && a . type == CKEDITOR . NODE _ELEMENT &&
( r = g ( k ) ) && e ( r ) && ( ( p = g ( r ) ) && ! m ( p ) ? h . push ( r ) : ( d ( E ) . insertAfter ( r ) , r . remove ( ) ) ) , k = k . previous ; for ( k = 0 ; k < h . length ; k ++ ) h [ k ] . remove ( ) ; if ( h = ! a || ! 1 !== ( "function" == typeof b ? b ( f ) : b ) ) E || CKEDITOR . env . needsBrFiller || f . type != CKEDITOR . NODE _DOCUMENT _FRAGMENT ? E || CKEDITOR . env . needsBrFiller || ! ( 7 < document . documentMode || f . name in CKEDITOR . dtd . tr || f . name in CKEDITOR . dtd . $listItem ) ? ( h = c ( f ) , h = ! h || "form" == f . name && "input" == h . name ) : h = ! 1 : h = ! 1 ; h && f . add ( d ( a ) ) } } } function e ( a , b ) { if ( ( ! E || CKEDITOR . env . needsBrFiller ) && a . type == CKEDITOR . NODE _ELEMENT &&
"br" == a . name && ! a . attributes [ "data-cke-eol" ] ) return ! 0 ; var d ; return a . type == CKEDITOR . NODE _TEXT && ( d = a . value . match ( q ) ) && ( d . index && ( ( new CKEDITOR . htmlParser . text ( a . value . substring ( 0 , d . index ) ) ) . insertBefore ( a ) , a . value = d [ 0 ] ) , ! CKEDITOR . env . needsBrFiller && p && ( ! b || a . parent . name in E) || ! p && ( ( d = a . previous ) && "br" == d . name || ! d || m ( d ) ) ) ? ! 0 : ! 1 } var k = { elements : { } } , p= "html" == b , E = CKEDITOR . tools . extend ( { } , r ) , n ; for ( n in E ) "#" in y [ n ] || delete E[ n ] ; for ( n in E ) k . elements [ n ] = h ( p , a . config . fillEmptyBlocks ) ; k . root = h ( p , ! 1 ) ; k . elements . br =
"br" == a . name && ! a . attributes [ "data-cke-eol" ] ) return ! 0 ; var d ; return a . type == CKEDITOR . NODE _TEXT && ( d = a . value . match ( q ) ) && ( d . index && ( ( new CKEDITOR . htmlParser . text ( a . value . substring ( 0 , d . index ) ) ) . insertBefore ( a ) , a . value = d [ 0 ] ) , ! CKEDITOR . env . needsBrFiller && E && ( ! b || a . parent . name in p) || ! E && ( ( d = a . previous ) && "br" == d . name || ! d || m ( d ) ) ) ? ! 0 : ! 1 } var k = { elements : { } } , E= "html" == b , p = CKEDITOR . tools . extend ( { } , r ) , n ; for ( n in p ) "#" in y [ n ] || delete p[ n ] ; for ( n in p ) k . elements [ n ] = h ( E , a . config . fillEmptyBlocks ) ; k . root = h ( E , ! 1 ) ; k . elements . br =
function ( a ) { return function ( b ) { if ( b . parent . type != CKEDITOR . NODE _DOCUMENT _FRAGMENT ) { var c = b . attributes ; if ( "data-cke-bogus" in c || "data-cke-eol" in c ) delete c [ "data-cke-bogus" ] ; else { for ( c = b . next ; c && f ( c ) ; ) c = c . next ; var h = g ( b ) ; ! c && m ( b . parent ) ? l ( b . parent , d ( a ) ) : m ( c ) && h && ! m ( h ) && d ( a ) . insertBefore ( c ) } } } } ( p ) ; return k } function e ( a , b ) { return a != CKEDITOR . ENTER _BR && ! 1 !== b ? a == CKEDITOR . ENTER _DIV ? "div" : "p" : ! 1 } function c ( a ) { for ( a = a . children [ a . children . length - 1 ] ; a && f ( a ) ; ) a = a . previous ; return a } function g ( a ) { for ( a = a . previous ; a &&
function ( a ) { return function ( b ) { if ( b . parent . type != CKEDITOR . NODE _DOCUMENT _FRAGMENT ) { var c = b . attributes ; if ( "data-cke-bogus" in c || "data-cke-eol" in c ) delete c [ "data-cke-bogus" ] ; else { for ( c = b . next ; c && f ( c ) ; ) c = c . next ; var h = g ( b ) ; ! c && m ( b . parent ) ? l ( b . parent , d ( a ) ) : m ( c ) && h && ! m ( h ) && d ( a ) . insertBefore ( c ) } } } } ( E ) ; return k } function e ( a , b ) { return a != CKEDITOR . ENTER _BR && ! 1 !== b ? a == CKEDITOR . ENTER _DIV ? "div" : "p" : ! 1 } function c ( a ) { for ( a = a . children [ a . children . length - 1 ] ; a && f ( a ) ; ) a = a . previous ; return a } function g ( a ) { for ( a = a . previous ; a &&
f ( a ) ; ) a = a . previous ; return a } function f ( a ) { return a . type == CKEDITOR . NODE _TEXT && ! CKEDITOR . tools . trim ( a . value ) || a . type == CKEDITOR . NODE _ELEMENT && a . attributes [ "data-cke-bookmark" ] } function m ( a ) { return a && ( a . type == CKEDITOR . NODE _ELEMENT && a . name in r || a . type == CKEDITOR . NODE _DOCUMENT _FRAGMENT ) } function l ( a , b ) { var d = a . children [ a . children . length - 1 ] ; a . children . push ( b ) ; b . parent = a ; d && ( d . next = b , b . previous = d ) } function k ( a ) { a = a . attributes ; "false" != a . contenteditable && ( a [ "data-cke-editable" ] = a . contenteditable ? "true" : 1 ) ;
f ( a ) ; ) a = a . previous ; return a } function f ( a ) { return a . type == CKEDITOR . NODE _TEXT && ! CKEDITOR . tools . trim ( a . value ) || a . type == CKEDITOR . NODE _ELEMENT && a . attributes [ "data-cke-bookmark" ] } function m ( a ) { return a && ( a . type == CKEDITOR . NODE _ELEMENT && a . name in r || a . type == CKEDITOR . NODE _DOCUMENT _FRAGMENT ) } function l ( a , b ) { var d = a . children [ a . children . length - 1 ] ; a . children . push ( b ) ; b . parent = a ; d && ( d . next = b , b . previous = d ) } function k ( a ) { a = a . attributes ; "false" != a . contenteditable && ( a [ "data-cke-editable" ] = a . contenteditable ? "true" : 1 ) ;
a . contenteditable = "false" } function b ( a ) { a = a . attributes ; switch ( a [ "data-cke-editable" ] ) { case "true" : a . contenteditable = "true" ; break ; case "1" : delete a . contenteditable } } function d ( a ) { return a . replace ( D , function ( a , b , d ) { return "\x3c" + b + d . replace ( G , function ( a , b ) { return F . test ( b ) && - 1 == d . indexOf ( "data-cke-saved-" + b ) ? " data-cke-saved-" + a + " data-cke-" + CKEDITOR . rnd + "-" + a : a } ) + "\x3e" } ) } function h ( a , b ) { return a . replace ( b , function ( a , b , d ) { 0 === a . indexOf ( "\x3ctextarea" ) && ( a = b + u ( d ) . replace ( /</g , "\x26lt;" ) . replace ( />/g ,
a . contenteditable = "false" } function b ( a ) { a = a . attributes ; switch ( a [ "data-cke-editable" ] ) { case "true" : a . contenteditable = "true" ; break ; case "1" : delete a . contenteditable } } function d ( a ) { return a . replace ( D , function ( a , b , d ) { return "\x3c" + b + d . replace ( G , function ( a , b ) { return F . test ( b ) && - 1 == d . indexOf ( "data-cke-saved-" + b ) ? " data-cke-saved-" + a + " data-cke-" + CKEDITOR . rnd + "-" + a : a } ) + "\x3e" } ) } function h ( a , b ) { return a . replace ( b , function ( a , b , d ) { 0 === a . indexOf ( "\x3ctextarea" ) && ( a = b + u ( d ) . replace ( /</g , "\x26lt;" ) . replace ( />/g ,
"\x26gt;" ) + "\x3c/textarea\x3e" ) ; return "\x3ccke:encoded\x3e" + encodeURIComponent ( a ) + "\x3c/cke:encoded\x3e" } ) } function p ( a ) { return a . replace ( N , function ( a , b ) { return decodeURIComponent ( b ) } ) } function v ( a ) { return a . replace ( /\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g , function ( a ) { return "\x3c!--" + w + "{C}" + encodeURIComponent ( a ) . replace ( /--/g , "%2D%2D" ) + "--\x3e" } ) } function u ( a ) { return a . replace ( /\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g , function ( a , b ) { return decodeURIComponent ( b ) } ) } function t ( a , b ) { var d = b . _ . dataStore ;
"\x26gt;" ) + "\x3c/textarea\x3e" ) ; return "\x3ccke:encoded\x3e" + encodeURIComponent ( a ) + "\x3c/cke:encoded\x3e" } ) } function p ( a ) { return a . replace ( N , function ( a , b ) { return decodeURIComponent ( b ) } ) } function v ( a ) { return a . replace ( /\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g , function ( a ) { return "\x3c!--" + w + "{C}" + encodeURIComponent ( a ) . replace ( /--/g , "%2D%2D" ) + "--\x3e" } ) } function u ( a ) { return a . replace ( /\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g , function ( a , b ) { return decodeURIComponent ( b ) } ) } function t ( a , b ) { var d = b . _ . dataStore ;
@ -276,7 +276,7 @@ f.addRules(A);f.addRules(z,{applyToAll:!0});f.addRules(a(b,"html"),{applyToAll:!
g = 1 ) ; f = b . document . createElement ( f ) ; f . setHtml ( "a" + c ) ; c = f . getHtml ( ) . substr ( 1 ) ; c = c . replace ( new RegExp ( "data-cke-" + CKEDITOR . rnd + "-" , "ig" ) , "" ) ; g && ( c = c . replace ( /^<pre>|<\/pre>$/gi , "" ) ) ; c = c . replace ( P , "$1$2" ) ; c = p ( c ) ; c = u ( c ) ; f = ! 1 === a . fixForBody ? ! 1 : e ( a . enterMode , b . config . autoParagraph ) ; c = CKEDITOR . htmlParser . fragment . fromHtml ( c , a . context , f ) ; f && ( g = c , ! g . children . length && CKEDITOR . dtd [ g . name ] [ f ] && ( f = new CKEDITOR . htmlParser . element ( f ) , g . add ( f ) ) ) ; a . dataValue = c } , null , null , 5 ) ; b . on ( "toHtml" , function ( a ) { a . data . filter . applyTo ( a . data . dataValue ,
g = 1 ) ; f = b . document . createElement ( f ) ; f . setHtml ( "a" + c ) ; c = f . getHtml ( ) . substr ( 1 ) ; c = c . replace ( new RegExp ( "data-cke-" + CKEDITOR . rnd + "-" , "ig" ) , "" ) ; g && ( c = c . replace ( /^<pre>|<\/pre>$/gi , "" ) ) ; c = c . replace ( P , "$1$2" ) ; c = p ( c ) ; c = u ( c ) ; f = ! 1 === a . fixForBody ? ! 1 : e ( a . enterMode , b . config . autoParagraph ) ; c = CKEDITOR . htmlParser . fragment . fromHtml ( c , a . context , f ) ; f && ( g = c , ! g . children . length && CKEDITOR . dtd [ g . name ] [ f ] && ( f = new CKEDITOR . htmlParser . element ( f ) , g . add ( f ) ) ) ; a . dataValue = c } , null , null , 5 ) ; b . on ( "toHtml" , function ( a ) { a . data . filter . applyTo ( a . data . dataValue ,
! 0 , a . data . dontFilter , a . data . enterMode ) && b . fire ( "dataFiltered" ) } , null , null , 6 ) ; b . on ( "toHtml" , function ( a ) { a . data . dataValue . filterChildren ( g . dataFilter , ! 0 ) } , null , null , 10 ) ; b . on ( "toHtml" , function ( a ) { a = a . data ; var b = a . dataValue , d = new CKEDITOR . htmlParser . basicWriter ; b . writeChildrenHtml ( d ) ; b = d . getHtml ( ! 0 ) ; a . dataValue = v ( b ) } , null , null , 15 ) ; b . on ( "toDataFormat" , function ( a ) { var d = a . data . dataValue ; a . data . enterMode != CKEDITOR . ENTER _BR && ( d = d . replace ( /^<br *\/?>/i , "" ) ) ; a . data . dataValue = CKEDITOR . htmlParser . fragment . fromHtml ( d ,
! 0 , a . data . dontFilter , a . data . enterMode ) && b . fire ( "dataFiltered" ) } , null , null , 6 ) ; b . on ( "toHtml" , function ( a ) { a . data . dataValue . filterChildren ( g . dataFilter , ! 0 ) } , null , null , 10 ) ; b . on ( "toHtml" , function ( a ) { a = a . data ; var b = a . dataValue , d = new CKEDITOR . htmlParser . basicWriter ; b . writeChildrenHtml ( d ) ; b = d . getHtml ( ! 0 ) ; a . dataValue = v ( b ) } , null , null , 15 ) ; b . on ( "toDataFormat" , function ( a ) { var d = a . data . dataValue ; a . data . enterMode != CKEDITOR . ENTER _BR && ( d = d . replace ( /^<br *\/?>/i , "" ) ) ; a . data . dataValue = CKEDITOR . htmlParser . fragment . fromHtml ( d ,
a . data . context , e ( a . data . enterMode , b . config . autoParagraph ) ) } , null , null , 5 ) ; b . on ( "toDataFormat" , function ( a ) { a . data . dataValue . filterChildren ( g . htmlFilter , ! 0 ) } , null , null , 10 ) ; b . on ( "toDataFormat" , function ( a ) { a . data . filter . applyTo ( a . data . dataValue , ! 1 , ! 0 ) } , null , null , 11 ) ; b . on ( "toDataFormat" , function ( a ) { var d = a . data . dataValue , c = g . writer ; c . reset ( ) ; d . writeChildrenHtml ( c ) ; d = c . getHtml ( ! 0 ) ; d = u ( d ) ; d = t ( d , b ) ; a . data . dataValue = d } , null , null , 15 ) } ; CKEDITOR . htmlDataProcessor . prototype = { toHtml : function ( a , b , d , c ) { var f = this . editor ,
a . data . context , e ( a . data . enterMode , b . config . autoParagraph ) ) } , null , null , 5 ) ; b . on ( "toDataFormat" , function ( a ) { a . data . dataValue . filterChildren ( g . htmlFilter , ! 0 ) } , null , null , 10 ) ; b . on ( "toDataFormat" , function ( a ) { a . data . filter . applyTo ( a . data . dataValue , ! 1 , ! 0 ) } , null , null , 11 ) ; b . on ( "toDataFormat" , function ( a ) { var d = a . data . dataValue , c = g . writer ; c . reset ( ) ; d . writeChildrenHtml ( c ) ; d = c . getHtml ( ! 0 ) ; d = u ( d ) ; d = t ( d , b ) ; a . data . dataValue = d } , null , null , 15 ) } ; CKEDITOR . htmlDataProcessor . prototype = { toHtml : function ( a , b , d , c ) { var f = this . editor ,
h , g , e, k ; b && "object" == typeof b ? ( h = b . context , d = b . fixForBody , c = b . dontFilter , g = b . filter , e= b . enterMode , k = b . protectedWhitespaces ) : h = b ; h || null === h || ( h = f . editable ( ) . getName ( ) ) ; return f . fire ( "toHtml" , { dataValue : a , context : h , fixForBody : d , dontFilter : c , filter : g || f . filter , enterMode : e|| f . enterMode , protectedWhitespaces : k } ) . dataValue } , toDataFormat : function ( a , b ) { var d , c , f ; b && ( d = b . context , c = b . filter , f = b . enterMode ) ; d || null === d || ( d = this . editor . editable ( ) . getName ( ) ) ; return this . editor . fire ( "toDataFormat" , { dataValue : a ,
h , g , k, e ; b && "object" == typeof b ? ( h = b . context , d = b . fixForBody , c = b . dontFilter , g = b . filter , k= b . enterMode , e = b . protectedWhitespaces ) : h = b ; h || null === h || ( h = f . editable ( ) . getName ( ) ) ; return f . fire ( "toHtml" , { dataValue : a , context : h , fixForBody : d , dontFilter : c , filter : g || f . filter , enterMode : k|| f . enterMode , protectedWhitespaces : e } ) . dataValue } , toDataFormat : function ( a , b ) { var d , c , f ; b && ( d = b . context , c = b . filter , f = b . enterMode ) ; d || null === d || ( d = this . editor . editable ( ) . getName ( ) ) ; return this . editor . fire ( "toDataFormat" , { dataValue : a ,
filter : c || this . editor . filter , context : d , enterMode : f || this . editor . enterMode } ) . dataValue } } ; var q = /(?: |\xa0)$/ , w = "{cke_protected}" , y = CKEDITOR . dtd , C = "caption colgroup col thead tfoot tbody" . split ( " " ) , r = CKEDITOR . tools . extend ( { } , y . $blockLimit , y . $block ) , x = { elements : { input : k , textarea : k } } , B = { attributeNames : [ [ /^on/ , "data-cke-pa-on" ] , [ /^data-cke-expando$/ , "" ] ] } , A = { elements : { embed : function ( a ) { var b = a . parent ; if ( b && "object" == b . name ) { var d = b . attributes . width , b = b . attributes . height ; d && ( a . attributes . width = d ) ;
filter : c || this . editor . filter , context : d , enterMode : f || this . editor . enterMode } ) . dataValue } } ; var q = /(?: |\xa0)$/ , w = "{cke_protected}" , y = CKEDITOR . dtd , C = "caption colgroup col thead tfoot tbody" . split ( " " ) , r = CKEDITOR . tools . extend ( { } , y . $blockLimit , y . $block ) , x = { elements : { input : k , textarea : k } } , B = { attributeNames : [ [ /^on/ , "data-cke-pa-on" ] , [ /^data-cke-expando$/ , "" ] ] } , A = { elements : { embed : function ( a ) { var b = a . parent ; if ( b && "object" == b . name ) { var d = b . attributes . width , b = b . attributes . height ; d && ( a . attributes . width = d ) ;
b && ( a . attributes . height = b ) } } , a : function ( a ) { var b = a . attributes ; if ( ! ( a . children . length || b . name || b . id || a . attributes [ "data-cke-saved-name" ] ) ) return ! 1 } } } , z = { elementNames : [ [ /^cke:/ , "" ] , [ /^\?xml:namespace$/ , "" ] ] , attributeNames : [ [ /^data-cke-(saved|pa)-/ , "" ] , [ /^data-cke-.*/ , "" ] , [ "hidefocus" , "" ] ] , elements : { $ : function ( a ) { var b = a . attributes ; if ( b ) { if ( b [ "data-cke-temp" ] ) return ! 1 ; for ( var d = [ "name" , "href" , "src" ] , c , f = 0 ; f < d . length ; f ++ ) c = "data-cke-saved-" + d [ f ] , c in b && delete b [ d [ f ] ] } return a } , table : function ( a ) { a . children . slice ( 0 ) . sort ( function ( a ,
b && ( a . attributes . height = b ) } } , a : function ( a ) { var b = a . attributes ; if ( ! ( a . children . length || b . name || b . id || a . attributes [ "data-cke-saved-name" ] ) ) return ! 1 } } } , z = { elementNames : [ [ /^cke:/ , "" ] , [ /^\?xml:namespace$/ , "" ] ] , attributeNames : [ [ /^data-cke-(saved|pa)-/ , "" ] , [ /^data-cke-.*/ , "" ] , [ "hidefocus" , "" ] ] , elements : { $ : function ( a ) { var b = a . attributes ; if ( b ) { if ( b [ "data-cke-temp" ] ) return ! 1 ; for ( var d = [ "name" , "href" , "src" ] , c , f = 0 ; f < d . length ; f ++ ) c = "data-cke-saved-" + d [ f ] , c in b && delete b [ d [ f ] ] } return a } , table : function ( a ) { a . children . slice ( 0 ) . sort ( function ( a ,
b ) { var d , c ; a . type == CKEDITOR . NODE _ELEMENT && b . type == a . type && ( d = CKEDITOR . tools . indexOf ( C , a . name ) , c = CKEDITOR . tools . indexOf ( C , b . name ) ) ; - 1 < d && - 1 < c && d != c || ( d = a . parent ? a . getIndex ( ) : - 1 , c = b . parent ? b . getIndex ( ) : - 1 ) ; return d > c ? 1 : - 1 } ) } , param : function ( a ) { a . children = [ ] ; a . isEmpty = ! 0 ; return a } , span : function ( a ) { "Apple-style-span" == a . attributes [ "class" ] && delete a . name } , html : function ( a ) { delete a . attributes . contenteditable ; delete a . attributes [ "class" ] } , body : function ( a ) { delete a . attributes . spellcheck ; delete a . attributes . contenteditable } ,
b ) { var d , c ; a . type == CKEDITOR . NODE _ELEMENT && b . type == a . type && ( d = CKEDITOR . tools . indexOf ( C , a . name ) , c = CKEDITOR . tools . indexOf ( C , b . name ) ) ; - 1 < d && - 1 < c && d != c || ( d = a . parent ? a . getIndex ( ) : - 1 , c = b . parent ? b . getIndex ( ) : - 1 ) ; return d > c ? 1 : - 1 } ) } , param : function ( a ) { a . children = [ ] ; a . isEmpty = ! 0 ; return a } , span : function ( a ) { "Apple-style-span" == a . attributes [ "class" ] && delete a . name } , html : function ( a ) { delete a . attributes . contenteditable ; delete a . attributes [ "class" ] } , body : function ( a ) { delete a . attributes . spellcheck ; delete a . attributes . contenteditable } ,
@ -390,8 +390,8 @@ CKEDITOR.SELECTION_ELEMENT=3;var w="function"!=typeof window.getSelection,y=1;CK
h ; if ( a ) if ( a . getRangeAt ) c = ( h = a . rangeCount && a . getRangeAt ( 0 ) ) && new CKEDITOR . dom . node ( h . commonAncestorContainer ) ; else { try { h = a . createRange ( ) } catch ( f ) { } c = h && CKEDITOR . dom . element . get ( h . item && h . item ( 0 ) || h . parentElement ( ) ) } if ( ! c || c . type != CKEDITOR . NODE _ELEMENT && c . type != CKEDITOR . NODE _TEXT || ! this . root . equals ( c ) && ! this . root . contains ( c ) ) this . _ . cache . type = CKEDITOR . SELECTION _NONE , this . _ . cache . startElement = null , this . _ . cache . selectedElement = null , this . _ . cache . selectedText = "" , this . _ . cache . ranges = new CKEDITOR . dom . rangeList ;
h ; if ( a ) if ( a . getRangeAt ) c = ( h = a . rangeCount && a . getRangeAt ( 0 ) ) && new CKEDITOR . dom . node ( h . commonAncestorContainer ) ; else { try { h = a . createRange ( ) } catch ( f ) { } c = h && CKEDITOR . dom . element . get ( h . item && h . item ( 0 ) || h . parentElement ( ) ) } if ( ! c || c . type != CKEDITOR . NODE _ELEMENT && c . type != CKEDITOR . NODE _TEXT || ! this . root . equals ( c ) && ! this . root . contains ( c ) ) this . _ . cache . type = CKEDITOR . SELECTION _NONE , this . _ . cache . startElement = null , this . _ . cache . selectedElement = null , this . _ . cache . selectedText = "" , this . _ . cache . ranges = new CKEDITOR . dom . rangeList ;
return this } ; var C = { img : 1 , hr : 1 , li : 1 , table : 1 , tr : 1 , td : 1 , th : 1 , embed : 1 , object : 1 , ol : 1 , ul : 1 , a : 1 , input : 1 , form : 1 , select : 1 , textarea : 1 , button : 1 , fieldset : 1 , thead : 1 , tfoot : 1 } ; CKEDITOR . dom . selection . prototype = { getNative : function ( ) { return void 0 !== this . _ . cache . nativeSel ? this . _ . cache . nativeSel : this . _ . cache . nativeSel = w ? this . document . $ . selection : this . document . getWindow ( ) . $ . getSelection ( ) } , getType : w ? function ( ) { var a = this . _ . cache ; if ( a . type ) return a . type ; var b = CKEDITOR . SELECTION _NONE ; try { var d = this . getNative ( ) , c = d . type ;
return this } ; var C = { img : 1 , hr : 1 , li : 1 , table : 1 , tr : 1 , td : 1 , th : 1 , embed : 1 , object : 1 , ol : 1 , ul : 1 , a : 1 , input : 1 , form : 1 , select : 1 , textarea : 1 , button : 1 , fieldset : 1 , thead : 1 , tfoot : 1 } ; CKEDITOR . dom . selection . prototype = { getNative : function ( ) { return void 0 !== this . _ . cache . nativeSel ? this . _ . cache . nativeSel : this . _ . cache . nativeSel = w ? this . document . $ . selection : this . document . getWindow ( ) . $ . getSelection ( ) } , getType : w ? function ( ) { var a = this . _ . cache ; if ( a . type ) return a . type ; var b = CKEDITOR . SELECTION _NONE ; try { var d = this . getNative ( ) , c = d . type ;
"Text" == c && ( b = CKEDITOR . SELECTION _TEXT ) ; "Control" == c && ( b = CKEDITOR . SELECTION _ELEMENT ) ; d . createRange ( ) . parentElement ( ) && ( b = CKEDITOR . SELECTION _TEXT ) } catch ( h ) { } return a . type = b } : function ( ) { var a = this . _ . cache ; if ( a . type ) return a . type ; var b = CKEDITOR . SELECTION _TEXT , d = this . getNative ( ) ; if ( ! d || ! d . rangeCount ) b = CKEDITOR . SELECTION _NONE ; else if ( 1 == d . rangeCount ) { var d = d . getRangeAt ( 0 ) , c = d . startContainer ; c == d . endContainer && 1 == c . nodeType && 1 == d . endOffset - d . startOffset && C [ c . childNodes [ d . startOffset ] . nodeName . toLowerCase ( ) ] &&
"Text" == c && ( b = CKEDITOR . SELECTION _TEXT ) ; "Control" == c && ( b = CKEDITOR . SELECTION _ELEMENT ) ; d . createRange ( ) . parentElement ( ) && ( b = CKEDITOR . SELECTION _TEXT ) } catch ( h ) { } return a . type = b } : function ( ) { var a = this . _ . cache ; if ( a . type ) return a . type ; var b = CKEDITOR . SELECTION _TEXT , d = this . getNative ( ) ; if ( ! d || ! d . rangeCount ) b = CKEDITOR . SELECTION _NONE ; else if ( 1 == d . rangeCount ) { var d = d . getRangeAt ( 0 ) , c = d . startContainer ; c == d . endContainer && 1 == c . nodeType && 1 == d . endOffset - d . startOffset && C [ c . childNodes [ d . startOffset ] . nodeName . toLowerCase ( ) ] &&
( b = CKEDITOR . SELECTION _ELEMENT ) } return a . type = b } , getRanges : function ( ) { var a = w ? function ( ) { function a ( b ) { return ( new CKEDITOR . dom . node ( b ) ) . getIndex ( ) } var b = function ( b , d ) { b = b . duplicate ( ) ; b . collapse ( d ) ; var c = b . parentElement ( ) ; if ( ! c . hasChildNodes ( ) ) return { container : c , offset : 0 } ; for ( var h = c . children , f , e , g = b . duplicate ( ) , k = 0 , p= h . length - 1 , n = - 1 , l , m ; k <= p; ) if ( n = Math . floor ( ( k + p ) / 2 ) , f = h [ n ] , g . moveToElementText ( f ) , l = g . compareEndPoints ( "StartToStart" , b ) , 0 < l ) p= n - 1 ; else if ( 0 > l ) k = n + 1 ; else return { container : c , offset : a ( f ) } ;
( b = CKEDITOR . SELECTION _ELEMENT ) } return a . type = b } , getRanges : function ( ) { var a = w ? function ( ) { function a ( b ) { return ( new CKEDITOR . dom . node ( b ) ) . getIndex ( ) } var b = function ( b , d ) { b = b . duplicate ( ) ; b . collapse ( d ) ; var c = b . parentElement ( ) ; if ( ! c . hasChildNodes ( ) ) return { container : c , offset : 0 } ; for ( var h = c . children , f , e , g = b . duplicate ( ) , k = 0 , n= h . length - 1 , p = - 1 , l , m ; k <= n; ) if ( p = Math . floor ( ( k + n ) / 2 ) , f = h [ p ] , g . moveToElementText ( f ) , l = g . compareEndPoints ( "StartToStart" , b ) , 0 < l ) n= p - 1 ; else if ( 0 > l ) k = p + 1 ; else return { container : c , offset : a ( f ) } ;
if ( - 1 == n|| n == h . length - 1 && 0 > l ) { g . moveToElementText ( c ) ; g . setEndPoint ( "StartToStart" , b ) ; g = g . text . replace ( /(\r\n|\r)/g , "\n" ) . length ; h = c . childNodes ; if ( ! g ) return f = h [ h . length - 1 ] , f . nodeType != CKEDITOR . NODE _TEXT ? { container : c , offset : h . length } : { container : f , offset : f . nodeValue . length } ; for ( c = h . length ; 0 < g && 0 < c ; ) e = h [ -- c ] , e . nodeType == CKEDITOR . NODE _TEXT && ( m = e , g -= e . nodeValue . length ) ; return { container : m , offset : - g } } g . collapse ( 0 < l ? ! 0 : ! 1 ) ; g . setEndPoint ( 0 < l ? "StartToStart" : "EndToStart" , b ) ; g = g . text . replace ( /(\r\n|\r)/g , "\n" ) . length ;
if ( - 1 == p|| p == h . length - 1 && 0 > l ) { g . moveToElementText ( c ) ; g . setEndPoint ( "StartToStart" , b ) ; g = g . text . replace ( /(\r\n|\r)/g , "\n" ) . length ; h = c . childNodes ; if ( ! g ) return f = h [ h . length - 1 ] , f . nodeType != CKEDITOR . NODE _TEXT ? { container : c , offset : h . length } : { container : f , offset : f . nodeValue . length } ; for ( c = h . length ; 0 < g && 0 < c ; ) e = h [ -- c ] , e . nodeType == CKEDITOR . NODE _TEXT && ( m = e , g -= e . nodeValue . length ) ; return { container : m , offset : - g } } g . collapse ( 0 < l ? ! 0 : ! 1 ) ; g . setEndPoint ( 0 < l ? "StartToStart" : "EndToStart" , b ) ; g = g . text . replace ( /(\r\n|\r)/g , "\n" ) . length ;
if ( ! g ) return { container : c , offset : a ( f ) + ( 0 < l ? 0 : 1 ) } ; for ( ; 0 < g ; ) try { e = f [ 0 < l ? "previousSibling" : "nextSibling" ] , e . nodeType == CKEDITOR . NODE _TEXT && ( g -= e . nodeValue . length , m = e ) , f = e } catch ( t ) { return { container : c , offset : a ( f ) } } return { container : m , offset : 0 < l ? - g : m . nodeValue . length + g } } ; return function ( ) { var a = this . getNative ( ) , d = a && a . createRange ( ) , c = this . getType ( ) ; if ( ! a ) return [ ] ; if ( c == CKEDITOR . SELECTION _TEXT ) return a = new CKEDITOR . dom . range ( this . root ) , c = b ( d , ! 0 ) , a . setStart ( new CKEDITOR . dom . node ( c . container ) , c . offset ) , c = b ( d ) ,
if ( ! g ) return { container : c , offset : a ( f ) + ( 0 < l ? 0 : 1 ) } ; for ( ; 0 < g ; ) try { e = f [ 0 < l ? "previousSibling" : "nextSibling" ] , e . nodeType == CKEDITOR . NODE _TEXT && ( g -= e . nodeValue . length , m = e ) , f = e } catch ( t ) { return { container : c , offset : a ( f ) } } return { container : m , offset : 0 < l ? - g : m . nodeValue . length + g } } ; return function ( ) { var a = this . getNative ( ) , d = a && a . createRange ( ) , c = this . getType ( ) ; if ( ! a ) return [ ] ; if ( c == CKEDITOR . SELECTION _TEXT ) return a = new CKEDITOR . dom . range ( this . root ) , c = b ( d , ! 0 ) , a . setStart ( new CKEDITOR . dom . node ( c . container ) , c . offset ) , c = b ( d ) ,
a . setEnd ( new CKEDITOR . dom . node ( c . container ) , c . offset ) , a . endContainer . getPosition ( a . startContainer ) & CKEDITOR . POSITION _PRECEDING && a . endOffset <= a . startContainer . getIndex ( ) && a . collapse ( ) , [ a ] ; if ( c == CKEDITOR . SELECTION _ELEMENT ) { for ( var c = [ ] , h = 0 ; h < d . length ; h ++ ) { for ( var f = d . item ( h ) , e = f . parentNode , g = 0 , a = new CKEDITOR . dom . range ( this . root ) ; g < e . childNodes . length && e . childNodes [ g ] != f ; g ++ ) ; a . setStart ( new CKEDITOR . dom . node ( e ) , g ) ; a . setEnd ( new CKEDITOR . dom . node ( e ) , g + 1 ) ; c . push ( a ) } return c } return [ ] } } ( ) : function ( ) { var a =
a . setEnd ( new CKEDITOR . dom . node ( c . container ) , c . offset ) , a . endContainer . getPosition ( a . startContainer ) & CKEDITOR . POSITION _PRECEDING && a . endOffset <= a . startContainer . getIndex ( ) && a . collapse ( ) , [ a ] ; if ( c == CKEDITOR . SELECTION _ELEMENT ) { for ( var c = [ ] , h = 0 ; h < d . length ; h ++ ) { for ( var f = d . item ( h ) , e = f . parentNode , g = 0 , a = new CKEDITOR . dom . range ( this . root ) ; g < e . childNodes . length && e . childNodes [ g ] != f ; g ++ ) ; a . setStart ( new CKEDITOR . dom . node ( e ) , g ) ; a . setEnd ( new CKEDITOR . dom . node ( e ) , g + 1 ) ; c . push ( a ) } return c } return [ ] } } ( ) : function ( ) { var a =
[ ] , b , d = this . getNative ( ) ; if ( ! d ) return a ; for ( var c = 0 ; c < d . rangeCount ; c ++ ) { var h = d . getRangeAt ( c ) ; b = new CKEDITOR . dom . range ( this . root ) ; b . setStart ( new CKEDITOR . dom . node ( h . startContainer ) , h . startOffset ) ; b . setEnd ( new CKEDITOR . dom . node ( h . endContainer ) , h . endOffset ) ; a . push ( b ) } return a } ; return function ( b ) { var d = this . _ . cache , c = d . ranges ; c || ( d . ranges = c = new CKEDITOR . dom . rangeList ( a . call ( this ) ) ) ; return b ? v ( new CKEDITOR . dom . rangeList ( c . slice ( ) ) ) : c } } ( ) , getStartElement : function ( ) { var a = this . _ . cache ; if ( void 0 !== a . startElement ) return a . startElement ;
[ ] , b , d = this . getNative ( ) ; if ( ! d ) return a ; for ( var c = 0 ; c < d . rangeCount ; c ++ ) { var h = d . getRangeAt ( c ) ; b = new CKEDITOR . dom . range ( this . root ) ; b . setStart ( new CKEDITOR . dom . node ( h . startContainer ) , h . startOffset ) ; b . setEnd ( new CKEDITOR . dom . node ( h . endContainer ) , h . endOffset ) ; a . push ( b ) } return a } ; return function ( b ) { var d = this . _ . cache , c = d . ranges ; c || ( d . ranges = c = new CKEDITOR . dom . rangeList ( a . call ( this ) ) ) ; return b ? v ( new CKEDITOR . dom . rangeList ( c . slice ( ) ) ) : c } } ( ) , getStartElement : function ( ) { var a = this . _ . cache ; if ( void 0 !== a . startElement ) return a . startElement ;
@ -401,19 +401,19 @@ CKEDITOR.NODE_ELEMENT)for(d=b.getFirst();d&&d.type==CKEDITOR.NODE_ELEMENT;)b=d,d
this . getSelectedElement ( ) , d = ! b && this . getRanges ( ) , c = this . isFake ; this . isLocked = 0 ; this . reset ( ) ; a && ( a = b || d [ 0 ] && d [ 0 ] . getCommonAncestor ( ) ) && a . getAscendant ( "body" , 1 ) && ( c ? this . fake ( b ) : b ? this . selectElement ( b ) : this . selectRanges ( d ) ) } } , reset : function ( ) { this . _ . cache = { } ; this . isFake = 0 ; var a = this . root . editor ; if ( a && a . _ . fakeSelection ) if ( this . rev == a . _ . fakeSelection . rev ) { delete a . _ . fakeSelection ; var b = a . _ . hiddenSelectionContainer ; if ( b ) { var d = a . checkDirty ( ) ; a . fire ( "lockSnapshot" ) ; b . remove ( ) ; a . fire ( "unlockSnapshot" ) ; ! d &&
this . getSelectedElement ( ) , d = ! b && this . getRanges ( ) , c = this . isFake ; this . isLocked = 0 ; this . reset ( ) ; a && ( a = b || d [ 0 ] && d [ 0 ] . getCommonAncestor ( ) ) && a . getAscendant ( "body" , 1 ) && ( c ? this . fake ( b ) : b ? this . selectElement ( b ) : this . selectRanges ( d ) ) } } , reset : function ( ) { this . _ . cache = { } ; this . isFake = 0 ; var a = this . root . editor ; if ( a && a . _ . fakeSelection ) if ( this . rev == a . _ . fakeSelection . rev ) { delete a . _ . fakeSelection ; var b = a . _ . hiddenSelectionContainer ; if ( b ) { var d = a . checkDirty ( ) ; a . fire ( "lockSnapshot" ) ; b . remove ( ) ; a . fire ( "unlockSnapshot" ) ; ! d &&
a . resetDirty ( ) } delete a . _ . hiddenSelectionContainer } else CKEDITOR . warn ( "selection-fake-reset" ) ; this . rev = y ++ } , selectElement : function ( a ) { var b = new CKEDITOR . dom . range ( this . root ) ; b . setStartBefore ( a ) ; b . setEndAfter ( a ) ; this . selectRanges ( [ b ] ) } , selectRanges : function ( a ) { var b = this . root . editor , b = b && b . _ . hiddenSelectionContainer ; this . reset ( ) ; if ( b ) for ( var b = this . root , d , c = 0 ; c < a . length ; ++ c ) d = a [ c ] , d . endContainer . equals ( b ) && ( d . endOffset = Math . min ( d . endOffset , b . getChildCount ( ) ) ) ; if ( a . length ) if ( this . isLocked ) { var h = CKEDITOR . document . getActive ( ) ;
a . resetDirty ( ) } delete a . _ . hiddenSelectionContainer } else CKEDITOR . warn ( "selection-fake-reset" ) ; this . rev = y ++ } , selectElement : function ( a ) { var b = new CKEDITOR . dom . range ( this . root ) ; b . setStartBefore ( a ) ; b . setEndAfter ( a ) ; this . selectRanges ( [ b ] ) } , selectRanges : function ( a ) { var b = this . root . editor , b = b && b . _ . hiddenSelectionContainer ; this . reset ( ) ; if ( b ) for ( var b = this . root , d , c = 0 ; c < a . length ; ++ c ) d = a [ c ] , d . endContainer . equals ( b ) && ( d . endOffset = Math . min ( d . endOffset , b . getChildCount ( ) ) ) ; if ( a . length ) if ( this . isLocked ) { var h = CKEDITOR . document . getActive ( ) ;
this . unlock ( ) ; this . selectRanges ( a ) ; this . lock ( ) ; h && ! h . equals ( this . root ) && h . focus ( ) } else { var e ; a : { var g , k ; if ( 1 == a . length && ! ( k = a [ 0 ] ) . collapsed && ( e = k . getEnclosedNode ( ) ) && e . type == CKEDITOR . NODE _ELEMENT && ( k = k . clone ( ) , k . shrink ( CKEDITOR . SHRINK _ELEMENT , ! 0 ) , ( g = k . getEnclosedNode ( ) ) && g . type == CKEDITOR . NODE _ELEMENT && ( e = g ) , "false" == e . getAttribute ( "contenteditable" ) ) ) break a ; e = void 0 } if ( e ) this . fake ( e ) ; else { if ( w ) { k = CKEDITOR . dom . walker . whitespaces ( ! 0 ) ; g = /\ufeff|\u00a0/ ; b = { table : 1 , tbody : 1 , tr : 1 } ; 1 < a . length && ( e = a [ a . length -
this . unlock ( ) ; this . selectRanges ( a ) ; this . lock ( ) ; h && ! h . equals ( this . root ) && h . focus ( ) } else { var e ; a : { var g , k ; if ( 1 == a . length && ! ( k = a [ 0 ] ) . collapsed && ( e = k . getEnclosedNode ( ) ) && e . type == CKEDITOR . NODE _ELEMENT && ( k = k . clone ( ) , k . shrink ( CKEDITOR . SHRINK _ELEMENT , ! 0 ) , ( g = k . getEnclosedNode ( ) ) && g . type == CKEDITOR . NODE _ELEMENT && ( e = g ) , "false" == e . getAttribute ( "contenteditable" ) ) ) break a ; e = void 0 } if ( e ) this . fake ( e ) ; else { if ( w ) { k = CKEDITOR . dom . walker . whitespaces ( ! 0 ) ; g = /\ufeff|\u00a0/ ; b = { table : 1 , tbody : 1 , tr : 1 } ; 1 < a . length && ( e = a [ a . length -
1 ] , a [ 0 ] . setEnd ( e . endContainer , e . endOffset ) ) ; e = a [ 0 ] ; a = e . collapsed ; var n, p , m ; if ( ( d = e . getEnclosedNode ( ) ) && d . type == CKEDITOR . NODE _ELEMENT && d . getName ( ) in C && ( ! d . is ( "a" ) || ! d . getText ( ) ) ) try { m = d . $ . createControlRange ( ) ; m . addElement ( d . $ ) ; m . select ( ) ; return } catch ( E ) { } if ( e . startContainer . type == CKEDITOR . NODE _ELEMENT && e . startContainer . getName ( ) in b || e . endContainer . type == CKEDITOR . NODE _ELEMENT && e . endContainer . getName ( ) in b ) e . shrink ( CKEDITOR . NODE _ELEMENT , ! 0 ) , a = e . collapsed ; m = e . createBookmark ( ) ; b = m . startNode ; a || ( h = m . endNode ) ;
1 ] , a [ 0 ] . setEnd ( e . endContainer , e . endOffset ) ) ; e = a [ 0 ] ; a = e . collapsed ; var p, n , m ; if ( ( d = e . getEnclosedNode ( ) ) && d . type == CKEDITOR . NODE _ELEMENT && d . getName ( ) in C && ( ! d . is ( "a" ) || ! d . getText ( ) ) ) try { m = d . $ . createControlRange ( ) ; m . addElement ( d . $ ) ; m . select ( ) ; return } catch ( E ) { } if ( e . startContainer . type == CKEDITOR . NODE _ELEMENT && e . startContainer . getName ( ) in b || e . endContainer . type == CKEDITOR . NODE _ELEMENT && e . endContainer . getName ( ) in b ) e . shrink ( CKEDITOR . NODE _ELEMENT , ! 0 ) , a = e . collapsed ; m = e . createBookmark ( ) ; b = m . startNode ; a || ( h = m . endNode ) ;
m = e . document . $ . body . createTextRange ( ) ; m . moveToElementText ( b . $ ) ; m . moveStart ( "character" , 1 ) ; h ? ( g = e . document . $ . body . createTextRange ( ) , g . moveToElementText ( h . $ ) , m . setEndPoint ( "EndToEnd" , g ) , m . moveEnd ( "character" , - 1 ) ) : ( n= b . getNext ( k ) , p = b . hasAscendant ( "pre" ) , n= ! ( n && n . getText && n . getText ( ) . match ( g ) ) && ( p || ! b . hasPrevious ( ) || b . getPrevious ( ) . is && b . getPrevious ( ) . is ( "br" ) ) , p = e . document . createElement ( "span" ) , p. setHtml ( "\x26#65279;" ) , p . insertBefore ( b ) , n && e . document . createText ( " " ) . insertBefore ( b ) ) ; e . setStartBefore ( b ) ;
m = e . document . $ . body . createTextRange ( ) ; m . moveToElementText ( b . $ ) ; m . moveStart ( "character" , 1 ) ; h ? ( g = e . document . $ . body . createTextRange ( ) , g . moveToElementText ( h . $ ) , m . setEndPoint ( "EndToEnd" , g ) , m . moveEnd ( "character" , - 1 ) ) : ( p= b . getNext ( k ) , n = b . hasAscendant ( "pre" ) , p= ! ( p && p . getText && p . getText ( ) . match ( g ) ) && ( n || ! b . hasPrevious ( ) || b . getPrevious ( ) . is && b . getPrevious ( ) . is ( "br" ) ) , n = e . document . createElement ( "span" ) , n. setHtml ( "\x26#65279;" ) , n . insertBefore ( b ) , p && e . document . createText ( " " ) . insertBefore ( b ) ) ; e . setStartBefore ( b ) ;
b . remove ( ) ; a ? ( n ? ( m . moveStart ( "character" , - 1 ) , m . select ( ) , e . document . $ . selection . clear ( ) ) : m . select ( ) , e . moveToPosition ( p , CKEDITOR . POSITION _BEFORE _START ) , p . remove ( ) ) : ( e . setEndBefore ( h ) , h . remove ( ) , m . select ( ) ) } else { h = this . getNative ( ) ; if ( ! h ) return ; this . removeAllRanges ( ) ; for ( m = 0 ; m < a . length ; m ++ ) { if ( m < a . length - 1 && ( n= a [ m ] , p = a [ m + 1 ] , g = n . clone ( ) , g . setStart ( n. endContainer , n . endOffset ) , g . setEnd ( p . startContainer , p . startOffset ) , ! g . collapsed && ( g . shrink ( CKEDITOR . NODE _ELEMENT , ! 0 ) , e = g . getCommonAncestor ( ) , g = g . getEnclosedNode ( ) ,
b . remove ( ) ; a ? ( p ? ( m . moveStart ( "character" , - 1 ) , m . select ( ) , e . document . $ . selection . clear ( ) ) : m . select ( ) , e . moveToPosition ( n , CKEDITOR . POSITION _BEFORE _START ) , n . remove ( ) ) : ( e . setEndBefore ( h ) , h . remove ( ) , m . select ( ) ) } else { h = this . getNative ( ) ; if ( ! h ) return ; this . removeAllRanges ( ) ; for ( m = 0 ; m < a . length ; m ++ ) { if ( m < a . length - 1 && ( p= a [ m ] , n = a [ m + 1 ] , g = p . clone ( ) , g . setStart ( p. endContainer , p . endOffset ) , g . setEnd ( n . startContainer , n . startOffset ) , ! g . collapsed && ( g . shrink ( CKEDITOR . NODE _ELEMENT , ! 0 ) , e = g . getCommonAncestor ( ) , g = g . getEnclosedNode ( ) ,
e . isReadOnly ( ) || g && g . isReadOnly ( ) ) ) ) { p. setStart ( n . startContainer , n . startOffset ) ; a . splice ( m -- , 1 ) ; continue } e = a [ m ] ; p = this . document . $ . createRange ( ) ; e . collapsed && CKEDITOR . env . webkit && f ( e ) && ( n= this . root , l ( n , ! 1 ) , g = n . getDocument ( ) . createText ( " " ) , n . setCustomData ( "cke-fillingChar" , g ) , e . insertNode ( g ) , ( n = g . getNext ( ) ) && ! g . getPrevious ( ) && n . type == CKEDITOR . NODE _ELEMENT && "br" == n . getName ( ) ? ( l ( this . root ) , e . moveToPosition ( n , CKEDITOR . POSITION _BEFORE _START ) ) : e . moveToPosition ( g , CKEDITOR . POSITION _AFTER _END ) ) ; p . setStart ( e . startContainer . $ ,
e . isReadOnly ( ) || g && g . isReadOnly ( ) ) ) ) { n. setStart ( p . startContainer , p . startOffset ) ; a . splice ( m -- , 1 ) ; continue } e = a [ m ] ; n = this . document . $ . createRange ( ) ; e . collapsed && CKEDITOR . env . webkit && f ( e ) && ( p= this . root , l ( p , ! 1 ) , g = p . getDocument ( ) . createText ( " " ) , p . setCustomData ( "cke-fillingChar" , g ) , e . insertNode ( g ) , ( p = g . getNext ( ) ) && ! g . getPrevious ( ) && p . type == CKEDITOR . NODE _ELEMENT && "br" == p . getName ( ) ? ( l ( this . root ) , e . moveToPosition ( p , CKEDITOR . POSITION _BEFORE _START ) ) : e . moveToPosition ( g , CKEDITOR . POSITION _AFTER _END ) ) ; n . setStart ( e . startContainer . $ ,
e . startOffset ) ; try { p . setEnd ( e . endContainer . $ , e . endOffset ) } catch ( t ) { if ( 0 <= t . toString ( ) . indexOf ( "NS_ERROR_ILLEGAL_VALUE" ) ) e . collapse ( 1 ) , p . setEnd ( e . endContainer . $ , e . endOffset ) ; else throw t ; } h . addRange ( p ) } } this . reset ( ) ; this . root . fire ( "selectionchange" ) } } } , fake : function ( a ) { var b = this . root . editor ; this . reset ( ) ; h ( b ) ; var d = this . _ . cache , c = new CKEDITOR . dom . range ( this . root ) ; c . setStartBefore ( a ) ; c . setEndAfter ( a ) ; d . ranges = new CKEDITOR . dom . rangeList ( c ) ; d . selectedElement = d . startElement = a ; d . type = CKEDITOR . SELECTION _ELEMENT ;
e . startOffset ) ; try { n . setEnd ( e . endContainer . $ , e . endOffset ) } catch ( t ) { if ( 0 <= t . toString ( ) . indexOf ( "NS_ERROR_ILLEGAL_VALUE" ) ) e . collapse ( 1 ) , n . setEnd ( e . endContainer . $ , e . endOffset ) ; else throw t ; } h . addRange ( n ) } } this . reset ( ) ; this . root . fire ( "selectionchange" ) } } } , fake : function ( a ) { var b = this . root . editor ; this . reset ( ) ; h ( b ) ; var d = this . _ . cache , c = new CKEDITOR . dom . range ( this . root ) ; c . setStartBefore ( a ) ; c . setEndAfter ( a ) ; d . ranges = new CKEDITOR . dom . rangeList ( c ) ; d . selectedElement = d . startElement = a ; d . type = CKEDITOR . SELECTION _ELEMENT ;
d . selectedText = d . nativeSel = null ; this . isFake = 1 ; this . rev = y ++ ; b . _ . fakeSelection = this ; this . root . fire ( "selectionchange" ) } , isHidden : function ( ) { var a = this . getCommonAncestor ( ) ; a && a . type == CKEDITOR . NODE _TEXT && ( a = a . getParent ( ) ) ; return ! ( ! a || ! a . data ( "cke-hidden-sel" ) ) } , createBookmarks : function ( a ) { a = this . getRanges ( ) . createBookmarks ( a ) ; this . isFake && ( a . isFake = 1 ) ; return a } , createBookmarks2 : function ( a ) { a = this . getRanges ( ) . createBookmarks2 ( a ) ; this . isFake && ( a . isFake = 1 ) ; return a } , selectBookmarks : function ( a ) { for ( var b =
d . selectedText = d . nativeSel = null ; this . isFake = 1 ; this . rev = y ++ ; b . _ . fakeSelection = this ; this . root . fire ( "selectionchange" ) } , isHidden : function ( ) { var a = this . getCommonAncestor ( ) ; a && a . type == CKEDITOR . NODE _TEXT && ( a = a . getParent ( ) ) ; return ! ( ! a || ! a . data ( "cke-hidden-sel" ) ) } , createBookmarks : function ( a ) { a = this . getRanges ( ) . createBookmarks ( a ) ; this . isFake && ( a . isFake = 1 ) ; return a } , createBookmarks2 : function ( a ) { a = this . getRanges ( ) . createBookmarks2 ( a ) ; this . isFake && ( a . isFake = 1 ) ; return a } , selectBookmarks : function ( a ) { for ( var b =
[ ] , d , c = 0 ; c < a . length ; c ++ ) { var h = new CKEDITOR . dom . range ( this . root ) ; h . moveToBookmark ( a [ c ] ) ; b . push ( h ) } a . isFake && ( d = b [ 0 ] . getEnclosedNode ( ) , d && d . type == CKEDITOR . NODE _ELEMENT || ( CKEDITOR . warn ( "selection-not-fake" ) , a . isFake = 0 ) ) ; a . isFake ? this . fake ( d ) : this . selectRanges ( b ) ; return this } , getCommonAncestor : function ( ) { var a = this . getRanges ( ) ; return a . length ? a [ 0 ] . startContainer . getCommonAncestor ( a [ a . length - 1 ] . endContainer ) : null } , scrollIntoView : function ( ) { this . type != CKEDITOR . SELECTION _NONE && this . getRanges ( ) [ 0 ] . scrollIntoView ( ) } ,
[ ] , d , c = 0 ; c < a . length ; c ++ ) { var h = new CKEDITOR . dom . range ( this . root ) ; h . moveToBookmark ( a [ c ] ) ; b . push ( h ) } a . isFake && ( d = b [ 0 ] . getEnclosedNode ( ) , d && d . type == CKEDITOR . NODE _ELEMENT || ( CKEDITOR . warn ( "selection-not-fake" ) , a . isFake = 0 ) ) ; a . isFake ? this . fake ( d ) : this . selectRanges ( b ) ; return this } , getCommonAncestor : function ( ) { var a = this . getRanges ( ) ; return a . length ? a [ 0 ] . startContainer . getCommonAncestor ( a [ a . length - 1 ] . endContainer ) : null } , scrollIntoView : function ( ) { this . type != CKEDITOR . SELECTION _NONE && this . getRanges ( ) [ 0 ] . scrollIntoView ( ) } ,
removeAllRanges : function ( ) { if ( this . getType ( ) != CKEDITOR . SELECTION _NONE ) { var a = this . getNative ( ) ; try { a && a [ w ? "empty" : "removeAllRanges" ] ( ) } catch ( b ) { } this . reset ( ) } } } } ( ) , "use strict" , CKEDITOR . STYLE _BLOCK = 1 , CKEDITOR . STYLE _INLINE = 2 , CKEDITOR . STYLE _OBJECT = 3 , function ( ) { function a ( a , b ) { for ( var d , c ; ( a = a . getParent ( ) ) && ! a . equals ( b ) ; ) if ( a . getAttribute ( "data-nostyle" ) ) d = a ; else if ( ! c ) { var h = a . getAttribute ( "contentEditable" ) ; "false" == h ? d = a : "true" == h && ( c = 1 ) } return d } function e ( a , b , d , c ) { return ( a . getPosition ( b ) | c ) == c &&
removeAllRanges : function ( ) { if ( this . getType ( ) != CKEDITOR . SELECTION _NONE ) { var a = this . getNative ( ) ; try { a && a [ w ? "empty" : "removeAllRanges" ] ( ) } catch ( b ) { } this . reset ( ) } } } } ( ) , "use strict" , CKEDITOR . STYLE _BLOCK = 1 , CKEDITOR . STYLE _INLINE = 2 , CKEDITOR . STYLE _OBJECT = 3 , function ( ) { function a ( a , b ) { for ( var d , c ; ( a = a . getParent ( ) ) && ! a . equals ( b ) ; ) if ( a . getAttribute ( "data-nostyle" ) ) d = a ; else if ( ! c ) { var h = a . getAttribute ( "contentEditable" ) ; "false" == h ? d = a : "true" == h && ( c = 1 ) } return d } function e ( a , b , d , c ) { return ( a . getPosition ( b ) | c ) == c &&
( ! d . childRule || d . childRule ( a ) ) } function c ( b ) { var d = b . document ; if ( b . collapsed ) d = w ( this , d ) , b . insertNode ( d ) , b . moveToPosition ( d , CKEDITOR . POSITION _BEFORE _END ) ; else { var h = this . element , g = this . _ . definition , k , n= g . ignoreReadonly , p = n || g . includeReadonly ; null == p && ( p = b . root . getCustomData ( "cke_includeReadonly" ) ) ; var l = CKEDITOR . dtd [ h ] ; l || ( k = ! 0 , l = CKEDITOR . dtd . span ) ; b . enlarge ( CKEDITOR . ENLARGE _INLINE , 1 ) ; b . trim ( ) ; var m = b . createBookmark ( ) , q = m . startNode , u = m . endNode , v = q , r ; if ( ! n ) { var y = b . getCommonAncestor ( ) , n = a ( q , y ) , y = a ( u ,
( ! d . childRule || d . childRule ( a ) ) } function c ( b ) { var d = b . document ; if ( b . collapsed ) d = w ( this , d ) , b . insertNode ( d ) , b . moveToPosition ( d , CKEDITOR . POSITION _BEFORE _END ) ; else { var h = this . element , g = this . _ . definition , k , p= g . ignoreReadonly , n = p || g . includeReadonly ; null == n && ( n = b . root . getCustomData ( "cke_includeReadonly" ) ) ; var l = CKEDITOR . dtd [ h ] ; l || ( k = ! 0 , l = CKEDITOR . dtd . span ) ; b . enlarge ( CKEDITOR . ENLARGE _INLINE , 1 ) ; b . trim ( ) ; var m = b . createBookmark ( ) , q = m . startNode , u = m . endNode , v = q , r ; if ( ! p ) { var y = b . getCommonAncestor ( ) , p = a ( q , y ) , y = a ( u ,
y ) ; n&& ( v = n . getNextSourceNode ( ! 0 ) ) ; y && ( u = y ) } for ( v . getPosition ( u ) == CKEDITOR . POSITION _FOLLOWING && ( v = 0 ) ; v ; ) { n = ! 1 ; if ( v . equals ( u ) ) v = null , n = ! 0 ; else { var C = v . type == CKEDITOR . NODE _ELEMENT ? v . getName ( ) : null , y = C && "false" == v . getAttribute ( "contentEditable" ) , x = C && v . getAttribute ( "data-nostyle" ) ; if ( C && v . data ( "cke-bookmark" ) ) { v = v . getNextSourceNode ( ! 0 ) ; continue } if ( y && p && CKEDITOR . dtd . $block [ C ] ) for ( var B = v , z = f ( B ) , A = void 0 , D = z . length , G = 0 , B = D && new CKEDITOR . dom . range ( B . getDocument ( ) ) ; G < D ; ++ G ) { var A = z [ G ] , ga = CKEDITOR . filter . instances [ A . data ( "cke-filter" ) ] ;
y ) ; p&& ( v = p . getNextSourceNode ( ! 0 ) ) ; y && ( u = y ) } for ( v . getPosition ( u ) == CKEDITOR . POSITION _FOLLOWING && ( v = 0 ) ; v ; ) { p = ! 1 ; if ( v . equals ( u ) ) v = null , p = ! 0 ; else { var C = v . type == CKEDITOR . NODE _ELEMENT ? v . getName ( ) : null , y = C && "false" == v . getAttribute ( "contentEditable" ) , x = C && v . getAttribute ( "data-nostyle" ) ; if ( C && v . data ( "cke-bookmark" ) ) { v = v . getNextSourceNode ( ! 0 ) ; continue } if ( y && n && CKEDITOR . dtd . $block [ C ] ) for ( var B = v , z = f ( B ) , A = void 0 , D = z . length , G = 0 , B = D && new CKEDITOR . dom . range ( B . getDocument ( ) ) ; G < D ; ++ G ) { var A = z [ G ] , ga = CKEDITOR . filter . instances [ A . data ( "cke-filter" ) ] ;
if ( ga ? ga . check ( this ) : 1 ) B . selectNodeContents ( A ) , c . call ( this , B ) } z = C ? ! l [ C ] || x ? 0 : y && ! p ? 0 : e ( v , u , g , I ) : 1 ; if ( z ) if ( A = v . getParent ( ) , z = g , D = h , G = k , ! A || ! ( A . getDtd ( ) || CKEDITOR . dtd . span ) [ D ] && ! G || z . parentRule && ! z . parentRule ( A ) ) n = ! 0 ; else { if ( r || C && CKEDITOR . dtd . $removeEmpty [ C ] && ( v . getPosition ( u ) | I ) != I || ( r = b . clone ( ) , r . setStartBefore ( v ) ) , C = v . type , C == CKEDITOR . NODE _TEXT || y || C == CKEDITOR . NODE _ELEMENT && ! v . getChildCount ( ) ) { for ( var C = v , fa ; ( n = ! C . getNext ( F ) ) && ( fa = C . getParent ( ) , l [ fa . getName ( ) ] ) && e ( fa , q , g , N ) ; ) C = fa ; r . setEndAfter ( C ) } } else n =
if ( ga ? ga . check ( this ) : 1 ) B . selectNodeContents ( A ) , c . call ( this , B ) } z = C ? ! l [ C ] || x ? 0 : y && ! n ? 0 : e ( v , u , g , I ) : 1 ; if ( z ) if ( A = v . getParent ( ) , z = g , D = h , G = k , ! A || ! ( A . getDtd ( ) || CKEDITOR . dtd . span ) [ D ] && ! G || z . parentRule && ! z . parentRule ( A ) ) p = ! 0 ; else { if ( r || C && CKEDITOR . dtd . $removeEmpty [ C ] && ( v . getPosition ( u ) | I ) != I || ( r = b . clone ( ) , r . setStartBefore ( v ) ) , C = v . type , C == CKEDITOR . NODE _TEXT || y || C == CKEDITOR . NODE _ELEMENT && ! v . getChildCount ( ) ) { for ( var C = v , fa ; ( p = ! C . getNext ( F ) ) && ( fa = C . getParent ( ) , l [ fa . getName ( ) ] ) && e ( fa , q , g , N ) ; ) C = fa ; r . setEndAfter ( C ) } } else p =
! 0 ; v = v . getNextSourceNode ( x || y ) } if ( n && r && ! r . collapsed ) { for ( var n = w ( this , d ) , y = n . hasAttributes ( ) , x = r . getCommonAncestor ( ) , C = { } , z = { } , A = { } , D = { } , J , Z , ha ; n && x ; ) { if ( x . getName ( ) == h ) { for ( J in g . attributes ) ! D [ J ] && ( ha = x . getAttribute ( Z ) ) && ( n . getAttribute ( J ) == ha ? z [ J ] = 1 : D [ J ] = 1 ) ; for ( Z in g . styles ) ! A [ Z ] && ( ha = x . getStyle ( Z ) ) && ( n . getStyle ( Z ) == ha ? C [ Z ] = 1 : A [ Z ] = 1 ) } x = x . getParent ( ) } for ( J in z ) n . removeAttribute ( J ) ; for ( Z in C ) n . removeStyle ( Z ) ; y && ! n. hasAttributes ( ) && ( n = null ) ; n ? ( r . extractContents ( ) . appendTo ( n) , r . insertNode ( n ) , t . call ( this ,
! 0 ; v = v . getNextSourceNode ( x || y ) } if ( p && r && ! r . collapsed ) { for ( var p = w ( this , d ) , y = p . hasAttributes ( ) , x = r . getCommonAncestor ( ) , C = { } , z = { } , A = { } , D = { } , J , Z , ha ; p && x ; ) { if ( x . getName ( ) == h ) { for ( J in g . attributes ) ! D [ J ] && ( ha = x . getAttribute ( Z ) ) && ( p . getAttribute ( J ) == ha ? z [ J ] = 1 : D [ J ] = 1 ) ; for ( Z in g . styles ) ! A [ Z ] && ( ha = x . getStyle ( Z ) ) && ( p . getStyle ( Z ) == ha ? C [ Z ] = 1 : A [ Z ] = 1 ) } x = x . getParent ( ) } for ( J in z ) p . removeAttribute ( J ) ; for ( Z in C ) p . removeStyle ( Z ) ; y && ! p. hasAttributes ( ) && ( p = null ) ; p ? ( r . extractContents ( ) . appendTo ( p) , r . insertNode ( p ) , t . call ( this ,
n) , n . mergeSiblings ( ) , CKEDITOR . env . ie || n. $ . normalize ( ) ) : ( n = new CKEDITOR . dom . element ( "span" ) , r . extractContents ( ) . appendTo ( n) , r . insertNode ( n ) , t . call ( this , n ) , n . remove ( ! 0 ) ) ; r = null } } b . moveToBookmark ( m ) ; b . shrink ( CKEDITOR . SHRINK _TEXT ) ; b . shrink ( CKEDITOR . NODE _ELEMENT , ! 0 ) } } function g ( a ) { function b ( ) { for ( var a = new CKEDITOR . dom . elementPath ( c . getParent ( ) ) , d = new CKEDITOR . dom . elementPath ( p . getParent ( ) ) , h = null , f = null , e = 0 ; e < a . elements . length ; e ++ ) { var g = a . elements [ e ] ; if ( g == a . block || g == a . blockLimit ) break ; l . checkElementRemovable ( g ,
p) , p . mergeSiblings ( ) , CKEDITOR . env . ie || p. $ . normalize ( ) ) : ( p = new CKEDITOR . dom . element ( "span" ) , r . extractContents ( ) . appendTo ( p) , r . insertNode ( p ) , t . call ( this , p ) , p . remove ( ! 0 ) ) ; r = null } } b . moveToBookmark ( m ) ; b . shrink ( CKEDITOR . SHRINK _TEXT ) ; b . shrink ( CKEDITOR . NODE _ELEMENT , ! 0 ) } } function g ( a ) { function b ( ) { for ( var a = new CKEDITOR . dom . elementPath ( c . getParent ( ) ) , d = new CKEDITOR . dom . elementPath ( p . getParent ( ) ) , h = null , f = null , e = 0 ; e < a . elements . length ; e ++ ) { var g = a . elements [ e ] ; if ( g == a . block || g == a . blockLimit ) break ; l . checkElementRemovable ( g ,
! 0 ) && ( h = g ) } for ( e = 0 ; e < d . elements . length ; e ++ ) { g = d . elements [ e ] ; if ( g == d . block || g == d . blockLimit ) break ; l . checkElementRemovable ( g , ! 0 ) && ( f = g ) } f && p . breakParent ( f ) ; h && c . breakParent ( h ) } a . enlarge ( CKEDITOR . ENLARGE _INLINE , 1 ) ; var d = a . createBookmark ( ) , c = d . startNode ; if ( a . collapsed ) { for ( var h = new CKEDITOR . dom . elementPath ( c . getParent ( ) , a . root ) , f , e = 0 , g ; e < h . elements . length && ( g = h . elements [ e ] ) && g != h . block && g != h . blockLimit ; e ++ ) if ( this . checkElementRemovable ( g ) ) { var k ; a . collapsed && ( a . checkBoundaryOfElement ( g , CKEDITOR . END ) ||
! 0 ) && ( h = g ) } for ( e = 0 ; e < d . elements . length ; e ++ ) { g = d . elements [ e ] ; if ( g == d . block || g == d . blockLimit ) break ; l . checkElementRemovable ( g , ! 0 ) && ( f = g ) } f && p . breakParent ( f ) ; h && c . breakParent ( h ) } a . enlarge ( CKEDITOR . ENLARGE _INLINE , 1 ) ; var d = a . createBookmark ( ) , c = d . startNode ; if ( a . collapsed ) { for ( var h = new CKEDITOR . dom . elementPath ( c . getParent ( ) , a . root ) , f , e = 0 , g ; e < h . elements . length && ( g = h . elements [ e ] ) && g != h . block && g != h . blockLimit ; e ++ ) if ( this . checkElementRemovable ( g ) ) { var k ; a . collapsed && ( a . checkBoundaryOfElement ( g , CKEDITOR . END ) ||
( k = a . checkBoundaryOfElement ( g , CKEDITOR . START ) ) ) ? ( f = g , f . match = k ? "start" : "end" ) : ( g . mergeSiblings ( ) , g . is ( this . element ) ? u . call ( this , g ) : n ( g , r ( this ) [ g . getName ( ) ] ) ) } if ( f ) { g = c ; for ( e = 0 ; ; e ++ ) { k = h . elements [ e ] ; if ( k . equals ( f ) ) break ; else if ( k . match ) continue ; else k = k . clone ( ) ; k . append ( g ) ; g = k } g [ "start" == f . match ? "insertBefore" : "insertAfter" ] ( f ) } } else { var p = d . endNode , l = this ; b ( ) ; for ( h = c ; ! h . equals ( p ) ; ) f = h . getNextSourceNode ( ) , h . type == CKEDITOR . NODE _ELEMENT && this . checkElementRemovable ( h ) && ( h . getName ( ) == this . element ? u . call ( this ,
( k = a . checkBoundaryOfElement ( g , CKEDITOR . START ) ) ) ? ( f = g , f . match = k ? "start" : "end" ) : ( g . mergeSiblings ( ) , g . is ( this . element ) ? u . call ( this , g ) : n ( g , r ( this ) [ g . getName ( ) ] ) ) } if ( f ) { g = c ; for ( e = 0 ; ; e ++ ) { k = h . elements [ e ] ; if ( k . equals ( f ) ) break ; else if ( k . match ) continue ; else k = k . clone ( ) ; k . append ( g ) ; g = k } g [ "start" == f . match ? "insertBefore" : "insertAfter" ] ( f ) } } else { var p = d . endNode , l = this ; b ( ) ; for ( h = c ; ! h . equals ( p ) ; ) f = h . getNextSourceNode ( ) , h . type == CKEDITOR . NODE _ELEMENT && this . checkElementRemovable ( h ) && ( h . getName ( ) == this . element ? u . call ( this ,
h ) : n ( h , r ( this ) [ h . getName ( ) ] ) , f . type == CKEDITOR . NODE _ELEMENT && f . contains ( c ) && ( b ( ) , f = c . getNext ( ) ) ) , h = f } a . moveToBookmark ( d ) ; a . shrink ( CKEDITOR . NODE _ELEMENT , ! 0 ) } function f ( a ) { var b = [ ] ; a . forEach ( function ( a ) { if ( "true" == a . getAttribute ( "contenteditable" ) ) return b . push ( a ) , ! 1 } , CKEDITOR . NODE _ELEMENT , ! 0 ) ; return b } function m ( a ) { var b = a . getEnclosedNode ( ) || a . getCommonAncestor ( ! 1 , ! 0 ) ; ( a = ( new CKEDITOR . dom . elementPath ( b , a . root ) ) . contains ( this . element , 1 ) ) && ! a . isReadOnly ( ) && y ( a , this ) } function l ( a ) { var b = a . getCommonAncestor ( ! 0 ,
h ) : n ( h , r ( this ) [ h . getName ( ) ] ) , f . type == CKEDITOR . NODE _ELEMENT && f . contains ( c ) && ( b ( ) , f = c . getNext ( ) ) ) , h = f } a . moveToBookmark ( d ) ; a . shrink ( CKEDITOR . NODE _ELEMENT , ! 0 ) } function f ( a ) { var b = [ ] ; a . forEach ( function ( a ) { if ( "true" == a . getAttribute ( "contenteditable" ) ) return b . push ( a ) , ! 1 } , CKEDITOR . NODE _ELEMENT , ! 0 ) ; return b } function m ( a ) { var b = a . getEnclosedNode ( ) || a . getCommonAncestor ( ! 1 , ! 0 ) ; ( a = ( new CKEDITOR . dom . elementPath ( b , a . root ) ) . contains ( this . element , 1 ) ) && ! a . isReadOnly ( ) && y ( a , this ) } function l ( a ) { var b = a . getCommonAncestor ( ! 0 ,
@ -452,9 +452,9 @@ a[m];if(k&&1<a.length){if(!m)for(var b=a.length-1;0<=b;b--)f.unshift(a[b].create
[ ] , f , m = 0 ; m < this . length ; m ++ ) { e . push ( f = this [ m ] . createBookmark ( c , ! 0 ) ) ; for ( var l = m + 1 ; l < this . length ; l ++ ) this [ l ] = a ( f , this [ l ] ) , this [ l ] = a ( f , this [ l ] , ! 0 ) } return e } , createBookmarks2 : function ( a ) { for ( var e = [ ] , f = 0 ; f < this . length ; f ++ ) e . push ( this [ f ] . createBookmark2 ( a ) ) ; return e } , moveToBookmarks : function ( a ) { for ( var e = 0 ; e < this . length ; e ++ ) this [ e ] . moveToBookmark ( a [ e ] ) } } } ( ) , function ( ) { function a ( ) { return CKEDITOR . getUrl ( CKEDITOR . skinName . split ( "," ) [ 1 ] || "skins/" + CKEDITOR . skinName . split ( "," ) [ 0 ] + "/" ) } function e ( b ) { var c =
[ ] , f , m = 0 ; m < this . length ; m ++ ) { e . push ( f = this [ m ] . createBookmark ( c , ! 0 ) ) ; for ( var l = m + 1 ; l < this . length ; l ++ ) this [ l ] = a ( f , this [ l ] ) , this [ l ] = a ( f , this [ l ] , ! 0 ) } return e } , createBookmarks2 : function ( a ) { for ( var e = [ ] , f = 0 ; f < this . length ; f ++ ) e . push ( this [ f ] . createBookmark2 ( a ) ) ; return e } , moveToBookmarks : function ( a ) { for ( var e = 0 ; e < this . length ; e ++ ) this [ e ] . moveToBookmark ( a [ e ] ) } } } ( ) , function ( ) { function a ( ) { return CKEDITOR . getUrl ( CKEDITOR . skinName . split ( "," ) [ 1 ] || "skins/" + CKEDITOR . skinName . split ( "," ) [ 0 ] + "/" ) } function e ( b ) { var c =
CKEDITOR . skin [ "ua_" + b ] , f = CKEDITOR . env ; if ( c ) for ( var c = c . split ( "," ) . sort ( function ( a , b ) { return a > b ? - 1 : 1 } ) , e = 0 , g ; e < c . length ; e ++ ) if ( g = c [ e ] , f . ie && ( g . replace ( /^ie/ , "" ) == f . version || f . quirks && "iequirks" == g ) && ( g = "ie" ) , f [ g ] ) { b += "_" + c [ e ] ; break } return CKEDITOR . getUrl ( a ( ) + b + ".css" ) } function c ( a , b ) { m [ a ] || ( CKEDITOR . document . appendStyleSheet ( e ( a ) ) , m [ a ] = 1 ) ; b && b ( ) } function g ( a ) { var b = a . getById ( l ) ; b || ( b = a . getHead ( ) . append ( "style" ) , b . setAttribute ( "id" , l ) , b . setAttribute ( "type" , "text/css" ) ) ; return b } function f ( a , b , c ) { var f ,
CKEDITOR . skin [ "ua_" + b ] , f = CKEDITOR . env ; if ( c ) for ( var c = c . split ( "," ) . sort ( function ( a , b ) { return a > b ? - 1 : 1 } ) , e = 0 , g ; e < c . length ; e ++ ) if ( g = c [ e ] , f . ie && ( g . replace ( /^ie/ , "" ) == f . version || f . quirks && "iequirks" == g ) && ( g = "ie" ) , f [ g ] ) { b += "_" + c [ e ] ; break } return CKEDITOR . getUrl ( a ( ) + b + ".css" ) } function c ( a , b ) { m [ a ] || ( CKEDITOR . document . appendStyleSheet ( e ( a ) ) , m [ a ] = 1 ) ; b && b ( ) } function g ( a ) { var b = a . getById ( l ) ; b || ( b = a . getHead ( ) . append ( "style" ) , b . setAttribute ( "id" , l ) , b . setAttribute ( "type" , "text/css" ) ) ; return b } function f ( a , b , c ) { var f ,
e , g ; if ( CKEDITOR . env . webkit ) for ( b = b . split ( "}" ) . slice ( 0 , - 1 ) , e = 0 ; e < b . length ; e ++ ) b [ e ] = b [ e ] . split ( "{" ) ; for ( var k = 0 ; k < a . length ; k ++ ) if ( CKEDITOR . env . webkit ) for ( e = 0 ; e < b . length ; e ++ ) { g = b [ e ] [ 1 ] ; for ( f = 0 ; f < c . length ; f ++ ) g = g . replace ( c [ f ] [ 0 ] , c [ f ] [ 1 ] ) ; a [ k ] . $ . sheet . addRule ( b [ e ] [ 0 ] , g ) } else { g = b ; for ( f = 0 ; f < c . length ; f ++ ) g = g . replace ( c [ f ] [ 0 ] , c [ f ] [ 1 ] ) ; CKEDITOR . env . ie && 11 > CKEDITOR . env . version ? a [ k ] . $ . styleSheet . cssText += g : a [ k ] . $ . innerHTML += g } } var m = { } ; CKEDITOR . skin = { path : a , loadPart : function ( b , h ) { CKEDITOR . skin . name != CKEDITOR . skinName . split ( "," ) [ 0 ] ?
e , g ; if ( CKEDITOR . env . webkit ) for ( b = b . split ( "}" ) . slice ( 0 , - 1 ) , e = 0 ; e < b . length ; e ++ ) b [ e ] = b [ e ] . split ( "{" ) ; for ( var k = 0 ; k < a . length ; k ++ ) if ( CKEDITOR . env . webkit ) for ( e = 0 ; e < b . length ; e ++ ) { g = b [ e ] [ 1 ] ; for ( f = 0 ; f < c . length ; f ++ ) g = g . replace ( c [ f ] [ 0 ] , c [ f ] [ 1 ] ) ; a [ k ] . $ . sheet . addRule ( b [ e ] [ 0 ] , g ) } else { g = b ; for ( f = 0 ; f < c . length ; f ++ ) g = g . replace ( c [ f ] [ 0 ] , c [ f ] [ 1 ] ) ; CKEDITOR . env . ie && 11 > CKEDITOR . env . version ? a [ k ] . $ . styleSheet . cssText += g : a [ k ] . $ . innerHTML += g } } var m = { } ; CKEDITOR . skin = { path : a , loadPart : function ( b , h ) { CKEDITOR . skin . name != CKEDITOR . skinName . split ( "," ) [ 0 ] ?
CKEDITOR . scriptLoader . load ( CKEDITOR . getUrl ( a ( ) + "skin.js" ) , function ( ) { c ( b , h ) } ) : c ( b , h ) } , getPath : function ( a ) { return CKEDITOR . getUrl ( e ( a ) ) } , icons : { } , addIcon : function ( a , b , c , f ) { a = a . toLowerCase ( ) ; this . icons [ a ] || ( this . icons [ a ] = { path : b , offset : c || 0 , bgsize : f || "16px" } ) } , getIconStyle : function ( a , b , c , f , e ) { var g ; a && ( a = a . toLowerCase ( ) , b && ( g = this . icons [ a + "-rtl" ] ) , g || ( g = this . icons [ a ] ) ) ; a = c || g && g . path || "" ; f = f || g && g . offset ; e = e || g && g . bgsize || "16px" ; return a && "background-image:url( "+ CKEDITOR . getUrl ( a ) + ");background-position:0 " +
CKEDITOR . scriptLoader . load ( CKEDITOR . getUrl ( a ( ) + "skin.js" ) , function ( ) { c ( b , h ) } ) : c ( b , h ) } , getPath : function ( a ) { return CKEDITOR . getUrl ( e ( a ) ) } , icons : { } , addIcon : function ( a , b , c , f ) { a = a . toLowerCase ( ) ; this . icons [ a ] || ( this . icons [ a ] = { path : b , offset : c || 0 , bgsize : f || "16px" } ) } , getIconStyle : function ( a , b , c , f , e ) { var g ; a && ( a = a . toLowerCase ( ) , b && ( g = this . icons [ a + "-rtl" ] ) , g || ( g = this . icons [ a ] ) ) ; a = c || g && g . path || "" ; f = f || g && g . offset ; e = e || g && g . bgsize || "16px" ; a && ( a = a . replace ( /'/g , "\\'" ) ) ; return a && "background-image:url( ' "+ CKEDITOR . getUrl ( a ) +
f + "px;background-size:" + e + ";" } } ; CKEDITOR . tools . extend ( CKEDITOR . editor . prototype , { getUiColor : function ( ) { return this . uiColor } , setUiColor : function ( a ) { var c = g ( CKEDITOR . document ) ; return ( this . setUiColor = function ( a ) { this . uiColor = a ; var d = CKEDITOR . skin . chameleon , e = "" , g = "" ; "function" == typeof d && ( e = d ( this , "editor" ) , g = d ( this , "panel" ) ) ; a = [ [ b , a ] ] ; f ( [ c ] , e , a ) ; f ( k , g , a ) } ) . call ( this , a ) } } ) ; var l = "cke_ui_color" , k = [ ] , b = /\$color/g ; CKEDITOR . on ( "instanceLoaded" , function ( a ) { if ( ! CKEDITOR . env . ie || ! CKEDITOR . env . quirks ) { var c =
"');background-position:0 " + f + "px;background-size:" + e + ";" } } ; CKEDITOR . tools . extend ( CKEDITOR . editor . prototype , { getUiColor : function ( ) { return this . uiColor } , setUiColor : function ( a ) { var c = g ( CKEDITOR . document ) ; return ( this . setUiColor = function ( a ) { this . uiColor = a ; var d = CKEDITOR . skin . chameleon , e = "" , g = "" ; "function" == typeof d && ( e = d ( this , "editor" ) , g = d ( this , "panel" ) ) ; a = [ [ b , a ] ] ; f ( [ c ] , e , a ) ; f ( k , g , a ) } ) . call ( this , a ) } } ) ; var l = "cke_ui_color" , k = [ ] , b = /\$color/g ; CKEDITOR . on ( "instanceLoaded" , function ( a ) { if ( ! CKEDITOR . env . ie ||
a . editor ; a = function ( a ) { a = ( a . data [ 0 ] || a . data ) . element . getElementsByTag ( "iframe" ) . getItem ( 0 ) . getFrameDocument ( ) ; if ( ! a . getById ( "cke_ui_color" ) ) { a = g ( a ) ; k . push ( a ) ; var d = c . getUiColor ( ) ; d && f ( [ a ] , CKEDITOR . skin . chameleon ( c , "panel" ) , [ [ b , d ] ] ) } } ; c . on ( "panelShow" , a ) ; c . on ( "menuShow" , a ) ; c . config . uiColor && c . setUiColor ( c . config . uiColor ) } } ) } ( ) , function ( ) { if ( CKEDITOR . env . webkit ) CKEDITOR . env . hc = ! 1 ; else { var a = CKEDITOR . dom . element . createFromHtml ( '\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e' ,
! CKEDITOR . env . quirks ) { var c = a . editor ; a = function ( a ) { a = ( a . data [ 0 ] || a . data ) . element . getElementsByTag ( "iframe" ) . getItem ( 0 ) . getFrameDocument ( ) ; if ( ! a . getById ( "cke_ui_color" ) ) { a = g ( a ) ; k . push ( a ) ; var d = c . getUiColor ( ) ; d && f ( [ a ] , CKEDITOR . skin . chameleon ( c , "panel" ) , [ [ b , d ] ] ) } } ; c . on ( "panelShow" , a ) ; c . on ( "menuShow" , a ) ; c . config . uiColor && c . setUiColor ( c . config . uiColor ) } } ) } ( ) , function ( ) { if ( CKEDITOR . env . webkit ) CKEDITOR . env . hc = ! 1 ; else { var a = CKEDITOR . dom . element . createFromHtml ( '\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e' ,
CKEDITOR . document ) ; a . appendTo ( CKEDITOR . document . getHead ( ) ) ; try { var e = a . getComputedStyle ( "border-top-color" ) , c = a . getComputedStyle ( "border-right-color" ) ; CKEDITOR . env . hc = ! ( ! e || e != c ) } catch ( g ) { CKEDITOR . env . hc = ! 1 } a . remove ( ) } CKEDITOR . env . hc && ( CKEDITOR . env . cssClass += " cke_hc" ) ; CKEDITOR . document . appendStyleText ( ".cke{visibility:hidden;}" ) ; CKEDITOR . status = "loaded" ; CKEDITOR . fireOnce ( "loaded" ) ; if ( a = CKEDITOR . _ . pending ) for ( delete CKEDITOR . _ . pending , e = 0 ; e < a . length ; e ++ ) CKEDITOR . editor . prototype . constructor . apply ( a [ e ] [ 0 ] ,
CKEDITOR . document ) ; a . appendTo ( CKEDITOR . document . getHead ( ) ) ; try { var e = a . getComputedStyle ( "border-top-color" ) , c = a . getComputedStyle ( "border-right-color" ) ; CKEDITOR . env . hc = ! ( ! e || e != c ) } catch ( g ) { CKEDITOR . env . hc = ! 1 } a . remove ( ) } CKEDITOR . env . hc && ( CKEDITOR . env . cssClass += " cke_hc" ) ; CKEDITOR . document . appendStyleText ( ".cke{visibility:hidden;}" ) ; CKEDITOR . status = "loaded" ; CKEDITOR . fireOnce ( "loaded" ) ; if ( a = CKEDITOR . _ . pending ) for ( delete CKEDITOR . _ . pending , e = 0 ; e < a . length ; e ++ ) CKEDITOR . editor . prototype . constructor . apply ( a [ e ] [ 0 ] ,
a [ e ] [ 1 ] ) , CKEDITOR . add ( a [ e ] [ 0 ] ) } ( ) , CKEDITOR . skin . name = "moono" , CKEDITOR . skin . ua _editor = "ie,iequirks,ie7,ie8,gecko" , CKEDITOR . skin . ua _dialog = "ie,iequirks,ie7,ie8" , CKEDITOR . skin . chameleon = function ( ) { var a = function ( ) { return function ( a , c ) { for ( var e = a . match ( /[^#]./g ) , l = 0 ; 3 > l ; l ++ ) { var k = l , b ; b = parseInt ( e [ l ] , 16 ) ; b = ( "0" + ( 0 > c ? 0 | b * ( 1 + c ) : 0 | b + ( 255 - b ) * c ) . toString ( 16 ) ) . slice ( - 2 ) ; e [ k ] = b } return "#" + e . join ( "" ) } } ( ) , e = function ( ) { var a = new CKEDITOR . template ( "background:#{to};background-image:linear-gradient(to bottom,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType\x3d0,startColorstr\x3d'{from}',endColorstr\x3d'{to}');" ) ;
a [ e ] [ 1 ] ) , CKEDITOR . add ( a [ e ] [ 0 ] ) } ( ) , CKEDITOR . skin . name = "moono" , CKEDITOR . skin . ua _editor = "ie,iequirks,ie7,ie8,gecko" , CKEDITOR . skin . ua _dialog = "ie,iequirks,ie7,ie8" , CKEDITOR . skin . chameleon = function ( ) { var a = function ( ) { return function ( a , c ) { for ( var e = a . match ( /[^#]./g ) , l = 0 ; 3 > l ; l ++ ) { var k = l , b ; b = parseInt ( e [ l ] , 16 ) ; b = ( "0" + ( 0 > c ? 0 | b * ( 1 + c ) : 0 | b + ( 255 - b ) * c ) . toString ( 16 ) ) . slice ( - 2 ) ; e [ k ] = b } return "#" + e . join ( "" ) } } ( ) , e = function ( ) { var a = new CKEDITOR . template ( "background:#{to};background-image:linear-gradient(to bottom,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType\x3d0,startColorstr\x3d'{from}',endColorstr\x3d'{to}');" ) ;
return function ( c , e ) { return a . output ( { from : c , to : e } ) } } ( ) , c = { editor : new CKEDITOR . template ( "{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] " ) ,
return function ( c , e ) { return a . output ( { from : c , to : e } ) } } ( ) , c = { editor : new CKEDITOR . template ( "{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] " ) ,
@ -499,75 +499,75 @@ new CKEDITOR.ui.dialog.button;CKEDITOR.ui.dialog.fieldset.prototype=CKEDITOR.too
c ) ; CKEDITOR . dialog . addUIElement ( "fieldset" , { build : function ( a , d , c ) { for ( var f = d . children , e , g = [ ] , k = [ ] , n = 0 ; n < f . length && ( e = f [ n ] ) ; n ++ ) { var l = [ ] ; g . push ( l ) ; k . push ( CKEDITOR . dialog . _ . uiElementBuilders [ e . type ] . build ( a , e , l ) ) } return new CKEDITOR . ui . dialog [ d . type ] ( a , k , g , c , d ) } } ) } } ) , CKEDITOR . DIALOG _RESIZE _NONE = 0 , CKEDITOR . DIALOG _RESIZE _WIDTH = 1 , CKEDITOR . DIALOG _RESIZE _HEIGHT = 2 , CKEDITOR . DIALOG _RESIZE _BOTH = 3 , CKEDITOR . DIALOG _STATE _IDLE = 1 , CKEDITOR . DIALOG _STATE _BUSY = 2 , function ( ) { function a ( ) { for ( var a = this . _ . tabIdList . length ,
c ) ; CKEDITOR . dialog . addUIElement ( "fieldset" , { build : function ( a , d , c ) { for ( var f = d . children , e , g = [ ] , k = [ ] , n = 0 ; n < f . length && ( e = f [ n ] ) ; n ++ ) { var l = [ ] ; g . push ( l ) ; k . push ( CKEDITOR . dialog . _ . uiElementBuilders [ e . type ] . build ( a , e , l ) ) } return new CKEDITOR . ui . dialog [ d . type ] ( a , k , g , c , d ) } } ) } } ) , CKEDITOR . DIALOG _RESIZE _NONE = 0 , CKEDITOR . DIALOG _RESIZE _WIDTH = 1 , CKEDITOR . DIALOG _RESIZE _HEIGHT = 2 , CKEDITOR . DIALOG _RESIZE _BOTH = 3 , CKEDITOR . DIALOG _STATE _IDLE = 1 , CKEDITOR . DIALOG _STATE _BUSY = 2 , function ( ) { function a ( ) { for ( var a = this . _ . tabIdList . length ,
b = CKEDITOR . tools . indexOf ( this . _ . tabIdList , this . _ . currentTabId ) + a , d = b - 1 ; d > b - a ; d -- ) if ( this . _ . tabs [ this . _ . tabIdList [ d % a ] ] [ 0 ] . $ . offsetHeight ) return this . _ . tabIdList [ d % a ] ; return null } function e ( ) { for ( var a = this . _ . tabIdList . length , b = CKEDITOR . tools . indexOf ( this . _ . tabIdList , this . _ . currentTabId ) , d = b + 1 ; d < b + a ; d ++ ) if ( this . _ . tabs [ this . _ . tabIdList [ d % a ] ] [ 0 ] . $ . offsetHeight ) return this . _ . tabIdList [ d % a ] ; return null } function c ( a , b ) { for ( var d = a . $ . getElementsByTagName ( "input" ) , c = 0 , f = d . length ; c < f ; c ++ ) { var h = new CKEDITOR . dom . element ( d [ c ] ) ;
b = CKEDITOR . tools . indexOf ( this . _ . tabIdList , this . _ . currentTabId ) + a , d = b - 1 ; d > b - a ; d -- ) if ( this . _ . tabs [ this . _ . tabIdList [ d % a ] ] [ 0 ] . $ . offsetHeight ) return this . _ . tabIdList [ d % a ] ; return null } function e ( ) { for ( var a = this . _ . tabIdList . length , b = CKEDITOR . tools . indexOf ( this . _ . tabIdList , this . _ . currentTabId ) , d = b + 1 ; d < b + a ; d ++ ) if ( this . _ . tabs [ this . _ . tabIdList [ d % a ] ] [ 0 ] . $ . offsetHeight ) return this . _ . tabIdList [ d % a ] ; return null } function c ( a , b ) { for ( var d = a . $ . getElementsByTagName ( "input" ) , c = 0 , f = d . length ; c < f ; c ++ ) { var h = new CKEDITOR . dom . element ( d [ c ] ) ;
"text" == h . getAttribute ( "type" ) . toLowerCase ( ) && ( b ? ( h . setAttribute ( "value" , h . getCustomData ( "fake_value" ) || "" ) , h . removeCustomData ( "fake_value" ) ) : ( h . setCustomData ( "fake_value" , h . getAttribute ( "value" ) ) , h . setAttribute ( "value" , "" ) ) ) } } function g ( a , b ) { var d = this . getInputElement ( ) ; d && ( a ? d . removeAttribute ( "aria-invalid" ) : d . setAttribute ( "aria-invalid" , ! 0 ) ) ; a || ( this . select ? this . select ( ) : this . focus ( ) ) ; b && alert ( b ) ; this . fire ( "validated" , { valid : a , msg : b } ) } function f ( ) { var a = this . getInputElement ( ) ; a && a . removeAttribute ( "aria-invalid" ) }
"text" == h . getAttribute ( "type" ) . toLowerCase ( ) && ( b ? ( h . setAttribute ( "value" , h . getCustomData ( "fake_value" ) || "" ) , h . removeCustomData ( "fake_value" ) ) : ( h . setCustomData ( "fake_value" , h . getAttribute ( "value" ) ) , h . setAttribute ( "value" , "" ) ) ) } } function g ( a , b ) { var d = this . getInputElement ( ) ; d && ( a ? d . removeAttribute ( "aria-invalid" ) : d . setAttribute ( "aria-invalid" , ! 0 ) ) ; a || ( this . select ? this . select ( ) : this . focus ( ) ) ; b && alert ( b ) ; this . fire ( "validated" , { valid : a , msg : b } ) } function f ( ) { var a = this . getInputElement ( ) ; a && a . removeAttribute ( "aria-invalid" ) }
function m ( a ) { var b = CKEDITOR . dom . element . createFromHtml ( CKEDITOR . addTemplate ( "dialog" , n ) . output ( { id : CKEDITOR . tools . getNextNumber ( ) , editorId : a . id , langDir : a . lang . dir , langCode : a . langCode , editorDialogClass : "cke_editor_" + a . name . replace ( /\./g , "\\." ) + "_dialog" , closeTitle : a . lang . common . close , hidpi : CKEDITOR . env . hidpi ? "cke_hidpi" : "" } ) ) , d = b . getChild ( [ 0 , 0 , 0 , 0 , 0 ] ) , c = d . getChild ( 0 ) , f = d . getChild ( 1 ) ; a . plugins . clipboard && CKEDITOR . plugins . clipboard . preventDefaultDropOnElement ( d ) ; ! CKEDITOR . env . ie || CKEDITOR . env . quirks ||
function m ( a ) { var b = CKEDITOR . dom . element . createFromHtml ( CKEDITOR . addTemplate ( "dialog" , n ) . output ( { id : CKEDITOR . tools . getNextNumber ( ) , editorId : a . id , langDir : a . lang . dir , langCode : a . langCode , editorDialogClass : "cke_editor_" + a . name . replace ( /\./g , "\\." ) + "_dialog" , closeTitle : a . lang . common . close , hidpi : CKEDITOR . env . hidpi ? "cke_hidpi" : "" } ) ) , d = b . getChild ( [ 0 , 0 , 0 , 0 , 0 ] ) , c = d . getChild ( 0 ) , h = d . getChild ( 1 ) ; a . plugins . clipboard && CKEDITOR . plugins . clipboard . preventDefaultDropOnElement ( d ) ; ! CKEDITOR . env . ie || CKEDITOR . env . quirks ||
CKEDITOR . env . edge || ( a = "javascript:void(function(){" + encodeURIComponent ( "document.open();(" + CKEDITOR . tools . fixDomain + ")();document.close();" ) + "}())" , CKEDITOR . dom . element . createFromHtml ( '\x3ciframe frameBorder\x3d"0" class\x3d"cke_iframe_shim" src\x3d"' + a + '" tabIndex\x3d"-1"\x3e\x3c/iframe\x3e' ) . appendTo ( d . getParent ( ) ) ) ; c . unselectable ( ) ; f . unselectable ( ) ; return { element : b , parts : { dialog : b . getChild ( 0 ) , title : c , close : f , tabs : d . getChild ( 2 ) , contents : d . getChild ( [ 3 , 0 , 0 , 0 ] ) , footer : d . getChild ( [ 3 , 0 , 1 , 0 ] ) } } } function l ( a ,
CKEDITOR . env . edge || ( a = "javascript:void(function(){" + encodeURIComponent ( "document.open();(" + CKEDITOR . tools . fixDomain + ")();document.close();" ) + "}())" , CKEDITOR . dom . element . createFromHtml ( '\x3ciframe frameBorder\x3d"0" class\x3d"cke_iframe_shim" src\x3d"' + a + '" tabIndex\x3d"-1"\x3e\x3c/iframe\x3e' ) . appendTo ( d . getParent ( ) ) ) ; c . unselectable ( ) ; h . unselectable ( ) ; return { element : b , parts : { dialog : b . getChild ( 0 ) , title : c , close : h , tabs : d . getChild ( 2 ) , contents : d . getChild ( [ 3 , 0 , 0 , 0 ] ) , footer : d . getChild ( [ 3 , 0 , 1 , 0 ] ) } } } function l ( a ,
b , d ) { this . element = b ; this . focusIndex = d ; this . tabIndex = 0 ; this . isFocusable = function ( ) { return ! b . getAttribute ( "disabled" ) && b . isVisible ( ) } ; this . focus = function ( ) { a . _ . currentFocusIndex = this . focusIndex ; this . element . focus ( ) } ; b . on ( "keydown" , function ( a ) { a . data . getKeystroke ( ) in { 32 : 1 , 13 : 1 } && this . fire ( "click" ) } ) ; b . on ( "focus" , function ( ) { this . fire ( "mouseover" ) } ) ; b . on ( "blur" , function ( ) { this . fire ( "mouseout" ) } ) } function k ( a ) { function b ( ) { a . layout ( ) } var d = CKEDITOR . document . getWindow ( ) ; d . on ( "resize" , b ) ; a . on ( "hide" , function ( ) { d . removeListener ( "resize" ,
b , d ) { this . element = b ; this . focusIndex = d ; this . tabIndex = 0 ; this . isFocusable = function ( ) { return ! b . getAttribute ( "disabled" ) && b . isVisible ( ) } ; this . focus = function ( ) { a . _ . currentFocusIndex = this . focusIndex ; this . element . focus ( ) } ; b . on ( "keydown" , function ( a ) { a . data . getKeystroke ( ) in { 32 : 1 , 13 : 1 } && this . fire ( "click" ) } ) ; b . on ( "focus" , function ( ) { this . fire ( "mouseover" ) } ) ; b . on ( "blur" , function ( ) { this . fire ( "mouseout" ) } ) } function k ( a ) { function b ( ) { a . layout ( ) } var d = CKEDITOR . document . getWindow ( ) ; d . on ( "resize" , b ) ; a . on ( "hide" , function ( ) { d . removeListener ( "resize" ,
b ) } ) } function b ( a , b ) { this . _ = { dialog : a } ; CKEDITOR . tools . extend ( this , b ) } function d ( a ) { function b ( d ) { var k = a . getSize ( ) , n = CKEDITOR . document . getWindow ( ) . getViewPaneSize ( ) , p = d . data . $ . screenX , l = d . data . $ . screenY , m = p - c . x , q = l - c . y ; c = { x : p, y : l } ; f . x += m ; f . y += q ; a . move ( f . x + g [ 3 ] < e ? - g [ 3 ] : f. x - g [ 1 ] > n . width - k . width - e ? n . width - k . width + ( "rtl" == h . lang . dir ? 0 : g [ 1 ] ) : f. x , f . y + g [ 0 ] < e ? - g [ 0 ] : f. y - g [ 2 ] > n . height - k . height - e ? n . height - k . height + g [ 2 ] : f . y , 1 ) ; d . data . preventDefault ( ) } function d ( ) { CKEDITOR . document . removeListener ( "mousemove" ,
b ) } ) } function b ( a , b ) { this . _ = { dialog : a } ; CKEDITOR . tools . extend ( this , b ) } function d ( a ) { function b ( d ) { var k = a . getSize ( ) , p = CKEDITOR . document . getWindow ( ) . getViewPaneSize ( ) , n = d . data . $ . screenX , l = d . data . $ . screenY , m = n - c . x , q = l - c . y ; c = { x : n, y : l } ; h . x += m ; h . y += q ; a . move ( h . x + g [ 3 ] < e ? - g [ 3 ] : h. x - g [ 1 ] > p . width - k . width - e ? p . width - k . width + ( "rtl" == f . lang . dir ? 0 : g [ 1 ] ) : h. x , h . y + g [ 0 ] < e ? - g [ 0 ] : h. y - g [ 2 ] > p . height - k . height - e ? p . height - k . height + g [ 2 ] : h . y , 1 ) ; d . data . preventDefault ( ) } function d ( ) { CKEDITOR . document . removeListener ( "mousemove" ,
b ) ; CKEDITOR . document . removeListener ( "mouseup" , d ) ; if ( CKEDITOR . env . ie6Compat ) { var a = A . getChild ( 0 ) . getFrameDocument ( ) ; a . removeListener ( "mousemove" , b ) ; a . removeListener ( "mouseup" , d ) } } var c = null , f= null , h = a . getParentEditor ( ) , e = h . config . dialog _magnetDistance , g = CKEDITOR . skin . margins || [ 0 , 0 , 0 , 0 ] ; "undefined" == typeof e && ( e = 20 ) ; a . parts . title . on ( "mousedown" , function ( h) { c = { x : h . data . $ . screenX , y : h . data . $ . screenY } ; CKEDITOR . document . on ( "mousemove" , b ) ; CKEDITOR . document . on ( "mouseup" , d ) ; f = a . getPosition ( ) ; if ( CKEDITOR . env . ie6Compat ) { var e =
b ) ; CKEDITOR . document . removeListener ( "mouseup" , d ) ; if ( CKEDITOR . env . ie6Compat ) { var a = A . getChild ( 0 ) . getFrameDocument ( ) ; a . removeListener ( "mousemove" , b ) ; a . removeListener ( "mouseup" , d ) } } var c = null , h= null , f = a . getParentEditor ( ) , e = f . config . dialog _magnetDistance , g = CKEDITOR . skin . margins || [ 0 , 0 , 0 , 0 ] ; "undefined" == typeof e && ( e = 20 ) ; a . parts . title . on ( "mousedown" , function ( f) { c = { x : f . data . $ . screenX , y : f . data . $ . screenY } ; CKEDITOR . document . on ( "mousemove" , b ) ; CKEDITOR . document . on ( "mouseup" , d ) ; h = a . getPosition ( ) ; if ( CKEDITOR . env . ie6Compat ) { var e =
A . getChild ( 0 ) . getFrameDocument ( ) ; e . on ( "mousemove" , b ) ; e . on ( "mouseup" , d ) } h . data . preventDefault ( ) } , a ) } function h ( a ) { function b ( d ) { var l = "rtl" == h. lang . dir , m = p . width , q = p . height , t = m + ( d . data . $ . screenX - n . x ) * ( l ? - 1 : 1 ) * ( a . _ . moved ? 1 : 2 ) , w = q + ( d . data . $ . screenY - n . y ) * ( a . _ . moved ? 1 : 2 ) , r = a . _ . element . getFirst ( ) , r = l && r . getComputedStyle ( "right" ) , u = a . getPosition ( ) ; u . y + w > k . height && ( w = k . height - u . y ) ; ( l ? r : u . x ) + t > k . width && ( t = k . width - ( l ? r : u . x ) ) ; if ( f== CKEDITOR . DIALOG _RESIZE _WIDTH || f == CKEDITOR . DIALOG _RESIZE _BOTH ) m = Math . max ( c . minWidth ||
A . getChild ( 0 ) . getFrameDocument ( ) ; e . on ( "mousemove" , b ) ; e . on ( "mouseup" , d ) } f . data . preventDefault ( ) } , a ) } function h ( a ) { function b ( d ) { var l = "rtl" == f. lang . dir , m = n . width , q = n . height , t = m + ( d . data . $ . screenX - p . x ) * ( l ? - 1 : 1 ) * ( a . _ . moved ? 1 : 2 ) , w = q + ( d . data . $ . screenY - p . y ) * ( a . _ . moved ? 1 : 2 ) , r = a . _ . element . getFirst ( ) , r = l && r . getComputedStyle ( "right" ) , u = a . getPosition ( ) ; u . y + w > k . height && ( w = k . height - u . y ) ; ( l ? r : u . x ) + t > k . width && ( t = k . width - ( l ? r : u . x ) ) ; if ( h== CKEDITOR . DIALOG _RESIZE _WIDTH || h == CKEDITOR . DIALOG _RESIZE _BOTH ) m = Math . max ( c . minWidth ||
0 , t - e ) ; if ( f== CKEDITOR . DIALOG _RESIZE _HEIGHT || f == CKEDITOR . DIALOG _RESIZE _BOTH ) q = Math . max ( c . minHeight || 0 , w - g ) ; a . resize ( m , q ) ; a . _ . moved || a . layout ( ) ; d . data . preventDefault ( ) } function d ( ) { CKEDITOR . document . removeListener ( "mouseup" , d ) ; CKEDITOR . document . removeListener ( "mousemove" , b ) ; l && ( l . remove ( ) , l = null ) ; if ( CKEDITOR . env . ie6Compat ) { var a = A . getChild ( 0 ) . getFrameDocument ( ) ; a . removeListener ( "mouseup" , d ) ; a . removeListener ( "mousemove" , b ) } } var c = a . definition , f= c . resizable ; if ( f != CKEDITOR . DIALOG _RESIZE _NONE ) { var h = a . getParentEditor ( ) ,
0 , t - e ) ; if ( h== CKEDITOR . DIALOG _RESIZE _HEIGHT || h == CKEDITOR . DIALOG _RESIZE _BOTH ) q = Math . max ( c . minHeight || 0 , w - g ) ; a . resize ( m , q ) ; a . _ . moved || a . layout ( ) ; d . data . preventDefault ( ) } function d ( ) { CKEDITOR . document . removeListener ( "mouseup" , d ) ; CKEDITOR . document . removeListener ( "mousemove" , b ) ; l && ( l . remove ( ) , l = null ) ; if ( CKEDITOR . env . ie6Compat ) { var a = A . getChild ( 0 ) . getFrameDocument ( ) ; a . removeListener ( "mouseup" , d ) ; a . removeListener ( "mousemove" , b ) } } var c = a . definition , h= c . resizable ; if ( h != CKEDITOR . DIALOG _RESIZE _NONE ) { var f = a . getParentEditor ( ) ,
e , g , k , n, p , l , m = CKEDITOR . tools . addFunction ( function ( c ) { p= a . getSize ( ) ; var f = a . parts . contents ; f . $ . getElementsByTagName ( "iframe" ) . length && ( l = CKEDITOR . dom . element . createFromHtml ( '\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%;"\x3e\x3c/div\x3e' ) , f. append ( l ) ) ; g = p . height - a . parts . contents . getSize ( "height" , ! ( CKEDITOR . env . gecko || CKEDITOR . env . ie && CKEDITOR . env . quirks ) ) ; e = p . width - a . parts . contents . getSize ( "width" , 1 ) ; n = { x : c . screenX , y : c . screenY } ; k = CKEDITOR . document . getWindow ( ) . getViewPaneSize ( ) ;
e , g , k , p, n , l , m = CKEDITOR . tools . addFunction ( function ( c ) { n= a . getSize ( ) ; var h = a . parts . contents ; h . $ . getElementsByTagName ( "iframe" ) . length && ( l = CKEDITOR . dom . element . createFromHtml ( '\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%;"\x3e\x3c/div\x3e' ) , h. append ( l ) ) ; g = n . height - a . parts . contents . getSize ( "height" , ! ( CKEDITOR . env . gecko || CKEDITOR . env . ie && CKEDITOR . env . quirks ) ) ; e = n . width - a . parts . contents . getSize ( "width" , 1 ) ; p = { x : c . screenX , y : c . screenY } ; k = CKEDITOR . document . getWindow ( ) . getViewPaneSize ( ) ;
CKEDITOR . document . on ( "mousemove" , b ) ; CKEDITOR . document . on ( "mouseup" , d ) ; CKEDITOR . env . ie6Compat && ( f = A . getChild ( 0 ) . getFrameDocument ( ) , f. on ( "mousemove" , b ) , f . on ( "mouseup" , d ) ) ; c . preventDefault && c . preventDefault ( ) } ) ; a . on ( "load" , function ( ) { var b = "" ; f == CKEDITOR . DIALOG _RESIZE _WIDTH ? b = " cke_resizer_horizontal" : f == CKEDITOR . DIALOG _RESIZE _HEIGHT && ( b = " cke_resizer_vertical" ) ; b = CKEDITOR . dom . element . createFromHtml ( '\x3cdiv class\x3d"cke_resizer' + b + " cke_resizer_" + h . lang . dir + '" title\x3d"' + CKEDITOR . tools . htmlEncode ( h . lang . common . resize ) +
CKEDITOR . document . on ( "mousemove" , b ) ; CKEDITOR . document . on ( "mouseup" , d ) ; CKEDITOR . env . ie6Compat && ( h = A . getChild ( 0 ) . getFrameDocument ( ) , h. on ( "mousemove" , b ) , h . on ( "mouseup" , d ) ) ; c . preventDefault && c . preventDefault ( ) } ) ; a . on ( "load" , function ( ) { var b = "" ; h == CKEDITOR . DIALOG _RESIZE _WIDTH ? b = " cke_resizer_horizontal" : h == CKEDITOR . DIALOG _RESIZE _HEIGHT && ( b = " cke_resizer_vertical" ) ; b = CKEDITOR . dom . element . createFromHtml ( '\x3cdiv class\x3d"cke_resizer' + b + " cke_resizer_" + f . lang . dir + '" title\x3d"' + CKEDITOR . tools . htmlEncode ( f . lang . common . resize ) +
'" onmousedown\x3d"CKEDITOR.tools.callFunction(' + m + ', event )"\x3e' + ( "ltr" == h . lang . dir ? "◢" : "◣" ) + "\x3c/div\x3e" ) ; a . parts . footer . append ( b , 1 ) } ) ; h . on ( "destroy" , function ( ) { CKEDITOR . tools . removeFunction ( m ) } ) } } function p ( a ) { a . data . preventDefault ( 1 ) } function v ( a ) { var b = CKEDITOR . document . getWindow ( ) , d = a . config , c = d . dialog _backgroundCoverColor || "white" , f= d . dialog _backgroundCoverOpacity , h = d . baseFloatZIndex , d = CKEDITOR . tools . genKey ( c , f, h ) , e = B [ d ] ; e ? e . show ( ) : ( h = [ '\x3cdiv tabIndex\x3d"-1" style\x3d"position: ' , CKEDITOR . env . ie6Compat ?
'" onmousedown\x3d"CKEDITOR.tools.callFunction(' + m + ', event )"\x3e' + ( "ltr" == f . lang . dir ? "◢" : "◣" ) + "\x3c/div\x3e" ) ; a . parts . footer . append ( b , 1 ) } ) ; f . on ( "destroy" , function ( ) { CKEDITOR . tools . removeFunction ( m ) } ) } } function p ( a ) { a . data . preventDefault ( 1 ) } function v ( a ) { var b = CKEDITOR . document . getWindow ( ) , d = a . config , c = d . dialog _backgroundCoverColor || "white" , h= d . dialog _backgroundCoverOpacity , f = d . baseFloatZIndex , d = CKEDITOR . tools . genKey ( c , h, f ) , e = B [ d ] ; e ? e . show ( ) : ( f = [ '\x3cdiv tabIndex\x3d"-1" style\x3d"position: ' , CKEDITOR . env . ie6Compat ?
"absolute" : "fixed" , "; z-index: " , h , "; top: 0px; left: 0px; " , CKEDITOR . env . ie6Compat ? "" : "background-color: " + c , '" class\x3d"cke_dialog_background_cover"\x3e' ] , CKEDITOR . env . ie6Compat && ( c = "\x3chtml\x3e\x3cbody style\x3d\\'background-color:" + c + ";\\'\x3e\x3c/body\x3e\x3c/html\x3e" , h . push ( '\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:' ) , h . push ( "void((function(){" + encodeURIComponent ( "document.open();(" + CKEDITOR . tools . fixDomain + ")();document.write( '" +
"absolute" : "fixed" , "; z-index: " , f , "; top: 0px; left: 0px; " , CKEDITOR . env . ie6Compat ? "" : "background-color: " + c , '" class\x3d"cke_dialog_background_cover"\x3e' ] , CKEDITOR . env . ie6Compat && ( c = "\x3chtml\x3e\x3cbody style\x3d\\'background-color:" + c + ";\\'\x3e\x3c/body\x3e\x3c/html\x3e" , f . push ( '\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:' ) , f . push ( "void((function(){" + encodeURIComponent ( "document.open();(" + CKEDITOR . tools . fixDomain + ")();document.write( '" +
c + "' );document.close();" ) + "})())" ) , h . push ( '" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e' ) ) , h . push ( "\x3c/div\x3e" ) , e = CKEDITOR . dom . element . createFromHtml ( h . join ( "" ) ) , e . setOpacity ( void 0 !== f? f : . 5 ) , e . on ( "keydown" , p ) , e . on ( "keypress" , p ) , e . on ( "keyup" , p ) , e . appendTo ( CKEDITOR . document . getBody ( ) ) , B [ d ] = e ) ; a . focusManager . add ( e ) ; A = e ; a = function ( ) { var a = b . getViewPaneSize ( ) ; e . setStyles ( { width : a . width + "px" , height : a . height +
c + "' );document.close();" ) + "})())" ) , f . push ( '" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e' ) ) , f . push ( "\x3c/div\x3e" ) , e = CKEDITOR . dom . element . createFromHtml ( f . join ( "" ) ) , e . setOpacity ( void 0 !== h? h : . 5 ) , e . on ( "keydown" , p ) , e . on ( "keypress" , p ) , e . on ( "keyup" , p ) , e . appendTo ( CKEDITOR . document . getBody ( ) ) , B [ d ] = e ) ; a . focusManager . add ( e ) ; A = e ; a = function ( ) { var a = b . getViewPaneSize ( ) ; e . setStyles ( { width : a . width + "px" , height : a . height +
"px" } ) } ; var g = function ( ) { var a = b . getScrollPosition ( ) , d = CKEDITOR . dialog . _ . currentTop ; e . setStyles ( { left : a . x + "px" , top : a . y + "px" } ) ; if ( d ) { do a = d . getPosition ( ) , d . move ( a . x , a . y ) ; while ( d = d . _ . parentDialog ) } } ; x = a ; b . on ( "resize" , a ) ; a ( ) ; CKEDITOR . env . mac && CKEDITOR . env . webkit || e . focus ( ) ; if ( CKEDITOR . env . ie6Compat ) { var k = function ( ) { g ( ) ; arguments . callee . prevScrollHandler . apply ( this , arguments ) } ; b . $ . setTimeout ( function ( ) { k . prevScrollHandler = window . onscroll || function ( ) { } ; window . onscroll = k } , 0 ) ; g ( ) } } function u ( a ) { A && ( a . focusManager . remove ( A ) ,
"px" } ) } ; var g = function ( ) { var a = b . getScrollPosition ( ) , d = CKEDITOR . dialog . _ . currentTop ; e . setStyles ( { left : a . x + "px" , top : a . y + "px" } ) ; if ( d ) { do a = d . getPosition ( ) , d . move ( a . x , a . y ) ; while ( d = d . _ . parentDialog ) } } ; x = a ; b . on ( "resize" , a ) ; a ( ) ; CKEDITOR . env . mac && CKEDITOR . env . webkit || e . focus ( ) ; if ( CKEDITOR . env . ie6Compat ) { var k = function ( ) { g ( ) ; arguments . callee . prevScrollHandler . apply ( this , arguments ) } ; b . $ . setTimeout ( function ( ) { k . prevScrollHandler = window . onscroll || function ( ) { } ; window . onscroll = k } , 0 ) ; g ( ) } } function u ( a ) { A && ( a . focusManager . remove ( A ) ,
a = CKEDITOR . document . getWindow ( ) , A . hide ( ) , a . removeListener ( "resize" , x ) , CKEDITOR . env . ie6Compat && a . $ . setTimeout ( function ( ) { window . onscroll = window . onscroll && window . onscroll . prevScrollHandler || null } , 0 ) , x = null ) } var t = CKEDITOR . tools . cssLength , n = '\x3cdiv class\x3d"cke_reset_all {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog ' + CKEDITOR . env . cssClass + ' cke_{langDir}" style\x3d"position:absolute" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e' ;
a = CKEDITOR . document . getWindow ( ) , A . hide ( ) , a . removeListener ( "resize" , x ) , CKEDITOR . env . ie6Compat && a . $ . setTimeout ( function ( ) { window . onscroll = window . onscroll && window . onscroll . prevScrollHandler || null } , 0 ) , x = null ) } var t = CKEDITOR . tools . cssLength , n = '\x3cdiv class\x3d"cke_reset_all {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog ' + CKEDITOR . env . cssClass + ' cke_{langDir}" style\x3d"position:absolute" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e' ;
CKEDITOR . dialog = function ( b , c ) { function k ( ) { var a = B . _ . focusList ; a . sort ( function ( a , b ) { return a . tabIndex != b . tabIndex ? b . tabIndex - a . tabIndex : a . focusIndex - b . focusIndex } ) ; for ( var b = a . length , d = 0 ; d < b ; d ++ ) a [ d ] . focusIndex = d } function n ( a ) { var b = B . _ . focusList ; a = a || 0 ; if ( ! ( 1 > b . length ) ) { var d = B . _ . currentFocusIndex ; B . _ . tabBarMode && 0 > a && ( d = 0 ) ; try { b [ d ] . getInputElement ( ) . $ . blur ( ) } catch ( c ) { } var f= d , h = 1 < B . _ . pageCount ; do { f+= a ; if ( h && ! B . _ . tabBarMode && ( f== b . length || - 1 == f ) ) { B . _ . tabBarMode = ! 0 ; B . _ . tabs [ B . _ . currentTabId ] [ 0 ] . focus ( ) ;
CKEDITOR . dialog = function ( b , c ) { function k ( ) { var a = B . _ . focusList ; a . sort ( function ( a , b ) { return a . tabIndex != b . tabIndex ? b . tabIndex - a . tabIndex : a . focusIndex - b . focusIndex } ) ; for ( var b = a . length , d = 0 ; d < b ; d ++ ) a [ d ] . focusIndex = d } function p ( a ) { var b = B . _ . focusList ; a = a || 0 ; if ( ! ( 1 > b . length ) ) { var d = B . _ . currentFocusIndex ; B . _ . tabBarMode && 0 > a && ( d = 0 ) ; try { b [ d ] . getInputElement ( ) . $ . blur ( ) } catch ( c ) { } var h= d , f = 1 < B . _ . pageCount ; do { h+= a ; if ( f && ! B . _ . tabBarMode && ( h== b . length || - 1 == h ) ) { B . _ . tabBarMode = ! 0 ; B . _ . tabs [ B . _ . currentTabId ] [ 0 ] . focus ( ) ;
B . _ . currentFocusIndex = - 1 ; return } f= ( f + b . length ) % b . length ; if ( f == d ) break } while ( a && ! b [ f] . isFocusable ( ) ) ; b [ f ] . focus ( ) ; "text" == b [ f] . type && b [ f ] . select ( ) } } function l ( d ) { if ( B == CKEDITOR . dialog . _ . currentTop ) { var c = d . data . getKeystroke ( ) , f = "rtl" == b . lang . dir , h = [ 37 , 38 , 39 , 40 ] ; v = C = 0 ; if ( 9 == c || c == CKEDITOR . SHIFT + 9 ) n ( c == CKEDITOR . SHIFT + 9 ? - 1 : 1 ) , v = 1 ; else if ( c == CKEDITOR . ALT + 121 && ! B . _ . tabBarMode && 1 < B . getPageCount ( ) ) B . _ . tabBarMode = ! 0 , B . _ . tabs [ B . _ . currentTabId ] [ 0 ] . focus ( ) , B . _ . currentFocusIndex = - 1 , v = 1 ; else if ( - 1 != CKEDITOR . tools . indexOf ( h ,
B . _ . currentFocusIndex = - 1 ; return } h= ( h + b . length ) % b . length ; if ( h == d ) break } while ( a && ! b [ h] . isFocusable ( ) ) ; b [ h ] . focus ( ) ; "text" == b [ h] . type && b [ h ] . select ( ) } } function n ( d ) { if ( B == CKEDITOR . dialog . _ . currentTop ) { var c = d . data . getKeystroke ( ) , h = "rtl" == b . lang . dir , f = [ 37 , 38 , 39 , 40 ] ; v = C = 0 ; if ( 9 == c || c == CKEDITOR . SHIFT + 9 ) p ( c == CKEDITOR . SHIFT + 9 ? - 1 : 1 ) , v = 1 ; else if ( c == CKEDITOR . ALT + 121 && ! B . _ . tabBarMode && 1 < B . getPageCount ( ) ) B . _ . tabBarMode = ! 0 , B . _ . tabs [ B . _ . currentTabId ] [ 0 ] . focus ( ) , B . _ . currentFocusIndex = - 1 , v = 1 ; else if ( - 1 != CKEDITOR . tools . indexOf ( f ,
c ) && B . _ . tabBarMode ) c = - 1 != CKEDITOR . tools . indexOf ( [ f ? 39 : 37 , 38 ] , c ) ? a . call ( B ) : e . call ( B ) , B . selectPage ( c ) , B . _ . tabs [ c ] [ 0 ] . focus ( ) , v = 1 ; else if ( 13 != c && 32 != c || ! B . _ . tabBarMode ) if ( 13 == c ) c = d . data . getTarget ( ) , c . is ( "a" , "button" , "select" , "textarea" ) || c . is ( "input" ) && "button" == c . $ . type || ( ( c = this . getButton ( "ok" ) ) && CKEDITOR . tools . setTimeout ( c . click , 0 , c ) , v = 1 ) , C = 1 ; else if ( 27 == c ) ( c = this . getButton ( "cancel" ) ) ? CKEDITOR . tools . setTimeout ( c . click , 0 , c ) : ! 1 !== this . fire ( "cancel" , { hide : ! 0 } ) . hide && this . hide ( ) , C = 1 ; else return ; else this . selectPage ( this . _ . currentTabId ) ,
c ) && B . _ . tabBarMode ) c = - 1 != CKEDITOR . tools . indexOf ( [ h ? 39 : 37 , 38 ] , c ) ? a . call ( B ) : e . call ( B ) , B . selectPage ( c ) , B . _ . tabs [ c ] [ 0 ] . focus ( ) , v = 1 ; else if ( 13 != c && 32 != c || ! B . _ . tabBarMode ) if ( 13 == c ) c = d . data . getTarget ( ) , c . is ( "a" , "button" , "select" , "textarea" ) || c . is ( "input" ) && "button" == c . $ . type || ( ( c = this . getButton ( "ok" ) ) && CKEDITOR . tools . setTimeout ( c . click , 0 , c ) , v = 1 ) , C = 1 ; else if ( 27 == c ) ( c = this . getButton ( "cancel" ) ) ? CKEDITOR . tools . setTimeout ( c . click , 0 , c ) : ! 1 !== this . fire ( "cancel" , { hide : ! 0 } ) . hide && this . hide ( ) , C = 1 ; else return ; else this . selectPage ( this . _ . currentTabId ) ,
this . _ . tabBarMode = ! 1 , this . _ . currentFocusIndex = - 1 , n( 1 ) , v = 1 ; p ( d ) } } function p ( a ) { v ? a . data . preventDefault ( 1 ) : C && a . data . stopPropagation ( ) } var t = CKEDITOR . dialog . _ . dialogDefinitions [ c ] , w = CKEDITOR . tools . clone ( q ) , u = b . config . dialog _buttonsOrder || "OS" , y = b . lang . dir , H = { } , v , C ; ( "OS" == u && CKEDITOR . env . mac || "rtl" == u && "ltr" == y || "ltr" == u && "rtl" == y ) && w . buttons . reverse ( ) ; t = CKEDITOR . tools . extend ( t ( b ) , w ) ; t = CKEDITOR . tools . clone ( t ) ; t = new r ( this , t ) ; w = m ( b ) ; this . _ = { editor : b , element : w . element , name : c , contentSize : { width : 0 , height : 0 } ,
this . _ . tabBarMode = ! 1 , this . _ . currentFocusIndex = - 1 , p( 1 ) , v = 1 ; l ( d ) } } function l ( a ) { v ? a . data . preventDefault ( 1 ) : C && a . data . stopPropagation ( ) } var t = CKEDITOR . dialog . _ . dialogDefinitions [ c ] , w = CKEDITOR . tools . clone ( q ) , u = b . config . dialog _buttonsOrder || "OS" , y = b . lang . dir , H = { } , v , C ; ( "OS" == u && CKEDITOR . env . mac || "rtl" == u && "ltr" == y || "ltr" == u && "rtl" == y ) && w . buttons . reverse ( ) ; t = CKEDITOR . tools . extend ( t ( b ) , w ) ; t = CKEDITOR . tools . clone ( t ) ; t = new r ( this , t ) ; w = m ( b ) ; this . _ = { editor : b , element : w . element , name : c , contentSize : { width : 0 , height : 0 } ,
size : { width : 0 , height : 0 } , contents : { } , buttons : { } , accessKeyMap : { } , tabs : { } , tabIdList : [ ] , currentTabId : null , currentTabIndex : null , pageCount : 0 , lastTab : null , tabBarMode : ! 1 , focusList : [ ] , currentFocusIndex : 0 , hasFocus : ! 1 } ; this . parts = w . parts ; CKEDITOR . tools . setTimeout ( function ( ) { b . fire ( "ariaWidget" , this . parts . contents ) } , 0 , this ) ; w = { position : CKEDITOR . env . ie6Compat ? "absolute" : "fixed" , top : 0 , visibility : "hidden" } ; w [ "rtl" == y ? "right" : "left" ] = 0 ; this . parts . dialog . setStyles ( w ) ; CKEDITOR . event . call ( this ) ; this . definition = t = CKEDITOR . fire ( "dialogDefinition" ,
size : { width : 0 , height : 0 } , contents : { } , buttons : { } , accessKeyMap : { } , tabs : { } , tabIdList : [ ] , currentTabId : null , currentTabIndex : null , pageCount : 0 , lastTab : null , tabBarMode : ! 1 , focusList : [ ] , currentFocusIndex : 0 , hasFocus : ! 1 } ; this . parts = w . parts ; CKEDITOR . tools . setTimeout ( function ( ) { b . fire ( "ariaWidget" , this . parts . contents ) } , 0 , this ) ; w = { position : CKEDITOR . env . ie6Compat ? "absolute" : "fixed" , top : 0 , visibility : "hidden" } ; w [ "rtl" == y ? "right" : "left" ] = 0 ; this . parts . dialog . setStyles ( w ) ; CKEDITOR . event . call ( this ) ; this . definition = t = CKEDITOR . fire ( "dialogDefinition" ,
{ name : c , definition : t } , b ) . definition ; if ( ! ( "removeDialogTabs" in b . _ ) && b . config . removeDialogTabs ) { w = b . config . removeDialogTabs . split ( ";" ) ; for ( y = 0 ; y < w . length ; y ++ ) if ( u = w [ y ] . split ( ":" ) , 2 == u . length ) { var x = u [ 0 ] ; H [ x ] || ( H [ x ] = [ ] ) ; H [ x ] . push ( u [ 1 ] ) } b . _ . removeDialogTabs = H } if ( b . _ . removeDialogTabs && ( H = b . _ . removeDialogTabs [ c ] ) ) for ( y = 0 ; y < H . length ; y ++ ) t . removeContents ( H [ y ] ) ; if ( t . onLoad ) this . on ( "load" , t . onLoad ) ; if ( t . onShow ) this . on ( "show" , t . onShow ) ; if ( t . onHide ) this . on ( "hide" , t . onHide ) ; if ( t . onOk ) this . on ( "ok" , function ( a ) { b . fire ( "saveSnapshot" ) ;
{ name : c , definition : t } , b ) . definition ; if ( ! ( "removeDialogTabs" in b . _ ) && b . config . removeDialogTabs ) { w = b . config . removeDialogTabs . split ( ";" ) ; for ( y = 0 ; y < w . length ; y ++ ) if ( u = w [ y ] . split ( ":" ) , 2 == u . length ) { var x = u [ 0 ] ; H [ x ] || ( H [ x ] = [ ] ) ; H [ x ] . push ( u [ 1 ] ) } b . _ . removeDialogTabs = H } if ( b . _ . removeDialogTabs && ( H = b . _ . removeDialogTabs [ c ] ) ) for ( y = 0 ; y < H . length ; y ++ ) t . removeContents ( H [ y ] ) ; if ( t . onLoad ) this . on ( "load" , t . onLoad ) ; if ( t . onShow ) this . on ( "show" , t . onShow ) ; if ( t . onHide ) this . on ( "hide" , t . onHide ) ; if ( t . onOk ) this . on ( "ok" , function ( a ) { b . fire ( "saveSnapshot" ) ;
setTimeout ( function ( ) { b . fire ( "saveSnapshot" ) } , 0 ) ; ! 1 === t . onOk . call ( this , a ) && ( a . data . hide = ! 1 ) } ) ; this . state = CKEDITOR . DIALOG _STATE _IDLE ; if ( t . onCancel ) this . on ( "cancel" , function ( a ) { ! 1 === t . onCancel . call ( this , a ) && ( a . data . hide = ! 1 ) } ) ; var B = this , z = function ( a ) { var b = B . _ . contents , d = ! 1 , c ; for ( c in b ) for ( var f in b [ c ] ) if ( d = a . call ( this , b [ c ] [ f ] ) ) return } ; this . on ( "ok" , function ( a ) { z ( function ( b ) { if ( b . validate ) { var d = b . validate ( this ) , c = "string" == typeof d || ! 1 === d ; c && ( a . data . hide = ! 1 , a . stop ( ) ) ; g . call ( b , ! c , "string" == typeof d ?
setTimeout ( function ( ) { b . fire ( "saveSnapshot" ) } , 0 ) ; ! 1 === t . onOk . call ( this , a ) && ( a . data . hide = ! 1 ) } ) ; this . state = CKEDITOR . DIALOG _STATE _IDLE ; if ( t . onCancel ) this . on ( "cancel" , function ( a ) { ! 1 === t . onCancel . call ( this , a ) && ( a . data . hide = ! 1 ) } ) ; var B = this , z = function ( a ) { var b = B . _ . contents , d = ! 1 , c ; for ( c in b ) for ( var h in b [ c ] ) if ( d = a . call ( this , b [ c ] [ h ] ) ) return } ; this . on ( "ok" , function ( a ) { z ( function ( b ) { if ( b . validate ) { var d = b . validate ( this ) , c = "string" == typeof d || ! 1 === d ; c && ( a . data . hide = ! 1 , a . stop ( ) ) ; g . call ( b , ! c , "string" == typeof d ?
d : void 0 ) ; return c } } ) } , this , null , 0 ) ; this . on ( "cancel" , function ( a ) { z ( function ( d ) { if ( d . isChanged ( ) ) return b . config . dialog _noConfirmCancel || confirm ( b . lang . common . confirmCancel ) || ( a . data . hide = ! 1 ) , ! 0 } ) } , this , null , 0 ) ; this . parts . close . on ( "click" , function ( a ) { ! 1 !== this . fire ( "cancel" , { hide : ! 0 } ) . hide && this . hide ( ) ; a . data . preventDefault ( ) } , this ) ; this . changeFocus = n ; var A = this . _ . element ; b . focusManager . add ( A , 1 ) ; this . on ( "show" , function ( ) { A . on ( "keydown" , l , this ) ; if ( CKEDITOR . env . gecko ) A . on ( "keypress" , p , this ) } ) ; this . on ( "hide" ,
d : void 0 ) ; return c } } ) } , this , null , 0 ) ; this . on ( "cancel" , function ( a ) { z ( function ( d ) { if ( d . isChanged ( ) ) return b . config . dialog _noConfirmCancel || confirm ( b . lang . common . confirmCancel ) || ( a . data . hide = ! 1 ) , ! 0 } ) } , this , null , 0 ) ; this . parts . close . on ( "click" , function ( a ) { ! 1 !== this . fire ( "cancel" , { hide : ! 0 } ) . hide && this . hide ( ) ; a . data . preventDefault ( ) } , this ) ; this . changeFocus = p ; var A = this . _ . element ; b . focusManager . add ( A , 1 ) ; this . on ( "show" , function ( ) { A . on ( "keydown" , n , this ) ; if ( CKEDITOR . env . gecko ) A . on ( "keypress" , l , this ) } ) ; this . on ( "hide" ,
function ( ) { A . removeListener ( "keydown" , l ) ; CKEDITOR . env . gecko && A . removeListener ( "keypress" , p ) ; z ( function ( a ) { f . apply ( a ) } ) } ) ; this . on ( "iframeAdded" , function ( a ) { ( new CKEDITOR . dom . document ( a . data . iframe . $ . contentWindow . document ) ) . on ( "keydown" , l , this , null , 0 ) } ) ; this . on ( "show" , function ( ) { k ( ) ; var a = 1 < B . _ . pageCount ; b . config . dialog _startupFocusTab && a ? ( B . _ . tabBarMode = ! 0 , B . _ . tabs [ B . _ . currentTabId ] [ 0 ] . focus ( ) , B . _ . currentFocusIndex = - 1 ) : this . _ . hasFocus || ( this . _ . currentFocusIndex = a ? - 1 : this . _ . focusList . length - 1 , t . onFocus ?
function ( ) { A . removeListener ( "keydown" , n ) ; CKEDITOR . env . gecko && A . removeListener ( "keypress" , l ) ; z ( function ( a ) { f . apply ( a ) } ) } ) ; this . on ( "iframeAdded" , function ( a ) { ( new CKEDITOR . dom . document ( a . data . iframe . $ . contentWindow . document ) ) . on ( "keydown" , n , this , null , 0 ) } ) ; this . on ( "show" , function ( ) { k ( ) ; var a = 1 < B . _ . pageCount ; b . config . dialog _startupFocusTab && a ? ( B . _ . tabBarMode = ! 0 , B . _ . tabs [ B . _ . currentTabId ] [ 0 ] . focus ( ) , B . _ . currentFocusIndex = - 1 ) : this . _ . hasFocus || ( this . _ . currentFocusIndex = a ? - 1 : this . _ . focusList . length - 1 , t . onFocus ?
( a = t . onFocus . call ( this ) ) && a . focus ( ) : n ( 1 ) ) } , this , null , 4294967295 ) ; if ( CKEDITOR . env . ie6Compat ) this . on ( "load" , function ( ) { var a = this . getElement ( ) , b = a . getFirst ( ) ; b . remove ( ) ; b . appendTo ( a ) } , this ) ; d ( this ) ; h ( this ) ; ( new CKEDITOR . dom . text ( t . title , CKEDITOR . document ) ) . appendTo ( this . parts . title ) ; for ( y = 0 ; y < t . contents . length ; y ++ ) ( H = t . contents [ y ] ) && this . addPage ( H ) ; this . parts . tabs . on ( "click" , function ( a ) { var b = a . data . getTarget ( ) ; b . hasClass ( "cke_dialog_tab" ) && ( b = b . $ . id , this . selectPage ( b . substring ( 4 , b . lastIndexOf ( "_" ) ) ) ,
( a = t . onFocus . call ( this ) ) && a . focus ( ) : p ( 1 ) ) } , this , null , 4294967295 ) ; if ( CKEDITOR . env . ie6Compat ) this . on ( "load" , function ( ) { var a = this . getElement ( ) , b = a . getFirst ( ) ; b . remove ( ) ; b . appendTo ( a ) } , this ) ; d ( this ) ; h ( this ) ; ( new CKEDITOR . dom . text ( t . title , CKEDITOR . document ) ) . appendTo ( this . parts . title ) ; for ( y = 0 ; y < t . contents . length ; y ++ ) ( H = t . contents [ y ] ) && this . addPage ( H ) ; this . parts . tabs . on ( "click" , function ( a ) { var b = a . data . getTarget ( ) ; b . hasClass ( "cke_dialog_tab" ) && ( b = b . $ . id , this . selectPage ( b . substring ( 4 , b . lastIndexOf ( "_" ) ) ) ,
this . _ . tabBarMode && ( this . _ . tabBarMode = ! 1 , this . _ . currentFocusIndex = - 1 , n ( 1 ) ) , a . data . preventDefault ( ) ) } , this ) ; y = [ ] ; H = CKEDITOR . dialog . _ . uiElementBuilders . hbox . build ( this , { type : "hbox" , className : "cke_dialog_footer_buttons" , widths : [ ] , children : t . buttons } , y ) . getChild ( ) ; this . parts . footer . setHtml ( y . join ( "" ) ) ; for ( y = 0 ; y < H . length ; y ++ ) this . _ . buttons [ H [ y ] . id ] = H [ y ] } ; CKEDITOR . dialog . prototype = { destroy : function ( ) { this . hide ( ) ; this . _ . element . remove ( ) } , resize : function ( ) { return function ( a , b ) { this . _ . contentSize && this . _ . contentSize . width ==
this . _ . tabBarMode && ( this . _ . tabBarMode = ! 1 , this . _ . currentFocusIndex = - 1 , p ( 1 ) ) , a . data . preventDefault ( ) ) } , this ) ; y = [ ] ; H = CKEDITOR . dialog . _ . uiElementBuilders . hbox . build ( this , { type : "hbox" , className : "cke_dialog_footer_buttons" , widths : [ ] , children : t . buttons } , y ) . getChild ( ) ; this . parts . footer . setHtml ( y . join ( "" ) ) ; for ( y = 0 ; y < H . length ; y ++ ) this . _ . buttons [ H [ y ] . id ] = H [ y ] } ; CKEDITOR . dialog . prototype = { destroy : function ( ) { this . hide ( ) ; this . _ . element . remove ( ) } , resize : function ( ) { return function ( a , b ) { this . _ . contentSize && this . _ . contentSize . width ==
a && this . _ . contentSize . height == b || ( CKEDITOR . dialog . fire ( "resize" , { dialog : this , width : a , height : b } , this . _ . editor ) , this . fire ( "resize" , { width : a , height : b } , this . _ . editor ) , this . parts . contents . setStyles ( { width : a + "px" , height : b + "px" } ) , "rtl" == this . _ . editor . lang . dir && this . _ . position && ( this . _ . position . x = CKEDITOR . document . getWindow ( ) . getViewPaneSize ( ) . width - this . _ . contentSize . width - parseInt ( this . _ . element . getFirst ( ) . getStyle ( "right" ) , 10 ) ) , this . _ . contentSize = { width : a , height : b } ) } } ( ) , getSize : function ( ) { var a = this . _ . element . getFirst ( ) ;
a && this . _ . contentSize . height == b || ( CKEDITOR . dialog . fire ( "resize" , { dialog : this , width : a , height : b } , this . _ . editor ) , this . fire ( "resize" , { width : a , height : b } , this . _ . editor ) , this . parts . contents . setStyles ( { width : a + "px" , height : b + "px" } ) , "rtl" == this . _ . editor . lang . dir && this . _ . position && ( this . _ . position . x = CKEDITOR . document . getWindow ( ) . getViewPaneSize ( ) . width - this . _ . contentSize . width - parseInt ( this . _ . element . getFirst ( ) . getStyle ( "right" ) , 10 ) ) , this . _ . contentSize = { width : a , height : b } ) } } ( ) , getSize : function ( ) { var a = this . _ . element . getFirst ( ) ;
return { width : a . $ . offsetWidth || 0 , height : a . $ . offsetHeight || 0 } } , move : function ( a , b , d ) { var c = this . _ . element . getFirst ( ) , f = "rtl" == this . _ . editor . lang . dir , h = "fixed" == c . getComputedStyle ( "position" ) ; CKEDITOR . env . ie && c . setStyle ( "zoom" , "100%" ) ; h && this . _ . position && this . _ . position . x == a && this . _ . position . y == b || ( this . _ . position = { x : a , y : b } , h|| ( h = CKEDITOR . document . getWindow ( ) . getScrollPosition ( ) , a += h. x , b += h . y ) , f && ( h = this . getSize ( ) , a = CKEDITOR . document . getWindow ( ) . getViewPaneSize ( ) . width - h . width - a ) , b = { top : ( 0 < b ? b : 0 ) + "px" } ,
return { width : a . $ . offsetWidth || 0 , height : a . $ . offsetHeight || 0 } } , move : function ( a , b , d ) { var c = this . _ . element . getFirst ( ) , h = "rtl" == this . _ . editor . lang . dir , f = "fixed" == c . getComputedStyle ( "position" ) ; CKEDITOR . env . ie && c . setStyle ( "zoom" , "100%" ) ; f && this . _ . position && this . _ . position . x == a && this . _ . position . y == b || ( this . _ . position = { x : a , y : b } , f|| ( f = CKEDITOR . document . getWindow ( ) . getScrollPosition ( ) , a += f. x , b += f . y ) , h && ( f = this . getSize ( ) , a = CKEDITOR . document . getWindow ( ) . getViewPaneSize ( ) . width - f . width - a ) , b = { top : ( 0 < b ? b : 0 ) + "px" } ,
b [ f ? "right" : "left" ] = ( 0 < a ? a : 0 ) + "px" , c . setStyles ( b ) , d && ( this . _ . moved = 1 ) ) } , getPosition : function ( ) { return CKEDITOR . tools . extend ( { } , this . _ . position ) } , show : function ( ) { var a = this . _ . element , b = this . definition ; a . getParent ( ) && a . getParent ( ) . equals ( CKEDITOR . document . getBody ( ) ) ? a . setStyle ( "display" , "block" ) : a . appendTo ( CKEDITOR . document . getBody ( ) ) ; this . resize ( this . _ . contentSize && this . _ . contentSize . width || b . width || b . minWidth , this . _ . contentSize && this . _ . contentSize . height || b . height || b . minHeight ) ; this . reset ( ) ; this . selectPage ( this . definition . contents [ 0 ] . id ) ;
b [ h ? "right" : "left" ] = ( 0 < a ? a : 0 ) + "px" , c . setStyles ( b ) , d && ( this . _ . moved = 1 ) ) } , getPosition : function ( ) { return CKEDITOR . tools . extend ( { } , this . _ . position ) } , show : function ( ) { var a = this . _ . element , b = this . definition ; a . getParent ( ) && a . getParent ( ) . equals ( CKEDITOR . document . getBody ( ) ) ? a . setStyle ( "display" , "block" ) : a . appendTo ( CKEDITOR . document . getBody ( ) ) ; this . resize ( this . _ . contentSize && this . _ . contentSize . width || b . width || b . minWidth , this . _ . contentSize && this . _ . contentSize . height || b . height || b . minHeight ) ; this . reset ( ) ; this . selectPage ( this . definition . contents [ 0 ] . id ) ;
null === CKEDITOR . dialog . _ . currentZIndex && ( CKEDITOR . dialog . _ . currentZIndex = this . _ . editor . config . baseFloatZIndex ) ; this . _ . element . getFirst ( ) . setStyle ( "z-index" , CKEDITOR . dialog . _ . currentZIndex += 10 ) ; null === CKEDITOR . dialog . _ . currentTop ? ( CKEDITOR . dialog . _ . currentTop = this , this . _ . parentDialog = null , v ( this . _ . editor ) ) : ( this . _ . parentDialog = CKEDITOR . dialog . _ . currentTop , this . _ . parentDialog . getElement ( ) . getFirst ( ) . $ . style . zIndex -= Math . floor ( this . _ . editor . config . baseFloatZIndex / 2 ) , CKEDITOR . dialog . _ . currentTop = this ) ;
null === CKEDITOR . dialog . _ . currentZIndex && ( CKEDITOR . dialog . _ . currentZIndex = this . _ . editor . config . baseFloatZIndex ) ; this . _ . element . getFirst ( ) . setStyle ( "z-index" , CKEDITOR . dialog . _ . currentZIndex += 10 ) ; null === CKEDITOR . dialog . _ . currentTop ? ( CKEDITOR . dialog . _ . currentTop = this , this . _ . parentDialog = null , v ( this . _ . editor ) ) : ( this . _ . parentDialog = CKEDITOR . dialog . _ . currentTop , this . _ . parentDialog . getElement ( ) . getFirst ( ) . $ . style . zIndex -= Math . floor ( this . _ . editor . config . baseFloatZIndex / 2 ) , CKEDITOR . dialog . _ . currentTop = this ) ;
a . on ( "keydown" , D ) ; a . on ( "keyup" , G ) ; this . _ . hasFocus = ! 1 ; for ( var d in b . contents ) if ( b . contents [ d ] ) { var a = b . contents [ d ] , c = this . _ . tabs [ a . id ] , f= a . requiredContent , h = 0 ; if ( c ) { for ( var e in this . _ . contents [ a . id ] ) { var g = this . _ . contents [ a . id ] [ e ] ; "hbox" != g . type && "vbox" != g . type && g . getInputElement ( ) && ( g . requiredContent && ! this . _ . editor . activeFilter . check ( g . requiredContent ) ? g . disable ( ) : ( g . enable ( ) , h++ ) ) } ! h || f && ! this . _ . editor . activeFilter . check ( f ) ? c [ 0 ] . addClass ( "cke_dialog_tab_disabled" ) : c [ 0 ] . removeClass ( "cke_dialog_tab_disabled" ) } } CKEDITOR . tools . setTimeout ( function ( ) { this . layout ( ) ;
a . on ( "keydown" , D ) ; a . on ( "keyup" , G ) ; this . _ . hasFocus = ! 1 ; for ( var d in b . contents ) if ( b . contents [ d ] ) { var a = b . contents [ d ] , c = this . _ . tabs [ a . id ] , h= a . requiredContent , f = 0 ; if ( c ) { for ( var e in this . _ . contents [ a . id ] ) { var g = this . _ . contents [ a . id ] [ e ] ; "hbox" != g . type && "vbox" != g . type && g . getInputElement ( ) && ( g . requiredContent && ! this . _ . editor . activeFilter . check ( g . requiredContent ) ? g . disable ( ) : ( g . enable ( ) , f++ ) ) } ! f || h && ! this . _ . editor . activeFilter . check ( h ) ? c [ 0 ] . addClass ( "cke_dialog_tab_disabled" ) : c [ 0 ] . removeClass ( "cke_dialog_tab_disabled" ) } } CKEDITOR . tools . setTimeout ( function ( ) { this . layout ( ) ;
k ( this ) ; this . parts . dialog . setStyle ( "visibility" , "" ) ; this . fireOnce ( "load" , { } ) ; CKEDITOR . ui . fire ( "ready" , this ) ; this . fire ( "show" , { } ) ; this . _ . editor . fire ( "dialogShow" , this ) ; this . _ . parentDialog || this . _ . editor . focusManager . lock ( ) ; this . foreach ( function ( a ) { a . setInitValue && a . setInitValue ( ) } ) } , 100 , this ) } , layout : function ( ) { var a = this . parts . dialog , b = this . getSize ( ) , d = CKEDITOR . document . getWindow ( ) . getViewPaneSize ( ) , c = ( d . width - b . width ) / 2 , f = ( d . height - b . height ) / 2 ; CKEDITOR . env . ie6Compat || ( b . height + ( 0 < f? f : 0 ) > d . height ||
k ( this ) ; this . parts . dialog . setStyle ( "visibility" , "" ) ; this . fireOnce ( "load" , { } ) ; CKEDITOR . ui . fire ( "ready" , this ) ; this . fire ( "show" , { } ) ; this . _ . editor . fire ( "dialogShow" , this ) ; this . _ . parentDialog || this . _ . editor . focusManager . lock ( ) ; this . foreach ( function ( a ) { a . setInitValue && a . setInitValue ( ) } ) } , 100 , this ) } , layout : function ( ) { var a = this . parts . dialog , b = this . getSize ( ) , d = CKEDITOR . document . getWindow ( ) . getViewPaneSize ( ) , c = ( d . width - b . width ) / 2 , h = ( d . height - b . height ) / 2 ; CKEDITOR . env . ie6Compat || ( b . height + ( 0 < h? h : 0 ) > d . height ||
b . width + ( 0 < c ? c : 0 ) > d . width ? a . setStyle ( "position" , "absolute" ) : a . setStyle ( "position" , "fixed" ) ) ; this . move ( this . _ . moved ? this . _ . position . x : c , this . _ . moved ? this . _ . position . y : f ) } , foreach : function ( a ) { for ( var b in this . _ . contents ) for ( var d in this . _ . contents [ b ] ) a . call ( this , this . _ . contents [ b ] [ d ] ) ; return this } , reset : function ( ) { var a = function ( a ) { a . reset && a . reset ( 1 ) } ; return function ( ) { this . foreach ( a ) ; return this } } ( ) , setupContent : function ( ) { var a = arguments ; this . foreach ( function ( b ) { b . setup && b . setup . apply ( b , a ) } ) } ,
b . width + ( 0 < c ? c : 0 ) > d . width ? a . setStyle ( "position" , "absolute" ) : a . setStyle ( "position" , "fixed" ) ) ; this . move ( this . _ . moved ? this . _ . position . x : c , this . _ . moved ? this . _ . position . y : h ) } , foreach : function ( a ) { for ( var b in this . _ . contents ) for ( var d in this . _ . contents [ b ] ) a . call ( this , this . _ . contents [ b ] [ d ] ) ; return this } , reset : function ( ) { var a = function ( a ) { a . reset && a . reset ( 1 ) } ; return function ( ) { this . foreach ( a ) ; return this } } ( ) , setupContent : function ( ) { var a = arguments ; this . foreach ( function ( b ) { b . setup && b . setup . apply ( b , a ) } ) } ,
commitContent : function ( ) { var a = arguments ; this . foreach ( function ( b ) { CKEDITOR . env . ie && this . _ . currentFocusIndex == b . focusIndex && b . getInputElement ( ) . $ . blur ( ) ; b . commit && b . commit . apply ( b , a ) } ) } , hide : function ( ) { if ( this . parts . dialog . isVisible ( ) ) { this . fire ( "hide" , { } ) ; this . _ . editor . fire ( "dialogHide" , this ) ; this . selectPage ( this . _ . tabIdList [ 0 ] ) ; var a = this . _ . element ; a . setStyle ( "display" , "none" ) ; this . parts . dialog . setStyle ( "visibility" , "hidden" ) ; for ( J ( this ) ; CKEDITOR . dialog . _ . currentTop != this ; ) CKEDITOR . dialog . _ . currentTop . hide ( ) ;
commitContent : function ( ) { var a = arguments ; this . foreach ( function ( b ) { CKEDITOR . env . ie && this . _ . currentFocusIndex == b . focusIndex && b . getInputElement ( ) . $ . blur ( ) ; b . commit && b . commit . apply ( b , a ) } ) } , hide : function ( ) { if ( this . parts . dialog . isVisible ( ) ) { this . fire ( "hide" , { } ) ; this . _ . editor . fire ( "dialogHide" , this ) ; this . selectPage ( this . _ . tabIdList [ 0 ] ) ; var a = this . _ . element ; a . setStyle ( "display" , "none" ) ; this . parts . dialog . setStyle ( "visibility" , "hidden" ) ; for ( J ( this ) ; CKEDITOR . dialog . _ . currentTop != this ; ) CKEDITOR . dialog . _ . currentTop . hide ( ) ;
if ( this . _ . parentDialog ) { var b = this . _ . parentDialog . getElement ( ) . getFirst ( ) ; b . setStyle ( "z-index" , parseInt ( b . $ . style . zIndex , 10 ) + Math . floor ( this . _ . editor . config . baseFloatZIndex / 2 ) ) } else u ( this . _ . editor ) ; if ( CKEDITOR . dialog . _ . currentTop = this . _ . parentDialog ) CKEDITOR . dialog . _ . currentZIndex -= 10 ; else { CKEDITOR . dialog . _ . currentZIndex = null ; a . removeListener ( "keydown" , D ) ; a . removeListener ( "keyup" , G ) ; var d = this . _ . editor ; d . focus ( ) ; setTimeout ( function ( ) { d . focusManager . unlock ( ) ; CKEDITOR . env . iOS && d . window . focus ( ) } , 0 ) } delete this . _ . parentDialog ;
if ( this . _ . parentDialog ) { var b = this . _ . parentDialog . getElement ( ) . getFirst ( ) ; b . setStyle ( "z-index" , parseInt ( b . $ . style . zIndex , 10 ) + Math . floor ( this . _ . editor . config . baseFloatZIndex / 2 ) ) } else u ( this . _ . editor ) ; if ( CKEDITOR . dialog . _ . currentTop = this . _ . parentDialog ) CKEDITOR . dialog . _ . currentZIndex -= 10 ; else { CKEDITOR . dialog . _ . currentZIndex = null ; a . removeListener ( "keydown" , D ) ; a . removeListener ( "keyup" , G ) ; var d = this . _ . editor ; d . focus ( ) ; setTimeout ( function ( ) { d . focusManager . unlock ( ) ; CKEDITOR . env . iOS && d . window . focus ( ) } , 0 ) } delete this . _ . parentDialog ;
this . foreach ( function ( a ) { a . resetInitValue && a . resetInitValue ( ) } ) ; this . setState ( CKEDITOR . DIALOG _STATE _IDLE ) } } , addPage : function ( a ) { if ( ! a . requiredContent || this . _ . editor . filter . check ( a . requiredContent ) ) { for ( var b = [ ] , d = a . label ? ' title\x3d"' + CKEDITOR . tools . htmlEncode ( a . label ) + '"' : "" , c = CKEDITOR . dialog . _ . uiElementBuilders . vbox . build ( this , { type : "vbox" , className : "cke_dialog_page_contents" , children : a . elements , expand : ! ! a . expand , padding : a . padding , style : a . style || "width: 100%;" } , b ) , f = this . _ . contents [ a . id ] = { } , h = c . getChild ( ) ,
this . foreach ( function ( a ) { a . resetInitValue && a . resetInitValue ( ) } ) ; this . setState ( CKEDITOR . DIALOG _STATE _IDLE ) } } , addPage : function ( a ) { if ( ! a . requiredContent || this . _ . editor . filter . check ( a . requiredContent ) ) { for ( var b = [ ] , d = a . label ? ' title\x3d"' + CKEDITOR . tools . htmlEncode ( a . label ) + '"' : "" , c = CKEDITOR . dialog . _ . uiElementBuilders . vbox . build ( this , { type : "vbox" , className : "cke_dialog_page_contents" , children : a . elements , expand : ! ! a . expand , padding : a . padding , style : a . style || "width: 100%;" } , b ) , h = this . _ . contents [ a . id ] = { } , f = c . getChild ( ) ,
e = 0 ; c = h . shift ( ) ; ) c . notAllowed || "hbox" == c . type || "vbox" == c . type || e ++ , f [ c . id ] = c , "function" == typeof c . getChild && h. push . apply ( h , c . getChild ( ) ) ; e || ( a . hidden = ! 0 ) ; b = CKEDITOR . dom . element . createFromHtml ( b . join ( "" ) ) ; b . setAttribute ( "role" , "tabpanel" ) ; c = CKEDITOR . env ; f = "cke_" + a . id + "_" + CKEDITOR . tools . getNextNumber ( ) ; d = CKEDITOR . dom . element . createFromHtml ( [ '\x3ca class\x3d"cke_dialog_tab"' , 0 < this . _ . pageCount ? " cke_last" : "cke_first" , d , a . hidden ? ' style\x3d"display:none"' : "" , ' id\x3d"' , f , '"' , c . gecko && ! c . hc ? "" : ' href\x3d"javascript:void(0)"' ,
e = 0 ; c = f . shift ( ) ; ) c . notAllowed || "hbox" == c . type || "vbox" == c . type || e ++ , h [ c . id ] = c , "function" == typeof c . getChild && f. push . apply ( f , c . getChild ( ) ) ; e || ( a . hidden = ! 0 ) ; b = CKEDITOR . dom . element . createFromHtml ( b . join ( "" ) ) ; b . setAttribute ( "role" , "tabpanel" ) ; c = CKEDITOR . env ; h = "cke_" + a . id + "_" + CKEDITOR . tools . getNextNumber ( ) ; d = CKEDITOR . dom . element . createFromHtml ( [ '\x3ca class\x3d"cke_dialog_tab"' , 0 < this . _ . pageCount ? " cke_last" : "cke_first" , d , a . hidden ? ' style\x3d"display:none"' : "" , ' id\x3d"' , h , '"' , c . gecko && ! c . hc ? "" : ' href\x3d"javascript:void(0)"' ,
' tabIndex\x3d"-1" hidefocus\x3d"true" role\x3d"tab"\x3e' , a . label , "\x3c/a\x3e" ] . join ( "" ) ) ; b . setAttribute ( "aria-labelledby" , f ) ; this . _ . tabs [ a . id ] = [ d , b ] ; this . _ . tabIdList . push ( a . id ) ; ! a . hidden && this . _ . pageCount ++ ; this . _ . lastTab = d ; this . updateStyle ( ) ; b . setAttribute ( "name" , a . id ) ; b . appendTo ( this . parts . contents ) ; d . unselectable ( ) ; this . parts . tabs . append ( d ) ; a . accessKey && ( F ( this , this , "CTRL+" + a . accessKey , N , I ) , this . _ . accessKeyMap [ "CTRL+" + a . accessKey ] = a . id ) } } , selectPage : function ( a ) { if ( this . _ . currentTabId != a && ! this . _ . tabs [ a ] [ 0 ] . hasClass ( "cke_dialog_tab_disabled" ) &&
' tabIndex\x3d"-1" hidefocus\x3d"true" role\x3d"tab"\x3e' , a . label , "\x3c/a\x3e" ] . join ( "" ) ) ; b . setAttribute ( "aria-labelledby" , h ) ; this . _ . tabs [ a . id ] = [ d , b ] ; this . _ . tabIdList . push ( a . id ) ; ! a . hidden && this . _ . pageCount ++ ; this . _ . lastTab = d ; this . updateStyle ( ) ; b . setAttribute ( "name" , a . id ) ; b . appendTo ( this . parts . contents ) ; d . unselectable ( ) ; this . parts . tabs . append ( d ) ; a . accessKey && ( F ( this , this , "CTRL+" + a . accessKey , N , I ) , this . _ . accessKeyMap [ "CTRL+" + a . accessKey ] = a . id ) } } , selectPage : function ( a ) { if ( this . _ . currentTabId != a && ! this . _ . tabs [ a ] [ 0 ] . hasClass ( "cke_dialog_tab_disabled" ) &&
! 1 !== this . fire ( "selectPage" , { page : a , currentPage : this . _ . currentTabId } ) ) { for ( var b in this . _ . tabs ) { var d = this . _ . tabs [ b ] [ 0 ] , f = this . _ . tabs [ b ] [ 1 ] ; b != a && ( d . removeClass ( "cke_dialog_tab_selected" ) , f. hide ( ) ) ; f . setAttribute ( "aria-hidden" , b != a ) } var h = this . _ . tabs [ a ] ; h [ 0 ] . addClass ( "cke_dialog_tab_selected" ) ; CKEDITOR . env . ie6Compat || CKEDITOR . env . ie7Compat ? ( c ( h[ 1 ] ) , h [ 1 ] . show ( ) , setTimeout ( function ( ) { c ( h [ 1 ] , 1 ) } , 0 ) ) : h [ 1 ] . show ( ) ; this . _ . currentTabId = a ; this . _ . currentTabIndex = CKEDITOR . tools . indexOf ( this . _ . tabIdList , a ) } } ,
! 1 !== this . fire ( "selectPage" , { page : a , currentPage : this . _ . currentTabId } ) ) { for ( var b in this . _ . tabs ) { var d = this . _ . tabs [ b ] [ 0 ] , h = this . _ . tabs [ b ] [ 1 ] ; b != a && ( d . removeClass ( "cke_dialog_tab_selected" ) , h. hide ( ) ) ; h . setAttribute ( "aria-hidden" , b != a ) } var f = this . _ . tabs [ a ] ; f [ 0 ] . addClass ( "cke_dialog_tab_selected" ) ; CKEDITOR . env . ie6Compat || CKEDITOR . env . ie7Compat ? ( c ( f[ 1 ] ) , f [ 1 ] . show ( ) , setTimeout ( function ( ) { c ( f [ 1 ] , 1 ) } , 0 ) ) : f [ 1 ] . show ( ) ; this . _ . currentTabId = a ; this . _ . currentTabIndex = CKEDITOR . tools . indexOf ( this . _ . tabIdList , a ) } } ,
updateStyle : function ( ) { this . parts . dialog [ ( 1 === this . _ . pageCount ? "add" : "remove" ) + "Class" ] ( "cke_single_page" ) } , hidePage : function ( b ) { var d = this . _ . tabs [ b ] && this . _ . tabs [ b ] [ 0 ] ; d && 1 != this . _ . pageCount && d . isVisible ( ) && ( b == this . _ . currentTabId && this . selectPage ( a . call ( this ) ) , d . hide ( ) , this . _ . pageCount -- , this . updateStyle ( ) ) } , showPage : function ( a ) { if ( a = this . _ . tabs [ a ] && this . _ . tabs [ a ] [ 0 ] ) a . show ( ) , this . _ . pageCount ++ , this . updateStyle ( ) } , getElement : function ( ) { return this . _ . element } , getName : function ( ) { return this . _ . name } ,
updateStyle : function ( ) { this . parts . dialog [ ( 1 === this . _ . pageCount ? "add" : "remove" ) + "Class" ] ( "cke_single_page" ) } , hidePage : function ( b ) { var d = this . _ . tabs [ b ] && this . _ . tabs [ b ] [ 0 ] ; d && 1 != this . _ . pageCount && d . isVisible ( ) && ( b == this . _ . currentTabId && this . selectPage ( a . call ( this ) ) , d . hide ( ) , this . _ . pageCount -- , this . updateStyle ( ) ) } , showPage : function ( a ) { if ( a = this . _ . tabs [ a ] && this . _ . tabs [ a ] [ 0 ] ) a . show ( ) , this . _ . pageCount ++ , this . updateStyle ( ) } , getElement : function ( ) { return this . _ . element } , getName : function ( ) { return this . _ . name } ,
getContentElement : function ( a , b ) { var d = this . _ . contents [ a ] ; return d && d [ b ] } , getValueOf : function ( a , b ) { return this . getContentElement ( a , b ) . getValue ( ) } , setValueOf : function ( a , b , d ) { return this . getContentElement ( a , b ) . setValue ( d ) } , getButton : function ( a ) { return this . _ . buttons [ a ] } , click : function ( a ) { return this . _ . buttons [ a ] . click ( ) } , disableButton : function ( a ) { return this . _ . buttons [ a ] . disable ( ) } , enableButton : function ( a ) { return this . _ . buttons [ a ] . enable ( ) } , getPageCount : function ( ) { return this . _ . pageCount } , getParentEditor : function ( ) { return this . _ . editor } ,
getContentElement : function ( a , b ) { var d = this . _ . contents [ a ] ; return d && d [ b ] } , getValueOf : function ( a , b ) { return this . getContentElement ( a , b ) . getValue ( ) } , setValueOf : function ( a , b , d ) { return this . getContentElement ( a , b ) . setValue ( d ) } , getButton : function ( a ) { return this . _ . buttons [ a ] } , click : function ( a ) { return this . _ . buttons [ a ] . click ( ) } , disableButton : function ( a ) { return this . _ . buttons [ a ] . disable ( ) } , enableButton : function ( a ) { return this . _ . buttons [ a ] . enable ( ) } , getPageCount : function ( ) { return this . _ . pageCount } , getParentEditor : function ( ) { return this . _ . editor } ,
getSelectedElement : function ( ) { return this . getParentEditor ( ) . getSelection ( ) . getSelectedElement ( ) } , addFocusable : function ( a , b ) { if ( "undefined" == typeof b ) b = this . _ . focusList . length , this . _ . focusList . push ( new l ( this , a , b ) ) ; else { this . _ . focusList . splice ( b , 0 , new l ( this , a , b ) ) ; for ( var d = b + 1 ; d < this . _ . focusList . length ; d ++ ) this . _ . focusList [ d ] . focusIndex ++ } } , setState : function ( a ) { if ( this . state != a ) { this . state = a ; if ( a == CKEDITOR . DIALOG _STATE _BUSY ) { if ( ! this . parts . spinner ) { var b = this . getParentEditor ( ) . lang . dir , d = { attributes : { "class" : "cke_dialog_spinner" } ,
getSelectedElement : function ( ) { return this . getParentEditor ( ) . getSelection ( ) . getSelectedElement ( ) } , addFocusable : function ( a , b ) { if ( "undefined" == typeof b ) b = this . _ . focusList . length , this . _ . focusList . push ( new l ( this , a , b ) ) ; else { this . _ . focusList . splice ( b , 0 , new l ( this , a , b ) ) ; for ( var d = b + 1 ; d < this . _ . focusList . length ; d ++ ) this . _ . focusList [ d ] . focusIndex ++ } } , setState : function ( a ) { if ( this . state != a ) { this . state = a ; if ( a == CKEDITOR . DIALOG _STATE _BUSY ) { if ( ! this . parts . spinner ) { var b = this . getParentEditor ( ) . lang . dir , d = { attributes : { "class" : "cke_dialog_spinner" } ,
styles : { "float" : "rtl" == b ? "right" : "left" } } ; d . styles [ "margin-" + ( "rtl" == b ? "left" : "right" ) ] = "8px" ; this . parts . spinner = CKEDITOR . document . createElement ( "div" , d ) ; this . parts . spinner . setHtml ( "\x26#8987;" ) ; this . parts . spinner . appendTo ( this . parts . title , 1 ) } this . parts . spinner . show ( ) ; this . getButton ( "ok" ) . disable ( ) } else a == CKEDITOR . DIALOG _STATE _IDLE && ( this . parts . spinner && this . parts . spinner . hide ( ) , this . getButton ( "ok" ) . enable ( ) ) ; this . fire ( "state" , a ) } } } ; CKEDITOR . tools . extend ( CKEDITOR . dialog , { add : function ( a , b ) { this . _ . dialogDefinitions [ a ] &&
styles : { "float" : "rtl" == b ? "right" : "left" } } ; d . styles [ "margin-" + ( "rtl" == b ? "left" : "right" ) ] = "8px" ; this . parts . spinner = CKEDITOR . document . createElement ( "div" , d ) ; this . parts . spinner . setHtml ( "\x26#8987;" ) ; this . parts . spinner . appendTo ( this . parts . title , 1 ) } this . parts . spinner . show ( ) ; this . getButton ( "ok" ) . disable ( ) } else a == CKEDITOR . DIALOG _STATE _IDLE && ( this . parts . spinner && this . parts . spinner . hide ( ) , this . getButton ( "ok" ) . enable ( ) ) ; this . fire ( "state" , a ) } } } ; CKEDITOR . tools . extend ( CKEDITOR . dialog , { add : function ( a , b ) { this . _ . dialogDefinitions [ a ] &&
"function" != typeof b || ( this . _ . dialogDefinitions [ a ] = b ) } , exists : function ( a ) { return ! ! this . _ . dialogDefinitions [ a ] } , getCurrent : function ( ) { return CKEDITOR . dialog . _ . currentTop } , isTabEnabled : function ( a , b , d ) { a = a . config . removeDialogTabs ; return ! ( a && a . match ( new RegExp ( "(?:^|;)" + b + ":" + d + "(?:$|;)" , "i" ) ) ) } , okButton : function ( ) { var a = function ( a , b ) { b = b || { } ; return CKEDITOR . tools . extend ( { id : "ok" , type : "button" , label : a . lang . common . ok , "class" : "cke_dialog_ui_button_ok" , onClick : function ( a ) { a = a . data . dialog ; ! 1 !== a . fire ( "ok" ,
"function" != typeof b || ( this . _ . dialogDefinitions [ a ] = b ) } , exists : function ( a ) { return ! ! this . _ . dialogDefinitions [ a ] } , getCurrent : function ( ) { return CKEDITOR . dialog . _ . currentTop } , isTabEnabled : function ( a , b , d ) { a = a . config . removeDialogTabs ; return ! ( a && a . match ( new RegExp ( "(?:^|;)" + b + ":" + d + "(?:$|;)" , "i" ) ) ) } , okButton : function ( ) { var a = function ( a , b ) { b = b || { } ; return CKEDITOR . tools . extend ( { id : "ok" , type : "button" , label : a . lang . common . ok , "class" : "cke_dialog_ui_button_ok" , onClick : function ( a ) { a = a . data . dialog ; ! 1 !== a . fire ( "ok" ,
{ hide : ! 0 } ) . hide && a . hide ( ) } } , b , ! 0 ) } ; a . type = "button" ; a . override = function ( b ) { return CKEDITOR . tools . extend ( function ( d ) { return a ( d , b ) } , { type : "button" } , ! 0 ) } ; return a } ( ) , cancelButton : function ( ) { var a = function ( a , b ) { b = b || { } ; return CKEDITOR . tools . extend ( { id : "cancel" , type : "button" , label : a . lang . common . cancel , "class" : "cke_dialog_ui_button_cancel" , onClick : function ( a ) { a = a . data . dialog ; ! 1 !== a . fire ( "cancel" , { hide : ! 0 } ) . hide && a . hide ( ) } } , b , ! 0 ) } ; a . type = "button" ; a . override = function ( b ) { return CKEDITOR . tools . extend ( function ( d ) { return a ( d ,
{ hide : ! 0 } ) . hide && a . hide ( ) } } , b , ! 0 ) } ; a . type = "button" ; a . override = function ( b ) { return CKEDITOR . tools . extend ( function ( d ) { return a ( d , b ) } , { type : "button" } , ! 0 ) } ; return a } ( ) , cancelButton : function ( ) { var a = function ( a , b ) { b = b || { } ; return CKEDITOR . tools . extend ( { id : "cancel" , type : "button" , label : a . lang . common . cancel , "class" : "cke_dialog_ui_button_cancel" , onClick : function ( a ) { a = a . data . dialog ; ! 1 !== a . fire ( "cancel" , { hide : ! 0 } ) . hide && a . hide ( ) } } , b , ! 0 ) } ; a . type = "button" ; a . override = function ( b ) { return CKEDITOR . tools . extend ( function ( d ) { return a ( d ,
b ) } , { type : "button" } , ! 0 ) } ; return a } ( ) , addUIElement : function ( a , b ) { this . _ . uiElementBuilders [ a ] = b } } ) ; CKEDITOR . dialog . _ = { uiElementBuilders : { } , dialogDefinitions : { } , currentTop : null , currentZIndex : null } ; CKEDITOR . event . implementOn ( CKEDITOR . dialog ) ; CKEDITOR . event . implementOn ( CKEDITOR . dialog . prototype ) ; var q = { resizable : CKEDITOR . DIALOG _RESIZE _BOTH , minWidth : 600 , minHeight : 400 , buttons : [ CKEDITOR . dialog . okButton , CKEDITOR . dialog . cancelButton ] } , w = function ( a , b , d ) { for ( var c = 0 , f; f = a [ c ] ; c ++ ) if ( f. id == b || d && f [ d ] && ( f = w ( f [ d ] ,
b ) } , { type : "button" } , ! 0 ) } ; return a } ( ) , addUIElement : function ( a , b ) { this . _ . uiElementBuilders [ a ] = b } } ) ; CKEDITOR . dialog . _ = { uiElementBuilders : { } , dialogDefinitions : { } , currentTop : null , currentZIndex : null } ; CKEDITOR . event . implementOn ( CKEDITOR . dialog ) ; CKEDITOR . event . implementOn ( CKEDITOR . dialog . prototype ) ; var q = { resizable : CKEDITOR . DIALOG _RESIZE _BOTH , minWidth : 600 , minHeight : 400 , buttons : [ CKEDITOR . dialog . okButton , CKEDITOR . dialog . cancelButton ] } , w = function ( a , b , d ) { for ( var c = 0 , h; h = a [ c ] ; c ++ ) if ( h. id == b || d && h [ d ] && ( h = w ( h [ d ] ,
b , d ) ) ) return f ; return null } , y = function ( a , b , d , c , f ) { if ( d ) { for ( var h= 0 , e ; e = a [ h ] ; h ++ ) { if ( e . id == d ) return a . splice ( h , 0 , b ) , b ; if ( c && e [ c ] && ( e = y ( e [ c ] , b , d , c , ! 0 ) ) ) return e } if ( f ) return null } a . push ( b ) ; return b } , C = function ( a , b , d ) { for ( var c = 0 , f; f = a [ c ] ; c ++ ) { if ( f . id == b ) return a . splice ( c , 1 ) ; if ( d && f[ d ] && ( f = C ( f [ d ] , b , d ) ) ) return f } return null } , r = function ( a , d ) { this . dialog = a ; for ( var c = d . contents , f= 0 , h ; h = c [ f ] ; f ++ ) c [ f ] = h && new b ( a , h ) ; CKEDITOR . tools . extend ( this , d ) } ; r . prototype = { getContents : function ( a ) { return w ( this . contents ,
b , d ) ) ) return h ; return null } , y = function ( a , b , d , c , h ) { if ( d ) { for ( var f= 0 , e ; e = a [ f ] ; f ++ ) { if ( e . id == d ) return a . splice ( f , 0 , b ) , b ; if ( c && e [ c ] && ( e = y ( e [ c ] , b , d , c , ! 0 ) ) ) return e } if ( h ) return null } a . push ( b ) ; return b } , C = function ( a , b , d ) { for ( var c = 0 , h; h = a [ c ] ; c ++ ) { if ( h . id == b ) return a . splice ( c , 1 ) ; if ( d && h[ d ] && ( h = C ( h [ d ] , b , d ) ) ) return h } return null } , r = function ( a , d ) { this . dialog = a ; for ( var c = d . contents , h= 0 , f ; f = c [ h ] ; h ++ ) c [ h ] = f && new b ( a , f ) ; CKEDITOR . tools . extend ( this , d ) } ; r . prototype = { getContents : function ( a ) { return w ( this . contents ,
a ) } , getButton : function ( a ) { return w ( this . buttons , a ) } , addContents : function ( a , b ) { return y ( this . contents , a , b ) } , addButton : function ( a , b ) { return y ( this . buttons , a , b ) } , removeContents : function ( a ) { C ( this . contents , a ) } , removeButton : function ( a ) { C ( this . buttons , a ) } } ; b . prototype = { get : function ( a ) { return w ( this . elements , a , "children" ) } , add : function ( a , b ) { return y ( this . elements , a , b , "children" ) } , remove : function ( a ) { C ( this . elements , a , "children" ) } } ; var x , B = { } , A , z = { } , D = function ( a ) { var b = a . data . $ . ctrlKey || a . data . $ . metaKey , d =
a ) } , getButton : function ( a ) { return w ( this . buttons , a ) } , addContents : function ( a , b ) { return y ( this . contents , a , b ) } , addButton : function ( a , b ) { return y ( this . buttons , a , b ) } , removeContents : function ( a ) { C ( this . contents , a ) } , removeButton : function ( a ) { C ( this . buttons , a ) } } ; b . prototype = { get : function ( a ) { return w ( this . elements , a , "children" ) } , add : function ( a , b ) { return y ( this . elements , a , b , "children" ) } , remove : function ( a ) { C ( this . elements , a , "children" ) } } ; var x , B = { } , A , z = { } , D = function ( a ) { var b = a . data . $ . ctrlKey || a . data . $ . metaKey , d =
a . data . $ . altKey , c = a . data . $ . shiftKey , f = String . fromCharCode ( a . data . $ . keyCode ) ; ( b = z [ ( b ? "CTRL+" : "" ) + ( d ? "ALT+" : "" ) + ( c ? "SHIFT+" : "" ) + f ] ) && b . length && ( b = b [ b . length - 1 ] , b . keydown && b . keydown . call ( b . uiElement , b . dialog , b . key ) , a . data . preventDefault ( ) ) } , G = function ( a ) { var b = a . data . $ . ctrlKey || a . data . $ . metaKey , d = a . data . $ . altKey , c = a . data . $ . shiftKey , f = String . fromCharCode ( a . data . $ . keyCode ) ; ( b = z [ ( b ? "CTRL+" : "" ) + ( d ? "ALT+" : "" ) + ( c ? "SHIFT+" : "" ) + f ] ) && b . length && ( b = b [ b . length - 1 ] , b . keyup && ( b . keyup . call ( b . uiElement , b . dialog , b . key ) ,
a . data . $ . altKey , c = a . data . $ . shiftKey , h = String . fromCharCode ( a . data . $ . keyCode ) ; ( b = z [ ( b ? "CTRL+" : "" ) + ( d ? "ALT+" : "" ) + ( c ? "SHIFT+" : "" ) + h ] ) && b . length && ( b = b [ b . length - 1 ] , b . keydown && b . keydown . call ( b . uiElement , b . dialog , b . key ) , a . data . preventDefault ( ) ) } , G = function ( a ) { var b = a . data . $ . ctrlKey || a . data . $ . metaKey , d = a . data . $ . altKey , c = a . data . $ . shiftKey , h = String . fromCharCode ( a . data . $ . keyCode ) ; ( b = z [ ( b ? "CTRL+" : "" ) + ( d ? "ALT+" : "" ) + ( c ? "SHIFT+" : "" ) + h ] ) && b . length && ( b = b [ b . length - 1 ] , b . keyup && ( b . keyup . call ( b . uiElement , b . dialog , b . key ) ,
a . data . preventDefault ( ) ) ) } , F = function ( a , b , d , c , f ) { ( z [ d ] || ( z [ d ] = [ ] ) ) . push ( { uiElement : a , dialog : b , key : d , keyup : f || a . accessKeyUp , keydown : c || a . accessKeyDown } ) } , J = function ( a ) { for ( var b in z ) { for ( var d = z [ b ] , c = d . length - 1 ; 0 <= c ; c -- ) d [ c ] . dialog != a && d [ c ] . uiElement != a || d . splice ( c , 1 ) ; 0 === d . length && delete z [ b ] } } , I = function ( a , b ) { a . _ . accessKeyMap [ b ] && a . selectPage ( a . _ . accessKeyMap [ b ] ) } , N = function ( ) { } ; ( function ( ) { CKEDITOR . ui . dialog = { uiElement : function ( a , b , d , c , f, h , e ) { if ( ! ( 4 > arguments . length ) ) { var g = ( c . call ? c ( b ) : c ) || "div" ,
a . data . preventDefault ( ) ) ) } , F = function ( a , b , d , c , h ) { ( z [ d ] || ( z [ d ] = [ ] ) ) . push ( { uiElement : a , dialog : b , key : d , keyup : h || a . accessKeyUp , keydown : c || a . accessKeyDown } ) } , J = function ( a ) { for ( var b in z ) { for ( var d = z [ b ] , c = d . length - 1 ; 0 <= c ; c -- ) d [ c ] . dialog != a && d [ c ] . uiElement != a || d . splice ( c , 1 ) ; 0 === d . length && delete z [ b ] } } , I = function ( a , b ) { a . _ . accessKeyMap [ b ] && a . selectPage ( a . _ . accessKeyMap [ b ] ) } , N = function ( ) { } ; ( function ( ) { CKEDITOR . ui . dialog = { uiElement : function ( a , b , d , c , h, f , e ) { if ( ! ( 4 > arguments . length ) ) { var g = ( c . call ? c ( b ) : c ) || "div" ,
k = [ "\x3c" , g , " " ] , n= ( f && f . call ? f ( b ) : f ) || { } , l = ( h && h . call ? h ( b ) : h ) || { } , p = ( e && e . call ? e . call ( this , a , b ) : e ) || "" , m = this . domId = l . id || CKEDITOR . tools . getNextId ( ) + "_uiElement" ; b . requiredContent && ! a . getParentEditor ( ) . filter . check ( b . requiredContent ) && ( n . display = "none" , this . notAllowed = ! 0 ) ; l . id = m ; var t = { } ; b . type && ( t [ "cke_dialog_ui_" + b . type ] = 1 ) ; b . className && ( t [ b . className ] = 1 ) ; b . disabled && ( t . cke _disabled = 1 ) ; for ( var q = l[ "class" ] && l [ "class" ] . split ? l [ "class" ] . split ( " " ) : [ ] , m = 0 ; m < q . length ; m ++ ) q [ m ] && ( t [ q [ m ] ] = 1 ) ; q = [ ] ; for ( m in t ) q . push ( m ) ;
k = [ "\x3c" , g , " " ] , p= ( h && h . call ? h ( b ) : h ) || { } , n = ( f && f . call ? f ( b ) : f ) || { } , l = ( e && e . call ? e . call ( this , a , b ) : e ) || "" , m = this . domId = n . id || CKEDITOR . tools . getNextId ( ) + "_uiElement" ; b . requiredContent && ! a . getParentEditor ( ) . filter . check ( b . requiredContent ) && ( p . display = "none" , this . notAllowed = ! 0 ) ; n . id = m ; var t = { } ; b . type && ( t [ "cke_dialog_ui_" + b . type ] = 1 ) ; b . className && ( t [ b . className ] = 1 ) ; b . disabled && ( t . cke _disabled = 1 ) ; for ( var q = n[ "class" ] && n [ "class" ] . split ? n [ "class" ] . split ( " " ) : [ ] , m = 0 ; m < q . length ; m ++ ) q [ m ] && ( t [ q [ m ] ] = 1 ) ; q = [ ] ; for ( m in t ) q . push ( m ) ;
l [ "class" ] = q . join ( " " ) ; b . title && ( l . title = b . title ) ; t = ( b . style || "" ) . split ( ";" ) ; b . align && ( q = b . align , n [ "margin-left" ] = "left" == q ? 0 : "auto" , n [ "margin-right" ] = "right" == q ? 0 : "auto" ) ; for ( m in n ) t . push ( m + ":" + n [ m ] ) ; b . hidden && t . push ( "display:none" ) ; for ( m = t . length - 1 ; 0 <= m ; m -- ) "" === t [ m ] && t . splice ( m , 1 ) ; 0 < t . length && ( l. style = ( l . style ? l . style + "; " : "" ) + t . join ( "; " ) ) ; for ( m in l ) k . push ( m + '\x3d"' + CKEDITOR . tools . htmlEncode ( l [ m ] ) + '" ' ) ; k . push ( "\x3e" , p , "\x3c/" , g , "\x3e" ) ; d . push ( k . join ( "" ) ) ; ( this . _ || ( this . _ = { } ) ) . dialog = a ; "boolean" ==
n [ "class" ] = q . join ( " " ) ; b . title && ( n . title = b . title ) ; t = ( b . style || "" ) . split ( ";" ) ; b . align && ( q = b . align , p [ "margin-left" ] = "left" == q ? 0 : "auto" , p [ "margin-right" ] = "right" == q ? 0 : "auto" ) ; for ( m in p ) t . push ( m + ":" + p [ m ] ) ; b . hidden && t . push ( "display:none" ) ; for ( m = t . length - 1 ; 0 <= m ; m -- ) "" === t [ m ] && t . splice ( m , 1 ) ; 0 < t . length && ( n. style = ( n . style ? n . style + "; " : "" ) + t . join ( "; " ) ) ; for ( m in n ) k . push ( m + '\x3d"' + CKEDITOR . tools . htmlEncode ( n [ m ] ) + '" ' ) ; k . push ( "\x3e" , l , "\x3c/" , g , "\x3e" ) ; d . push ( k . join ( "" ) ) ; ( this . _ || ( this . _ = { } ) ) . dialog = a ; "boolean" ==
typeof b . isChanged && ( this . isChanged = function ( ) { return b . isChanged } ) ; "function" == typeof b . isChanged && ( this . isChanged = b . isChanged ) ; "function" == typeof b . setValue && ( this . setValue = CKEDITOR . tools . override ( this . setValue , function ( a ) { return function ( d ) { a . call ( this , b . setValue . call ( this , d ) ) } } ) ) ; "function" == typeof b . getValue && ( this . getValue = CKEDITOR . tools . override ( this . getValue , function ( a ) { return function ( ) { return b . getValue . call ( this , a . call ( this ) ) } } ) ) ; CKEDITOR . event . implementOn ( this ) ; this . registerEvents ( b ) ;
typeof b . isChanged && ( this . isChanged = function ( ) { return b . isChanged } ) ; "function" == typeof b . isChanged && ( this . isChanged = b . isChanged ) ; "function" == typeof b . setValue && ( this . setValue = CKEDITOR . tools . override ( this . setValue , function ( a ) { return function ( d ) { a . call ( this , b . setValue . call ( this , d ) ) } } ) ) ; "function" == typeof b . getValue && ( this . getValue = CKEDITOR . tools . override ( this . getValue , function ( a ) { return function ( ) { return b . getValue . call ( this , a . call ( this ) ) } } ) ) ; CKEDITOR . event . implementOn ( this ) ; this . registerEvents ( b ) ;
this . accessKeyUp && this . accessKeyDown && b . accessKey && F ( this , a , "CTRL+" + b . accessKey ) ; var w = this ; a . on ( "load" , function ( ) { var b = w . getInputElement ( ) ; if ( b ) { var d = w . type in { checkbox : 1 , ratio : 1 } && CKEDITOR . env . ie && 8 > CKEDITOR . env . version ? "cke_dialog_ui_focused" : "" ; b . on ( "focus" , function ( ) { a . _ . tabBarMode = ! 1 ; a . _ . hasFocus = ! 0 ; w . fire ( "focus" ) ; d && this . addClass ( d ) } ) ; b . on ( "blur" , function ( ) { w . fire ( "blur" ) ; d && this . removeClass ( d ) } ) } } ) ; CKEDITOR . tools . extend ( this , b ) ; this . keyboardFocusable && ( this . tabIndex = b . tabIndex || 0 , this . focusIndex =
this . accessKeyUp && this . accessKeyDown && b . accessKey && F ( this , a , "CTRL+" + b . accessKey ) ; var w = this ; a . on ( "load" , function ( ) { var b = w . getInputElement ( ) ; if ( b ) { var d = w . type in { checkbox : 1 , ratio : 1 } && CKEDITOR . env . ie && 8 > CKEDITOR . env . version ? "cke_dialog_ui_focused" : "" ; b . on ( "focus" , function ( ) { a . _ . tabBarMode = ! 1 ; a . _ . hasFocus = ! 0 ; w . fire ( "focus" ) ; d && this . addClass ( d ) } ) ; b . on ( "blur" , function ( ) { w . fire ( "blur" ) ; d && this . removeClass ( d ) } ) } } ) ; CKEDITOR . tools . extend ( this , b ) ; this . keyboardFocusable && ( this . tabIndex = b . tabIndex || 0 , this . focusIndex =
a . _ . focusList . push ( this ) - 1 , this . on ( "focus" , function ( ) { a . _ . currentFocusIndex = w . focusIndex } ) ) } } , hbox : function ( a , b , d , c , f ) { if ( ! ( 4 > arguments . length ) ) { this . _ || ( this . _ = { } ) ; var h = this . _ . children = b , e = f&& f . widths || null , g = f && f . height || null , k , n = { role : "presentation" } ; f&& f . align && ( n . align = f . align ) ; CKEDITOR . ui . dialog . uiElement . call ( this , a , f || { type : "hbox" } , c , "table" , { } , n , function ( ) { var a = [ '\x3ctbody\x3e\x3ctr class\x3d"cke_dialog_ui_hbox"\x3e' ] ; for ( k = 0 ; k < d . length ; k ++ ) { var b = "cke_dialog_ui_hbox_child" , c = [ ] ; 0 === k &&
a . _ . focusList . push ( this ) - 1 , this . on ( "focus" , function ( ) { a . _ . currentFocusIndex = w . focusIndex } ) ) } } , hbox : function ( a , b , d , c , h ) { if ( ! ( 4 > arguments . length ) ) { this . _ || ( this . _ = { } ) ; var f = this . _ . children = b , e = h&& h . widths || null , g = h && h . height || null , k , n = { role : "presentation" } ; h&& h . align && ( n . align = h . align ) ; CKEDITOR . ui . dialog . uiElement . call ( this , a , h || { type : "hbox" } , c , "table" , { } , n , function ( ) { var a = [ '\x3ctbody\x3e\x3ctr class\x3d"cke_dialog_ui_hbox"\x3e' ] ; for ( k = 0 ; k < d . length ; k ++ ) { var b = "cke_dialog_ui_hbox_child" , c = [ ] ; 0 === k &&
( b = "cke_dialog_ui_hbox_first" ) ; k == d . length - 1 && ( b = "cke_dialog_ui_hbox_last" ) ; a . push ( '\x3ctd class\x3d"' , b , '" role\x3d"presentation" ' ) ; e ? e [ k ] && c . push ( "width:" + t ( e [ k ] ) ) : c . push ( "width:" + Math . floor ( 100 / d . length ) + "%" ) ; g && c . push ( "height:" + t ( g ) ) ; f&& void 0 !== f . padding && c . push ( "padding:" + t ( f . padding ) ) ; CKEDITOR . env . ie && CKEDITOR . env . quirks && h [ k ] . align && c . push ( "text-align:" + h [ k ] . align ) ; 0 < c . length && a . push ( 'style\x3d"' + c . join ( "; " ) + '" ' ) ; a . push ( "\x3e" , d [ k ] , "\x3c/td\x3e" ) } a . push ( "\x3c/tr\x3e\x3c/tbody\x3e" ) ; return a . join ( "" ) } ) } } ,
( b = "cke_dialog_ui_hbox_first" ) ; k == d . length - 1 && ( b = "cke_dialog_ui_hbox_last" ) ; a . push ( '\x3ctd class\x3d"' , b , '" role\x3d"presentation" ' ) ; e ? e [ k ] && c . push ( "width:" + t ( e [ k ] ) ) : c . push ( "width:" + Math . floor ( 100 / d . length ) + "%" ) ; g && c . push ( "height:" + t ( g ) ) ; h&& void 0 !== h . padding && c . push ( "padding:" + t ( h . padding ) ) ; CKEDITOR . env . ie && CKEDITOR . env . quirks && f [ k ] . align && c . push ( "text-align:" + f [ k ] . align ) ; 0 < c . length && a . push ( 'style\x3d"' + c . join ( "; " ) + '" ' ) ; a . push ( "\x3e" , d [ k ] , "\x3c/td\x3e" ) } a . push ( "\x3c/tr\x3e\x3c/tbody\x3e" ) ; return a . join ( "" ) } ) } } ,
vbox : function ( a , b , d , c , f ) { if ( ! ( 3 > arguments . length ) ) { this . _ || ( this . _ = { } ) ; var h = this . _ . children = b , e = f&& f . width || null , g = f && f . heights || null ; CKEDITOR . ui . dialog . uiElement . call ( this , a , f || { type : "vbox" } , c , "div" , null , { role : "presentation" } , function ( ) { var b = [ '\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" ' ] ; b . push ( 'style\x3d"' ) ; f&& f . expand && b . push ( "height:100%;" ) ; b . push ( "width:" + t ( e || "100%" ) , ";" ) ; CKEDITOR . env . webkit && b . push ( "float:none;" ) ; b . push ( '"' ) ; b . push ( 'align\x3d"' , CKEDITOR . tools . htmlEncode ( f &&
vbox : function ( a , b , d , c , h ) { if ( ! ( 3 > arguments . length ) ) { this . _ || ( this . _ = { } ) ; var f = this . _ . children = b , e = h&& h . width || null , g = h && h . heights || null ; CKEDITOR . ui . dialog . uiElement . call ( this , a , h || { type : "vbox" } , c , "div" , null , { role : "presentation" } , function ( ) { var b = [ '\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" ' ] ; b . push ( 'style\x3d"' ) ; h&& h . expand && b . push ( "height:100%;" ) ; b . push ( "width:" + t ( e || "100%" ) , ";" ) ; CKEDITOR . env . webkit && b . push ( "float:none;" ) ; b . push ( '"' ) ; b . push ( 'align\x3d"' , CKEDITOR . tools . htmlEncode ( h &&
f . align || ( "ltr" == a . getParentEditor ( ) . lang . dir ? "left" : "right" ) ) , '" ' ) ; b . push ( "\x3e\x3ctbody\x3e" ) ; for ( var c = 0 ; c < d . length ; c ++ ) { var k = [ ] ; b . push ( '\x3ctr\x3e\x3ctd role\x3d"presentation" ' ) ; e && k . push ( "width:" + t ( e || "100%" ) ) ; g ? k . push ( "height:" + t ( g [ c ] ) ) : f&& f . expand && k . push ( "height:" + Math . floor ( 100 / d . length ) + "%" ) ; f&& void 0 !== f . padding && k . push ( "padding:" + t ( f . padding ) ) ; CKEDITOR . env . ie && CKEDITOR . env . quirks && h [ c ] . align && k . push ( "text-align:" + h [ c ] . align ) ; 0 < k . length && b . push ( 'style\x3d"' , k . join ( "; " ) , '" ' ) ; b . push ( ' class\x3d"cke_dialog_ui_vbox_child"\x3e' ,
h . align || ( "ltr" == a . getParentEditor ( ) . lang . dir ? "left" : "right" ) ) , '" ' ) ; b . push ( "\x3e\x3ctbody\x3e" ) ; for ( var c = 0 ; c < d . length ; c ++ ) { var k = [ ] ; b . push ( '\x3ctr\x3e\x3ctd role\x3d"presentation" ' ) ; e && k . push ( "width:" + t ( e || "100%" ) ) ; g ? k . push ( "height:" + t ( g [ c ] ) ) : h&& h . expand && k . push ( "height:" + Math . floor ( 100 / d . length ) + "%" ) ; h&& void 0 !== h . padding && k . push ( "padding:" + t ( h . padding ) ) ; CKEDITOR . env . ie && CKEDITOR . env . quirks && f [ c ] . align && k . push ( "text-align:" + f [ c ] . align ) ; 0 < k . length && b . push ( 'style\x3d"' , k . join ( "; " ) , '" ' ) ; b . push ( ' class\x3d"cke_dialog_ui_vbox_child"\x3e' ,
d [ c ] , "\x3c/td\x3e\x3c/tr\x3e" ) } b . push ( "\x3c/tbody\x3e\x3c/table\x3e" ) ; return b . join ( "" ) } ) } } } } ) ( ) ; CKEDITOR . ui . dialog . uiElement . prototype = { getElement : function ( ) { return CKEDITOR . document . getById ( this . domId ) } , getInputElement : function ( ) { return this . getElement ( ) } , getDialog : function ( ) { return this . _ . dialog } , setValue : function ( a , b ) { this . getInputElement ( ) . setValue ( a ) ; ! b && this . fire ( "change" , { value : a } ) ; return this } , getValue : function ( ) { return this . getInputElement ( ) . getValue ( ) } , isChanged : function ( ) { return ! 1 } , selectParentTab : function ( ) { for ( var a =
d [ c ] , "\x3c/td\x3e\x3c/tr\x3e" ) } b . push ( "\x3c/tbody\x3e\x3c/table\x3e" ) ; return b . join ( "" ) } ) } } } } ) ( ) ; CKEDITOR . ui . dialog . uiElement . prototype = { getElement : function ( ) { return CKEDITOR . document . getById ( this . domId ) } , getInputElement : function ( ) { return this . getElement ( ) } , getDialog : function ( ) { return this . _ . dialog } , setValue : function ( a , b ) { this . getInputElement ( ) . setValue ( a ) ; ! b && this . fire ( "change" , { value : a } ) ; return this } , getValue : function ( ) { return this . getInputElement ( ) . getValue ( ) } , isChanged : function ( ) { return ! 1 } , selectParentTab : function ( ) { for ( var a =
this . getInputElement ( ) ; ( a = a . getParent ( ) ) && - 1 == a . $ . className . search ( "cke_dialog_page_contents" ) ; ) ; if ( ! a ) return this ; a = a . getAttribute ( "name" ) ; this . _ . dialog . _ . currentTabId != a && this . _ . dialog . selectPage ( a ) ; return this } , focus : function ( ) { this . selectParentTab ( ) . getInputElement ( ) . focus ( ) ; return this } , registerEvents : function ( a ) { var b = /^on([A-Z]\w+)/ , d , c = function ( a , b , d , c ) { b . on ( "load" , function ( ) { a . getInputElement ( ) . on ( d , c , a ) } ) } , f; for ( f in a ) if ( d = f . match ( b ) ) this . eventProcessors [ f] ? this . eventProcessors [ f ] . call ( this ,
this . getInputElement ( ) ; ( a = a . getParent ( ) ) && - 1 == a . $ . className . search ( "cke_dialog_page_contents" ) ; ) ; if ( ! a ) return this ; a = a . getAttribute ( "name" ) ; this . _ . dialog . _ . currentTabId != a && this . _ . dialog . selectPage ( a ) ; return this } , focus : function ( ) { this . selectParentTab ( ) . getInputElement ( ) . focus ( ) ; return this } , registerEvents : function ( a ) { var b = /^on([A-Z]\w+)/ , d , c = function ( a , b , d , c ) { b . on ( "load" , function ( ) { a . getInputElement ( ) . on ( d , c , a ) } ) } , h; for ( h in a ) if ( d = h . match ( b ) ) this . eventProcessors [ h] ? this . eventProcessors [ h ] . call ( this ,
this . _ . dialog , a [ f ] ) : c ( this , this . _ . dialog , d [ 1 ] . toLowerCase ( ) , a [ f ] ) ; return this } , eventProcessors : { onLoad : function ( a , b ) { a . on ( "load" , b , this ) } , onShow : function ( a , b ) { a . on ( "show" , b , this ) } , onHide : function ( a , b ) { a . on ( "hide" , b , this ) } } , accessKeyDown : function ( ) { this . focus ( ) } , accessKeyUp : function ( ) { } , disable : function ( ) { var a = this . getElement ( ) ; this . getInputElement ( ) . setAttribute ( "disabled" , "true" ) ; a . addClass ( "cke_disabled" ) } , enable : function ( ) { var a = this . getElement ( ) ; this . getInputElement ( ) . removeAttribute ( "disabled" ) ;
this . _ . dialog , a [ h ] ) : c ( this , this . _ . dialog , d [ 1 ] . toLowerCase ( ) , a [ h ] ) ; return this } , eventProcessors : { onLoad : function ( a , b ) { a . on ( "load" , b , this ) } , onShow : function ( a , b ) { a . on ( "show" , b , this ) } , onHide : function ( a , b ) { a . on ( "hide" , b , this ) } } , accessKeyDown : function ( ) { this . focus ( ) } , accessKeyUp : function ( ) { } , disable : function ( ) { var a = this . getElement ( ) ; this . getInputElement ( ) . setAttribute ( "disabled" , "true" ) ; a . addClass ( "cke_disabled" ) } , enable : function ( ) { var a = this . getElement ( ) ; this . getInputElement ( ) . removeAttribute ( "disabled" ) ;
a . removeClass ( "cke_disabled" ) } , isEnabled : function ( ) { return ! this . getElement ( ) . hasClass ( "cke_disabled" ) } , isVisible : function ( ) { return this . getInputElement ( ) . isVisible ( ) } , isFocusable : function ( ) { return this . isEnabled ( ) && this . isVisible ( ) ? ! 0 : ! 1 } } ; CKEDITOR . ui . dialog . hbox . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement , { getChild : function ( a ) { if ( 1 > arguments . length ) return this . _ . children . concat ( ) ; a . splice || ( a = [ a ] ) ; return 2 > a . length ? this . _ . children [ a [ 0 ] ] : this . _ . children [ a [ 0 ] ] && this . _ . children [ a [ 0 ] ] . getChild ?
a . removeClass ( "cke_disabled" ) } , isEnabled : function ( ) { return ! this . getElement ( ) . hasClass ( "cke_disabled" ) } , isVisible : function ( ) { return this . getInputElement ( ) . isVisible ( ) } , isFocusable : function ( ) { return this . isEnabled ( ) && this . isVisible ( ) ? ! 0 : ! 1 } } ; CKEDITOR . ui . dialog . hbox . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement , { getChild : function ( a ) { if ( 1 > arguments . length ) return this . _ . children . concat ( ) ; a . splice || ( a = [ a ] ) ; return 2 > a . length ? this . _ . children [ a [ 0 ] ] : this . _ . children [ a [ 0 ] ] && this . _ . children [ a [ 0 ] ] . getChild ?
this . _ . children [ a [ 0 ] ] . getChild ( a . slice ( 1 , a . length ) ) : null } } , ! 0 ) ; CKEDITOR . ui . dialog . vbox . prototype = new CKEDITOR . ui . dialog . hbox ; ( function ( ) { var a = { build : function ( a , b , d ) { for ( var c = b . children , f, h = [ ] , e = [ ] , g = 0 ; g < c . length && ( f = c [ g ] ) ; g ++ ) { var k = [ ] ; h . push ( k ) ; e . push ( CKEDITOR . dialog . _ . uiElementBuilders [ f. type ] . build ( a , f , k ) ) } return new CKEDITOR . ui . dialog [ b . type ] ( a , e , h , d , b ) } } ; CKEDITOR . dialog . addUIElement ( "hbox" , a ) ; CKEDITOR . dialog . addUIElement ( "vbox" , a ) } ) ( ) ; CKEDITOR . dialogCommand = function ( a , b ) { this . dialogName = a ;
this . _ . children [ a [ 0 ] ] . getChild ( a . slice ( 1 , a . length ) ) : null } } , ! 0 ) ; CKEDITOR . ui . dialog . vbox . prototype = new CKEDITOR . ui . dialog . hbox ; ( function ( ) { var a = { build : function ( a , b , d ) { for ( var c = b . children , h, f = [ ] , e = [ ] , g = 0 ; g < c . length && ( h = c [ g ] ) ; g ++ ) { var k = [ ] ; f . push ( k ) ; e . push ( CKEDITOR . dialog . _ . uiElementBuilders [ h. type ] . build ( a , h , k ) ) } return new CKEDITOR . ui . dialog [ b . type ] ( a , e , f , d , b ) } } ; CKEDITOR . dialog . addUIElement ( "hbox" , a ) ; CKEDITOR . dialog . addUIElement ( "vbox" , a ) } ) ( ) ; CKEDITOR . dialogCommand = function ( a , b ) { this . dialogName = a ;
CKEDITOR . tools . extend ( this , b , ! 0 ) } ; CKEDITOR . dialogCommand . prototype = { exec : function ( a ) { a . openDialog ( this . dialogName ) } , canUndo : ! 1 , editorFocus : 1 } ; ( function ( ) { var a = /^([a]|[^a])+$/ , b = /^\d*$/ , d = /^\d*(?:\.\d+)?$/ , c = /^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/ , f= /^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i , h = /^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/ ; CKEDITOR . VALIDATE _OR = 1 ; CKEDITOR . VALIDATE _AND = 2 ; CKEDITOR . dialog . validate = { functions : function ( ) { var a = arguments ; return function ( ) { var b = this && this . getValue ? this . getValue ( ) :
CKEDITOR . tools . extend ( this , b , ! 0 ) } ; CKEDITOR . dialogCommand . prototype = { exec : function ( a ) { a . openDialog ( this . dialogName ) } , canUndo : ! 1 , editorFocus : 1 } ; ( function ( ) { var a = /^([a]|[^a])+$/ , b = /^\d*$/ , d = /^\d*(?:\.\d+)?$/ , c = /^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/ , h= /^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i , f = /^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/ ; CKEDITOR . VALIDATE _OR = 1 ; CKEDITOR . VALIDATE _AND = 2 ; CKEDITOR . dialog . validate = { functions : function ( ) { var a = arguments ; return function ( ) { var b = this && this . getValue ? this . getValue ( ) :
a [ 0 ] , d , c = CKEDITOR . VALIDATE _AND , f= [ ] , h ; for ( h = 0 ; h < a . length ; h ++ ) if ( "function" == typeof a [ h] ) f . push ( a [ h ] ) ; else break ; h < a . length && "string" == typeof a [ h] && ( d = a [ h ] , h ++ ) ; h < a . length && "number" == typeof a [ h] && ( c = a [ h ] ) ; var e = c == CKEDITOR . VALIDATE _AND ? ! 0 : ! 1 ; for ( h= 0 ; h < f . length ; h ++ ) e = c == CKEDITOR . VALIDATE _AND ? e && f[ h ] ( b ) : e || f [ h ] ( b ) ; return e ? ! 0 : d } } , regex : function ( a , b ) { return function ( d ) { d = this && this . getValue ? this . getValue ( ) : d ; return a . test ( d ) ? ! 0 : b } } , notEmpty : function ( b ) { return this . regex ( a , b ) } , integer : function ( a ) { return this . regex ( b ,
a [ 0 ] , d , c = CKEDITOR . VALIDATE _AND , h= [ ] , f ; for ( f = 0 ; f < a . length ; f ++ ) if ( "function" == typeof a [ f] ) h . push ( a [ f ] ) ; else break ; f < a . length && "string" == typeof a [ f] && ( d = a [ f ] , f ++ ) ; f < a . length && "number" == typeof a [ f] && ( c = a [ f ] ) ; var e = c == CKEDITOR . VALIDATE _AND ? ! 0 : ! 1 ; for ( f= 0 ; f < h . length ; f ++ ) e = c == CKEDITOR . VALIDATE _AND ? e && h[ f ] ( b ) : e || h [ f ] ( b ) ; return e ? ! 0 : d } } , regex : function ( a , b ) { return function ( d ) { d = this && this . getValue ? this . getValue ( ) : d ; return a . test ( d ) ? ! 0 : b } } , notEmpty : function ( b ) { return this . regex ( a , b ) } , integer : function ( a ) { return this . regex ( b ,
a ) } , number : function ( a ) { return this . regex ( d , a ) } , cssLength : function ( a ) { return this . functions ( function ( a ) { return f . test ( CKEDITOR . tools . trim ( a ) ) } , a ) } , htmlLength : function ( a ) { return this . functions ( function ( a ) { return c . test ( CKEDITOR . tools . trim ( a ) ) } , a ) } , inlineStyle : function ( a ) { return this . functions ( function ( a ) { return h . test ( CKEDITOR . tools . trim ( a ) ) } , a ) } , equals : function ( a , b ) { return this . functions ( function ( b ) { return b == a } , b ) } , notEqual : function ( a , b ) { return this . functions ( function ( b ) { return b != a } , b ) } } ; CKEDITOR . on ( "instanceDestroyed" ,
a ) } , number : function ( a ) { return this . regex ( d , a ) } , cssLength : function ( a ) { return this . functions ( function ( a ) { return h . test ( CKEDITOR . tools . trim ( a ) ) } , a ) } , htmlLength : function ( a ) { return this . functions ( function ( a ) { return c . test ( CKEDITOR . tools . trim ( a ) ) } , a ) } , inlineStyle : function ( a ) { return this . functions ( function ( a ) { return f . test ( CKEDITOR . tools . trim ( a ) ) } , a ) } , equals : function ( a , b ) { return this . functions ( function ( b ) { return b == a } , b ) } , notEqual : function ( a , b ) { return this . functions ( function ( b ) { return b != a } , b ) } } ; CKEDITOR . on ( "instanceDestroyed" ,
function ( a ) { if ( CKEDITOR . tools . isEmpty ( CKEDITOR . instances ) ) { for ( var b ; b = CKEDITOR . dialog . _ . currentTop ; ) b . hide ( ) ; for ( var d in B ) B [ d ] . remove ( ) ; B = { } } a = a . editor . _ . storedDialogs ; for ( var c in a ) a [ c ] . destroy ( ) } ) } ) ( ) ; CKEDITOR . tools . extend ( CKEDITOR . editor . prototype , { openDialog : function ( a , b ) { var d = null , c = CKEDITOR . dialog . _ . dialogDefinitions [ a ] ; null === CKEDITOR . dialog . _ . currentTop && v ( this ) ; if ( "function" == typeof c ) d = this . _ . storedDialogs || ( this . _ . storedDialogs = { } ) , d = d [ a ] || ( d [ a ] = new CKEDITOR . dialog ( this , a ) ) , b && b . call ( d ,
function ( a ) { if ( CKEDITOR . tools . isEmpty ( CKEDITOR . instances ) ) { for ( var b ; b = CKEDITOR . dialog . _ . currentTop ; ) b . hide ( ) ; for ( var d in B ) B [ d ] . remove ( ) ; B = { } } a = a . editor . _ . storedDialogs ; for ( var c in a ) a [ c ] . destroy ( ) } ) } ) ( ) ; CKEDITOR . tools . extend ( CKEDITOR . editor . prototype , { openDialog : function ( a , b ) { var d = null , c = CKEDITOR . dialog . _ . dialogDefinitions [ a ] ; null === CKEDITOR . dialog . _ . currentTop && v ( this ) ; if ( "function" == typeof c ) d = this . _ . storedDialogs || ( this . _ . storedDialogs = { } ) , d = d [ a ] || ( d [ a ] = new CKEDITOR . dialog ( this , a ) ) , b && b . call ( d ,
d ) , d . show ( ) ; else { if ( "failed" == c ) throw u ( this ) , Error ( '[CKEDITOR.dialog.openDialog] Dialog "' + a + '" failed when loading definition.' ) ; "string" == typeof c && CKEDITOR . scriptLoader . load ( CKEDITOR . getUrl ( c ) , function ( ) { "function" != typeof CKEDITOR . dialog . _ . dialogDefinitions [ a ] && ( CKEDITOR . dialog . _ . dialogDefinitions [ a ] = "failed" ) ; this . openDialog ( a , b ) } , this , 0 , 1 ) } CKEDITOR . skin . loadPart ( "dialog" ) ; return d } } ) } ( ) , CKEDITOR . plugins . add ( "dialog" , { requires : "dialogui" , init : function ( a ) { a . on ( "doubleclick" , function ( e ) { e . data . dialog &&
d ) , d . show ( ) ; else { if ( "failed" == c ) throw u ( this ) , Error ( '[CKEDITOR.dialog.openDialog] Dialog "' + a + '" failed when loading definition.' ) ; "string" == typeof c && CKEDITOR . scriptLoader . load ( CKEDITOR . getUrl ( c ) , function ( ) { "function" != typeof CKEDITOR . dialog . _ . dialogDefinitions [ a ] && ( CKEDITOR . dialog . _ . dialogDefinitions [ a ] = "failed" ) ; this . openDialog ( a , b ) } , this , 0 , 1 ) } CKEDITOR . skin . loadPart ( "dialog" ) ; return d } } ) } ( ) , CKEDITOR . plugins . add ( "dialog" , { requires : "dialogui" , init : function ( a ) { a . on ( "doubleclick" , function ( e ) { e . data . dialog &&
a . openDialog ( e . data . dialog ) } , null , null , 999 ) } } ) , CKEDITOR . plugins . add ( "about" , { requires : "dialog" , init : function ( a ) { var e = a . addCommand ( "about" , new CKEDITOR . dialogCommand ( "about" ) ) ; e . modes = { wysiwyg : 1 , source : 1 } ; e . canUndo = ! 1 ; e . readOnly = 1 ; a . ui . addButton && a . ui . addButton ( "About" , { label : a . lang . about . title , command : "about" , toolbar : "about" } ) ; CKEDITOR . dialog . add ( "about" , this . path + "dialogs/about.js" ) } } ) , function ( ) { CKEDITOR . plugins . add ( "a11yhelp" , { requires : "dialog" , availableLangs : { af : 1 , ar : 1 , bg : 1 , ca : 1 , cs : 1 , cy : 1 , da : 1 ,
a . openDialog ( e . data . dialog ) } , null , null , 999 ) } } ) , CKEDITOR . plugins . add ( "about" , { requires : "dialog" , init : function ( a ) { var e = a . addCommand ( "about" , new CKEDITOR . dialogCommand ( "about" ) ) ; e . modes = { wysiwyg : 1 , source : 1 } ; e . canUndo = ! 1 ; e . readOnly = 1 ; a . ui . addButton && a . ui . addButton ( "About" , { label : a . lang . about . title , command : "about" , toolbar : "about" } ) ; CKEDITOR . dialog . add ( "about" , this . path + "dialogs/about.js" ) } } ) , function ( ) { CKEDITOR . plugins . add ( "a11yhelp" , { requires : "dialog" , availableLangs : { af : 1 , ar : 1 , bg : 1 , ca : 1 , cs : 1 , cy : 1 , da : 1 ,
de : 1 , el : 1 , en : 1 , "en-gb" : 1 , eo : 1 , es : 1 , et : 1 , fa: 1 , fi : 1 , fo : 1 , fr : 1 , "fr-ca" : 1 , gl : 1 , gu : 1 , he : 1 , hi : 1 , hr : 1 , hu : 1 , id : 1 , it : 1 , ja : 1 , km : 1 , ko : 1 , ku : 1 , lt : 1 , lv : 1 , mk : 1 , mn : 1 , nb : 1 , nl : 1 , no : 1 , pl : 1 , pt : 1 , "pt-br" : 1 , ro : 1 , ru : 1 , si : 1 , sk : 1 , sl : 1 , sq : 1 , sr : 1 , "sr-latn" : 1 , sv : 1 , th : 1 , tr : 1 , tt : 1 , ug : 1 , uk : 1 , vi : 1 , zh : 1 , "zh-cn" : 1 } , init : function ( a ) { var e = this ; a . addCommand ( "a11yHelp" , { exec : function ( ) { var c = a . langCode , c = e . availableLangs [ c ] ? c : e . availableLangs [ c . replace ( /-.*/ , "" ) ] ? c . replace ( /-.*/ , "" ) : "en" ; CKEDITOR . scriptLoader . load ( CKEDITOR . getUrl ( e . path +
de : 1 , el : 1 , en : 1 , "en-gb" : 1 , eo : 1 , es : 1 , et : 1 , eu: 1 , fa: 1 , fi : 1 , fo : 1 , fr : 1 , "fr-ca" : 1 , gl : 1 , gu : 1 , he : 1 , hi : 1 , hr : 1 , hu : 1 , id : 1 , it : 1 , ja : 1 , km : 1 , ko : 1 , ku : 1 , lt : 1 , lv : 1 , mk : 1 , mn : 1 , nb : 1 , nl : 1 , no : 1 , pl : 1 , pt : 1 , "pt-br" : 1 , ro : 1 , ru : 1 , si : 1 , sk : 1 , sl : 1 , sq : 1 , sr : 1 , "sr-latn" : 1 , sv : 1 , th : 1 , tr : 1 , tt : 1 , ug : 1 , uk : 1 , vi : 1 , zh : 1 , "zh-cn" : 1 } , init : function ( a ) { var e = this ; a . addCommand ( "a11yHelp" , { exec : function ( ) { var c = a . langCode , c = e . availableLangs [ c ] ? c : e . availableLangs [ c . replace ( /-.*/ , "" ) ] ? c . replace ( /-.*/ , "" ) : "en" ; CKEDITOR . scriptLoader . load ( CKEDITOR . getUrl ( e . path +
"dialogs/lang/" + c + ".js" ) , function ( ) { a . lang . a11yhelp = e . langEntries [ c ] ; a . openDialog ( "a11yHelp" ) } ) } , modes : { wysiwyg : 1 , source : 1 } , readOnly : 1 , canUndo : ! 1 } ) ; a . setKeystroke ( CKEDITOR . ALT + 48 , "a11yHelp" ) ; CKEDITOR . dialog . add ( "a11yHelp" , this . path + "dialogs/a11yhelp.js" ) ; a . on ( "ariaEditorHelpLabel" , function ( c ) { c . data . label = a . lang . common . editorHelp } ) } } ) } ( ) , CKEDITOR . plugins . add ( "basicstyles" , { init : function ( a ) { var e = 0 , c = function ( c , f , b , d ) { if ( d ) { d = new CKEDITOR . style ( d ) ; var h = g [ b ] ; h . unshift ( d ) ; a . attachStyleStateChange ( d ,
"dialogs/lang/" + c + ".js" ) , function ( ) { a . lang . a11yhelp = e . langEntries [ c ] ; a . openDialog ( "a11yHelp" ) } ) } , modes : { wysiwyg : 1 , source : 1 } , readOnly : 1 , canUndo : ! 1 } ) ; a . setKeystroke ( CKEDITOR . ALT + 48 , "a11yHelp" ) ; CKEDITOR . dialog . add ( "a11yHelp" , this . path + "dialogs/a11yhelp.js" ) ; a . on ( "ariaEditorHelpLabel" , function ( c ) { c . data . label = a . lang . common . editorHelp } ) } } ) } ( ) , CKEDITOR . plugins . add ( "basicstyles" , { init : function ( a ) { var e = 0 , c = function ( c , f , b , d ) { if ( d ) { d = new CKEDITOR . style ( d ) ; var h = g [ b ] ; h . unshift ( d ) ; a . attachStyleStateChange ( d ,
function ( d ) { ! a . readOnly && a . getCommand ( b ) . setState ( d ) } ) ; a . addCommand ( b , new CKEDITOR . styleCommand ( d , { contentForms : h } ) ) ; a . ui . addButton && a . ui . addButton ( c , { label : f , command : b , toolbar : "basicstyles," + ( e += 10 ) } ) } } , g = { bold : [ "strong" , "b" , [ "span" , function ( a ) { a = a . styles [ "font-weight" ] ; return "bold" == a || 700 <= + a } ] ] , italic : [ "em" , "i" , [ "span" , function ( a ) { return "italic" == a . styles [ "font-style" ] } ] ] , underline : [ "u" , [ "span" , function ( a ) { return "underline" == a . styles [ "text-decoration" ] } ] ] , strike : [ "s" , "strike" , [ "span" , function ( a ) { return "line-through" ==
function ( d ) { ! a . readOnly && a . getCommand ( b ) . setState ( d ) } ) ; a . addCommand ( b , new CKEDITOR . styleCommand ( d , { contentForms : h } ) ) ; a . ui . addButton && a . ui . addButton ( c , { label : f , command : b , toolbar : "basicstyles," + ( e += 10 ) } ) } } , g = { bold : [ "strong" , "b" , [ "span" , function ( a ) { a = a . styles [ "font-weight" ] ; return "bold" == a || 700 <= + a } ] ] , italic : [ "em" , "i" , [ "span" , function ( a ) { return "italic" == a . styles [ "font-style" ] } ] ] , underline : [ "u" , [ "span" , function ( a ) { return "underline" == a . styles [ "text-decoration" ] } ] ] , strike : [ "s" , "strike" , [ "span" , function ( a ) { return "line-through" ==
a . styles [ "text-decoration" ] } ] ] , subscript : [ "sub" ] , superscript : [ "sup" ] } , f = a . config , m = a . lang . basicstyles ; c ( "Bold" , m . bold , "bold" , f . coreStyles _bold ) ; c ( "Italic" , m . italic , "italic" , f . coreStyles _italic ) ; c ( "Underline" , m . underline , "underline" , f . coreStyles _underline ) ; c ( "Strike" , m . strike , "strike" , f . coreStyles _strike ) ; c ( "Subscript" , m . subscript , "subscript" , f . coreStyles _subscript ) ; c ( "Superscript" , m . superscript , "superscript" , f . coreStyles _superscript ) ; a . setKeystroke ( [ [ CKEDITOR . CTRL + 66 , "bold" ] , [ CKEDITOR . CTRL + 73 , "italic" ] ,
a . styles [ "text-decoration" ] } ] ] , subscript : [ "sub" ] , superscript : [ "sup" ] } , f = a . config , m = a . lang . basicstyles ; c ( "Bold" , m . bold , "bold" , f . coreStyles _bold ) ; c ( "Italic" , m . italic , "italic" , f . coreStyles _italic ) ; c ( "Underline" , m . underline , "underline" , f . coreStyles _underline ) ; c ( "Strike" , m . strike , "strike" , f . coreStyles _strike ) ; c ( "Subscript" , m . subscript , "subscript" , f . coreStyles _subscript ) ; c ( "Superscript" , m . superscript , "superscript" , f . coreStyles _superscript ) ; a . setKeystroke ( [ [ CKEDITOR . CTRL + 66 , "bold" ] , [ CKEDITOR . CTRL + 73 , "italic" ] ,
@ -579,70 +579,70 @@ c.getParent()}f&&l&&!l.getCustomData("blockquote_moveout")&&(k.push(l),CKEDITOR.
for ( k = l . length - 1 ; 0 <= k ; k -- ) { f = l [ k ] ; a : { b = f ; for ( var d = 0 , h = b . getChildCount ( ) , p = void 0 ; d < h && ( p = b . getChild ( d ) ) ; d ++ ) if ( p . type == CKEDITOR . NODE _ELEMENT && p . isBlockBoundary ( ) ) { b = ! 1 ; break a } b = ! 0 } b && f . remove ( ) } if ( a . config . enterMode == CKEDITOR . ENTER _BR ) for ( f = ! 0 ; c . length ; ) if ( d = c . shift ( ) , "div" == d . getName ( ) ) { k = new CKEDITOR . dom . documentFragment ( a . document ) ; ! f || ! d . getPrevious ( ) || d . getPrevious ( ) . type == CKEDITOR . NODE _ELEMENT && d . getPrevious ( ) . isBlockBoundary ( ) || k . append ( a . document . createElement ( "br" ) ) ; for ( f = d . getNext ( ) &&
for ( k = l . length - 1 ; 0 <= k ; k -- ) { f = l [ k ] ; a : { b = f ; for ( var d = 0 , h = b . getChildCount ( ) , p = void 0 ; d < h && ( p = b . getChild ( d ) ) ; d ++ ) if ( p . type == CKEDITOR . NODE _ELEMENT && p . isBlockBoundary ( ) ) { b = ! 1 ; break a } b = ! 0 } b && f . remove ( ) } if ( a . config . enterMode == CKEDITOR . ENTER _BR ) for ( f = ! 0 ; c . length ; ) if ( d = c . shift ( ) , "div" == d . getName ( ) ) { k = new CKEDITOR . dom . documentFragment ( a . document ) ; ! f || ! d . getPrevious ( ) || d . getPrevious ( ) . type == CKEDITOR . NODE _ELEMENT && d . getPrevious ( ) . isBlockBoundary ( ) || k . append ( a . document . createElement ( "br" ) ) ; for ( f = d . getNext ( ) &&
! ( d . getNext ( ) . type == CKEDITOR . NODE _ELEMENT && d . getNext ( ) . isBlockBoundary ( ) ) ; d . getFirst ( ) ; ) d . getFirst ( ) . remove ( ) . appendTo ( k ) ; f && k . append ( a . document . createElement ( "br" ) ) ; k . replace ( d ) ; f = ! 1 } } g . selectBookmarks ( m ) ; a . focus ( ) } } , refresh : function ( a , c ) { this . setState ( a . elementPath ( c . block || c . blockLimit ) . contains ( "blockquote" , 1 ) ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) } , context : "blockquote" , allowedContent : "blockquote" , requiredContent : "blockquote" } ; CKEDITOR . plugins . add ( "blockquote" , { init : function ( e ) { e . blockless ||
! ( d . getNext ( ) . type == CKEDITOR . NODE _ELEMENT && d . getNext ( ) . isBlockBoundary ( ) ) ; d . getFirst ( ) ; ) d . getFirst ( ) . remove ( ) . appendTo ( k ) ; f && k . append ( a . document . createElement ( "br" ) ) ; k . replace ( d ) ; f = ! 1 } } g . selectBookmarks ( m ) ; a . focus ( ) } } , refresh : function ( a , c ) { this . setState ( a . elementPath ( c . block || c . blockLimit ) . contains ( "blockquote" , 1 ) ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) } , context : "blockquote" , allowedContent : "blockquote" , requiredContent : "blockquote" } ; CKEDITOR . plugins . add ( "blockquote" , { init : function ( e ) { e . blockless ||
( e . addCommand ( "blockquote" , a ) , e . ui . addButton && e . ui . addButton ( "Blockquote" , { label : e . lang . blockquote . toolbar , command : "blockquote" , toolbar : "blocks,10" } ) ) } } ) } ( ) , "use strict" , function ( ) { function a ( a , b , d ) { b . type || ( b . type = "auto" ) ; if ( d && ! 1 === a . fire ( "beforePaste" , b ) || ! b . dataValue && b . dataTransfer . isEmpty ( ) ) return ! 1 ; b . dataValue || ( b . dataValue = "" ) ; if ( CKEDITOR . env . gecko && "drop" == b . method && a . toolbox ) a . once ( "afterPaste" , function ( ) { a . toolbox . focus ( ) } ) ; return a . fire ( "paste" , b ) } function e ( b ) { function d ( ) { var a = b . editable ( ) ;
( e . addCommand ( "blockquote" , a ) , e . ui . addButton && e . ui . addButton ( "Blockquote" , { label : e . lang . blockquote . toolbar , command : "blockquote" , toolbar : "blocks,10" } ) ) } } ) } ( ) , "use strict" , function ( ) { function a ( a , b , d ) { b . type || ( b . type = "auto" ) ; if ( d && ! 1 === a . fire ( "beforePaste" , b ) || ! b . dataValue && b . dataTransfer . isEmpty ( ) ) return ! 1 ; b . dataValue || ( b . dataValue = "" ) ; if ( CKEDITOR . env . gecko && "drop" == b . method && a . toolbox ) a . once ( "afterPaste" , function ( ) { a . toolbox . focus ( ) } ) ; return a . fire ( "paste" , b ) } function e ( b ) { function d ( ) { var a = b . editable ( ) ;
if ( CKEDITOR . plugins . clipboard . isCustomCopyCutSupported ) { var c = function ( a ) { z. initPasteDataTransfer ( a , b ) ; a . data . preventDefault ( ) } ; a . on ( "copy" , c ) ; a . on ( "cut" , c ) ; a . on ( "cut" , function ( ) { b . extractSelectedHtml ( ) } , null , null , 999 ) } a . on ( z . mainPasteEvent , function ( a ) { "beforepaste" == z . mainPasteEvent && D || x ( a ) } ) ; "beforepaste" == z . mainPasteEvent && ( a . on ( "paste" , function ( a ) { G || ( e ( ) , a . data . preventDefault ( ) , x ( a ) , k ( "paste" ) || b . openDialog ( "paste" ) ) } ) , a . on ( "contextmenu" , g , null , null , 0 ) , a . on ( "beforepaste" , function ( a ) { ! a . data ||
if ( CKEDITOR . plugins . clipboard . isCustomCopyCutSupported ) { var c = function ( a ) { b. readOnly && "cut" == a . name || z. initPasteDataTransfer ( a , b ) ; a . data . preventDefault ( ) } ; a . on ( "copy" , c ) ; a . on ( "cut" , c ) ; a . on ( "cut" , function ( ) { b . readOnly || b . extractSelectedHtml ( ) } , null , null , 999 ) } a . on ( z . mainPasteEvent , function ( a ) { "beforepaste" == z . mainPasteEvent && D || x ( a ) } ) ; "beforepaste" == z . mainPasteEvent && ( a . on ( "paste" , function ( a ) { G || ( e ( ) , a . data . preventDefault ( ) , x ( a ) , k ( "paste" ) || b . openDialog ( "paste" ) ) } ) , a . on ( "contextmenu" , g , null , null , 0 ) ,
a . data . $ . ctrlKey || a . data . $ . shiftKey || g ( ) } , null , null , 0 ) ) ; a . on ( "beforecut" , function ( ) { ! D && l ( b ) } ) ; var f ; a . attachListener ( CKEDITOR . env . ie ? a : b . document . getDocumentElement ( ) , "mouseup" , function ( ) { f = setTimeout ( function ( ) { B ( ) } , 0 ) } ) ; b . on ( "destroy" , function ( ) { clearTimeout ( f ) } ) ; a . on ( "keyup" , B ) } function c ( a ) { return { type : a , canUndo : "cut" == a , startDisabled : ! 0 , exec : function ( ) { "cut" == this . type && l ( ) ; var a ; var d = this . type ; if ( CKEDITOR . env . ie ) a = k ( d ) ; else try { a = b . document . $ . execCommand ( d , ! 1 , null ) } catch ( c ) { a = ! 1 } a || b . showNotification ( b . lang . clipboard [ this . type +
a . on ( "beforepaste" , function ( a ) { ! a . data || a . data . $ . ctrlKey || a . data . $ . shiftKey || g ( ) } , null , null , 0 ) ) ; a . on ( "beforecut" , function ( ) { ! D && l ( b ) } ) ; var f ; a . attachListener ( CKEDITOR . env . ie ? a : b . document . getDocumentElement ( ) , "mouseup" , function ( ) { f = setTimeout ( function ( ) { B ( ) } , 0 ) } ) ; b . on ( "destroy" , function ( ) { clearTimeout ( f ) } ) ; a . on ( "keyup" , B ) } function c ( a ) { return { type : a , canUndo : "cut" == a , startDisabled : ! 0 , exec : function ( ) { "cut" == this . type && l ( ) ; var a ; var d = this . type ; if ( CKEDITOR . env . ie ) a = k ( d ) ; else try { a = b . document . $ . execCommand ( d ,
"Error" ] ) ; return a } } } function f ( ) { return { canUndo : ! 1 , async : ! 0 , exec : function ( b , d ) { var c = function ( d , c ) { d && a ( b , d , ! ! c ) ; b . fire ( "afterCommandExec" , { name : "paste" , command : f , returnValue : ! ! d } ) } , f = this ; "string" == typeof d ? c ( { dataValue : d , method : "paste" , dataTransfer : z . initPasteDataTransfer ( ) } , 1 ) : b . getClipboardData ( c ) } } } function e ( ) { G = 1 ; setTimeout ( function ( ) { G = 0 } , 100 ) } function g ( ) { D = 1 ; setTimeout ( function ( ) { D = 0 } , 10 ) } function k ( a ) { var d = b . document , c = d . getBody ( ) , f = ! 1 , e = function ( ) { f = ! 0 } ; c . on ( a , e ) ; 7 < CKEDITOR . env . version ?
! 1 , null ) } catch ( c ) { a = ! 1 } a || b . showNotification ( b . lang . clipboard [ this . type + "Error" ] ) ; return a } } } function f ( ) { return { canUndo : ! 1 , async : ! 0 , exec : function ( b , d ) { var c = function ( d , c ) { d && a ( b , d , ! ! c ) ; b . fire ( "afterCommandExec" , { name : "paste" , command : f , returnValue : ! ! d } ) } , f = this ; "string" == typeof d ? c ( { dataValue : d , method : "paste" , dataTransfer : z . initPasteDataTransfer ( ) } , 1 ) : b . getClipboardData ( c ) } } } function e ( ) { G = 1 ; setTimeout ( function ( ) { G = 0 } , 100 ) } function g ( ) { D = 1 ; setTimeout ( function ( ) { D = 0 } , 10 ) } function k ( a ) { var d = b . document ,
d . $ . execCommand ( a ) : d . $ . selection . createRange ( ) . execCommand ( a ) ; c . removeListener ( a , e ) ; return f } function l ( ) { if ( CKEDITOR . env . ie && ! CKEDITOR . env . quirks ) { var a = b . getSelection ( ) , d , c , f ; a . getType ( ) == CKEDITOR . SELECTION _ELEMENT && ( d = a . getSelectedElement ( ) ) && ( c = a . getRanges ( ) [ 0 ] , f = b . document . createText ( "" ) , f . insertBefore ( d ) , c . setStartBefore ( f ) , c . setEndAfter ( d ) , a . selectRanges ( [ c ] ) , setTimeout ( function ( ) { d . getParent ( ) && ( f . remove ( ) , a . selectElement ( d ) ) } , 0 ) ) } } function m ( a , d ) { var c = b . document , f = b . editable ( ) , e = function ( a ) { a . cancel ( ) } ,
c = d . getBody ( ) , f = ! 1 , e = function ( ) { f = ! 0 } ; c . on ( a , e ) ; 7 < CKEDITOR . env . version ? d . $ . execCommand ( a ) : d . $ . selection . createRange ( ) . execCommand ( a ) ; c . removeListener ( a , e ) ; return f } function l ( ) { if ( CKEDITOR . env . ie && ! CKEDITOR . env . quirks ) { var a = b . getSelection ( ) , d , c , f ; a . getType ( ) == CKEDITOR . SELECTION _ELEMENT && ( d = a . getSelectedElement ( ) ) && ( c = a . getRanges ( ) [ 0 ] , f = b . document . createText ( "" ) , f . insertBefore ( d ) , c . setStartBefore ( f ) , c . setEndAfter ( d ) , a . selectRanges ( [ c ] ) , setTimeout ( function ( ) { d . getParent ( ) && ( f . remove ( ) , a . selectElement ( d ) ) } ,
g ; if ( ! c . getById ( "cke_pastebin" ) ) { var k = b . getSelection ( ) , n = k . createBookmarks ( ) ; CKEDITOR . env . ie && k . root . fire ( "selectionchange" ) ; var l = new CKEDITOR . dom . element ( ! CKEDITOR . env . webkit && ! f . is ( "body" ) || CKEDITOR . env . ie ? "div" : "body" , c ) ; l . setAttributes ( { id : "cke_pastebin" , "data-cke-temp" : "1" } ) ; var p = 0 , c = c . getWindow ( ) ; CKEDITOR . env . webkit ? ( f . append ( l) , l . addClass ( "cke_editable" ) , f . is ( "body" ) || ( p = "static" != f . getComputedStyle ( "position" ) ? f : CKEDITOR . dom . element . get ( f . $ . offsetParent ) , p = p . getDocumentPosition ( ) . y ) ) : f . getAscendant ( CKEDITOR . env . ie ?
0 ) ) } } function m ( a , d ) { var c = b . document , f = b . editable ( ) , e = function ( a ) { a . cancel ( ) } , g ; if ( ! c . getById ( "cke_pastebin" ) ) { var k = b . getSelection ( ) , n = k . createBookmarks ( ) ; CKEDITOR . env . ie && k . root . fire ( "selectionchange" ) ; var p = new CKEDITOR . dom . element ( ! CKEDITOR . env . webkit && ! f . is ( "body" ) || CKEDITOR . env . ie ? "div" : "body" , c ) ; p . setAttributes ( { id : "cke_pastebin" , "data-cke-temp" : "1" } ) ; var l = 0 , c = c . getWindow ( ) ; CKEDITOR . env . webkit ? ( f . append ( p) , p . addClass ( "cke_editable" ) , f . is ( "body" ) || ( l = "static" != f . getComputedStyle ( "position" ) ?
"body" : "html" , 1 ) . append ( l) ; l . setStyles ( { position : "absolute" , top : c . getScrollPosition ( ) . y - p + 10 + "px" , width : "1px" , height : Math . max ( 1 , c . getViewPaneSize ( ) . height - 20 ) + "px" , overflow : "hidden" , margin : 0 , padding : 0 } ) ; CKEDITOR . env . safari && l . setStyles ( CKEDITOR . tools . cssVendorPrefix ( "user-select" , "text" ) ) ; ( p= l . getParent ( ) . isReadOnly ( ) ) ? ( l. setOpacity ( 0 ) , l . setAttribute ( "contenteditable" , ! 0 ) ) : l . setStyle ( "ltr" == b . config . contentsLangDirection ? "left" : "right" , "-1000px" ) ; b . on ( "selectionChange" , e , null , null , 0 ) ; if ( CKEDITOR . env . webkit ||
f : CKEDITOR . dom . element . get ( f . $ . offsetParent ) , l = l . getDocumentPosition ( ) . y ) ) : f . getAscendant ( CKEDITOR . env . ie ? "body" : "html" , 1 ) . append ( p) ; p . setStyles ( { position : "absolute" , top : c . getScrollPosition ( ) . y - l + 10 + "px" , width : "1px" , height : Math . max ( 1 , c . getViewPaneSize ( ) . height - 20 ) + "px" , overflow : "hidden" , margin : 0 , padding : 0 } ) ; CKEDITOR . env . safari && p . setStyles ( CKEDITOR . tools . cssVendorPrefix ( "user-select" , "text" ) ) ; ( l= p . getParent ( ) . isReadOnly ( ) ) ? ( p. setOpacity ( 0 ) , p . setAttribute ( "contenteditable" , ! 0 ) ) : p . setStyle ( "ltr" == b . config . contentsLangDirection ?
CKEDITOR . env . gecko ) g = f . once ( "blur" , e , null , null , - 100 ) ; p&& l . focus ( ) ; p = new CKEDITOR . dom . range ( l ) ; p . selectNodeContents ( l ) ; var t = p . select ( ) ; CKEDITOR . env . ie && ( g = f . once ( "blur" , function ( ) { b . lockSelection ( t ) } ) ) ; var q = CKEDITOR . document . getWindow ( ) . getScrollPosition ( ) . y ; setTimeout ( function ( ) { CKEDITOR . env . webkit && ( CKEDITOR . document . getBody ( ) . $ . scrollTop = q ) ; g && g . removeListener ( ) ; CKEDITOR . env . ie && f . focus ( ) ; k . selectBookmarks ( n ) ; l . remove ( ) ; var a ; CKEDITOR . env . webkit && ( a = l . getFirst ( ) ) && a . is && a . hasClass ( "Apple-style-span" ) &&
"left" : "right" , "-1000px" ) ; b . on ( "selectionChange" , e , null , null , 0 ) ; if ( CKEDITOR . env . webkit || CKEDITOR . env . gecko ) g = f . once ( "blur" , e , null , null , - 100 ) ; l&& p . focus ( ) ; l = new CKEDITOR . dom . range ( p ) ; l . selectNodeContents ( p ) ; var t = l . select ( ) ; CKEDITOR . env . ie && ( g = f . once ( "blur" , function ( ) { b . lockSelection ( t ) } ) ) ; var q = CKEDITOR . document . getWindow ( ) . getScrollPosition ( ) . y ; setTimeout ( function ( ) { CKEDITOR . env . webkit && ( CKEDITOR . document . getBody ( ) . $ . scrollTop = q ) ; g && g . removeListener ( ) ; CKEDITOR . env . ie && f . focus ( ) ; k . selectBookmarks ( n ) ;
( l= a ) ; b . removeListener ( "selectionChange" , e ) ; d ( l . getHtml ( ) ) } , 0 ) } } function C ( ) { if ( "paste" == z . mainPasteEvent ) return b . fire ( "beforePaste" , { type : "auto" , method : "paste" } ) , ! 1 ; b . focus ( ) ; e ( ) ; var a = b . focusManager ; a . lock ( ) ; if ( b . editable ( ) . fire ( z . mainPasteEvent ) && ! k ( "paste" ) ) return a . unlock ( ) , ! 1 ; a . unlock ( ) ; return ! 0 } function r ( a ) { if ( "wysiwyg" == b . mode ) switch ( a . data . keyCode ) { case CKEDITOR . CTRL + 86 : case CKEDITOR . SHIFT + 45 : a = b . editable ( ) ; e ( ) ; "paste" == z . mainPasteEvent && a . fire ( "beforepaste" ) ; break ; case CKEDITOR . CTRL + 88 : case CKEDITOR . SHIFT +
p . remove ( ) ; var a ; CKEDITOR . env . webkit && ( a= p . getFirst ( ) ) && a . is && a . hasC lass( "Apple-style-span" ) && ( p = a ) ; b . removeListener ( "selectionChange" , e ) ; d ( p . getHtml ( ) ) } , 0 ) } } function C ( ) { if ( "paste" == z . mainPasteEvent ) return b . fire ( "beforePaste" , { type : "auto" , method : "paste" } ) , ! 1 ; b . focus ( ) ; e ( ) ; var a = b . focusManager ; a . lock ( ) ; if ( b . editable ( ) . fire ( z . mainPasteEvent ) && ! k ( "paste" ) ) return a . unlock ( ) , ! 1 ; a . unlock ( ) ; return ! 0 } function r ( a ) { if ( "wysiwyg" == b . mode ) switch ( a . data . keyCode ) { case CKEDITOR . CTRL + 86 : case CKEDITOR . SHIFT + 45 : a =
46 : b . fire ( "saveSnapshot" ) , setTimeout ( function ( ) { b . fire ( "saveSnapshot" ) } , 50 ) } } function x ( d ) { var c = { type : "auto" , method : "paste" , dataTransfer : z . initPasteDataTransfer ( d ) } ; c . dataTransfer . cacheData ( ) ; var f = ! 1 !== b . fire ( "beforePaste" , c ) ; f && z . canClipboardApiBeTrusted ( c . dataTransfer , b ) ? ( d . data . preventDefault ( ) , setTimeout ( function ( ) { a ( b , c ) } , 0 ) ) : m ( d , function ( d ) { c . dataValue = d . replace ( /<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig , "" ) ; f && a ( b , c ) } ) } function B ( ) { if ( "wysiwyg" == b . mode ) { var a = A ( "paste" ) ; b . getCommand ( "cut" ) . setState ( A ( "cut" ) ) ;
b . editable ( ) ; e ( ) ; "paste" == z . mainPasteEvent && a . fire ( "beforepaste" ) ; break ; case CKEDITOR . CTRL + 88 : case CKEDITOR . SHIFT + 46 : b . fire ( "saveSnapshot" ) , setTimeout ( function ( ) { b . fire ( "saveSnapshot" ) } , 50 ) } } function x ( d ) { var c = { type : "auto" , method : "paste" , dataTransfer : z . initPasteDataTransfer ( d ) } ; c . dataTransfer . cacheData ( ) ; var f = ! 1 !== b . fire ( "beforePaste" , c ) ; f && z . canClipboardApiBeTrusted ( c . dataTransfer , b ) ? ( d . data . preventDefault ( ) , setTimeout ( function ( ) { a ( b , c ) } , 0 ) ) : m ( d , function ( d ) { c . dataValue = d . replace ( /<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig ,
b . getCommand ( "copy" ) . setState ( A ( "copy" ) ) ; b . getCommand ( "paste" ) . setState ( a ) ; b . fire ( "pasteState" , a ) } } function A ( a ) { if ( F && a in { paste : 1 , cut : 1 } ) return CKEDITOR . TRISTATE _DISABLED ; if ( "paste" == a ) return CKEDITOR . TRISTATE _OFF ; a = b . getSelection ( ) ; var d = a . getRanges ( ) ; return a . getType ( ) == CKEDITOR . SELECTION _NONE || 1 == d . length && d [ 0 ] . collapsed ? CKEDITOR . TRISTATE _DISABLED : CKEDITOR . TRISTATE _OFF } var z = CKEDITOR . plugins . clipboard , D = 0 , G = 0 , F = 0 ; ( function ( ) { b . on ( "key" , r ) ; b . on ( "contentDom" , d ) ; b . on ( "selectionChange" , function ( a ) { F =
"" ) ; f && a ( b , c ) } ) } function B ( ) { if ( "wysiwyg" == b . mode ) { var a = A ( "paste" ) ; b . getCommand ( "cut" ) . setState ( A ( "cut" ) ) ; b . getCommand ( "copy" ) . setState ( A ( "copy" ) ) ; b . getCommand ( "paste" ) . setState ( a ) ; b . fire ( "pasteState" , a ) } } function A ( a ) { if ( F && a in { paste : 1 , cut : 1 } ) return CKEDITOR . TRISTATE _DISABLED ; if ( "paste" == a ) return CKEDITOR . TRISTATE _OFF ; a = b . getSelection ( ) ; var d = a . getRanges ( ) ; return a . getType ( ) == CKEDITOR . SELECTION _NONE || 1 == d . length && d [ 0 ] . collapsed ? CKEDITOR . TRISTATE _DISABLED : CKEDITOR . TRISTATE _OFF } var z = CKEDITOR . plugins . clipboard ,
a . data . selection . getRanges ( ) [ 0 ] . checkReadOnly ( ) ; B ( ) } ) ; b . contextMenu && b . contextMenu . addListener ( function ( a , b ) { F = b . getRanges ( ) [ 0 ] . checkReadOnly ( ) ; return { cut : A ( "cut" ) , copy : A ( "copy" ) , paste : A ( "paste" ) } } ) } ) ( ) ; ( function ( ) { function a ( d , c , f , e , g ) { var k = b . lang . clipboard [ c ] ; b . addCommand ( c , f ) ; b . ui . addButton && b . ui . addButton ( d , { label : k , command : c , toolbar : "clipboard," + e } ) ; b . addMenuItems && b . addMenuItem ( c , { label : k , command : c , group : "clipboard" , order : g } ) } a ( "Cut" , "cut" , c ( "cut" ) , 10 , 1 ) ; a ( "Copy" , "copy" , c ( "copy" ) , 20 , 4 ) ; a ( "Paste" ,
D = 0 , G = 0 , F = 0 ; ( function ( ) { b . on ( "key" , r ) ; b . on ( "contentDom" , d ) ; b . on ( "selectionChange" , function ( a ) { F = a . data . selection . getRanges ( ) [ 0 ] . checkReadOnly ( ) ; B ( ) } ) ; b . contextMenu && b . contextMenu . addListener ( function ( a , b ) { F = b . getRanges ( ) [ 0 ] . checkReadOnly ( ) ; return { cut : A ( "cut" ) , copy : A ( "copy" ) , paste : A ( "paste" ) } } ) } ) ( ) ; ( function ( ) { function a ( d , c , f , e , g ) { var k = b . lang . clipboard [ c ] ; b . addCommand ( c , f ) ; b . ui . addButton && b . ui . addButton ( d , { label : k , command : c , toolbar : "clipboard," + e } ) ; b . addMenuItems && b . addMenuItem ( c , { label : k , command : c ,
"paste" , f ( ) , 30 , 8 ) } ) ( ) ; b . getClipboardData = function ( a , d ) { function c ( a ) { a . removeListener ( ) ; a . cancel ( ) ; d ( a . data ) } function f ( a ) { a . removeListener ( ) ; a . cancel ( ) ; n = ! 0 ; d ( { type : k , dataValue : a . data ,method : "paste" } ) } function e ( ) { this . customTitle = a && a . title } var g = ! 1 , k = "auto" , n = ! 1 ; d || ( d = a , a = null ) ; b . on ( "paste" , c , null , null , 0 ) ; b . on ( "beforePaste" , function ( a ) { a . removeListener ( ) ; g = ! 0 ; k = a . data . type } , null , null , 1E3 ) ; ! 1 === C ( ) && ( b . removeListener ( "paste" , c ) , g && b . fire ( "pasteDialog" , e ) ? ( b . on ( "pasteDialogCommit" , f ) , b . on ( "dialogHide" ,
group : "clipboard" , order : g } ) } a ( "Cut" , "cut" , c ( "cut" ) , 10 , 1 ) ; a ( "Copy" , "copy" , c ( "copy" ) , 20 , 4 ) ; a ( "Paste" , "paste" , f ( ) , 30 , 8 ) } ) ( ) ; b . getClipboardData = function ( a , d ) { function c ( a ) { a . removeListener ( ) ; a . cancel ( ) ; d ( a . data ) } function f ( a ) { a . removeListener ( ) ; a . cancel ( ) ; n = ! 0 ; d ( { type : k , dataValue : a . data .dataValue , dataTransfer : a . data . dataTransfer ,method : "paste" } ) } function e ( ) { this . customTitle = a && a . title } var g = ! 1 , k = "auto" , n = ! 1 ; d || ( d = a , a = null ) ; b . on ( "paste" , c , null , null , 0 ) ; b . on ( "beforePaste" , function ( a ) { a . removeListener ( ) ;
function ( a ) { a . removeListener ( ) ; a . data . removeListener ( "pasteDialogCommit" , f ) ; setTimeout ( function ( ) { n || d ( null ) } , 10 ) } ) ) : d ( null ) ) } } function c ( a ) { if ( CKEDITOR . env . webkit ) { if ( ! a . match ( /^[^<]*$/g ) && ! a . match ( /^(<div><br( ?\/)?><\/div>|<div>[^<]*<\/div>)*$/gi ) ) return "html" } else if ( CKEDITOR . env . ie ) { if ( ! a . match ( /^([^<]|<br( ?\/)?>)*$/gi ) && ! a . match ( /^(<p>([^<]|<br( ?\/)?>)*<\/p>|(\r\n))*$/gi ) ) return "html" } else if ( CKEDITOR . env . gecko ) { if ( ! a . match ( /^([^<]|<br( ?\/)?>)*$/gi ) ) return "html" } else return "html" ; return "htmlifiedtext" }
g = ! 0 ; k = a . data . type } , null , null , 1E3 ) ; ! 1 === C ( ) && ( b . removeListener ( "paste" , c ) , g && b . fire ( "pasteDialog" , e ) ? ( b . on ( "pasteDialogCommit" , f ) , b . on ( "dialogHide" , function ( a ) { a . removeListener ( ) ; a . data . removeListener ( "pasteDialogCommit" , f ) ; setTimeout ( function ( ) { n || d ( null ) } , 10 ) } ) ) : d ( null ) ) } } function c ( a ) { if ( CKEDITOR . env . webkit ) { if ( ! a . match ( /^[^<]*$/g ) && ! a . match ( /^(<div><br( ?\/)?><\/div>|<div>[^<]*<\/div>)*$/gi ) ) return "html" } else if ( CKEDITOR . env . ie ) { if ( ! a . match ( /^([^<]|<br( ?\/)?>)*$/gi ) && ! a . match ( /^(<p>([^<]|<br( ?\/)?>)*<\/p>|(\r\n))*$/gi ) ) return "html" } else if ( CKEDITOR . env . gecko ) { if ( ! a . match ( /^([^<]|<br( ?\/)?>)*$/gi ) ) return "html" } else return "html" ;
function g ( a , b ) { function d ( a ) { return CKEDITOR . tools . repeat ( "\x3c/p\x3e\x3cp\x3e" , ~ ~ ( a / 2 ) ) + ( 1 == a % 2 ? "\x3cbr\x3e" : "" ) } b = b . replace ( /\s+/g , " " ) . replace ( /> +</g , "\x3e\x3c" ) . replace ( /<br ?\/>/gi , "\x3cbr\x3e" ) ; b = b . replace ( /<\/?[A-Z]+>/g , function ( a ) { return a . toLowerCase ( ) } ) ; if ( b . match ( /^[^<]$/ ) ) return b ; CKEDITOR . env . webkit && - 1 < b . indexOf ( "\x3cdiv\x3e" ) && ( b = b . replace ( /^(<div>(<br>|)<\/div>)(?!$|(<div>(<br>|)<\/div>))/g , "\x3cbr\x3e" ) . replace ( /^(<div>(<br>|)<\/div>){2}(?!$)/g , "\x3cdiv\x3e\x3c/div\x3e" ) , b . match ( /<div>(<br>|)<\/div>/ ) &&
return "htmlifiedtext" } function g ( a , b ) { function d ( a ) { return CKEDITOR . tools . repeat ( "\x3c/p\x3e\x3cp\x3e" , ~ ~ ( a / 2 ) ) + ( 1 == a % 2 ? "\x3cbr\x3e" : "" ) } b = b . replace ( /\s+/g , " " ) . replace ( /> +</g , "\x3e\x3c" ) . replace ( /<br ?\/>/gi , "\x3cbr\x3e" ) ; b = b . replace ( /<\/?[A-Z]+>/g , function ( a ) { return a . toLowerCase ( ) } ) ; if ( b . match ( /^[^<]$/ ) ) return b ; CKEDITOR . env . webkit && - 1 < b . indexOf ( "\x3cdiv\x3e" ) && ( b = b . replace ( /^(<div>(<br>|)<\/div>)(?!$|(<div>(<br>|)<\/div>))/g , "\x3cbr\x3e" ) . replace ( /^(<div>(<br>|)<\/div>){2}(?!$)/g , "\x3cdiv\x3e\x3c/div\x3e" ) ,
( b = "\x3cp\x3e" + b . replace ( /(<div>(<br>|)<\/div>)+/g , function ( a ) { return d ( a . split ( "\x3c/div\x3e\x3cdiv\x3e" ) . length + 1 ) } ) + "\x3c/p\x3e" ) , b = b . replace ( /<\/div><div>/g , "\x3cbr\x3e" ) , b = b . replace ( /<\/?div>/g , "" ) ) ; CKEDITOR . env . gecko && a . enterMode != CKEDITOR . ENTER _BR && ( CKEDITOR . env . gecko && ( b = b . replace ( /^<br><br>$/ , "\x3cbr\x3e" ) ) , - 1 < b . indexOf ( "\x3cbr\x3e\x3cbr\x3e" ) && ( b = "\x3cp\x3e" + b . replace ( /(<br>){2,}/g , function ( a ) { return d ( a . length / 4 ) } ) + "\x3c/p\x3e" ) ) ; return l ( a , b ) } function f ( ) { function a ( ) { var b = { } , d ; for ( d in CKEDITOR . dtd ) "$" !=
b . match ( /<div>(<br>|)<\/div>/ ) && ( b = "\x3cp\x3e" + b . replace ( /(<div>(<br>|)<\/div>)+/g , function ( a ) { return d ( a . split ( "\x3c/div\x3e\x3cdiv\x3e" ) . length + 1 ) } ) + "\x3c/p\x3e" ) , b = b . replace ( /<\/div><div>/g , "\x3cbr\x3e" ) , b = b . replace ( /<\/?div>/g , "" ) ) ; CKEDITOR . env . gecko && a . enterMode != CKEDITOR . ENTER _BR && ( CKEDITOR . env . gecko && ( b = b . replace ( /^<br><br>$/ , "\x3cbr\x3e" ) ) , - 1 < b . indexOf ( "\x3cbr\x3e\x3cbr\x3e" ) && ( b = "\x3cp\x3e" + b . replace ( /(<br>){2,}/g , function ( a ) { return d ( a . length / 4 ) } ) + "\x3c/p\x3e" ) ) ; return l ( a , b ) } function f ( ) { function a ( ) { var b =
d . charAt ( 0 ) && "div" != d && "span" != d && ( b [ d ] = 1 ) ; return b } var b = { } ; return { get : function ( d ) { return "plain-text" == d ? b . plainText || ( b . plainText = new CKEDITOR . filter ( "br" ) ) : "semantic-content" == d ? ( ( d = b . semanticContent ) || ( d = new CKEDITOR . filter , d . allow ( { $1 : { elements : a ( ) , attributes : ! 0 , styles : ! 1 , classes : ! 1 } } ) , d = b . semanticContent = d ) , d ) : d ? new CKEDITOR . filter ( d ) : null } } } function m ( a , b , d ) { b = CKEDITOR . htmlParser . fragment . fromHtml ( b ) ; var c = new CKEDITOR . htmlParser . basicWriter ; d . applyTo ( b , ! 0 , ! 1 , a . activeEnterMode ) ; b . writeHtml ( c ) ;
{ } , d ; for ( d in CKEDITOR . dtd ) "$" != d . charAt ( 0 ) && "div" != d && "span" != d && ( b [ d ] = 1 ) ; return b } var b = { } ; return { get : function ( d ) { return "plain-text" == d ? b . plainText || ( b . plainText = new CKEDITOR . filter ( "br" ) ) : "semantic-content" == d ? ( ( d = b . semanticContent ) || ( d = new CKEDITOR . filter , d . allow ( { $1 : { elements : a ( ) , attributes : ! 0 , styles : ! 1 , classes : ! 1 } } ) , d = b . semanticContent = d ) , d ) : d ? new CKEDITOR . filter ( d ) : null } } } function m ( a , b , d ) { b = CKEDITOR . htmlParser . fragment . fromHtml ( b ) ; var c = new CKEDITOR . htmlParser . basicWriter ; d . applyTo ( b , ! 0 , ! 1 ,
return c . getHtml ( ) } function l ( a , b ) { a . enterMode == CKEDITOR . ENTER _BR ? b = b . replace ( /(<\/p><p>)+/g , function ( a ) { return CKEDITOR . tools . repeat ( "\x3cbr\x3e" , a . length / 7 * 2 ) } ) . replace ( /<\/?p>/g , "" ) : a . enterMode == CKEDITOR . ENTER _DIV && ( b = b . replace ( /<(\/)?p>/g , "\x3c$1div\x3e" ) ) ; return b } function k ( a ) { a . data . preventDefault ( ) ; a . data . $ . dataTransfer . dropEffect = "none" } function b ( b ) { var d = CKEDITOR . plugins . clipboard ; b . on ( "contentDom" , function ( ) { function c ( d , f , e ) { f . select ( ) ; a ( b , { dataTransfer : e , method : "drop" } , 1 ) ; e . sourceEditor . fire ( "saveSnapshot" ) ;
a . activeEnterMode ) ; b . writeHtml ( c ) ; return c . getHtml ( ) } function l ( a , b ) { a . enterMode == CKEDITOR . ENTER _BR ? b = b . replace ( /(<\/p><p>)+/g , function ( a ) { return CKEDITOR . tools . repeat ( "\x3cbr\x3e" , a . length / 7 * 2 ) } ) . replace ( /<\/?p>/g , "" ) : a . enterMode == CKEDITOR . ENTER _DIV && ( b = b . replace ( /<(\/)?p>/g , "\x3c$1div\x3e" ) ) ; return b } function k ( a ) { a . data . preventDefault ( ) ; a . data . $ . dataTransfer . dropEffect = "none" } function b ( b ) { var d = CKEDITOR . plugins . clipboard ; b . on ( "contentDom" , function ( ) { function c ( d , f , e ) { f . select ( ) ; a ( b , { dataTransfer : e ,
e . sourceEditor . editable ( ) . extractHtmlFromRange ( d ) ; e . sourceEditor . getSelection ( ) . selectRanges ( [ d ] ) ; e . sourceEditor . fire ( "saveSnapshot" ) } function f ( c , e ) { c . select ( ) ; a ( b , { dataTransfer : e , method : "drop" } , 1 ) ; d . resetDragDataTransfer ( ) } function e ( a , d , c ) { var f = { $ : a . data . $ , target : a . data . getTarget ( ) } ; d && ( f . dragRange = d ) ; c && ( f . dropRange = c ) ; ! 1 === b . fire ( a . name , f ) && a . data . preventDefault ( ) } function g ( a ) { a . type != CKEDITOR . NODE _ELEMENT && ( a = a . getParent ( ) ) ; return a . getChildCount ( ) } var k = b . editable ( ) , l = CKEDITOR . plugins . clipboard . getDropTarget ( b ) ,
method : "drop" } , 1 ) ; e . sourceEditor . fire ( "saveSnapshot" ) ; e . sourceEditor . editable ( ) . extractHtmlFromRange ( d ) ; e . sourceEditor . getSelection ( ) . selectRanges ( [ d ] ) ; e . sourceEditor . fire ( "saveSnapshot" ) } function f ( c , e ) { c . select ( ) ; a ( b , { dataTransfer : e , method : "drop" } , 1 ) ; d . resetDragDataTransfer ( ) } function e ( a , d , c ) { var f = { $ : a . data . $ , target : a . data . getTarget ( ) } ; d && ( f . dragRange = d ) ; c && ( f . dropRange = c ) ; ! 1 === b . fire ( a . name , f ) && a . data . preventDefault ( ) } function g ( a ) { a . type != CKEDITOR . NODE _ELEMENT && ( a = a . getParent ( ) ) ; return a . getChildCount ( ) }
m = b . ui . space ( "top" ) , C = b . ui . space ( "bottom" ) ; d . preventDefaultDropOnElement ( m ) ; d . preventDefaultDropOnElement ( C ) ; k . attachListener ( l , "dragstart" , e ) ; k . attachListener ( b , "dragstart" , d . resetDragDataTransfer , d , null , 1 ) ; k . attachListener ( b , "dragstart" , function ( a ) { d . initDragDataTransfer ( a , b ) } , null , null , 2 ) ; k . attachListener ( b , "dragstart" , function ( ) { var a = d . dragRange = b . getSelection ( ) . getRanges ( ) [ 0 ] ; CKEDITOR . env . ie && 10 > CKEDITOR . env . version && ( d . dragStartContainerChildCount = a ? g ( a . startContainer ) : null , d . dragEndContainerChildCount =
var k = b . editable ( ) , l = CKEDITOR . plugins . clipboard . getDropTarget ( b ) , m = b . ui . space ( "top" ) , C = b . ui . space ( "bottom" ) ; d . preventDefaultDropOnElement ( m ) ; d . preventDefaultDropOnElement ( C ) ; k . attachListener ( l , "dragstart" , e ) ; k . attachListener ( b , "dragstart" , d . resetDragDataTransfer , d , null , 1 ) ; k . attachListener ( b , "dragstart" , function ( a ) { d . initDragDataTransfer ( a , b ) } , null , null , 2 ) ; k . attachListener ( b , "dragstart" , function ( ) { var a = d . dragRange = b . getSelection ( ) . getRanges ( ) [ 0 ] ; CKEDITOR . env . ie && 10 > CKEDITOR . env . version && ( d . dragStartContainerChildCount =
a ? g ( a . endContainer ) : null ) } , null , null , 100 ) ; k . attachListener ( l , "dragend" , e ) ; k . attachListener ( b , "dragend" , d . initDragDataTransfer , d , null , 1 ) ; k . attachListener ( b , "dragend" , d . resetDragDataTransfer , d , null , 100 ) ; k . attachListener ( l , "dragover" , function ( a ) { var b = a . data . getTarget ( ) ; b && b . is && b . is ( "html" ) ? a . data . preventDefault ( ) : CKEDITOR . env . ie && CKEDITOR . plugins . clipboard . isFileApiSupported && a . data . $ . dataTransfer . types . contains ( "Files" ) && a . data . preventDefault ( ) } ) ; k . attachListener ( l , "drop" , function ( a ) { a . data . preventDefault ( ) ;
a ? g ( a . startContainer ) : null , d . dragEndContainerChildCount = a ? g ( a . endContainer ) : null ) } , null , null , 100 ) ; k . attachListener ( l , "dragend" , e ) ; k . attachListener ( b , "dragend" , d . initDragDataTransfer , d , null , 1 ) ; k . attachListener ( b , "dragend" , d . resetDragDataTransfer , d , null , 100 ) ; k . attachListener ( l , "dragover" , function ( a ) { var b = a . data . getTarget ( ) ; b && b . is && b . is ( "html" ) ? a . data . preventDefault ( ) : CKEDITOR . env . ie && CKEDITOR . plugins . clipboard . isFileApiSupported && a . data . $ . dataTransfer . types . contains ( "Files" ) && a . data . preventDefault ( ) } ) ;
var c = a . data . getTarget ( ) ; if ( ! c . isReadOnly ( ) || c . type == CKEDITOR . NODE _ELEMENT && c . is ( "html" ) ) { var c = d . getRangeAtDropPosition ( a , b ) , f = d . dragRange ; c && e ( a , f , c ) } } ) ; k . attachListener ( b , "drop" , d . initDragDataTransfer , d , null , 1 ) ; k . attachListener ( b , "drop" , function ( a ) { if ( a = a . data ) { var e = a . dropRange , g = a . dragRange , k = a . dataTransfer ; k . getTransferType ( b ) == CKEDITOR . DATA _TRANSFER _INTERNAL ? setTimeout ( function ( ) { d . internalDrop ( g , e , k , b ) } , 0 ) : k . getTransferType ( b ) == CKEDITOR . DATA _TRANSFER _CROSS _EDITORS ? c ( g , e , k ) : f ( e , k ) } } , null , null ,
k . attachListener ( l , "drop" , function ( a ) { if ( ! a . data . $ . defaultPrevented ) { a . data . preventDefault ( ) ; var c = a . data . getTarget ( ) ; if ( ! c . isReadOnly ( ) || c . type == CKEDITOR . NODE _ELEMENT && c . is ( "html" ) ) { var c = d . getRangeAtDropPosition ( a , b ) , f = d . dragRange ; c && e ( a , f , c ) } } } , null , null , 9999 ) ; k . attachListener ( b , "drop" , d . initDragDataTransfer , d , null , 1 ) ; k . attachListener ( b , "drop" , function ( a ) { if ( a = a . data ) { var e = a . dropRange , g = a . dragRange , k = a . dataTransfer ; k . getTransferType ( b ) == CKEDITOR . DATA _TRANSFER _INTERNAL ? setTimeout ( function ( ) { d . internalDrop ( g ,
9999 ) } ) } CKEDITOR . plugins . add ( "clipboard" , { requires : "dialog" , init : function ( a ) { var d , k = f ( ) ; a . config . forcePasteAsPlainText ? d = "plain-text" : a . config . pasteFilter ? d = a . config . pasteFilter : ! CKEDITOR . env . webkit || "pasteFilter" in a . config || ( d = "semantic-content" ) ; a . pasteFilter = k . get ( d ) ; e ( a ) ; b ( a ) ; CKEDITOR . dialog . add ( "paste" , CKEDITOR . getUrl ( this . path + "dialogs/paste.js" ) ) ; a . on ( "paste" , function ( b ) { b . data . dataTransfer || ( b . data . dataTransfer = new CKEDITOR . plugins . clipboard . dataTransfer ) ; if ( ! b . data . dataValue ) { var d = b . data . dataTransfer ,
e , k , b ) } , 0 ) : k . getTransferType ( b ) == CKEDITOR . DATA _TRANSFER _CROSS _EDITORS ? c ( g , e , k ) : f ( e , k ) } } , null , null , 9999 ) } ) } CKEDITOR . plugins . add ( "clipboard" , { requires : "dialog" , init : function ( a ) { var d , k = f ( ) ; a . config . forcePasteAsPlainText ? d = "plain-text" : a . config . pasteFilter ? d = a . config . pasteFilter : ! CKEDITOR . env . webkit || "pasteFilter" in a . config || ( d = "semantic-content" ) ; a . pasteFilter = k . get ( d ) ; e ( a ) ; b ( a ) ; CKEDITOR . dialog . add ( "paste" , CKEDITOR . getUrl ( this . path + "dialogs/paste.js" ) ) ; a . on ( "paste" , function ( b ) { b . data . dataTransfer ||
c = d . getData ( "text/html" ) ; if ( c ) b . data . dataValue = c , b . data . type = "html" ; else if ( c = d . getData ( "text/plain" ) ) b . data . dataValue = a . editable ( ) . transformPlainTextToHtml ( c ) , b . data . type = "text" } } , null , null , 1 ) ; a . on ( "paste" , function ( a ) { var b = a . data . dataValue , d = CKEDITOR . dtd . $block ; - 1 < b . indexOf ( "Apple-" ) && ( b = b . replace ( /<span class="Apple-converted-space"> <\/span>/gi , " " ) , "html" != a . data . type && ( b = b . replace ( /<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi , function ( a , b ) { return b . replace ( /\t/g , "\x26nbsp;\x26nbsp; \x26nbsp;" ) } ) ) ,
( b . data . dataTransfer = new CKEDITOR . plugins . clipboard . dataTransfer ) ; if ( ! b . data . dataValue ) { var d = b . data . dataTransfer , c = d . getData ( "text/html" ) ; if ( c ) b . data . dataValue = c , b . data . type = "html" ; else if ( c = d . getData ( "text/plain" ) ) b . data . dataValue = a . editable ( ) . transformPlainTextToHtml ( c ) , b . data . type = "text" } } , null , null , 1 ) ; a . on ( "paste" , function ( a ) { var b = a . data . dataValue , d = CKEDITOR . dtd . $block ; - 1 < b . indexOf ( "Apple-" ) && ( b = b . replace ( /<span class="Apple-converted-space"> <\/span>/gi , " " ) , "html" != a . data . type && ( b = b . replace ( /<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi ,
- 1 < b . indexOf ( '\x3cbr class\x3d"Apple-interchange-newline"\x3e' ) && ( a . data . startsWithEOL = 1 , a . data . preSniffing = "html" , b = b . replace ( /<br class="Apple-interchange-newline">/ , "" ) ) , b = b . replace ( /(<[^>]+) class="Apple-[^"]*"/gi , "$1" ) ) ; if ( b . match ( /^<[^<]+cke_(editable|contents)/i ) ) { var c , f , h = new CKEDITOR . dom . element ( "div" ) ; for ( h . setHtml ( b ) ; 1 == h . getChildCount ( ) && ( c = h . getFirst ( ) ) && c . type == CKEDITOR . NODE _ELEMENT && ( c . hasClass ( "cke_editable" ) || c . hasClass ( "cke_contents" ) ) ; ) h = f = c ; f && ( b = f . getHtml ( ) . replace ( /<br>$/i ,
function ( a , b ) { return b . replace ( /\t/g , "\x26nbsp;\x26nbsp; \x26nbsp;" ) } ) ) , - 1 < b . indexOf ( '\x3cbr class\x3d"Apple-interchange-newline"\x3e' ) && ( a . data . startsWithEOL = 1 , a . data . preSniffing = "html" , b = b . replace ( /<br class="Apple-interchange-newline">/ , "" ) ) , b = b . replace ( /(<[^>]+) class="Apple-[^"]*"/gi , "$1" ) ) ; if ( b . match ( /^<[^<]+cke_(editable|contents)/i ) ) { var c , f , h = new CKEDITOR . dom . element ( "div" ) ; for ( h . setHtml ( b ) ; 1 == h . getChildCount ( ) && ( c = h . getFirst ( ) ) && c . type == CKEDITOR . NODE _ELEMENT && ( c . hasClass ( "cke_editable" ) ||
"" ) ) } CKEDITOR . env . ie ? b = b . replace ( /^ (?: |\r\n)?<(\w+)/g , function ( b , c ) { return c . toLowerCase ( ) in d ? ( a . data . preSniffing = "html" , "\x3c" + c ) : b } ) : CKEDITOR . env . webkit ? b = b . replace ( /<\/(\w+)><div><br><\/div>$/ , function ( b , c ) { return c in d ? ( a . data . endsWithEOL = 1 , "\x3c/" + c + "\x3e" ) : b } ) : CKEDITOR . env . gecko && ( b = b . replace ( /(\s)<br>$/ , "$1" ) ) ; a . data . dataValue = b } , null , null , 3 ) ; a . on ( "paste" , function ( b ) { b = b . data ; var d = b . type , f = b . dataValue , e , l = a . config . clipboard _defaultContentType || "html" , p = b . dataTransfer . getTransferType ( a ) ;
c . hasClass ( "cke_contents" ) ) ; ) h = f = c ; f && ( b = f . getHtml ( ) . replace ( /<br>$/i , "" ) ) } CKEDITOR . env . ie ? b = b . replace ( /^ (?: |\r\n)?<(\w+)/g , function ( b , c ) { return c . toLowerCase ( ) in d ? ( a . data . preSniffing = "html" , "\x3c" + c ) : b } ) : CKEDITOR . env . webkit ? b = b . replace ( /<\/(\w+)><div><br><\/div>$/ , function ( b , c ) { return c in d ? ( a . data . endsWithEOL = 1 , "\x3c/" + c + "\x3e" ) : b } ) : CKEDITOR . env . gecko && ( b = b . replace ( /(\s)<br>$/ , "$1" ) ) ; a . data . dataValue = b } , null , null , 3 ) ; a . on ( "paste" , function ( b ) { b = b . data ; var d = b . type , f = b . dataValue , e , l = a . config . clipboard _defaultContentType ||
e = "html" == d || "html" == b . preSniffing ? "html" : c ( f ) ; "htmlifiedtext" == e && ( f = g ( a . config , f ) ) ; "text" == d && "html" == e ? f = m ( a , f , k . get ( "plain-text" ) ) : p == CKEDITOR . DATA _TRANSFER _EXTERNAL && a . pasteFilter && ! b . dontFilter && ( f = m ( a , f , a . pasteFilter ) ) ; b . startsWithEOL && ( f = '\x3cbr data-cke-eol\x3d"1"\x3e' + f ) ; b . endsWithEOL && ( f += '\x3cbr data-cke-eol\x3d"1"\x3e' ) ; "auto" == d && ( d = "html" == e || "html" == l ? "html" : "text" ) ; b . type = d ; b . dataValue = f ; delete b . preSniffing ; delete b . startsWithEOL ; delete b . endsWithEOL } , null , null , 6 ) ; a . on ( "paste" , function ( b ) { b =
"html" , p = b . dataTransfer . getTransferType ( a ) ; e = "html" == d || "html" == b . preSniffing ? "html" : c ( f ) ; "htmlifiedtext" == e && ( f = g ( a . config , f ) ) ; "text" == d && "html" == e ? f = m ( a , f , k . get ( "plain-text" ) ) : p == CKEDITOR . DATA _TRANSFER _EXTERNAL && a . pasteFilter && ! b . dontFilter && ( f = m ( a , f , a . pasteFilter ) ) ; b . startsWithEOL && ( f = '\x3cbr data-cke-eol\x3d"1"\x3e' + f ) ; b . endsWithEOL && ( f += '\x3cbr data-cke-eol\x3d"1"\x3e' ) ; "auto" == d && ( d = "html" == e || "html" == l ? "html" : "text" ) ; b . type = d ; b . dataValue = f ; delete b . preSniffing ; delete b . startsWithEOL ; delete b . endsWithEOL } ,
b . data ; b . dataValue && ( a . insertHtml ( b . dataValue , b . type , b . range ) , setTimeout ( function ( ) { a . fire ( "afterPaste" ) } , 0 ) ) } , null , null , 1E3 ) ; a . on ( "pasteDialog" , function ( b ) { setTimeout ( function ( ) { a . openDialog ( "paste" , b . data ) } , 0 ) } ) } } ) ; CKEDITOR . plugins . clipboard = { isCustomCopyCutSupported : ! CKEDITOR . env . ie && ! CKEDITOR . env . iOS , isCustomDataTypesSupported : ! CKEDITOR . env . ie , isFileApiSupported : ! CKEDITOR . env . ie || 9 < CKEDITOR . env . version , mainPasteEvent : CKEDITOR . env . ie && ! CKEDITOR . env . edge ? "beforepaste" : "paste" , canClipboardApiBeTrusted : function ( a ,
null , null , 6 ) ; a . on ( "paste" , function ( b ) { b = b . data ; b . dataValue && ( a . insertHtml ( b . dataValue , b . type , b . range ) , setTimeout ( function ( ) { a . fire ( "afterPaste" ) } , 0 ) ) } , null , null , 1E3 ) ; a . on ( "pasteDialog" , function ( b ) { setTimeout ( function ( ) { a . openDialog ( "paste" , b . data ) } , 0 ) } ) } } ) ; CKEDITOR . plugins . clipboard = { isCustomCopyCutSupported : ! CKEDITOR . env . ie && ! CKEDITOR . env . iOS , isCustomDataTypesSupported : ! CKEDITOR . env . ie , isFileApiSupported : ! CKEDITOR . env . ie || 9 < CKEDITOR . env . version , mainPasteEvent : CKEDITOR . env . ie && ! CKEDITOR . env . edge ?
b ) { return a . getTransferType ( b ) != CKEDITOR . DATA _TRANSFER _EXTERNAL || CKEDITOR . env . chrome && ! a . isEmpty ( ) || CKEDITOR . env . gecko && ( a . getData ( "text/html" ) || a . getFilesCount ( ) ) ? ! 0 : ! 1 } , getDropTarget : function ( a ) { var b = a . editable ( ) ; return CKEDITOR . env . ie && 9 > CKEDITOR . env . version || b . isInline ( ) ? b : a . document } , fixSplitNodesAfterDrop : function ( a , b , d , c ) { function f ( a , d , c ) { var h = a ; h . type == CKEDITOR . NODE _TEXT && ( h = a . getParent ( ) ) ; if ( h . equals ( d ) && c != d . getChildCount ( ) ) return a = b . startContainer . getChild ( b . startOffset - 1 ) , d = b . startContainer . getChild ( b . startOffset ) ,
"beforepaste" : "paste" , canClipboardApiBeTrusted : function ( a , b ) { return a . getTransferType ( b ) != CKEDITOR . DATA _TRANSFER _EXTERNAL || CKEDITOR . env . chrome && ! a . isEmpty ( ) || CKEDITOR . env . gecko && ( a . getData ( "text/html" ) || a . getFilesCount ( ) ) ? ! 0 : ! 1 } , getDropTarget : function ( a ) { var b = a . editable ( ) ; return CKEDITOR . env . ie && 9 > CKEDITOR . env . version || b . isInline ( ) ? b : a . document } , fixSplitNodesAfterDrop : function ( a , b , d , c ) { function f ( a , d , c ) { var h = a ; h . type == CKEDITOR . NODE _TEXT && ( h = a . getParent ( ) ) ; if ( h . equals ( d ) && c != d . getChildCount ( ) ) return a =
a && a . type == CKEDITOR . NODE _TEXT && d && d . type == CKEDITOR . NODE _TEXT && ( c = a . getLength ( ) , a . setText ( a . getText ( ) + d . getText ( ) ) , d . remove ( ) , b . setStart ( a , c ) , b . collapse ( ! 0 ) ) , ! 0 } var e = b . startContainer ; "number" == typeof c && "number" == typeof d && e . type == CKEDITOR . NODE _ELEMENT && ( f ( a . startContainer , e , d ) || f ( a . endContainer , e , c ) ) } , isDropRangeAffectedByDragRange : function ( a , b ) { var d = b . startContainer , c = b . endOffset ; return a . endContainer . equals ( d ) && a . endOffset <= c || a . startContainer . getParent ( ) . equals ( d ) && a . startContainer . getIndex ( ) <
b . startContainer . getChild ( b . startOffset - 1 ) , d = b . startContainer . getChild ( b . startOffset ) , a && a . type == CKEDITOR . NODE _TEXT && d && d . type == CKEDITOR . NODE _TEXT && ( c = a . getLength ( ) , a . setText ( a . getText ( ) + d . getText ( ) ) , d . remove ( ) , b . setStart ( a , c ) , b . collapse ( ! 0 ) ) , ! 0 } var e = b . startContainer ; "number" == typeof c && "number" == typeof d && e . type == CKEDITOR . NODE _ELEMENT && ( f ( a . startContainer , e , d ) || f ( a . endContainer , e , c ) ) } , isDropRangeAffectedByDragRange : function ( a , b ) { var d = b . startContainer , c = b . endOffset ; return a . endContainer . equals ( d ) &&
c || a . endContainer . getParent ( ) . equals ( d ) && a . endContainer . getIndex ( ) < c ? ! 0 : ! 1 } , internalDrop : function ( b , d , c , f ) { var e = CKEDITOR . plugins . clipboard , g = f . editable ( ) , k , l ; f . fire ( "saveSnapshot" ) ; f . fire ( "lockSnapshot" , { dontUpdate : 1 } ) ; CKEDITOR . env . ie && 10 > CKEDITOR . env . version && this . fixSplitNodesAfterDrop ( b , d , e . dragStartContainerChildCount , e . dragEndContainerChildCount ) ; ( l = this . isDropRangeAffectedByDragRange ( b , d ) ) || ( k = b . createBookmark ( ! 1 ) ) ; e = d . clone ( ) . createBookmark ( ! 1 ) ; l && ( k = b . createBookmark ( ! 1 ) ) ; b = k . startNode ; d =
a . endOffset <= c || a . startContainer . getParent ( ) . equals ( d ) && a . startContainer . getIndex ( ) < c || a . endContainer . getParent ( ) . equals ( d ) && a . endContainer . getIndex ( ) < c ? ! 0 : ! 1 } , internalDrop : function ( b , d , c , f ) { var e = CKEDITOR . plugins . clipboard , g = f . editable ( ) , k , l ; f . fire ( "saveSnapshot" ) ; f . fire ( "lockSnapshot" , { dontUpdate : 1 } ) ; CKEDITOR . env . ie && 10 > CKEDITOR . env . version && this . fixSplitNodesAfterDrop ( b , d , e . dragStartContainerChildCount , e . dragEndContainerChildCount ) ; ( l = this . isDropRangeAffectedByDragRange ( b , d ) ) || ( k = b . createBookmark ( ! 1 ) ) ;
k . endNode ; l = e . startNode ; d && b . getPosition ( l ) & CKEDITOR . POSITION _PRECEDING && d . getPosition ( l ) & CKEDITOR . POSITION _FOLLOWING && l . insertBefore ( b ) ; b = f . createRange ( ) ; b . moveToBookmark ( k ) ; g . extractHtmlFromRange ( b , 1 ) ; d = f . createRange ( ) ; d . moveToBookmark ( e ) ; a ( f , { dataTransfer : c , method : "drop" , range : d } , 1 ) ; f . fire ( "unlockSnapshot" ) } , getRangeAtDropPosition : function ( a , b ) { var d = a . data . $ , c = d . clientX , f = d . clientY , e = b . getSelection ( ! 0 ) . getRanges ( ) [ 0 ] , g = b . createRange ( ) ; if ( a . data . testRange ) return a . data . testRange ; if ( document . caretRangeFromPoint ) d =
e = d . clone ( ) . createBookmark ( ! 1 ) ; l && ( k = b . createBookmark ( ! 1 ) ) ; b = k . startNode ; d = k . endNode ; l = e . startNode ; d && b . getPosition ( l ) & CKEDITOR . POSITION _PRECEDING && d . getPosition ( l ) & CKEDITOR . POSITION _FOLLOWING && l . insertBefore ( b ) ; b = f . createRange ( ) ; b . moveToBookmark ( k ) ; g . extractHtmlFromRange ( b , 1 ) ; d = f . createRange ( ) ; d . moveToBookmark ( e ) ; a ( f , { dataTransfer : c , method : "drop" , range : d } , 1 ) ; f . fire ( "unlockSnapshot" ) } , getRangeAtDropPosition : function ( a , b ) { var d = a . data . $ , c = d . clientX , f = d . clientY , e = b . getSelection ( ! 0 ) . getRanges ( ) [ 0 ] , g =
b . document . $ . caretRangeFromPoint ( c , f ) , g . setStart ( CKEDITOR . dom . node ( d . startContainer ) , d . startOffset ) , g . collapse ( ! 0 ) ; else if ( d . rangeParent ) g . setStart ( CKEDITOR . dom . node ( d . rangeParent ) , d . rangeOffset ) , g . collapse ( ! 0 ) ; else { if ( CKEDITOR . env . ie && 8 < CKEDITOR . env . version && e && b . editable ( ) . hasFocus ) return e ; if ( document . body . createTextRange ) { b . focus ( ) ; d = b . document . getBody ( ) . $ . createTextRange ( ) ; try { for ( var k = ! 1 , l = 0 ; 20 > l && ! k ; l ++ ) { if ( ! k ) try { d . moveToPoint ( c , f - l ) , k = ! 0 } catch ( m ) { } if ( ! k ) try { d . moveToPoint ( c , f + l ) , k = ! 0 } catch ( r ) { } } if ( k ) { var x =
b . createRange ( ) ; if ( a . data . testRange ) return a . data . testRange ; if ( document . caretRangeFromPoint ) d = b . document . $ . caretRangeFromPoint ( c , f ) , g . setStart ( CKEDITOR . dom . node ( d . startContainer ) , d . startOffset ) , g . collapse ( ! 0 ) ; else if ( d . rangeParent ) g . setStart ( CKEDITOR . dom . node ( d . rangeParent ) , d . rangeOffset ) , g . collapse ( ! 0 ) ; else { if ( CKEDITOR . env . ie && 8 < CKEDITOR . env . version && e && b . editable ( ) . hasFocus ) return e ; if ( document . body . createTextRange ) { b . focus ( ) ; d = b . document . getBody ( ) . $ . createTextRange ( ) ; try { for ( var k = ! 1 , l = 0 ; 20 > l &&
"cke-temp-" + ( new Date ) . getTime ( ) ; d . pasteHTML ( '\x3cspan id\x3d"' + x + '"\x3e \x3c/span\x3e' ) ; var B = b . document . getById ( x ) ; g . moveToPosition ( B , CKEDITOR . POSITION _BEFORE _START ) ; B . remove ( ) } else { var A = b . document . $ . elementFromPoint ( c , f ) , z = new CKEDITOR . dom . element ( A ) , D ; if ( z . equals ( b . editable ( ) ) || "html" == z . getName ( ) ) return e && e . startContainer && ! e . startContainer . equals ( b . editable ( ) ) ? e : null ; D = z . getClientRect ( ) ; c < D . left ? g . setStartAt ( z , CKEDITOR . POSITION _AFTER _START ) : g . setStartAt ( z , CKEDITOR . POSITION _BEFORE _END ) ; g . collapse ( ! 0 ) } } catch ( G ) { return null } } else return null } return g } ,
! k ; l ++ ) { if ( ! k ) try { d . moveToPoint ( c , f - l ) , k = ! 0 } catch ( m ) { } if ( ! k ) try { d . moveToPoint ( c , f + l ) , k = ! 0 } catch ( r ) { } } if ( k ) { var x = "cke-temp-" + ( new Date ) . getTime ( ) ; d . pasteHTML ( '\x3cspan id\x3d"' + x + '"\x3e \x3c/span\x3e' ) ; var B = b . document . getById ( x ) ; g . moveToPosition ( B , CKEDITOR . POSITION _BEFORE _START ) ; B . remove ( ) } else { var A = b . document . $ . elementFromPoint ( c , f ) , z = new CKEDITOR . dom . element ( A ) , D ; if ( z . equals ( b . editable ( ) ) || "html" == z . getName ( ) ) return e && e . startContainer && ! e . startContainer . equals ( b . editable ( ) ) ? e : null ; D = z . getClientRect ( ) ;
initDragDataTransfer : function ( a , b ) { var d = a . data . $ ? a . data . $ . dataTransfer : null , c = new this . dataTransfer ( d , b ) ; d ? this . dragData && c . id == this . dragData . id ? c = this . dragData : this . dragData = c : this . dragData ? c = this . dragData : this . dragData = c ; a . data . dataTransfer = c } , resetDragDataTransfer : function ( ) { this . dragData = null } , initPasteDataTransfer : function ( a , b ) { if ( this . isCustomCopyCutSupported && a && a . data && a . data . $ ) { var d = new this . dataTransfer ( a . data . $ . clipboardData , b ) ; this . copyCutData && d . id == this . copyCutData . id ? ( d = this . copyCutData ,
c < D . left ? g . setStartAt ( z , CKEDITOR . POSITION _AFTER _START ) : g . setStartAt ( z , CKEDITOR . POSITION _BEFORE _END ) ; g . collapse ( ! 0 ) } } catch ( G ) { return null } } else return null } return g } , initDragDataTransfer : function ( a , b ) { var d = a . data . $ ? a . data . $ . dataTransfer : null , c = new this . dataTransfer ( d , b ) ; d ? this . dragData && c . id == this . dragData . id ? c = this . dragData : this . dragData = c : this . dragData ? c = this . dragData : this . dragData = c ; a . data . dataTransfer = c } , resetDragDataTransfer : function ( ) { this . dragData = null } , initPasteDataTransfer : function ( a , b ) { if ( this . isCustomCopyCutSupported &&
d . $ = a . data . $ . clipboardData ) : this . copyCutData = d ; return d } return new this . dataTransfer ( null , b ) } , preventDefaultDropOnElement : function ( a ) { a && a . on ( "dragover" , k ) } } ; var d = CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ? "cke/id" : "Text" ; CKEDITOR . plugins . clipboard . dataTransfer = function ( a , b ) { a && ( this . $ = a ) ; this . _ = { metaRegExp : /^<meta.*?>/i , bodyRegExp : /<body(?:[\s\S]*?)>([\s\S]*)<\/body>/i , fragmentRegExp : /\x3c!--(?:Start|End)Fragment--\x3e/g , data : { } , files : [ ] , normalizeType : function ( a ) { a = a . toLowerCase ( ) ; return "text" ==
a && a . data && a . data . $ ) { var d = new this . dataTransfer ( a . data . $ . clipboardData , b ) ; this . copyCutData && d . id == this . copyCutData . id ? ( d = this . copyCutData , d . $ = a . data . $ . clipboardData ) : this . copyCutData = d ; return d } return new this . dataTransfer ( null , b ) } , preventDefaultDropOnElement : function ( a ) { a && a . on ( "dragover" , k ) } } ; var d = CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ? "cke/id" : "Text" ; CKEDITOR . plugins . clipboard . dataTransfer = function ( a , b ) { a && ( this . $ = a ) ; this . _ = { metaRegExp : /^<meta.*?>/i , bodyRegExp : /<body(?:[\s\S]*?)>([\s\S]*)<\/body>/i ,
a || "text/plain" == a ? "Text" : "url" == a ? "URL" : a } } ; this . id = this . getData ( d ) ; this . id || ( this . id = "Text" == d ? "" : "cke-" + CKEDITOR . tools . getUniqueId ( ) ) ; if ( "Text" != d ) try { this . $ . setData ( d , this . id ) } catch ( c ) { } b && ( this . sourceEditor = b , this . setData ( "text/html" , b . getSelectedHtml ( 1 ) ) , "Text" == d || this . getData ( "text/plain" ) || this . setData ( "text/plain" , b . getSelection ( ) . getSelectedText ( ) ) ) } ; CKEDITOR . DATA _TRANSFER _INTERNAL = 1 ; CKEDITOR . DATA _TRANSFER _CROSS _EDITORS = 2 ; CKEDITOR . DATA _TRANSFER _EXTERNAL = 3 ; CKEDITOR . plugins . clipboard . dataTransfer . prototype =
fragmentRegExp : /\x3c!--(?:Start|End)Fragment--\x3e/g , data : { } , files : [ ] , normalizeType : function ( a ) { a = a . toLowerCase ( ) ; return "text" == a || "text/plain" == a ? "Text" : "url" == a ? "URL" : a } } ; this . id = this . getData ( d ) ; this . id || ( this . id = "Text" == d ? "" : "cke-" + CKEDITOR . tools . getUniqueId ( ) ) ; if ( "Text" != d ) try { this . $ . setData ( d , this . id ) } catch ( c ) { } b && ( this . sourceEditor = b , this . setData ( "text/html" , b . getSelectedHtml ( 1 ) ) , "Text" == d || this . getData ( "text/plain" ) || this . setData ( "text/plain" , b . getSelection ( ) . getSelectedText ( ) ) ) } ; CKEDITOR . DATA _TRANSFER _INTERNAL =
{ getData : function ( a ) { a = this . _ . normalizeType ( a ) ; var b = this . _ . data [ a ] ; if ( void 0 === b || null === b || "" === b ) try { b = this . $ . getData ( a ) } catch ( d ) { } if ( void 0 === b || null === b || "" === b ) b = "" ; "text/html" == a ? ( b = b . replace ( this . _ . metaRegExp , "" ) , ( a = this . _ . bodyRegExp . exec ( b ) ) && a . length && ( b = a [ 1 ] , b = b . replace ( this . _ . fragmentRegExp , "" ) ) ) : "Text" == a && CKEDITOR . env . gecko && this . getFilesCount ( ) && "file://" == b . substring ( 0 , 7 ) && ( b = "" ) ; return b } , setData : function ( a , b ) { a = this . _ . normalizeType ( a ) ; this . _ . data [ a ] = b ; if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ||
1 ; CKEDITOR . DATA _TRANSFER _CROSS _EDITORS = 2 ; CKEDITOR . DATA _TRANSFER _EXTERNAL = 3 ; CKEDITOR . plugins . clipboard . dataTransfer . prototype = { getData : function ( a ) { a = this . _ . normalizeType ( a ) ; var b = this . _ . data [ a ] ; if ( void 0 === b || null === b || "" === b ) try { b = this . $ . getData ( a ) } catch ( d ) { } if ( void 0 === b || null === b || "" === b ) b = "" ; "text/html" == a ? ( b = b . replace ( this . _ . metaRegExp , "" ) , ( a = this . _ . bodyRegExp . exec ( b ) ) && a . length && ( b = a [ 1 ] , b = b . replace ( this . _ . fragmentRegExp , "" ) ) ) : "Text" == a && CKEDITOR . env . gecko && this . getFilesCount ( ) && "file://" == b . substring ( 0 ,
"URL" == a || "Text" == a ) { "Text" == d && "Text" == a && ( this . id = b ) ; try { this . $ . setData ( a , b ) } catch ( c ) { } } } , getTransferType : function ( a ) { return this . sourceEditor ? this . sourceEditor == a ? CKEDITOR . DATA _TRANSFER _INTERNAL : CKEDITOR . DATA _TRANSFER _CROSS _EDITORS : CKEDITOR . DATA _TRANSFER _EXTERNAL } , cacheData : function ( ) { function a ( d ) { d = b . _ . normalizeType ( d ) ; var c = b . getData ( d ) ; c && ( b . _ . data [ d ] = c ) } if ( this . $ ) { var b = this , d , c ; if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ) { if ( this . $ . types ) for ( d = 0 ; d < this . $ . types . length ; d ++ ) a ( this . $ . types [ d ] ) } else a ( "Text" ) ,
7 ) && ( b = "" ) ; return b } , setData : function ( a , b ) { a = this . _ . normalizeType ( a ) ; this . _ . data [ a ] = b ; if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported || "URL" == a || "Text" == a ) { "Text" == d && "Text" == a && ( this . id = b ) ; try { this . $ . setData ( a , b ) } catch ( c ) { } } } , getTransferType : function ( a ) { return this . sourceEditor ? this . sourceEditor == a ? CKEDITOR . DATA _TRANSFER _INTERNAL : CKEDITOR . DATA _TRANSFER _CROSS _EDITORS : CKEDITOR . DATA _TRANSFER _EXTERNAL } , cacheData : function ( ) { function a ( d ) { d = b . _ . normalizeType ( d ) ; var c = b . getData ( d ) ; c && ( b . _ . data [ d ] =
a ( "URL" ) ; c = this . _getImageFromClipboard ( ) ; if ( this . $ && this . $ . files || c ) { this . _ . files = [ ] ; for ( d = 0 ; d < this . $ . files . length ; d ++ ) this . _ . files . push ( this . $ . files [ d ] ) ; 0 === this . _ . files . length && c && this . _ . files . push ( c ) } } } , getFilesCount : function ( ) { return this . _ . files . length ? this . _ . files . length : this . $ && this . $ . files && this . $ . files . length ? this . $ . files . length : this . _getImageFromClipboard ( ) ? 1 : 0 } , getFile : function ( a ) { return this . _ . files . length ? this . _ . files [ a ] : this . $ && this . $ . files && this . $ . files . length ? this . $ . files [ a ] : 0 === a ?
c ) } if ( this . $ ) { var b = this , d , c ; if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ) { if ( this . $ . types ) for ( d = 0 ; d < this . $ . types . length ; d ++ ) a ( this . $ . types [ d ] ) } else a ( "Text" ) , a ( "URL" ) ; c = this . _getImageFromClipboard ( ) ; if ( this . $ && this . $ . files || c ) { this . _ . files = [ ] ; for ( d = 0 ; d < this . $ . files . length ; d ++ ) this . _ . files . push ( this . $ . files [ d ] ) ; 0 === this . _ . files . length && c && this . _ . files . push ( c ) } } } , getFilesCount : function ( ) { return this . _ . files . length ? this . _ . files . length : this . $ && this . $ . files && this . $ . files . length ? this . $ . files . length :
this . _getImageFromClipboard ( ) : void 0 } , isEmpty : function ( ) { var a = { } , b ; if ( this . getFilesCount ( ) ) return ! 1 ; for ( b in this . _ . data ) a [ b ] = 1 ; if ( this . $ ) if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ) { if ( this . $ . types ) for ( var c = 0 ; c < this . $ . types . length ; c ++ ) a [ this . $ . types [ c ] ] = 1 } else a . Text = 1 , a . URL = 1 ; "Text" != d && ( a [ d ] = 0 ) ; for ( b in a ) if ( a [ b ] && "" !== this . getData ( b ) ) return ! 1 ; return ! 0 } , _getImageFromClipboard : function ( ) { var a ; if ( this . $ && this . $ . items && this . $ . items [ 0 ] ) try { if ( ( a = this . $ . items [ 0 ] . getAsFile ( ) ) && a . type ) return a } catch ( b ) { } } } } ( ) ,
this . _getImageFromClipboard ( ) ? 1 : 0 } , getFile : function ( a ) { return this . _ . files . length ? this . _ . files [ a ] : this . $ && this . $ . files && this . $ . files . length ? this . $ . files [ a ] : 0 === a ? this . _getImageFromClipboard ( ) : void 0 } , isEmpty : function ( ) { var a = { } , b ; if ( this . getFilesCount ( ) ) return ! 1 ; for ( b in this . _ . data ) a [ b ] = 1 ; if ( this . $ ) if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ) { if ( this . $ . types ) for ( var c = 0 ; c < this . $ . types . length ; c ++ ) a [ this . $ . types [ c ] ] = 1 } else a . Text = 1 , a . URL = 1 ; "Text" != d && ( a [ d ] = 0 ) ; for ( b in a ) if ( a [ b ] && "" !==
function ( ) { CKEDITOR . plugins . add ( "panel" , { beforeInit : function ( a ) { a . ui . addHandler ( CKEDITOR . UI _PANEL , CKEDITOR . ui . panel . handler ) } } ) ; CKEDITOR . UI _PANEL = "panel" ; CKEDITOR . ui . panel = function ( a , c ) { c && CKEDITOR . tools . extend ( this , c ) ; CKEDITOR . tools . extend ( this , { className : "" , css : [ ] } ) ; this . id = CKEDITOR . tools . getNextId ( ) ; this . document = a ; this . isFramed = this . forceIFrame || this . css . length ; this . _ = { blocks : { } } } ; CKEDITOR . ui . panel . handler = { create : function ( a ) { return new CKEDITOR . ui . panel ( a ) } } ; var a = CKEDITOR . addTemplate ( "panel" ,
this . getData ( b ) ) return ! 1 ; return ! 0 } , _getImageFromClipboard : function ( ) { var a ; if ( this . $ && this . $ . items && this . $ . items [ 0 ] ) try { if ( ( a = this . $ . items [ 0 ] . getAsFile ( ) ) && a . type ) return a } catch ( b ) { } } } } ( ) , function ( ) { CKEDITOR . plugins . add ( "panel" , { beforeInit : function ( a ) { a . ui . addHandler ( CKEDITOR . UI _PANEL , CKEDITOR . ui . panel . handler ) } } ) ; CKEDITOR . UI _PANEL = "panel" ; CKEDITOR . ui . panel = function ( a , c ) { c && CKEDITOR . tools . extend ( this , c ) ; CKEDITOR . tools . extend ( this , { className : "" , css : [ ] } ) ; this . id = CKEDITOR . tools . getNextId ( ) ; this . document =
'\x3cdiv lang\x3d"{langCode}" id\x3d"{id}" dir\x3d{dir} class\x3d"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style\x3d"z-index:{z-index}" role\x3d"presentation"\x3e{frame}\x3c/div\x3e' ) , e = CKEDITOR . addTemplate ( "panel-frame" , '\x3ciframe id\x3d"{id}" class\x3d"cke_panel_frame" role\x3d"presentation" frameborder\x3d"0" src\x3d"{src}"\x3e\x3c/iframe\x3e' ) , c = CKEDITOR . addTemplate ( "panel-frame-inner" , '\x3c!DOCTYPE html\x3e\x3chtml class\x3d"cke_panel_container {env}" dir\x3d"{dir}" lang\x3d"{langCode}"\x3e\x3chead\x3e{css}\x3c/head\x3e\x3cbody class\x3d"cke_{dir}" style\x3d"margin:0;padding:0" onload\x3d"{onload}"\x3e\x3c/body\x3e\x3c/html\x3e' ) ;
a ; this . isFramed = this . forceIFrame || this . css . length ; this . _ = { blocks : { } } } ; CKEDITOR . ui . panel . handler = { create : function ( a ) { return new CKEDITOR . ui . panel ( a ) } } ; var a = CKEDITOR . addTemplate ( "panel" , '\x3cdiv lang\x3d"{langCode}" id\x3d"{id}" dir\x3d{dir} class\x3d"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style\x3d"z-index:{z-index}" role\x3d"presentation"\x3e{frame}\x3c/div\x3e' ) , e = CKEDITOR . addTemplate ( "panel-frame" , '\x3ciframe id\x3d"{id}" class\x3d"cke_panel_frame" role\x3d"presentation" frameborder\x3d"0" src\x3d"{src}"\x3e\x3c/iframe\x3e' ) ,
CKEDITOR . ui . panel . prototype = { render : function ( g , f ) { this . getHolderElement = function ( ) { var a = this . _ . holder ; if ( ! a ) { if ( this . isFramed ) { var a = this . document . getById ( this . id + "_frame" ) , b = a . getParent ( ) , a = a . getFrameDocument ( ) ; CKEDITOR . env . iOS && b . setStyles ( { overflow : "scroll" , "-webkit-overflow-scrolling" : "touch" } ) ; b = CKEDITOR . tools . addFunction ( CKEDITOR . tools . bind ( function ( ) { this . isLoaded = ! 0 ; if ( this . onLoad ) this . onLoad ( ) } , this ) ) ; a . write ( c . output ( CKEDITOR . tools . extend ( { css : CKEDITOR . tools . buildStyleHtml ( this . css ) , onload : "window.parent.CKEDITOR.tools.callFunction(" +
c = CKEDITOR . addTemplate ( "panel-frame-inner" , '\x3c!DOCTYPE html\x3e\x3chtml class\x3d"cke_panel_container {env}" dir\x3d"{dir}" lang\x3d"{langCode}"\x3e\x3chead\x3e{css}\x3c/head\x3e\x3cbody class\x3d"cke_{dir}" style\x3d"margin:0;padding:0" onload\x3d"{onload}"\x3e\x3c/body\x3e\x3c/html\x3e' ) ; CKEDITOR . ui . panel . prototype = { render : function ( g , f ) { this . getHolderElement = function ( ) { var a = this . _ . holder ; if ( ! a ) { if ( this . isFramed ) { var a = this . document . getById ( this . id + "_frame" ) , b = a . getParent ( ) , a = a . getFrameDocument ( ) ;
b + ");" } , m ) ) ) ; a . getWindow ( ) . $ . CKEDITOR = CKEDITOR ; a . on ( "keydown" , function ( a ) { var b = a . data . getKeystroke ( ) , c = this . document . getById ( this . id ) . getAttribute ( "dir" ) ; this . _ . onKeyDown && ! 1 === this . _ . onKeyDown ( b ) ? a . data . preventDefault ( ) : ( 27 == b || b == ( "rtl" == c ? 39 : 37 ) ) && this . onEscape && ! 1 === this . onEscape ( b ) && a . data . preventDefault ( ) } , this ) ; a = a . getBody ( ) ; a . unselectable ( ) ; CKEDITOR . env . air && CKEDITOR . tools . callFunction ( b ) } else a = this . document . getById ( this . id ) ; this . _ . holder = a } return a } ; var m = { editorId : g . id , id : this . id , langCode : g . langCode ,
CKEDITOR . env . iOS && b . setStyles ( { overflow : "scroll" , "-webkit-overflow-scrolling" : "touch" } ) ; b = CKEDITOR . tools . addFunction ( CKEDITOR . tools . bind ( function ( ) { this . isLoaded = ! 0 ; if ( this . onLoad ) this . onLoad ( ) } , this ) ) ; a . write ( c . output ( CKEDITOR . tools . extend ( { css : CKEDITOR . tools . buildStyleHtml ( this . css ) , onload : "window.parent.CKEDITOR.tools.callFunction(" + b + ");" } , m ) ) ) ; a . getWindow ( ) . $ . CKEDITOR = CKEDITOR ; a . on ( "keydown" , function ( a ) { var b = a . data . getKeystroke ( ) , c = this . document . getById ( this . id ) . getAttribute ( "dir" ) ; this . _ . onKeyDown &&
dir : g . lang . dir , cls : this . className , frame : "" , env : CKEDITOR . env . cssClass , "z-index" : g . config . baseFloatZIndex + 1 } ; if ( this . isFramed ) { var l = CKEDITOR . env . air ? "javascript:void(0)" : CKEDITOR . env . ie ? "javascript:void(function(){" + encodeURIComponent ( "document.open();(" + CKEDITOR . tools . fixDomain + ")();document.close();" ) + "}())" : "" ; m . frame = e . output ( { id : this . id + "_frame" , src : l } ) } l = a . output ( m ) ; f && f . push ( l ) ; return l } , addBlock : function ( a , c ) { c = this . _ . blocks [ a ] = c instanceof CKEDITOR . ui . panel . block ? c : new CKEDITOR . ui . panel . block ( this . getHolderElement ( ) ,
! 1 === this . _ . onKeyDown ( b ) ? a . data . preventDefault ( ) : ( 27 == b || b == ( "rtl" == c ? 39 : 37 ) ) && this . onEscape && ! 1 === this . onEscape ( b ) && a . data . preventDefault ( ) } , this ) ; a = a . getBody ( ) ; a . unselectable ( ) ; CKEDITOR . env . air && CKEDITOR . tools . callFunction ( b ) } else a = this . document . getById ( this . id ) ; this . _ . holder = a } return a } ; var m = { editorId : g . id , id : this . id , langCode : g . langCode , dir : g . lang . dir , cls : this . className , frame : "" , env : CKEDITOR . env . cssClass , "z-index" : g . config . baseFloatZIndex + 1 } ; if ( this . isFramed ) { var l = CKEDITOR . env . air ? "javascript:void(0)" :
c ) ; this . _ . currentBlock || this . showBlock ( a ) ; return c } , getBlock : function ( a ) { return this . _ . blocks [ a ] } , showBlock : function ( a ) { a = this . _ . blocks [ a ] ; var c = this . _ . currentBlock , e = ! this . forceIFrame || CKEDITOR . env . ie ? this . _ . holder : this . document . getById ( this . id + "_frame" ) ; c && c . hide ( ) ; this . _ . currentBlock = a ; CKEDITOR . fire ( "ariaWidget" , e ) ; a . _ . focusIndex = - 1 ; this . _ . onKeyDown = a . onKeyDown && CKEDITOR . tools . bind ( a . onKeyDown , a ) ; a . show ( ) ; return a } , destroy : function ( ) { this . element && this . element . remove ( ) } } ; CKEDITOR . ui . panel . block =
CKEDITOR . env . ie ? "javascript:void(function(){" + encodeURIComponent ( "document.open();(" + CKEDITOR . tools . fixDomain + ")();document.close();" ) + "}())" : "" ; m . frame = e . output ( { id : this . id + "_frame" , src : l } ) } l = a . output ( m ) ; f && f . push ( l ) ; return l } , addBlock : function ( a , c ) { c = this . _ . blocks [ a ] = c instanceof CKEDITOR . ui . panel . block ? c : new CKEDITOR . ui . panel . block ( this . getHolderElement ( ) , c ) ; this . _ . currentBlock || this . showBlock ( a ) ; return c } , getBlock : function ( a ) { return this . _ . blocks [ a ] } , showBlock : function ( a ) { a = this . _ . blocks [ a ] ; var c =
CKEDITOR . tools . createClass ( { $ : function ( a , c ) { this . element = a . append ( a . getDocument ( ) . createElement ( "div" , { attributes : { tabindex : - 1 , "class" : "cke_panel_block" } , styles : { display : "none" } } ) ) ; c && CKEDITOR . tools . extend ( this , c ) ; this . element . setAttributes ( { role : this . attributes . role || "presentation" , "aria-label" : this . attributes [ "aria-label" ] , title : this . attributes . title || this . attributes [ "aria-label" ] } ) ; this . keys = { } ; this . _ . focusIndex = - 1 ; this . element . disableContextMenu ( ) } , _ : { markItem : function ( a ) { - 1 != a && ( a = this . element . getElementsByTag ( "a" ) . getItem ( this . _ . focusIndex =
this . _ . currentBlock , e = ! this . forceIFrame || CKEDITOR . env . ie ? this . _ . holder : this . document . getById ( this . id + "_frame" ) ; c && c . hide ( ) ; this . _ . currentBlock = a ; CKEDITOR . fire ( "ariaWidget" , e ) ; a . _ . focusIndex = - 1 ; this . _ . onKeyDown = a . onKeyDown && CKEDITOR . tools . bind ( a . onKeyDown , a ) ; a . show ( ) ; return a } , destroy : function ( ) { this . element && this . element . remove ( ) } } ; CKEDITOR . ui . panel . block = CKEDITOR . tools . createClass ( { $ : function ( a , c ) { this . element = a . append ( a . getDocument ( ) . createElement ( "div" , { attributes : { tabindex : - 1 , "class" : "cke_panel_block" } ,
a ) , CKEDITOR . env . webkit && a . getDocument ( ) . getWindow ( ) . focus ( ) , a . focus ( ) , this . onMark && this . onMark ( a ) ) } } , proto : { show : function ( ) { this . element . setStyle ( "display" , "" ) } , hide : function ( ) { this . onHide && ! 0 === this . onHide . call ( this ) || this . element . setStyle ( "display" , "none" ) } , onKeyDown : function ( a , c ) { var e = this . keys [ a ] ; switch ( e ) { case "next" : for ( var l = this . _ . focusIndex , e = this . element . getElementsByTag ( "a" ) , k ; k = e . getItem ( ++ l ) ; ) if ( k . getAttribute ( "_cke_focus" ) && k . $ . offsetWidth ) { this . _ . focusIndex = l ; k . focus ( ) ; break } return k ||
styles : { display : "none" } } ) ) ; c && CKEDITOR . tools . extend ( this , c ) ; this . element . setAttributes ( { role : this . attributes . role || "presentation" , "aria-label" : this . attributes [ "aria-label" ] , title : this . attributes . title || this . attributes [ "aria-label" ] } ) ; this . keys = { } ; this . _ . focusIndex = - 1 ; this . element . disableContextMenu ( ) } , _ : { markItem : function ( a ) { - 1 != a && ( a = this . element . getElementsByTag ( "a" ) . getItem ( this . _ . focusIndex = a ) , CKEDITOR . env . webkit && a . getDocument ( ) . getWindow ( ) . focus ( ) , a . focus ( ) , this . onMark && this . onMark ( a ) ) } } , proto : { show : function ( ) { this . element . setStyle ( "display" ,
c ? ! 1 : ( this . _ . focusIndex = - 1 , this . onKeyDown ( a , 1 ) ) ; case "prev" : l = this . _ . focusIndex ; for ( e = this . element . getElementsByTag ( "a" ) ; 0 < l && ( k = e . getItem ( -- l ) ) ; ) { if ( k . getAttribute ( "_cke_focus" ) && k . $ . offsetWidth ) { this . _ . focusIndex = l ; k . focus ( ) ; break } k = null } return k || c ? ! 1 : ( this . _ . focusIndex = e . count ( ) , this . onKeyDown ( a , 1 ) ) ; case "click" : case "mouseup" : return l = this . _ . focusIndex , ( k = 0 <= l && this . element . getElementsByTag ( "a" ) . getItem ( l ) ) && ( k . $ [ e ] ? k . $ [ e ] ( ) : k . $ [ "on" + e ] ( ) ) , ! 1 } return ! 0 } } } ) } ( ) , CKEDITOR . plugins . add ( "floatpanel" ,
"" ) } , hide : function ( ) { this . onHide && ! 0 === this . onHide . call ( this ) || this . element . setStyle ( "display" , "none" ) } , onKeyDown : function ( a , c ) { var e = this . keys [ a ] ; switch ( e ) { case "next" : for ( var l = this . _ . focusIndex , e = this . element . getElementsByTag ( "a" ) , k ; k = e . getItem ( ++ l ) ; ) if ( k . getAttribute ( "_cke_focus" ) && k . $ . offsetWidth ) { this . _ . focusIndex = l ; k . focus ( ) ; break } return k || c ? ! 1 : ( this . _ . focusIndex = - 1 , this . onKeyDown ( a , 1 ) ) ; case "prev" : l = this . _ . focusIndex ; for ( e = this . element . getElementsByTag ( "a" ) ; 0 < l && ( k = e . getItem ( -- l ) ) ; ) { if ( k . getAttribute ( "_cke_focus" ) &&
{ requires : "panel" } ) , function ( ) { function a ( a , g , f , m , l ) { l = CKEDITOR . tools . genKey ( g . getUniqueId ( ) , f . getUniqueId ( ) , a . lang . dir , a . uiColor || "" , m . css || "" , l || "" ) ; var k = e [ l ] ; k || ( k = e [ l ] = new CKEDITOR . ui . panel ( g , m ) , k . element = f . append ( CKEDITOR . dom . element . createFromHtml ( k . render ( a ) , g ) ) , k . element . setStyles ( { display : "none" , position : "absolute" } ) ) ; return k } var e = { } ; CKEDITOR . ui . floatPanel = CKEDITOR . tools . createClass ( { $ : function ( c , e , f , m ) { function l ( ) { h . hide ( ) } f . forceIFrame = 1 ; f . toolbarRelated && c . elementMode == CKEDITOR . ELEMENT _MODE _INLINE &&
k . $ . offsetWidth ) { this . _ . focusIndex = l ; k . focus ( ) ; break } k = null } return k || c ? ! 1 : ( this . _ . focusIndex = e . count ( ) , this . onKeyDown ( a , 1 ) ) ; case "click" : case "mouseup" : return l = this . _ . focusIndex , ( k = 0 <= l && this . element . getElementsByTag ( "a" ) . getItem ( l ) ) && ( k . $ [ e ] ? k . $ [ e ] ( ) : k . $ [ "on" + e ] ( ) ) , ! 1 } return ! 0 } } } ) } ( ) , CKEDITOR . plugins . add ( "floatpanel" , { requires : "panel" } ) , function ( ) { function a ( a , g , f , m , l ) { l = CKEDITOR . tools . genKey ( g . getUniqueId ( ) , f . getUniqueId ( ) , a . lang . dir , a . uiColor || "" , m . css || "" , l || "" ) ; var k = e [ l ] ; k || ( k = e [ l ] = new CKEDITOR . ui . panel ( g ,
( e = CKEDITOR . document . getById ( "cke_" + c . name ) ) ; var k = e . getDocument ( ) ; m = a ( c , k , e , f , m || 0 ) ; var b = m . element , d = b . getFirst ( ) , h = this ; b . disableContextMenu ( ) ; this . element = b ; this . _ = { editor : c , panel : m , parentElement : e , definition : f , document : k , iframe : d , children : [ ] , dir : c . lang . dir , showBlockParams : null } ; c . on ( "mode" , l ) ; c . on ( "resize" , l ) ; k . getWindow ( ) . on ( "resize" , function ( ) { this . reposition ( ) } , this ) } , proto : { addBlock : function ( a , e ) { return this . _ . panel . addBlock ( a , e ) } , addListBlock : function ( a , e ) { return this . _ . panel . addListBlock ( a ,
m ) , k . element = f . append ( CKEDITOR . dom . element . createFromHtml ( k . render ( a ) , g ) ) , k . element . setStyles ( { display : "none" , position : "absolute" } ) ) ; return k } var e = { } ; CKEDITOR . ui . floatPanel = CKEDITOR . tools . createClass ( { $ : function ( c , e , f , m ) { function l ( ) { h . hide ( ) } f . forceIFrame = 1 ; f . toolbarRelated && c . elementMode == CKEDITOR . ELEMENT _MODE _INLINE && ( e = CKEDITOR . document . getById ( "cke_" + c . name ) ) ; var k = e . getDocument ( ) ; m = a ( c , k , e , f , m || 0 ) ; var b = m . element , d = b . getFirst ( ) , h = this ; b . disableContextMenu ( ) ; this . element = b ; this . _ = { editor : c ,
e ) } , getBlock : function ( a ) { return this . _ . panel . getBlock ( a ) } , showBlock : function ( a , e , f , m , l , k ) { var b = this . _ . panel , d = b . showBlock ( a ) ; this . _ . showBlockParams = [ ] . slice . call ( arguments ) ; this . allowBlur ( ! 1 ) ; var h = this . _ . editor . editable ( ) ; this . _ . returnFocus = h . hasFocus ? h : new CKEDITOR . dom . element ( CKEDITOR . document . $ . activeElement ) ; this . _ . hideTimeout = 0 ; var p = this . element , h = this . _ . iframe , h = CKEDITOR . env . ie && ! CKEDITOR . env . edge ? h : new CKEDITOR . dom . window ( h . $ . contentWindow ) , v = p . getDocument ( ) , u = this . _ . parentElement . getPositionedAncestor ( ) ,
panel : m , parentElement : e , definition : f , document : k , iframe : d , children : [ ] , dir : c . lang . dir , showBlockParams : null } ; c . on ( "mode" , l ) ; c . on ( "resize" , l ) ; k . getWindow ( ) . on ( "resize" , function ( ) { this . reposition ( ) } , this ) } , proto : { addBlock : function ( a , e ) { return this . _ . panel . addBlock ( a , e ) } , addListBlock : function ( a , e ) { return this . _ . panel . addListBlock ( a , e ) } , getBlock : function ( a ) { return this . _ . panel . getBlock ( a ) } , showBlock : function ( a , e , f , m , l , k ) { var b = this . _ . panel , d = b . showBlock ( a ) ; this . _ . showBlockParams = [ ] . slice . call ( arguments ) ;
t = e . getDocumentPosition ( v ) , v = u ? u . getDocumentPosition ( v ) : { x : 0 , y : 0 } , n = "rtl" == this . _ . dir , q = t . x + ( m || 0 ) - v . x , w = t . y + ( l || 0 ) - v . y ; ! n || 1 != f && 4 != f ? n || 2 != f && 3 != f || ( q += e . $ . offsetWidth - 1 ) : q += e . $ . offsetWidth ; if ( 3 == f || 4 == f ) w += e . $ . offsetHeight - 1 ; this . _ . panel . _ . offsetParentId = e . getId ( ) ; p . setStyles ( { top : w + "px" , left : 0 , display : "" } ) ; p . setOpacity ( 0 ) ; p . getFirst ( ) . removeStyle ( "width" ) ; this . _ . editor . focusManager . add ( h ) ; this . _ . blurSet || ( CKEDITOR . event . useCapture = ! 0 , h . on ( "blur" , function ( a ) { function b ( ) { delete this . _ . returnFocus ;
this . allowBlur ( ! 1 ) ; var h = this . _ . editor . editable ( ) ; this . _ . returnFocus = h . hasFocus ? h : new CKEDITOR . dom . element ( CKEDITOR . document . $ . activeElement ) ; this . _ . hideTimeout = 0 ; var p = this . element , h = this . _ . iframe , h = CKEDITOR . env . ie && ! CKEDITOR . env . edge ? h : new CKEDITOR . dom . window ( h . $ . contentWindow ) , v = p . getDocument ( ) , u = this . _ . parentElement . getPositionedAncestor ( ) , t = e . getDocumentPosition ( v ) , v = u ? u . getDocumentPosition ( v ) : { x : 0 , y : 0 } , n = "rtl" == this . _ . dir , q = t . x + ( m || 0 ) - v . x , w = t . y + ( l || 0 ) - v . y ; ! n || 1 != f && 4 != f ? n || 2 != f && 3 != f || ( q += e . $ . offsetWidth -
this . hide ( ) } this . allowBlur ( ) && a . data . getPhase ( ) == CKEDITOR . EVENT _PHASE _AT _TARGET && this . visible && ! this . _ . activeChild && ( CKEDITOR . env . iOS ? this . _ . hideTimeout || ( this . _ . hideTimeout = CKEDITOR . tools . setTimeout ( b , 0 , this ) ) : b . call ( this ) ) } , this ) , h . on ( "focus" , function ( ) { this . _ . focused = ! 0 ; this . hideChild ( ) ; this . allowBlur ( ! 0 ) } , this ) , CKEDITOR . env . iOS && ( h . on ( "touchstart" , function ( ) { clearTimeout ( this . _ . hideTimeout ) } , this ) , h . on ( "touchend" , function ( ) { this . _ . hideTimeout = 0 ; this . focus ( ) } , this ) ) , CKEDITOR . event . useCapture = ! 1 ,
1 ) : q += e . $ . offsetWidth ; if ( 3 == f || 4 == f ) w += e . $ . offsetHeight - 1 ; this . _ . panel . _ . offsetParentId = e . getId ( ) ; p . setStyles ( { top : w + "px" , left : 0 , display : "" } ) ; p . setOpacity ( 0 ) ; p . getFirst ( ) . removeStyle ( "width" ) ; this . _ . editor . focusManager . add ( h ) ; this . _ . blurSet || ( CKEDITOR . event . useCapture = ! 0 , h . on ( "blur" , function ( a ) { function b ( ) { delete this . _ . returnFocus ; this . hide ( ) } this . allowBlur ( ) && a . data . getPhase ( ) == CKEDITOR . EVENT _PHASE _AT _TARGET && this . visible && ! this . _ . activeChild && ( CKEDITOR . env . iOS ? this . _ . hideTimeout || ( this . _ . hideTimeout =
this . _ . blurSet = 1 ) ; b . onEscape = CKEDITOR . tools . bind ( function ( a ) { if ( this . onEscape && ! 1 === this . onEscape ( a ) ) return ! 1 } , this ) ; CKEDITOR . tools . setTimeout ( function ( ) { var a = CKEDITOR . tools . bind ( function ( ) { var a = p ; a . removeStyle ( "width" ) ; if ( d . autoSize ) { var c = d . element . getDocument ( ) , c = ( CKEDITOR . env . webkit ? d . element : c . getBody ( ) ) . $ . scrollWidth ; CKEDITOR . env . ie && CKEDITOR . env . quirks && 0 < c && ( c += ( a . $ . offsetWidth || 0 ) - ( a . $ . clientWidth || 0 ) + 3 ) ; a . setStyle ( "width" , c + 10 + "px" ) ; c = d . element . $ . scrollHeight ; CKEDITOR . env . ie && CKEDITOR . env . quirks &&
CKEDITOR . tools . setTimeout ( b , 0 , this ) ) : b . call ( this ) ) } , this ) , h . on ( "focus" , function ( ) { this . _ . focused = ! 0 ; this . hideChild ( ) ; this . allowBlur ( ! 0 ) } , this ) , CKEDITOR . env . iOS && ( h . on ( "touchstart" , function ( ) { clearTimeout ( this . _ . hideTimeout ) } , this ) , h . on ( "touchend" , function ( ) { this . _ . hideTimeout = 0 ; this . focus ( ) } , this ) ) , CKEDITOR . event . useCapture = ! 1 , this . _ . blurSet = 1 ) ; b . onEscape = CKEDITOR . tools . bind ( function ( a ) { if ( this . onEscape && ! 1 === this . onEscape ( a ) ) return ! 1 } , this ) ; CKEDITOR . tools . setTimeout ( function ( ) { var a = CKEDITOR . tools . bind ( function ( ) { var a =
0 < c && ( c += ( a . $ . offsetHeight || 0 ) - ( a . $ . clientHeight || 0 ) + 3 ) ; a . setStyle ( "height" , c + "px" ) ; b . _ . currentBlock . element . setStyle ( "display" , "none" ) . removeStyle ( "display" ) } else a . removeStyle ( "height" ) ; n && ( q -= p . $ . offsetWidth ) ; p . setStyle ( "left" , q + "px" ) ; var c = b . element . getWindow ( ) , a = p . $ . getBoundingClientRect ( ) , c = c . getViewPaneSize ( ) , f = a . width || a . right - a . left , e = a . height || a . bottom - a . top , h = n ? a . right : c . width - a . left , g = n ? c . width - a . right : a . left ; n ? h < f && ( q = g > f ? q + f : c . width > f ? q - a . left : q - a . right + c . width ) : h < f && ( q = g > f ? q - f : c . width >
p ; a . removeStyle ( "width" ) ; if ( d . autoSize ) { var c = d . element . getDocument ( ) , c = ( CKEDITOR . env . webkit ? d . element : c . getBody ( ) ) . $ . scrollWidth ; CKEDITOR . env . ie && CKEDITOR . env . quirks && 0 < c && ( c += ( a . $ . offsetWidth || 0 ) - ( a . $ . clientWidth || 0 ) + 3 ) ; a . setStyle ( "width" , c + 10 + "px" ) ; c = d . element . $ . scrollHeight ; CKEDITOR . env . ie && CKEDITOR . env . quirks && 0 < c && ( c += ( a . $ . offsetHeight || 0 ) - ( a . $ . clientHeight || 0 ) + 3 ) ; a . setStyle ( "height" , c + "px" ) ; b . _ . currentBlock . element . setStyle ( "display" , "none" ) . removeStyle ( "display" ) } else a . removeStyle ( "height" ) ;
f ? q - a . right + c . width : q - a . left ) ; f = a . top ; c . height - a . top < e && ( w = f > e ? w - e : c . height > e ? w - a . bottom + c . height : w - a . top ) ; CKEDITOR . env . ie && ( c = a = new CKEDITOR . dom . element ( p . $ . offsetParent ) , "html" == c . getName ( ) && ( c = c . getDocument ( ) . getBody ( ) ) , "rtl" == c . getComputedStyle ( "direction" ) && ( q = CKEDITOR . env . ie8Compat ? q - 2 * p . getDocument ( ) . getDocumentElement ( ) . $ . scrollLeft : q - ( a . $ . scrollWidth - a . $ . clientWidth ) ) ) ; var a = p . getFirst ( ) , l ; ( l = a . getCustomData ( "activePanel" ) ) && l . onHide && l . onHide . call ( this , 1 ) ; a . setCustomData ( "activePanel" , this ) ;
n && ( q -= p . $ . offsetWidth ) ; p . setStyle ( "left" , q + "px" ) ; var c = b . element . getWindow ( ) , a = p . $ . getBoundingClientRect ( ) , c = c . getViewPaneSize ( ) , f = a . width || a . right - a . left , e = a . height || a . bottom - a . top , h = n ? a . right : c . width - a . left , g = n ? c . width - a . right : a . left ; n ? h < f && ( q = g > f ? q + f : c . width > f ? q - a . left : q - a . right + c . width ) : h < f && ( q = g > f ? q - f : c . width > f ? q - a . right + c . width : q - a . left ) ; f = a . top ; c . height - a . top < e && ( w = f > e ? w - e : c . height > e ? w - a . bottom + c . height : w - a . top ) ; CKEDITOR . env . ie && ( c = a = new CKEDITOR . dom . element ( p . $ . offsetParent ) , "html" == c . getName ( ) &&
p . setStyles ( { top : w + "px" , left : q + "px" } ) ; p . setOpacity ( 1 ) ; k && k ( ) } , this ) ; b . isLoaded ? a ( ) : b . onLoad = a ; CKEDITOR . tools . setTimeout ( function ( ) { var a = CKEDITOR . env . webkit && CKEDITOR . document . getWindow ( ) . getScrollPosition ( ) . y ; this . focus ( ) ; d . element . focus ( ) ; CKEDITOR . env . webkit && ( CKEDITOR . document . getBody ( ) . $ . scrollTop = a ) ; this . allowBlur ( ! 0 ) ; this . _ . editor . fire ( "panelShow" , this ) } , 0 , this ) } , CKEDITOR . env . air ? 200 : 0 , this ) ; this . visible = 1 ; this . onShow && this . onShow . call ( this ) } , reposition : function ( ) { var a = this . _ . showBlockParams ;
( c = c . getDocument ( ) . getBody ( ) ) , "rtl" == c . getComputedStyle ( "direction" ) && ( q = CKEDITOR . env . ie8Compat ? q - 2 * p . getDocument ( ) . getDocumentElement ( ) . $ . scrollLeft : q - ( a . $ . scrollWidth - a . $ . clientWidth ) ) ) ; var a = p . getFirst ( ) , l ; ( l = a . getCustomData ( "activePanel" ) ) && l . onHide && l . onHide . call ( this , 1 ) ; a . setCustomData ( "activePanel" , this ) ; p . setStyles ( { top : w + "px" , left : q + "px" } ) ; p . setOpacity ( 1 ) ; k && k ( ) } , this ) ; b . isLoaded ? a ( ) : b . onLoad = a ; CKEDITOR . tools . setTimeout ( function ( ) { var a = CKEDITOR . env . webkit && CKEDITOR . document . getWindow ( ) . getScrollPosition ( ) . y ;
this . visible && this . _ . showBlockParams && ( this . hide ( ) , this . showBlock . apply ( this , a ) ) } , focus : function ( ) { if ( CKEDITOR . env . webkit ) { var a = CKEDITOR . document . getActive ( ) ; a && ! a . equals ( this . _ . iframe ) && a . $ . blur ( ) } ( this . _ . lastFocused || this . _ . iframe . getFrameDocument ( ) . getWindow ( ) ) . focus ( ) } , blur : function ( ) { var a = this . _ . iframe . getFrameDocument ( ) . getActive ( ) ; a && a . is ( "a" ) && ( this . _ . lastFocused = a ) } , hide : function ( a ) { if ( this . visible && ( ! this . onHide || ! 0 !== this . onHide . call ( this ) ) ) { this . hideChild ( ) ; CKEDITOR . env . gecko && this . _ . iframe . getFrameDocument ( ) . $ . activeElement . blur ( ) ;
this . focus ( ) ; d . element . focus ( ) ; CKEDITOR . env . webkit && ( CKEDITOR . document . getBody ( ) . $ . scrollTop = a ) ; this . allowBlur ( ! 0 ) ; this . _ . editor . fire ( "panelShow" , this ) } , 0 , this ) } , CKEDITOR . env . air ? 200 : 0 , this ) ; this . visible = 1 ; this . onShow && this . onShow . call ( this ) } , reposition : function ( ) { var a = this . _ . showBlockParams ; this . visible && this . _ . showBlockParams && ( this . hide ( ) , this . showBlock . apply ( this , a ) ) } , focus : function ( ) { if ( CKEDITOR . env . webkit ) { var a = CKEDITOR . document . getActive ( ) ; a && ! a . equals ( this . _ . iframe ) && a . $ . blur ( ) } ( this . _ . lastFocused ||
this . element . setStyle ( "display" , "none" ) ; this . visible = 0 ; this . element . getFirst ( ) . removeCustomData ( "activePanel" ) ; if ( a = a && this . _ . returnFocus ) CKEDITOR . env . webkit && a . type && a . getWindow ( ) . $ . focus ( ) , a . focus ( ) ; delete this . _ . lastFocused ; this . _ . showBlockParams = null ; this . _ . editor . fire ( "panelHide" , this ) } } , allowBlur : function ( a ) { var e = this . _ . panel ; void 0 !== a && ( e . allowBlur = a ) ; return e . allowBlur } , showAsChild : function ( a , e , f , m , l , k ) { if ( this . _ . activeChild != a || a . _ . panel . _ . offsetParentId != f . getId ( ) ) this . hideChild ( ) , a . onHide =
this . _ . iframe . getFrameDocument ( ) . getWindow ( ) ) . focus ( ) } , blur : function ( ) { var a = this . _ . iframe . getFrameDocument ( ) . getActive ( ) ; a && a . is ( "a" ) && ( this . _ . lastFocused = a ) } , hide : function ( a ) { if ( this . visible && ( ! this . onHide || ! 0 !== this . onHide . call ( this ) ) ) { this . hideChild ( ) ; CKEDITOR . env . gecko && this . _ . iframe . getFrameDocument ( ) . $ . activeElement . blur ( ) ; this . element . setStyle ( "display" , "none" ) ; this . visible = 0 ; this . element . getFirst ( ) . removeCustomData ( "activePanel" ) ; if ( a = a && this . _ . returnFocus ) CKEDITOR . env . webkit && a . type && a . getWindow ( ) . $ . focus ( ) ,
CKEDITOR . tools . bind ( function ( ) { CKEDITOR . tools . setTimeout ( function ( ) { this . _ . focused || this . hide ( ) } , 0 , this ) } , this ) , this . _ . activeChild = a , this . _ . focused = ! 1 , a . showBlock ( e , f , m , l , k ) , this . blur ( ) , ( CKEDITOR . env . ie7Compat || CKEDITOR . env . ie6Compat ) && setTimeout ( function ( ) { a . element . getChild ( 0 ) . $ . style . cssText += "" } , 100 ) } , hideChild : function ( a ) { var e = this . _ . activeChild ; e && ( delete e . onHide , delete this . _ . activeChild , e . hide ( ) , a && this . focus ( ) ) } } } ) ; CKEDITOR . on ( "instanceDestroyed" , function ( ) { var a = CKEDITOR . tools . isEmpty ( CKEDITOR . instances ) ,
a . focus ( ) ; delete this . _ . lastFocused ; this . _ . showBlockParams = null ; this . _ . editor . fire ( "panelHide" , this ) } } , allowBlur : function ( a ) { var e = this . _ . panel ; void 0 !== a && ( e . allowBlur = a ) ; return e . allowBlur } , showAsChild : function ( a , e , f , m , l , k ) { if ( this . _ . activeChild != a || a . _ . panel . _ . offsetParentId != f . getId ( ) ) this . hideChild ( ) , a . onHide = CKEDITOR . tools . bind ( function ( ) { CKEDITOR . tools . setTimeout ( function ( ) { this . _ . focused || this . hide ( ) } , 0 , this ) } , this ) , this . _ . activeChild = a , this . _ . focused = ! 1 , a . showBlock ( e , f , m , l , k ) , this . blur ( ) ,
g ; for ( g in e ) { var f = e [ g ] ; a ? f . destroy ( ) : f . element . hide ( ) } a && ( e = { } ) } ) } ( ) , CKEDITOR . plugins . add ( "menu" , { requires : "floatpanel" , beforeInit : function ( a ) { for ( var e = a . config . menu _groups . split ( "," ) , c = a . _ . menuGroups = { } , g = a . _ . menuItems = { } , f = 0 ; f < e . length ; f ++ ) c [ e [ f ] ] = f + 1 ; a . addMenuGroup = function ( a , f ) { c [ a ] = f || 100 } ; a . addMenuItem = function ( a , f ) { c [ f . group ] && ( g [ a ] = new CKEDITOR . menuItem ( this , a , f ) ) } ; a . addMenuItems = function ( a ) { for ( var c in a ) this . addMenuItem ( c , a [ c ] ) } ; a . getMenuItem = function ( a ) { return g [ a ] } ; a . removeMenuItem =
( CKEDITOR . env . ie7Compat || CKEDITOR . env . ie6Compat ) && setTimeout ( function ( ) { a . element . getChild ( 0 ) . $ . style . cssText += "" } , 100 ) } , hideChild : function ( a ) { var e = this . _ . activeChild ; e && ( delete e . onHide , delete this . _ . activeChild , e . hide ( ) , a && this . focus ( ) ) } } } ) ; CKEDITOR . on ( "instanceDestroyed" , function ( ) { var a = CKEDITOR . tools . isEmpty ( CKEDITOR . instances ) , g ; for ( g in e ) { var f = e [ g ] ; a ? f . destroy ( ) : f . element . hide ( ) } a && ( e = { } ) } ) } ( ) , CKEDITOR . plugins . add ( "menu" , { requires : "floatpanel" , beforeInit : function ( a ) { for ( var e = a . config . menu _groups . split ( "," ) ,
function ( a ) { delete g [ a ] } } } ) , function ( ) { function a ( a ) { a . sort ( function ( a , c ) { return a . group < c . group ? - 1 : a . group > c . group ? 1 : a . order < c . order ? - 1 : a . order > c . order ? 1 : 0 } ) } var e = '\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1"_cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked}' ; CKEDITOR . env . gecko && CKEDITOR . env . mac &&
c = a . _ . menuGroups = { } , g = a . _ . menuItems = { } , f = 0 ; f < e . length ; f ++ ) c [ e [ f ] ] = f + 1 ; a . addMenuGroup = function ( a , f ) { c [ a ] = f || 100 } ; a . addMenuItem = function ( a , f ) { c [ f . group ] && ( g [ a ] = new CKEDITOR . menuItem ( this , a , f ) ) } ; a . addMenuItems = function ( a ) { for ( var c in a ) this . addMenuItem ( c , a [ c ] ) } ; a . getMenuItem = function ( a ) { return g [ a ] } ; a . removeMenuItem = function ( a ) { delete g [ a ] } } } ) , function ( ) { function a ( a ) { a . sort ( function ( a , c ) { return a . group < c . group ? - 1 : a . group > c . group ? 1 : a . order < c . order ? - 1 : a . order > c . order ? 1 : 0 } ) } var e = '\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1"_cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked}' ;
( e += ' onkeypress\x3d"return false;"' ) ; CKEDITOR . env . gecko && ( e += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"' ) ; var e = e + ( ' onmouseover\x3d"CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout\x3d"CKEDITOR.tools.callFunction({moveOutFn},{index});" ' + ( CKEDITOR . env . ie ? 'onclick\x3d"return false;" onmouseup' : "onclick" ) + '\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;"\x3e' ) , c = CKEDITOR . addTemplate ( "menuItem" , e + '\x3cspan class\x3d"cke_menubutton_inner"\x3e\x3cspan class\x3d"cke_menubutton_icon"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{iconStyle}"\x3e\x3c/span\x3e\x3c/span\x3e\x3cspan class\x3d"cke_menubutton_label"\x3e{label}\x3c/span\x3e{arrowHtml}\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e' ) ,
CKEDITOR . env . gecko && CKEDITOR . env . mac && ( e += ' onkeypress\x3d"return false;"' ) ; CKEDITOR . env . gecko && ( e += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"' ) ; var e = e + ( ' onmouseover\x3d"CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout\x3d"CKEDITOR.tools.callFunction({moveOutFn},{index});" ' + ( CKEDITOR . env . ie ? 'onclick\x3d"return false;" onmouseup' : "onclick" ) + '\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;"\x3e' ) , c = CKEDITOR . addTemplate ( "menuItem" , e + '\x3cspan class\x3d"cke_menubutton_inner"\x3e\x3cspan class\x3d"cke_menubutton_icon"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{iconStyle}"\x3e\x3c/span\x3e\x3c/span\x3e\x3cspan class\x3d"cke_menubutton_label"\x3e{label}\x3c/span\x3e{arrowHtml}\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e' ) ,
g = CKEDITOR . addTemplate ( "menuArrow" , '\x3cspan class\x3d"cke_menuarrow"\x3e\x3cspan\x3e{label}\x3c/span\x3e\x3c/span\x3e' ) ; CKEDITOR . menu = CKEDITOR . tools . createClass ( { $ : function ( a , c ) { c = this . _ . definition = c || { } ; this . id = CKEDITOR . tools . getNextId ( ) ; this . editor = a ; this . items = [ ] ; this . _ . listeners = [ ] ; this . _ . level = c . level || 1 ; var e = CKEDITOR . tools . extend ( { } , c . panel , { css : [ CKEDITOR . skin . getPath ( "editor" ) ] , level : this . _ . level - 1 , block : { } } ) , g = e . block . attributes = e . attributes || { } ; ! g . role && ( g . role = "menu" ) ; this . _ . panelDefinition =
g = CKEDITOR . addTemplate ( "menuArrow" , '\x3cspan class\x3d"cke_menuarrow"\x3e\x3cspan\x3e{label}\x3c/span\x3e\x3c/span\x3e' ) ; CKEDITOR . menu = CKEDITOR . tools . createClass ( { $ : function ( a , c ) { c = this . _ . definition = c || { } ; this . id = CKEDITOR . tools . getNextId ( ) ; this . editor = a ; this . items = [ ] ; this . _ . listeners = [ ] ; this . _ . level = c . level || 1 ; var e = CKEDITOR . tools . extend ( { } , c . panel , { css : [ CKEDITOR . skin . getPath ( "editor" ) ] , level : this . _ . level - 1 , block : { } } ) , g = e . block . attributes = e . attributes || { } ; ! g . role && ( g . role = "menu" ) ; this . _ . panelDefinition =
e } , _ : { onShow : function ( ) { var a = this . editor . getSelection ( ) , c = a && a . getStartElement ( ) , e = this . editor . elementPath ( ) , g = this . _ . listeners ; this . removeAll ( ) ; for ( var b = 0 ; b < g . length ; b ++ ) { var d = g [ b ] ( c , a , e ) ; if ( d ) for ( var h in d ) { var p = this . editor . getMenuItem ( h ) ; ! p || p . command && ! this . editor . getCommand ( p . command ) . state || ( p . state = d [ h ] , this . add ( p ) ) } } } , onClick : function ( a ) { this . hide ( ) ; if ( a . onClick ) a . onClick ( ) ; else a . command && this . editor . execCommand ( a . command ) } , onEscape : function ( a ) { var c = this . parent ; c ? c . _ . panel . hideChild ( 1 ) :
e } , _ : { onShow : function ( ) { var a = this . editor . getSelection ( ) , c = a && a . getStartElement ( ) , e = this . editor . elementPath ( ) , g = this . _ . listeners ; this . removeAll ( ) ; for ( var b = 0 ; b < g . length ; b ++ ) { var d = g [ b ] ( c , a , e ) ; if ( d ) for ( var h in d ) { var p = this . editor . getMenuItem ( h ) ; ! p || p . command && ! this . editor . getCommand ( p . command ) . state || ( p . state = d [ h ] , this . add ( p ) ) } } } , onClick : function ( a ) { this . hide ( ) ; if ( a . onClick ) a . onClick ( ) ; else a . command && this . editor . execCommand ( a . command ) } , onEscape : function ( a ) { var c = this . parent ; c ? c . _ . panel . hideChild ( 1 ) :
27 == a && this . hide ( 1 ) ; return ! 1 } , onHide : function ( ) { this . onHide && this . onHide ( ) } , showSubMenu : function ( a ) { var c = this . _ . subMenu , e = this . items [ a ] ; if ( e = e . getItems && e . getItems ( ) ) { c ? c . removeAll ( ) : ( c = this . _ . subMenu = new CKEDITOR . menu ( this . editor , CKEDITOR . tools . extend ( { } , this . _ . definition , { level : this . _ . level + 1 } , ! 0 ) ) , c . parent = this , c . _ . onClick = CKEDITOR . tools . bind ( this . _ . onClick , this ) ) ; for ( var g in e ) { var b = this . editor . getMenuItem ( g ) ; b && ( b . state = e [ g ] , c . add ( b ) ) } var d = this . _ . panel . getBlock ( this . id ) . element . getDocument ( ) . getById ( this . id +
27 == a && this . hide ( 1 ) ; return ! 1 } , onHide : function ( ) { this . onHide && this . onHide ( ) } , showSubMenu : function ( a ) { var c = this . _ . subMenu , e = this . items [ a ] ; if ( e = e . getItems && e . getItems ( ) ) { c ? c . removeAll ( ) : ( c = this . _ . subMenu = new CKEDITOR . menu ( this . editor , CKEDITOR . tools . extend ( { } , this . _ . definition , { level : this . _ . level + 1 } , ! 0 ) ) , c . parent = this , c . _ . onClick = CKEDITOR . tools . bind ( this . _ . onClick , this ) ) ; for ( var g in e ) { var b = this . editor . getMenuItem ( g ) ; b && ( b . state = e [ g ] , c . add ( b ) ) } var d = this . _ . panel . getBlock ( this . id ) . element . getDocument ( ) . getById ( this . id +
@ -730,8 +730,8 @@ focus:function(a){this._.focusIndex=-1;var c=this.element.getElementsByTag("a"),
'onclick\x3d"return false;" onmouseup' : "onclick" ) + '\x3d"CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan id\x3d"{id}_text" class\x3d"cke_combo_text cke_combo_inlinelabel"\x3e{label}\x3c/span\x3e\x3cspan class\x3d"cke_combo_open"\x3e\x3cspan class\x3d"cke_combo_arrow"\x3e' + ( CKEDITOR . env . hc ? "\x26#9660;" : CKEDITOR . env . air ? "\x26nbsp;" : "" ) + "\x3c/span\x3e\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e" ) , e = CKEDITOR . addTemplate ( "combo" , a ) ; CKEDITOR . UI _RICHCOMBO = "richcombo" ; CKEDITOR . ui . richCombo =
'onclick\x3d"return false;" onmouseup' : "onclick" ) + '\x3d"CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan id\x3d"{id}_text" class\x3d"cke_combo_text cke_combo_inlinelabel"\x3e{label}\x3c/span\x3e\x3cspan class\x3d"cke_combo_open"\x3e\x3cspan class\x3d"cke_combo_arrow"\x3e' + ( CKEDITOR . env . hc ? "\x26#9660;" : CKEDITOR . env . air ? "\x26nbsp;" : "" ) + "\x3c/span\x3e\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e" ) , e = CKEDITOR . addTemplate ( "combo" , a ) ; CKEDITOR . UI _RICHCOMBO = "richcombo" ; CKEDITOR . ui . richCombo =
CKEDITOR . tools . createClass ( { $ : function ( a ) { CKEDITOR . tools . extend ( this , a , { canGroup : ! 1 , title : a . label , modes : { wysiwyg : 1 } , editorFocus : 1 } ) ; a = this . panel || { } ; delete this . panel ; this . id = CKEDITOR . tools . getNextNumber ( ) ; this . document = a . parent && a . parent . getDocument ( ) || CKEDITOR . document ; a . className = "cke_combopanel" ; a . block = { multiSelect : a . multiSelect , attributes : a . attributes } ; a . toolbarRelated = ! 0 ; this . _ = { panelDefinition : a , items : { } } } , proto : { renderHtml : function ( a ) { var e = [ ] ; this . render ( a , e ) ; return e . join ( "" ) } , render : function ( a ,
CKEDITOR . tools . createClass ( { $ : function ( a ) { CKEDITOR . tools . extend ( this , a , { canGroup : ! 1 , title : a . label , modes : { wysiwyg : 1 } , editorFocus : 1 } ) ; a = this . panel || { } ; delete this . panel ; this . id = CKEDITOR . tools . getNextNumber ( ) ; this . document = a . parent && a . parent . getDocument ( ) || CKEDITOR . document ; a . className = "cke_combopanel" ; a . block = { multiSelect : a . multiSelect , attributes : a . attributes } ; a . toolbarRelated = ! 0 ; this . _ = { panelDefinition : a , items : { } } } , proto : { renderHtml : function ( a ) { var e = [ ] ; this . render ( a , e ) ; return e . join ( "" ) } , render : function ( a ,
g ) { function f ( ) { if ( this . getState ( ) != CKEDITOR . TRISTATE _ON ) { var b = this . modes [ a . mode ] ? CKEDITOR . TRISTATE _OFF : CKEDITOR . TRISTATE _DISABLED ; a . readOnly && ! this . readOnly && ( b = CKEDITOR . TRISTATE _DISABLED ) ; this . setState ( b ) ; this . setValue ( "" ) ; b != CKEDITOR . TRISTATE _DISABLED && this . refresh && this . refresh ( ) } } var m = CKEDITOR . env , l = "cke_" + this . id , k = CKEDITOR . tools . addFunction ( function ( b ) { v && ( a . unlockSelection ( 1 ) , v = 0 ) ; d . execute ( b ) } , this ) , b = this , d = { id : l , combo : this , focus : function ( ) { CKEDITOR . document . getById ( l ) . getChild ( 1 ) . focus ( ) } ,
g ) { function f ( ) { if ( this . getState ( ) != CKEDITOR . TRISTATE _ON ) { var b = this . modes [ a . mode ] ? CKEDITOR . TRISTATE _OFF : CKEDITOR . TRISTATE _DISABLED ; a . readOnly && ! this . readOnly && ( b = CKEDITOR . TRISTATE _DISABLED ) ; this . setState ( b ) ; this . setValue ( "" ) ; b != CKEDITOR . TRISTATE _DISABLED && this . refresh && this . refresh ( ) } } var m = CKEDITOR . env , l = "cke_" + this . id , k = CKEDITOR . tools . addFunction ( function ( b ) { v && ( a . unlockSelection ( 1 ) , v = 0 ) ; d . execute ( b ) } , this ) , b = this , d = { id : l , combo : this , focus : function ( ) { CKEDITOR . document . getById ( l ) . getChild ( 1 ) . focus ( ) } ,
execute : function ( d ) { var f= b . _ ; if ( f . state != CKEDITOR . TRISTATE _DISABLED ) if ( b . createPanel ( a ) , f. on ) f . panel . hide ( ) ; else { b . commit ( ) ; var e= b . getValue ( ) ; e ? f . list . mark ( e ) : f . list . unmarkAll ( ) ; f . panel . showBlock ( b . id , new CKEDITOR . dom . element ( d ) , 4 ) } } , clickFn : k } ; a . on ( "activeFilterChange" , f , this ) ; a . on ( "mode" , f , this ) ; a . on ( "selectionChange" , f , this ) ; ! this . readOnly && a . on ( "readOnly" , f , this ) ; var h = CKEDITOR . tools . addFunction ( function ( b , f ) { b = new CKEDITOR . dom . event ( b ) ; var e = b . getKeystroke ( ) ; if ( 40 == e ) a . once ( "panelShow" , function ( a ) { a . data . _ . panel . _ . currentBlock . onKeyDown ( 40 ) } ) ;
execute : function ( d ) { var e= b . _ ; if ( e . state != CKEDITOR . TRISTATE _DISABLED ) if ( b . createPanel ( a ) , e. on ) e . panel . hide ( ) ; else { b . commit ( ) ; var f= b . getValue ( ) ; f ? e . list . mark ( f ) : e . list . unmarkAll ( ) ; e . panel . showBlock ( b . id , new CKEDITOR . dom . element ( d ) , 4 ) } } , clickFn : k } ; a . on ( "activeFilterChange" , f , this ) ; a . on ( "mode" , f , this ) ; a . on ( "selectionChange" , f , this ) ; ! this . readOnly && a . on ( "readOnly" , f , this ) ; var h = CKEDITOR . tools . addFunction ( function ( b , e ) { b = new CKEDITOR . dom . event ( b ) ; var f = b . getKeystroke ( ) ; if ( 40 == f ) a . once ( "panelShow" , function ( a ) { a . data . _ . panel . _ . currentBlock . onKeyDown ( 40 ) } ) ;
switch ( e ) { case 13 : case 32 : case 40 : CKEDITOR . tools . callFunction ( k , f ) ; break ; default : d . onkey ( d , e ) } b . preventDefault ( ) } ) , p = CKEDITOR . tools . addFunction ( function ( ) { d . onfocus && d . onfocus ( ) } ) , v = 0 ; d . keyDownFn = h ; m = { id : l , name : this . name || this . command , label : this . label , title : this . title , cls : this . className || "" , titleJs : m . gecko && ! m . hc ? "" : ( this . title || "" ) . replace ( "'" , "" ) , keydownFn : h , focusFn : p , clickFn : k } ; e . output ( m , g ) ; if ( this . onRender ) this . onRender ( ) ; return d } , createPanel : function ( a ) { if ( ! this . _ . panel ) { var e = this . _ . panelDefinition ,
switch ( f ) { case 13 : case 32 : case 40 : CKEDITOR . tools . callFunction ( k , e ) ; break ; default : d . onkey ( d , f ) } b . preventDefault ( ) } ) , p = CKEDITOR . tools . addFunction ( function ( ) { d . onfocus && d . onfocus ( ) } ) , v = 0 ; d . keyDownFn = h ; m = { id : l , name : this . name || this . command , label : this . label , title : this . title , cls : this . className || "" , titleJs : m . gecko && ! m . hc ? "" : ( this . title || "" ) . replace ( "'" , "" ) , keydownFn : h , focusFn : p , clickFn : k } ; e . output ( m , g ) ; if ( this . onRender ) this . onRender ( ) ; return d } , createPanel : function ( a ) { if ( ! this . _ . panel ) { var e = this . _ . panelDefinition ,
f = this . _ . panelDefinition . block , m = e . parent || CKEDITOR . document . getBody ( ) , l = "cke_combopanel__" + this . name , k = new CKEDITOR . ui . floatPanel ( a , m , e ) , b = k . addListBlock ( this . id , f ) , d = this ; k . onShow = function ( ) { this . element . addClass ( l ) ; d . setState ( CKEDITOR . TRISTATE _ON ) ; d . _ . on = 1 ; d . editorFocus && ! a . focusManager . hasFocus && a . focus ( ) ; if ( d . onOpen ) d . onOpen ( ) ; a . once ( "panelShow" , function ( ) { b . focus ( ! b . multiSelect && d . getValue ( ) ) } ) } ; k . onHide = function ( b ) { this . element . removeClass ( l ) ; d . setState ( d . modes && d . modes [ a . mode ] ? CKEDITOR . TRISTATE _OFF :
f = this . _ . panelDefinition . block , m = e . parent || CKEDITOR . document . getBody ( ) , l = "cke_combopanel__" + this . name , k = new CKEDITOR . ui . floatPanel ( a , m , e ) , b = k . addListBlock ( this . id , f ) , d = this ; k . onShow = function ( ) { this . element . addClass ( l ) ; d . setState ( CKEDITOR . TRISTATE _ON ) ; d . _ . on = 1 ; d . editorFocus && ! a . focusManager . hasFocus && a . focus ( ) ; if ( d . onOpen ) d . onOpen ( ) ; a . once ( "panelShow" , function ( ) { b . focus ( ! b . multiSelect && d . getValue ( ) ) } ) } ; k . onHide = function ( b ) { this . element . removeClass ( l ) ; d . setState ( d . modes && d . modes [ a . mode ] ? CKEDITOR . TRISTATE _OFF :
CKEDITOR . TRISTATE _DISABLED ) ; d . _ . on = 0 ; if ( ! b && d . onClose ) d . onClose ( ) } ; k . onEscape = function ( ) { k . hide ( 1 ) } ; b . onClick = function ( a , b ) { d . onClick && d . onClick . call ( d , a , b ) ; k . hide ( ) } ; this . _ . panel = k ; this . _ . list = b ; k . getBlock ( this . id ) . onHide = function ( ) { d . _ . on = 0 ; d . setState ( CKEDITOR . TRISTATE _OFF ) } ; this . init && this . init ( ) } } , setValue : function ( a , e ) { this . _ . value = a ; var f = this . document . getById ( "cke_" + this . id + "_text" ) ; f && ( a || e ? f . removeClass ( "cke_combo_inlinelabel" ) : ( e = this . label , f . addClass ( "cke_combo_inlinelabel" ) ) , f . setText ( "undefined" !=
CKEDITOR . TRISTATE _DISABLED ) ; d . _ . on = 0 ; if ( ! b && d . onClose ) d . onClose ( ) } ; k . onEscape = function ( ) { k . hide ( 1 ) } ; b . onClick = function ( a , b ) { d . onClick && d . onClick . call ( d , a , b ) ; k . hide ( ) } ; this . _ . panel = k ; this . _ . list = b ; k . getBlock ( this . id ) . onHide = function ( ) { d . _ . on = 0 ; d . setState ( CKEDITOR . TRISTATE _OFF ) } ; this . init && this . init ( ) } } , setValue : function ( a , e ) { this . _ . value = a ; var f = this . document . getById ( "cke_" + this . id + "_text" ) ; f && ( a || e ? f . removeClass ( "cke_combo_inlinelabel" ) : ( e = this . label , f . addClass ( "cke_combo_inlinelabel" ) ) , f . setText ( "undefined" !=
typeof e ? e : a ) ) } , getValue : function ( ) { return this . _ . value || "" } , unmarkAll : function ( ) { this . _ . list . unmarkAll ( ) } , mark : function ( a ) { this . _ . list . mark ( a ) } , hideItem : function ( a ) { this . _ . list . hideItem ( a ) } , hideGroup : function ( a ) { this . _ . list . hideGroup ( a ) } , showAll : function ( ) { this . _ . list . showAll ( ) } , add : function ( a , e , f ) { this . _ . items [ a ] = f || a ; this . _ . list . add ( a , e , f ) } , startGroup : function ( a ) { this . _ . list . startGroup ( a ) } , commit : function ( ) { this . _ . committed || ( this . _ . list . commit ( ) , this . _ . committed = 1 , CKEDITOR . ui . fire ( "ready" , this ) ) ;
typeof e ? e : a ) ) } , getValue : function ( ) { return this . _ . value || "" } , unmarkAll : function ( ) { this . _ . list . unmarkAll ( ) } , mark : function ( a ) { this . _ . list . mark ( a ) } , hideItem : function ( a ) { this . _ . list . hideItem ( a ) } , hideGroup : function ( a ) { this . _ . list . hideGroup ( a ) } , showAll : function ( ) { this . _ . list . showAll ( ) } , add : function ( a , e , f ) { this . _ . items [ a ] = f || a ; this . _ . list . add ( a , e , f ) } , startGroup : function ( a ) { this . _ . list . startGroup ( a ) } , commit : function ( ) { this . _ . committed || ( this . _ . list . commit ( ) , this . _ . committed = 1 , CKEDITOR . ui . fire ( "ready" , this ) ) ;
@ -747,100 +747,100 @@ this._.indent?this.indentation():e&&e.breakBeforeOpen&&(this.lineBreak(),this.in
( this . indentation ( ) , ! this . _ . inPre && ( a = CKEDITOR . tools . ltrim ( a ) ) ) ; this . _ . output . push ( a ) } , comment : function ( a ) { this . _ . indent && this . indentation ( ) ; this . _ . output . push ( "\x3c!--" , a , "--\x3e" ) } , lineBreak : function ( ) { ! this . _ . inPre && 0 < this . _ . output . length && this . _ . output . push ( this . lineBreakChars ) ; this . _ . indent = 1 } , indentation : function ( ) { ! this . _ . inPre && this . _ . indentation && this . _ . output . push ( this . _ . indentation ) ; this . _ . indent = 0 } , reset : function ( ) { this . _ . output = [ ] ; this . _ . indent = 0 ; this . _ . indentation = "" ; this . _ . afterCloser =
( this . indentation ( ) , ! this . _ . inPre && ( a = CKEDITOR . tools . ltrim ( a ) ) ) ; this . _ . output . push ( a ) } , comment : function ( a ) { this . _ . indent && this . indentation ( ) ; this . _ . output . push ( "\x3c!--" , a , "--\x3e" ) } , lineBreak : function ( ) { ! this . _ . inPre && 0 < this . _ . output . length && this . _ . output . push ( this . lineBreakChars ) ; this . _ . indent = 1 } , indentation : function ( ) { ! this . _ . inPre && this . _ . indentation && this . _ . output . push ( this . _ . indentation ) ; this . _ . indent = 0 } , reset : function ( ) { this . _ . output = [ ] ; this . _ . indent = 0 ; this . _ . indentation = "" ; this . _ . afterCloser =
0 ; this . _ . inPre = 0 } , setRules : function ( a , e ) { var c = this . _ . rules [ a ] ; c ? CKEDITOR . tools . extend ( c , e , ! 0 ) : this . _ . rules [ a ] = e } } } ) , function ( ) { var a = { canUndo : ! 1 , exec : function ( a ) { var c = a . document . createElement ( "hr" ) ; a . insertElement ( c ) } , allowedContent : "hr" , requiredContent : "hr" } ; CKEDITOR . plugins . add ( "horizontalrule" , { init : function ( e ) { e . blockless || ( e . addCommand ( "horizontalrule" , a ) , e . ui . addButton && e . ui . addButton ( "HorizontalRule" , { label : e . lang . horizontalrule . toolbar , command : "horizontalrule" , toolbar : "insert,40" } ) ) } } ) } ( ) ,
0 ; this . _ . inPre = 0 } , setRules : function ( a , e ) { var c = this . _ . rules [ a ] ; c ? CKEDITOR . tools . extend ( c , e , ! 0 ) : this . _ . rules [ a ] = e } } } ) , function ( ) { var a = { canUndo : ! 1 , exec : function ( a ) { var c = a . document . createElement ( "hr" ) ; a . insertElement ( c ) } , allowedContent : "hr" , requiredContent : "hr" } ; CKEDITOR . plugins . add ( "horizontalrule" , { init : function ( e ) { e . blockless || ( e . addCommand ( "horizontalrule" , a ) , e . ui . addButton && e . ui . addButton ( "HorizontalRule" , { label : e . lang . horizontalrule . toolbar , command : "horizontalrule" , toolbar : "insert,40" } ) ) } } ) } ( ) ,
function ( ) { function a ( a ) { function c ( a ) { var b = ! 1 ; h . attachListener ( h , "keydown" , function ( ) { var c = k . getBody ( ) . getElementsByTag ( a ) ; if ( ! b ) { for ( var d = 0 ; d < c . count ( ) ; d ++ ) c . getItem ( d ) . setCustomData ( "retain" , ! 0 ) ; b = ! 0 } } , null , null , 1 ) ; h . attachListener ( h , "keyup" , function ( ) { var c = k . getElementsByTag ( a ) ; b && ( 1 != c . count ( ) || c . getItem ( 0 ) . getCustomData ( "retain" ) || c . getItem ( 0 ) . remove ( 1 ) , b = ! 1 ) } ) } var g = this . editor , k = a . document , b = k . body , d = k . getElementById ( "cke_actscrpt" ) ; d && d . parentNode . removeChild ( d ) ; ( d = k . getElementById ( "cke_shimscrpt" ) ) &&
function ( ) { function a ( a ) { function c ( a ) { var b = ! 1 ; h . attachListener ( h , "keydown" , function ( ) { var c = k . getBody ( ) . getElementsByTag ( a ) ; if ( ! b ) { for ( var d = 0 ; d < c . count ( ) ; d ++ ) c . getItem ( d ) . setCustomData ( "retain" , ! 0 ) ; b = ! 0 } } , null , null , 1 ) ; h . attachListener ( h , "keyup" , function ( ) { var c = k . getElementsByTag ( a ) ; b && ( 1 != c . count ( ) || c . getItem ( 0 ) . getCustomData ( "retain" ) || c . getItem ( 0 ) . remove ( 1 ) , b = ! 1 ) } ) } var g = this . editor , k = a . document , b = k . body , d = k . getElementById ( "cke_actscrpt" ) ; d && d . parentNode . removeChild ( d ) ; ( d = k . getElementById ( "cke_shimscrpt" ) ) &&
d . parentNode . removeChild ( d ) ; ( d = k . getElementById ( "cke_basetagscrpt" ) ) && d . parentNode . removeChild ( d ) ; b . contentEditable = ! 0 ; CKEDITOR . env . ie && ( b . hideFocus = ! 0 , b . disabled = ! 0 , b . removeAttribute ( "disabled" ) ) ; delete this . _ . isLoadingData ; this . $ = b ; k = new CKEDITOR . dom . document ( k ) ; this . setup ( ) ; this . fixInitialSelection ( ) ; var h = this ; CKEDITOR . env . ie && ! CKEDITOR . env . edge && g. enterMode != CKEDITOR . ENTER _P ? c ( "p" ) : CKEDITOR . env . edge && g . enterMode != CKEDITOR . ENTER _DIV && c ( "div" ) ; if ( CKEDITOR . env . webkit || CKEDITOR . env . ie && 10 < CKEDITOR . env . version ) k . getDocumentElement ( ) . on ( "mousedown" ,
d . parentNode . removeChild ( d ) ; ( d = k . getElementById ( "cke_basetagscrpt" ) ) && d . parentNode . removeChild ( d ) ; b . contentEditable = ! 0 ; CKEDITOR . env . ie && ( b . hideFocus = ! 0 , b . disabled = ! 0 , b . removeAttribute ( "disabled" ) ) ; delete this . _ . isLoadingData ; this . $ = b ; k = new CKEDITOR . dom . document ( k ) ; this . setup ( ) ; this . fixInitialSelection ( ) ; var h = this ; CKEDITOR . env . ie && ! CKEDITOR . env . edge && k. getDocumentElement ( ) . addClass ( k . $ . compatMode ) ; CKEDITOR . env . ie && ! CKEDITOR . env . edge && g. enterMode != CKEDITOR . ENTER _P ? c ( "p" ) : CKEDITOR . env . edge && g . enterMode !=
function ( a ) { a . data . getTarget ( ) . is ( "html" ) && setTimeout ( function ( ) { g . editable ( ) . focus ( ) } ) } ) ; e ( g ) ; try { g . document . $ . execCommand ( "2D-position" , ! 1 , ! 0 ) } catch ( p ) { } ( CKEDITOR . env . gecko || CKEDITOR . env . ie && "CSS1Compat" == g . document . $ . compatMode ) && this . attachListener ( this , "keydown" , function ( a ) { var b = a . data . getKeystroke ( ) ; if ( 33 == b || 34 == b ) if ( CKEDITOR . env . ie ) setTimeout ( function ( ) { g . getSelection ( ) . scrollIntoView ( ) } , 0 ) ; else if ( g . window . $ . innerHeight > this . $ . offsetHeight ) { var c = g . createRange ( ) ; c [ 33 == b ? "moveToElementEditStart" :
CKEDITOR . ENTER _DIV && c ( "div" ) ; if ( CKEDITOR . env . webkit || CKEDITOR . env . ie && 10 < CKEDITOR . env . version ) k . getDocumentElement ( ) . on ( "mousedown" , function ( a ) { a . data . getTarget ( ) . is ( "html" ) && setTimeout ( function ( ) { g . editable ( ) . focus ( ) } ) } ) ; e ( g ) ; try { g . document . $ . execCommand ( "2D-position" , ! 1 , ! 0 ) } catch ( p ) { } ( CKEDITOR . env . gecko || CKEDITOR . env . ie && "CSS1Compat" == g . document . $ . compatMode ) && this . attachListener ( this , "keydown" , function ( a ) { var b = a . data . getKeystroke ( ) ; if ( 33 == b || 34 == b ) if ( CKEDITOR . env . ie ) setTimeout ( function ( ) { g . getSelection ( ) . scrollIntoView ( ) } ,
"moveToElementEditEnd" ] ( this ) ; c . select ( ) ; a . data . preventDefault ( ) } } ) ; CKEDITOR . env . ie && this . attachListener ( k , "blur" , function ( ) { try { k . $ . selection . empty ( ) } catch ( a ) { } } ) ; CKEDITOR . env . iOS && this . attachListener ( k , "touchend" , function ( ) { a . focus ( ) } ) ; b = g . document . getElementsByTag ( "title" ) . getItem ( 0 ) ; b . data ( "cke-title" , b . getText ( ) ) ; CKEDITOR . env . ie && ( g . document . $ . title = this . _ . docTitle ) ; CKEDITOR . tools . setTimeout ( function ( ) { "unloaded" == this . status && ( this . status = "ready" ) ; g . fire ( "contentDom" ) ; this . _ . isPendingFocus &&
0 ) ; else if ( g . window . $ . innerHeight > this . $ . offsetHeight ) { var c = g . createRange ( ) ; c [ 33 == b ? "moveToElementEditStart" : "moveToElementEditEnd" ] ( this ) ; c . select ( ) ; a . data . preventDefault ( ) } } ) ; CKEDITOR . env . ie && this . attachListener ( k , "blur" , function ( ) { try { k . $ . selection . empty ( ) } catch ( a ) { } } ) ; CKEDITOR . env . iOS && this . attachListener ( k , "touchend" , function ( ) { a . focus ( ) } ) ; b = g . document . getElementsByTag ( "title" ) . getItem ( 0 ) ; b . data ( "cke-title" , b . getText ( ) ) ; CKEDITOR . env . ie && ( g . document . $ . title = this . _ . docTitle ) ; CKEDITOR . tools . setTimeout ( function ( ) { "unloaded" ==
( g . focus ( ) , this . _ . isPendingFocus = ! 1 ) ; setTimeout ( function ( ) { g . fire ( "dataReady" ) } , 0 ) } , 0 , this ) } function e ( a ) { function c ( ) { var b ; a . editable ( ) . attachListener ( a , "selectionChange" , function ( ) { var c = a . getSelection ( ) . getSelectedElement ( ) ; c && ( b && ( b . detachEvent ( "onresizestart" , e ) , b = null ) , c . $ . attachEvent ( "onresizestart" , e ) , b = c . $ ) } ) } function e ( a ) { a . returnValue = ! 1 } if ( CKEDITOR . env . gecko ) try { var g = a . document . $ ; g . execCommand ( "enableObjectResizing" , ! 1 , ! a . config . disableObjectResizing ) ; g . execCommand ( "enableInlineTableEditing" ,
this . status && ( this . status = "ready" ) ; g . fire ( "contentDom" ) ; this . _ . isPendingFocus && ( g . focus ( ) , this . _ . isPendingFocus = ! 1 ) ; setTimeout ( function ( ) { g . fire ( "dataReady" ) } , 0 ) } , 0 , this ) } function e ( a ) { function c ( ) { var b ; a . editable ( ) . attachListener ( a , "selectionChange" , function ( ) { var c = a . getSelection ( ) . getSelectedElement ( ) ; c && ( b && ( b . detachEvent ( "onresizestart" , e ) , b = null ) , c . $ . attachEvent ( "onresizestart" , e ) , b = c . $ ) } ) } function e ( a ) { a . returnValue = ! 1 } if ( CKEDITOR . env . gecko ) try { var g = a . document . $ ; g . execCommand ( "enableObjectResizing" ,
! 1 , ! a . config . disableNativeTableHandles ) } catch ( b ) { } else CKEDITOR . env . ie && 11 > CKEDITOR . env . version && a . config . disableObjectResizing && c ( a ) } function c ( ) { var a = [ ] ; if ( 8 <= CKEDITOR . document . $ . documentMode ) { a . push ( "html.CSS1Compat [contenteditable\x3dfalse]{min-height:0 !important}" ) ; var c = [ ] , e ; for ( e in CKEDITOR . dtd . $removeEmpty ) c . push ( "html.CSS1Compat " + e + "[contenteditable\x3dfalse]" ) ; a . push ( c . join ( "," ) + "{display:inline-block}" ) } else CKEDITOR . env . gecko && ( a . push ( "html{height:100% !important}" ) , a . push ( "img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}" ) ) ;
! 1 , ! a . config . disableObjectResizing ) ; g . execCommand ( "enableInlineTableEditing" , ! 1 , ! a . config . disableNativeTableHandles ) } catch ( b ) { } else CKEDITOR . env . ie && 11 > CKEDITOR . env . version && a . config . disableObjectResizing && c ( a ) } function c ( ) { var a = [ ] ; if ( 8 <= CKEDITOR . document . $ . documentMode ) { a . push ( "html.CSS1Compat [contenteditable\x3dfalse]{min-height:0 !important}" ) ; var c = [ ] , e ; for ( e in CKEDITOR . dtd . $removeEmpty ) c . push ( "html.CSS1Compat " + e + "[contenteditable\x3dfalse]" ) ; a . push ( c . join ( "," ) + "{display:inline-block}" ) } else CKEDITOR . env . gecko &&
a . push ( "html{cursor:text;*cursor:auto}" ) ; a . push ( "img,input,textarea{cursor:default}" ) ; return a . join ( "\n" ) } CKEDITOR . plugins . add ( "wysiwygarea" , { init : function ( a ) { a . config . fullPage && a . addFeature ( { allowedContent : "html head title; style [media,type]; body (*)[id]; meta link [*]" , requiredContent : "body" } ) ; a . addMode ( "wysiwyg" , function ( c ) { function e ( d ) { d && d . removeListener ( ) ; a . editable ( new g ( a , b . $ . contentWindow . document . body ) ) ; a . setData ( a . getData ( 1 ) , c ) } var k = "document.open();" + ( CKEDITOR . env . ie ? "(" + CKEDITOR . tools . fixDomain +
( a . push ( "html{height:100% !important}" ) , a . push ( "img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}" ) ) ; a . push ( "html{cursor:text;*cursor:auto}" ) ; a . push ( "img,input,textarea{cursor:default}" ) ; return a . join ( "\n" ) } CKEDITOR . plugins . add ( "wysiwygarea" , { init : function ( a ) { a . config . fullPage && a . addFeature ( { allowedContent : "html head title; style [media,type]; body (*)[id]; meta link [*]" , requiredContent : "body" } ) ; a . addMode ( "wysiwyg" , function ( c ) { function e ( d ) { d && d . removeListener ( ) ; a . editable ( new g ( a ,
")();" : "" ) + "document.close();" , k = CKEDITOR . env . air ? "javascript:void(0)" : CKEDITOR . env . ie && ! CKEDITOR . env . edge ? "javascript:void(function(){" + encodeURIComponent ( k ) + "}())" : "" , b = CKEDITOR . dom . element . createFromHtml ( '\x3ciframe src\x3d"' + k + '" frameBorder\x3d"0"\x3e\x3c/iframe\x3e' ) ; b . setStyles ( { width : "100%" , height : "100%" } ) ; b . addClass ( "cke_wysiwyg_frame" ) . addClass ( "cke_reset" ) ; k = a . ui . space ( "contents" ) ; k . append ( b ) ; var d = CKEDITOR . env . ie && ! CKEDITOR . env . edge || CKEDITOR . env . gecko ; if ( d ) b . on ( "load" , e ) ; var h = a . title ,
b . $ . contentWindow . document . body ) ) ; a . setData ( a . getData ( 1 ) , c ) } var k = "document.open();" + ( CKEDITOR . env . ie ? "(" + CKEDITOR . tools . fixDomain + ")();" : "" ) + "document.close();" , k = CKEDITOR . env . air ? "javascript:void(0)" : CKEDITOR . env . ie && ! CKEDITOR . env . edge ? "javascript:void(function(){" + encodeURIComponent ( k ) + "}())" : "" , b = CKEDITOR . dom . element . createFromHtml ( '\x3ciframe src\x3d"' + k + '" frameBorder\x3d"0"\x3e\x3c/iframe\x3e' ) ; b . setStyles ( { width : "100%" , height : "100%" } ) ; b . addClass ( "cke_wysiwyg_frame" ) . addClass ( "cke_reset" ) ;
p = a . fire ( "ariaEditorHelpLabel" , { } ) . label ; h && ( CKEDITOR . env . ie && p && ( h += ", " + p ) , b . setAttribute ( "title" , h ) ) ; if ( p ) { var h = CKEDITOR . tools . getNextId ( ) , v = CKEDITOR . dom . element . createFromHtml ( '\x3cspan id\x3d"' + h + '" class\x3d"cke_voice_label"\x3e' + p + "\x3c/span\x3e" ) ; k . append ( v , 1 ) ; b . setAttribute ( "aria-describedby" , h ) } a . on ( "beforeModeUnload" , function ( a ) { a . removeListener ( ) ; v && v . remove ( ) } ) ; b . setAttributes ( { tabIndex : a . tabIndex , allowTransparency : "true" } ) ; ! d && e ( ) ; a . fire ( "ariaWidget" , b ) } ) } } ) ; CKEDITOR . editor . prototype . addContentsCss =
k = a . ui . space ( "contents" ) ; k . append ( b ) ; var d = CKEDITOR . env . ie && ! CKEDITOR . env . edge || CKEDITOR . env . gecko ; if ( d ) b . on ( "load" , e ) ; var h = a . title , p = a . fire ( "ariaEditorHelpLabel" , { } ) . label ; h && ( CKEDITOR . env . ie && p && ( h += ", " + p ) , b . setAttribute ( "title" , h ) ) ; if ( p ) { var h = CKEDITOR . tools . getNextId ( ) , v = CKEDITOR . dom . element . createFromHtml ( '\x3cspan id\x3d"' + h + '" class\x3d"cke_voice_label"\x3e' + p + "\x3c/span\x3e" ) ; k . append ( v , 1 ) ; b . setAttribute ( "aria-describedby" , h ) } a . on ( "beforeModeUnload" , function ( a ) { a . removeListener ( ) ; v && v . remove ( ) } ) ;
function ( a ) { var c = this . config , e = c . contentsCss ; CKEDITOR . tools . isArray ( e ) || ( c . contentsCss = e ? [ e ] : [ ] ) ; c . contentsCss . push ( a ) } ; var g = CKEDITOR . tools . createClass ( { $ : function ( ) { this . base . apply ( this , arguments ) ; this . _ . frameLoadedHandler = CKEDITOR . tools . addFunction ( function ( c ) { CKEDITOR . tools . setTimeout ( a , 0 , this , c ) } , this ) ; this . _ . docTitle = this . getWindow ( ) . getFrame ( ) . getAttribute ( "title" ) } , base : CKEDITOR . editable , proto : { setData : function ( a , e ) { var g = this . editor ; if ( e ) this . setHtml ( a ) , this . fixInitialSelection ( ) , g . fire ( "dataReady" ) ;
b . setAttributes ( { tabIndex : a . tabIndex , allowTransparency : "true" } ) ; ! d && e ( ) ; a . fire ( "ariaWidget" , b ) } ) } } ) ; CKEDITOR . editor . prototype . addContentsCss = function ( a ) { var c = this . config , e = c . contentsCss ; CKEDITOR . tools . isArray ( e ) || ( c . contentsCss = e ? [ e ] : [ ] ) ; c . contentsCss . push ( a ) } ; var g = CKEDITOR . tools . createClass ( { $ : function ( ) { this . base . apply ( this , arguments ) ; this . _ . frameLoadedHandler = CKEDITOR . tools . addFunction ( function ( c ) { CKEDITOR . tools . setTimeout ( a , 0 , this , c ) } , this ) ; this . _ . docTitle = this . getWindow ( ) . getFrame ( ) . getAttribute ( "title" ) } ,
else { this . _ . isLoadingData = ! 0 ; g . _ . dataStore = { id : 1 } ; var k = g . config , b = k . fullPage , d = k . docType , h = CKEDITOR . tools . buildStyleHtml ( c ( ) ) . replace ( /<style>/ , '\x3cstyle data-cke-temp\x3d"1"\x3e' ) ; b || ( h += CKEDITOR . tools . buildStyleHtml ( g . config . contentsCss ) ) ; var p = k . baseHref ? '\x3cbase href\x3d"' + k . baseHref + '" data-cke-temp\x3d"1" /\x3e' : "" ; b && ( a = a . replace ( /<!DOCTYPE[^>]*>/i , function ( a ) { g . docType = d = a ; return "" } ) . replace ( /<\?xml\s[^\?]*\?>/i , function ( a ) { g . xmlDeclaration = a ; return "" } ) ) ; a = g . dataProcessor . toHtml ( a ) ; b ? ( /<body[\s|>]/ . test ( a ) ||
base : CKEDITOR . editable , proto : { setData : function ( a , e ) { var g = this . editor ; if ( e ) this . setHtml ( a ) , this . fixInitialSelection ( ) , g . fire ( "dataReady" ) ; else { this . _ . isLoadingData = ! 0 ; g . _ . dataStore = { id : 1 } ; var k = g . config , b = k . fullPage , d = k . docType , h = CKEDITOR . tools . buildStyleHtml ( c ( ) ) . replace ( /<style>/ , '\x3cstyle data-cke-temp\x3d"1"\x3e' ) ; b || ( h += CKEDITOR . tools . buildStyleHtml ( g . config . contentsCss ) ) ; var p = k . baseHref ? '\x3cbase href\x3d"' + k . baseHref + '" data-cke-temp\x3d"1" /\x3e' : "" ; b && ( a = a . replace ( /<!DOCTYPE[^>]*>/i , function ( a ) { g . docType =
( a = "\x3cbody\x3e" + a ) , /<html[\s|>]/ . test ( a ) || ( a = "\x3chtml\x3e" + a + "\x3c/html\x3e" ) , /<head[\s|>]/ . test ( a ) ? /<title[\s|>]/ . test ( a ) || ( a = a . replace ( /<head[^>]*>/ , "$\x26\x3ctitle\x3e\x3c/title\x3e" ) ) : a = a . replace ( /<html[^>]*>/ , "$\x26\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e" ) , p && ( a = a . replace ( /<head[^>]*?>/ , "$\x26" + p ) ) , a = a . replace ( /<\/head\s*>/ , h + "$\x26" ) , a = d + a ) : a = k . docType + '\x3chtml dir\x3d"' + k . contentsLangDirection + '" lang\x3d"' + ( k . contentsLanguage || g . langCode ) + '"\x3e\x3chead\x3e\x3ctitle\x3e' +
d = a ; return "" } ) . replace ( /<\?xml\s[^\?]*\?>/i , function ( a ) { g . xmlDeclaration = a ; return "" } ) ) ; a = g . dataProcessor . toHtml ( a ) ; b ? ( /<body[\s|>]/ . test ( a ) || ( a = "\x3cbody\x3e" + a ) , /<html[\s|>]/ . test ( a ) || ( a = "\x3chtml\x3e" + a + "\x3c/html\x3e" ) , /<head[\s|>]/ . test ( a ) ? /<title[\s|>]/ . test ( a ) || ( a = a . replace ( /<head[^>]*>/ , "$\x26\x3ctitle\x3e\x3c/title\x3e" ) ) : a = a . replace ( /<html[^>]*>/ , "$\x26\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e" ) , p && ( a = a . replace ( /<head[^>]*?>/ , "$\x26" + p ) ) , a = a . replace ( /<\/head\s*>/ , h + "$\x26" ) , a =
this . _ . docTitle + "\x3c/title\x3e" + p + h + "\x3c/head\x3e\x3cbody" + ( k . bodyId ? ' id\x3d"' + k . bodyId + '"' : "" ) + ( k . bodyClass ? ' class\x3d"' + k . bodyClass + '"' : "" ) + "\x3e" + a + "\x3c/body\x3e\x3c/html\x3e" ; CKEDITOR . env . gecko && ( a = a . replace ( /<body/ , '\x3cbody contenteditable\x3d"true" ' ) , 2E4 > CKEDITOR . env . version && ( a = a . replace ( /<body[^>]*>/ , "$\x26\x3c!-- cke-content-start --\x3e" ) ) ) ; k = '\x3cscript id\x3d"cke_actscrpt" type\x3d"text/javascript"' + ( CKEDITOR . env . ie ? ' defer\x3d"defer" ' : "" ) + "\x3evar wasLoaded\x3d0;function onload(){if(!wasLoaded)window.parent.CKEDITOR.tools.callFunction(" +
d + a ) : a = k . docType + '\x3chtml dir\x3d"' + k . contentsLangDirection + '" lang\x3d"' + ( k . contentsLanguage || g . langCode ) + '"\x3e\x3chead\x3e\x3ctitle\x3e' + this . _ . docTitle + "\x3c/title\x3e" + p + h + "\x3c/head\x3e\x3cbody" + ( k . bodyId ? ' id\x3d"' + k . bodyId + '"' : "" ) + ( k . bodyClass ? ' class\x3d"' + k . bodyClass + '"' : "" ) + "\x3e" + a + "\x3c/body\x3e\x3c/html\x3e" ; CKEDITOR . env . gecko && ( a = a . replace ( /<body/ , '\x3cbody contenteditable\x3d"true" ' ) , 2E4 > CKEDITOR . env . version && ( a = a . replace ( /<body[^>]*>/ , "$\x26\x3c!-- cke-content-start --\x3e" ) ) ) ;
this . _ . frameLoadedHandler + ",window);wasLoaded\x3d1;}" + ( CKEDITOR . env . ie ? "onload();" : 'document.addEventListener("DOMContentLoaded", onload, false );' ) + "\x3c/script\x3e" ; CKEDITOR . env . ie && 9 > CKEDITOR . env . version && ( k += '\x3cscript id\x3d"cke_shimscrpt"\x3ewindow.parent.CKEDITOR.tools.enableHtml5Elements(document)\x3c/script\x3e' ) ; p && CKEDITOR . env . ie && 10 > CKEDITOR . env . version && ( k += '\x3cscript id\x3d"cke_basetagscrpt"\x3evar baseTag \x3d document.querySelector( "base" );baseTag.href \x3d baseTag.href;\x3c/script\x3e' ) ;
k = '\x3cscript id\x3d"cke_actscrpt" type\x3d"text/javascript"' + ( CKEDITOR . env . ie ? ' defer\x3d"defer" ' : "" ) + "\x3evar wasLoaded\x3d0;function onload(){if(!wasLoaded)window.parent.CKEDITOR.tools.callFunction(" + this . _ . frameLoadedHandler + ",window);wasLoaded\x3d1;}" + ( CKEDITOR . env . ie ? "onload();" : 'document.addEventListener("DOMContentLoaded", onload, false );' ) + "\x3c/script\x3e" ; CKEDITOR . env . ie && 9 > CKEDITOR . env . version && ( k += '\x3cscript id\x3d"cke_shimscrpt"\x3ewindow.parent.CKEDITOR.tools.enableHtml5Elements(document)\x3c/script\x3e' ) ;
a = a . replace ( /(?=\s*<\/(:?head)>)/ , k ) ; this . clearCustomData ( ) ; this . clearListeners ( ) ; g . fire ( "contentDomUnload" ) ; var v = this . getDocument ( ) ; try { v . write ( a ) } catch ( u ) { setTimeout ( function ( ) { v . write ( a ) } , 0 ) } } } , getData : function ( a ) { if ( a ) return this . getHtml ( ) ; a = this . editor ; var c = a . config , e = c . fullPage , g = e && a . docType , b = e && a . xmlDeclaration , d = this . getDocument ( ) , e = e ? d . getDocumentElement ( ) . getOuterHtml ( ) : d . getBody ( ) . getHtml ( ) ; CKEDITOR . env . gecko && c . enterMode != CKEDITOR . ENTER _BR && ( e = e . replace ( /<br>(?=\s*(:?$|<\/body>))/ ,
p && CKEDITOR . env . ie && 10 > CKEDITOR . env . version && ( k += '\x3cscript id\x3d"cke_basetagscrpt"\x3evar baseTag \x3d document.querySelector( "base" );baseTag.href \x3d baseTag.href;\x3c/script\x3e' ) ; a = a . replace ( /(?=\s*<\/(:?head)>)/ , k ) ; this . clearCustomData ( ) ; this . clearListeners ( ) ; g . fire ( "contentDomUnload" ) ; var v = this . getDocument ( ) ; try { v . write ( a ) } catch ( u ) { setTimeout ( function ( ) { v . write ( a ) } , 0 ) } } } , getData : function ( a ) { if ( a ) return this . getHtml ( ) ; a = this . editor ; var c = a . config , e = c . fullPage , g = e && a . docType , b = e && a . xmlDeclaration ,
"" ) ) ; e = a . dataProcessor . toDataFormat ( e ) ; b && ( e = b + "\n" + e ) ; g && ( e = g + "\n" + e ) ; return e } , focus : function ( ) { this . _ . isLoadingData ? this . _ . isPendingFocus = ! 0 : g . baseProto . focus . call ( this ) } , detach : function ( ) { var a = this . editor , c = a . document , a= a . window . getFrame ( ) ; g . baseProto . detach . call ( this ) ; this . clearCustomData ( ) ; c . getDocumentElement ( ) . clearCustomData ( ) ; a . clearCustomData ( ) ; CKEDITOR . tools . removeFunction ( this . _ . frameLoadedHandler ) ; ( c = a . removeCustomData ( "onResize" ) ) && c . removeListener ( ) ; a . remove ( ) } } } ) } ( ) , CKEDITOR . config . disableObjectResizing =
d = this . getDocument ( ) , e = e ? d . getDocumentElement ( ) . getOuterHtml ( ) : d . getBody ( ) . getHtml ( ) ; CKEDITOR . env . gecko && c . enterMode != CKEDITOR . ENTER _BR && ( e = e . replace ( /<br>(?=\s*(:?$|<\/body>))/ , "" ) ) ; e = a . dataProcessor . toDataFormat ( e ) ; b && ( e = b + "\n" + e ) ; g && ( e = g + "\n" + e ) ; return e } , focus : function ( ) { this . _ . isLoadingData ? this . _ . isPendingFocus = ! 0 : g . baseProto . focus . call ( this ) } , detach : function ( ) { var a = this . editor , c = a . document , e; try { e = a . window . getFrame ( ) } catch ( k ) { } g . baseProto . detach . call ( this ) ; this . clearCustomData ( ) ; c . getDocumentElement ( ) . clearCustomData ( ) ;
! 1 , CKEDITOR . config . disableNativeTableHandles = ! 0 , CKEDITOR . config . disableNativeSpellChecker = ! 0 , CKEDITOR . config . contentsCss = CKEDITOR . getUrl ( "contents.css" ) , function ( ) { function a ( a , f ) { var m , l ; f . on ( "refresh" , function ( a ) { var b = [ e ] , d ; for ( d in a . data . states ) b . push ( a . data . states [ d ] ) ; this . setState ( CKEDITOR . tools . search ( b , c ) ? c : e ) } , f , null , 100 ) ; f . on ( "exec" , function ( c ) { m = a . getSelection ( ) ; l = m . createBookmarks ( 1 ) ; c . data || ( c . data = { } ) ; c . data . done = ! 1 } , f , null , 0 ) ; f . on ( "exec" , function ( ) { a . forceNextSelectionCheck ( ) ; m . selectBookmarks ( l ) } ,
CKEDITOR . tools . removeFunction ( this . _ . frameLoadedHandler ) ; e && e . getParent ( ) ? ( e . clearCustomData ( ) , ( a = e . removeCustomData ( "onResize" ) ) && a . removeListener ( ) , e . remove ( ) ) : CKEDITOR . warn ( "editor-destroy-iframe" ) } } } ) } ( ) , CKEDITOR . config . disableObjectResizing = ! 1 , CKEDITOR . config . disableNativeTableHandles = ! 0 , CKEDITOR . config . disableNativeSpellChecker = ! 0 , function ( ) { function a ( a , f ) { var m , l ; f . on ( "refresh" , function ( a ) { var b = [ e ] , d ; for ( d in a . data . states ) b . push ( a . data . states [ d ] ) ; this . setState ( CKEDITOR . tools . search ( b , c ) ?
f , null , 100 ) } var e = CKEDITOR . TRISTATE _DISABLED , c = CKEDITOR . TRISTATE _OFF ; CKEDITOR . plugins . add ( "indent" , { init : function ( c ) { var e = CKEDITOR . plugins . indent . genericDefinition ; a ( c , c . addCommand ( "indent" , new e ( ! 0 ) ) ) ; a ( c , c . addCommand ( "outdent" , new e ) ) ; c . ui . addButton && ( c . ui . addButton ( "Indent" , { label : c . lang . indent . indent , command : "indent" , directional : ! 0 , toolbar : "indent,20" } ) , c . ui . addButton ( "Outdent" , { label : c . lang . indent . outdent , command : "outdent" , directional : ! 0 , toolbar : "indent,10" } ) ) ; c . on ( "dirChanged" , function ( a ) { var e =
c : e ) } , f , null , 100 ) ; f . on ( "exec" , function ( c ) { m = a . getSelection ( ) ; l = m . createBookmarks ( 1 ) ; c . data || ( c . data = { } ) ; c . data . done = ! 1 } , f , null , 0 ) ; f . on ( "exec" , function ( ) { a . forceNextSelectionCheck ( ) ; m . selectBookmarks ( l ) } , f , null , 100 ) } var e = CKEDITOR . TRISTATE _DISABLED , c = CKEDITOR . TRISTATE _OFF ; CKEDITOR . plugins . add ( "indent" , { init : function ( c ) { var e = CKEDITOR . plugins . indent . genericDefinition ; a ( c , c . addCommand ( "indent" , new e ( ! 0 ) ) ) ; a ( c , c . addCommand ( "outdent" , new e ) ) ; c . ui . addButton && ( c . ui . addButton ( "Indent" , { label : c . lang . indent . indent ,
c . createRange ( ) , f = a . data . node ; e . setStartBefore ( f ) ; e . setEndAfter ( f ) ; for ( var b = new CKEDITOR . dom . walker ( e ) , d ; d = b . next ( ) ; ) if ( d . type == CKEDITOR . NODE _ELEMENT ) if ( ! d . equals ( f ) && d . getDirection ( ) ) e . setStartAfter ( d ) , b = new CKEDITOR . dom . walker ( e ) ; else { var h = c . config . indentClasses ; if ( h ) for ( var p = "ltr" == a . data . dir ? [ "_rtl" , "" ] : [ "" , "_rtl" ] , v = 0 ; v < h . length ; v ++ ) d . hasClass ( h [ v ] + p [ 0 ] ) && ( d . removeClass ( h [ v ] + p [ 0 ] ) , d . addClass ( h [ v ] + p [ 1 ] ) ) ; h = d . getStyle ( "margin-right" ) ; p = d . getStyle ( "margin-left" ) ; h ? d . setStyle ( "margin-left" , h ) :
command : "indent" , directional : ! 0 , toolbar : "indent,20" } ) , c . ui . addButton ( "Outdent" , { label : c . lang . indent . outdent , command : "outdent" , directional : ! 0 , toolbar : "indent,10" } ) ) ; c . on ( "dirChanged" , function ( a ) { var e = c . createRange ( ) , f = a . data . node ; e . setStartBefore ( f ) ; e . setEndAfter ( f ) ; for ( var b = new CKEDITOR . dom . walker ( e ) , d ; d = b . next ( ) ; ) if ( d . type == CKEDITOR . NODE _ELEMENT ) if ( ! d . equals ( f ) && d . getDirection ( ) ) e . setStartAfter ( d ) , b = new CKEDITOR . dom . walker ( e ) ; else { var h = c . config . indentClasses ; if ( h ) for ( var p = "ltr" == a . data . dir ? [ "_rtl" ,
d . removeStyle ( "margin-left" ) ; p ? d . setStyle ( "margin-right" , p ) : d . removeStyle ( "margin-right" ) } } ) } } ) ; CKEDITOR . plugins . indent = { genericDefinition : function ( a ) { this . isIndent = ! ! a ; this . startDisabled = ! this . isIndent } , specificDefinition : function ( a , c , e ) { this . name = c ; this . editor = a ; this . jobs = { } ; this . enterBr = a . config . enterMode == CKEDITOR . ENTER _BR ; this . isIndent = ! ! e ; this . relatedGlobal = e ? "indent" : "outdent" ; this . indentKey = e ? 9 : CKEDITOR . SHIFT + 9 ; this . database = { } } , registerCommands : function ( a , c ) { a . on ( "pluginsLoaded" , function ( ) { for ( var a in c ) ( function ( a ,
"" ] : [ "" , "_rtl" ] , v = 0 ; v < h . length ; v ++ ) d . hasClass ( h [ v ] + p [ 0 ] ) && ( d . removeClass ( h [ v ] + p [ 0 ] ) , d . addClass ( h [ v ] + p [ 1 ] ) ) ; h = d . getStyle ( "margin-right" ) ; p = d . getStyle ( "margin-left" ) ; h ? d . setStyle ( "margin-left" , h ) : d . removeStyle ( "margin-left" ) ; p ? d . setStyle ( "margin-right" , p ) : d . removeStyle ( "margin-right" ) } } ) } } ) ; CKEDITOR . plugins . indent = { genericDefinition : function ( a ) { this . isIndent = ! ! a ; this . startDisabled = ! this . isIndent } , specificDefinition : function ( a , c , e ) { this . name = c ; this . editor = a ; this . jobs = { } ; this . enterBr = a . config . enterMode ==
c ) { var b = a . getCommand ( c . relatedGlobal ) , d ; for ( d in c . jobs ) b . on ( "exec" , function ( b ) { b . data . done || ( a . fire ( "lockSnapshot" ) , c . execJob ( a , d ) && ( b . data . done = ! 0 ) , a . fire ( "unlockSnapshot" ) , CKEDITOR . dom . element . clearAllMarkers ( c . database ) ) } , this , null , d ) , b . on ( "refresh" , function ( b ) { b . data . states || ( b . data . states = { } ) ; b . data . states [ c . name + "@" + d ] = c . refreshJob ( a , d , b . data . path ) } , this , null , d ) ; a . addFeature ( c ) } ) ( this , c [ a ] ) } ) } } ; CKEDITOR . plugins . indent . genericDefinition . prototype = { context : "p" , exec : function ( ) { } } ; CKEDITOR . plugins . indent . specificDefinition . prototype =
CKEDITOR . ENTER _BR ; this . isIndent = ! ! e ; this . relatedGlobal = e ? "indent" : "outdent" ; this . indentKey = e ? 9 : CKEDITOR . SHIFT + 9 ; this . database = { } } , registerCommands : function ( a , c ) { a . on ( "pluginsLoaded" , function ( ) { for ( var a in c ) ( function ( a , c ) { var b = a . getCommand ( c . relatedGlobal ) , d ; for ( d in c . jobs ) b . on ( "exec" , function ( b ) { b . data . done || ( a . fire ( "lockSnapshot" ) , c . execJob ( a , d ) && ( b . data . done = ! 0 ) , a . fire ( "unlockSnapshot" ) , CKEDITOR . dom . element . clearAllMarkers ( c . database ) ) } , this , null , d ) , b . on ( "refresh" , function ( b ) { b . data . states ||
{ execJob : function ( a , c ) { var m = this . jobs [ c ] ; if ( m . state != e ) return m . exec . call ( this , a ) } , refreshJob : function ( a , c , m ) { c = this . jobs [ c ] ; a . activeFilter . checkFeature ( this ) ? c . state = c . refresh . call ( this , a , m ) : c . state = e ; return c . state } , getContext : function ( a ) { return a . contains ( this . context ) } } } ( ) , function ( ) { function a ( a ) { function b ( b ) { for ( var e = m . startContainer , n = m . endContainer ; e && ! e . getParent ( ) . equals ( b ) ; ) e = e . getParent ( ) ; for ( ; n && ! n . getParent ( ) . equals ( b ) ; ) n = n . getParent ( ) ; if ( ! e || ! n ) return ! 1 ; for ( var l = e , e = [ ] , t = ! 1 ; ! t ; ) l . equals ( n ) &&
( b . data . states = { } ) ; b . data . states [ c . name + "@" + d ] = c . refreshJob ( a , d , b . data . path ) } , this , null , d ) ; a . addFeature ( c ) } ) ( this , c [ a ] ) } ) } } ; CKEDITOR . plugins . indent . genericDefinition . prototype = { context : "p" , exec : function ( ) { } } ; CKEDITOR . plugins . indent . specificDefinition . prototype = { execJob : function ( a , c ) { var m = this . jobs [ c ] ; if ( m . state != e ) return m . exec . call ( this , a ) } , refreshJob : function ( a , c , m ) { c = this . jobs [ c ] ; a . activeFilter . checkFeature ( this ) ? c . state = c . refresh . call ( this , a , m ) : c . state = e ; return c . state } , getContext : function ( a ) { return a . contains ( this . context ) } } } ( ) ,
( t = ! 0 ) , e . push ( l ) , l = l . getNext ( ) ; if ( 1 > e . length ) return ! 1 ; l = b . getParents ( ! 0 ) ; for ( n = 0 ; n < l . length ; n ++ ) if ( l [ n ] . getName && g [ l [ n ] . getName ( ) ] ) { b = l [ n ] ; break } for ( var l = d . isIndent ? 1 : - 1 , n = e [ 0 ] , e = e [ e . length - 1 ] , t = CKEDITOR . plugins . list . listToArray ( b , f ) , x = t [ e . getCustomData ( "listarray_index" ) ] . indent , n = n . getCustomData ( "listarray_index" ) ; n <= e . getCustomData ( "listarray_index" ) ; n ++ ) if ( t [ n ] . indent += l , 0 < l ) { var B = t [ n ] . parent ; t [ n ] . parent = new CKEDITOR . dom . element ( B . getName ( ) , B . getDocument ( ) ) } for ( n = e . getCustomData ( "listarray_index" ) +
function ( ) { function a ( a ) { function b ( b ) { for ( var e = m . startContainer , n = m . endContainer ; e && ! e . getParent ( ) . equals ( b ) ; ) e = e . getParent ( ) ; for ( ; n && ! n . getParent ( ) . equals ( b ) ; ) n = n . getParent ( ) ; if ( ! e || ! n ) return ! 1 ; for ( var l = e , e = [ ] , t = ! 1 ; ! t ; ) l . equals ( n ) && ( t = ! 0 ) , e . push ( l ) , l = l . getNext ( ) ; if ( 1 > e . length ) return ! 1 ; l = b . getParents ( ! 0 ) ; for ( n = 0 ; n < l . length ; n ++ ) if ( l [ n ] . getName && g [ l [ n ] . getName ( ) ] ) { b = l [ n ] ; break } for ( var l = d . isIndent ? 1 : - 1 , n = e [ 0 ] , e = e [ e . length - 1 ] , t = CKEDITOR . plugins . list . listToArray ( b , f ) , x = t [ e . getCustomData ( "listarray_index" ) ] . indent ,
1 ; n < t . length && t [ n ] . indent > x ; n ++ ) t [ n ] . indent += l ; e = CKEDITOR . plugins . list . arrayToList ( t , f , null , a . config . enterMode , b . getDirection ( ) ) ; if ( ! d . isIndent ) { var v ; if ( ( v = b . getParent ( ) ) && v . is ( "li" ) ) for ( var l = e . listNode . getChildren ( ) , z = [ ] , D , n = l . count ( ) - 1 ; 0 <= n ; n -- ) ( D = l . getItem ( n ) ) && D . is && D . is ( "li" ) && z . push ( D ) } e && e . listNode . replace ( b ) ; if ( z && z . length ) for ( n = 0 ; n < z . length ; n ++ ) { for ( D = b = z [ n ] ; ( D = D . getNext ( ) ) && D . is && D . getName ( ) in g ; ) CKEDITOR . env . needsNbspFiller && ! b . getFirst ( c ) && b . append ( m . document . createText ( " " ) ) , b . append ( D ) ;
n = n . getCustomData ( "listarray_index" ) ; n <= e . getCustomData ( "listarray_index" ) ; n ++ ) if ( t [ n ] . indent += l , 0 < l ) { var B = t [ n ] . parent ; t [ n ] . parent = new CKEDITOR . dom . element ( B . getName ( ) , B . getDocument ( ) ) } for ( n = e . getCustomData ( "listarray_index" ) + 1 ; n < t . length && t [ n ] . indent > x ; n ++ ) t [ n ] . indent += l ; e = CKEDITOR . plugins . list . arrayToList ( t , f , null , a . config . enterMode , b . getDirection ( ) ) ; if ( ! d . isIndent ) { var v ; if ( ( v = b . getParent ( ) ) && v . is ( "li" ) ) for ( var l = e . listNode . getChildren ( ) , z = [ ] , D , n = l . count ( ) - 1 ; 0 <= n ; n -- ) ( D = l . getItem ( n ) ) && D . is && D . is ( "li" ) &&
b . insertAfter ( v ) } e && a . fire ( "contentDomInvalidated" ) ; return ! 0 } for ( var d = this , f = this . database , g = this . context , l = a . getSelection ( ) , l = ( l && l . getRanges ( ) ) . createIterator ( ) , m ; m = l . getNextRange ( ) ; ) { for ( var t = m . getCommonAncestor ( ) ; t && ( t . type != CKEDITOR . NODE _ELEMENT || ! g [ t . getName ( ) ] ) ; ) { if ( a . editable ( ) . equals ( t ) ) { t = ! 1 ; break } t = t . getParent ( ) } t || ( t = m . startPath ( ) . contains ( g ) ) && m . setEndAt ( t , CKEDITOR . POSITION _BEFORE _END ) ; if ( ! t ) { var n = m . getEnclosedNode ( ) ; n && n . type == CKEDITOR . NODE _ELEMENT && n . getName ( ) in g && ( m . setStartAt ( n ,
z . push ( D ) } e && e . listNode . replace ( b ) ; if ( z && z . length ) for ( n = 0 ; n < z . length ; n ++ ) { for ( D = b = z [ n ] ; ( D = D . getNext ( ) ) && D . is && D . getName ( ) in g ; ) CKEDITOR . env . needsNbspFiller && ! b . getFirst ( c ) && b . append ( m . document . createText ( " " ) ) , b . append ( D ) ; b . insertAfter ( v ) } e && a . fire ( "contentDomInvalidated" ) ; return ! 0 } for ( var d = this , f = this . database , g = this . context , l = a . getSelection ( ) , l = ( l && l . getRanges ( ) ) . createIterator ( ) , m ; m = l . getNextRange ( ) ; ) { for ( var t = m . getCommonAncestor ( ) ; t && ( t . type != CKEDITOR . NODE _ELEMENT || ! g [ t . getName ( ) ] ) ; ) { if ( a . editable ( ) . equals ( t ) ) { t =
CKEDITOR . POSITION _AFTER _START ) , m . setEndAt ( n , CKEDITOR . POSITION _BEFORE _END ) , t = n ) } t && m . startContainer . type == CKEDITOR . NODE _ELEMENT && m . startContainer . getName ( ) in g && ( n = new CKEDITOR . dom . walker ( m ) , n . evaluator = e , m . startContainer = n . next ( ) ) ; t && m . endContainer . type == CKEDITOR . NODE _ELEMENT && m . endContainer . getName ( ) in g && ( n = new CKEDITOR . dom . walker ( m ) , n . evaluator = e , m . endContainer = n . previous ( ) ) ; if ( t ) return b ( t ) } return 0 } function e ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && a . is ( "li" ) } function c ( a ) { return g ( a ) && f ( a ) }
! 1 ; break } t = t . getParent ( ) } t || ( t = m . startPath ( ) . contains ( g ) ) && m . setEndAt ( t , CKEDITOR . POSITION _BEFORE _END ) ; if ( ! t ) { var n = m . getEnclosedNode ( ) ; n && n . type == CKEDITOR . NODE _ELEMENT && n . getName ( ) in g && ( m . setStartAt ( n , CKEDITOR . POSITION _AFTER _START ) , m . setEndAt ( n , CKEDITOR . POSITION _BEFORE _END ) , t = n ) } t && m . startContainer . type == CKEDITOR . NODE _ELEMENT && m . startContainer . getName ( ) in g && ( n = new CKEDITOR . dom . walker ( m ) , n . evaluator = e , m . startContainer = n . next ( ) ) ; t && m . endContainer . type == CKEDITOR . NODE _ELEMENT && m . endContainer . getName ( ) in
var g = CKEDITOR . dom . walker . whitespaces ( ! 0 ) , f = CKEDITOR . dom . walker . bookmark ( ! 1 , ! 0 ) , m = CKEDITOR . TRISTATE _DISABLED , l = CKEDITOR . TRISTATE _OFF ; CKEDITOR . plugins . add ( "indentlist" , { requires : "indent" , init : function ( c ) { function b ( b ) { d . specificDefinition . apply ( this , arguments ) ; this . requiredContent = [ "ul" , "ol" ] ; b . on ( "key" , function ( a ) { if ( "wysiwyg" == b . mode && a . data . keyCode == this . indentKey ) { var c = this . getContext ( b . elementPath ( ) ) ; ! c || this . isIndent && CKEDITOR . plugins . indentList . firstItemInPath ( this . context , b . elementPath ( ) ,
g && ( n = new CKEDITOR . dom . walker ( m ) , n . evaluator = e , m . endContainer = n . previous ( ) ) ; if ( t ) return b ( t ) } return 0 } function e ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && a . is ( "li" ) } function c ( a ) { return g ( a ) && f ( a ) } var g = CKEDITOR . dom . walker . whitespaces ( ! 0 ) , f = CKEDITOR . dom . walker . bookmark ( ! 1 , ! 0 ) , m = CKEDITOR . TRISTATE _DISABLED , l = CKEDITOR . TRISTATE _OFF ; CKEDITOR . plugins . add ( "indentlist" , { requires : "indent" , init : function ( c ) { function b ( b ) { d . specificDefinition . apply ( this , arguments ) ; this . requiredContent = [ "ul" , "ol" ] ; b . on ( "key" ,
c ) || ( b . execCommand ( this . relatedGlobal ) , a . cancel ( ) ) } } , this ) ; this . jobs [ this . isIndent ? 10 : 30 ] = { refresh : this . isIndent ? function ( a , b ) { var c = this . getContext ( b ) , d = CKEDITOR . plugins . indentList . firstItemInPath ( this . context , b , c ) ; return c && this . isIndent && ! d ? l : m } : function ( a , b ) { return ! this . getContext ( b ) || this . isIndent ? m : l } , exec : CKEDITOR . tools . bind ( a , this ) } } var d = CKEDITOR . plugins . indent ; d . registerCommands ( c , { indentlist : new b ( c , "indentlist" , ! 0 ) , outdentlist : new b ( c , "outdentlist" ) } ) ; CKEDITOR . tools . extend ( b . prototype ,
function ( a ) { if ( "wysiwyg" == b . mode && a . data . keyCode == this . indentKey ) { var c = this . getContext ( b . elementPath ( ) ) ; ! c || this . isIndent && CKEDITOR . plugins . indentList . firstItemInPath ( this . context , b . elementPath ( ) , c ) || ( b . execCommand ( this . relatedGlobal ) , a . cancel ( ) ) } } , this ) ; this . jobs [ this . isIndent ? 10 : 30 ] = { refresh : this . isIndent ? function ( a , b ) { var c = this . getContext ( b ) , d = CKEDITOR . plugins . indentList . firstItemInPath ( this . context , b , c ) ; return c && this . isIndent && ! d ? l : m } : function ( a , b ) { return ! this . getContext ( b ) || this . isIndent ?
d . specificDefinition . prototype , { context : { ol : 1 , ul : 1 } } ) } } ) ; CKEDITOR . plugins . indentList = { } ; CKEDITOR . plugins . indentList . firstItemInPath = function ( a , b , c ) { var f = b . contains ( e ) ; c || ( c = b . contains ( a ) ) ; return c && f && f . equals ( c . getFirst ( e ) ) } } ( ) , function ( ) { function a ( a , b , c ) { function d ( c ) { if ( ! ( ! ( l = k [ c ? "getFirst" : "getLast" ] ( ) ) || l . is && l . isBlockBoundary ( ) || ! ( m = b . root [ c ? "getPrevious" : "getNext" ] ( CKEDITOR . dom . walker . invisible ( ! 0 ) ) ) || m . is && m . isBlockBoundary ( { br : 1 } ) ) ) a . document . createElement ( "br" ) [ c ? "insertBefore" : "insertAfter" ] ( l ) }
m : l } , exec : CKEDITOR . tools . bind ( a , this ) } } var d = CKEDITOR . plugins . indent ; d . registerCommands ( c , { indentlist : new b ( c , "indentlist" , ! 0 ) , outdentlist : new b ( c , "outdentlist" ) } ) ; CKEDITOR . tools . extend ( b . prototype , d . specificDefinition . prototype , { context : { ol : 1 , ul : 1 } } ) } } ) ; CKEDITOR . plugins . indentList = { } ; CKEDITOR . plugins . indentList . firstItemInPath = function ( a , b , c ) { var f = b . contains ( e ) ; c || ( c = b . contains ( a ) ) ; return c && f && f . equals ( c . getFirst ( e ) ) } } ( ) , function ( ) { function a ( a , b , c ) { function d ( c ) { if ( ! ( ! ( l = k [ c ? "getFirst" : "getLast" ] ( ) ) ||
for ( var e = CKEDITOR . plugins . list . listToArray ( b . root , c ) , f = [ ] , h = 0 ; h < b . contents . length ; h ++ ) { var g = b . contents [ h ] ; ( g = g . getAscendant ( "li" , ! 0 ) ) && ! g . getCustomData ( "list_item_processed" ) && ( f . push ( g ) , CKEDITOR . dom . element . setMarker ( c , g , "list_item_processed" , ! 0 ) ) } g = null ; for ( h = 0 ; h < f . length ; h ++ ) g = f [ h ] . getCustomData ( "listarray_index" ) , e [ g ] . indent = - 1 ; for ( h = g + 1 ; h < e . length ; h ++ ) if ( e [ h ] . indent > e [ h - 1 ] . indent + 1 ) { f = e [ h - 1 ] . indent + 1 - e [ h ] . indent ; for ( g = e [ h ] . indent ; e [ h ] && e [ h ] . indent >= g ; ) e [ h ] . indent += f , h ++ ; h -- } var k = CKEDITOR . plugins . list . arrayToList ( e ,
l . is && l . isBlockBoundary ( ) || ! ( m = b . root [ c ? "getPrevious" : "getNext" ] ( CKEDITOR . dom . walker . invisible ( ! 0 ) ) ) || m . is && m . isBlockBoundary ( { br : 1 } ) ) ) a . document . createElement ( "br" ) [ c ? "insertBefore" : "insertAfter" ] ( l ) } for ( var e = CKEDITOR . plugins . list . listToArray ( b . root , c ) , f = [ ] , h = 0 ; h < b . contents . length ; h ++ ) { var g = b . contents [ h ] ; ( g = g . getAscendant ( "li" , ! 0 ) ) && ! g . getCustomData ( "list_item_processed" ) && ( f . push ( g ) , CKEDITOR . dom . element . setMarker ( c , g , "list_item_processed" , ! 0 ) ) } g = null ; for ( h = 0 ; h < f . length ; h ++ ) g = f [ h ] . getCustomData ( "listarray_index" ) ,
c , null , a . config . enterMode , b . root . getAttribute ( "dir" ) ) . listNode , l , m ; d ( ! 0 ) ; d ( ) ; k . replace ( b . root ) ; a . fire ( "contentDomInvalidated" ) } function e ( a , b ) { this . name = a ; this . context = this . type = b ; this . allowedContent = b + " li" ; this . requiredContent = b } function c ( a , b , c , d ) { for ( var e , f ; e = a [ d ? "getLast" : "getFirst" ] ( u ) ; ) ( f = e . getDirection ( 1 ) ) !== b . getDirection ( 1 ) && e . setAttribute ( "dir" , f ) , e . remove ( ) , c ? e [ d ? "insertBefore" : "insertAfter" ] ( c ) : b . append ( e , d ) } function g ( a ) { function b ( d ) { var e = a [ d ? "getPrevious" : "getNext" ] ( h ) ; e && e . type ==
e [ g ] . indent = - 1 ; for ( h = g + 1 ; h < e . length ; h ++ ) if ( e [ h ] . indent > e [ h - 1 ] . indent + 1 ) { f = e [ h - 1 ] . indent + 1 - e [ h ] . indent ; for ( g = e [ h ] . indent ; e [ h ] && e [ h ] . indent >= g ; ) e [ h ] . indent += f , h ++ ; h -- } var k = CKEDITOR . plugins . list . arrayToList ( e , c , null , a . config . enterMode , b . root . getAttribute ( "dir" ) ) . listNode , l , m ; d ( ! 0 ) ; d ( ) ; k . replace ( b . root ) ; a . fire ( "contentDomInvalidated" ) } function e ( a , b ) { this . name = a ; this . context = this . type = b ; this . allowedContent = b + " li" ; this . requiredContent = b } function c ( a , b , c , d ) { for ( var e , f ; e = a [ d ? "getLast" : "getFirst" ] ( u ) ; ) ( f =
CKEDITOR . NODE _ELEMENT && e . is ( a . getName ( ) ) && ( c ( a , e , null , ! d ) , a . remove ( ) , a = e ) } b ( ) ; b ( 1 ) } function f ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && ( a . getName ( ) in CKEDITOR . dtd . $block || a . getName ( ) in CKEDITOR . dtd . $listItem ) && CKEDITOR . dtd [ a . getName ( ) ] [ "#" ] } function m ( a , b , d ) { a . fire ( "saveSnapshot" ) ; d . enlarge ( CKEDITOR . ENLARGE _LIST _ITEM _CONTENTS ) ; var e = d . extractContents ( ) ; b . trim ( ! 1 , ! 0 ) ; var f = b . createBookmark ( ) , k = new CKEDITOR . dom . elementPath ( b . startContainer ) , m = k . block , k = k . lastElement . getAscendant ( "li" , 1 ) || m , x = new CKEDITOR . dom . elementPath ( d . startContainer ) ,
e . getDirection ( 1 ) ) !== b . getDirection ( 1 ) && e . setAttribute ( "dir" , f ) , e . remove ( ) , c ? e [ d ? "insertBefore" : "insertAfter" ] ( c ) : b . append ( e , d ) } function g ( a ) { function b ( d ) { var e = a [ d ? "getPrevious" : "getNext" ] ( h ) ; e && e . type == CKEDITOR . NODE _ELEMENT && e . is ( a . getName ( ) ) && ( c ( a , e , null , ! d ) , a . remove ( ) , a = e ) } b ( ) ; b ( 1 ) } function f ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && ( a . getName ( ) in CKEDITOR . dtd . $block || a . getName ( ) in CKEDITOR . dtd . $listItem ) && CKEDITOR . dtd [ a . getName ( ) ] [ "#" ] } function m ( a , b , d ) { a . fire ( "saveSnapshot" ) ; d . enlarge ( CKEDITOR . ENLARGE _LIST _ITEM _CONTENTS ) ;
B = x . contains ( CKEDITOR . dtd . $listItem ) , x = x . contains ( CKEDITOR . dtd . $list ) ; m ? ( m = m . getBogus ( ) ) && m . remove ( ) : x && ( m = x . getPrevious ( h ) ) && p ( m ) && m . remove ( ) ; ( m = e . getLast ( ) ) && m . type == CKEDITOR . NODE _ELEMENT && m . is ( "br" ) && m . remove ( ) ; ( m = b . startContainer . getChild ( b . startOffset ) ) ? e . insertBefore ( m ) : b . startContainer . append ( e ) ; B && ( e = l ( B ) ) && ( k . contains ( B ) ? ( c ( e , B . getParent ( ) , B ) , e . remove ( ) ) : k . append ( e ) ) ; for ( ; d . checkStartOfBlock ( ) && d . checkEndOfBlock ( ) ; ) { x = d . startPath ( ) ; e = x . block ; if ( ! e ) break ; e . is ( "li" ) && ( k = e . getParent ( ) , e . equals ( k . getLast ( h ) ) &&
var e = d . extractContents ( ) ; b . trim ( ! 1 , ! 0 ) ; var f = b . createBookmark ( ) , k = new CKEDITOR . dom . elementPath ( b . startContainer ) , m = k . block , k = k . lastElement . getAscendant ( "li" , 1 ) || m , x = new CKEDITOR . dom . elementPath ( d . startContainer ) , B = x . contains ( CKEDITOR . dtd . $listItem ) , x = x . contains ( CKEDITOR . dtd . $list ) ; m ? ( m = m . getBogus ( ) ) && m . remove ( ) : x && ( m = x . getPrevious ( h ) ) && p ( m ) && m . remove ( ) ; ( m = e . getLast ( ) ) && m . type == CKEDITOR . NODE _ELEMENT && m . is ( "br" ) && m . remove ( ) ; ( m = b . startContainer . getChild ( b . startOffset ) ) ? e . insertBefore ( m ) : b . startContainer . append ( e ) ;
e . equals ( k . getFirst ( h ) ) && ( e = k ) ) ; d . moveToPosition ( e , CKEDITOR . POSITION _BEFORE _START ) ; e . remove ( ) } d = d . clone ( ) ; e = a . editable ( ) ; d . setEndAt ( e , CKEDITOR . POSITION _BEFORE _END ) ; d = new CKEDITOR . dom . walker ( d ) ; d . evaluator = function ( a ) { return h ( a ) && ! p ( a ) } ; ( d = d . next ( ) ) && d . type == CKEDITOR . NODE _ELEMENT && d . getName ( ) in CKEDITOR . dtd . $list && g ( d ) ; b . moveToBookmark ( f ) ; b . select ( ) ; a . fire ( "saveSnapshot" ) } function l ( a ) { return ( a = a . getLast ( h ) ) && a . type == CKEDITOR . NODE _ELEMENT && a . getName ( ) in k ? a : null } var k = { ol : 1 , ul : 1 } , b = CKEDITOR . dom . walker . whitespaces ( ) ,
B && ( e = l ( B ) ) && ( k . contains ( B ) ? ( c ( e , B . getParent ( ) , B ) , e . remove ( ) ) : k . append ( e ) ) ; for ( ; d . checkStartOfBlock ( ) && d . checkEndOfBlock ( ) ; ) { x = d . startPath ( ) ; e = x . block ; if ( ! e ) break ; e . is ( "li" ) && ( k = e . getParent ( ) , e . equals ( k . getLast ( h ) ) && e . equals ( k . getFirst ( h ) ) && ( e = k ) ) ; d . moveToPosition ( e , CKEDITOR . POSITION _BEFORE _START ) ; e . remove ( ) } d = d . clone ( ) ; e = a . editable ( ) ; d . setEndAt ( e , CKEDITOR . POSITION _BEFORE _END ) ; d = new CKEDITOR . dom . walker ( d ) ; d . evaluator = function ( a ) { return h ( a ) && ! p ( a ) } ; ( d = d . next ( ) ) && d . type == CKEDITOR . NODE _ELEMENT && d . getName ( ) in
d = CKEDITOR . dom . walker . bookmark ( ) , h = function ( a ) { return ! ( b ( a ) || d ( a ) ) } , p = CKEDITOR . dom . walker . bogus ( ) ; CKEDITOR . plugins . list = { listToArray : function ( a , b , c , d , e ) { if ( ! k [ a . getName ( ) ] ) return [ ] ; d || ( d = 0 ) ; c || ( c = [ ] ) ; for ( var f = 0 , h = a . getChildCount ( ) ; f < h ; f ++ ) { var g = a . getChild ( f ) ; g . type == CKEDITOR . NODE _ELEMENT && g . getName ( ) in CKEDITOR . dtd . $list && CKEDITOR . plugins . list . listToArray ( g , b , c , d + 1 ) ; if ( "li" == g . $ . nodeName . toLowerCase ( ) ) { var l = { parent : a , indent : d , element : g , contents : [ ] } ; e ? l . grandparent = e : ( l . grandparent = a . getParent ( ) ,
CKEDITOR . dtd . $list && g ( d ) ; b . moveToBookmark ( f ) ; b . select ( ) ; a . fire ( "saveSnapshot" ) } function l ( a ) { return ( a = a . getLast ( h ) ) && a . type == CKEDITOR . NODE _ELEMENT && a . getName ( ) in k ? a : null } var k = { ol : 1 , ul : 1 } , b = CKEDITOR . dom . walker . whitespaces ( ) , d = CKEDITOR . dom . walker . bookmark ( ) , h = function ( a ) { return ! ( b ( a ) || d ( a ) ) } , p = CKEDITOR . dom . walker . bogus ( ) ; CKEDITOR . plugins . list = { listToArray : function ( a , b , c , d , e ) { if ( ! k [ a . getName ( ) ] ) return [ ] ; d || ( d = 0 ) ; c || ( c = [ ] ) ; for ( var f = 0 , h = a . getChildCount ( ) ; f < h ; f ++ ) { var g = a . getChild ( f ) ; g . type == CKEDITOR . NODE _ELEMENT &&
l . grandparent && "li" == l . grandparent . $ . nodeName . toLowerCase ( ) && ( l . grandparent = l . grandparent . getParent ( ) ) ) ; b && CKEDITOR . dom . element . setMarker ( b , g , "listarray_index" , c . length ) ; c . push ( l ) ; for ( var m = 0 , p = g . getChildCount ( ) , u ; m < p ; m ++ ) u = g . getChild ( m ) , u . type == CKEDITOR . NODE _ELEMENT && k [ u . getName ( ) ] ? CKEDITOR . plugins . list . listToArray ( u , b , c , d + 1 , l . grandparent ) : l . contents . push ( u ) } } return c } , arrayToList : function ( a , b , c , e , f ) { c || ( c = 0 ) ; if ( ! a || a . length < c + 1 ) return null ; for ( var g , l = a [ c ] . parent . getDocument ( ) , m = new CKEDITOR . dom . documentFragment ( l ) ,
g . getName ( ) in CKEDITOR . dtd . $list && CKEDITOR . plugins . list . listToArray ( g , b , c , d + 1 ) ; if ( "li" == g . $ . nodeName . toLowerCase ( ) ) { var l = { parent : a , indent : d , element : g , contents : [ ] } ; e ? l . grandparent = e : ( l . grandparent = a . getParent ( ) , l . grandparent && "li" == l . grandparent . $ . nodeName . toLowerCase ( ) && ( l . grandparent = l . grandparent . getParent ( ) ) ) ; b && CKEDITOR . dom . element . setMarker ( b , g , "listarray_index" , c . length ) ; c . push ( l ) ; for ( var m = 0 , p = g . getChildCount ( ) , u ; m < p ; m ++ ) u = g . getChild ( m ) , u . type == CKEDITOR . NODE _ELEMENT && k [ u . getName ( ) ] ? CKEDITOR . plugins . list . listToArray ( u ,
p = null , u = c , v = Math . max ( a [ c ] . indent , 0 ) , D = null , G , F , J = e == CKEDITOR . ENTER _P ? "p" : "div" ; ; ) { var I = a [ u ] ; g = I . grandparent ; G = I . element . getDirection ( 1 ) ; if ( I . indent == v ) { p && a [ u ] . parent . getName ( ) == p . getName ( ) || ( p = a [ u ] . parent . clone ( ! 1 , 1 ) , f && p . setAttribute ( "dir" , f ) , m . append ( p ) ) ; D = p . append ( I . element . clone ( 0 , 1 ) ) ; G != p . getDirection ( 1 ) && D . setAttribute ( "dir" , G ) ; for ( g = 0 ; g < I . contents . length ; g ++ ) D . append ( I . contents [ g ] . clone ( 1 , 1 ) ) ; u ++ } else if ( I . indent == Math . max ( v , 0 ) + 1 ) I = a [ u - 1 ] . element . getDirection ( 1 ) , u = CKEDITOR . plugins . list . arrayToList ( a ,
b , c , d + 1 , l . grandparent ) : l . contents . push ( u ) } } return c } , arrayToList : function ( a , b , c , e , f ) { c || ( c = 0 ) ; if ( ! a || a . length < c + 1 ) return null ; for ( var g , l = a [ c ] . parent . getDocument ( ) , m = new CKEDITOR . dom . documentFragment ( l ) , p = null , u = c , v = Math . max ( a [ c ] . indent , 0 ) , D = null , G , F , J = e == CKEDITOR . ENTER _P ? "p" : "div" ; ; ) { var I = a [ u ] ; g = I . grandparent ; G = I . element . getDirection ( 1 ) ; if ( I . indent == v ) { p && a [ u ] . parent . getName ( ) == p . getName ( ) || ( p = a [ u ] . parent . clone ( ! 1 , 1 ) , f && p . setAttribute ( "dir" , f ) , m . append ( p ) ) ; D = p . append ( I . element . clone ( 0 , 1 ) ) ; G != p . getDirection ( 1 ) &&
null , u , e , I != G ? G : null ) , ! D . getChildCount ( ) && CKEDITOR . env . needsNbspFiller && 7 >= l . $ . documentMode && D . append ( l . createText ( " " ) ) , D . append ( u . listNode ) , u = u . nextIndex ; else if ( - 1 == I . indent && ! c && g ) { k [ g . getName ( ) ] ? ( D = I . element . clone ( ! 1 , ! 0 ) , G != g . getDirection ( 1 ) && D . setAttribute ( "dir" , G ) ) : D = new CKEDITOR . dom . documentFragment ( l ) ; var p = g . getDirection ( 1 ) != G , N = I . element , E = N . getAttribute ( "class" ) , P = N . getAttribute ( "style" ) , T = D . type == CKEDITOR . NODE _DOCUMENT _FRAGMENT && ( e != CKEDITOR . ENTER _BR || p || P || E ) , L , Q = I . contents . length , O ;
D . setAttribute ( "dir" , G ) ; for ( g = 0 ; g < I . contents . length ; g ++ ) D . append ( I . contents [ g ] . clone ( 1 , 1 ) ) ; u ++ } else if ( I . indent == Math . max ( v , 0 ) + 1 ) I = a [ u - 1 ] . element . getDirection ( 1 ) , u = CKEDITOR . plugins . list . arrayToList ( a , null , u , e , I != G ? G : null ) , ! D . getChildCount ( ) && CKEDITOR . env . needsNbspFiller && 7 >= l . $ . documentMode && D . append ( l . createText ( " " ) ) , D . append ( u . listNode ) , u = u . nextIndex ; else if ( - 1 == I . indent && ! c && g ) { k [ g . getName ( ) ] ? ( D = I . element . clone ( ! 1 , ! 0 ) , G != g . getDirection ( 1 ) && D . setAttribute ( "dir" , G ) ) : D = new CKEDITOR . dom . documentFragment ( l ) ;
for ( g = 0 ; g < Q ; g ++ ) if ( L = I . contents [ g ] , d ( L ) && 1 < Q ) T ? O = L . clone ( 1 , 1 ) : D . append ( L . clone ( 1 , 1 ) ) ; else if ( L . type == CKEDITOR . NODE _ELEMENT && L . isBlockBoundary ( ) ) { p && ! L . getDirection ( ) && L . setAttribute ( "dir" , G ) ; F = L ; var U = N . getAttribute ( "style" ) ; U && F . setAttribute ( "style" , U . replace ( /([^;])$/ , "$1;" ) + ( F . getAttribute ( "style" ) || "" ) ) ; E && L . addClass ( E ) ; F = null ; O && ( D . append ( O ) , O = null ) ; D . append ( L . clone ( 1 , 1 ) ) } else T ? ( F || ( F = l . createElement ( J ) , D . append ( F ) , p && F . setAttribute ( "dir" , G ) ) , P && F . setAttribute ( "style" , P ) , E && F . setAttribute ( "class" ,
var p = g . getDirection ( 1 ) != G , N = I . element , E = N . getAttribute ( "class" ) , P = N . getAttribute ( "style" ) , T = D . type == CKEDITOR . NODE _DOCUMENT _FRAGMENT && ( e != CKEDITOR . ENTER _BR || p || P || E ) , L , Q = I . contents . length , O ; for ( g = 0 ; g < Q ; g ++ ) if ( L = I . contents [ g ] , d ( L ) && 1 < Q ) T ? O = L . clone ( 1 , 1 ) : D . append ( L . clone ( 1 , 1 ) ) ; else if ( L . type == CKEDITOR . NODE _ELEMENT && L . isBlockBoundary ( ) ) { p && ! L . getDirection ( ) && L . setAttribute ( "dir" , G ) ; F = L ; var U = N . getAttribute ( "style" ) ; U && F . setAttribute ( "style" , U . replace ( /([^;])$/ , "$1;" ) + ( F . getAttribute ( "style" ) || "" ) ) ; E &&
E ) , O && ( F . append ( O ) , O = null ) , F . append ( L . clone ( 1 , 1 ) ) ) : D . append ( L . clone ( 1 , 1 ) ) ; O && ( ( F || D ) . append ( O ) , O = null ) ; D . type == CKEDITOR . NODE _DOCUMENT _FRAGMENT && u != a . length - 1 && ( CKEDITOR . env . needsBrFiller && ( G = D . getLast ( ) ) && G . type == CKEDITOR . NODE _ELEMENT && G . is ( "br" ) && G . remove ( ) , ( G = D . getLast ( h ) ) && G . type == CKEDITOR . NODE _ELEMENT && G . is ( CKEDITOR . dtd . $block ) || D . append ( l . createElement ( "br" ) ) ) ; G = D . $ . nodeName . toLowerCase ( ) ; "div" != G && "p" != G || D . appendBogus ( ) ; m . append ( D ) ; p = null ; u ++ } else return null ; F = null ; if ( a . length <= u || Math . max ( a [ u ] . indent ,
L . addClass ( E ) ; F = null ; O && ( D . append ( O ) , O = null ) ; D . append ( L . clone ( 1 , 1 ) ) } else T ? ( F || ( F = l . createElement ( J ) , D . append ( F ) , p && F . setAttribute ( "dir" , G ) ) , P && F . setAttribute ( "style" , P ) , E && F . setAttribute ( "class" , E ) , O && ( F . append ( O ) , O = null ) , F . append ( L . clone ( 1 , 1 ) ) ) : D . append ( L . clone ( 1 , 1 ) ) ; O && ( ( F || D ) . append ( O ) , O = null ) ; D . type == CKEDITOR . NODE _DOCUMENT _FRAGMENT && u != a . length - 1 && ( CKEDITOR . env . needsBrFiller && ( G = D . getLast ( ) ) && G . type == CKEDITOR . NODE _ELEMENT && G . is ( "br" ) && G . remove ( ) , ( G = D . getLast ( h ) ) && G . type == CKEDITOR . NODE _ELEMENT &&
0 ) < v ) break } if ( b ) for ( a = m . getFirst ( ) ; a ; ) { if ( a . type == CKEDITOR . NODE _ELEMENT && ( CKEDITOR . dom . element . clearMarkers ( b , a ) , a . getName ( ) in CKEDITOR . dtd . $listItem && ( c = a , l = f = e = void 0 , e = c . getDirection ( ) ) ) ) { for ( f = c . getParent ( ) ; f && ! ( l = f . getDirection ( ) ) ; ) f = f . getParent ( ) ; e == l && c . removeAttribute ( "dir" ) } a = a . getNextSourceNode ( ) } return { listNode : m , nextIndex : u } } } ; var v = /^h[1-6]$/ , u = CKEDITOR . dom . walker . nodeType ( CKEDITOR . NODE _ELEMENT ) ; e . prototype = { exec : function ( b ) { this . refresh ( b , b . elementPath ( ) ) ; var c = b . config , d = b . getSelection ( ) ,
G . is ( CKEDITOR . dtd . $block ) || D . append ( l . createElement ( "br" ) ) ) ; G = D . $ . nodeName . toLowerCase ( ) ; "div" != G && "p" != G || D . appendBogus ( ) ; m . append ( D ) ; p = null ; u ++ } else return null ; F = null ; if ( a . length <= u || Math . max ( a [ u ] . indent , 0 ) < v ) break } if ( b ) for ( a = m . getFirst ( ) ; a ; ) { if ( a . type == CKEDITOR . NODE _ELEMENT && ( CKEDITOR . dom . element . clearMarkers ( b , a ) , a . getName ( ) in CKEDITOR . dtd . $listItem && ( c = a , l = f = e = void 0 , e = c . getDirection ( ) ) ) ) { for ( f = c . getParent ( ) ; f && ! ( l = f . getDirection ( ) ) ; ) f = f . getParent ( ) ; e == l && c . removeAttribute ( "dir" ) } a = a . getNextSourceNode ( ) } return { listNode : m ,
e = d && d . getRanges ( ) ; if ( this . state == CKEDITOR . TRISTATE _OFF ) { var f = b . editable ( ) ; if ( f . getFirst ( h ) ) { var l = 1 == e . length && e [ 0 ] ; ( c = l && l . getEnclosedNode ( ) ) && c . is && this . type == c . getName ( ) && this . setState ( CKEDITOR . TRISTATE _ON ) } else c . enterMode == CKEDITOR . ENTER _BR ? f . appendBogus ( ) : e [ 0 ] . fixBlock ( 1 , c . enterMode == CKEDITOR . ENTER _P ? "p" : "div" ) , d . selectRanges ( e ) } for ( var c = d . createBookmarks ( ! 0 ) , f = [ ] , m = { } , e = e . createIterator ( ) , p = 0 ; ( l = e . getNextRange ( ) ) && ++ p ; ) { var u = l . getBoundaryNodes ( ) , A = u . startNode , z = u . endNode ; A . type == CKEDITOR . NODE _ELEMENT &&
nextIndex : u } } } ; var v = /^h[1-6]$/ , u = CKEDITOR . dom . walker . nodeType ( CKEDITOR . NODE _ELEMENT ) ; e . prototype = { exec : function ( b ) { this . refresh ( b , b . elementPath ( ) ) ; var c = b . config , d = b . getSelection ( ) , e = d && d . getRanges ( ) ; if ( this . state == CKEDITOR . TRISTATE _OFF ) { var f = b . editable ( ) ; if ( f . getFirst ( h ) ) { var l = 1 == e . length && e [ 0 ] ; ( c = l && l . getEnclosedNode ( ) ) && c . is && this . type == c . getName ( ) && this . setState ( CKEDITOR . TRISTATE _ON ) } else c . enterMode == CKEDITOR . ENTER _BR ? f . appendBogus ( ) : e [ 0 ] . fixBlock ( 1 , c . enterMode == CKEDITOR . ENTER _P ? "p" : "div" ) ,
"td" == A . getName ( ) && l . setStartAt ( u . startNode , CKEDITOR . POSITION _AFTER _START ) ; z . type == CKEDITOR . NODE _ELEMENT && "td" == z . getName ( ) && l . setEndAt ( u . endNode , CKEDITOR . POSITION _BEFORE _END ) ; l = l . createIterator ( ) ; for ( l . forceBrBreak = this . state == CKEDITOR . TRISTATE _OFF ; u = l . getNextParagraph ( ) ; ) if ( ! u . getCustomData ( "list_block" ) ) { CKEDITOR . dom . element . setMarker ( m , u , "list_block" , 1 ) ; for ( var D = b . elementPath ( u ) , A = D . elements , z = 0 , D = D . blockLimit , G , F = A . length - 1 ; 0 <= F && ( G = A [ F ] ) ; F -- ) if ( k [ G . getName ( ) ] && D . contains ( G ) ) { D . removeCustomData ( "list_group_object_" +
d . selectRanges ( e ) } for ( var c = d . createBookmarks ( ! 0 ) , f = [ ] , m = { } , e = e . createIterator ( ) , p = 0 ; ( l = e . getNextRange ( ) ) && ++ p ; ) { var u = l . getBoundaryNodes ( ) , A = u . startNode , z = u . endNode ; A . type == CKEDITOR . NODE _ELEMENT && "td" == A . getName ( ) && l . setStartAt ( u . startNode , CKEDITOR . POSITION _AFTER _START ) ; z . type == CKEDITOR . NODE _ELEMENT && "td" == z . getName ( ) && l . setEndAt ( u . endNode , CKEDITOR . POSITION _BEFORE _END ) ; l = l . createIterator ( ) ; for ( l . forceBrBreak = this . state == CKEDITOR . TRISTATE _OFF ; u = l . getNextParagraph ( ) ; ) if ( ! u . getCustomData ( "list_block" ) ) { CKEDITOR . dom . element . setMarker ( m ,
p ) ; ( A = G . getCustomData ( "list_group_object" ) ) ? A . contents . push ( u ) : ( A = { root : G , contents : [ u ] } , f . push ( A ) , CKEDITOR . dom . element . setMarker ( m , G , "list_group_object" , A ) ) ; z = 1 ; break } z || ( z = D , z . getCustomData ( "list_group_object_" + p ) ? z . getCustomData ( "list_group_object_" + p ) . contents . push ( u ) : ( A = { root : z , contents : [ u ] } , CKEDITOR . dom . element . setMarker ( m , z , "list_group_object_" + p , A ) , f . push ( A ) ) ) } } for ( G = [ ] ; 0 < f . length ; ) if ( A = f . shift ( ) , this . state == CKEDITOR . TRISTATE _OFF ) if ( k [ A . root . getName ( ) ] ) { e = b ; p = A ; A = m ; l = G ; z = CKEDITOR . plugins . list . listToArray ( p . root ,
u , "list_block" , 1 ) ; for ( var D = b . elementPath ( u ) , A = D . elements , z = 0 , D = D . blockLimit , G , F = A . length - 1 ; 0 <= F && ( G = A [ F ] ) ; F -- ) if ( k [ G . getName ( ) ] && D . contains ( G ) ) { D . removeCustomData ( "list_group_object_" + p ) ; ( A = G . getCustomData ( "list_group_object" ) ) ? A . contents . push ( u ) : ( A = { root : G , contents : [ u ] } , f . push ( A ) , CKEDITOR . dom . element . setMarker ( m , G , "list_group_object" , A ) ) ; z = 1 ; break } z || ( z = D , z . getCustomData ( "list_group_object_" + p ) ? z . getCustomData ( "list_group_object_" + p ) . contents . push ( u ) : ( A = { root : z , contents : [ u ] } , CKEDITOR . dom . element . setMarker ( m ,
A ) ; D = [ ] ; for ( u = 0 ; u < p . contents . length ; u ++ ) F = p . contents [ u ] , ( F = F . getAscendant ( "li" , ! 0 ) ) && ! F . getCustomData ( "list_item_processed" ) && ( D . push ( F ) , CKEDITOR . dom . element . setMarker ( A , F , "list_item_processed" , ! 0 ) ) ; for ( var F = p . root . getDocument ( ) , J = void 0 , I = void 0 , u = 0 ; u < D . length ; u ++ ) { var N = D [ u ] . getCustomData ( "listarray_index" ) , J = z [ N ] . parent ; J . is ( this . type ) || ( I = F . createElement ( this . type ) , J . copyAttributes ( I , { start : 1 , type : 1 } ) , I . removeStyle ( "list-style-type" ) , z [ N ] . parent = I ) } A = CKEDITOR . plugins . list . arrayToList ( z , A , null ,
z , "list_group_object_" + p , A ) , f . push ( A ) ) ) } } for ( G = [ ] ; 0 < f . length ; ) if ( A = f . shift ( ) , this . state == CKEDITOR . TRISTATE _OFF ) if ( k [ A . root . getName ( ) ] ) { e = b ; p = A ; A = m ; l = G ; z = CKEDITOR . plugins . list . listToArray ( p . root , A ) ; D = [ ] ; for ( u = 0 ; u < p . contents . length ; u ++ ) F = p . contents [ u ] , ( F = F . getAscendant ( "li" , ! 0 ) ) && ! F . getCustomData ( "list_item_processed" ) && ( D . push ( F ) , CKEDITOR . dom . element . setMarker ( A , F , "list_item_processed" , ! 0 ) ) ; for ( var F = p . root . getDocument ( ) , J = void 0 , I = void 0 , u = 0 ; u < D . length ; u ++ ) { var N = D [ u ] . getCustomData ( "listarray_index" ) ,
e . config . enterMode ) ; z = void 0 ; D = A . listNode . getChildCount ( ) ; for ( u = 0 ; u < D && ( z = A . listNode . getChild ( u ) ) ; u ++ ) z . getName ( ) == this . type && l . push ( z ) ; A . listNode . replace ( p . root ) ; e . fire ( "contentDomInvalidated" ) } else { z = b ; l = A ; u = G ; D = l . contents ; e = l . root . getDocument ( ) ; p = [ ] ; 1 == D . length && D [ 0 ] . equals ( l . root ) && ( A = e . createElement ( "div" ) , D [ 0 ] . moveChildren && D [ 0 ] . moveChildren ( A ) , D [ 0 ] . append ( A ) , D [ 0 ] = A ) ; l = l . contents [ 0 ] . getParent ( ) ; for ( F = 0 ; F < D . length ; F ++ ) l = l . getCommonAncestor ( D [ F ] . getParent ( ) ) ; J = z . config . useComputedState ; z = A = void 0 ;
J = z [ N ] . parent ; J . is ( this . type ) || ( I = F . createElement ( this . type ) , J . copyAttributes ( I , { start : 1 , type : 1 } ) , I . removeStyle ( "list-style-type" ) , z [ N ] . parent = I ) } A = CKEDITOR . plugins . list . arrayToList ( z , A , null , e . config . enterMode ) ; z = void 0 ; D = A . listNode . getChildCount ( ) ; for ( u = 0 ; u < D && ( z = A . listNode . getChild ( u ) ) ; u ++ ) z . getName ( ) == this . type && l . push ( z ) ; A . listNode . replace ( p . root ) ; e . fire ( "contentDomInvalidated" ) } else { z = b ; l = A ; u = G ; D = l . contents ; e = l . root . getDocument ( ) ; p = [ ] ; 1 == D . length && D [ 0 ] . equals ( l . root ) && ( A = e . createElement ( "div" ) ,
J = void 0 === J || J ; for ( F = 0 ; F < D . length ; F ++ ) for ( I = D [ F ] ; N = I . getParent ( ) ; ) { if ( N . equals ( l ) ) { p . push ( I ) ; ! z && I . getDirection ( ) && ( z = 1 ) ; I = I . getDirection ( J ) ; null !== A && ( A = A && A != I ? null : I ) ; break } I = N } if ( ! ( 1 > p . length ) ) { D = p [ p . length - 1 ] . getNext ( ) ; F = e . createElement ( this . type ) ; u . push ( F ) ; for ( J = u = void 0 ; p . length ; ) u = p . shift ( ) , J = e . createElement ( "li" ) , I = u , I . is ( "pre" ) || v . test ( I . getName ( ) ) || "false" == I . getAttribute ( "contenteditable" ) ? u . appendTo ( J ) : ( u . copyAttributes ( J ) , A && u . getDirection ( ) && ( J . removeStyle ( "direction" ) , J . removeAttribute ( "dir" ) ) ,
D [ 0 ] . moveChildren && D [ 0 ] . moveChildren ( A ) , D [ 0 ] . append ( A ) , D [ 0 ] = A ) ; l = l . contents [ 0 ] . getParent ( ) ; for ( F = 0 ; F < D . length ; F ++ ) l = l . getCommonAncestor ( D [ F ] . getParent ( ) ) ; J = z . config . useComputedState ; z = A = void 0 ; J = void 0 === J || J ; for ( F = 0 ; F < D . length ; F ++ ) for ( I = D [ F ] ; N = I . getParent ( ) ; ) { if ( N . equals ( l ) ) { p . push ( I ) ; ! z && I . getDirection ( ) && ( z = 1 ) ; I = I . getDirection ( J ) ; null !== A && ( A = A && A != I ? null : I ) ; break } I = N } if ( ! ( 1 > p . length ) ) { D = p [ p . length - 1 ] . getNext ( ) ; F = e . createElement ( this . type ) ; u . push ( F ) ; for ( J = u = void 0 ; p . length ; ) u = p . shift ( ) , J = e . createElement ( "li" ) ,
u . moveChildren ( J ) , u . remove ( ) ) , J . appendTo ( F ) ; A && z && F . setAttribute ( "dir" , A ) ; D ? F . insertBefore ( D ) : F . appendTo ( l ) } } else this . state == CKEDITOR . TRISTATE _ON && k [ A . root . getName ( ) ] && a . call ( this , b , A , m ) ; for ( F = 0 ; F < G . length ; F ++ ) g ( G [ F ] ) ; CKEDITOR . dom . element . clearAllMarkers ( m ) ; d . selectBookmarks ( c ) ; b . focus ( ) } , refresh : function ( a , b ) { var c = b . contains ( k , 1 ) , d = b . blockLimit || b . root ; c && d . contains ( c ) ? this . setState ( c . is ( this . type ) ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) : this . setState ( CKEDITOR . TRISTATE _OFF ) } } ; CKEDITOR . plugins . add ( "list" ,
I = u , I . is ( "pre" ) || v . test ( I . getName ( ) ) || "false" == I . getAttribute ( "contenteditable" ) ? u . appendTo ( J ) : ( u . copyAttributes ( J ) , A && u . getDirection ( ) && ( J . removeStyle ( "direction" ) , J . removeAttribute ( "dir" ) ) , u . moveChildren ( J ) , u . remove ( ) ) , J . appendTo ( F ) ; A && z && F . setAttribute ( "dir" , A ) ; D ? F . insertBefore ( D ) : F . appendTo ( l ) } } else this . state == CKEDITOR . TRISTATE _ON && k [ A . root . getName ( ) ] && a . call ( this , b , A , m ) ; for ( F = 0 ; F < G . length ; F ++ ) g ( G [ F ] ) ; CKEDITOR . dom . element . clearAllMarkers ( m ) ; d . selectBookmarks ( c ) ; b . focus ( ) } , refresh : function ( a ,
{ requires : "indentlist" , init : function ( a ) { a . blockless || ( a . addCommand ( "numberedlist" , new e ( "numberedlist" , "ol" ) ) , a . addCommand ( "bulletedlist" , new e ( "bulletedlist" , "ul" ) ) , a . ui . addButton && ( a . ui . addButton ( "NumberedList" , { label : a . lang . list . numberedlist , command : "numberedlist" , directional : ! 0 , toolbar : "list,10" } ) , a . ui . addButton ( "BulletedList" , { label : a . lang . list . bulletedlist , command : "bulletedlist" , directional : ! 0 , toolbar : "list,20" } ) ) , a . on ( "key" , function ( b ) { var c = b . data . domEvent . getKey ( ) , d ; if ( "wysiwyg" == a . mode &&
b ) { var c = b . contains ( k , 1 ) , d = b . blockLimit || b . root ; c && d . contains ( c ) ? this . setState ( c . is ( this . type ) ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) : this . setState ( CKEDITOR . TRISTATE _OFF ) } } ; CKEDITOR . plugins . add ( "list" , { requires : "indentlist" , init : function ( a ) { a . blockless || ( a . addCommand ( "numberedlist" , new e ( "numberedlist" , "ol" ) ) , a . addCommand ( "bulletedlist" , new e ( "bulletedlist" , "ul" ) ) , a . ui . addButton && ( a . ui . addButton ( "NumberedList" , { label : a . lang . list . numberedlist , command : "numberedlist" , directional : ! 0 , toolbar : "list,10" } ) ,
c in { 8 : 1 , 46 : 1 } ) { var e = a . getSelection ( ) . getRanges ( ) [ 0 ] , g = e && e . startPath ( ) ; if ( e && e . collapsed ) { var r = 8 == c , u = a . editable ( ) , v = new CKEDITOR . dom . walker ( e . clone ( ) ) ; v . evaluator = function ( a ) { return h ( a ) && ! p ( a ) } ; v . guard = function ( a , b ) { return ! ( b && a . type == CKEDITOR . NODE _ELEMENT && a . is ( "table" ) ) } ; c = e . clone ( ) ; if ( r ) { var A ; ( A = g . contains ( k ) ) && e . checkBoundaryOfElement ( A , CKEDITOR . START ) && ( A = A . getParent ( ) ) && A . is ( "li" ) && ( A = l ( A ) ) ? ( d = A , A = A . getPrevious ( h ) , c . moveToPosition ( A && p ( A ) ? A : d , CKEDITOR . POSITION _BEFORE _START ) ) : ( v . range . setStartAt ( u ,
a . ui . addButton ( "BulletedList" , { label : a . lang . list . bulletedlist , command : "bulletedlist" , directional : ! 0 , toolbar : "list,20" } ) ) , a . on ( "key" , function ( b ) { var c = b . data . domEvent . getKey ( ) , d ; if ( "wysiwyg" == a . mode && c in { 8 : 1 , 46 : 1 } ) { var e = a . getSelection ( ) . getRanges ( ) [ 0 ] , g = e && e . startPath ( ) ; if ( e && e . collapsed ) { var r = 8 == c , u = a . editable ( ) , v = new CKEDITOR . dom . walker ( e . clone ( ) ) ; v . evaluator = function ( a ) { return h ( a ) && ! p ( a ) } ; v . guard = function ( a , b ) { return ! ( b && a . type == CKEDITOR . NODE _ELEMENT && a . is ( "table" ) ) } ; c = e . clone ( ) ; if ( r ) { var A ;
CKEDITOR . POSITION _AFTER _START ) , v . range . setEnd ( e . startContainer , e . startOffset ) , ( A = v . previous ( ) ) && A . type == CKEDITOR . NODE _ELEMENT && ( A . getName ( ) in k || A . is ( "li" ) ) && ( A . is ( "li" ) || ( v . range . selectNodeContents ( A ) , v . reset ( ) , v . evaluator = f , A = v . previous ( ) ) , d = A , c . moveToElementEditEnd ( d ) , c . moveToPosition ( c . endPath ( ) . block , CKEDITOR . POSITION _BEFORE _END ) ) ) ; if ( d ) m ( a , c , e ) , b . cancel ( ) ; else { var z = g . contains ( k ) ; z && e . checkBoundaryOfElement ( z , CKEDITOR . START ) && ( d = z . getFirst ( h ) , e . checkBoundaryOfElement ( d , CKEDITOR . START ) && ( A = z . getPrevious ( h ) ,
( A = g . contains ( k ) ) && e . checkBoundaryOfElement ( A , CKEDITOR . START ) && ( A = A . getParent ( ) ) && A . is ( "li" ) && ( A = l ( A ) ) ? ( d = A , A = A . getPrevious ( h ) , c . moveToPosition ( A && p ( A ) ? A : d , CKEDITOR . POSITION _BEFORE _START ) ) : ( v . range . setStartAt ( u , CKEDITOR . POSITION _AFTER _START ) , v . range . setEnd ( e . startContainer , e . startOffset ) , ( A = v . previous ( ) ) && A . type == CKEDITOR . NODE _ELEMENT && ( A . getName ( ) in k || A . is ( "li" ) ) && ( A . is ( "li" ) || ( v . range . selectNodeContents ( A ) , v . reset ( ) , v . evaluator = f , A = v . previous ( ) ) , d = A , c . moveToElementEditEnd ( d ) , c . moveToPosition ( c . endPath ( ) . block ,
l ( d ) ? A && ( e . moveToElementEditEnd ( A ) , e . select ( ) ) : a . execCommand ( "outdent" ) , b . cancel ( ) ) ) } } else if ( d = g . contains ( "li" ) ) { if ( v . range . setEndAt ( u , CKEDITOR . POSITION _BEFORE _END ) , r = ( u = d . getLast ( h ) ) && f ( u ) ? u : d , g = 0 , ( A = v . next ( ) ) && A . type == CKEDITOR . NODE _ELEMENT && A . getName ( ) in k && A . equals ( u ) ? ( g = 1 , A = v . next ( ) ) : e . checkBoundaryOfElement ( r , CKEDITOR . END ) && ( g = 2 ) , g && A ) { e = e . clone ( ) ; e . moveToElementEditStart ( A ) ; if ( 1 == g && ( c . optimize ( ) , ! c . startContainer . equals ( d ) ) ) { for ( d = c . startContainer ; d . is ( CKEDITOR . dtd . $inline ) ; ) z = d , d = d . getParent ( ) ;
CKEDITOR . POSITION _BEFORE _END ) ) ) ; if ( d ) m ( a , c , e ) , b . cancel ( ) ; else { var z = g . contains ( k ) ; z && e . checkBoundaryOfElement ( z , CKEDITOR . START ) && ( d = z . getFirst ( h ) , e . checkBoundaryOfElement ( d , CKEDITOR . START ) && ( A = z . getPrevious ( h ) , l ( d ) ? A && ( e . moveToElementEditEnd ( A ) , e . select ( ) ) : a . execCommand ( "outdent" ) , b . cancel ( ) ) ) } } else if ( d = g . contains ( "li" ) ) { if ( v . range . setEndAt ( u , CKEDITOR . POSITION _BEFORE _END ) , r = ( u = d . getLast ( h ) ) && f ( u ) ? u : d , g = 0 , ( A = v . next ( ) ) && A . type == CKEDITOR . NODE _ELEMENT && A . getName ( ) in k && A . equals ( u ) ? ( g = 1 , A = v . next ( ) ) : e . checkBoundaryOfElement ( r ,
z && c . moveToPosition ( z , CKEDITOR . POSITION _AFTER _END ) } 2 == g && ( c . moveToPosition ( c . endPath ( ) . block , CKEDITOR . POSITION _BEFORE _END ) , e . endPath ( ) . block && e . moveToPosition ( e . endPath ( ) . block , CKEDITOR . POSITION _AFTER _START ) ) ; m ( a , c , e ) ; b . cancel ( ) } } else v . range . setEndAt ( u , CKEDITOR . POSITION _BEFORE _END ) , ( A = v . next ( ) ) && A . type == CKEDITOR . NODE _ELEMENT && A . is ( k ) && ( A = A . getFirst ( h ) , g . block && e . checkStartOfBlock ( ) && e . checkEndOfBlock ( ) ? ( g . block . remove ( ) , e . moveToElementEditStart ( A ) , e . select ( ) ) : l ( A ) ? ( e . moveToElementEditStart ( A ) , e . select ( ) ) :
CKEDITOR . END ) && ( g = 2 ) , g && A ) { e = e . clone ( ) ; e . moveToElementEditStart ( A ) ; if ( 1 == g && ( c . optimize ( ) , ! c . startContainer . equals ( d ) ) ) { for ( d = c . startContainer ; d . is ( CKEDITOR . dtd . $inline ) ; ) z = d , d = d . getParent ( ) ; z && c . moveToPosition ( z , CKEDITOR . POSITION _AFTER _END ) } 2 == g && ( c . moveToPosition ( c . endPath ( ) . block , CKEDITOR . POSITION _BEFORE _END ) , e . endPath ( ) . block && e . moveToPosition ( e . endPath ( ) . block , CKEDITOR . POSITION _AFTER _START ) ) ; m ( a , c , e ) ; b . cancel ( ) } } else v . range . setEndAt ( u , CKEDITOR . POSITION _BEFORE _END ) , ( A = v . next ( ) ) && A . type == CKEDITOR . NODE _ELEMENT &&
( e = e . clone ( ) , e . moveToElementEditStart ( A ) , m ( a , c , e ) ) , b . cancel ( ) ) ; setTimeout ( function ( ) { a . selectionChange ( 1 ) } ) } } } ) ) } } ) } ( ) , "use strict" , function ( ) { function a ( a , b , c ) { return p ( b ) && p ( c ) && c . equals ( b . getNext ( function ( a ) { return ! ( ba ( a ) || Y ( a ) || v ( a ) ) } ) ) } function e ( a ) { this . upper = a [ 0 ] ; this . lower = a [ 1 ] ; this . set . apply ( this , a . slice ( 2 ) ) } function c ( a ) { var b = a . element ; if ( b && p ( b ) && ( b = b . getAscendant ( a . triggers , ! 0 ) ) && a . editable . contains ( b ) ) { var c = l ( b ) ; if ( "true" == c . getAttribute ( "contenteditable" ) ) return b ; if ( c . is ( a . triggers ) ) return c } return null }
A . is ( k ) && ( A = A . getFirst ( h ) , g . block && e . checkStartOfBlock ( ) && e . checkEndOfBlock ( ) ? ( g . block . remove ( ) , e . moveToElementEditStart ( A ) , e . select ( ) ) : l ( A ) ? ( e . moveToElementEditStart ( A ) , e . select ( ) ) : ( e = e . clone ( ) , e . moveToElementEditStart ( A ) , m ( a , c , e ) ) , b . cancel ( ) ) ; setTimeout ( function ( ) { a . selectionChange ( 1 ) } ) } } } ) ) } } ) } ( ) , "use strict" , function ( ) { function a ( a , b , c ) { return p ( b ) && p ( c ) && c . equals ( b . getNext ( function ( a ) { return ! ( ba ( a ) || Y ( a ) || v ( a ) ) } ) ) } function e ( a ) { this . upper = a [ 0 ] ; this . lower = a [ 1 ] ; this . set . apply ( this , a . slice ( 2 ) ) }
function g ( a , b , c ) { r ( a , b ) ; r ( a , c ) ; a = b . size . bottom ; c = c . size . top ; return a && c ? 0 | ( a + c ) / 2 : a || c } function f ( a , b , c ) { return b = b [ c ? "getPrevious" : "getNext" ] ( function ( b ) { return b && b . type == CKEDITOR . NODE _TEXT && ! ba ( b ) || p ( b ) && ! v ( b ) && ! h ( a , b ) } ) } function m ( a , b , c ) { return a > b && a < c } function l ( a , b ) { if ( a . data ( "cke-editable" ) ) return null ; for ( b || ( a = a . getParent ( ) ) ; a && ! a . data ( "cke-editable" ) ; ) { if ( a . hasAttribute ( "contenteditable" ) ) return a ; a = a . getParent ( ) } return null } function k ( a ) { var c = a . doc , d = G ( '\x3cspan contenteditable\x3d"false" style\x3d"' +
function c ( a ) { var b = a . element ; if ( b && p ( b ) && ( b = b . getAscendant ( a . triggers , ! 0 ) ) && a . editable . contains ( b ) ) { var c = l ( b ) ; if ( "true" == c . getAttribute ( "contenteditable" ) ) return b ; if ( c . is ( a . triggers ) ) return c } return null } function g ( a , b , c ) { r ( a , b ) ; r ( a , c ) ; a = b . size . bottom ; c = c . size . top ; return a && c ? 0 | ( a + c ) / 2 : a || c } function f ( a , b , c ) { return b = b [ c ? "getPrevious" : "getNext" ] ( function ( b ) { return b && b . type == CKEDITOR . NODE _TEXT && ! ba ( b ) || p ( b ) && ! v ( b ) && ! h ( a , b ) } ) } function m ( a , b , c ) { return a > b && a < c } function l ( a , b ) { if ( a . data ( "cke-editable" ) ) return null ;
S + "position:absolute;border-top:1px dashed " + a . boxColor + '"\x3e\x3c/span\x3e' , c ) , e = CKEDITOR . getUrl ( this . path + "images/" + ( F . hidpi ? "hidpi/" : "" ) + "icon" + ( a . rtl ? "-rtl" : "" ) + ".png" ) ; z ( d , { attach : function ( ) { this . wrap . getParent ( ) || this . wrap . appendTo ( a . editable , ! 0 ) ; return this } , lineChildren : [ z ( G ( '\x3cspan title\x3d"' + a . editor . lang . magicline . title + '" contenteditable\x3d"false"\x3e\x26#8629;\x3c/span\x3e' , c ) , { base : S + "height:17px;width:17px;" + ( a . rtl ? "left" : "right" ) + ":17px;background:url(" + e + ") center no-repeat " +
for ( b || ( a = a . getParent ( ) ) ; a && ! a . data ( "cke-editable" ) ; ) { if ( a . hasAttribute ( "contenteditable" ) ) return a ; a = a . getParent ( ) } return null } function k ( a ) { var c = a . doc , d = G ( '\x3cspan contenteditable\x3d"false" style\x3d"' + S + "position:absolute;border-top:1px dashed " + a . boxColor + '"\x3e\x3c/span\x3e' , c ) , e = CKEDITOR . getUrl ( this . path + "images/" + ( F . hidpi ? "hidpi/" : "" ) + "icon" + ( a . rtl ? "-rtl" : "" ) + ".png" ) ; z ( d , { attach : function ( ) { this . wrap . getParent ( ) || this . wrap . appendTo ( a . editable , ! 0 ) ; return this } , lineChildren : [ z ( G ( '\x3cspan title\x3d"' +
a . boxColor + ";cursor:pointer;" + ( F . hc ? "font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;" : "" ) + ( F . hidpi ? "background-size: 9px 10px;" : "" ) , looks : [ "top:-8px; border-radius: 2px;" , "top:-17px; border-radius: 2px 2px 0px 0px;" , "top:-1px; border-radius: 0px 0px 2px 2px;" ] } ) , z ( G ( X , c ) , { base : aa + "left:0px;border-left-color:" + a . boxColor + ";" , looks : [ "border-width:8px 0 8px 8px;top:-8px" , "border-width:8px 0 0 8px;top:-8px" , "border-width:0 0 8px 8px;top:0px" ] } ) , z ( G ( X , c ) , { base : aa + "right:0px;border-right-color:" +
a . editor . lang . magicline . title + '" contenteditable\x3d"false"\x3e\x26#8629;\x3c/span\x3e' , c ) , { base : S + "height:17px;width:17px;" + ( a . rtl ? "left" : "right" ) + ":17px;background:url(" + e + ") center no-repeat " + a . boxColor + ";cursor:pointer;" + ( F . hc ? "font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;" : "" ) + ( F . hidpi ? "background-size: 9px 10px;" : "" ) , looks : [ "top:-8px; border-radius: 2px;" , "top:-17px; border-radius: 2px 2px 0px 0px;" , "top:-1px; border-radius: 0px 0px 2px 2px;" ] } ) , z ( G ( X , c ) , { base : aa +
a . boxColor + ";" , looks : [ "border-width:8px 8px 8px 0;top:-8px" , "border-width:8px 8px 0 0;top:-8px" , "border-width:0 8px 8px 0;top:0px" ] } ) ] , detach : function ( ) { this . wrap . getParent ( ) && this . wrap . remove ( ) ; return this } , mouseNear : function ( ) { r ( a , this ) ; var b = a . holdDistance , c = this . size ; return c && m ( a . mouse . y , c . top - b , c . bottom + b ) && m ( a . mouse . x , c . left - b , c . right + b ) ? ! 0 : ! 1 } , place : function ( ) { var b = a . view , c = a . editable , d = a . trigger , e = d . upper , f = d . lower , h = e || f , g = h . getParent ( ) , k = { } ; this . trigger = d ; e && r ( a , e , ! 0 ) ; f && r ( a , f , ! 0 ) ; r ( a ,
"left:0px;border-left-color:" + a . boxColor + ";" , looks : [ "border-width:8px 0 8px 8px;top:-8px" , "border-width:8px 0 0 8px;top:-8px" , "border-width:0 0 8px 8px;top:0px" ] } ) , z ( G ( X , c ) , { base : aa + "right:0px;border-right-color:" + a . boxColor + ";" , looks : [ "border-width:8px 8px 8px 0;top:-8px" , "border-width:8px 8px 0 0;top:-8px" , "border-width:0 8px 8px 0;top:0px" ] } ) ] , detach : function ( ) { this . wrap . getParent ( ) && this . wrap . remove ( ) ; return this } , mouseNear : function ( ) { r ( a , this ) ; var b = a . holdDistance , c = this . size ; return c && m ( a . mouse . y ,
g , ! 0 ) ; a . inInlineMode && x ( a , ! 0 ) ; g . equals ( c ) ? ( k . left = b . scroll . x , k . right = - b . scroll . x , k . width = "" ) : ( k . left = h . size . left - h . size . margin . left + b . scroll . x - ( a . inInlineMode ? b . editable . left + b . editable . border . left : 0 ) , k . width = h . size . outerWidth + h . size . margin . left + h . size . margin . right + b . scroll . x , k . right = "" ) ; e && f ? k . top = e . size . margin . bottom === f . size . margin . top ? 0 | e . size . bottom + e . size . margin . bottom / 2 : e . size . margin . bottom < f . size . margin . top ? e . size . bottom + e . size . margin . bottom : e . size . bottom + e . size . margin . bottom - f . size . margin . top :
c . top - b , c . bottom + b ) && m ( a . mouse . x , c . left - b , c . right + b ) ? ! 0 : ! 1 } , place : function ( ) { var b = a . view , c = a . editable , d = a . trigger , e = d . upper , f = d . lower , h = e || f , g = h . getParent ( ) , k = { } ; this . trigger = d ; e && r ( a , e , ! 0 ) ; f && r ( a , f , ! 0 ) ; r ( a , g , ! 0 ) ; a . inInlineMode && x ( a , ! 0 ) ; g . equals ( c ) ? ( k . left = b . scroll . x , k . right = - b . scroll . x , k . width = "" ) : ( k . left = h . size . left - h . size . margin . left + b . scroll . x - ( a . inInlineMode ? b . editable . left + b . editable . border . left : 0 ) , k . width = h . size . outerWidth + h . size . margin . left + h . size . margin . right + b . scroll . x , k . right = "" ) ; e && f ?
e ? f || ( k . top = e . size . bottom + e . size . margin . bottom ) : k . top = f . size . top - f . size . margin . top ; d . is ( Q ) || m ( k . top , b . scroll . y - 15 , b . scroll . y + 5 ) ? ( k . top = a . inInlineMode ? 0 : b . scroll . y , this . look ( Q ) ) : d . is ( O ) || m ( k . top , b . pane . bottom - 5 , b . pane . bottom + 15 ) ? ( k . top = a . inInlineMode ? b . editable . height + b . editable . padding . top + b . editable . padding . bottom : b . pane . bottom - 1 , this . look ( O ) ) : ( a . inInlineMode && ( k . top -= b . editable . top + b . editable . border . top ) , this . look ( U ) ) ; a . inInlineMode && ( k . top -- , k . top += b . editable . scroll . top , k . left += b . editable . scroll . left ) ;
k . top = e . size . margin . bottom === f . size . margin . top ? 0 | e . size . bottom + e . size . margin . bottom / 2 : e . size . margin . bottom < f . size . margin . top ? e . size . bottom + e . size . margin . bottom : e . size . bottom + e . size . margin . bottom - f . size . margin . top : e ? f || ( k . top = e . size . bottom + e . size . margin . bottom ) : k . top = f . size . top - f . size . margin . top ; d . is ( Q ) || m ( k . top , b . scroll . y - 15 , b . scroll . y + 5 ) ? ( k . top = a . inInlineMode ? 0 : b . scroll . y , this . look ( Q ) ) : d . is ( O ) || m ( k . top , b . pane . bottom - 5 , b . pane . bottom + 15 ) ? ( k . top = a . inInlineMode ? b . editable . height + b . editable . padding . top +
for ( var l in k ) k [ l ] = CKEDITOR . tools . cssLength ( k [ l ] ) ; this . setStyles ( k ) } , look : function ( a ) { if ( this . oldLook != a ) { for ( var b = this . lineChildren . length , c ; b -- ; ) ( c = this . lineChildren [ b ] ) . setAttribute ( "style" , c . base + c . looks [ 0 | a / 2 ] ) ; this . oldLook = a } } , wrap : new D ( "span" , a . doc ) } ) ; for ( c = d . lineChildren . length ; c -- ; ) d . lineChildren [ c ] . appendTo ( d ) ; d . look ( U ) ; d . appendTo ( d . wrap ) ; d . unselectable ( ) ; d . lineChildren [ 0 ] . on ( "mouseup" , function ( c ) { d . detach ( ) ; b ( a , function ( b ) { var c = a . line . trigger ; b [ c . is ( E ) ? "insertBefore" : "insertAfter" ] ( c . is ( E ) ?
b . editable . padding . bottom : b . pane . bottom - 1 , this . look ( O ) ) : ( a . inInlineMode && ( k . top -= b . editable . top + b . editable . border . top ) , this . look ( U ) ) ; a . inInlineMode && ( k . top -- , k . top += b . editable . scroll . top , k . left += b . editable . scroll . left ) ; for ( var l in k ) k [ l ] = CKEDITOR . tools . cssLength ( k [ l ] ) ; this . setStyles ( k ) } , look : function ( a ) { if ( this . oldLook != a ) { for ( var b = this . lineChildren . length , c ; b -- ; ) ( c = this . lineChildren [ b ] ) . setAttribute ( "style" , c . base + c . looks [ 0 | a / 2 ] ) ; this . oldLook = a } } , wrap : new D ( "span" , a . doc ) } ) ; for ( c = d . lineChildren . length ; c -- ; ) d . lineChildren [ c ] . appendTo ( d ) ;
c . lower : c . upper ) } , ! 0 ) ; a . editor . focus ( ) ; F . ie || a . enterMode == CKEDITOR . ENTER _BR || a . hotNode . scrollIntoView ( ) ; c . data . preventDefault ( ! 0 ) } ) ; d . on ( "mousedown" , function ( a ) { a . data . preventDefault ( ! 0 ) } ) ; a . line = d } function b ( a , b , c ) { var d = new CKEDITOR . dom . range ( a . doc ) , e = a . editor , f ; F . ie && a . enterMode == CKEDITOR . ENTER _BR ? f = a . doc . createText ( K ) : ( f = ( f = l ( a . element , ! 0 ) ) && f . data ( "cke-enter-mode" ) || a . enterMode , f = new D ( N [ f ] , a . doc ) , f . is ( "br" ) || a . doc . createText ( K ) . appendTo ( f ) ) ; c && e . fire ( "saveSnapshot" ) ; b ( f ) ; d . moveToPosition ( f ,
d . look ( U ) ; d . appendTo ( d . wrap ) ; d . unselectable ( ) ; d . lineChildren [ 0 ] . on ( "mouseup" , function ( c ) { d . detach ( ) ; b ( a , function ( b ) { var c = a . line . trigger ; b [ c . is ( E ) ? "insertBefore" : "insertAfter" ] ( c . is ( E ) ? c . lower : c . upper ) } , ! 0 ) ; a . editor . focus ( ) ; F . ie || a . enterMode == CKEDITOR . ENTER _BR || a . hotNode . scrollIntoView ( ) ; c . data . preventDefault ( ! 0 ) } ) ; d . on ( "mousedown" , function ( a ) { a . data . preventDefault ( ! 0 ) } ) ; a . line = d } function b ( a , b , c ) { var d = new CKEDITOR . dom . range ( a . doc ) , e = a . editor , f ; F . ie && a . enterMode == CKEDITOR . ENTER _BR ? f = a . doc . createText ( K ) :
CKEDITOR . POSITION _AFTER _START ) ; e . getSelection ( ) . selectRanges ( [ d ] ) ; a . hotNode = f ; c && e . fire ( "saveSnapshot" ) } function d ( a , d ) { return { canUndo : ! 0 , modes : { wysiwyg : 1 } , exec : function ( ) { function e ( c ) { var f = F . ie && 9 > F . version ? " " : K , h = a . hotNode && a . hotNode . getText ( ) == f && a . element . equals ( a . hotNode ) && a . lastCmdDirection === ! ! d ; b ( a , function ( b ) { h && a . hotNode && a . hotNode . remove ( ) ; b [ d ? "insertAfter" : "insertBefore" ] ( c ) ; b . setAttributes ( { "data-cke-magicline-hot" : 1 , "data-cke-magicline-dir" : ! ! d } ) ; a . lastCmdDirection = ! ! d } ) ; F . ie || a . enterMode ==
( f = ( f = l ( a . element , ! 0 ) ) && f . data ( "cke-enter-mode" ) || a . enterMode , f = new D ( N [ f ] , a . doc ) , f . is ( "br" ) || a . doc . createText ( K ) . appendTo ( f ) ) ; c && e . fire ( "saveSnapshot" ) ; b ( f ) ; d . moveToPosition ( f , CKEDITOR . POSITION _AFTER _START ) ; e . getSelection ( ) . selectRanges ( [ d ] ) ; a . hotNode = f ; c && e . fire ( "saveSnapshot" ) } function d ( a , d ) { return { canUndo : ! 0 , modes : { wysiwyg : 1 } , exec : function ( ) { function e ( c ) { var f = F . ie && 9 > F . version ? " " : K , h = a . hotNode && a . hotNode . getText ( ) == f && a . element . equals ( a . hotNode ) && a . lastCmdDirection === ! ! d ; b ( a , function ( b ) { h &&
CKEDITOR . ENTER _BR || a . hotNode . scrollIntoView ( ) ; a . line . detach ( ) } return function ( b ) { b = b . getSelection ( ) . getStartElement ( ) ; var h ; b = b . getAscendant ( M , 1 ) ; if ( ! n ( a , b ) && b && ! b . equals ( a . editable ) && ! b . contains ( a . editable ) ) { ( h = l ( b ) ) && "false" == h . getAttribute ( "contenteditable" ) && ( b = h ) ; a . element = b ; h = f ( a , b , ! d ) ; var g ; p ( h ) && h . is ( a . triggers ) && h . is ( H ) && ( ! f ( a , h , ! d ) || ( g = f ( a , h , ! d ) ) && p ( g ) && g . is ( a . triggers ) ) ? e ( h ) : ( g = c ( a , b ) , p ( g ) && ( f ( a , g , ! d ) ? ( b = f ( a , g , ! d ) ) && p ( b ) && b . is ( a . triggers ) && e ( g ) : e ( g ) ) ) } } } ( ) } } function h ( a , b ) { if ( ! b || b . type !=
a . hotNode && a . hotNode . remove ( ) ; b [ d ? "insertAfter" : "insertBefore" ] ( c ) ; b . setAttributes ( { "data-cke-magicline-hot" : 1 , "data-cke-magicline-dir" : ! ! d } ) ; a . lastCmdDirection = ! ! d } ) ; F . ie || a . enterMode == CKEDITOR . ENTER _BR || a . hotNode . scrollIntoView ( ) ; a . line . detach ( ) } return function ( b ) { b = b . getSelection ( ) . getStartElement ( ) ; var h ; b = b . getAscendant ( M , 1 ) ; if ( ! n ( a , b ) && b && ! b . equals ( a . editable ) && ! b . contains ( a . editable ) ) { ( h = l ( b ) ) && "false" == h . getAttribute ( "contenteditable" ) && ( b = h ) ; a . element = b ; h = f ( a , b , ! d ) ; var g ; p ( h ) && h . is ( a . triggers ) &&
CKEDITOR . NODE _ELEMENT || ! b . $ ) return ! 1 ; var c = a . line ; return c . wrap . equals ( b ) || c . wrap . contains ( b ) } function p ( a ) { return a && a . type == CKEDITOR . NODE _ELEMENT && a . $ } function v ( a ) { if ( ! p ( a ) ) return ! 1 ; var b ; ( b = u ( a ) ) || ( p ( a ) ? ( b = { left : 1 , right : 1 , center : 1 } , b = ! ( ! b [ a . getComputedStyle ( "float" ) ] && ! b [ a . getAttribute ( "align" ) ] ) ) : b = ! 1 ) ; return b } function u ( a ) { return ! ! { absolute : 1 , fixed : 1 } [ a . getComputedStyle ( "position" ) ] } function t ( a , b ) { return p ( b ) ? b . is ( a . triggers ) : null } function n ( a , b ) { if ( ! b ) return ! 1 ; for ( var c = b . getParents ( 1 ) , d =
h . is ( H ) && ( ! f ( a , h , ! d ) || ( g = f ( a , h , ! d ) ) && p ( g ) && g . is ( a . triggers ) ) ? e ( h ) : ( g = c ( a , b ) , p ( g ) && ( f ( a , g , ! d ) ? ( b = f ( a , g , ! d ) ) && p ( b ) && b . is ( a . triggers ) && e ( g ) : e ( g ) ) ) } } } ( ) } } function h ( a , b ) { if ( ! b || b . type != CKEDITOR . NODE _ELEMENT || ! b . $ ) return ! 1 ; var c = a . line ; return c . wrap . equals ( b ) || c . wrap . contains ( b ) } function p ( a ) { return a && a . type == CKEDITOR . NODE _ELEMENT && a . $ } function v ( a ) { if ( ! p ( a ) ) return ! 1 ; var b ; ( b = u ( a ) ) || ( p ( a ) ? ( b = { left : 1 , right : 1 , center : 1 } , b = ! ( ! b [ a . getComputedStyle ( "float" ) ] && ! b [ a . getAttribute ( "align" ) ] ) ) : b = ! 1 ) ; return b } function u ( a ) { return ! ! { absolute : 1 ,
c . length ; d -- ; ) for ( var e = a . tabuList . length ; e -- ; ) if ( c [ d ] . hasAttribute ( a . tabuList [ e ] ) ) return ! 0 ; return ! 1 } function q ( a , b , c ) { b = b [ c ? "getLast" : "getFirst" ] ( function ( b ) { return a . isRelevant ( b ) && ! b . is ( R ) } ) ; if ( ! b ) return ! 1 ; r ( a , b ) ; return c ? b . size . top > a . mouse . y : b . size . bottom < a . mouse . y } function w ( a ) { var b = a . editable , c = a . mouse , d = a . view , f = a . triggerOffset ; x ( a ) ; var g = c . y > ( a . inInlineMode ? d . editable . top + d . editable . height / 2 : Math . min ( d . editable . height , d . pane . height ) / 2 ) , b = b [ g ? "getLast" : "getFirst" ] ( function ( a ) { return ! ( ba ( a ) ||
fixed : 1 } [ a . getComputedStyle ( "position" ) ] } function t ( a , b ) { return p ( b ) ? b . is ( a . triggers ) : null } function n ( a , b ) { if ( ! b ) return ! 1 ; for ( var c = b . getParents ( 1 ) , d = c . length ; d -- ; ) for ( var e = a . tabuList . length ; e -- ; ) if ( c [ d ] . hasAttribute ( a . tabuList [ e ] ) ) return ! 0 ; return ! 1 } function q ( a , b , c ) { b = b [ c ? "getLast" : "getFirst" ] ( function ( b ) { return a . isRelevant ( b ) && ! b . is ( R ) } ) ; if ( ! b ) return ! 1 ; r ( a , b ) ; return c ? b . size . top > a . mouse . y : b . size . bottom < a . mouse . y } function w ( a ) { var b = a . editable , c = a . mouse , d = a . view , f = a . triggerOffset ; x ( a ) ; var g = c . y >
Y ( a ) ) } ) ; if ( ! b ) return null ; h ( a , b ) && ( b = a . line . wrap [ g ? "getPrevious" : "getNext" ] ( function ( a ) { return ! ( ba ( a ) || Y ( a ) ) } ) ) ; if ( ! p ( b ) || v ( b ) || ! t ( a , b ) ) return null ; r ( a , b ) ; return ! g && 0 <= b . size . top && m ( c . y , 0 , b . size . top + f ) ? ( a = a . inInlineMode || 0 === d . scroll . y ? Q : U , new e ( [ null , b , E , L , a ] ) ) : g && b . size . bottom <= d . pane . height && m ( c . y , b . size . bottom - f , d . pane . height ) ? ( a = a . inInlineMode || m ( b . size . bottom , d . pane . height - f , d . pane . height ) ? O : U , new e ( [ b , null , P , L , a ] ) ) : null } function y ( a ) { var b = a . mouse , d = a . view , h = a . triggerOffset , g = c ( a ) ; if ( ! g ) return null ;
( a . inInlineMode ? d . editable . top + d . editable . height / 2 : Math . min ( d . editable . height , d . pane . height ) / 2 ) , b = b [ g ? "getLast" : "getFirst" ] ( function ( a ) { return ! ( ba ( a ) || Y ( a ) ) } ) ; if ( ! b ) return null ; h ( a , b ) && ( b = a . line . wrap [ g ? "getPrevious" : "getNext" ] ( function ( a ) { return ! ( ba ( a ) || Y ( a ) ) } ) ) ; if ( ! p ( b ) || v ( b ) || ! t ( a , b ) ) return null ; r ( a , b ) ; return ! g && 0 <= b . size . top && m ( c . y , 0 , b . size . top + f ) ? ( a = a . inInlineMode || 0 === d . scroll . y ? Q : U , new e ( [ null , b , E , L , a ] ) ) : g && b . size . bottom <= d . pane . height && m ( c . y , b . size . bottom - f , d . pane . height ) ? ( a = a . inInlineMode ||
r ( a , g ) ; var h = Math . min ( h , 0 | g . size . outerHeight / 2 ) , k = [ ] , l , n ; if ( m ( b . y , g . size . top - 1 , g . size . top + h ) ) n = ! 1 ; else if ( m ( b . y , g . size . bottom - h , g . size . bottom + 1 ) ) n = ! 0 ; else return null ; if ( v ( g ) || q ( a , g , n ) || g . getParent ( ) . is ( V ) ) return null ; var H = f ( a , g , ! n ) ; if ( H ) { if ( H && H . type == CKEDITOR . NODE _TEXT ) return null ; if ( p ( H ) ) { if ( v ( H ) || ! t ( a , H ) || H . getParent ( ) . is ( V ) ) return null ; k = [ H , g ] [ n ? "reverse" : "concat" ] ( ) . concat ( [ T , L ] ) } } else g . equals ( a . editable [ n ? "getLast" : "getFirst" ] ( a . isRelevant ) ) ? ( x ( a ) , n && m ( b . y , g . size . bottom - h , d . pane . height ) &&
m ( b . size . bottom , d . pane . height - f , d . pane . height ) ? O : U , new e ( [ b , null , P , L , a ] ) ) : null } function y ( a ) { var b = a . mouse , d = a . view , h = a . triggerOffset , g = c ( a ) ; if ( ! g ) return null ; r ( a , g ) ; var h = Math . min ( h , 0 | g . size . outerHeight / 2 ) , k = [ ] , l , n ; if ( m ( b . y , g . size . top - 1 , g . size . top + h ) ) n = ! 1 ; else if ( m ( b . y , g . size . bottom - h , g . size . bottom + 1 ) ) n = ! 0 ; else return null ; if ( v ( g ) || q ( a , g , n ) || g . getParent ( ) . is ( V ) ) return null ; var H = f ( a , g , ! n ) ; if ( H ) { if ( H && H . type == CKEDITOR . NODE _TEXT ) return null ; if ( p ( H ) ) { if ( v ( H ) || ! t ( a , H ) || H . getParent ( ) . is ( V ) ) return null ;
m ( g . size . bottom , d . pane . height - h , d . pane . height ) ? l = O : m ( b . y , 0 , g . size . top + h ) && ( l = Q ) ) : l = U , k = [ null , g ] [ n ? "reverse" : "concat" ] ( ) . concat ( [ n ? P : E , L , l , g . equals ( a . editable [ n ? "getLast" : "getFirst" ] ( a . isRelevant ) ) ? n ? O : Q : U ] ) ; return 0 in k ? new e ( k ) : null } function C ( a , b , c , d ) { for ( var e = b . getDocumentPosition ( ) , f = { } , h = { } , g = { } , k = { } , l = ca . length ; l -- ; ) f [ ca [ l ] ] = parseInt ( b . getComputedStyle . call ( b , "border-" + ca [ l ] + "-width" ) , 10 ) || 0 , g [ ca [ l ] ] = parseInt ( b . getComputedStyle . call ( b , "padding-" + ca [ l ] ) , 10 ) || 0 , h [ ca [ l ] ] = parseInt ( b . getComputedStyle . call ( b ,
k = [ H , g ] [ n ? "reverse" : "concat" ] ( ) . concat ( [ T , L ] ) } } else g . equals ( a . editable [ n ? "getLast" : "getFirst" ] ( a . isRelevant ) ) ? ( x ( a ) , n && m ( b . y , g . size . bottom - h , d . pane . height ) && m ( g . size . bottom , d . pane . height - h , d . pane . height ) ? l = O : m ( b . y , 0 , g . size . top + h ) && ( l = Q ) ) : l = U , k = [ null , g ] [ n ? "reverse" : "concat" ] ( ) . concat ( [ n ? P : E , L , l , g . equals ( a . editable [ n ? "getLast" : "getFirst" ] ( a . isRelevant ) ) ? n ? O : Q : U ] ) ; return 0 in k ? new e ( k ) : null } function C ( a , b , c , d ) { for ( var e = b . getDocumentPosition ( ) , f = { } , h = { } , g = { } , k = { } , l = ca . length ; l -- ; ) f [ ca [ l ] ] = parseInt ( b . getComputedStyle . call ( b ,
"margin-" + ca [ l ] ) , 10 ) || 0 ; c && ! d || B ( a , d ) ; k . top = e . y - ( c ? 0 : a . view . scroll . y ) ; k . left = e . x - ( c ? 0 : a . view . scroll . x ) ; k . outerWidth = b . $ . offsetWidth ; k . outerHeight = b . $ . offsetHeight ; k . height = k . outerHeight - ( g . top + g . bottom + f . top + f . bottom ) ; k . width = k . outerWidth - ( g . left + g . right + f . left + f . right ) ; k . bottom = k . top + k . outerHeight ; k . right = k . left + k . outerWidth ; a . inInlineMode && ( k . scroll = { top : b . $ . scrollTop , left : b . $ . scrollLeft } ) ; return z ( { border : f , padding : g , margin : h , ignoreScroll : c } , k , ! 0 ) } function r ( a , b , c ) { if ( ! p ( b ) ) return b . size = null ;
"border-" + ca [ l ] + "-width" ) , 10 ) || 0 , g [ ca [ l ] ] = parseInt ( b . getComputedStyle . call ( b , "padding-" + ca [ l ] ) , 10 ) || 0 , h [ ca [ l ] ] = parseInt ( b . getComputedStyle . call ( b , "margin-" + ca [ l ] ) , 10 ) || 0 ; c && ! d || B ( a , d ) ; k . top = e . y - ( c ? 0 : a . view . scroll . y ) ; k . left = e . x - ( c ? 0 : a . view . scroll . x ) ; k . outerWidth = b . $ . offsetWidth ; k . outerHeight = b . $ . offsetHeight ; k . height = k . outerHeight - ( g . top + g . bottom + f . top + f . bottom ) ; k . width = k . outerWidth - ( g . left + g . right + f . left + f . right ) ; k . bottom = k . top + k . outerHeight ; k . right = k . left + k . outerWidth ; a . inInlineMode && ( k . scroll = { top : b . $ . scrollTop ,
if ( ! b . size ) b . size = { } ; else if ( b . size . ignoreScroll == c && b . size . date > new Date - W ) return null ; return z ( b . size , C ( a , b , c ) , { date : + new Date } , ! 0 ) } function x ( a , b ) { a . view . editable = C ( a , a . editable , b , ! 0 ) } function B ( a , b ) { a . view || ( a . view = { } ) ; var c = a . view ; if ( ! ( ! b && c && c . date > new Date - W ) ) { var d = a . win , c = d . getScrollPosition ( ) , d = d . getViewPaneSize ( ) ; z ( a . view , { scroll : { x : c . x , y : c . y , width : a . doc . $ . documentElement . scrollWidth - d . width , height : a . doc . $ . documentElement . scrollHeight - d . height } , pane : { width : d . width , height : d . height , bottom : d . height +
left : b . $ . scrollLeft } ) ; return z ( { border : f , padding : g , margin : h , ignoreScroll : c } , k , ! 0 ) } function r ( a , b , c ) { if ( ! p ( b ) ) return b . size = null ; if ( ! b . size ) b . size = { } ; else if ( b . size . ignoreScroll == c && b . size . date > new Date - W ) return null ; return z ( b . size , C ( a , b , c ) , { date : + new Date } , ! 0 ) } function x ( a , b ) { a . view . editable = C ( a , a . editable , b , ! 0 ) } function B ( a , b ) { a . view || ( a . view = { } ) ; var c = a . view ; if ( ! ( ! b && c && c . date > new Date - W ) ) { var d = a . win , c = d . getScrollPosition ( ) , d = d . getViewPaneSize ( ) ; z ( a . view , { scroll : { x : c . x , y : c . y , width : a . doc . $ . documentElement . scrollWidth -
c . y } , date : + new Date } , ! 0 ) } } function A ( a , b , c , d ) { for ( var f = d , h = d , g = 0 , k = ! 1 , l = ! 1 , n = a . view . pane . height , m = a . mouse ; m . y + g < n && 0 < m . y - g ; ) { k || ( k = b ( f , d ) ) ; l || ( l = b ( h , d ) ) ; ! k && 0 < m . y - g && ( f = c ( a , { x : m . x , y : m . y - g } ) ) ; ! l && m . y + g < n && ( h = c ( a , { x : m . x , y : m . y + g } ) ) ; if ( k && l ) break ; g += 2 } return new e ( [ f , h , null , null ] ) } CKEDITOR . plugins . add ( "magicline" , { init : function ( a ) { var g = a . config , l = g . magicline _triggerOffset || 30 , m = { editor : a , enterMode : g . enterMode , triggerOffset : l , holdDistance : 0 | l * ( g . magicline _holdDistance || . 5 ) , boxColor : g . magicline _color ||
d . width , height : a . doc . $ . documentElement . scrollHeight - d . height } , pane : { width : d . width , height : d . height , bottom : d . height + c . y } , date : + new Date } , ! 0 ) } } function A ( a , b , c , d ) { for ( var f = d , h = d , g = 0 , k = ! 1 , l = ! 1 , n = a . view . pane . height , m = a . mouse ; m . y + g < n && 0 < m . y - g ; ) { k || ( k = b ( f , d ) ) ; l || ( l = b ( h , d ) ) ; ! k && 0 < m . y - g && ( f = c ( a , { x : m . x , y : m . y - g } ) ) ; ! l && m . y + g < n && ( h = c ( a , { x : m . x , y : m . y + g } ) ) ; if ( k && l ) break ; g += 2 } return new e ( [ f , h , null , null ] ) } CKEDITOR . plugins . add ( "magicline" , { init : function ( a ) { var g = a . config , l = g . magicline _triggerOffset || 30 , m = { editor : a ,
"#ff0000" , rtl : "rtl" == g . contentsLangDirection , tabuList : [ "data-cke-hidden-sel" ] . concat ( g . magicline _tabuList || [ ] ) , triggers : g . magicline _everywhere ? M : { table : 1 , hr : 1 , div : 1 , ul : 1 , ol : 1 , dl : 1 , form : 1 , blockquote : 1 } } , H , q , t ; m . isRelevant = function ( a ) { return p ( a ) && ! h ( m , a ) && ! v ( a ) } ; a . on ( "contentDom" , function ( ) { var l = a . editable ( ) , p = a . document , r = a . window ; z ( m , { editable : l , inInlineMode : l . isInline ( ) , doc : p , win : r , hotNode : null } , ! 0 ) ; m . boundary = m . inInlineMode ? m . editable : m . doc . getDocumentElement ( ) ; l . is ( I . $inline ) || ( m . inInlineMode &&
enterMode : g . enterMode , triggerOffset : l , holdDistance : 0 | l * ( g . magicline _holdDistance || . 5 ) , boxColor : g . magicline _color || "#ff0000" , rtl : "rtl" == g . contentsLangDirection , tabuList : [ "data-cke-hidden-sel" ] . concat ( g . magicline _tabuList || [ ] ) , triggers : g . magicline _everywhere ? M : { table : 1 , hr : 1 , div : 1 , ul : 1 , ol : 1 , dl : 1 , form : 1 , blockquote : 1 } } , H , q , t ; m . isRelevant = function ( a ) { return p ( a ) && ! h ( m , a ) && ! v ( a ) } ; a . on ( "contentDom" , function ( ) { var l = a . editable ( ) , p = a . document , r = a . window ; z ( m , { editable : l , inInlineMode : l . isInline ( ) , doc : p , win : r ,
! u ( l ) && l . setStyles ( { position : "relative" , top : null , left : null } ) , k . call ( this , m ) , B ( m ) , l . attachListener ( a , "beforeUndoImage" , function ( ) { m . line . detach ( ) } ) , l . attachListener ( a , "beforeGetData" , function ( ) { m . line . wrap . getParent ( ) && ( m . line . detach ( ) , a . once ( "getData" , function ( ) { m . line . attach ( ) } , null , null , 1E3 ) ) } , null , null , 0 ) , l . attachListener ( m . inInlineMode ? p : p . getWindow ( ) . getFrame ( ) , "mouseout" , function ( b ) { if ( "wysiwyg" == a . mode ) if ( m . inInlineMode ) { var c = b . data . $ . clientX ; b = b . data . $ . clientY ; B ( m ) ; x ( m , ! 0 ) ; var d = m . view . editable ,
hotNode : null } , ! 0 ) ; m . boundary = m . inInlineMode ? m . editable : m . doc . getDocumentElement ( ) ; l . is ( I . $inline ) || ( m . inInlineMode && ! u ( l ) && l . setStyles ( { position : "relative" , top : null , left : null } ) , k . call ( this , m ) , B ( m ) , l . attachListener ( a , "beforeUndoImage" , function ( ) { m . line . detach ( ) } ) , l . attachListener ( a , "beforeGetData" , function ( ) { m . line . wrap . getParent ( ) && ( m . line . detach ( ) , a . once ( "getData" , function ( ) { m . line . attach ( ) } , null , null , 1E3 ) ) } , null , null , 0 ) , l . attachListener ( m . inInlineMode ? p : p . getWindow ( ) . getFrame ( ) , "mouseout" , function ( b ) { if ( "wysiwyg" ==
e = m . view . scroll ; c > d . left - e . x && c < d . right - e . x && b > d . top - e . y && b < d . bottom - e . y || ( clearTimeout ( t ) , t = null , m . line . detach ( ) ) } else clearTimeout ( t ) , t = null , m . line . detach ( ) } ) , l . attachListener ( l , "keyup" , function ( ) { m . hiddenMode = 0 } ) , l . attachListener ( l , "keydown" , function ( b ) { if ( "wysiwyg" == a . mode ) switch ( b . data . getKeystroke ( ) ) { case 2228240 : case 16 : m . hiddenMode = 1 , m . line . detach ( ) } } ) , l . attachListener ( m . inInlineMode ? l : p , "mousemove" , function ( b ) { q = ! 0 ; if ( "wysiwyg" == a . mode && ! a . readOnly && ! t ) { var c = { x : b . data . $ . clientX , y : b . data . $ . clientY } ;
a . mode ) if ( m . inInlineMode ) { var c = b . data . $ . clientX ; b = b . data . $ . clientY ; B ( m ) ; x ( m , ! 0 ) ; var d = m . view . editable , e = m . view . scroll ; c > d . left - e . x && c < d . right - e . x && b > d . top - e . y && b < d . bottom - e . y || ( clearTimeout ( t ) , t = null , m . line . detach ( ) ) } else clearTimeout ( t ) , t = null , m . line . detach ( ) } ) , l . attachListener ( l , "keyup" , function ( ) { m . hiddenMode = 0 } ) , l . attachListener ( l , "keydown" , function ( b ) { if ( "wysiwyg" == a . mode ) switch ( b . data . getKeystroke ( ) ) { case 2228240 : case 16 : m . hiddenMode = 1 , m . line . detach ( ) } } ) , l . attachListener ( m . inInlineMode ? l : p ,
t = setTimeout ( function ( ) { m . mouse = c ; t = m . trigger = null ; B ( m ) ; q && ! m . hiddenMode && a . focusManager . hasFocus && ! m . line . mouseNear ( ) && ( m . element = da ( m , ! 0 ) ) && ( ( m . trigger = w ( m ) || y ( m ) || ea ( m ) ) && ! n ( m , m . trigger . upper || m . trigger . lower ) ? m . line . attach ( ) . place ( ) : ( m . trigger = null , m . line . detach ( ) ) , q = ! 1 ) } , 30 ) } } ) , l . attachListener ( r , "scroll" , function ( ) { "wysiwyg" == a . mode && ( m . line . detach ( ) , F . webkit && ( m . hiddenMode = 1 , clearTimeout ( H ) , H = setTimeout ( function ( ) { m . mouseDown || ( m . hiddenMode = 0 ) } , 50 ) ) ) } ) , l . attachListener ( J ? p : r , "mousedown" , function ( ) { "wysiwyg" ==
"mousemove" , function ( b ) { q = ! 0 ; if ( "wysiwyg" == a . mode && ! a . readOnly && ! t ) { var c = { x : b . data . $ . clientX , y : b . data . $ . clientY } ; t = setTimeout ( function ( ) { m . mouse = c ; t = m . trigger = null ; B ( m ) ; q && ! m . hiddenMode && a . focusManager . hasFocus && ! m . line . mouseNear ( ) && ( m . element = da ( m , ! 0 ) ) && ( ( m . trigger = w ( m ) || y ( m ) || ea ( m ) ) && ! n ( m , m . trigger . upper || m . trigger . lower ) ? m . line . attach ( ) . place ( ) : ( m . trigger = null , m . line . detach ( ) ) , q = ! 1 ) } , 30 ) } } ) , l . attachListener ( r , "scroll" , function ( ) { "wysiwyg" == a . mode && ( m . line . detach ( ) , F . webkit && ( m . hiddenMode = 1 , clearTimeout ( H ) ,
a . mode && ( m . line . detach ( ) , m . hiddenMode = 1 , m . mouseDown = 1 ) } ) , l . attachListener ( J ? p : r , "mouseup" , function ( ) { m . hiddenMode = 0 ; m . mouseDown = 0 } ) , a . addCommand ( "accessPreviousSpace" , d ( m ) ) , a . addCommand ( "accessNextSpace" , d ( m , ! 0 ) ) , a . setKeystroke ( [ [ g . magicline _keystrokePrevious , "accessPreviousSpace" ] , [ g . magicline _keystrokeNext , "accessNextSpace" ] ] ) , a . on ( "loadSnapshot" , function ( ) { var b , c , d , e ; for ( e in { p : 1 , br : 1 , div : 1 } ) for ( b = a . document . getElementsByTag ( e ) , d = b . count ( ) ; d -- ; ) if ( ( c = b . getItem ( d ) ) . data ( "cke-magicline-hot" ) ) { m . hotNode =
H = setTimeout ( function ( ) { m . mouseDown || ( m . hiddenMode = 0 ) } , 50 ) ) ) } ) , l . attachListener ( J ? p : r , "mousedown" , function ( ) { "wysiwyg" == a . mode && ( m . line . detach ( ) , m . hiddenMode = 1 , m . mouseDown = 1 ) } ) , l . attachListener ( J ? p : r , "mouseup" , function ( ) { m . hiddenMode = 0 ; m . mouseDown = 0 } ) , a . addCommand ( "accessPreviousSpace" , d ( m ) ) , a . addCommand ( "accessNextSpace" , d ( m , ! 0 ) ) , a . setKeystroke ( [ [ g . magicline _keystrokePrevious , "accessPreviousSpace" ] , [ g . magicline _keystrokeNext , "accessNextSpace" ] ] ) , a . on ( "loadSnapshot" , function ( ) { var b , c , d , e ; for ( e in { p : 1 ,
c ; m . lastCmdDirection = "true" === c . data ( "cke-magicline-dir" ) ? ! 0 : ! 1 ; return } } ) , this . backdoor = { accessFocusSpace : b , boxTrigger : e , isLine : h , getAscendantTrigger : c , getNonEmptyNeighbour : f , getSize : C , that : m , triggerEdge : y , triggerEditable : w , triggerExpand : ea } ) } , this ) } } ) ; var z = CKEDITOR . tools . extend , D = CKEDITOR . dom . element , G = D . createFromHtml , F = CKEDITOR . env , J = CKEDITOR . env . ie && 9 > CKEDITOR . env . version , I = CKEDITOR . dtd , N = { } , E = 128 , P = 64 , T = 32 , L = 16 , Q = 4 , O = 2 , U = 1 , K = " " , V = I . $listItem , R = I . $tableContent , H = z ( { } , I . $nonEditable , I . $empty ) ,
br : 1 , div : 1 } ) for ( b = a . document . getElementsByTag ( e ) , d = b . count ( ) ; d -- ; ) if ( ( c = b . getItem ( d ) ) . data ( "cke-magicline-hot" ) ) { m . hotNode = c ; m . lastCmdDirection = "true" === c . data ( "cke-magicline-dir" ) ? ! 0 : ! 1 ; return } } ) , this . backdoor = { accessFocusSpace : b , boxTrigger : e , isLine : h , getAscendantTrigger : c , getNonEmptyNeighbour : f , getSize : C , that : m , triggerEdge : y , triggerEditable : w , triggerExpand : ea } ) } , this ) } } ) ; var z = CKEDITOR . tools . extend , D = CKEDITOR . dom . element , G = D . createFromHtml , F = CKEDITOR . env , J = CKEDITOR . env . ie && 9 > CKEDITOR . env . version ,
M = I . $block , W = 100 , S = "width:0px;height:0px;padding:0px;margin:0px;display:block;z-index:9999;color:#fff;position:absolute;font-size: 0px;line-height:0px;" , aa = S + "border-color:transparent;display:block;border-style:solid;" , X = "\x3cspan\x3e" + K + "\x3c/span\x3e" ; N [ CKEDITOR . ENTER _BR ] = "br" ; N [ CKEDITOR . ENTER _P ] = "p" ; N [ CKEDITOR . ENTER _DIV ] = "div" ; e . prototype = { set : function ( a , b , c ) { this . properties = a + b + ( c || U ) ; return this } , is : function ( a ) { return ( this . properties & a ) == a } } ; var da = function ( ) { function a ( b , c ) { var d = b . $ . elementFromPoint ( c . x ,
I = CKEDITOR . dtd , N = { } , E = 128 , P = 64 , T = 32 , L = 16 , Q = 4 , O = 2 , U = 1 , K = " " , V = I . $listItem , R = I . $tableContent , H = z ( { } , I . $nonEditable , I . $empty ) , M = I . $block , W = 100 , S = "width:0px;height:0px;padding:0px;margin:0px;display:block;z-index:9999;color:#fff;position:absolute;font-size: 0px;line-height:0px;" , aa = S + "border-color:transparent;display:block;border-style:solid;" , X = "\x3cspan\x3e" + K + "\x3c/span\x3e" ; N [ CKEDITOR . ENTER _BR ] = "br" ; N [ CKEDITOR . ENTER _P ] = "p" ; N [ CKEDITOR . ENTER _DIV ] = "div" ; e . prototype = { set : function ( a , b , c ) { this . properties =
c . y ) ; return d && d . nodeType ? new CKEDITOR . dom . element ( d ) : null } return function ( b , c , d ) { if ( ! b . mouse ) return null ; var e = b . doc , f = b . line . wrap ; d = d || b . mouse ; var g = a ( e , d ) ; c && h ( b , g ) && ( f . hide ( ) , g = a ( e , d ) , f . show ( ) ) ; return ! g || g . type != CKEDITOR . NODE _ELEMENT || ! g . $ || F . ie && 9 > F . version && ! b . boundary . equals ( g ) && ! b . boundary . contains ( g ) ? null : g } } ( ) , ba = CKEDITOR . dom . walker . whitespaces ( ) , Y = CKEDITOR . dom . walker . nodeType ( CKEDITOR . NODE _COMMENT ) , ea = function ( ) { function b ( d ) { var e = d . element , f , h , k ; if ( ! p ( e ) || e . contains ( d . editable ) || e . isReadOnly ( ) ) return null ;
a + b + ( c || U ) ; return this } , is : function ( a ) { return ( this . properties & a ) == a } } ; var da = function ( ) { function a ( b , c ) { var d = b . $ . elementFromPoint ( c . x , c . y ) ; return d && d . nodeType ? new CKEDITOR . dom . element ( d ) : null } return function ( b , c , d ) { if ( ! b . mouse ) return null ; var e = b . doc , f = b . line . wrap ; d = d || b . mouse ; var g = a ( e , d ) ; c && h ( b , g ) && ( f . hide ( ) , g = a ( e , d ) , f . show ( ) ) ; return ! g || g . type != CKEDITOR . NODE _ELEMENT || ! g . $ || F . ie && 9 > F . version && ! b . boundary . equals ( g ) && ! b . boundary . contains ( g ) ? null : g } } ( ) , ba = CKEDITOR . dom . walker . whitespaces ( ) , Y = CKEDITOR . dom . walker . nodeType ( CKEDITOR . NODE _COMMENT ) ,
k = A ( d , function ( a , b ) { return ! b . equals ( a ) } , function ( a , b ) { return da ( a , ! 0 , b ) } , e ) ; f = k . upper ; h = k . lower ; if ( a ( d , f , h ) ) return k . set ( T , 8 ) ; if ( f && e . contains ( f ) ) for ( ; ! f . getParent ( ) . equals ( e ) ; ) f = f . getParent ( ) ; else f = e . getFirst ( function ( a ) { return c ( d , a ) } ) ; if ( h && e . contains ( h ) ) for ( ; ! h . getParent ( ) . equals ( e ) ; ) h = h . getParent ( ) ; else h = e . getLast ( function ( a ) { return c ( d , a ) } ) ; if ( ! f || ! h ) return null ; r ( d , f ) ; r ( d , h ) ; if ( ! m ( d . mouse . y , f . size . top , h . size . bottom ) ) return null ; for ( var e = Number . MAX _VALUE , l , n , H , q ; h && ! h . equals ( f ) && ( n = f . getNext ( d . isRelevant ) ) ; ) l =
ea = function ( ) { function b ( d ) { var e = d . element , f , h , k ; if ( ! p ( e ) || e . contains ( d . editable ) || e . isReadOnly ( ) ) return null ; k = A ( d , function ( a , b ) { return ! b . equals ( a ) } , function ( a , b ) { return da ( a , ! 0 , b ) } , e ) ; f = k . upper ; h = k . lower ; if ( a ( d , f , h ) ) return k . set ( T , 8 ) ; if ( f && e . contains ( f ) ) for ( ; ! f . getParent ( ) . equals ( e ) ; ) f = f . getParent ( ) ; else f = e . getFirst ( function ( a ) { return c ( d , a ) } ) ; if ( h && e . contains ( h ) ) for ( ; ! h . getParent ( ) . equals ( e ) ; ) h = h . getParent ( ) ; else h = e . getLast ( function ( a ) { return c ( d , a ) } ) ; if ( ! f || ! h ) return null ; r ( d , f ) ; r ( d , h ) ; if ( ! m ( d . mouse . y ,
Math . abs ( g ( d , f , n ) - d . mouse . y ) , l < e && ( e = l , H = f , q = n ) , f = n , r ( d , f ) ; if ( ! H || ! q || ! m ( d . mouse . y , H . size . top , q . size . bottom ) ) return null ; k . upper = H ; k . lower = q ; return k . set ( T , 8 ) } function c ( a , b ) { return ! ( b && b . type == CKEDITOR . NODE _TEXT || Y ( b ) || v ( b ) || h ( a , b ) || b . type == CKEDITOR . NODE _ELEMENT && b . $ && b . is ( "br" ) ) } return function ( c ) { var d = b ( c ) , e ; if ( e = d ) { e = d . upper ; var f = d . lower ; e = ! e || ! f || v ( f ) || v ( e ) || f . equals ( e ) || e . equals ( f ) || f . contains ( e ) || e . contains ( f ) ? ! 1 : t ( c , e ) && t ( c , f ) && a ( c , e , f ) ? ! 0 : ! 1 } return e ? d : null } } ( ) , ca = [ "top" , "left" , "right" ,
f . size . top , h . size . bottom ) ) return null ; for ( var e = Number . MAX _VALUE , l , n , H , q ; h && ! h . equals ( f ) && ( n = f . getNext ( d . isRelevant ) ) ; ) l = Math . abs ( g ( d , f , n ) - d . mouse . y ) , l < e && ( e = l , H = f , q = n ) , f = n , r ( d , f ) ; if ( ! H || ! q || ! m ( d . mouse . y , H . size . top , q . size . bottom ) ) return null ; k . upper = H ; k . lower = q ; return k . set ( T , 8 ) } function c ( a , b ) { return ! ( b && b . type == CKEDITOR . NODE _TEXT || Y ( b ) || v ( b ) || h ( a , b ) || b . type == CKEDITOR . NODE _ELEMENT && b . $ && b . is ( "br" ) ) } return function ( c ) { var d = b ( c ) , e ; if ( e = d ) { e = d . upper ; var f = d . lower ; e = ! e || ! f || v ( f ) || v ( e ) || f . equals ( e ) ||
"bottom" ] } ( ) , CKEDITOR . config . magicline _keystrokePrevious = CKEDITOR . CTRL + CKEDITOR . SHIFT + 51 , CKEDITOR . config . magicline _keystrokeNext = CKEDITOR . CTRL + CKEDITOR . SHIFT + 52 , function ( ) { function a ( a ) { if ( ! a || a . type != CKEDITOR . NODE _ELEMENT || "form" != a . getName ( ) ) return [ ] ; for ( var c = [ ] , e = [ "style" , "className" ] , b = 0 ; b < e . length ; b ++ ) { var d = a . $ . elements . namedItem ( e [ b ] ) ; d && ( d = new CKEDITOR . dom . element ( d ) , c . push ( [ d , d . nextSibling ] ) , d . remove ( ) ) } return c } function e ( a , c ) { if ( a && a . type == CKEDITOR . NODE _ELEMENT && "form" == a . getName ( ) && 0 <
e . equals ( f ) || f . contains ( e ) || e . contains ( f ) ? ! 1 : t ( c , e ) && t ( c , f ) && a ( c , e , f ) ? ! 0 : ! 1 } return e ? d : null } } ( ) , ca = [ "top" , "left" , "right" , "bottom" ] } ( ) , CKEDITOR . config . magicline _keystrokePrevious = CKEDITOR . CTRL + CKEDITOR . SHIFT + 51 , CKEDITOR . config . magicline _keystrokeNext = CKEDITOR . CTRL + CKEDITOR . SHIFT + 52 , function ( ) { function a ( a ) { if ( ! a || a . type != CKEDITOR . NODE _ELEMENT || "form" != a . getName ( ) ) return [ ] ; for ( var c = [ ] , e = [ "style" , "className" ] , b = 0 ; b < e . length ; b ++ ) { var d = a . $ . elements . namedItem ( e [ b ] ) ; d && ( d = new CKEDITOR . dom . element ( d ) , c . push ( [ d ,
c . length ) for ( var e = c . length - 1 ; 0 <= e ; e -- ) { var b = c [ e ] [ 0 ] , d = c [ e ] [ 1 ] ; d ? b . insertBefore ( d ) : b . appendTo ( a ) } } function c ( c , f ) { var g = a ( c ) , b = { } , d = c . $ ; f || ( b [ "class" ] = d . className || "" , d . className = "" ) ; b . inline = d . style . cssText || "" ; f || ( d . style . cssText = "position: static; overflow: visible" ) ; e ( g ) ; return b } function g ( c , f ) { var g = a ( c ) , b = c . $ ; "class" in f && ( b . className = f [ "class" ] ) ; "inline" in f && ( b . style . cssText = f . inline ) ; e ( g ) } function f ( a ) { if ( ! a . editable ( ) . isInline ( ) ) { var c = CKEDITOR . instances , e ; for ( e in c ) { var b = c [ e ] ; "wysiwyg" !=
d . nextSibling ] ) , d . remove ( ) ) } return c } function e ( a , c ) { if ( a && a . type == CKEDITOR . NODE _ELEMENT && "form" == a . getName ( ) && 0 < c . length ) for ( var e = c . length - 1 ; 0 <= e ; e -- ) { var b = c [ e ] [ 0 ] , d = c [ e ] [ 1 ] ; d ? b . insertBefore ( d ) : b . appendTo ( a ) } } function c ( c , f ) { var g = a ( c ) , b = { } , d = c . $ ; f || ( b [ "class" ] = d . className || "" , d . className = "" ) ; b . inline = d . style . cssText || "" ; f || ( d . style . cssText = "position: static; overflow: visible" ) ; e ( g ) ; return b } function g ( c , f ) { var g = a ( c ) , b = c . $ ; "class" in f && ( b . className = f [ "class" ] ) ; "inline" in f && ( b . style . cssText =
b . mode || b . readOnly || ( b = b . document . getBody ( ) , b . setAttribute ( "contentEditable" , ! 1 ) , b . setAttribute ( "contentEditable" , ! 0 ) ) } a . editable ( ) . hasFocus && ( a . toolbox . focus ( ) , a . focus ( ) ) } } CKEDITOR . plugins . add ( "maximize" , { init : function ( a ) { function e ( ) { var b = d . getViewPaneSize ( ) ; a . resize ( b . width , b . height , null , ! 0 ) } if ( a . elementMode != CKEDITOR . ELEMENT _MODE _INLINE ) { var k = a . lang , b = CKEDITOR . document , d = b . getWindow ( ) , h , p , v , u = CKEDITOR . TRISTATE _OFF ; a . addCommand ( "maximize" , { modes : { wysiwyg : ! CKEDITOR . env . iOS , source : ! CKEDITOR . env . iOS } ,
f . inline ) ; e ( g ) } function f ( a ) { if ( ! a . editable ( ) . isInline ( ) ) { var c = CKEDITOR . instances , e ; for ( e in c ) { var b = c [ e ] ; "wysiwyg" != b . mode || b . readOnly || ( b = b . document . getBody ( ) , b . setAttribute ( "contentEditable" , ! 1 ) , b . setAttribute ( "contentEditable" , ! 0 ) ) } a . editable ( ) . hasFocus && ( a . toolbox . focus ( ) , a . focus ( ) ) } } CKEDITOR . plugins . add ( "maximize" , { init : function ( a ) { function e ( ) { var b = d . getViewPaneSize ( ) ; a . resize ( b . width , b . height , null , ! 0 ) } if ( a . elementMode != CKEDITOR . ELEMENT _MODE _INLINE ) { var k = a . lang , b = CKEDITOR . document , d = b . getWindow ( ) ,
readOnly : 1 , editorFocus : ! 1 , exec : function ( ) { var t = a . container . getFirst ( function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && a . hasClass ( "cke_inner" ) } ) , n = a . ui . space ( "contents" ) ; if ( "wysiwyg" == a . mode ) { var q = a . getSelection ( ) ; h = q && q . getRanges ( ) ; p = d . getScrollPosition ( ) } else { var w = a . editable ( ) . $ ; h = ! CKEDITOR . env . ie && [ w . selectionStart , w . selectionEnd ] ; p = [ w . scrollLeft , w . scrollTop ] } if ( this . state == CKEDITOR . TRISTATE _OFF ) { d . on ( "resize" , e ) ; v = d . getScrollPosition ( ) ; for ( q = a . container ; q = q . getParent ( ) ; ) q . setCustomData ( "maximize_saved_styles" ,
h , p , v , u = CKEDITOR . TRISTATE _OFF ; a . addCommand ( "maximize" , { modes : { wysiwyg : ! CKEDITOR . env . iOS , source : ! CKEDITOR . env . iOS } , readOnly : 1 , editorFocus : ! 1 , exec : function ( ) { var t = a . container . getFirst ( function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && a . hasClass ( "cke_inner" ) } ) , n = a . ui . space ( "contents" ) ; if ( "wysiwyg" == a . mode ) { var q = a . getSelection ( ) ; h = q && q . getRanges ( ) ; p = d . getScrollPosition ( ) } else { var w = a . editable ( ) . $ ; h = ! CKEDITOR . env . ie && [ w . selectionStart , w . selectionEnd ] ; p = [ w . scrollLeft , w . scrollTop ] } if ( this . state == CKEDITOR . TRISTATE _OFF ) { d . on ( "resize" ,
c ( q ) ) , q . setStyle ( "z-index" , a . config . baseFloatZIndex - 5 ) ; n . setCustomData ( "maximize_saved_styles" , c ( n , ! 0 ) ) ; t . setCustomData ( "maximize_saved_styles" , c ( t , ! 0 ) ) ; n = { overflow : CKEDITOR . env . webkit ? "" : "hidden" , width : 0 , height : 0 } ; b . getDocumentElement ( ) . setStyles ( n ) ; ! CKEDITOR . env . gecko && b . getDocumentElement ( ) . setStyle ( "position" , "fixed" ) ; CKEDITOR . env . gecko && CKEDITOR . env . quirks || b . getBody ( ) . setStyles ( n ) ; CKEDITOR . env . ie ? setTimeout ( function ( ) { d . $ . scrollTo ( 0 , 0 ) } , 0 ) : d . $ . scrollTo ( 0 , 0 ) ; t . setStyle ( "position" , CKEDITOR . env . gecko &&
e ) ; v = d . getScrollPosition ( ) ; for ( q = a . container ; q = q . getParent ( ) ; ) q . setCustomData ( "maximize_saved_styles" , c ( q ) ) , q . setStyle ( "z-index" , a . config . baseFloatZIndex - 5 ) ; n . setCustomData ( "maximize_saved_styles" , c ( n , ! 0 ) ) ; t . setCustomData ( "maximize_saved_styles" , c ( t , ! 0 ) ) ; n = { overflow : CKEDITOR . env . webkit ? "" : "hidden" , width : 0 , height : 0 } ; b . getDocumentElement ( ) . setStyles ( n ) ; ! CKEDITOR . env . gecko && b . getDocumentElement ( ) . setStyle ( "position" , "fixed" ) ; CKEDITOR . env . gecko && CKEDITOR . env . quirks || b . getBody ( ) . setStyles ( n ) ; CKEDITOR . env . ie ?
CKEDITOR . env . quirks ? "fixed" : "absolute" ) ; t . $ . offsetLeft ; t . setStyles ( { "z-index" : a . config . baseFloatZIndex - 5 , left : "0px" , top : "0px" } ) ; t . addClass ( "cke_maximized" ) ; e ( ) ; n = t . getDocumentPosition ( ) ; t . setStyles ( { left : - 1 * n . x + "px" , top : - 1 * n . y + "px" } ) ; CKEDITOR . env . gecko && f ( a ) } else if ( this . state == CKEDITOR . TRISTATE _ON ) { d . removeListener ( "resize" , e ) ; for ( var q = [ n , t ] , y = 0 ; y < q . length ; y ++ ) g ( q [ y ] , q [ y ] . getCustomData ( "maximize_saved_styles" ) ) , q [ y ] . removeCustomData ( "maximize_saved_styles" ) ; for ( q = a . container ; q = q . getParent ( ) ; ) g ( q ,
setTimeout ( function ( ) { d . $ . scrollTo ( 0 , 0 ) } , 0 ) : d . $ . scrollTo ( 0 , 0 ) ; t . setStyle ( "position" , CKEDITOR . env . gecko && CKEDITOR . env . quirks ? "fixed" : "absolute" ) ; t . $ . offsetLeft ; t . setStyles ( { "z-index" : a . config . baseFloatZIndex - 5 , left : "0px" , top : "0px" } ) ; t . addClass ( "cke_maximized" ) ; e ( ) ; n = t . getDocumentPosition ( ) ; t . setStyles ( { left : - 1 * n . x + "px" , top : - 1 * n . y + "px" } ) ; CKEDITOR . env . gecko && f ( a ) } else if ( this . state == CKEDITOR . TRISTATE _ON ) { d . removeListener ( "resize" , e ) ; for ( var q = [ n , t ] , y = 0 ; y < q . length ; y ++ ) g ( q [ y ] , q [ y ] . getCustomData ( "maximize_saved_styles" ) ) ,
q . getCustomData ( "maximize_saved_styles" ) ) , q . removeCustomData ( "maximize_saved_styles" ) ; CKEDITOR . env . ie ? setTimeout ( function ( ) { d . $ . scrollTo ( v . x , v . y ) } , 0 ) : d . $ . scrollTo ( v . x , v . y ) ; t . removeClass ( "cke_maximized" ) ; CKEDITOR . env . webkit && ( t . setStyle ( "display" , "inline" ) , setTimeout ( function ( ) { t . setStyle ( "display" , "block" ) } , 0 ) ) ; a . fire ( "resize" , { outerHeight : a . container . $ . offsetHeight , contentsHeight : n . $ . offsetHeight , outerWidth : a . container . $ . offsetWidth } ) } this . toggleState ( ) ; if ( q = this . uiItems [ 0 ] ) n = this . state == CKEDITOR . TRISTATE _OFF ?
q [ y ] . removeCustomData ( "maximize_saved_styles" ) ; for ( q = a . container ; q = q . getParent ( ) ; ) g ( q , q . getCustomData ( "maximize_saved_styles" ) ) , q . removeCustomData ( "maximize_saved_styles" ) ; CKEDITOR . env . ie ? setTimeout ( function ( ) { d . $ . scrollTo ( v . x , v . y ) } , 0 ) : d . $ . scrollTo ( v . x , v . y ) ; t . removeClass ( "cke_maximized" ) ; CKEDITOR . env . webkit && ( t . setStyle ( "display" , "inline" ) , setTimeout ( function ( ) { t . setStyle ( "display" , "block" ) } , 0 ) ) ; a . fire ( "resize" , { outerHeight : a . container . $ . offsetHeight , contentsHeight : n . $ . offsetHeight , outerWidth : a . container . $ . offsetWidth } ) } this . toggleState ( ) ;
k . maximize . maximize : k . maximize . minimize , q = CKEDITOR . document . getById ( q . _ . id ) , q . getChild ( 1 ) . setHtml ( n ) , q . setAttribute ( "title" , n ) , q . setAttribute ( "href" , 'javascript:void("' + n + '");' ) ; "wysiwyg" == a . mode ? h ? ( CKEDITOR . env . gecko && f ( a ) , a . getSelection ( ) . selectRanges ( h ) , ( w = a . getSelection ( ) . getStartElement ( ) ) && w . scrollIntoView ( ! 0 ) ) : d . $ . scrollTo ( p . x , p . y ) : ( h && ( w . selectionStart = h [ 0 ] , w . selectionEnd = h [ 1 ] ) , w . scrollLeft = p [ 0 ] , w . scrollTop = p [ 1 ] ) ; h = p = null ; u = this . state ; a . fire ( "maximize" , this . state ) } , canUndo : ! 1 } ) ; a . ui . addButton &&
if ( q = this . uiItems [ 0 ] ) n = this . state == CKEDITOR . TRISTATE _OFF ? k . maximize . maximize : k . maximize . minimize , q = CKEDITOR . document . getById ( q . _ . id ) , q . getChild ( 1 ) . setHtml ( n ) , q . setAttribute ( "title" , n ) , q . setAttribute ( "href" , 'javascript:void("' + n + '");' ) ; "wysiwyg" == a . mode ? h ? ( CKEDITOR . env . gecko && f ( a ) , a . getSelection ( ) . selectRanges ( h ) , ( w = a . getSelection ( ) . getStartElement ( ) ) && w . scrollIntoView ( ! 0 ) ) : d . $ . scrollTo ( p . x , p . y ) : ( h && ( w . selectionStart = h [ 0 ] , w . selectionEnd = h [ 1 ] ) , w . scrollLeft = p [ 0 ] , w . scrollTop = p [ 1 ] ) ; h = p = null ; u = this . state ;
a . ui . addButton ( "Maximize" , { label : k . maximize . maximize , command : "maximize" , toolbar : "tools,10" } ) ; a . on ( "mode" , function ( ) { var b = a . getCommand ( "maximize" ) ; b . setState ( b . state == CKEDITOR . TRISTATE _DISABLED ? CKEDITOR . TRISTATE _DISABLED : u ) } , null , null , 100 ) } } } ) } ( ) , function ( ) { var a = { canUndo : ! 1 , async : ! 0 , exec : function ( e ) { e . getClipboardData ( { title : e . lang . pastetext . title } , function ( c ) { c && e . fire ( "paste" , { type : "text" , dataValue : c . dataValue , method : "paste" , dataTransfer : CKEDITOR . plugins . clipboard . initPasteDataTransfer ( ) } ) ; e . fire ( "afterCommandExec" ,
a . fire ( "maximize" , this . state ) } , canUndo : ! 1 } ) ; a . ui . addButton && a . ui . addButton ( "Maximize" , { label : k . maximize . maximize , command : "maximize" , toolbar : "tools,10" } ) ; a . on ( "mode" , function ( ) { var b = a . getCommand ( "maximize" ) ; b . setState ( b . state == CKEDITOR . TRISTATE _DISABLED ? CKEDITOR . TRISTATE _DISABLED : u ) } , null , null , 100 ) } } } ) } ( ) , function ( ) { var a = { canUndo : ! 1 , async : ! 0 , exec : function ( e ) { e . getClipboardData ( { title : e . lang . pastetext . title } , function ( c ) { c && e . fire ( "paste" , { type : "text" , dataValue : c . dataValue , method : "paste" , dataTransfer : CKEDITOR . plugins . clipboard . initPasteDataTransfer ( ) } ) ;
{ name : "pastetext" , command : a , returnValue : ! ! c } ) } ) } } ; CKEDITOR . plugins . add ( "pastetext" , { requires : "clipboard" , init : function ( e ) { e . addCommand ( "pastetext" , a ) ; e . ui . addButton && e . ui . addButton ( "PasteText" , { label : e . lang . pastetext . button , command : "pastetext" , toolbar : "clipboard,40" } ) ; if ( e . config . forcePasteAsPlainText ) e . on ( "beforePaste" , function ( a ) { "html" != a . data . type && ( a . data . type = "text" ) } ) ; e . on ( "pasteState" , function ( a ) { e . getCommand ( "pastetext" ) . setState ( a . data ) } ) } } ) } ( ) , function ( ) { function a ( a , e , f ) { var m = CKEDITOR . cleanWord ;
e . fire ( "afterCommandExec" , { name : "pastetext" , command : a , returnValue : ! ! c } ) } ) } } ; CKEDITOR . plugins . add ( "pastetext" , { requires : "clipboard" , init : function ( e ) { e . addCommand ( "pastetext" , a ) ; e . ui . addButton && e . ui . addButton ( "PasteText" , { label : e . lang . pastetext . button , command : "pastetext" , toolbar : "clipboard,40" } ) ; if ( e . config . forcePasteAsPlainText ) e . on ( "beforePaste" , function ( a ) { "html" != a . data . type && ( a . data . type = "text" ) } ) ; e . on ( "pasteState" , function ( a ) { e . getCommand ( "pastetext" ) . setState ( a . data ) } ) } } ) } ( ) , function ( ) { function a ( a ,
m ? f ( ) : ( a = CKEDITOR . getUrl ( a . config . pasteFromWordCleanupFile || e + "filter/default.js" ) , CKEDITOR . scriptLoader . load ( a , f , null , ! 0 ) ) ; return ! m } function e ( a ) { a . data . type = "html" } CKEDITOR . plugins . add ( "pastefromword" , { requires : "clipboard" , init : function ( c ) { var g = 0 , f = this . path ; c . addCommand ( "pastefromword" , { canUndo : ! 1 , async : ! 0 , exec : function ( a ) { var c = this ; g = 1 ; a . once ( "beforePaste" , e ) ; a . getClipboardData ( { title : a . lang . pastefromword . title } , function ( e ) { e && a . fire ( "paste" , { type : "html" , dataValue : e . dataValue , method : "paste" ,
e , f ) { var m = CKEDITOR . cleanWord ; m ? f ( ) : ( a = CKEDITOR . getUrl ( a . config . pasteFromWordCleanupFile || e + "filter/default.js" ) , CKEDITOR . scriptLoader . load ( a , f , null , ! 0 ) ) ; return ! m } function e ( a ) { a . data . type = "html" } CKEDITOR . plugins . add ( "pastefromword" , { requires : "clipboard" , init : function ( c ) { var g = 0 , f = this . path ; c . addCommand ( "pastefromword" , { canUndo : ! 1 , async : ! 0 , exec : function ( a ) { var c = this ; g = 1 ; a . once ( "beforePaste" , e ) ; a . getClipboardData ( { title : a . lang . pastefromword . title } , function ( e ) { e && a . fire ( "paste" , { type : "html" , dataValue : e . dataValue ,
dataTransfer : CKEDITOR . plugins . clipboard . initPasteDataTransfer ( ) } ) ; a . fire ( "afterCommandExec" , { name : "pastefromword" , command : c , returnValue : ! ! e } ) } ) } } ) ; c . ui . addButton && c . ui . addButton ( "PasteFromWord" , { label : c . lang . pastefromword . toolbar , command : "pastefromword" , toolbar : "clipboard,50" } ) ; c . on ( "pasteState" , function ( a ) { c . getCommand ( "pastefromword" ) . setState ( a . data ) } ) ; c . on ( "paste" , function ( e ) { var l = e . data , k = l . dataValue ; if ( k && ( g || /(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/ . test ( k ) ) ) { l . dontFilter = ! 0 ; var b =
method : "paste" , dataTransfer : CKEDITOR . plugins . clipboard . initPasteDataTransfer ( ) } ) ; a . fire ( "afterCommandExec" , { name : "pastefromword" , command : c , returnValue : ! ! e } ) } ) } } ) ; c . ui . addButton && c . ui . addButton ( "PasteFromWord" , { label : c . lang . pastefromword . toolbar , command : "pastefromword" , toolbar : "clipboard,50" } ) ; c . on ( "pasteState" , function ( a ) { c . getCommand ( "pastefromword" ) . setState ( a . data ) } ) ; c . on ( "paste" , function ( e ) { var l = e . data , k = l . dataValue ; if ( k && ( g || /(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/ . test ( k ) ) ) { l . dontFilter =
a ( c , f , function ( ) { if ( b ) c . fire ( "paste" , l ) ; else if ( ! c . config . pasteFromWordPromptCleanup || g || confirm ( c . lang . pastefromword . confirmCleanup ) ) l . dataValue = CKEDITOR . cleanWord ( k , c ) ; g = 0 } ) ; b && e . cancel ( ) } } , null , null , 3 ) } } ) } ( ) , CKEDITOR . plugins . add ( "removeformat" , { init : function ( a ) { a . addCommand ( "removeFormat" , CKEDITOR . plugins . removeformat . commands . removeformat ) ; a . ui . addButton && a . ui . addButton ( "RemoveFormat" , { label : a . lang . removeformat . toolbar , command : "removeFormat" , toolbar : "cleanup,10" } ) } } ) , CKEDITOR . plugins . removeformat =
! 0 ; var b = a ( c , f , function ( ) { if ( b ) c . fire ( "paste" , l ) ; else if ( ! c . config . pasteFromWordPromptCleanup || g || confirm ( c . lang . pastefromword . confirmCleanup ) ) l . dataValue = CKEDITOR . cleanWord ( k , c ) ; g = 0 } ) ; b && e . cancel ( ) } } , null , null , 3 ) } } ) } ( ) , CKEDITOR . plugins . add ( "removeformat" , { init : function ( a ) { a . addCommand ( "removeFormat" , CKEDITOR . plugins . removeformat . commands . removeformat ) ; a . ui . addButton && a . ui . addButton ( "RemoveFormat" , { label : a . lang . removeformat . toolbar , command : "removeFormat" , toolbar : "cleanup,10" } ) } } ) , CKEDITOR . plugins . removeformat =
{ commands : { removeformat : { exec : function ( a ) { for ( var e = a . _ . removeFormatRegex || ( a . _ . removeFormatRegex = new RegExp ( "^(?:" + a . config . removeFormatTags . replace ( /,/g , "|" ) + ")$" , "i" ) ) , c = a . _ . removeAttributes || ( a . _ . removeAttributes = a . config . removeFormatAttributes . split ( "," ) ) , g = CKEDITOR . plugins . removeformat . filter , f = a . getSelection ( ) . getRanges ( ) , m = f . createIterator ( ) , l = function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT } , k ; k = m . getNextRange ( ) ; ) { k . collapsed || k . enlarge ( CKEDITOR . ENLARGE _ELEMENT ) ; var b = k . createBookmark ( ) ,
{ commands : { removeformat : { exec : function ( a ) { for ( var e = a . _ . removeFormatRegex || ( a . _ . removeFormatRegex = new RegExp ( "^(?:" + a . config . removeFormatTags . replace ( /,/g , "|" ) + ")$" , "i" ) ) , c = a . _ . removeAttributes || ( a . _ . removeAttributes = a . config . removeFormatAttributes . split ( "," ) ) , g = CKEDITOR . plugins . removeformat . filter , f = a . getSelection ( ) . getRanges ( ) , m = f . createIterator ( ) , l = function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT } , k ; k = m . getNextRange ( ) ; ) { k . collapsed || k . enlarge ( CKEDITOR . ENLARGE _ELEMENT ) ; var b = k . createBookmark ( ) ,
d = b . startNode , h = b . endNode , p = function ( b ) { for ( var c = a . elementPath ( b ) , d = c . elements , f = 1 , h ; ( h = d [ f ] ) && ! h . equals ( c . block ) && ! h . equals ( c . blockLimit ) ; f ++ ) e . test ( h . getName ( ) ) && g ( a , h ) && b . breakParent ( h ) } ; p ( d ) ; if ( h ) for ( p ( h ) , d = d . getNextSourceNode ( ! 0 , CKEDITOR . NODE _ELEMENT ) ; d && ! d . equals ( h ) ; ) if ( d . isReadOnly ( ) ) { if ( d . getPosition ( h ) & CKEDITOR . POSITION _CONTAINS ) break ; d = d . getNext ( l ) } else p = d . getNextSourceNode ( ! 1 , CKEDITOR . NODE _ELEMENT ) , "img" == d . getName ( ) && d . data ( "cke-realelement" ) || ! g ( a , d ) || ( e . test ( d . getName ( ) ) ? d . remove ( 1 ) :
d = b . startNode , h = b . endNode , p = function ( b ) { for ( var c = a . elementPath ( b ) , d = c . elements , f = 1 , h ; ( h = d [ f ] ) && ! h . equals ( c . block ) && ! h . equals ( c . blockLimit ) ; f ++ ) e . test ( h . getName ( ) ) && g ( a , h ) && b . breakParent ( h ) } ; p ( d ) ; if ( h ) for ( p ( h ) , d = d . getNextSourceNode ( ! 0 , CKEDITOR . NODE _ELEMENT ) ; d && ! d . equals ( h ) ; ) if ( d . isReadOnly ( ) ) { if ( d . getPosition ( h ) & CKEDITOR . POSITION _CONTAINS ) break ; d = d . getNext ( l ) } else p = d . getNextSourceNode ( ! 1 , CKEDITOR . NODE _ELEMENT ) , "img" == d . getName ( ) && d . data ( "cke-realelement" ) || ! g ( a , d ) || ( e . test ( d . getName ( ) ) ? d . remove ( 1 ) :
( d . removeAttributes ( c ) , a . fire ( "removeFormatCleanup" , d ) ) ) , d = p ; k . moveToBookmark ( b ) } a . forceNextSelectionCheck ( ) ; a . getSelection ( ) . selectRanges ( f ) } } } , filter : function ( a , e ) { for ( var c = a . _ . removeFormatFilters || [ ] , g = 0 ; g < c . length ; g ++ ) if ( ! 1 === c [ g ] ( e ) ) return ! 1 ; return ! 0 } } , CKEDITOR . editor . prototype . addRemoveFormatFilter = function ( a ) { this . _ . removeFormatFilters || ( this . _ . removeFormatFilters = [ ] ) ; this . _ . removeFormatFilters . push ( a ) } , CKEDITOR . config . removeFormatTags = "b,big,cite,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var" ,
( d . removeAttributes ( c ) , a . fire ( "removeFormatCleanup" , d ) ) ) , d = p ; k . moveToBookmark ( b ) } a . forceNextSelectionCheck ( ) ; a . getSelection ( ) . selectRanges ( f ) } } } , filter : function ( a , e ) { for ( var c = a . _ . removeFormatFilters || [ ] , g = 0 ; g < c . length ; g ++ ) if ( ! 1 === c [ g ] ( e ) ) return ! 1 ; return ! 0 } } , CKEDITOR . editor . prototype . addRemoveFormatFilter = function ( a ) { this . _ . removeFormatFilters || ( this . _ . removeFormatFilters = [ ] ) ; this . _ . removeFormatFilters . push ( a ) } , CKEDITOR . config . removeFormatTags = "b,big,cite,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var" ,
@ -848,7 +848,7 @@ CKEDITOR.config.removeFormatAttributes="class,style,lang,width,height,align,hspa
g . setStyles ( CKEDITOR . tools . extend ( { width : CKEDITOR . env . ie7Compat ? "99%" : "100%" , height : "100%" , resize : "none" , outline : "none" , "text-align" : "left" } , CKEDITOR . tools . cssVendorPrefix ( "tab-size" , e . config . sourceAreaTabSize || 4 ) ) ) ; g . setAttribute ( "dir" , "ltr" ) ; g . addClass ( "cke_source" ) . addClass ( "cke_reset" ) . addClass ( "cke_enable_context_menu" ) ; e . ui . space ( "contents" ) . append ( g ) ; g = e . editable ( new a ( e , g ) ) ; g . setData ( e . getData ( 1 ) ) ; CKEDITOR . env . ie && ( g . attachListener ( e , "resize" , c , g ) , g . attachListener ( CKEDITOR . document . getWindow ( ) ,
g . setStyles ( CKEDITOR . tools . extend ( { width : CKEDITOR . env . ie7Compat ? "99%" : "100%" , height : "100%" , resize : "none" , outline : "none" , "text-align" : "left" } , CKEDITOR . tools . cssVendorPrefix ( "tab-size" , e . config . sourceAreaTabSize || 4 ) ) ) ; g . setAttribute ( "dir" , "ltr" ) ; g . addClass ( "cke_source" ) . addClass ( "cke_reset" ) . addClass ( "cke_enable_context_menu" ) ; e . ui . space ( "contents" ) . append ( g ) ; g = e . editable ( new a ( e , g ) ) ; g . setData ( e . getData ( 1 ) ) ; CKEDITOR . env . ie && ( g . attachListener ( e , "resize" , c , g ) , g . attachListener ( CKEDITOR . document . getWindow ( ) ,
"resize" , c , g ) , CKEDITOR . tools . setTimeout ( c , 0 , g ) ) ; e . fire ( "ariaWidget" , this ) ; f ( ) } ) ; e . addCommand ( "source" , g . commands . source ) ; e . ui . addButton && e . ui . addButton ( "Source" , { label : e . lang . sourcearea . toolbar , command : "source" , toolbar : "mode,10" } ) ; e . on ( "mode" , function ( ) { e . getCommand ( "source" ) . setState ( "source" == e . mode ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) } ) ; var f = CKEDITOR . env . ie && 9 == CKEDITOR . env . version } } } ) ; var a = CKEDITOR . tools . createClass ( { base : CKEDITOR . editable , proto : { setData : function ( a ) { this . setValue ( a ) ;
"resize" , c , g ) , CKEDITOR . tools . setTimeout ( c , 0 , g ) ) ; e . fire ( "ariaWidget" , this ) ; f ( ) } ) ; e . addCommand ( "source" , g . commands . source ) ; e . ui . addButton && e . ui . addButton ( "Source" , { label : e . lang . sourcearea . toolbar , command : "source" , toolbar : "mode,10" } ) ; e . on ( "mode" , function ( ) { e . getCommand ( "source" ) . setState ( "source" == e . mode ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) } ) ; var f = CKEDITOR . env . ie && 9 == CKEDITOR . env . version } } } ) ; var a = CKEDITOR . tools . createClass ( { base : CKEDITOR . editable , proto : { setData : function ( a ) { this . setValue ( a ) ;
this . status = "ready" ; this . editor . fire ( "dataReady" ) } , getData : function ( ) { return this . getValue ( ) } , insertHtml : function ( ) { } , insertElement : function ( ) { } , insertText : function ( ) { } , setReadOnly : function ( a ) { this [ ( a ? "set" : "remove" ) + "Attribute" ] ( "readOnly" , "readonly" ) } , detach : function ( ) { a . baseProto . detach . call ( this ) ; this . clearCustomData ( ) ; this . remove ( ) } } } ) } ( ) , CKEDITOR . plugins . sourcearea = { commands : { source : { modes : { wysiwyg : 1 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( a ) { "wysiwyg" == a . mode && a . fire ( "saveSnapshot" ) ;
this . status = "ready" ; this . editor . fire ( "dataReady" ) } , getData : function ( ) { return this . getValue ( ) } , insertHtml : function ( ) { } , insertElement : function ( ) { } , insertText : function ( ) { } , setReadOnly : function ( a ) { this [ ( a ? "set" : "remove" ) + "Attribute" ] ( "readOnly" , "readonly" ) } , detach : function ( ) { a . baseProto . detach . call ( this ) ; this . clearCustomData ( ) ; this . remove ( ) } } } ) } ( ) , CKEDITOR . plugins . sourcearea = { commands : { source : { modes : { wysiwyg : 1 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( a ) { "wysiwyg" == a . mode && a . fire ( "saveSnapshot" ) ;
a . getCommand ( "source" ) . setState ( CKEDITOR . TRISTATE _DISABLED ) ; a . setMode ( "source" == a . mode ? "wysiwyg" : "source" ) } , canUndo : ! 1 } } } , CKEDITOR . plugins . add ( "specialchar" , { availableLangs : { af : 1 , ar : 1 , bg : 1 , ca : 1 , cs : 1 , cy : 1 , da : 1 , de : 1 , el : 1 , en : 1 , "en-gb" : 1 , eo : 1 , es : 1 , et : 1 , fa: 1 , fi : 1 , fr : 1 , "fr-ca" : 1 , gl : 1 , he : 1 , hr : 1 , hu : 1 , id : 1 , it : 1 , ja : 1 , km : 1 , ko : 1 , ku : 1 , lt : 1 , lv : 1 , nb : 1 , nl : 1 , no : 1 , pl : 1 , pt : 1 , "pt-br" : 1 , ru : 1 , si : 1 , sk : 1 , sl : 1 , sq : 1 , sv : 1 , th : 1 , tr : 1 , tt : 1 , ug : 1 , uk : 1 , vi : 1 , zh : 1 , "zh-cn" : 1 } , requires : "dialog" , init : function ( a ) { var e = this ; CKEDITOR . dialog . add ( "specialchar" ,
a . getCommand ( "source" ) . setState ( CKEDITOR . TRISTATE _DISABLED ) ; a . setMode ( "source" == a . mode ? "wysiwyg" : "source" ) } , canUndo : ! 1 } } } , CKEDITOR . plugins . add ( "specialchar" , { availableLangs : { af : 1 , ar : 1 , bg : 1 , ca : 1 , cs : 1 , cy : 1 , da : 1 , de : 1 , el : 1 , en : 1 , "en-gb" : 1 , eo : 1 , es : 1 , et : 1 , eu: 1 , fa: 1 , fi : 1 , fr : 1 , "fr-ca" : 1 , gl : 1 , he : 1 , hr : 1 , hu : 1 , id : 1 , it : 1 , ja : 1 , km : 1 , ko : 1 , ku : 1 , lt : 1 , lv : 1 , nb : 1 , nl : 1 , no : 1 , pl : 1 , pt : 1 , "pt-br" : 1 , ru : 1 , si : 1 , sk : 1 , sl : 1 , sq : 1 , sv : 1 , th : 1 , tr : 1 , tt : 1 , ug : 1 , uk : 1 , vi : 1 , zh : 1 , "zh-cn" : 1 } , requires : "dialog" , init : function ( a ) { var e = this ; CKEDITOR . dialog . add ( "specialchar" ,
this . path + "dialogs/specialchar.js" ) ; a . addCommand ( "specialchar" , { exec : function ( ) { var c = a . langCode , c = e . availableLangs [ c ] ? c : e . availableLangs [ c . replace ( /-.*/ , "" ) ] ? c . replace ( /-.*/ , "" ) : "en" ; CKEDITOR . scriptLoader . load ( CKEDITOR . getUrl ( e . path + "dialogs/lang/" + c + ".js" ) , function ( ) { CKEDITOR . tools . extend ( a . lang . specialchar , e . langEntries [ c ] ) ; a . openDialog ( "specialchar" ) } ) } , modes : { wysiwyg : 1 } , canUndo : ! 1 } ) ; a . ui . addButton && a . ui . addButton ( "SpecialChar" , { label : a . lang . specialchar . toolbar , command : "specialchar" , toolbar : "insert,50" } ) } } ) ,
this . path + "dialogs/specialchar.js" ) ; a . addCommand ( "specialchar" , { exec : function ( ) { var c = a . langCode , c = e . availableLangs [ c ] ? c : e . availableLangs [ c . replace ( /-.*/ , "" ) ] ? c . replace ( /-.*/ , "" ) : "en" ; CKEDITOR . scriptLoader . load ( CKEDITOR . getUrl ( e . path + "dialogs/lang/" + c + ".js" ) , function ( ) { CKEDITOR . tools . extend ( a . lang . specialchar , e . langEntries [ c ] ) ; a . openDialog ( "specialchar" ) } ) } , modes : { wysiwyg : 1 } , canUndo : ! 1 } ) ; a . ui . addButton && a . ui . addButton ( "SpecialChar" , { label : a . lang . specialchar . toolbar , command : "specialchar" , toolbar : "insert,50" } ) } } ) ,
CKEDITOR . config . specialChars = "! \x26quot; # $ % \x26amp; ' ( ) * + - . / 0 1 2 3 4 5 6 7 8 9 : ; \x26lt; \x3d \x26gt; ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x26euro; \x26lsquo; \x26rsquo; \x26ldquo; \x26rdquo; \x26ndash; \x26mdash; \x26iexcl; \x26cent; \x26pound; \x26curren; \x26yen; \x26brvbar; \x26sect; \x26uml; \x26copy; \x26ordf; \x26laquo; \x26not; \x26reg; \x26macr; \x26deg; \x26sup2; \x26sup3; \x26acute; \x26micro; \x26para; \x26middot; \x26cedil; \x26sup1; \x26ordm; \x26raquo; \x26frac14; \x26frac12; \x26frac34; \x26iquest; \x26Agrave; \x26Aacute; \x26Acirc; \x26Atilde; \x26Auml; \x26Aring; \x26AElig; \x26Ccedil; \x26Egrave; \x26Eacute; \x26Ecirc; \x26Euml; \x26Igrave; \x26Iacute; \x26Icirc; \x26Iuml; \x26ETH; \x26Ntilde; \x26Ograve; \x26Oacute; \x26Ocirc; \x26Otilde; \x26Ouml; \x26times; \x26Oslash; \x26Ugrave; \x26Uacute; \x26Ucirc; \x26Uuml; \x26Yacute; \x26THORN; \x26szlig; \x26agrave; \x26aacute; \x26acirc; \x26atilde; \x26auml; \x26aring; \x26aelig; \x26ccedil; \x26egrave; \x26eacute; \x26ecirc; \x26euml; \x26igrave; \x26iacute; \x26icirc; \x26iuml; \x26eth; \x26ntilde; \x26ograve; \x26oacute; \x26ocirc; \x26otilde; \x26ouml; \x26divide; \x26oslash; \x26ugrave; \x26uacute; \x26ucirc; \x26uuml; \x26yacute; \x26thorn; \x26yuml; \x26OElig; \x26oelig; \x26#372; \x26#374 \x26#373 \x26#375; \x26sbquo; \x26#8219; \x26bdquo; \x26hellip; \x26trade; \x26#9658; \x26bull; \x26rarr; \x26rArr; \x26hArr; \x26diams; \x26asymp;" . split ( " " ) ,
CKEDITOR . config . specialChars = "! \x26quot; # $ % \x26amp; ' ( ) * + - . / 0 1 2 3 4 5 6 7 8 9 : ; \x26lt; \x3d \x26gt; ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x26euro; \x26lsquo; \x26rsquo; \x26ldquo; \x26rdquo; \x26ndash; \x26mdash; \x26iexcl; \x26cent; \x26pound; \x26curren; \x26yen; \x26brvbar; \x26sect; \x26uml; \x26copy; \x26ordf; \x26laquo; \x26not; \x26reg; \x26macr; \x26deg; \x26sup2; \x26sup3; \x26acute; \x26micro; \x26para; \x26middot; \x26cedil; \x26sup1; \x26ordm; \x26raquo; \x26frac14; \x26frac12; \x26frac34; \x26iquest; \x26Agrave; \x26Aacute; \x26Acirc; \x26Atilde; \x26Auml; \x26Aring; \x26AElig; \x26Ccedil; \x26Egrave; \x26Eacute; \x26Ecirc; \x26Euml; \x26Igrave; \x26Iacute; \x26Icirc; \x26Iuml; \x26ETH; \x26Ntilde; \x26Ograve; \x26Oacute; \x26Ocirc; \x26Otilde; \x26Ouml; \x26times; \x26Oslash; \x26Ugrave; \x26Uacute; \x26Ucirc; \x26Uuml; \x26Yacute; \x26THORN; \x26szlig; \x26agrave; \x26aacute; \x26acirc; \x26atilde; \x26auml; \x26aring; \x26aelig; \x26ccedil; \x26egrave; \x26eacute; \x26ecirc; \x26euml; \x26igrave; \x26iacute; \x26icirc; \x26iuml; \x26eth; \x26ntilde; \x26ograve; \x26oacute; \x26ocirc; \x26otilde; \x26ouml; \x26divide; \x26oslash; \x26ugrave; \x26uacute; \x26ucirc; \x26uuml; \x26yacute; \x26thorn; \x26yuml; \x26OElig; \x26oelig; \x26#372; \x26#374 \x26#373 \x26#375; \x26sbquo; \x26#8219; \x26bdquo; \x26hellip; \x26trade; \x26#9658; \x26bull; \x26rarr; \x26rArr; \x26hArr; \x26diams; \x26asymp;" . split ( " " ) ,
function ( ) { CKEDITOR . plugins . add ( "stylescombo" , { requires : "richcombo" , init : function ( a ) { var e = a . config , c = a . lang . stylescombo , g = { } , f = [ ] , m = [ ] ; a . on ( "stylesSet" , function ( c ) { if ( c = c . data . styles ) { for ( var k , b , d , h = 0 , p = c . length ; h < p ; h ++ ) ( k = c [ h ] , a . blockless && k . element in CKEDITOR . dtd . $block || ( b = k . name , k = new CKEDITOR . style ( k ) , a . filter . customConfig && ! a . filter . check ( k ) ) ) || ( k . _name = b , k . _ . enterMode = e . enterMode , k . _ . type = d = k . assignedTo || k . type , k . _ . weight = h + 1E3 * ( d == CKEDITOR . STYLE _OBJECT ? 1 : d == CKEDITOR . STYLE _BLOCK ? 2 : 3 ) , g [ b ] =
function ( ) { CKEDITOR . plugins . add ( "stylescombo" , { requires : "richcombo" , init : function ( a ) { var e = a . config , c = a . lang . stylescombo , g = { } , f = [ ] , m = [ ] ; a . on ( "stylesSet" , function ( c ) { if ( c = c . data . styles ) { for ( var k , b , d , h = 0 , p = c . length ; h < p ; h ++ ) ( k = c [ h ] , a . blockless && k . element in CKEDITOR . dtd . $block || ( b = k . name , k = new CKEDITOR . style ( k ) , a . filter . customConfig && ! a . filter . check ( k ) ) ) || ( k . _name = b , k . _ . enterMode = e . enterMode , k . _ . type = d = k . assignedTo || k . type , k . _ . weight = h + 1E3 * ( d == CKEDITOR . STYLE _OBJECT ? 1 : d == CKEDITOR . STYLE _BLOCK ? 2 : 3 ) , g [ b ] =
@ -1011,7 +1011,7 @@ function(){function a(a){function b(){this.deflated||(a.widgets.focused==this.wi
return { allowedContent : d ( a ) , requiredContent : "img[src,alt]" , features : h ( a ) , styleableElements : "img figure" , contentTransformations : [ [ "img[width]: sizeToAttribute" ] ] , editables : { caption : { selector : "figcaption" , allowedContent : "br em strong sub sup u s; a[!href]" } } , parts : { image : "img" , caption : "figcaption" } , dialog : "image2" , template : '\x3cimg alt\x3d"" src\x3d"" /\x3e' , data : function ( ) { var c = this . features ; this . data . hasCaption && ! a . filter . checkFeature ( c . caption ) && ( this . data . hasCaption = ! 1 ) ; "none" == this . data . align ||
return { allowedContent : d ( a ) , requiredContent : "img[src,alt]" , features : h ( a ) , styleableElements : "img figure" , contentTransformations : [ [ "img[width]: sizeToAttribute" ] ] , editables : { caption : { selector : "figcaption" , allowedContent : "br em strong sub sup u s; a[!href]" } } , parts : { image : "img" , caption : "figcaption" } , dialog : "image2" , template : '\x3cimg alt\x3d"" src\x3d"" /\x3e' , data : function ( ) { var c = this . features ; this . data . hasCaption && ! a . filter . checkFeature ( c . caption ) && ( this . data . hasCaption = ! 1 ) ; "none" == this . data . align ||
a . filter . checkFeature ( c . align ) || ( this . data . align = "none" ) ; this . shiftState ( { widget : this , element : this . element , oldData : this . oldData , newData : this . data , deflate : b , inflate : f } ) ; this . data . link ? this . parts . link || ( this . parts . link = this . parts . image . getParent ( ) ) : this . parts . link && delete this . parts . link ; this . parts . image . setAttributes ( { src : this . data . src , "data-cke-saved-src" : this . data . src , alt : this . data . alt } ) ; if ( this . oldData && ! this . oldData . hasCaption && this . data . hasCaption ) for ( var d in this . data . classes ) this . parts . image . removeClass ( d ) ;
a . filter . checkFeature ( c . align ) || ( this . data . align = "none" ) ; this . shiftState ( { widget : this , element : this . element , oldData : this . oldData , newData : this . data , deflate : b , inflate : f } ) ; this . data . link ? this . parts . link || ( this . parts . link = this . parts . image . getParent ( ) ) : this . parts . link && delete this . parts . link ; this . parts . image . setAttributes ( { src : this . data . src , "data-cke-saved-src" : this . data . src , alt : this . data . alt } ) ; if ( this . oldData && ! this . oldData . hasCaption && this . data . hasCaption ) for ( var d in this . data . classes ) this . parts . image . removeClass ( d ) ;
if ( a . filter . checkFeature ( c . dimension ) ) { c = this . data ; c = { width : c . width , height : c . height } ; d = this . parts . image ; for ( var e in c ) c [ e ] ? d . setAttribute ( e , c [ e ] ) : d . removeAttribute ( e ) } this . oldData = CKEDITOR . tools . extend ( { } , this . data ) } , init : function ( ) { var b = CKEDITOR . plugins . image2 , c = this . parts . image , d = { hasCaption : ! ! this . parts . caption , src : c . getAttribute ( "src" ) , alt : c . getAttribute ( "alt" ) || "" , width : c . getAttribute ( "width" ) || "" , height : c . getAttribute ( "height" ) || "" , lock : this . ready ? b . checkHasNaturalRatio ( c ) : ! 0 } , e = c . getAscendant ( "a" ) ;
if ( a . filter . checkFeature ( c . dimension ) ) { c = this . data ; c = { width : c . width , height : c . height } ; d = this . parts . image ; for ( var e in c ) c [ e ] ? d . setAttribute ( e , c [ e ] ) : d . removeAttribute ( e ) } this . oldData = CKEDITOR . tools . extend ( { } , this . data ) } , init : function ( ) { var b = CKEDITOR . plugins . image2 , c = this . parts . image , d = { hasCaption : ! ! this . parts . caption , src : c . getAttribute ( "src" ) , alt : c . getAttribute ( "alt" ) || "" , width : c . getAttribute ( "width" ) || "" , height : c . getAttribute ( "height" ) || "" , lock : this . ready ? b . checkHasNaturalRatio ( c ) : ! 0 } , e = c . getAscendant ( "a" ) ;
e && this . wrapper . contains ( e ) && ( this . parts . link = e ) ; d . align || ( c = d . hasCaption ? this . element : c , g ? ( c . hasClass ( g [ 0 ] ) ? d . align = "left" : c . hasClass ( g [ 2 ] ) && ( d . align = "right" ) , d . align ? c . removeClass ( g [ u [ d . align ] ] ) : d . align = "none" ) : ( d . align = c . getStyle ( "float" ) || "none" , c . removeStyle ( "float" ) ) ) ; a . plugins . link && this . parts . link && ( d . link = CKEDITOR. plugins . link . parseLinkAttributes ( a , this . parts . link ) , ( c = d . link . advanced ) && c . advCSSClasses && ( c . advCSSClasses = CKEDITOR . tools . trim ( c . advCSSClasses . replace ( /cke_\S+/ , "" ) ) ) ) ; this . wrapper [ ( d . hasCaption ?
e && this . wrapper . contains ( e ) && ( this . parts . link = e ) ; d . align || ( c = d . hasCaption ? this . element : c , g ? ( c . hasClass ( g [ 0 ] ) ? d . align = "left" : c . hasClass ( g [ 2 ] ) && ( d . align = "right" ) , d . align ? c . removeClass ( g [ u [ d . align ] ] ) : d . align = "none" ) : ( d . align = c . getStyle ( "float" ) || "none" , c . removeStyle ( "float" ) ) ) ; a . plugins . link && this . parts . link && ( d . link = b. getLinkAttributesParser ( ) ( a , this . parts . link ) , ( c = d . link . advanced ) && c . advCSSClasses && ( c . advCSSClasses = CKEDITOR . tools . trim ( c . advCSSClasses . replace ( /cke_\S+/ , "" ) ) ) ) ; this . wrapper [ ( d . hasCaption ?
"remove" : "add" ) + "Class" ] ( "cke_image_nocaption" ) ; this . setData ( d ) ; a . filter . checkFeature ( this . features . dimension ) && ! 0 !== a . config . image2 _disableResizer && m ( this ) ; this . shiftState = b . stateShifter ( this . editor ) ; this . on ( "contextMenu" , function ( a ) { a . data . image = CKEDITOR . TRISTATE _OFF ; if ( this . parts . link || this . wrapper . getAscendant ( "a" ) ) a . data . link = a . data . unlink = CKEDITOR . TRISTATE _OFF } ) ; this . on ( "dialog" , function ( a ) { a . data . widget = this } , this ) } , addClass : function ( a ) { p ( this ) . addClass ( a ) } , hasClass : function ( a ) { return p ( this ) . hasClass ( a ) } ,
"remove" : "add" ) + "Class" ] ( "cke_image_nocaption" ) ; this . setData ( d ) ; a . filter . checkFeature ( this . features . dimension ) && ! 0 !== a . config . image2 _disableResizer && m ( this ) ; this . shiftState = b . stateShifter ( this . editor ) ; this . on ( "contextMenu" , function ( a ) { a . data . image = CKEDITOR . TRISTATE _OFF ; if ( this . parts . link || this . wrapper . getAscendant ( "a" ) ) a . data . link = a . data . unlink = CKEDITOR . TRISTATE _OFF } ) ; this . on ( "dialog" , function ( a ) { a . data . widget = this } , this ) } , addClass : function ( a ) { p ( this ) . addClass ( a ) } , hasClass : function ( a ) { return p ( this ) . hasClass ( a ) } ,
removeClass : function ( a ) { p ( this ) . removeClass ( a ) } , getClasses : function ( ) { var a = new RegExp ( "^(" + [ ] . concat ( k , g ) . join ( "|" ) + ")$" ) ; return function ( ) { var b = this . repository . parseElementClasses ( p ( this ) . getAttribute ( "class" ) ) , c ; for ( c in b ) a . test ( c ) && delete b [ c ] ; return b } } ( ) , upcast : e ( a ) , downcast : c ( a ) } } function e ( a ) { var b = g ( a ) , c = a . config . image2 _captionedClass ; return function ( a , d ) { var e = { width : 1 , height : 1 } , g = a . name , h ; if ( ! a . attributes [ "data-cke-realelement" ] && ( b ( a ) ? ( "div" == g && ( h = a . getFirst ( "figure" ) ) && ( a . replaceWith ( h ) ,
removeClass : function ( a ) { p ( this ) . removeClass ( a ) } , getClasses : function ( ) { var a = new RegExp ( "^(" + [ ] . concat ( k , g ) . join ( "|" ) + ")$" ) ; return function ( ) { var b = this . repository . parseElementClasses ( p ( this ) . getAttribute ( "class" ) ) , c ; for ( c in b ) a . test ( c ) && delete b [ c ] ; return b } } ( ) , upcast : e ( a ) , downcast : c ( a ) } } function e ( a ) { var b = g ( a ) , c = a . config . image2 _captionedClass ; return function ( a , d ) { var e = { width : 1 , height : 1 } , g = a . name , h ; if ( ! a . attributes [ "data-cke-realelement" ] && ( b ( a ) ? ( "div" == g && ( h = a . getFirst ( "figure" ) ) && ( a . replaceWith ( h ) ,
a = h ) , d . align = "center" , h = a . getFirst ( "img" ) || a . getFirst ( "a" ) . getFirst ( "img" ) ) : "figure" == g && a . hasClass ( c ) ? h = a . getFirst ( "img" ) || a . getFirst ( "a" ) . getFirst ( "img" ) : f ( a ) && ( h = "a" == a . name ? a . children [ 0 ] : a ) , h ) ) { for ( var k in e ) ( e = h . attributes [ k ] ) && e . match ( t ) && delete h . attributes [ k ] ; return a } } } function c ( a ) { var b = a . config . image2 _alignClasses ; return function ( a ) { var c = "a" == a . name ? a . getFirst ( ) : a , d = c . attributes , e = this . data . align ; if ( ! this . inline ) { var f = a . getFirst ( "span" ) ; f && f . replaceWith ( f . getFirst ( { img : 1 , a : 1 } ) ) } e &&
a = h ) , d . align = "center" , h = a . getFirst ( "img" ) || a . getFirst ( "a" ) . getFirst ( "img" ) ) : "figure" == g && a . hasClass ( c ) ? h = a . getFirst ( "img" ) || a . getFirst ( "a" ) . getFirst ( "img" ) : f ( a ) && ( h = "a" == a . name ? a . children [ 0 ] : a ) , h ) ) { for ( var k in e ) ( e = h . attributes [ k ] ) && e . match ( t ) && delete h . attributes [ k ] ; return a } } } function c ( a ) { var b = a . config . image2 _alignClasses ; return function ( a ) { var c = "a" == a . name ? a . getFirst ( ) : a , d = c . attributes , e = this . data . align ; if ( ! this . inline ) { var f = a . getFirst ( "span" ) ; f && f . replaceWith ( f . getFirst ( { img : 1 , a : 1 } ) ) } e &&
@ -1029,9 +1029,9 @@ init:function(b){var c=b.config,d=b.lang.image2,e=a(b);c.filebrowserImage2Browse
this . path + "dialogs/image2.js" ) } , afterInit : function ( a ) { var b = { left : 1 , right : 1 , center : 1 , block : 1 } , c = l ( a ) , d ; for ( d in b ) c ( d ) ; k ( a ) } } ) ; CKEDITOR . plugins . image2 = { stateShifter : function ( a ) { function b ( a , f ) { var g = { } ; e ? g . attributes = { "class" : e [ 1 ] } : g . styles = { "text-align" : "center" } ; g = d . createElement ( a . activeEnterMode == CKEDITOR . ENTER _P ? "p" : "div" , g ) ; c ( g , f ) ; f . move ( g ) ; return g } function c ( b , d ) { if ( d . getParent ( ) ) { var e = a . createRange ( ) ; e . moveToPosition ( d , CKEDITOR . POSITION _BEFORE _START ) ; d . remove ( ) ; g . insertElementIntoRange ( b ,
this . path + "dialogs/image2.js" ) } , afterInit : function ( a ) { var b = { left : 1 , right : 1 , center : 1 , block : 1 } , c = l ( a ) , d ; for ( d in b ) c ( d ) ; k ( a ) } } ) ; CKEDITOR . plugins . image2 = { stateShifter : function ( a ) { function b ( a , f ) { var g = { } ; e ? g . attributes = { "class" : e [ 1 ] } : g . styles = { "text-align" : "center" } ; g = d . createElement ( a . activeEnterMode == CKEDITOR . ENTER _P ? "p" : "div" , g ) ; c ( g , f ) ; f . move ( g ) ; return g } function c ( b , d ) { if ( d . getParent ( ) ) { var e = a . createRange ( ) ; e . moveToPosition ( d , CKEDITOR . POSITION _BEFORE _START ) ; d . remove ( ) ; g . insertElementIntoRange ( b ,
e ) } else b . replace ( d ) } var d = a . document , e = a . config . image2 _alignClasses , f = a . config . image2 _captionedClass , g = a . editable ( ) , h = [ "hasCaption" , "align" , "link" ] , k = { align : function ( c , d , f ) { var g = c . element ; c . changed . align ? c . newData . hasCaption || ( "center" == f && ( c . deflate ( ) , c . element = b ( a , g ) ) , c . changed . hasCaption || "center" != d || "center" == f || ( c . deflate ( ) , d = g . findOne ( "a,img" ) , d . replace ( g ) , c . element = d ) ) : "center" == f && c . changed . hasCaption && ! c . newData . hasCaption && ( c . deflate ( ) , c . element = b ( a , g ) ) ; ! e && g . is ( "figure" ) && ( "center" ==
e ) } else b . replace ( d ) } var d = a . document , e = a . config . image2 _alignClasses , f = a . config . image2 _captionedClass , g = a . editable ( ) , h = [ "hasCaption" , "align" , "link" ] , k = { align : function ( c , d , f ) { var g = c . element ; c . changed . align ? c . newData . hasCaption || ( "center" == f && ( c . deflate ( ) , c . element = b ( a , g ) ) , c . changed . hasCaption || "center" != d || "center" == f || ( c . deflate ( ) , d = g . findOne ( "a,img" ) , d . replace ( g ) , c . element = d ) ) : "center" == f && c . changed . hasCaption && ! c . newData . hasCaption && ( c . deflate ( ) , c . element = b ( a , g ) ) ; ! e && g . is ( "figure" ) && ( "center" ==
f ? g . setStyle ( "display" , "inline-block" ) : g . removeStyle ( "display" ) ) } , hasCaption : function ( b , e , g ) { b . changed . hasCaption && ( e = b . element . is ( { img : 1 , a : 1 } ) ? b . element : b . element . findOne ( "a,img" ) , b . deflate ( ) , g ? ( g = CKEDITOR . dom . element . createFromHtml ( v . output ( { captionedClass : f , captionPlaceholder : a . lang . image2 . captionPlaceholder } ) , d ) , c ( g , b . element ) , e . replace ( g . findOne ( "img" ) ) , b . element = g ) : ( e . replace ( b . element ) , b . element = e ) ) } , link : function ( b , c , e ) { if ( b . changed . link ) { var f = b . element . is ( "img" ) ? b . element : b . element . findOne ( "img" ) ,
f ? g . setStyle ( "display" , "inline-block" ) : g . removeStyle ( "display" ) ) } , hasCaption : function ( b , e , g ) { b . changed . hasCaption && ( e = b . element . is ( { img : 1 , a : 1 } ) ? b . element : b . element . findOne ( "a,img" ) , b . deflate ( ) , g ? ( g = CKEDITOR . dom . element . createFromHtml ( v . output ( { captionedClass : f , captionPlaceholder : a . lang . image2 . captionPlaceholder } ) , d ) , c ( g , b . element ) , e . replace ( g . findOne ( "img" ) ) , b . element = g ) : ( e . replace ( b . element ) , b . element = e ) ) } , link : function ( b , c , e ) { if ( b . changed . link ) { var f = b . element . is ( "img" ) ? b . element : b . element . findOne ( "img" ) ,
g = b . element . is ( "a" ) ? b . element : b . element . findOne ( "a" ) , h = b . element . is ( "a" ) && ! e || b . element . is ( "img" ) && e , k ; h && b . deflate ( ) ; e ? ( c || ( k = d . createElement ( "a" , { attributes : { href : b . newData . link . url } } ) , k . replace ( f ) , f . move ( k ) ) , e = CKEDITOR . plugins . link. getLinkAttributes ( a , e ) , CKEDITOR . tools . isEmpty ( e . set ) || ( k || g ) . setAttributes ( e . set ) , e . removed . length && ( k || g ) . removeAttributes ( e . removed ) ) : ( e = g . findOne ( "img" ) , e . replace ( g ) , k = e ) ; h && ( b . element = k ) } } } ; return function ( a ) { var b , c ; a . changed = { } ; for ( c = 0 ; c < h . length ; c ++ ) b = h [ c ] , a . changed [ b ] =
g = b . element . is ( "a" ) ? b . element : b . element . findOne ( "a" ) , h = b . element . is ( "a" ) && ! e || b . element . is ( "img" ) && e , k ; h && b . deflate ( ) ; e ? ( c || ( k = d . createElement ( "a" , { attributes : { href : b . newData . link . url } } ) , k . replace ( f ) , f . move ( k ) ) , e = CKEDITOR . plugins . image2. getLinkAttributesGetter ( ) ( a , e ) , CKEDITOR . tools . isEmpty ( e . set ) || ( k || g ) . setAttributes ( e . set ) , e . removed . length && ( k || g ) . removeAttributes ( e . removed ) ) : ( e = g . findOne ( "img" ) , e . replace ( g ) , k = e ) ; h && ( b . element = k ) } } } ; return function ( a ) { var b , c ; a . changed = { } ; for ( c = 0 ; c < h . length ; c ++ ) b =
a . oldData ? a . oldData [ b ] !== a . newData [ b ] : ! 1 ; for ( c = 0 ; c < h . length ; c ++ ) b = h [ c ] , k [ b ] ( a , a . oldData ? a . oldData [ b ] : null , a . newData [ b ] ) ; a . inflate ( ) } } , checkHasNaturalRatio : function ( a ) { var b = a . $ ; a = this . getNatural ( a ) ; return Math . round ( b . clientWidth / a . width * a . height ) == b . clientHeight || Math . round ( b . clientHeight / a . height * a . width ) == b . clientWidth } , getNatural : function ( a ) { if ( a . $ . naturalWidth ) a = { width : a . $ . naturalWidth , height : a . $ . naturalHeight } ; else { var b = new Image ; b . src = a . getAttribute ( "src" ) ; a = { width : b . width , height : b . height } } return a } } } ( ) ,
h [ c ] , a . changed [ b ] = a . oldData ? a . oldData [ b ] !== a . newData [ b ] : ! 1 ; for ( c = 0 ; c < h . length ; c ++ ) b = h [ c ] , k [ b ] ( a , a . oldData ? a . oldData [ b ] : null , a . newData [ b ] ) ; a . inflate ( ) } } , checkHasNaturalRatio : function ( a ) { var b = a . $ ; a = this . getNatural ( a ) ; return Math . round ( b . clientWidth / a . width * a . height ) == b . clientHeight || Math . round ( b . clientHeight / a . height * a . width ) == b . clientWidth } , getNatural : function ( a ) { if ( a . $ . naturalWidth ) a = { width : a . $ . naturalWidth , height : a . $ . naturalHeight } ; else { var b = new Image ; b . src = a . getAttribute ( "src" ) ; a = { width : b . width ,
CKEDITOR . config . image2 _captionedClass = "image" , CKEDITOR . config . plugins = "dialogui,dialog,about,a11yhelp,basicstyles,blockquote,clipboard,panel,floatpanel,menu,contextmenu,resize,button,toolbar,elementspath,enterkey,entities,popup,filebrowser,floatingspace,listblock,richcombo,format,htmlwriter,horizontalrule,wysiwygarea,indent,indentlist,list,magicline,maximize,pastetext,pastefromword,removeformat,sourcearea,specialchar,stylescombo,tab,table,tabletools,undo,justify,showblocks,showborders,tableresize,sharedspace,sourcedialog,lineutils,widget,image2" ,
height : b . height } } return a } , getLinkAttributesGetter : function ( ) { return CKEDITOR . plugins . link . getLinkAttributes } , getLinkAttributesParser : function ( ) { return CKEDITOR . plugins . link . parseLinkAttributes } } } ( ) , CKEDITOR . config . image2 _captionedClass = "image" , CKEDITOR . config . plugins = "dialogui,dialog,about,a11yhelp,basicstyles,blockquote,clipboard,panel,floatpanel,menu,contextmenu,resize,button,toolbar,elementspath,enterkey,entities,popup,filebrowser,floatingspace,listblock,richcombo,format,htmlwriter,horizontalrule,wysiwygarea,indent,indentlist,list,magicline,maximize,pastetext,pastefromword,removeformat,sourcearea,specialchar,stylescombo,tab,table,tabletools,undo,justify,showblocks,showborders,tableresize,sharedspace,sourcedialog,lineutils,widget,image2" ,
CKEDITOR . config . skin = "moono" , function ( ) { var a = function ( a , c ) { var g = CKEDITOR . getUrl ( "plugins/" + c ) ; a = a . split ( "," ) ; for ( var f = 0 ; f < a . length ; f ++ ) CKEDITOR . skin . icons [ a [ f ] ] = { path : g , offset : - a [ ++ f ] , bgsize : a [ ++ f ] } } ; CKEDITOR . env . hidpi ? a ( "about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,blockquote,168,,copy-rtl,192,,copy,216,,cut-rtl,240,,cut,264,,paste-rtl,288,,paste,312,,horizontalrule,336,,image,360,,indent-rtl,384,,indent,408,,outdent-rtl,432,,outdent,456,,justifyblock,480,,justifycenter,504,,justifyleft,528,,justifyright,552,,bulletedlist-rtl,576,,bulletedlist,600,,numberedlist-rtl,624,,numberedlist,648,,maximize,672,,pastefromword-rtl,696,,pastefromword,720,,pastetext-rtl,744,,pastetext,768,,removeformat,792,,showblocks-rtl,816,,showblocks,840,,source-rtl,864,,source,888,,sourcedialog-rtl,912,,sourcedialog,936,,specialchar,960,,table,984,,redo-rtl,1008,,redo,1032,,undo-rtl,1056,,undo,1080,,simplebox,2208,auto" ,
CKEDITOR . config . skin = "moono" , function ( ) { var a = function ( a , c ) { var g = CKEDITOR . getUrl ( "plugins/" + c ) ; a = a . split ( "," ) ; for ( var f = 0 ; f < a . length ; f ++ ) CKEDITOR . skin . icons [ a [ f ] ] = { path : g , offset : - a [ ++ f ] , bgsize : a [ ++ f ] } } ; CKEDITOR . env . hidpi ? a ( "about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,blockquote,168,,copy-rtl,192,,copy,216,,cut-rtl,240,,cut,264,,paste-rtl,288,,paste,312,,horizontalrule,336,,image,360,,indent-rtl,384,,indent,408,,outdent-rtl,432,,outdent,456,,justifyblock,480,,justifycenter,504,,justifyleft,528,,justifyright,552,,bulletedlist-rtl,576,,bulletedlist,600,,numberedlist-rtl,624,,numberedlist,648,,maximize,672,,pastefromword-rtl,696,,pastefromword,720,,pastetext-rtl,744,,pastetext,768,,removeformat,792,,showblocks-rtl,816,,showblocks,840,,source-rtl,864,,source,888,,sourcedialog-rtl,912,,sourcedialog,936,,specialchar,960,,table,984,,redo-rtl,1008,,redo,1032,,undo-rtl,1056,,undo,1080,,simplebox,2208,auto" ,
"icons_hidpi.png" ) : a ( "about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,blockquote,168,auto,copy-rtl,192,auto,copy,216,auto,cut-rtl,240,auto,cut,264,auto,paste-rtl,288,auto,paste,312,auto,horizontalrule,336,auto,image,360,auto,indent-rtl,384,auto,indent,408,auto,outdent-rtl,432,auto,outdent,456,auto,justifyblock,480,auto,justifycenter,504,auto,justifyleft,528,auto,justifyright,552,auto,bulletedlist-rtl,576,auto,bulletedlist,600,auto,numberedlist-rtl,624,auto,numberedlist,648,auto,maximize,672,auto,pastefromword-rtl,696,auto,pastefromword,720,auto,pastetext-rtl,744,auto,pastetext,768,auto,removeformat,792,auto,showblocks-rtl,816,auto,showblocks,840,auto,source-rtl,864,auto,source,888,auto,sourcedialog-rtl,912,auto,sourcedialog,936,auto,specialchar,960,auto,table,984,auto,redo-rtl,1008,auto,redo,1032,auto,undo-rtl,1056,auto,undo,1080,auto,simplebox,1104,auto" ,
"icons_hidpi.png" ) : a ( "about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,blockquote,168,auto,copy-rtl,192,auto,copy,216,auto,cut-rtl,240,auto,cut,264,auto,paste-rtl,288,auto,paste,312,auto,horizontalrule,336,auto,image,360,auto,indent-rtl,384,auto,indent,408,auto,outdent-rtl,432,auto,outdent,456,auto,justifyblock,480,auto,justifycenter,504,auto,justifyleft,528,auto,justifyright,552,auto,bulletedlist-rtl,576,auto,bulletedlist,600,auto,numberedlist-rtl,624,auto,numberedlist,648,auto,maximize,672,auto,pastefromword-rtl,696,auto,pastefromword,720,auto,pastetext-rtl,744,auto,pastetext,768,auto,removeformat,792,auto,showblocks-rtl,816,auto,showblocks,840,auto,source-rtl,864,auto,source,888,auto,sourcedialog-rtl,912,auto,sourcedialog,936,auto,specialchar,960,auto,table,984,auto,redo-rtl,1008,auto,redo,1032,auto,undo-rtl,1056,auto,undo,1080,auto,simplebox,1104,auto" ,
"icons.png" ) } ( ) ) } ) ( ) ;
"icons.png" ) } ( ) ) } ) ( ) ;