@ -1,8 +1,8 @@
/ *
Copyright ( c ) 2003 - 202 2 , CKSource Holding sp . z o . o . All rights reserved .
Copyright ( c ) 2003 - 202 3 , CKSource Holding sp . z o . o . All rights reserved .
For licensing , see LICENSE . md or https : //ckeditor.com/legal/ckeditor-oss-license/
* /
( function ( ) { if ( window . CKEDITOR && window . CKEDITOR . dom ) return ; window . CKEDITOR || ( window . CKEDITOR = function ( ) { var a = /(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i , d = { timestamp : " MAUD", version : "4.20.1" , revision : "b520aa2b40 ", rnd : Math . floor ( 900 * Math . random ( ) ) + 100 , _ : { pending : [ ] , basePathSrcPattern : a } , status : "unloaded" , basePath : function ( ) { var b = window . CKEDITOR _BASEPATH || "" ; if ( ! b ) for ( var c = document . getElementsByTagName ( "script" ) , d = 0 ; d < c . length ; d ++ ) { var h = c [ d ] . src . match ( a ) ; if ( h ) { b = h [ 1 ] ; break } } - 1 == b . indexOf ( ":/" ) && "//" != b . slice ( 0 , 2 ) && ( b = 0 === b . indexOf ( "/" ) ? location . href . match ( /^.*?:\/\/[^\/]*/ ) [ 0 ] +
( function ( ) { if ( window . CKEDITOR && window . CKEDITOR . dom ) return ; window . CKEDITOR || ( window . CKEDITOR = function ( ) { var a = /(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i , d = { timestamp : " N2M9", version : "4.21.0" , revision : "d529d176d7 ", rnd : Math . floor ( 900 * Math . random ( ) ) + 100 , _ : { pending : [ ] , basePathSrcPattern : a } , status : "unloaded" , basePath : function ( ) { var b = window . CKEDITOR _BASEPATH || "" ; if ( ! b ) for ( var c = document . getElementsByTagName ( "script" ) , d = 0 ; d < c . length ; d ++ ) { var h = c [ d ] . src . match ( a ) ; if ( h ) { b = h [ 1 ] ; break } } - 1 == b . indexOf ( ":/" ) && "//" != b . slice ( 0 , 2 ) && ( b = 0 === b . indexOf ( "/" ) ? location . href . match ( /^.*?:\/\/[^\/]*/ ) [ 0 ] +
b : location . href . match ( /^[^\?]*\/(?:)/ ) [ 0 ] + b ) ; if ( ! b ) throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.' ; return b } ( ) , getUrl : function ( a ) { - 1 == a . indexOf ( ":/" ) && 0 !== a . indexOf ( "/" ) && ( a = this . basePath + a ) ; return a = this . appendTimestamp ( a ) } , appendTimestamp : function ( a ) { if ( ! this . timestamp || "/" === a . charAt ( a . length - 1 ) || /[&?]t=/ . test ( a ) ) return a ; var b = 0 <= a . indexOf ( "?" ) ? "\x26" : "?" ; return a + b + "t\x3d" + this . timestamp } ,
domReady : function ( ) { function a ( ) { try { document . addEventListener ? ( document . removeEventListener ( "DOMContentLoaded" , a , ! 1 ) , window . removeEventListener ( "load" , a , ! 1 ) , b ( ) ) : document . attachEvent && "complete" === document . readyState && ( document . detachEvent ( "onreadystatechange" , a ) , window . detachEvent ( "onload" , a ) , b ( ) ) } catch ( c ) { } } function b ( ) { for ( var a ; a = c . shift ( ) ; ) a ( ) } var c = [ ] ; return function ( b ) { function e ( ) { try { document . documentElement . doScroll ( "left" ) } catch ( b ) { setTimeout ( e , 1 ) ; return } a ( ) } c . push ( b ) ; "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 ) ; b = ! 1 ; try { b = ! window . frameElement } catch ( d ) { } document . documentElement . doScroll && b && e ( ) } } } ( ) } , b = window . CKEDITOR _GETURL ; if ( b ) { var c = d . getUrl ; d . getUrl = function ( a ) { return b . call ( d , a ) || c . call ( d , a ) } } return d } ( ) ) ;
@ -572,7 +572,7 @@ c(this,"panel"));a=[[p,a]];f([b],d,a);f(h,e,a)}).call(this,a)}});var k="cke_ui_c
[ [ p , a ] ] ) } } ; b . on ( "panelShow" , a ) ; b . on ( "menuShow" , a ) ; b . config . uiColor && b . setUiColor ( b . config . uiColor ) } } ) } ) ( ) ;
( function ( ) { 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 d = a . getComputedStyle ( "border-top-color" ) , b = a . getComputedStyle ( "border-right-color" ) ; CKEDITOR . env . hc = ! ( ! d || d != b ) } catch ( c ) { 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 , d = 0 ; d < a . length ; d ++ ) CKEDITOR . editor . prototype . constructor . apply ( a [ d ] [ 0 ] , a [ d ] [ 1 ] ) , CKEDITOR . add ( a [ d ] [ 0 ] ) } ) ( ) ; / *
Copyright ( c ) 2003 - 202 2 , CKSource Holding sp . z o . o . All rights reserved .
Copyright ( c ) 2003 - 202 3 , CKSource Holding sp . z o . o . All rights reserved .
For licensing , see LICENSE . md or https : //ckeditor.com/legal/ckeditor-oss-license
* /
CKEDITOR . skin . name = "moono" ; CKEDITOR . skin . ua _editor = "ie,iequirks,ie7,ie8,gecko" ; CKEDITOR . skin . ua _dialog = "ie,iequirks,ie7,ie8" ;
@ -589,44 +589,44 @@ tr:1,ol:1,ul:1};a[d.getName()];)d=d.getParent();for(b=null;0<e.length;){for(a=e.
for ( d = { } ; a = f . getNextParagraph ( ) ; ) { for ( e = c = null ; a . getParent ( ) ; ) { if ( "blockquote" == a . getParent ( ) . getName ( ) ) { c = a . getParent ( ) ; e = a ; break } a = a . getParent ( ) } c && e && ! e . getCustomData ( "blockquote_moveout" ) && ( b . push ( e ) , CKEDITOR . dom . element . setMarker ( d , e , "blockquote_moveout" , ! 0 ) ) } CKEDITOR . dom . element . clearAllMarkers ( d ) ; a = [ ] ; e = [ ] ; for ( d = { } ; 0 < b . length ; ) f = b . shift ( ) , c = f . getParent ( ) , f . getPrevious ( ) ? f . getNext ( ) ? ( f . breakParent ( f . getParent ( ) ) , e . push ( f . getNext ( ) ) ) : f . remove ( ) . insertAfter ( c ) : f . remove ( ) . insertBefore ( c ) , c . getCustomData ( "blockquote_processed" ) ||
( e . push ( c ) , CKEDITOR . dom . element . setMarker ( d , c , "blockquote_processed" , ! 0 ) ) , a . push ( f ) ; CKEDITOR . dom . element . clearAllMarkers ( d ) ; for ( b = e . length - 1 ; 0 <= b ; b -- ) { c = e [ b ] ; a : { d = c ; for ( var f = 0 , m = d . getChildCount ( ) , l = void 0 ; f < m && ( l = d . getChild ( f ) ) ; f ++ ) if ( l . type == CKEDITOR . NODE _ELEMENT && l . isBlockBoundary ( ) ) { d = ! 1 ; break a } d = ! 0 } d && c . remove ( ) } if ( g . config . enterMode == CKEDITOR . ENTER _BR ) for ( c = ! 0 ; a . length ; ) if ( f = a . shift ( ) , "div" == f . getName ( ) ) { b = new CKEDITOR . dom . documentFragment ( g . document ) ; ! c || ! f . getPrevious ( ) || f . getPrevious ( ) . type ==
CKEDITOR . NODE _ELEMENT && f . getPrevious ( ) . isBlockBoundary ( ) || b . append ( g . document . createElement ( "br" ) ) ; for ( c = f . getNext ( ) && ! ( f . getNext ( ) . type == CKEDITOR . NODE _ELEMENT && f . getNext ( ) . isBlockBoundary ( ) ) ; f . getFirst ( ) ; ) f . getFirst ( ) . remove ( ) . appendTo ( b ) ; c && b . append ( g . document . createElement ( "br" ) ) ; b . replace ( f ) ; c = ! 1 } } k . selectBookmarks ( h ) ; g . focus ( ) } } , refresh : function ( g , a ) { this . setState ( g . elementPath ( a . block || a . blockLimit ) . contains ( "blockquote" , 1 ) ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) } , context : "blockquote" , allowedContent : "blockquote" ,
requiredContent : "blockquote" } ; CKEDITOR . plugins . add ( "blockquote" , { init : function ( g ) { g . blockless || ( g . addCommand ( "blockquote" , m ) , g . ui . addButton && g . ui . addButton ( "Blockquote" , { isToggle : ! 0 , label : g . lang . blockquote . toolbar , command : "blockquote" , toolbar : "blocks,10" } ) ) } } ) } ) ( ) ; CKEDITOR . plugins . add ( "dialogui" , { onLoad : function ( ) { var h = function ( b ) { this . _ || ( this . _ = { } ) ; this . _ [ "default" ] = this . _ . initValue = b [ "default" ] || "" ; this . _ . required = b . required || ! 1 ; for ( var a = [ this . _ ] , d = 1 ; d < arguments . length ; d ++ ) a . push ( arguments [ d ] ) ; a . push ( ! 0 ) ; CKEDITOR . tools . extend . apply ( CKEDITOR . tools , a ) ; return this . _ } , r = { build : function ( b , a , d ) { return new CKEDITOR . ui . dialog . textInput ( b , a , d ) } } , n = { build : function ( b , a , d ) { return new CKEDITOR . ui . dialog [ a . type ] ( b , a , d ) } } , q = { isChanged : function ( ) { return this . getValue ( ) !=
requiredContent : "blockquote" } ; CKEDITOR . plugins . add ( "blockquote" , { init : function ( g ) { g . blockless || ( g . addCommand ( "blockquote" , m ) , g . ui . addButton && g . ui . addButton ( "Blockquote" , { isToggle : ! 0 , label : g . lang . blockquote . toolbar , command : "blockquote" , toolbar : "blocks,10" } ) ) } } ) } ) ( ) ; CKEDITOR . plugins . add ( "dialogui" , { onLoad : function ( ) { var k = function ( b ) { this . _ || ( this . _ = { } ) ; this . _ [ "default" ] = this . _ . initValue = b [ "default" ] || "" ; this . _ . required = b . required || ! 1 ; for ( var a = [ this . _ ] , d = 1 ; d < arguments . length ; d ++ ) a . push ( arguments [ d ] ) ; a . push ( ! 0 ) ; CKEDITOR . tools . extend . apply ( CKEDITOR . tools , a ) ; return this . _ } , r = { build : function ( b , a , d ) { return new CKEDITOR . ui . dialog . textInput ( b , a , d ) } } , m = { build : function ( b , a , d ) { return new CKEDITOR . ui . dialog [ a . type ] ( b , a , d ) } } , q = { isChanged : function ( ) { return this . getValue ( ) !=
this . getInitValue ( ) } , reset : function ( b ) { this . setValue ( this . getInitValue ( ) , b ) } , setInitValue : function ( ) { this . _ . initValue = this . getValue ( ) } , resetInitValue : function ( ) { this . _ . initValue = this . _ [ "default" ] } , getInitValue : function ( ) { return this . _ . initValue } } , v = CKEDITOR . tools . extend ( { } , CKEDITOR . ui . dialog . uiElement . prototype . eventProcessors , { onChange : function ( b , a ) { this . _ . domOnChangeRegistered || ( b . on ( "load" , function ( ) { this . getInputElement ( ) . on ( "change" , function ( ) { b . parts . dialog . isVisible ( ) && this . fire ( "change" , { value : this . getValue ( ) } ) } ,
this ) } , this ) , this . _ . domOnChangeRegistered = ! 0 ) ; this . on ( "change" , a ) } } , ! 0 ) , x = /^on([A-Z]\w+)/ , t = function ( b ) { for ( var a in b ) ( x . test ( a ) || "title" == a || "type" == a ) && delete b [ a ] ; return b } , w = function ( b ) { b = b . data . getKeystroke ( ) ; b == CKEDITOR . SHIFT + CKEDITOR . ALT + 36 ? this . setDirectionMarker ( "ltr" ) : b == CKEDITOR . SHIFT + CKEDITOR . ALT + 35 && this . setDirectionMarker ( "rtl" ) } ; CKEDITOR . tools . extend ( CKEDITOR . ui . dialog , { labeledElement : function ( b , a , d , f ) { if ( ! ( 4 > arguments . length ) ) { var c = h . call ( this , a ) ; c . labelId = CKEDITOR . tools . getNextId ( ) +
"_label" ; this . _ . children = [ ] ; var e = { role : a . role || "presentation" } ; a . includeLabel && ( e [ "aria-labelledby" ] = c . labelId ) ; CKEDITOR . ui . dialog . uiElement . call ( this , b , a , d , "div" , null , e, function ( ) { var e = [ ] , g = a . required ? " cke_required" : "" ; "horizontal" != a . labelLayout ? e . push ( '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + g + '" ' , ' id\x3d"' + c . labelId + '"' , c . inputId ? ' for\x3d"' + c . inputId + '"' : "" , ( a . labelStyle ? ' style\x3d"' + a . labelStyle + '"' : "" ) + "\x3e" , a . required ? a . label + '\x3cspan class\x3d"cke_dialog_ui_labeled_required" aria-hidden\x3d"true"\x3e*\x3c/span\x3e' :
a . label , "\x3c/label\x3e" , '\x3cdiv class\x3d"cke_dialog_ui_labeled_content"' , a . controlStyle ? ' style\x3d"' + a . controlStyle + '"' : "" , ' role\x3d"presentation"\x3e' , f . call ( this , b , a ) , "\x3c/div\x3e" ) : ( g = { type : "hbox" , widths : a . widths , padding : 0 , children : [ { type : "html" , html : '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + g + '" id\x3d"' + c . labelId + '" for\x3d"' + c . inputId + '"' + ( a . labelStyle ? ' style\x3d"' + a . labelStyle + '"' : "" ) + "\x3e" + CKEDITOR . tools . htmlEncode ( a . label ) + "\x3c/label\x3e" } , { type : "html" , html : '\x3cspan class\x3d"cke_dialog_ui_labeled_content"' +
( a . controlStyle ? ' style\x3d"' + a . controlStyle + '"' : "" ) + "\x3e" + f . call ( this , b , a ) + "\x3c/span\x3e" } ] } , CKEDITOR . dialog . _ . uiElementBuilders . hbox . build ( b , g , e) ) ; return e . join ( "" ) } ) } } , textInput : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { h. call ( this , a ) ; var f = this . _ . inputId = CKEDITOR . tools . getNextId ( ) + "_textInput" , c = { "class" : "cke_dialog_ui_input_" + a . type , id : f , type : a . type } ; a . validate && ( this . validate = a . validate ) ; a . maxLength && ( c . maxlength = a . maxLength ) ; a . size && ( c . size = a . size ) ; a . inputStyle && ( c . style = a . inputStyle ) ; var e =
this , m = ! 1 ; b . on ( "load" , function ( ) { e . getInputElement ( ) . on ( "keydown" , function ( a ) { 13 == a . data . getKeystroke ( ) && ( m= ! 0 ) } ) ; e . getInputElement ( ) . on ( "keyup" , function ( a ) { 13 == a . data . getKeystroke ( ) && m && ( b . getButton ( "ok" ) && setTimeout ( function ( ) { b . getButton ( "ok" ) . click ( ) } , 0 ) , m= ! 1 ) ; e . bidi && w . call ( e , a ) } , null , null , 1E3 ) } ) ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { var b = [ '\x3cdiv class\x3d"cke_dialog_ui_input_' , a . type , '" role\x3d"presentation"' ] ; a . width && b . push ( 'style\x3d"width:' + a . width + '" ' ) ; b . push ( "\x3e\x3cinput " ) ;
c [ "aria-labelledby" ] = this . _ . labelId ; this . _ . required && ( c [ "aria-required" ] = this . _ . required ) ; for ( var e in c ) b . push ( e + '\x3d"' + c [ e ] + '" ' ) ; b . push ( " /\x3e\x3c/div\x3e" ) ; return b . join ( "" ) } ) } } , textarea : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { h. call ( this , a ) ; var f = this , c = this . _ . inputId = CKEDITOR . tools . getNextId ( ) + "_textarea" , e = { } ; a . validate && ( this . validate = a . validate ) ; e. rows = a . rows || 5 ; e . cols = a . cols || 20 ; e [ "class" ] = "cke_dialog_ui_input_textarea " + ( a [ "class" ] || "" ) ; "undefined" != typeof a . inputStyle && ( e . style = a . inputStyle ) ;
a . dir && ( e . dir = a . dir ) ; if ( f . bidi ) b . on ( "load" , function ( ) { f . getInputElement ( ) . on ( "keyup" , w ) } , f ) ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { e [ "aria-labelledby" ] = this . _ . labelId ; this . _ . required && ( e [ "aria-required" ] = this . _ . required ) ; var a = [ '\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"' , c , '" ' ] , b ; for ( b in e ) a . push ( b + '\x3d"' + CKEDITOR . tools . htmlEncode ( e [ b ] ) + '" ' ) ; a . push ( "\x3e" , CKEDITOR . tools . htmlEncode ( f . _ [ "default" ] ) , "\x3c/textarea\x3e\x3c/div\x3e" ) ;
return a . join ( "" ) } ) } } , checkbox : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { var f= h . call ( this , a , { "default" : ! ! a [ "default" ] } ) ; a . validate && ( this . validate = a . validate ) ; CKEDITOR . ui . dialog . uiElement . call ( this , b , a , d , "span" , null , null , function ( ) { var c = CKEDITOR . tools . extend ( { } , a , { id : a . id ? a . id + "_checkbox" : CKEDITOR . tools . getNextId ( ) + "_checkbox" } , ! 0 ) , e= [ ] , d = CKEDITOR . tools . getNextId ( ) + "_label" , g = { "class" : "cke_dialog_ui_checkbox_input" , type : "checkbox" , "aria-labelledby" : d } ; t ( c ) ; a [ "default" ] && ( g . checked = "checked" ) ; "undefined" !=
typeof c . inputStyle && ( c . style = c . inputStyle ) ; f . checkbox = new CKEDITOR . ui . dialog . uiElement ( b , c , e, "input" , null , g ) ; e . push ( ' \x3clabel id\x3d"' , d , '" for\x3d"' , g . id , '"' + ( a . labelStyle ? ' style\x3d"' + a . labelStyle + '"' : "" ) + "\x3e" , CKEDITOR . tools . htmlEncode ( a . label ) , "\x3c/label\x3e" ) ; return e . join ( "" ) } ) } } , radio : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { h . call ( this , a ) ; this . _ [ "default" ] || ( this . _ [ "default" ] = this . _ . initValue = a . items [ 0 ] [ 1 ] ) ; a . validate && ( this . validate = a . validate ) ; var f = [ ] , c = this ; a . role = "radiogroup" ;
a . includeLabel = ! 0 ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { for ( var e= [ ] , d = [ ] , g = ( a . id ? a . id : CKEDITOR . tools . getNextId ( ) ) + "_radio" , k= 0 ; k < a . items . length ; k ++ ) { var l = a . items [ k] , h = void 0 !== l [ 2 ] ? l [ 2 ] : l [ 0 ] , n = void 0 !== l [ 1 ] ? l [ 1 ] : l [ 0 ] , p = CKEDITOR . tools . getNextId ( ) + "_radio_input" , q = p + "_label" , p = CKEDITOR . tools . extend ( { } , a , { id : p , title : null , type : null } , ! 0 ) , h = CKEDITOR . tools . extend ( { } , p , { title : h } , ! 0 ) , r = { type : "radio" , "class" : "cke_dialog_ui_radio_input" , name : g , value : n , "aria-labelledby" : q } , u = [ ] ; c . _ [ "default" ] ==
n && ( r . checked = "checked" ) ; t ( p ) ; t ( h ) ; "undefined" != typeof p . inputStyle && ( p . style = p . inputStyle ) ; p. keyboardFocusable = ! 0 ; f . push ( new CKEDITOR . ui . dialog . uiElement ( b , p , u , "input" , null , r ) ); u . push ( " " ) ; new CKEDITOR . ui . dialog . uiElement ( b , h , u , "label" , null , { id : q , "for" : r . id } , l [ 0 ] ) ; e . push ( u . join ( "" ) ) } new CKEDITOR . ui . dialog . hbox ( b , f, e , d ) ; return d . join ( "" ) } ) ; this . _ . children = f } } , button : function ( b , a , d ) { if ( arguments . length ) { "function" == typeof a && ( a = a ( b . getParentEditor ( ) ) ) ; h . call ( this , a , { disabled : a . disabled || ! 1 } ) ; CKEDITOR . event . implementOn ( this ) ;
var f = this ; b . on ( "load" , function ( ) { var a = this . getElement ( ) ; ( function ( ) { a . on ( "click" , function ( a ) { f . click ( ) ; a . data . preventDefault ( ) } ) ; a . on ( "keydown" , function ( a ) { a . data . getKeystroke ( ) in { 32 : 1 } && ( f . click ( ) , a . data . preventDefault ( ) ) } ) } ) ( ) ; a . unselectable ( ) } , this ) ; var c = CKEDITOR . tools . extend ( { } , a ) ; delete c . style ; var e = CKEDITOR . tools . getNextId ( ) + "_label" ; CKEDITOR . ui . dialog . uiElement . call ( this , b , c , d , "a" , null , { style : a . style , href : "javascript:void(0)" , title : a . label , hidefocus : "true" , "class" : a [ "class" ] , role : "button" ,
" aria-labelledby": e } , '\x3cspan id\x3d"' + e + '" class\x3d"cke_dialog_ui_button"\x3e' + CKEDITOR . tools . htmlEncode ( a . label ) + "\x3c/span\x3e" ) } } , select : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { var f= h . call ( this , a ) ; a . validate && ( this . validate = a . validate ) ; f . inputId = CKEDITOR . tools . getNextId ( ) + "_select" ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { var c = CKEDITOR . tools . extend ( { } , a , { id : a . id ? a . id + "_select" : CKEDITOR . tools . getNextId ( ) + "_select" } , ! 0 ) , e= [ ] , d = [ ] , g = { id : f . inputId , "class" : "cke_dialog_ui_input_select" ,
"aria-labelledby" : this . _ . labelId } ; e . push ( '\x3cdiv class\x3d"cke_dialog_ui_input_' , a . type , '" role\x3d"presentation"' ) ; a . width && e . push ( 'style\x3d"width:' + a . width + '" ' ) ; e . push ( "\x3e" ) ; void 0 !== a . size && ( g . size = a . size ) ; void 0 !== a . multiple && ( g . multiple = a . multiple ) ; t ( c ) ; for ( var k= 0 , l ; k < a . items . length && ( l = a . items [ k] ) ; k ++ ) d . push ( '\x3coption value\x3d"' , CKEDITOR . tools . htmlEncode ( void 0 !== l [ 1 ] ? l [ 1 ] : l [ 0 ] ) . replace ( /"/g , "\x26quot;" ) , '" /\x3e ' , CKEDITOR . tools . htmlEncode ( l [ 0 ] ) ) ; "undefined" != typeof c . inputStyle &&
( c . style = c . inputStyle ) ; f . select = new CKEDITOR . ui . dialog . uiElement ( b , c , e, "select" , null , g , d . join ( "" ) ) ; e . push ( "\x3c/div\x3e" ) ; return e . join ( "" ) } ) } } , file : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { void 0 === a [ "default" ] && ( a [ "default" ] = "" ) ; var f= CKEDITOR . tools . extend ( h . call ( this , a ) , { definition : a , buttons : [ ] } ) ; a . validate && ( this . validate = a . validate ) ; b . on ( "load" , function ( ) { CKEDITOR . document . getById ( f . frameId ) . getParent ( ) . addClass ( "cke_dialog_ui_input_file" ) } ) ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d ,
function ( ) { f . frameId = CKEDITOR . tools . getNextId ( ) + "_fileInput" ; var b = [ '\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"' , f . frameId , '" title\x3d"' , a . label , '" src\x3d"javascript:void(' ] ; b . push ( CKEDITOR . env . ie ? "(function(){" + encodeURIComponent ( "document.open();(" + CKEDITOR . tools . fixDomain + ")();document.close();" ) + "})()" : "0" ) ; b . push ( ')"\x3e\x3c/iframe\x3e' ) ; return b . join ( "" ) } ) } } , fileButton : function ( b , a , d ) { var f = this ; if ( ! ( 3 > arguments . length ) ) { h . call ( this ,
a ) ; a . validate && ( this . validate = a . validate ) ; var c = CKEDITOR . tools . extend ( { } , a ) , e = c . onClick ; c . className = ( c . className ? c . className + " " : "" ) + "cke_dialog_ui_button" ; c . onClick = function ( c ) { var d = a [ "for" ] ; c = e? e . call ( this , c ) : ! 1 ; ! 1 !== c && ( "xhr" !== c && b . getContentElement ( d [ 0 ] , d [ 1 ] ) . submit ( ) , this . disable ( ) ) } ; b . on ( "load" , function ( ) { b . getContentElement ( a [ "for" ] [ 0 ] , a [ "for" ] [ 1 ] ) . _ . buttons . push ( f ) } ) ; CKEDITOR . ui . dialog . button . call ( this , b , c , d ) } } , html : function ( ) { var b = /^\s*<[\w:]+\s+([^>]*)?>/ , a = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/ ,
d = /\/$/ ; return function ( f, c , e ) { if ( ! ( 3 > arguments . length ) ) { var m = [ ] , g = c . html ; "\x3c" != g . charAt ( 0 ) && ( g = "\x3cspan\x3e" + g + "\x3c/span\x3e" ) ; var k= c . focus ; if ( k ) { var l = this . focus ; this . focus = function ( ) { ( "function" == typeof k? k : l ) . call ( this ) ; this . fire ( "focus" ) } ; c . isFocusable && ( this . isFocusable = this . isFocusable ) ; this . keyboardFocusable = ! 0 } CKEDITOR . ui . dialog . uiElement . call ( this , f, c , m , "span" , null , null , "" ) ; m= m . join ( "" ) . match ( b ) ; g = g . match ( a ) || [ "" , "" , "" ] ; d . test ( g [ 1 ] ) && ( g [ 1 ] = g [ 1 ] . slice ( 0 , - 1 ) , g [ 2 ] = "/" + g [ 2 ] ) ; e . push ( [ g [ 1 ] ,
" " , m [ 1 ] || "" , g [ 2 ] ] . join ( "" ) ) } } } ( ) , fieldset : function ( b , a , d , f, c ) { var e = c . label ; this . _ = { children : a } ; CKEDITOR . ui . dialog . uiElement . call ( this , b , c , f , "fieldset" , null , null , function ( ) { var a = [ ] ; e && a . push ( "\x3clegend" + ( c . labelStyle ? ' style\x3d"' + c . labelStyle + '"' : "" ) + "\x3e" + e + "\x3c/legend\x3e" ) ; for ( var b = 0 ; b < d . length ; b ++ ) a . push ( d [ b ] ) ; return a . join ( "" ) } ) } } , ! 0 ) ; CKEDITOR . ui . dialog . html . prototype = new CKEDITOR . ui . dialog . uiElement ; CKEDITOR . ui . dialog . labeledElement . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement ,
this ) } , this ) , this . _ . domOnChangeRegistered = ! 0 ) ; this . on ( "change" , a ) } } , ! 0 ) , x = /^on([A-Z]\w+)/ , t = function ( b ) { for ( var a in b ) ( x . test ( a ) || "title" == a || "type" == a ) && delete b [ a ] ; return b } , w = function ( b ) { b = b . data . getKeystroke ( ) ; b == CKEDITOR . SHIFT + CKEDITOR . ALT + 36 ? this . setDirectionMarker ( "ltr" ) : b == CKEDITOR . SHIFT + CKEDITOR . ALT + 35 && this . setDirectionMarker ( "rtl" ) } ; CKEDITOR . tools . extend ( CKEDITOR . ui . dialog , { labeledElement : function ( b , a , d , e ) { if ( ! ( 4 > arguments . length ) ) { var c = k . call ( this , a ) ; c . labelId = CKEDITOR . tools . getNextId ( ) +
"_label" ; this . _ . children = [ ] ; var f = { role : a . role || "presentation" } ; a . includeLabel && ( f [ "aria-labelledby" ] = c . labelId ) ; CKEDITOR . ui . dialog . uiElement . call ( this , b , a , d , "div" , null , f, function ( ) { var d = [ ] , g = a . required ? " cke_required" : "" ; "horizontal" != a . labelLayout ? d . push ( '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + g + '" ' , ' id\x3d"' + c . labelId + '"' , c . inputId ? ' for\x3d"' + c . inputId + '"' : "" , ( a . labelStyle ? ' style\x3d"' + a . labelStyle + '"' : "" ) + "\x3e" , a . required ? a . label + '\x3cspan class\x3d"cke_dialog_ui_labeled_required" aria-hidden\x3d"true"\x3e*\x3c/span\x3e' :
a . label , "\x3c/label\x3e" , '\x3cdiv class\x3d"cke_dialog_ui_labeled_content"' , a . controlStyle ? ' style\x3d"' + a . controlStyle + '"' : "" , ' role\x3d"presentation"\x3e' , e . call ( this , b , a ) , "\x3c/div\x3e" ) : ( g = { type : "hbox" , widths : a . widths , padding : 0 , children : [ { type : "html" , html : '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + g + '" id\x3d"' + c . labelId + '" for\x3d"' + c . inputId + '"' + ( a . labelStyle ? ' style\x3d"' + a . labelStyle + '"' : "" ) + "\x3e" + CKEDITOR . tools . htmlEncode ( a . label ) + "\x3c/label\x3e" } , { type : "html" , html : '\x3cspan class\x3d"cke_dialog_ui_labeled_content"' +
( a . controlStyle ? ' style\x3d"' + a . controlStyle + '"' : "" ) + "\x3e" + e . call ( this , b , a ) + "\x3c/span\x3e" } ] } , CKEDITOR . dialog . _ . uiElementBuilders . hbox . build ( b , g , d) ) ; return d . join ( "" ) } ) } } , textInput : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { k. call ( this , a ) ; var e = this . _ . inputId = CKEDITOR . tools . getNextId ( ) + "_textInput" , c = { "class" : "cke_dialog_ui_input_" + a . type , id : e , type : a . type } ; a . validate && ( this . validate = a . validate ) ; a . maxLength && ( c . maxlength = a . maxLength ) ; a . size && ( c . size = a . size ) ; a . inputStyle && ( c . style = a . inputStyle ) ; var f =
this , h = ! 1 ; b . on ( "load" , function ( ) { f . getInputElement ( ) . on ( "keydown" , function ( a ) { 13 == a . data . getKeystroke ( ) && ( h= ! 0 ) } ) ; f . getInputElement ( ) . on ( "keyup" , function ( a ) { 13 == a . data . getKeystroke ( ) && h && ( b . getButton ( "ok" ) && setTimeout ( function ( ) { b . getButton ( "ok" ) . click ( ) } , 0 ) , h= ! 1 ) ; f . bidi && w . call ( f , a ) } , null , null , 1E3 ) } ) ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { var b = [ '\x3cdiv class\x3d"cke_dialog_ui_input_' , a . type , '" role\x3d"presentation"' ] ; a . width && b . push ( 'style\x3d"width:' + a . width + '" ' ) ; b . push ( "\x3e\x3cinput " ) ;
c [ "aria-labelledby" ] = this . _ . labelId ; this . _ . required && ( c [ "aria-required" ] = this . _ . required ) ; for ( var e in c ) b . push ( e + '\x3d"' + c [ e ] + '" ' ) ; b . push ( " /\x3e\x3c/div\x3e" ) ; return b . join ( "" ) } ) } } , textarea : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { k. call ( this , a ) ; var e = this , c = this . _ . inputId = CKEDITOR . tools . getNextId ( ) + "_textarea" , f = { } ; a . validate && ( this . validate = a . validate ) ; f. rows = a . rows || 5 ; f . cols = a . cols || 20 ; f [ "class" ] = "cke_dialog_ui_input_textarea " + ( a [ "class" ] || "" ) ; "undefined" != typeof a . inputStyle && ( f . style = a . inputStyle ) ;
a . dir && ( f . dir = a . dir ) ; if ( e . bidi ) b . on ( "load" , function ( ) { e . getInputElement ( ) . on ( "keyup" , w ) } , e ) ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { f [ "aria-labelledby" ] = this . _ . labelId ; this . _ . required && ( f [ "aria-required" ] = this . _ . required ) ; var a = [ '\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"' , c , '" ' ] , b ; for ( b in f ) a . push ( b + '\x3d"' + CKEDITOR . tools . htmlEncode ( f [ b ] ) + '" ' ) ; a . push ( "\x3e" , CKEDITOR . tools . htmlEncode ( e . _ [ "default" ] ) , "\x3c/textarea\x3e\x3c/div\x3e" ) ;
return a . join ( "" ) } ) } } , checkbox : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { var e= k . call ( this , a , { "default" : ! ! a [ "default" ] } ) ; a . validate && ( this . validate = a . validate ) ; CKEDITOR . ui . dialog . uiElement . call ( this , b , a , d , "span" , null , null , function ( ) { var c = CKEDITOR . tools . extend ( { } , a , { id : a . id ? a . id + "_checkbox" : CKEDITOR . tools . getNextId ( ) + "_checkbox" } , ! 0 ) , d= [ ] , h = CKEDITOR . tools . getNextId ( ) + "_label" , g = { "class" : "cke_dialog_ui_checkbox_input" , type : "checkbox" , "aria-labelledby" : h } ; t ( c ) ; a [ "default" ] && ( g . checked = "checked" ) ; "undefined" !=
typeof c . inputStyle && ( c . style = c . inputStyle ) ; e . checkbox = new CKEDITOR . ui . dialog . uiElement ( b , c , d, "input" , null , g ) ; d . push ( ' \x3clabel id\x3d"' , h , '" for\x3d"' , g . id , '"' + ( a . labelStyle ? ' style\x3d"' + a . labelStyle + '"' : "" ) + "\x3e" , CKEDITOR . tools . htmlEncode ( a . label ) , "\x3c/label\x3e" ) ; return d . join ( "" ) } ) } } , radio : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { k . call ( this , a ) ; this . _ [ "default" ] || ( this . _ [ "default" ] = this . _ . initValue = a . items [ 0 ] [ 1 ] ) ; a . validate && ( this . validate = a . validate ) ; var e = [ ] , c = this ; a . role = "radiogroup" ;
a . includeLabel = ! 0 ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { for ( var d= [ ] , h = [ ] , g = ( a . id ? a . id : CKEDITOR . tools . getNextId ( ) ) + "_radio" , n= 0 ; n < a . items . length ; n ++ ) { var l = a . items [ n] , k = void 0 !== l [ 2 ] ? l [ 2 ] : l [ 0 ] , m = void 0 !== l [ 1 ] ? l [ 1 ] : l [ 0 ] , p = CKEDITOR . tools . getNextId ( ) + "_radio_input" , q = p + "_label" , p = CKEDITOR . tools . extend ( { } , a , { id : p , title : null , type : null } , ! 0 ) , k = CKEDITOR . tools . extend ( { } , p , { title : k } , ! 0 ) , r = { type : "radio" , "class" : "cke_dialog_ui_radio_input" , name : g , value : m , "aria-labelledby" : q } , u = [ ] ; c . _ [ "default" ] ==
m && ( r . checked = "checked" ) ; t ( p ) ; t ( k ) ; "undefined" != typeof p . inputStyle && ( p . style = p . inputStyle ) ; m= new CKEDITOR . ui . dialog . uiElement ( b , p , u , "input" , null , r ) ;m . on ( "focus" , function ( ) { c . click ( ) } ) ; e . push ( m ); u . push ( " " ) ; new CKEDITOR . ui . dialog . uiElement ( b , k , u , "label" , null , { id : q , "for" : r . id } , l [ 0 ] ) ; d . push ( u . join ( "" ) ) } new CKEDITOR . ui . dialog . hbox ( b , e, d , h ) ; return h . join ( "" ) } ) ; this . _ . children = e } } , button : function ( b , a , d ) { if ( arguments . length ) { "function" == typeof a && ( a = a ( b . getParentEditor ( ) ) ) ; k . call ( this , a , { disabled : a . disabled ||
! 1 } ) ; CKEDITOR . event . implementOn ( this ) ; var e = this ; b . on ( "load" , function ( ) { var a = this . getElement ( ) ; ( function ( ) { a . on ( "click" , function ( a ) { e . click ( ) ; a . data . preventDefault ( ) } ) ; a . on ( "keydown" , function ( a ) { a . data . getKeystroke ( ) in { 32 : 1 } && ( e . click ( ) , a . data . preventDefault ( ) ) } ) } ) ( ) ; a . unselectable ( ) } , this ) ; var c = CKEDITOR . tools . extend ( { } , a ) ; delete c . style ; var f = CKEDITOR . tools . getNextId ( ) + "_label" ; CKEDITOR . ui . dialog . uiElement . call ( this , b , c , d , "a" , null , { style : a . style , href : "javascript:void(0)" , title : a . label , hidefocus : "true" ,
" class": a [ "class" ] , role : "button" , "aria-labelledby" : f } , '\x3cspan id\x3d"' + f + '" class\x3d"cke_dialog_ui_button"\x3e' + CKEDITOR . tools . htmlEncode ( a . label ) + "\x3c/span\x3e" ) } } , select : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { var e= k . call ( this , a ) ; a . validate && ( this . validate = a . validate ) ; e . inputId = CKEDITOR . tools . getNextId ( ) + "_select" ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { var c = CKEDITOR . tools . extend ( { } , a , { id : a . id ? a . id + "_select" : CKEDITOR . tools . getNextId ( ) + "_select" } , ! 0 ) , d= [ ] , h = [ ] , g = { id : e . inputId ,
"class" : "cke_dialog_ui_input_select" , "aria-labelledby" : this . _ . labelId } ; d . push ( '\x3cdiv class\x3d"cke_dialog_ui_input_' , a . type , '" role\x3d"presentation"' ) ; a . width && d . push ( 'style\x3d"width:' + a . width + '" ' ) ; d . push ( "\x3e" ) ; void 0 !== a . size && ( g . size = a . size ) ; void 0 !== a . multiple && ( g . multiple = a . multiple ) ; t ( c ) ; for ( var n= 0 , l ; n < a . items . length && ( l = a . items [ n] ) ; n ++ ) h . push ( '\x3coption value\x3d"' , CKEDITOR . tools . htmlEncode ( void 0 !== l [ 1 ] ? l [ 1 ] : l [ 0 ] ) . replace ( /"/g , "\x26quot;" ) , '" /\x3e ' , CKEDITOR . tools . htmlEncode ( l [ 0 ] ) ) ;
"undefined" != typeof c . inputStyle && ( c . style = c . inputStyle ) ; e . select = new CKEDITOR . ui . dialog . uiElement ( b , c , d, "select" , null , g , h . join ( "" ) ) ; d . push ( "\x3c/div\x3e" ) ; return d . join ( "" ) } ) } } , file : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { void 0 === a [ "default" ] && ( a [ "default" ] = "" ) ; var e= CKEDITOR . tools . extend ( k . call ( this , a ) , { definition : a , buttons : [ ] } ) ; a . validate && ( this . validate = a . validate ) ; b . on ( "load" , function ( ) { CKEDITOR . document . getById ( e . frameId ) . getParent ( ) . addClass ( "cke_dialog_ui_input_file" ) } ) ; CKEDITOR . ui . dialog . labeledElement . call ( this ,
b , a , d , function ( ) { e . frameId = CKEDITOR . tools . getNextId ( ) + "_fileInput" ; var b = [ '\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"' , e . frameId , '" title\x3d"' , a . label , '" src\x3d"javascript:void(' ] ; b . push ( CKEDITOR . env . ie ? "(function(){" + encodeURIComponent ( "document.open();(" + CKEDITOR . tools . fixDomain + ")();document.close();" ) + "})()" : "0" ) ; b . push ( ')"\x3e\x3c/iframe\x3e' ) ; return b . join ( "" ) } ) } } , fileButton : function ( b , a , d ) { var e = this ; if ( ! ( 3 > arguments . length ) ) { k . call ( this ,
a ) ; a . validate && ( this . validate = a . validate ) ; var c = CKEDITOR . tools . extend ( { } , a ) , f = c . onClick ; c . className = ( c . className ? c . className + " " : "" ) + "cke_dialog_ui_button" ; c . onClick = function ( c ) { var d = a [ "for" ] ; c = f? f . call ( this , c ) : ! 1 ; ! 1 !== c && ( "xhr" !== c && b . getContentElement ( d [ 0 ] , d [ 1 ] ) . submit ( ) , this . disable ( ) ) } ; b . on ( "load" , function ( ) { b . getContentElement ( a [ "for" ] [ 0 ] , a [ "for" ] [ 1 ] ) . _ . buttons . push ( e ) } ) ; CKEDITOR . ui . dialog . button . call ( this , b , c , d ) } } , html : function ( ) { var b = /^\s*<[\w:]+\s+([^>]*)?>/ , a = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/ ,
d = /\/$/ ; return function ( e, c , f ) { if ( ! ( 3 > arguments . length ) ) { var h = [ ] , g = c . html ; "\x3c" != g . charAt ( 0 ) && ( g = "\x3cspan\x3e" + g + "\x3c/span\x3e" ) ; var n= c . focus ; if ( n ) { var l = this . focus ; this . focus = function ( ) { ( "function" == typeof n? n : l ) . call ( this ) ; this . fire ( "focus" ) } ; c . isFocusable && ( this . isFocusable = this . isFocusable ) ; this . keyboardFocusable = ! 0 } CKEDITOR . ui . dialog . uiElement . call ( this , e, c , h , "span" , null , null , "" ) ; h= h . join ( "" ) . match ( b ) ; g = g . match ( a ) || [ "" , "" , "" ] ; d . test ( g [ 1 ] ) && ( g [ 1 ] = g [ 1 ] . slice ( 0 , - 1 ) , g [ 2 ] = "/" + g [ 2 ] ) ; f . push ( [ g [ 1 ] ,
" " , h [ 1 ] || "" , g [ 2 ] ] . join ( "" ) ) } } } ( ) , fieldset : function ( b , a , d , e, c ) { var f = c . label ; this . _ = { children : a } ; CKEDITOR . ui . dialog . uiElement . call ( this , b , c , e , "fieldset" , null , null , function ( ) { var a = [ ] ; f && a . push ( "\x3clegend" + ( c . labelStyle ? ' style\x3d"' + c . labelStyle + '"' : "" ) + "\x3e" + f + "\x3c/legend\x3e" ) ; for ( var b = 0 ; b < d . length ; b ++ ) a . push ( d [ b ] ) ; return a . join ( "" ) } ) } } , ! 0 ) ; CKEDITOR . ui . dialog . html . prototype = new CKEDITOR . ui . dialog . uiElement ; CKEDITOR . ui . dialog . labeledElement . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement ,
{ setLabel : function ( b ) { var a = CKEDITOR . document . getById ( this . _ . labelId ) ; 1 > a . getChildCount ( ) ? ( new CKEDITOR . dom . text ( b , CKEDITOR . document ) ) . appendTo ( a ) : a . getChild ( 0 ) . $ . nodeValue = b ; return this } , getLabel : function ( ) { var b = CKEDITOR . document . getById ( this . _ . labelId ) ; return ! b || 1 > b . getChildCount ( ) ? "" : b . getChild ( 0 ) . getText ( ) } , eventProcessors : v } , ! 0 ) ; CKEDITOR . ui . dialog . button . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement , { click : function ( ) { return this . _ . disabled ? ! 1 : this . fire ( "click" , { dialog : this . _ . dialog } ) } ,
enable : function ( ) { this . _ . disabled = ! 1 ; var b = this . getElement ( ) ; b && b . removeClass ( "cke_disabled" ) } , disable : function ( ) { this . _ . disabled = ! 0 ; this . getElement ( ) . addClass ( "cke_disabled" ) } , isVisible : function ( ) { return this . getElement ( ) . getFirst ( ) . isVisible ( ) } , isEnabled : function ( ) { return ! this . _ . disabled } , eventProcessors : CKEDITOR . tools . extend ( { } , CKEDITOR . ui . dialog . uiElement . prototype . eventProcessors , { onClick : function ( b , a ) { this . on ( "click" , function ( ) { a . apply ( this , arguments ) } ) } } , ! 0 ) , accessKeyUp : function ( ) { this . click ( ) } ,
accessKeyDown : function ( ) { this . focus ( ) } , keyboardFocusable : ! 0 } , ! 0 ) ; CKEDITOR . ui . dialog . textInput . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . labeledElement , { getInputElement : function ( ) { return CKEDITOR . document . getById ( this . _ . inputId ) } , focus : function ( ) { var b = this . selectParentTab ( ) ; setTimeout ( function ( ) { var a = b . getInputElement ( ) ; a && a . $ . focus ( ) } , 0 ) } , select : function ( ) { var b = this . selectParentTab ( ) ; setTimeout ( function ( ) { var a = b . getInputElement ( ) ; a && ( a . $ . focus ( ) , a . $ . select ( ) ) } , 0 ) } , accessKeyUp : function ( ) { this . select ( ) } ,
setValue : function ( b ) { if ( this . bidi ) { var a = b && b . charAt ( 0 ) ; ( a = " " == a ? "ltr" : " " == a ? "rtl" : null ) && ( b = b . slice ( 1 ) ) ; this . setDirectionMarker ( a ) } b || ( b = "" ) ; return CKEDITOR . ui . dialog . uiElement . prototype . setValue . apply ( this , arguments ) } , getValue : function ( ) { var b = CKEDITOR . ui . dialog . uiElement . prototype . getValue . call ( this ) ; if ( this . bidi && b ) { var a = this . getDirectionMarker ( ) ; a && ( b = ( "ltr" == a ? " " : " " ) + b ) } return b } , setDirectionMarker : function ( b ) { var a = this . getInputElement ( ) ; b ? a . setAttributes ( { dir : b , "data-cke-dir-marker" : b } ) :
this . getDirectionMarker ( ) && a . removeAttributes ( [ "dir" , "data-cke-dir-marker" ] ) } , getDirectionMarker : function ( ) { return this . getInputElement ( ) . data ( "cke-dir-marker" ) } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . textarea . prototype = new CKEDITOR . ui . dialog . textInput ; CKEDITOR . ui . dialog . select . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . labeledElement , { getInputElement : function ( ) { return this . _ . select . getElement ( ) } , add : function ( b , a , d ) { var f = new CKEDITOR . dom . element ( "option" , this . getDialog ( ) . getParentEditor ( ) . document ) ,
c = this . getInputElement ( ) . $ ; f. $ . text = b ; f . $ . value = void 0 === a || null === a ? b : a ; void 0 === d || null === d ? CKEDITOR . env . ie ? c . add ( f. $ ) : c . add ( f . $ , null ) : c . add ( f . $ , d ) ; return this } , remove : function ( b ) { this . getInputElement ( ) . $ . remove ( b ) ; return this } , clear : function ( ) { for ( var b = this . getInputElement ( ) . $ ; 0 < b . length ; ) b . remove ( 0 ) ; return this } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . checkbox . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement , { getInputElement : function ( ) { return this . _ . checkbox . getElement ( ) } ,
this . getDirectionMarker ( ) && a . removeAttributes ( [ "dir" , "data-cke-dir-marker" ] ) } , getDirectionMarker : function ( ) { return this . getInputElement ( ) . data ( "cke-dir-marker" ) } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . textarea . prototype = new CKEDITOR . ui . dialog . textInput ; CKEDITOR . ui . dialog . select . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . labeledElement , { getInputElement : function ( ) { return this . _ . select . getElement ( ) } , add : function ( b , a , d ) { var e = new CKEDITOR . dom . element ( "option" , this . getDialog ( ) . getParentEditor ( ) . document ) ,
c = this . getInputElement ( ) . $ ; e. $ . text = b ; e . $ . value = void 0 === a || null === a ? b : a ; void 0 === d || null === d ? CKEDITOR . env . ie ? c . add ( e. $ ) : c . add ( e . $ , null ) : c . add ( e . $ , d ) ; return this } , remove : function ( b ) { this . getInputElement ( ) . $ . remove ( b ) ; return this } , clear : function ( ) { for ( var b = this . getInputElement ( ) . $ ; 0 < b . length ; ) b . remove ( 0 ) ; return this } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . checkbox . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement , { getInputElement : function ( ) { return this . _ . checkbox . getElement ( ) } ,
setValue : function ( b , a ) { this . getInputElement ( ) . $ . checked = b ; ! a && this . fire ( "change" , { value : b } ) ; return this } , getValue : function ( ) { return this . getInputElement ( ) . $ . checked } , accessKeyUp : function ( ) { this . setValue ( ! this . getValue ( ) ) } , eventProcessors : { onChange : function ( b , a ) { if ( ! CKEDITOR . env . ie || 8 < CKEDITOR . env . version ) return v . onChange . apply ( this , arguments ) ; b . on ( "load" , function ( ) { var a = this . _ . checkbox . getElement ( ) ; a . on ( "propertychange" , function ( b ) { b = b . data . $ ; "checked" == b . propertyName && this . fire ( "change" , { value : a . $ . checked } ) } ,
this ) } , this ) ; this . on ( "change" , a ) ; return null } } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . radio . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement , { setValue: function ( b , a ) { for ( var d = this . _ . children , f , c = 0 ; c < d . length && ( f = d [ c ] ) ; c ++ ) f . getElement ( ) . $ . checked = f . getValue ( ) == b ; ! a && this . fire ( "change" , { value : b } ) ; return this } , getValue : function ( ) { for ( var b = this . _ . children , a = 0 ; a < b . length ; a ++ ) if ( b [ a ] . getElement ( ) . $ . checked ) return b [ a ] . getValue ( ) ; return null } , accessKeyUp : function ( ) { var b = this . _ . children ,
a; for ( a = 0 ; a < b . length ; a ++ ) if ( b [ a ] . getElement ( ) . $ . checked ) { b [ a ] . getElement ( ) . focus ( ) ; return } b [ 0 ] . getElement ( ) . focus ( ) } , eventProcessors : { onChange : function ( b , a ) { if ( ! CKEDITOR . env . ie || 8 < CKEDITOR . env . version ) return v . onChange . apply ( this , arguments ) ; b . on ( "load" , function ( ) { for ( var a = this . _ . children , b = this , c = 0 ; c < a . length ; c ++ ) a [ c ] . getElement ( ) . on ( "propertychange" , function ( a ) { a = a . data . $ ; "checked" == a . propertyName && this . $ . checked && b . fire ( "change" , { value : this . getAttribute ( "value" ) } ) } ) } , this ) ; this . on ( "change" , a ) ;
return null } } } , q , ! 0 ) ; CKEDITOR . ui . dialog . file . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . labeledElement , q , { getInputElement : function ( ) { var b = CKEDITOR . document . getById ( this . _ . frameId ) . getFrameDocument ( ) ; return 0 < b . $ . forms . length ? new CKEDITOR . dom . element ( b . $ . forms [ 0 ] . elements [ 0 ] ) : this . getElement ( ) } , submit : function ( ) { this . getInputElement ( ) . getParent ( ) . $ . submit ( ) ; return this } , getAction : function ( ) { return this . getInputElement ( ) . getParent ( ) . $ . action } , registerEvents : function ( b ) { var a = /^on([A-Z]\w+)/ ,
d, f = function ( a , b , c , d ) { a . on ( "formLoaded" , function ( ) { a . getInputElement ( ) . on ( c , d , a ) } ) } , c ; for ( c in b ) if ( d = c . match ( a ) ) this . eventProcessors [ c ] ? this . eventProcessors [ c ] . call ( this , this . _ . dialog , b [ c ] ) : f ( this , this . _ . dialog , d [ 1 ] . toLowerCase ( ) , b [ c ] ) ; return this } , reset : function ( ) { function b ( ) { d . $ . open ( ) ; var b = "" ; f . size && ( b = f . size - ( CKEDITOR . env . ie ? 7 : 0 ) ) ; var h = a . frameId + "_input" ; d . $ . write ( [ '\x3chtml dir\x3d"' + g + '" lang\x3d"' + k + '"\x3e\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e\x3cbody style\x3d"margin: 0; overflow: hidden; background: transparent;"\x3e' ,
'\x3cform enctype\x3d"multipart/form-data" method\x3d"POST" dir\x3d"' + g + '" lang\x3d"' + k + '" action\x3d"' , CKEDITOR . tools . htmlEncode ( f . action ) , '"\x3e\x3clabel id\x3d"' , a . labelId , '" for\x3d"' , h , '" style\x3d"display:none"\x3e' , CKEDITOR . tools . htmlEncode ( f . label ) , '\x3c/label\x3e\x3cinput style\x3d"width:100%" id\x3d"' , h , '" aria-labelledby\x3d"' , a . labelId , '" type\x3d"file" name\x3d"' , CKEDITOR . tools . htmlEncode ( f . id || "cke_upload" ) , '" size\x3d"' , CKEDITOR . tools . htmlEncode ( 0 < b ? b : "" ) , '" /\x3e\x3c/form\x3e\x3c/body\x3e\x3c/html\x3e\x3cscript\x3e' ,
CKEDITOR . env . ie ? "(" + CKEDITOR . tools . fixDomain + ")();" : "" , "window.parent.CKEDITOR.tools.callFunction(" + e + ");" , "window.onbeforeunload \x3d function() {window.parent.CKEDITOR.tools.callFunction(" + m + ")}" , "\x3c/script\x3e" ] . join ( "" ) ) ; d . $ . close ( ) ; for ( b = 0 ; b < c . length ; b ++ ) c [ b ] . enable ( ) } var a = this . _ , d = CKEDITOR . document . getById ( a . frameId ) . getFrameDocument ( ) , f = a . definition , c = a . buttons , e = this . formLoadedNumber , m = this . formUnloadNumber , g = a . dialog . _ . editor . lang . dir , k = a . dialog . _ . editor . langCode ; e || ( e = this . formLoadedNumber =
CKEDITOR . tools . addFunction ( function ( ) { this . fire ( "formLoaded" ) } , this ) , m = this . formUnloadNumber = CKEDITOR . tools . addFunction ( function ( ) { this . getInputElement ( ) . clearCustomData ( ) } , this ) , this . getDialog ( ) . _ . editor . on ( "destroy" , function ( ) { CKEDITOR . tools . removeFunction ( e ) ; CKEDITOR . tools . removeFunction ( m ) } ) ) ; CKEDITOR . env . gecko ? setTimeout ( b , 500 ) : b ( ) } , getValue : function ( ) { return this . getInputElement ( ) . $ . value || "" } , setInitValue : function ( ) { this . _ . initValue = "" } , eventProcessors : { onChange : function ( b , a ) { this . _ . domOnChangeRegistered ||
( this . on ( "formLoaded" , function ( ) { this . getInputElement ( ) . on ( "change" , function ( ) { this . fire ( "change" , { value : this . getValue ( ) } ) } , this ) } , this ) , this . _ . domOnChangeRegistered = ! 0 ) ; this . on ( "change" , a ) } } , keyboardFocusable : ! 0 } , ! 0 ) ; CKEDITOR . ui . dialog . fileButton . prototype = new CKEDITOR . ui . dialog . button ; CKEDITOR . ui . dialog . fieldset . prototype = CKEDITOR . tools . clone ( CKEDITOR . ui . dialog . hbox . prototype ) ; CKEDITOR . dialog . addUIElement ( "text" , r ) ; CKEDITOR . dialog . addUIElement ( "password" , r ) ; CKEDITOR . dialog . addUIElement ( "tel" , r ) ;
CKEDITOR . dialog . addUIElement ( "textarea" , n ) ; CKEDITOR . dialog . addUIElement ( "checkbox" , n ) ; CKEDITOR . dialog . addUIElement ( "radio" , n ) ; CKEDITOR . dialog . addUIElement ( "button" , n ) ; CKEDITOR . dialog . addUIElement ( " select", n ) ; CKEDITOR . dialog . addUIElement ( " file", n ) ; CKEDITOR . dialog . addUIElement ( " fileButton", n ) ; CKEDITOR . dialog . addUIElement ( " html", n ) ; CKEDITOR . dialog . addUIElement ( " fieldset", { build : function ( b , a , d ) { for ( var f = a . children , c , e = [ ] , h = [ ] , g = 0 ; g < f . length && ( c = f [ g ] ) ; g ++ ) { var k = [ ] ; e . push ( k ) ; h . push ( CKEDITOR . dialog . _ . uiElementBuilders [ c . type ] . build ( b ,
c , k ) ) } return new CKEDITOR . ui . dialog [ a . type ] ( b , h , e , d , a ) } } ) } } ) ; 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 ;
this ) } , this ) ; this . on ( "change" , a ) ; return null } } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . radio . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement , { focus: function ( ) { var b = this . _ . children , a = b [ 0 ] , d = this . _ . dialog . _ , e = d . currentFocusIndex , c = e === d . focusList . length - 1 && 0 === this . focusIndex ; e > this . focusIndex && ! c && ( a = b [ b . length - 1 ] ) ; d . currentFocusIndex = this . focusIndex ; for ( d = 0 ; d < b . length ; d ++ ) if ( e = b [ d ] , e . getInputElement ( ) . $ . checked ) { a = e ; break } a . focus ( ) } , setValue : function ( b , a ) { for ( var d = this . _ . children ,
e, c = 0 ; c < d . length && ( e = d [ c ] ) ; c ++ ) e . getElement ( ) . $ . checked = e . getValue ( ) == b ; ! a && this . fire ( "change" , { value : b } ) ; return this } , getValue : function ( ) { for ( var b = this . _ . children , a = 0 ; a < b . length ; a ++ ) if ( b [ a ] . getElement ( ) . $ . checked ) return b [ a ] . getValue ( ) ; return null } , accessKeyUp : function ( ) { var b = this . _ . children , a ; for ( a = 0 ; a < b . length ; a ++ ) if ( b [ a ] . getElement ( ) . $ . checked ) { b [ a ] . getElement ( ) . focus ( ) ; return } b [ 0 ] . getElement ( ) . focus ( ) } , click : function ( ) { this . _ . dialog . _ . currentFocusIndex = this . focusIndex } , eventProcessors : { onChange : function ( b ,
a ) { if ( ! CKEDITOR . env . ie || 8 < CKEDITOR . env . version ) return v . onChange . apply ( this , arguments ) ; b . on ( "load" , function ( ) { for ( var a = this . _ . children , b = this , c = 0 ; c < a . length ; c ++ ) a [ c ] . getElement ( ) . on ( "propertychange" , function ( a ) { a = a . data . $ ; "checked" == a . propertyName && this . $ . checked && b . fire ( "change" , { value : this . getAttribute ( "value" ) } ) } ) } , this ) ; this . on ( "change" , a ) ; return null } } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . file . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . labeledElement , q , { getInputElement : function ( ) { var b =
CKEDITOR. document . getById ( this . _ . frameId ) . getFrameDocument ( ) ; return 0 < b . $ . forms . length ? new CKEDITOR . dom . element ( b . $ . forms [ 0 ] . elements [ 0 ] ) : this . getElement ( ) } , submit : function ( ) { this . getInputElement ( ) . getParent ( ) . $ . submit ( ) ; return this } , getAction : function ( ) { return this . getInputElement ( ) . getParent ( ) . $ . action } , registerEvents : function ( b ) { var a = /^on([A-Z]\w+)/ , d , e = function ( a , b , c , d ) { a . on ( "formLoaded" , function ( ) { a . getInputElement ( ) . on ( c , d , a ) } ) } , c ; for ( c in b ) if ( d = c . match ( a ) ) this . eventProcessors [ c ] ? this . eventProcessors [ c ] . call ( this ,
this . _ . dialog , b [ c ] ) : e ( this , this . _ . dialog , d [ 1 ] . toLowerCase ( ) , b [ c ] ) ; return this } , reset : function ( ) { function b ( ) { d . $ . open ( ) ; var b = "" ; e . size && ( b = e . size - ( CKEDITOR . env . ie ? 7 : 0 ) ) ; var k = a . frameId + "_input" ; d . $ . write ( [ '\x3chtml dir\x3d"' + g + '" lang\x3d"' + n + '"\x3e\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e\x3cbody style\x3d"margin: 0; overflow: hidden; background: transparent;"\x3e' , '\x3cform enctype\x3d"multipart/form-data" method\x3d"POST" dir\x3d"' + g + '" lang\x3d"' + n + '" action\x3d"' , CKEDITOR . tools . htmlEncode ( e . action ) ,
'"\x3e\x3clabel id\x3d"' , a . labelId , '" for\x3d"' , k , '" style\x3d"display:none"\x3e' , CKEDITOR . tools . htmlEncode ( e . label ) , '\x3c/label\x3e\x3cinput style\x3d"width:100%" id\x3d"' , k , '" aria-labelledby\x3d"' , a . labelId , '" type\x3d"file" name\x3d"' , CKEDITOR . tools . htmlEncode ( e . id || "cke_upload" ) , '" size\x3d"' , CKEDITOR . tools . htmlEncode ( 0 < b ? b : "" ) , '" /\x3e\x3c/form\x3e\x3c/body\x3e\x3c/html\x3e\x3cscript\x3e' , CKEDITOR . env . ie ? "(" + CKEDITOR . tools . fixDomain + ")();" : "" , "window.parent.CKEDITOR.tools.callFunction(" + f + ");" ,
"window.onbeforeunload \x3d function() {window.parent.CKEDITOR.tools.callFunction(" + h + ")}" , "\x3c/script\x3e" ] . join ( "" ) ) ; d . $ . close ( ) ; for ( b = 0 ; b < c . length ; b ++ ) c [ b ] . enable ( ) } var a = this . _ , d = CKEDITOR . document . getById ( a . frameId ) . getFrameDocument ( ) , e = a . definition , c = a . buttons , f = this . formLoadedNumber , h = this . formUnloadNumber , g = a . dialog . _ . editor . lang . dir , n = a . dialog . _ . editor . langCode ; f || ( f = this . formLoadedNumber = CKEDITOR . tools . addFunction ( function ( ) { this . fire ( "formLoaded" ) } , this ) , h = this . formUnloadNumber = CKEDITOR . tools . addFunction ( function ( ) { this . getInputElement ( ) . clearCustomData ( ) } ,
this ) , this . getDialog ( ) . _ . editor . on ( "destroy" , function ( ) { CKEDITOR . tools . removeFunction ( f ) ; CKEDITOR . tools . removeFunction ( h ) } ) ) ; CKEDITOR . env . gecko ? setTimeout ( b , 500 ) : b ( ) } , getValue : function ( ) { return this . getInputElement ( ) . $ . value || "" } , setInitValue : function ( ) { this . _ . initValue = "" } , eventProcessors : { onChange : function ( b , a ) { this . _ . domOnChangeRegistered || ( this . on ( "formLoaded" , function ( ) { this . getInputElement ( ) . on ( "change" , function ( ) { this . fire ( "change" , { value : this . getValue ( ) } ) } , this ) } , this ) , this . _ . domOnChangeRegistered =
! 0 ) ; this . on ( "change" , a ) } } , keyboardFocusable : ! 0 } , ! 0 ) ; CKEDITOR . ui . dialog . fileButton . prototype = new CKEDITOR . ui . dialog . button ; CKEDITOR . ui . dialog . fieldset . prototype = CKEDITOR . tools . clone ( CKEDITOR . ui . dialog . hbox . prototype ) ; CKEDITOR . dialog . addUIElement ( " text", r ) ; CKEDITOR . dialog . addUIElement ( " password", r ) ; CKEDITOR . dialog . addUIElement ( " tel", r ) ; CKEDITOR . dialog . addUIElement ( " textarea", m ) ; CKEDITOR . dialog . addUIElement ( " checkbox", m ) ; CKEDITOR . dialog . addUIElement ( "radio" , m ) ; CKEDITOR . dialog . addUIElement ( "button" , m ) ;
CKEDITOR . dialog . addUIElement ( "select" , m ) ; CKEDITOR . dialog . addUIElement ( "file" , m ) ; CKEDITOR . dialog . addUIElement ( "fileButton" , m ) ; CKEDITOR . dialog . addUIElement ( "html" , m ) ; CKEDITOR . dialog . addUIElement ( "fieldset" , { build : function ( b , a , d ) { for ( var e = a . children , c , f = [ ] , h = [ ] , g = 0 ; g < e . length && ( c = e [ g ] ) ; g ++ ) { var k = [ ] ; f . push ( k ) ; h . push ( CKEDITOR . dialog . _ . uiElementBuilders [ c . type ] . build ( b , c , k ) ) } return new CKEDITOR . ui . dialog [ a . type ] ( b , h , f , d , a ) } } ) } } ) ; 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 I ( a ) { a . _ . tabBarMode = ! 0 ; a . _ . tabs [ a . _ . currentTabId ] [ 0 ] . focus ( ) ; a . _ . currentFocusIndex = - 1 } function J ( ) { for ( var a = this . _ . tabIdList . length , b = CKEDITOR . tools . indexOf ( this . _ . tabIdList , this . _ . currentTabId ) + a , c = b - 1 ; c > b - a ; c -- ) if ( this . _ . tabs [ this . _ . tabIdList [ c % a ] ] [ 0 ] . $ . offsetHeight ) return this . _ . tabIdList [ c % a ] ; return null } function W ( ) { for ( var a = this . _ . tabIdList . length , b = CKEDITOR . tools . indexOf ( this . _ . tabIdList , this . _ . currentTabId ) , c = b + 1 ; c < b + a ; c ++ ) if ( this . _ . tabs [ this . _ . tabIdList [ c % a ] ] [ 0 ] . $ . offsetHeight ) return this . _ . tabIdList [ c %
a ] ; return null } function K ( a , b ) { for ( var c = a . $ . getElementsByTagName ( "input" ) , e = 0 , d = c . length ; e < d ; e ++ ) { var f = new CKEDITOR . dom . element ( c [ e ] ) ; "text" == f . getAttribute ( "type" ) . toLowerCase ( ) && ( b ? ( f . setAttribute ( "value" , f . getCustomData ( "fake_value" ) || "" ) , f . removeCustomData ( "fake_value" ) ) : ( f . setCustomData ( "fake_value" , f . getAttribute ( "value" ) ) , f . setAttribute ( "value" , "" ) ) ) } } function X ( a , b ) { var c = this . getInputElement ( ) ; c && ( a ? c . removeAttribute ( "aria-invalid" ) : c . setAttribute ( "aria-invalid" , ! 0 ) ) ; a || ( this . select ? this . select ( ) :
this . focus ( ) ) ; b && alert ( b ) ; this . fire ( "validated" , { valid : a , msg : b } ) } function Y ( ) { var a = this . getInputElement ( ) ; a && a . removeAttribute ( "aria-invalid" ) } function Z ( a ) { var b = CKEDITOR . dom . element . createFromHtml ( CKEDITOR . addTemplate ( "dialog" , aa ) . 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" : "" } ) ) , c = b . getChild ( [ 0 , 0 , 0 , 0 , 0 ] ) , e =
@ -759,39 +759,39 @@ method:"drop"},1);d.sourceEditor.fire("saveSnapshot");d.sourceEditor.editable().
var e = a . editable ( ) , l = CKEDITOR . plugins . clipboard . getDropTarget ( a ) , q = a . ui . space ( "top" ) , v = a . ui . space ( "bottom" ) ; b . preventDefaultDropOnElement ( q ) ; b . preventDefaultDropOnElement ( v ) ; e . attachListener ( l , "dragstart" , g ) ; e . attachListener ( a , "dragstart" , b . resetDragDataTransfer , b , null , 1 ) ; e . attachListener ( a , "dragstart" , function ( c ) { b . initDragDataTransfer ( c , a ) } , null , null , 2 ) ; e . attachListener ( a , "dragstart" , function ( ) { var c = b . dragRange = a . getSelection ( ) . getRanges ( ) [ 0 ] ; CKEDITOR . env . ie && 10 > CKEDITOR . env . version && ( b . dragStartContainerChildCount =
c ? f ( c . startContainer ) : null , b . dragEndContainerChildCount = c ? f ( c . endContainer ) : null ) } , null , null , 100 ) ; e . attachListener ( l , "dragend" , g ) ; e . attachListener ( a , "dragend" , b . initDragDataTransfer , b , null , 1 ) ; e . attachListener ( a , "dragend" , b . resetDragDataTransfer , b , null , 100 ) ; e . attachListener ( l , "dragover" , function ( a ) { if ( CKEDITOR . env . edge ) a . data . preventDefault ( ) ; else { 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 ( ) } } ) ; e . attachListener ( l , "drop" , function ( c ) { if ( ! c . data . $ . defaultPrevented && ( c . data . preventDefault ( ) , ! a . readOnly ) ) { var d = c . data . getTarget ( ) ; if ( ! d . isReadOnly ( ) || d . type == CKEDITOR . NODE _ELEMENT && d . is ( "html" ) ) { var d = b . getRangeAtDropPosition ( c , a ) , e = b . dragRange ; d && g ( c , e , d ) } } } , null , null , 9999 ) ; e . attachListener ( a , "drop" , b . initDragDataTransfer , b , null , 1 ) ; e . attachListener ( a , "drop" , function ( h ) { if ( h = h . data ) { var e = h . dropRange , p = h . dragRange , k = h . dataTransfer ; k . getTransferType ( a ) == CKEDITOR . DATA _TRANSFER _INTERNAL ?
setTimeout ( function ( ) { b . internalDrop ( p , e , k , a ) } , 0 ) : k . getTransferType ( a ) == CKEDITOR . DATA _TRANSFER _CROSS _EDITORS ? c ( p , e , k ) : d ( e , k ) } } , null , null , 9999 ) } ) } var r ; CKEDITOR . plugins . add ( "clipboard" , { requires : "dialog,notification,toolbar" , _supportedFileMatchers : [ ] , init : function ( a ) { function b ( a) { return - 1 !== CKEDITOR . tools . indexOf ( [ "image/png" , "image/jpeg" , "image/gif" ] , a. type ) } function c ( b ) { return CKEDITOR . tools . array . some ( a . plugins . clipboard . _supportedFileMatchers , function ( a ) { return a ( b ) } ) } function d ( b ) { b . length &&
( b = CKEDITOR . tools . array . unique ( b ) , b = CKEDITOR . tools . array . filter ( b , function ( a ) { return ! ! CKEDITOR . tools . trim ( a ) } ) , b = g ( b . join ( ", " ) ) , a . showNotification ( b , "info" , a . config . clipboard _notificationDuration ) ) } function g ( b ) { return b ? a . lang . clipboard . fileFormatNotSupportedNotification . replace ( /\${formats\}/g , "\x3cem\x3e" + b + "\x3c/em\x3e" ) : a . lang . clipboard . fileWithoutFormatNotSupportedNotification } function f ( a , b ) { return CKEDITOR . env . ie && a . data . fileTransferCancel || ! ( CKEDITOR . env . ie || b && v !== b . id ) ? ! 1 : b . isFileTransfer ( ) &&
1 === b . getFilesCount ( ) } var e , l = C ( a ) ; a . config . forcePasteAsPlainText ? e = "plain-text" : a . config . pasteFilter ? e = a . config . pasteFilter : ! CKEDITOR . env . webkit || "pasteFilter" in a . config || ( e = "semantic-content" ) ; a . pasteFilter = l . get ( e ) ; y ( a ) ; E ( a ) ; CKEDITOR . dialog . add ( "paste" , CKEDITOR . getUrl ( this . path + "dialogs/paste.js" ) ) ; var q = CKEDITOR . plugins . clipboard . isCustomDataTypesSupported || CKEDITOR . plugins . clipboard . isFileApiSupported , v ; CKEDITOR . plugins . clipboard . addFileMatcher ( a , b ) ; a . on ( "paste" , function ( a ) { if ( q ) { var b = a . data ;
a = b . dataTransfer ; if ( ! b . dataValue ) { for ( var b = [ ] , e = 0 ; e < a . getFilesCount ( ) ; e ++ ) { var k = a . getFile ( e ) ; c ( k ) || b . push ( k . type ) } d ( b ) } } } , null , null , 1 ) ; a . on ( "paste" , function ( c ) { if ( q && a . config . clipboard _handleImages ) { var d = c . data , e = d . dataTransfer ; if ( ! d . dataValue && f ( c , e ) && ( e = e . getFile ( 0 ) , b ( e ) ) ) { var k = new FileReader ; k . addEventListener ( "load" , function ( ) { c . data . dataValue = '\x3cimg src\x3d"' + k . result + '" /\x3e' ; a . fire ( "paste" , c . data ) } , ! 1 ) ; k . addEventListener ( "abort" , function ( ) { CKEDITOR . env . ie && ( c . data . fileTransferCancel =
! 0 ) ; a . fire ( "paste" , c . data ) } , ! 1 ) ; k . addEventListener ( "error" , function ( ) { CKEDITOR . env . ie && ( c . data . fileTransferCancel = ! 0 ) ; a . fire ( "paste" , c . data ) } , ! 1 ) ; k . readAsDataURL ( e ) ; v = d . dataTransfer . id ; c . stop ( ) } } } , null , null , 1 ) ; a . on ( "paste" , function ( b ) { b . data . dataTransfer || ( b . data . dataTransfer = new CKEDITOR . plugins . clipboard . dataTransfer ) ; if ( ! b . data . dataValue ) { var c = b . data . dataTransfer , d = c . getData ( "text/html" ) ; if ( d ) b . data . dataValue = d , b . data . type = "html" ; else if ( d = c . getData ( "text/plain" ) ) b . data . dataValue = a . editable ( ) . transformPlainTextToHtml ( d ) ,
b . data . type = "text" } } , null , null , 1 ) ; a . on ( "paste" , function ( a ) { var b = a . data . dataValue , c = 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;" ) } ) ) , - 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 d , e , f = new CKEDITOR . dom . element ( "div" ) ; for ( f . setHtml ( b ) ; 1 == f . getChildCount ( ) && ( d = f . getFirst ( ) ) && d . type == CKEDITOR . NODE _ELEMENT && ( d . hasClass ( "cke_editable" ) || d . hasClass ( "cke_contents" ) ) ; ) f = e = d ; e && ( b = e . getHtml ( ) . replace ( /<br>$/i , "" ) ) } CKEDITOR . env . ie ? b = b . replace ( /^ (?: |\r\n)?<(\w+)/g , function ( b , d ) { return d . toLowerCase ( ) in c ? ( a . data . preSniffing = "html" , "\x3c" + d ) : b } ) : CKEDITOR . env . webkit ? b = b . replace ( /<\/(\w+)><div><br><\/div>$/ ,
function ( b , d ) { return d in c ? ( a . data . endsWithEOL = 1 , "\x3c/" + d + "\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 c = a . _ . nextPasteType || b . type , d = b . dataValue , e , f = a . config . clipboard _defaultContentType || "html" , g = b . dataTransfer . getTransferType ( a ) == CKEDITOR . DATA _TRANSFER _EXTERNAL , q = ! 0 === a . config . forcePasteAsPlainText ; e = "html" == c || "html" == b . preSniffing ? "html" : z ( d ) ; delete a . _ . nextPasteType ; "htmlifiedtext" == e && ( d = A ( a . config , d ) ) ;
if ( "text" == c && "html" == e ) d = x ( a , d , l . get ( "plain-text" ) ) ; else if ( g && a . pasteFilter && ! b . dontFilter || q ) d = x ( a , d , a . pasteFilter ) ; b . startsWithEOL && ( d = '\x3cbr data-cke-eol\x3d"1"\x3e' + d ) ; b . endsWithEOL && ( d += '\x3cbr data-cke-eol\x3d"1"\x3e' ) ; "auto" == c && ( c = "html" == e || "html" == f ? "html" : "text" ) ; b . type = c ; b . dataValue = d ; delete b . preSniffing ; delete b . startsWithEOL ; delete b . endsWithEOL } , 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 = { addFileMatcher : function ( a , b ) { a . plugins . clipboard . _supportedFileMatchers . push ( b ) } , isCustomCopyCutSupported : CKEDITOR . env . ie && 16 > CKEDITOR . env . version || CKEDITOR . env . iOS && 605 > CKEDITOR . env . version ? ! 1 : ! 0 , isCustomDataTypesSupported : ! CKEDITOR . env . ie || 16 <= CKEDITOR . env . version , isFileApiSupported : ! CKEDITOR . env . ie || 9 < CKEDITOR . env . version , mainPasteEvent : CKEDITOR . env . ie && ! CKEDITOR . env . edge ?
"beforepaste" : "paste" , addPasteButton : function ( a , b , c ) { a . ui . addButton && ( a . ui . addButton ( b , c ) , a . _ . pasteButtons || ( a . _ . pasteButtons = [ ] ) , a . _ . pasteButtons . push ( b ) ) } , 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 ( ) ) || CKEDITOR . env . safari && 603 <= CKEDITOR . env . version && ! CKEDITOR . env . iOS || CKEDITOR . env . iOS && 605 <= CKEDITOR . env . version || CKEDITOR . env . edge && 16 <= CKEDITOR . env . version ?
! 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 , c , d ) { function g ( a , c , d ) { var f = a ; f . type == CKEDITOR . NODE _TEXT && ( f = a . getParent ( ) ) ; if ( f . equals ( c ) && d != c . getChildCount ( ) ) return a = b . startContainer . getChild ( b . startOffset - 1 ) , c = b . startContainer . getChild ( b . startOffset ) , a && a . type == CKEDITOR . NODE _TEXT && c && c . type == CKEDITOR . NODE _TEXT && ( d = a . getLength ( ) , a . setText ( a . getText ( ) + c . getText ( ) ) , c . remove ( ) , b . setStart ( a ,
d ) , b . collapse ( ! 0 ) ) , ! 0 } var f = b . startContainer ; "number" == typeof d && "number" == typeof c && f . type == CKEDITOR . NODE _ELEMENT && ( g ( a . startContainer , f , c ) || g ( a . endContainer , f , d ) ) } , isDropRangeAffectedByDragRange : function ( a , b ) { var c = b . startContainer , d = b . endOffset ; return a . endContainer . equals ( c ) && a . endOffset <= d || a . startContainer . getParent ( ) . equals ( c ) && a . startContainer . getIndex ( ) < d || a . endContainer . getParent ( ) . equals ( c ) && a . endContainer . getIndex ( ) < d ? ! 0 : ! 1 } , internalDrop : function ( a , b , c , d ) { var g = CKEDITOR . plugins . clipboard ,
f = d . editable ( ) , e , l ; d . fire ( "saveSnapshot" ) ; d . fire ( "lockSnapshot" , { dontUpdate : 1 } ) ; CKEDITOR . env . ie && 10 > CKEDITOR . env . version && this . fixSplitNodesAfterDrop ( a , b , g . dragStartContainerChildCount , g . dragEndContainerChildCount ) ; ( l = this . isDropRangeAffectedByDragRange ( a , b ) ) || ( e = a . createBookmark ( ! 1 ) ) ; g = b . clone ( ) . createBookmark ( ! 1 ) ; l && ( e = a . createBookmark ( ! 1 ) ) ; a = e . startNode ; b = e . endNode ; l = g . startNode ; b && a . getPosition ( l ) & CKEDITOR . POSITION _PRECEDING && b . getPosition ( l ) & CKEDITOR . POSITION _FOLLOWING && l . insertBefore ( a ) ; a = d . createRange ( ) ;
a . moveToBookmark ( e ) ; f . extractHtmlFromRange ( a , 1 ) ; b = d . createRange ( ) ; g . startNode . getCommonAncestor ( f ) || ( g = d . getSelection ( ) . createBookmarks ( ) [ 0 ] ) ; b . moveToBookmark ( g ) ; t ( d , { dataTransfer : c , method : "drop" , range : b } , 1 ) ; d . fire ( "unlockSnapshot" ) } , getRangeAtDropPosition : function ( a , b ) { var c = a . data . $ , d = c . clientX , g = c . clientY , f = b . getSelection ( ! 0 ) . getRanges ( ) [ 0 ] , e = b . createRange ( ) ; if ( a . data . testRange ) return a . data . testRange ; if ( document . caretRangeFromPoint && b . document . $ . caretRangeFromPoint ( d , g ) ) c = b . document . $ . caretRangeFromPoint ( d ,
g ) , e . setStart ( CKEDITOR . dom . node ( c . startContainer ) , c . startOffset ) , e . collapse ( ! 0 ) ; else if ( c . rangeParent ) e . setStart ( CKEDITOR . dom . node ( c . rangeParent ) , c . rangeOffset ) , e . collapse ( ! 0 ) ; else { if ( CKEDITOR . env . ie && 8 < CKEDITOR . env . version && f && b . editable ( ) . hasFocus ) return f ; if ( document . body . createTextRange ) { b . focus ( ) ; c = b . document . getBody ( ) . $ . createTextRange ( ) ; try { for ( var l = ! 1 , q = 0 ; 20 > q && ! l ; q ++ ) { if ( ! l ) try { c . moveToPoint ( d , g - q ) , l = ! 0 } catch ( r ) { } if ( ! l ) try { c . moveToPoint ( d , g + q ) , l = ! 0 } catch ( h ) { } } if ( l ) { var m = "cke-temp-" + ( new Date ) . getTime ( ) ;
c . pasteHTML ( '\x3cspan id\x3d"' + m + '"\x3e \x3c/span\x3e' ) ; var p = b . document . getById ( m ) ; e . moveToPosition ( p , CKEDITOR . POSITION _BEFORE _START ) ; p . remove ( ) } else { var k = b . document . $ . elementFromPoint ( d , g ) , n = new CKEDITOR . dom . element ( k ) , u ; if ( n . equals ( b . editable ( ) ) || "html" == n . getName ( ) ) return f && f . startContainer && ! f . startContainer . equals ( b . editable ( ) ) ? f : null ; u = n . getClientRect ( ) ; d < u . left ? e . setStartAt ( n , CKEDITOR . POSITION _AFTER _START ) : e . setStartAt ( n , CKEDITOR . POSITION _BEFORE _END ) ; e . collapse ( ! 0 ) } } catch ( t ) { return null } } else return null } return e } ,
initDragDataTransfer : function ( a , b ) { var c = a . data . $ ? a . data . $ . dataTransfer : null , d = new this . dataTransfer ( c , b ) ; "dragstart" === a . name && d . storeId ( ) ; c ? this . dragData && d . id == this . dragData . id ? d = this . dragData : this . dragData = d : this . dragData ? d = this . dragData : this . dragData = d ; a . data . dataTransfer = d } , resetDragDataTransfer : function ( ) { this . dragData = null } , initPasteDataTransfer : function ( a , b ) { if ( this . isCustomCopyCutSupported ) { if ( a && a . data && a . data . $ ) { var c = a . data . $ . clipboardData , d = new this . dataTransfer ( c , b ) ; "copy" !== a . name &&
"cut" !== a . name || d . storeId ( ) ; this . copyCutData && d . id == this . copyCutData . id ? ( d = this . copyCutData , d . $ = c ) : this . copyCutData = d ; return d } return new this . dataTransfer ( null , b ) } return new this . dataTransfer ( CKEDITOR . env . edge && a && a . data . $ && a . data . $ . clipboardData || null , b ) } , preventDefaultDropOnElement : function ( a ) { a && a . on ( "dragover" , D ) } } ; r = CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ? "cke/id" : "Text" ; CKEDITOR . plugins . clipboard . dataTransfer = function ( a , b ) { a && ( this . $ = a ) ; this . _ = { metaRegExp : /^<meta.*?>/i , fragmentRegExp : /\s*\x3c!--StartFragment--\x3e|\x3c!--EndFragment--\x3e\s*/g ,
types : [ ] , data : { } , files : [ ] , nativeHtmlCache : "" , normalizeType : function ( a ) { a = a . toLowerCase ( ) ; return "text" == a || "text/plain" == a ? "Text" : "url" == a ? "URL" : "files" === a ? "Files" : a } } ; this . _ . fallbackDataTransfer = new CKEDITOR . plugins . clipboard . fallbackDataTransfer ( this ) ; this . id = this . getData ( r ) ; this . id || ( this . id = "Text" == r ? "" : "cke-" + CKEDITOR . tools . getUniqueId ( ) ) ; b && ( this . sourceEditor = b , this . setData ( "text/html" , b . getSelectedHtml ( 1 ) ) , "Text" == r || 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 = { getData : function ( a , b ) { a = this . _ . normalizeType ( a ) ; var c = "text/html" == a && b ? this . _ . nativeHtmlCache : this . _ . data [ a ] ; if ( void 0 === c || null === c || "" === c ) { if ( this . _ . fallbackDataTransfer . isRequired ( ) ) c = this . _ . fallbackDataTransfer . getData ( a , b ) ; else try { c = this . $ . getData ( a ) || "" } catch ( d ) { c = "" } "text/html" != a || b || ( c = this . _stripHtml ( c ) ) } "Text" == a && CKEDITOR . env . gecko &&
this . getFilesCount ( ) && "file://" == c . substring ( 0 , 7 ) && ( c = "" ) ; if ( "string" === typeof c ) var g = c . indexOf ( "\x3c/html\x3e" ) , c = - 1 !== g ? c . substring ( 0 , g + 7 ) : c ; return c } , setData : function ( a , b ) { a = this . _ . normalizeType ( a ) ; "text/html" == a ? ( this . _ . data [ a ] = this . _stripHtml ( b ) , this . _ . nativeHtmlCache = b ) : this . _ . data [ a ] = b ; if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported || "URL" == a || "Text" == a ) if ( "Text" == r && "Text" == a && ( this . id = b ) , this . _ . fallbackDataTransfer . isRequired ( ) ) this . _ . fallbackDataTransfer . setData ( a , b ) ; else try { this . $ . setData ( a ,
b ) } catch ( c ) { } } , storeId : function ( ) { "Text" !== r && this . setData ( r , this . id ) } , 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 ( a ) { a = b . _ . normalizeType ( a ) ; var c = b . getData ( a ) ; "text/html" == a && ( b . _ . nativeHtmlCache = b . getData ( a , ! 0 ) , c = b . _stripHtml ( c ) ) ; c && ( b . _ . data [ a ] = c ) ; b . _ . types . push ( a ) } if ( this . $ ) { var b = this , c , d , g ; if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ) { if ( this . $ . types ) for ( c =
0 ; c < this . $ . types . length ; c ++ ) a ( this . $ . types [ c ] ) } else a ( "Text" ) , a ( "URL" ) ; d = this . _getImageFromClipboard ( ) ; if ( ( g = this . $ && this . $ . files || null ) || d ) { this . _ . files = [ ] ; if ( g && g . length ) for ( c = 0 ; c < g . length ; c ++ ) this . _ . files . push ( g [ c ] ) ; 0 === this . _ . files . length && d && this . _ . files . push ( d ) } } } , getFilesCount : function ( ) { if ( this . _ . files . length ) return this . _ . files . length ; var a = this . $ && this . $ . files || null ; return a && a . length ? a . length : this . _getImageFromClipboard ( ) ? 1 : 0 } , getFile : function ( a ) { if ( this . _ . files . length ) return this . _ . files [ a ] ;
var b = this . $ && this . $ . files || null ; return b && b . length ? b [ a ] : 0 === a ? this . _getImageFromClipboard ( ) : void 0 } , isFileTransfer : function ( ) { var a = this . getTypes ( ) , a = CKEDITOR . tools . array . filter ( a , function ( a ) { return "application/x-moz-file" !== a } ) ; return 1 === a . length && "files" === a [ 0 ] . toLowerCase ( ) } , isEmpty : function ( ) { var a = { } , b ; if ( this . getFilesCount ( ) ) return ! 1 ; CKEDITOR . tools . array . forEach ( CKEDITOR . tools . object . keys ( this . _ . data ) , function ( b ) { 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" != r && ( a [ r ] = 0 ) ; for ( b in a ) if ( a [ b ] && "" !== this . getData ( b ) ) return ! 1 ; return ! 0 } , getTypes : function ( ) { return 0 < this . _ . types . length ? this . _ . types : this . $ && this . $ . types ? [ ] . slice . call ( this . $ . types ) : [ ] } , _getImageFromClipboard : function ( ) { var a ; try { if ( this . $ && this . $ . items && this . $ . items [ 0 ] && ( a = this . $ . items [ 0 ] . getAsFile ( ) ) && a . type ) return a } catch ( b ) { } } , _stripHtml : function ( a ) { function b ( a ) { var b = new CKEDITOR . htmlParser , g , f ; b . onTagOpen = function ( a ) { "body" ===
a && ( g = b . _ . htmlPartsRegex . lastIndex ) } ; b . onTagClose = function ( a ) { "body" === a && ( f = b . _ . htmlPartsRegex . lastIndex ) } ; b . parse ( a ) ; return "number" !== typeof g || "number" !== typeof f ? a : a . substring ( g , f ) . replace ( /<\/body\s*>$/gi , "" ) } a && a . length && ( a = b ( a ) , a = a . replace ( this . _ . metaRegExp , "" ) , a = a . replace ( this . _ . fragmentRegExp , "" ) ) ; return a } } ; CKEDITOR . plugins . clipboard . fallbackDataTransfer = function ( a ) { this . _dataTransfer = a ; this . _customDataFallbackType = "text/html" } ; CKEDITOR . plugins . clipboard . fallbackDataTransfer . _isCustomMimeTypeSupported =
null ; CKEDITOR . plugins . clipboard . fallbackDataTransfer . _customTypes = [ ] ; CKEDITOR . plugins . clipboard . fallbackDataTransfer . prototype = { isRequired : function ( ) { var a = CKEDITOR . plugins . clipboard . fallbackDataTransfer , b = this . _dataTransfer . $ ; if ( null === a . _isCustomMimeTypeSupported ) if ( b ) { a . _isCustomMimeTypeSupported = ! 1 ; if ( CKEDITOR . env . edge && 17 <= CKEDITOR . env . version ) return ! 0 ; try { b . setData ( "cke/mimetypetest" , "cke test value" ) , a . _isCustomMimeTypeSupported = "cke test value" === b . getData ( "cke/mimetypetest" ) , b . clearData ( "cke/mimetypetest" ) } catch ( c ) { } } else return ! 1 ;
return ! a . _isCustomMimeTypeSupported } , getData : function ( a , b ) { var c = this . _getData ( this . _customDataFallbackType , ! 0 ) ; if ( b ) return c ; var c = this . _extractDataComment ( c ) , d = null , d = a === this . _customDataFallbackType ? c . content : c . data && c . data [ a ] ? c . data [ a ] : this . _getData ( a , ! 0 ) ; return null !== d ? d : "" } , setData : function ( a , b ) { var c = a === this . _customDataFallbackType ; c && ( b = this . _applyDataComment ( b , this . _getFallbackTypeData ( ) ) ) ; var d = b , g = this . _dataTransfer . $ ; try { g . setData ( a , d ) , c && ( this . _dataTransfer . _ . nativeHtmlCache = d ) } catch ( f ) { if ( this . _isUnsupportedMimeTypeError ( f ) ) { c =
CKEDITOR . plugins . clipboard . fallbackDataTransfer ; - 1 === CKEDITOR . tools . indexOf ( c . _customTypes , a ) && c . _customTypes . push ( a ) ; var c = this . _getFallbackTypeContent ( ) , e = this . _getFallbackTypeData ( ) ; e [ a ] = d ; try { d = this . _applyDataComment ( c , e ) , g . setData ( this . _customDataFallbackType , d ) , this . _dataTransfer . _ . nativeHtmlCache = d } catch ( l ) { d = "" } } } return d } , _getData : function ( a , b ) { var c = this . _dataTransfer . _ . data ; if ( ! b && c [ a ] ) return c [ a ] ; try { return this . _dataTransfer . $ . getData ( a ) } catch ( d ) { return null } } , _getFallbackTypeContent : function ( ) { var a =
this . _dataTransfer . _ . data [ this . _customDataFallbackType ] ; a || ( a = this . _extractDataComment ( this . _getData ( this . _customDataFallbackType , ! 0 ) ) . content ) ; return a } , _getFallbackTypeData : function ( ) { var a = CKEDITOR . plugins . clipboard . fallbackDataTransfer . _customTypes , b = this . _extractDataComment ( this . _getData ( this . _customDataFallbackType , ! 0 ) ) . data || { } , c = this . _dataTransfer . _ . data ; CKEDITOR . tools . array . forEach ( a , function ( a ) { void 0 !== c [ a ] ? b [ a ] = c [ a ] : void 0 !== b [ a ] && ( b [ a ] = b [ a ] ) } , this ) ; return b } , _isUnsupportedMimeTypeError : function ( a ) { return a . message &&
- 1 !== a . message . search ( /element not found/gi ) } , _extractDataComment : function ( a ) { var b = { data : null , content : a || "" } ; if ( a && 16 < a . length ) { var c ; ( c = /\x3c!--cke-data:(.*?)--\x3e/g . exec ( a ) ) && c [ 1 ] && ( b . data = JSON . parse ( decodeURIComponent ( c [ 1 ] ) ) , b . content = a . replace ( c [ 0 ] , "" ) ) } return b } , _applyDataComment : function ( a , b ) { var c = "" ; b && CKEDITOR . tools . object . keys ( b ) . length && ( c = "\x3c!--cke-data:" + encodeURIComponent ( JSON . stringify ( b ) ) + "--\x3e" ) ; return c + ( a && a . length ? a : "" ) } } } ) ( ) ;
CKEDITOR . config . clipboard _notificationDuration = 1E4 ; CKEDITOR . config . clipboard _handleImages = ! 0 ; CKEDITOR . plugins . add ( "panelbutton" , { requires : "button" , onLoad : function ( ) { function e ( c ) { var b = this . _ ; b . state != CKEDITOR . TRISTATE _DISABLED && ( this . createPanel ( c ) , b . on ? b . panel . hide ( ) : b . panel . showBlock ( this . _ . id , this . document . getById ( this . _ . id ) , 4 ) ) } CKEDITOR . ui . panelButton = CKEDITOR . tools . createClass ( { base : CKEDITOR . ui . button , $ : function ( c ) { var b = c . panel || { } ; delete c . panel ; this . base ( c ) ; this . document = b . parent && b . parent . getDocument ( ) || CKEDITOR . document ; b . block = { attributes : b . attributes } ; b . toolbarRelated = ! 0 ; this . hasArrow =
setTimeout ( function ( ) { b . internalDrop ( p , e , k , a ) } , 0 ) : k . getTransferType ( a ) == CKEDITOR . DATA _TRANSFER _CROSS _EDITORS ? c ( p , e , k ) : d ( e , k ) } } , null , null , 9999 ) } ) } var r ; CKEDITOR . plugins . add ( "clipboard" , { requires : "dialog,notification,toolbar" , _supportedFileMatchers : [ ] , init : function ( a ) { function b ( b) { return a . config . clipboard _handleImages ? - 1 !== CKEDITOR . tools . indexOf ( [ "image/png" , "image/jpeg" , "image/gif" ] , b. type ) : ! 1 } function c ( b ) { return CKEDITOR . tools . array . some ( a . plugins . clipboard . _supportedFileMatchers , function ( a ) { return a ( b ) } ) }
function d ( b ) { b . length && ( b = CKEDITOR . tools . array . unique ( b ) , b = CKEDITOR . tools . array . filter ( b , function ( a ) { return ! ! CKEDITOR . tools . trim ( a ) } ) , b = g ( b . join ( ", " ) ) , a . showNotification ( b , "info" , a . config . clipboard _notificationDuration ) ) } function g ( b ) { return b ? a . lang . clipboard . fileFormatNotSupportedNotification . replace ( /\${formats\}/g , "\x3cem\x3e" + b + "\x3c/em\x3e" ) : a . lang . clipboard . fileWithoutFormatNotSupportedNotification } function f ( a , b ) { return CKEDITOR . env . ie && a . data . fileTransferCancel || ! ( CKEDITOR . env . ie || b && v !==
b . id ) ? ! 1 : b . isFileTransfer ( ) && 1 === b . getFilesCount ( ) } var e , l = C ( a ) ; a . config . forcePasteAsPlainText ? e = "plain-text" : a . config . pasteFilter ? e = a . config . pasteFilter : ! CKEDITOR . env . webkit || "pasteFilter" in a . config || ( e = "semantic-content" ) ; a . pasteFilter = l . get ( e ) ; y ( a ) ; E ( a ) ; CKEDITOR . dialog . add ( "paste" , CKEDITOR . getUrl ( this . path + "dialogs/paste.js" ) ) ; var q = CKEDITOR . plugins . clipboard . isCustomDataTypesSupported || CKEDITOR . plugins . clipboard . isFileApiSupported , v ; CKEDITOR . plugins . clipboard . addFileMatcher ( a , b ) ; a . on ( "paste" ,
function ( a ) { if ( q ) { var b = a . data ; a = b . dataTransfer ; if ( ! b . dataValue ) { for ( var b = [ ] , e = 0 ; e < a . getFilesCount ( ) ; e ++ ) { var k = a . getFile ( e ) ; c ( k ) || b . push ( k . type ) } d ( b ) } } } , null , null , 1 ) ; a . on ( "paste" , function ( c ) { if ( q && a . config . clipboard _handleImages ) { var d = c . data , e = d . dataTransfer ; if ( ! d . dataValue && f ( c , e ) && ( e = e . getFile ( 0 ) , b ( e ) ) ) { var k = new FileReader ; k . addEventListener ( "load" , function ( ) { c . data . dataValue = '\x3cimg src\x3d"' + k . result + '" /\x3e' ; a . fire ( "paste" , c . data ) } , ! 1 ) ; k . addEventListener ( "abort" , function ( ) { CKEDITOR . env . ie &&
( c . data . fileTransferCancel = ! 0 ) ; a . fire ( "paste" , c . data ) } , ! 1 ) ; k . addEventListener ( "error" , function ( ) { CKEDITOR . env . ie && ( c . data . fileTransferCancel = ! 0 ) ; a . fire ( "paste" , c . data ) } , ! 1 ) ; k . readAsDataURL ( e ) ; v = d . dataTransfer . id ; c . stop ( ) } } } , null , null , 1 ) ; a . on ( "paste" , function ( b ) { b . data . dataTransfer || ( b . data . dataTransfer = new CKEDITOR . plugins . clipboard . dataTransfer ) ; if ( ! b . data . dataValue ) { var c = b . data . dataTransfer , d = c . getData ( "text/html" ) ; if ( d ) b . data . dataValue = d , b . data . type = "html" ; else if ( d = c . getData ( "text/plain" ) ) b . data . dataValue =
a . editable ( ) . transformPlainTextToHtml ( d ) , b . data . type = "text" } } , null , null , 1 ) ; a . on ( "paste" , function ( a ) { var b = a . data . dataValue , c = 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;" ) } ) ) , - 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 d , e , f = new CKEDITOR . dom . element ( "div" ) ; for ( f . setHtml ( b ) ; 1 == f . getChildCount ( ) && ( d = f . getFirst ( ) ) && d . type == CKEDITOR . NODE _ELEMENT && ( d . hasClass ( "cke_editable" ) || d . hasClass ( "cke_contents" ) ) ; ) f = e = d ; e && ( b = e . getHtml ( ) . replace ( /<br>$/i , "" ) ) } CKEDITOR . env . ie ? b = b . replace ( /^ (?: |\r\n)?<(\w+)/g , function ( b , d ) { return d . toLowerCase ( ) in c ? ( a . data . preSniffing =
"html" , "\x3c" + d ) : b } ) : CKEDITOR . env . webkit ? b = b . replace ( /<\/(\w+)><div><br><\/div>$/ , function ( b , d ) { return d in c ? ( a . data . endsWithEOL = 1 , "\x3c/" + d + "\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 c = a . _ . nextPasteType || b . type , d = b . dataValue , e , f = a . config . clipboard _defaultContentType || "html" , g = b . dataTransfer . getTransferType ( a ) == CKEDITOR . DATA _TRANSFER _EXTERNAL , q = ! 0 === a . config . forcePasteAsPlainText ; e = "html" == c || "html" == b . preSniffing ?
"html" : z ( d ) ; delete a . _ . nextPasteType ; "htmlifiedtext" == e && ( d = A ( a . config , d ) ) ; if ( "text" == c && "html" == e ) d = x ( a , d , l . get ( "plain-text" ) ) ; else if ( g && a . pasteFilter && ! b . dontFilter || q ) d = x ( a , d , a . pasteFilter ) ; b . startsWithEOL && ( d = '\x3cbr data-cke-eol\x3d"1"\x3e' + d ) ; b . endsWithEOL && ( d += '\x3cbr data-cke-eol\x3d"1"\x3e' ) ; "auto" == c && ( c = "html" == e || "html" == f ? "html" : "text" ) ; b . type = c ; b . dataValue = d ; delete b . preSniffing ; delete b . startsWithEOL ; delete b . endsWithEOL } , 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 = { addFileMatcher : function ( a , b ) { a . plugins . clipboard . _supportedFileMatchers . push ( b ) } , isCustomCopyCutSupported : CKEDITOR . env . ie && 16 > CKEDITOR . env . version || CKEDITOR . env . iOS && 605 > CKEDITOR . env . version ? ! 1 : ! 0 , isCustomDataTypesSupported : ! CKEDITOR . env . ie || 16 <= CKEDITOR . env . version , isFileApiSupported : ! CKEDITOR . env . ie ||
9 < CKEDITOR . env . version , mainPasteEvent : CKEDITOR . env . ie && ! CKEDITOR . env . edge ? "beforepaste" : "paste" , addPasteButton : function ( a , b , c ) { a . ui . addButton && ( a . ui . addButton ( b , c ) , a . _ . pasteButtons || ( a . _ . pasteButtons = [ ] ) , a . _ . pasteButtons . push ( b ) ) } , 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 ( ) ) || CKEDITOR . env . safari && 603 <= CKEDITOR . env . version && ! CKEDITOR . env . iOS || CKEDITOR . env . iOS &&
605 <= CKEDITOR . env . version || CKEDITOR . env . edge && 16 <= CKEDITOR . env . version ? ! 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 , c , d ) { function g ( a , c , d ) { var f = a ; f . type == CKEDITOR . NODE _TEXT && ( f = a . getParent ( ) ) ; if ( f . equals ( c ) && d != c . getChildCount ( ) ) return a = b . startContainer . getChild ( b . startOffset - 1 ) , c = b . startContainer . getChild ( b . startOffset ) , a && a . type == CKEDITOR . NODE _TEXT && c && c . type == CKEDITOR . NODE _TEXT &&
( d = a . getLength ( ) , a . setText ( a . getText ( ) + c . getText ( ) ) , c . remove ( ) , b . setStart ( a , d ) , b . collapse ( ! 0 ) ) , ! 0 } var f = b . startContainer ; "number" == typeof d && "number" == typeof c && f . type == CKEDITOR . NODE _ELEMENT && ( g ( a . startContainer , f , c ) || g ( a . endContainer , f , d ) ) } , isDropRangeAffectedByDragRange : function ( a , b ) { var c = b . startContainer , d = b . endOffset ; return a . endContainer . equals ( c ) && a . endOffset <= d || a . startContainer . getParent ( ) . equals ( c ) && a . startContainer . getIndex ( ) < d || a . endContainer . getParent ( ) . equals ( c ) && a . endContainer . getIndex ( ) <
d ? ! 0 : ! 1 } , internalDrop : function ( a , b , c , d ) { var g = CKEDITOR . plugins . clipboard , f = d . editable ( ) , e , l ; d . fire ( "saveSnapshot" ) ; d . fire ( "lockSnapshot" , { dontUpdate : 1 } ) ; CKEDITOR . env . ie && 10 > CKEDITOR . env . version && this . fixSplitNodesAfterDrop ( a , b , g . dragStartContainerChildCount , g . dragEndContainerChildCount ) ; ( l = this . isDropRangeAffectedByDragRange ( a , b ) ) || ( e = a . createBookmark ( ! 1 ) ) ; g = b . clone ( ) . createBookmark ( ! 1 ) ; l && ( e = a . createBookmark ( ! 1 ) ) ; a = e . startNode ; b = e . endNode ; l = g . startNode ; b && a . getPosition ( l ) & CKEDITOR . POSITION _PRECEDING &&
b . getPosition ( l ) & CKEDITOR . POSITION _FOLLOWING && l . insertBefore ( a ) ; a = d . createRange ( ) ; a . moveToBookmark ( e ) ; f . extractHtmlFromRange ( a , 1 ) ; b = d . createRange ( ) ; g . startNode . getCommonAncestor ( f ) || ( g = d . getSelection ( ) . createBookmarks ( ) [ 0 ] ) ; b . moveToBookmark ( g ) ; t ( d , { dataTransfer : c , method : "drop" , range : b } , 1 ) ; d . fire ( "unlockSnapshot" ) } , getRangeAtDropPosition : function ( a , b ) { var c = a . data . $ , d = c . clientX , g = c . clientY , f = b . getSelection ( ! 0 ) . getRanges ( ) [ 0 ] , e = b . createRange ( ) ; if ( a . data . testRange ) return a . data . testRange ; if ( document . caretRangeFromPoint &&
b . document . $ . caretRangeFromPoint ( d , g ) ) c = b . document . $ . caretRangeFromPoint ( d , g ) , e . setStart ( CKEDITOR . dom . node ( c . startContainer ) , c . startOffset ) , e . collapse ( ! 0 ) ; else if ( c . rangeParent ) e . setStart ( CKEDITOR . dom . node ( c . rangeParent ) , c . rangeOffset ) , e . collapse ( ! 0 ) ; else { if ( CKEDITOR . env . ie && 8 < CKEDITOR . env . version && f && b . editable ( ) . hasFocus ) return f ; if ( document . body . createTextRange ) { b . focus ( ) ; c = b . document . getBody ( ) . $ . createTextRange ( ) ; try { for ( var l = ! 1 , q = 0 ; 20 > q && ! l ; q ++ ) { if ( ! l ) try { c . moveToPoint ( d , g - q ) , l = ! 0 } catch ( r ) { } if ( ! l ) try { c . moveToPoint ( d ,
g + q ) , l = ! 0 } catch ( h ) { } } if ( l ) { var m = "cke-temp-" + ( new Date ) . getTime ( ) ; c . pasteHTML ( '\x3cspan id\x3d"' + m + '"\x3e \x3c/span\x3e' ) ; var p = b . document . getById ( m ) ; e . moveToPosition ( p , CKEDITOR . POSITION _BEFORE _START ) ; p . remove ( ) } else { var k = b . document . $ . elementFromPoint ( d , g ) , n = new CKEDITOR . dom . element ( k ) , u ; if ( n . equals ( b . editable ( ) ) || "html" == n . getName ( ) ) return f && f . startContainer && ! f . startContainer . equals ( b . editable ( ) ) ? f : null ; u = n . getClientRect ( ) ; d < u . left ? e . setStartAt ( n , CKEDITOR . POSITION _AFTER _START ) : e . setStartAt ( n ,
CKEDITOR . POSITION _BEFORE _END ) ; e . collapse ( ! 0 ) } } catch ( t ) { return null } } else return null } return e } , initDragDataTransfer : function ( a , b ) { var c = a . data . $ ? a . data . $ . dataTransfer : null , d = new this . dataTransfer ( c , b ) ; "dragstart" === a . name && d . storeId ( ) ; c ? this . dragData && d . id == this . dragData . id ? d = this . dragData : this . dragData = d : this . dragData ? d = this . dragData : this . dragData = d ; a . data . dataTransfer = d } , resetDragDataTransfer : function ( ) { this . dragData = null } , initPasteDataTransfer : function ( a , b ) { if ( this . isCustomCopyCutSupported ) { if ( a &&
a . data && a . data . $ ) { var c = a . data . $ . clipboardData , d = new this . dataTransfer ( c , b ) ; "copy" !== a . name && "cut" !== a . name || d . storeId ( ) ; this . copyCutData && d . id == this . copyCutData . id ? ( d = this . copyCutData , d . $ = c ) : this . copyCutData = d ; return d } return new this . dataTransfer ( null , b ) } return new this . dataTransfer ( CKEDITOR . env . edge && a && a . data . $ && a . data . $ . clipboardData || null , b ) } , preventDefaultDropOnElement : function ( a ) { a && a . on ( "dragover" , D ) } } ; r = CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ? "cke/id" : "Text" ; CKEDITOR . plugins . clipboard . dataTransfer =
function ( a , b ) { a && ( this . $ = a ) ; this . _ = { metaRegExp : /^<meta.*?>/i , fragmentRegExp : /\s*\x3c!--StartFragment--\x3e|\x3c!--EndFragment--\x3e\s*/g , types : [ ] , data : { } , files : [ ] , nativeHtmlCache : "" , normalizeType : function ( a ) { a = a . toLowerCase ( ) ; return "text" == a || "text/plain" == a ? "Text" : "url" == a ? "URL" : "files" === a ? "Files" : a } } ; this . _ . fallbackDataTransfer = new CKEDITOR . plugins . clipboard . fallbackDataTransfer ( this ) ; this . id = this . getData ( r ) ; this . id || ( this . id = "Text" == r ? "" : "cke-" + CKEDITOR . tools . getUniqueId ( ) ) ; b && ( this . sourceEditor =
b , this . setData ( "text/html" , b . getSelectedHtml ( 1 ) ) , "Text" == r || 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 = { getData : function ( a , b ) { a = this . _ . normalizeType ( a ) ; var c = "text/html" == a && b ? this . _ . nativeHtmlCache : this . _ . data [ a ] ; if ( void 0 === c || null === c || "" === c ) { if ( this . _ . fallbackDataTransfer . isRequired ( ) ) c = this . _ . fallbackDataTransfer . getData ( a ,
b ) ; else try { c = this . $ . getData ( a ) || "" } catch ( d ) { c = "" } "text/html" != a || b || ( c = this . _stripHtml ( c ) ) } "Text" == a && CKEDITOR . env . gecko && this . getFilesCount ( ) && "file://" == c . substring ( 0 , 7 ) && ( c = "" ) ; if ( "string" === typeof c ) var g = c . indexOf ( "\x3c/html\x3e" ) , c = - 1 !== g ? c . substring ( 0 , g + 7 ) : c ; return c } , setData : function ( a , b ) { a = this . _ . normalizeType ( a ) ; "text/html" == a ? ( this . _ . data [ a ] = this . _stripHtml ( b ) , this . _ . nativeHtmlCache = b ) : this . _ . data [ a ] = b ; if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported || "URL" == a || "Text" == a ) if ( "Text" ==
r && "Text" == a && ( this . id = b ) , this . _ . fallbackDataTransfer . isRequired ( ) ) this . _ . fallbackDataTransfer . setData ( a , b ) ; else try { this . $ . setData ( a , b ) } catch ( c ) { } } , storeId : function ( ) { "Text" !== r && this . setData ( r , this . id ) } , 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 ( a ) { a = b . _ . normalizeType ( a ) ; var c = b . getData ( a ) ; "text/html" == a && ( b . _ . nativeHtmlCache = b . getData ( a ,
! 0 ) , c = b . _stripHtml ( c ) ) ; c && ( b . _ . data [ a ] = c ) ; b . _ . types . push ( a ) } if ( this . $ ) { var b = this , c , d , g ; if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ) { if ( this . $ . types ) for ( c = 0 ; c < this . $ . types . length ; c ++ ) a ( this . $ . types [ c ] ) } else a ( "Text" ) , a ( "URL" ) ; d = this . _getImageFromClipboard ( ) ; if ( ( g = this . $ && this . $ . files || null ) || d ) { this . _ . files = [ ] ; if ( g && g . length ) for ( c = 0 ; c < g . length ; c ++ ) this . _ . files . push ( g [ c ] ) ; 0 === this . _ . files . length && d && this . _ . files . push ( d ) } } } , getFilesCount : function ( ) { if ( this . _ . files . length ) return this . _ . files . length ;
var a = this . $ && this . $ . files || null ; return a && a . length ? a . length : this . _getImageFromClipboard ( ) ? 1 : 0 } , getFile : function ( a ) { if ( this . _ . files . length ) return this . _ . files [ a ] ; var b = this . $ && this . $ . files || null ; return b && b . length ? b [ a ] : 0 === a ? this . _getImageFromClipboard ( ) : void 0 } , isFileTransfer : function ( ) { var a = this . getTypes ( ) , a = CKEDITOR . tools . array . filter ( a , function ( a ) { return "application/x-moz-file" !== a } ) ; return 1 === a . length && "files" === a [ 0 ] . toLowerCase ( ) } , isEmpty : function ( ) { var a = { } , b ; if ( this . getFilesCount ( ) ) return ! 1 ;
CKEDITOR . tools . array . forEach ( CKEDITOR . tools . object . keys ( this . _ . data ) , function ( b ) { 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" != r && ( a [ r ] = 0 ) ; for ( b in a ) if ( a [ b ] && "" !== this . getData ( b ) ) return ! 1 ; return ! 0 } , getTypes : function ( ) { return 0 < this . _ . types . length ? this . _ . types : this . $ && this . $ . types ? [ ] . slice . call ( this . $ . types ) : [ ] } , _getImageFromClipboard : function ( ) { var a ; try { if ( this . $ &&
this . $ . items && this . $ . items [ 0 ] && ( a = this . $ . items [ 0 ] . getAsFile ( ) ) && a . type ) return a } catch ( b ) { } } , _stripHtml : function ( a ) { function b ( a ) { var b = new CKEDITOR . htmlParser , g , f ; b . onTagOpen = function ( a ) { "body" === a && ( g = b . _ . htmlPartsRegex . lastIndex ) } ; b . onTagClose = function ( a ) { "body" === a && ( f = b . _ . htmlPartsRegex . lastIndex ) } ; b . parse ( a ) ; return "number" !== typeof g || "number" !== typeof f ? a : a . substring ( g , f ) . replace ( /<\/body\s*>$/gi , "" ) } a && a . length && ( a = b ( a ) , a = a . replace ( this . _ . metaRegExp , "" ) , a = a . replace ( this . _ . fragmentRegExp , "" ) ) ;
return a } } ; CKEDITOR . plugins . clipboard . fallbackDataTransfer = function ( a ) { this . _dataTransfer = a ; this . _customDataFallbackType = "text/html" } ; CKEDITOR . plugins . clipboard . fallbackDataTransfer . _isCustomMimeTypeSupported = null ; CKEDITOR . plugins . clipboard . fallbackDataTransfer . _customTypes = [ ] ; CKEDITOR . plugins . clipboard . fallbackDataTransfer . prototype = { isRequired : function ( ) { var a = CKEDITOR . plugins . clipboard . fallbackDataTransfer , b = this . _dataTransfer . $ ; if ( null === a . _isCustomMimeTypeSupported ) if ( b ) { a . _isCustomMimeTypeSupported =
! 1 ; if ( CKEDITOR . env . edge && 17 <= CKEDITOR . env . version ) return ! 0 ; try { b . setData ( "cke/mimetypetest" , "cke test value" ) , a . _isCustomMimeTypeSupported = "cke test value" === b . getData ( "cke/mimetypetest" ) , b . clearData ( "cke/mimetypetest" ) } catch ( c ) { } } else return ! 1 ; return ! a . _isCustomMimeTypeSupported } , getData : function ( a , b ) { var c = this . _getData ( this . _customDataFallbackType , ! 0 ) ; if ( b ) return c ; var c = this . _extractDataComment ( c ) , d = null , d = a === this . _customDataFallbackType ? c . content : c . data && c . data [ a ] ? c . data [ a ] : this . _getData ( a ,
! 0 ) ; return null !== d ? d : "" } , setData : function ( a , b ) { var c = a === this . _customDataFallbackType ; c && ( b = this . _applyDataComment ( b , this . _getFallbackTypeData ( ) ) ) ; var d = b , g = this . _dataTransfer . $ ; try { g . setData ( a , d ) , c && ( this . _dataTransfer . _ . nativeHtmlCache = d ) } catch ( f ) { if ( this . _isUnsupportedMimeTypeError ( f ) ) { c = CKEDITOR . plugins . clipboard . fallbackDataTransfer ; - 1 === CKEDITOR . tools . indexOf ( c . _customTypes , a ) && c . _customTypes . push ( a ) ; var c = this . _getFallbackTypeContent ( ) , e = this . _getFallbackTypeData ( ) ; e [ a ] = d ; try { d = this . _applyDataComment ( c ,
e ) , g . setData ( this . _customDataFallbackType , d ) , this . _dataTransfer . _ . nativeHtmlCache = d } catch ( l ) { d = "" } } } return d } , _getData : function ( a , b ) { var c = this . _dataTransfer . _ . data ; if ( ! b && c [ a ] ) return c [ a ] ; try { return this . _dataTransfer . $ . getData ( a ) } catch ( d ) { return null } } , _getFallbackTypeContent : function ( ) { var a = this . _dataTransfer . _ . data [ this . _customDataFallbackType ] ; a || ( a = this . _extractDataComment ( this . _getData ( this . _customDataFallbackType , ! 0 ) ) . content ) ; return a } , _getFallbackTypeData : function ( ) { var a = CKEDITOR . plugins . clipboard . fallbackDataTransfer . _customTypes ,
b = this . _extractDataComment ( this . _getData ( this . _customDataFallbackType , ! 0 ) ) . data || { } , c = this . _dataTransfer . _ . data ; CKEDITOR . tools . array . forEach ( a , function ( a ) { void 0 !== c [ a ] ? b [ a ] = c [ a ] : void 0 !== b [ a ] && ( b [ a ] = b [ a ] ) } , this ) ; return b } , _isUnsupportedMimeTypeError : function ( a ) { return a . message && - 1 !== a . message . search ( /element not found/gi ) } , _extractDataComment : function ( a ) { var b = { data : null , content : a || "" } ; if ( a && 16 < a . length ) { var c ; ( c = /\x3c!--cke-data:(.*?)--\x3e/g . exec ( a ) ) && c [ 1 ] && ( b . data = JSON . parse ( decodeURIComponent ( c [ 1 ] ) ) ,
b . content = a . replace ( c [ 0 ] , "" ) ) } return b } , _applyDataComment : function ( a , b ) { var c = "" ; b && CKEDITOR . tools . object . keys ( b ) . length && ( c = "\x3c!--cke-data:" + encodeURIComponent ( JSON . stringify ( b ) ) + "--\x3e" ) ; return c + ( a && a . length ? a : "" ) } } } ) ( ) ; CKEDITOR . config . clipboard _notificationDuration = 1E4 ; CKEDITOR . config . clipboard _handleImages = ! 0 ; CKEDITOR . plugins . add ( "panelbutton" , { requires : "button" , onLoad : function ( ) { function e ( c ) { var b = this . _ ; b . state != CKEDITOR . TRISTATE _DISABLED && ( this . createPanel ( c ) , b . on ? b . panel . hide ( ) : b . panel . showBlock ( this . _ . id , this . document . getById ( this . _ . id ) , 4 ) ) } CKEDITOR . ui . panelButton = CKEDITOR . tools . createClass ( { base : CKEDITOR . ui . button , $ : function ( c ) { var b = c . panel || { } ; delete c . panel ; this . base ( c ) ; this . document = b . parent && b . parent . getDocument ( ) || CKEDITOR . document ; b . block = { attributes : b . attributes } ; b . toolbarRelated = ! 0 ; this . hasArrow =
"listbox" ; this . click = e ; this . _ = { panelDefinition : b } } , statics : { handler : { create : function ( c ) { return new CKEDITOR . ui . panelButton ( c ) } } } , proto : { createPanel : function ( c ) { var b = this . _ ; if ( ! b . panel ) { var f = this . _ . panelDefinition , e = this . _ . panelDefinition . block , k = f . parent || CKEDITOR . document . getBody ( ) , h = CKEDITOR . document . getById ( this . _ . id ) , d = this . _ . panel = new CKEDITOR . ui . floatPanel ( c , k , f ) , f = d . addBlock ( b . id , e ) , a = this , g = c . getCommand ( this . command ) ; d . onShow = function ( ) { a . className && this . element . addClass ( a . className + "_panel" ) ;
a . setState ( CKEDITOR . TRISTATE _ON ) ; h . setAttribute ( "aria-expanded" , "true" ) ; b . on = 1 ; a . editorFocus && c . focus ( ) ; if ( a . onOpen ) a . onOpen ( ) } ; d . onHide = function ( d ) { a . className && this . element . getFirst ( ) . removeClass ( a . className + "_panel" ) ; ! a . modes && g ? a . setStateFromCommand ( g ) : a . setState ( a . modes && a . modes [ c . mode ] ? CKEDITOR . TRISTATE _OFF : CKEDITOR . TRISTATE _DISABLED ) ; b . on = 0 ; h . setAttribute ( "aria-expanded" , "false" ) ; if ( ! d && a . onClose ) a . onClose ( ) } ; d . onEscape = function ( ) { d . hide ( 1 ) ; a . document . getById ( b . id ) . focus ( ) } ; if ( this . onBlock ) this . onBlock ( d ,
f ) ; f . onHide = function ( ) { b . on = 0 ; ! a . modes && a . command ? a . setStateFromCommand ( g ) : a . setState ( CKEDITOR . TRISTATE _OFF ) } } } , setStateFromCommand : function ( c ) { this . setState ( c . state ) } } } ) } , beforeInit : function ( e ) { e . ui . addHandler ( CKEDITOR . UI _PANELBUTTON , CKEDITOR . ui . panelButton . handler ) } } ) ; CKEDITOR . UI _PANELBUTTON = "panelbutton" ; ( 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 , b ) { b && CKEDITOR . tools . extend ( this , b ) ; 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 g = CKEDITOR . addTemplate ( "panel" ,
@ -818,17 +818,17 @@ l.markFirstDisplayed():l._.markFirstDisplayed()},0):l.markFirstDisplayed?l.markF
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 ( ) ,
a . focus ( ) ; delete this . _ . lastFocused ; this . _ . showBlockParams = null ; this . _ . editor . fire ( "panelHide" , this ) } } , allowBlur : function ( a ) { var b = this . _ . panel ; void 0 !== a && ( b . allowBlur = a ) ; return b . allowBlur } , showAsChild : function ( a , b , c , f , h , g ) { if ( this . _ . activeChild != a || a . _ . panel . _ . offsetParentId != c . 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 ( b , c , f , h , g ) , this . blur ( ) ,
( CKEDITOR . env . ie7Compat || CKEDITOR . env . ie6Compat ) && setTimeout ( function ( ) { a . element . getChild ( 0 ) . $ . style . cssText += "" } , 100 ) } , hideChild : function ( a ) { var b = this . _ . activeChild ; b && ( delete b . onHide , delete this . _ . activeChild , b . hide ( ) , a && this . focus ( ) ) } } } ) ; CKEDITOR . on ( "instanceDestroyed" , function ( ) { var a = CKEDITOR . tools . isEmpty ( CKEDITOR . instances ) , b ; for ( b in f ) { var c = f [ b ] ; a ? c . destroy ( ) : c . element . hide ( ) } a && ( f = { } ) } ) } ) ( ) ; ( function ( ) { var n , k , l ; CKEDITOR . plugins . add ( "colorbutton" , { requires : "panelbutton,floatpanel" , init : function ( a ) { function b ( d ) { function b ( ) { var d = a . config [ "colorButton_" + h + "Style" ] ; d . childRule = "back" == h ? function ( a ) { return f ( a ) } : function ( a ) { return ! ( a . is ( "a" ) || a . getElementsByTag ( "a" ) . count ( ) ) || f ( a ) } ; return d } function z ( d , w , e ) { var c = { } ; d && ( c . color = d ) ; w && ( c . colorName = w ) ; w = ! CKEDITOR . tools . isEmpty ( c ) && new CKEDITOR . style ( b ( ) , c ) ; a . execCommand ( m , { newStyle : w } ) ; if ( d && e ) for ( e . addColor ( d . substr ( 1 ) . toUpperCase ( ) ) ,
d = t . element . find ( "[role\x3doption]" ) . toArray ( ) , e = 0 ; e < d . length ; e ++ ) d [ e ] . setAttributes ( { "aria-posinset" : e + 1 , "aria-setsize" : d . length } ) } var g = d . name , h = d . type , k = d . title , C = d . order , m = d . commandName ; d = d . contentTransformations || { } ; var A = new CKEDITOR . style ( r [ "colorButton_" + h + "Style" ] ) , q = CKEDITOR . tools . getNextId ( ) + "_colorBox" , x = { type : h } , y = new CKEDITOR . style ( r [ "colorButton_" + h + "Style" ] , { color : "inherit" } ) , B = function ( ) { return CKEDITOR . tools . addFunction ( function ( d , b , e ) { a . focus ( ) ; a . fire ( "saveSnapshot" ) ; "?" == d ? a . getColorFromDialog ( function ( a ) { a &&
d = t . element . find ( "[role\x3doption]" ) . toArray ( ) , e = 0 ; e < d . length ; e ++ ) d [ e ] . setAttributes ( { "aria-posinset" : e + 1 , "aria-setsize" : d . length } ) } var g = d . name , h = d . type , k = d . title , C = d . order , m = d . commandName ; d = d . contentTransformations || { } ; var A = new CKEDITOR . style ( q [ "colorButton_" + h + "Style" ] ) , r = CKEDITOR . tools . getNextId ( ) + "_colorBox" , x = { type : h } , y = new CKEDITOR . style ( q [ "colorButton_" + h + "Style" ] , { color : "inherit" } ) , B = function ( ) { return CKEDITOR . tools . addFunction ( function ( d , b , e ) { a . focus ( ) ; a . fire ( "saveSnapshot" ) ; "?" == d ? a . getColorFromDialog ( function ( a ) { a &&
z ( a , b , u ) } , null , x ) : z ( d && "#" + d , b , u ) ; e && ( e . setAttribute ( "cke_colorlast" , ! 0 ) , a . once ( "selectionChange" , function ( ) { e . removeAttribute ( "cke_colorlast" ) } ) ) } ) } ( ) , u = l . getRowLimit ( a ) ? new l ( a , "back" == h ? "background-color" : "color" , B ) : void 0 , t ; a . addCommand ( m , { contextSensitive : ! 0 , exec : function ( a , d ) { if ( ! a . readOnly ) { var b = d . newStyle ; a . removeStyle ( y ) ; a . focus ( ) ; b && a . applyStyle ( b ) ; a . fire ( "saveSnapshot" ) } } , refresh : function ( a , d ) { y . checkApplicable ( d , a , a . activeFilter ) ? y . checkActive ( d , a ) ? this . setState ( CKEDITOR . TRISTATE _ON ) :
this . setState ( CKEDITOR . TRISTATE _OFF ) : this . setState ( CKEDITOR . TRISTATE _DISABLED ) } } ) ; a . ui . add ( g , CKEDITOR . UI _PANELBUTTON , { label : k , title : k , command : m , editorFocus : 0 , toolbar : "colors," + C , allowedContent : A , requiredContent : A , contentTransformations : d , panel : { css : CKEDITOR . skin . getPath ( "editor" ) ,attributes : { role : "listbox" , "aria-label" : p . panelTitle } } , select : function ( a ) { var d = r . colorButton _colors . split ( "," ) ; a = CKEDITOR . tools . array . find ( d , a ) ; a = n . normalizeColor ( a ) ; v ( t , a ) ; t . _ . markFirstDisplayed ( ) } , onBlock : function ( d , b ) { t =
b ; b . autoSize = ! 0 ; b . element . addClass ( "cke_colorblock" ) ; b . element . setHtml ( c ( q , B , u ? u . getLength ( ) : 0 ) ) ; b . element . getDocument ( ) . getBody ( ) . setStyle ( "overflow" , "hidden" ) ; b . element . getAscendant ( { html : 1 } ) . setStyle ( "overflow" , "hidden" ) ; CKEDITOR . ui . fire ( "ready" , this ) ; var e = b . keys , h = "rtl" == a . lang . dir ; e [ h ? 37 : 39 ] = "next" ; e [ 40 ] = "next" ; e [ 9 ] = "next" ; e [ h ? 39 : 37 ] = "prev" ; e [ 38 ] = "prev" ; e [ CKEDITOR . SHIFT + 9 ] = "prev" ; e [ 32 ] = "click" ; u && u . setContainer ( b . element . findOne ( ".cke_colorhistory" ) ) } , onOpen : function ( ) { var d = a . getSelection ( ) ,
b = d && d . getStartElement ( ) , e = a . elementPath ( b ) , c = "back" == h ? "background-color" : "color" ; if ( e ) { b = e . block || e . blockLimit || a . document . getBody ( ) ; do e = b && b . getComputedStyle ( c ) || "transparent" ; while ( "back" == h && "transparent" == e && b && ( b = b . getParent ( ) ) ) ; e && "transparent" != e || ( e = "#ffffff" ) ; r . colorButton _enableAutomatic && t . element . findOne ( "#" + q ) . setStyle ( "background-color" , e ) ; if ( b = d && d . getRanges ( ) [ 0 ] ) { for ( var d = new CKEDITOR . dom . walker ( b ) , g = b . collapsed ? b . startContainer : d . next ( ) , b = "" ; g ; ) { g . type !== CKEDITOR . NODE _ELEMENT &&
( g = g . getParent ( ) ) ; g = n . normalizeColor ( g . getComputedStyle ( c ) ) ; b = b || g ; if ( b !== g ) { b = "" ; break } g = d . next ( ) } "transparent" == b && ( b = "" ) ; "fore" == h && ( x . automaticTextColor = "#" + n . normalizeColor ( e ) ) ; x . selectionColor = b ? "#" + b : "" ; v ( t , b ) } return e } } } ) } function c ( b , c , f ) { var g = [ ] , h = r . colorButton _colors . split ( "," ) , k = a . plugins . colordialog && r . colorButton _enableMore ; f = h . length + f + ( k ? 1 : 0 ) ; var v = 1 ; r . colorButton _enableAutomatic && ( f += 1 , v += 1 , g . push ( '\x3ca class\x3d"cke_colorauto" _cke_focus\x3d1 hidefocus\x3dtrue' , ' title\x3d"' , p . auto ,
this . setState ( CKEDITOR . TRISTATE _OFF ) : this . setState ( CKEDITOR . TRISTATE _DISABLED ) } } ) ; a . ui . add ( g , CKEDITOR . UI _PANELBUTTON , { label : k , title : k , command : m , editorFocus : 0 , toolbar : "colors," + C , allowedContent : A , requiredContent : A , contentTransformations : d , panel : { css : [ CKEDITOR . skin . getPath ( "editor" ) ]. concat ( q . colorButton _contentsCss ) ,attributes : { role : "listbox" , "aria-label" : p . panelTitle } } , select : function ( a ) { var d = q . colorButton _colors . split ( "," ) ; a = CKEDITOR . tools . array . find ( d , a ) ; a = n . normalizeColor ( a ) ; v ( t , a ) ; t . _ . markFirstDisplayed ( ) } ,
onBlock : function ( d , b ) { t = b ; b . autoSize = ! 0 ; b . element . addClass ( "cke_colorblock" ) ; b . element . setHtml ( c ( r , B , u ? u . getLength ( ) : 0 ) ) ; b . element . getDocument ( ) . getBody ( ) . setStyle ( "overflow" , "hidden" ) ; b . element . getAscendant ( { html : 1 } ) . setStyle ( "overflow" , "hidden" ) ; CKEDITOR . ui . fire ( "ready" , this ) ; var e = b . keys , h = "rtl" == a . lang . dir ; e [ h ? 37 : 39 ] = "next" ; e [ 40 ] = "next" ; e [ 9 ] = "next" ; e [ h ? 39 : 37 ] = "prev" ; e [ 38 ] = "prev" ; e [ CKEDITOR . SHIFT + 9 ] = "prev" ; e [ 32 ] = "click" ; u && u . setContainer ( b . element . findOne ( ".cke_colorhistory" ) ) } , onOpen : function ( ) { var d =
a . getSelection ( ) , b = d && d . getStartElement ( ) , e = a . elementPath ( b ) , c = "back" == h ? "background-color" : "color" ; if ( e ) { b = e . block || e . blockLimit || a . document . getBody ( ) ; do e = b && b . getComputedStyle ( c ) || "transparent" ; while ( "back" == h && "transparent" == e && b && ( b = b . getParent ( ) ) ) ; e && "transparent" != e || ( e = "#ffffff" ) ; q . colorButton _enableAutomatic && t . element . findOne ( "#" + r ) . setStyle ( "background-color" , e ) ; if ( b = d && d . getRanges ( ) [ 0 ] ) { for ( var d = new CKEDITOR . dom . walker ( b ) , g = b . collapsed ? b . startContainer : d . next ( ) , b = "" ; g ; ) { g . type !== CKEDITOR . NODE _ELEMENT &&
( g = g . getParent ( ) ) ; g = n . normalizeColor ( g . getComputedStyle ( c ) ) ; b = b || g ; if ( b !== g ) { b = "" ; break } g = d . next ( ) } "transparent" == b && ( b = "" ) ; "fore" == h && ( x . automaticTextColor = "#" + n . normalizeColor ( e ) ) ; x . selectionColor = b ? "#" + b : "" ; v ( t , b ) } return e } } } ) } function c ( b , c , f ) { var g = [ ] , h = q . colorButton _colors . split ( "," ) , k = a . plugins . colordialog && q . colorButton _enableMore ; f = h . length + f + ( k ? 1 : 0 ) ; var v = 1 ; q . colorButton _enableAutomatic && ( f += 1 , v += 1 , g . push ( '\x3ca class\x3d"cke_colorauto" _cke_focus\x3d1 hidefocus\x3dtrue' , ' title\x3d"' , p . auto ,
'"' , ' draggable\x3d"false"' , ' ondragstart\x3d"return false;"' , ' onclick\x3d"CKEDITOR.tools.callFunction(' , c , ',null);return false;"' , " href\x3d\"javascript:void('" , p . auto , "')\"" , ' role\x3d"option" aria-posinset\x3d"1" aria-setsize\x3d"' , f , '"\x3e' , '\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e' , "\x3ctr\x3e" , '\x3ctd colspan\x3d"' , a . config . colorButton _colorsPerRow , '" align\x3d"center"\x3e' , '\x3cspan class\x3d"cke_colorbox" id\x3d"' , b , '"\x3e\x3c/span\x3e' , p . auto ,
"\x3c/td\x3e" , "\x3c/tr\x3e" , "\x3c/table\x3e" , "\x3c/a\x3e" ) ) ; g . push ( '\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e\x3ctbody\x3e' ) ; for ( b = 0 ; b < h . length ; b ++ ) { 0 === b % a . config . colorButton _colorsPerRow && g . push ( "\x3c/tr\x3e\x3ctr\x3e" ) ; var m = h [ b ] . split ( "/" ) , q = m [ 0 ] , m = new n ( a , { color : m [ 1 ] || q, label : m [ 1 ] ? q : void 0 } , c ) ; m . setPositionIndex ( v + b , f ) ; g . push ( m . getHtml ( ) ) } l . getRowLimit ( a ) && l . renderContainer ( g , a ) ; k && g . push ( "\x3c/tr\x3e" , "\x3ctr\x3e" , '\x3ctd colspan\x3d"' , a . config . colorButton _colorsPerRow ,
"\x3c/td\x3e" , "\x3c/tr\x3e" , "\x3c/table\x3e" , "\x3c/a\x3e" ) ) ; g . push ( '\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e\x3ctbody\x3e' ) ; for ( b = 0 ; b < h . length ; b ++ ) { 0 === b % a . config . colorButton _colorsPerRow && g . push ( "\x3c/tr\x3e\x3ctr\x3e" ) ; var m = h [ b ] . split ( "/" ) , r = m [ 0 ] , m = new n ( a , { color : m [ 1 ] || r, label : m [ 1 ] ? r : void 0 } , c ) ; m . setPositionIndex ( v + b , f ) ; g . push ( m . getHtml ( ) ) } l . getRowLimit ( a ) && l . renderContainer ( g , a ) ; k && g . push ( "\x3c/tr\x3e" , "\x3ctr\x3e" , '\x3ctd colspan\x3d"' , a . config . colorButton _colorsPerRow ,
'" align\x3d"center"\x3e' , '\x3ca class\x3d"cke_colormore" _cke_focus\x3d1 hidefocus\x3dtrue' , ' title\x3d"' , p . more , '"' , ' draggable\x3d"false"' , ' ondragstart\x3d"return false;"' , ' onclick\x3d"CKEDITOR.tools.callFunction(' , c , ",'?');return false;\"" , " href\x3d\"javascript:void('" , p . more , "')\"" , ' role\x3d"option" aria-posinset\x3d"' , f , '" aria-setsize\x3d"' , f , '"\x3e' , p . more , "\x3c/a\x3e" , "\x3c/td\x3e" ) ; g . push ( "\x3c/tr\x3e\x3c/tbody\x3e\x3c/table\x3e" ) ; return g . join ( "" ) } function f ( a ) { return "false" == a . getAttribute ( "contentEditable" ) ||
a . getAttribute ( "data-nostyle" ) } function v ( a , b ) { var c = a . _ . getItems ( ) , g = a . element . findOne ( "[aria-selected]" ) , f = a . element . findOne ( "[cke_colorlast]" ) ; g && g . removeAttribute ( "aria-selected" ) ; if ( f ) f . setAttribute ( "aria-selected" , ! 0 ) ; else for ( g = 0 ; g < c . count ( ) ; g ++ ) if ( f = c . getItem ( g ) , b && b == n . normalizeColor ( f . getAttribute ( "data-value" ) ) ) { f . setAttribute ( "aria-selected" , ! 0 ) ; break } } var r = a . config , p = a . lang . colorbutton ; if ( ! CKEDITOR . env . hc ) { b ( { name : "TextColor" , type : "fore" , commandName : "textColor" , title : p . textColorTitle ,
order : 10 , contentTransformations : [ [ { element : "font" , check : "span{color}" , left : function ( a ) { return ! ! a . attributes . color } , right : function ( a ) { a . name = "span" ; a . attributes . color && ( a . styles . color = a . attributes . color ) ; delete a . attributes . color } } ] ] } ) ; var k , q = a . config . colorButton _normalizeBackground ; if ( void 0 === q|| q ) k = [ [ { element : "span" , left : function ( a ) { var b = CKEDITOR . tools ; if ( "span" != a . name || ! a . styles || ! a . styles . background ) return ! 1 ; a = b . style . parse . background ( a . styles . background ) ; return a . color && 1 === b . object . keys ( a ) . length } ,
a . getAttribute ( "data-nostyle" ) } function v ( a , b ) { var c = a . _ . getItems ( ) , g = a . element . findOne ( "[aria-selected]" ) , f = a . element . findOne ( "[cke_colorlast]" ) ; g && g . removeAttribute ( "aria-selected" ) ; if ( f ) f . setAttribute ( "aria-selected" , ! 0 ) ; else for ( g = 0 ; g < c . count ( ) ; g ++ ) if ( f = c . getItem ( g ) , b && b == n . normalizeColor ( f . getAttribute ( "data-value" ) ) ) { f . setAttribute ( "aria-selected" , ! 0 ) ; break } } var q = a . config , p = a . lang . colorbutton ; if ( ! CKEDITOR . env . hc ) { b ( { name : "TextColor" , type : "fore" , commandName : "textColor" , title : p . textColorTitle ,
order : 10 , contentTransformations : [ [ { element : "font" , check : "span{color}" , left : function ( a ) { return ! ! a . attributes . color } , right : function ( a ) { a . name = "span" ; a . attributes . color && ( a . styles . color = a . attributes . color ) ; delete a . attributes . color } } ] ] } ) ; var k , r = a . config . colorButton _normalizeBackground ; if ( void 0 === r|| r ) k = [ [ { element : "span" , left : function ( a ) { var b = CKEDITOR . tools ; if ( "span" != a . name || ! a . styles || ! a . styles . background ) return ! 1 ; a = b . style . parse . background ( a . styles . background ) ; return a . color && 1 === b . object . keys ( a ) . length } ,
right : function ( b ) { var c = ( new CKEDITOR . style ( a . config . colorButton _backStyle , { color : b . styles . background } ) ) . getDefinition ( ) ; b . name = c . element ; b . styles = c . styles ; b . attributes = c . attributes || { } ; return b } } ] ] ; b ( { name : "BGColor" , type : "back" , commandName : "bgColor" , title : p . bgColorTitle , order : 20 , contentTransformations : k } ) } } } ) ; n = CKEDITOR . tools . createClass ( { $ : function ( a , b , c ) { this . $ = new CKEDITOR . dom . element ( "td" ) ; this . color = CKEDITOR . tools . _isValidColorFormat ( b . color ) ? b . color : "" ; this . clickFn = c ; this . label = b . label || n . colorNames ( a ) [ this . color ] ||
this . color ; this . setHtml ( ) } , statics : { colorNames : function ( a ) { return a . lang . colorbutton . colors } , normalizeColor : function ( a ) { var b = /^(rgb|hsl)a\(/g . test ( a ) , c = /^rgba\((\s*0\s*,?){4}\)$/g . test ( a ) ; return b && ! c ? ( a = new CKEDITOR . tools . color ( a ) , CKEDITOR . tools . normalizeHex ( a . getHex ( ) || "" ) . replace ( /#/g , "" ) ) : CKEDITOR . tools . normalizeHex ( "#" + CKEDITOR . tools . convertRgbToHex ( a || "" ) ) . replace ( /#/g , "" ) } } , proto : { getElement : function ( ) { return this . $ } , getHtml : function ( ) { return this . getElement ( ) . getOuterHtml ( ) } , setHtml : function ( ) { this . getElement ( ) . setHtml ( '\x3ca class\x3d"cke_colorbox" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"' +
this . label + '" draggable\x3d"false" ondragstart\x3d"return false;" onclick\x3d"CKEDITOR.tools.callFunction(' + this . clickFn + ",'" + this . color + "','" + this . label + "', this); return false;\" href\x3d\"javascript:void('" + this . color + '\')" data-value\x3d"' + this . color + '" role\x3d"option"\x3e\x3cspan class\x3d"cke_colorbox" style\x3d"background-color:#' + this . color + '"\x3e\x3c/span\x3e\x3c/a\x3e' ) } , setPositionIndex : function ( a , b ) { this . getElement ( ) . getChild ( 0 ) . setAttributes ( { "aria-posinset" : a , "aria-setsize" : b } ) } } } ) ;
@ -841,7 +841,7 @@ this.editor.config.colorButton_colorsPerRow);a++)this.rows[a+1]?this._.moveLastB
a ) ; b += 1 } ) } ) } , countPanelElements : function ( ) { var a = this . editor . config . colorButton _colors . split ( "," ) . length + this . getLength ( ) ; this . editor . plugins . colordialog && this . editor . config . colorButton _enableMore && ( a += 1 ) ; this . editor . config . colorButton _enableAutomatic && ( a += 1 ) ; return a } , calculateFirstPosition : function ( a ) { return this . editor . plugins . colordialog && this . editor . config . colorButton _enableMore ? a - this . getLength ( ) : a - this . getLength ( ) + 1 } , attachRows : function ( ) { CKEDITOR . tools . array . forEach ( this . rows , function ( a ) { this . container . append ( a . getElement ( ) ) } ,
this ) } } , proto : { setContainer : function ( a ) { this . container = a ; this . _ . attachRows ( ) ; this . getLength ( ) && this . show ( ) } , show : function ( ) { this . container && this . container . show ( ) } , renderContentColors : function ( ) { var a = this . _ . countColors ( ) ; CKEDITOR . tools . isEmpty ( a ) || ( a = this . _ . sortByOccurrencesAscending ( a , "colorCode" ) , this . _ . addColors ( a ) , this . _ . refreshPositions ( ) ) } , addColor : function ( a ) { var b = this . _ . extractColorBox ( a ) ; this . container && ! this . container . isVisible ( ) && this . show ( ) ; b ? this . _ . moveToBeginning ( b ) : this . _ . createAtBeginning ( a ) ;
this . _ . alignRows ( ) } , getLength : function ( ) { return CKEDITOR . tools . array . reduce ( this . rows , function ( a , b ) { return a + b . boxes . length } , 0 ) } } } ) } ) ( ) ; CKEDITOR . config . colorButton _enableMore = ! 0 ; CKEDITOR . config . colorButton _colors = "1ABC9C,2ECC71,3498DB,9B59B6,4E5F70,F1C40F,16A085,27AE60,2980B9,8E44AD,2C3E50,F39C12,E67E22,E74C3C,ECF0F1,95A5A6,DDD,FFF,D35400,C0392B,BDC3C7,7F8C8D,999,000" ; CKEDITOR . config . colorButton _foreStyle = { element : "span" , styles : { color : "#(color)" } , overrides : [ { element : "font" , attributes : { color : null } } ] } ;
CKEDITOR . config . colorButton _backStyle = { element : "span" , styles : { "background-color" : "#(color)" } } ; CKEDITOR . config . colorButton _enableAutomatic = ! 0 ; CKEDITOR . config . colorButton _colorsPerRow = 6 ; CKEDITOR . config . colorButton _historyRowLimit = 1 ; CKEDITOR . config . colorButton _renderContentColors = ! 0 ; ( function ( ) { function x ( a , e , b ) { b = a . config . forceEnterMode || b ; if ( "wysiwyg" == a . mode ) { e || ( e = a . activeEnterMode ) ; var l = a . elementPath ( ) ; l && ! l . isContextFor ( "p" ) && ( e = CKEDITOR . ENTER _BR , b = 1 ) ; a . fire ( "saveSnapshot" ) ; e == CKEDITOR . ENTER _BR ? u ( a , e , null , b ) : r ( a , e , null , b ) ; a . fire ( "saveSnapshot" ) } } function y ( a ) { a = a . getSelection ( ) . getRanges ( ! 0 ) ; for ( var e = a . length - 1 ; 0 < e ; e -- ) a [ e ] . deleteContents ( ) ; return a [ 0 ] } function z ( a ) { var e = a . startContainer . getAscendant ( function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && "true" == a . getAttribute ( "contenteditable" ) } ,
CKEDITOR . config . colorButton _backStyle = { element : "span" , styles : { "background-color" : "#(color)" } } ; CKEDITOR . config . colorButton _enableAutomatic = ! 0 ; CKEDITOR . config . colorButton _colorsPerRow = 6 ; CKEDITOR . config . colorButton _historyRowLimit = 1 ; CKEDITOR . config . colorButton _renderContentColors = ! 0 ; CKEDITOR . config . colorButton _contentsCss = [ ] ; ( function ( ) { function x ( a , e , b ) { b = a . config . forceEnterMode || b ; if ( "wysiwyg" == a . mode ) { e || ( e = a . activeEnterMode ) ; var l = a . elementPath ( ) ; l && ! l . isContextFor ( "p" ) && ( e = CKEDITOR . ENTER _BR , b = 1 ) ; a . fire ( "saveSnapshot" ) ; e == CKEDITOR . ENTER _BR ? u ( a , e , null , b ) : r ( a , e , null , b ) ; a . fire ( "saveSnapshot" ) } } function y ( a ) { a = a . getSelection ( ) . getRanges ( ! 0 ) ; for ( var e = a . length - 1 ; 0 < e ; e -- ) a [ e ] . deleteContents ( ) ; return a [ 0 ] } function z ( a ) { var e = a . startContainer . getAscendant ( function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && "true" == a . getAttribute ( "contenteditable" ) } ,
! 0 ) ; if ( a . root . equals ( e ) ) return a ; e = new CKEDITOR . dom . range ( e ) ; e . moveToRange ( a ) ; return e } CKEDITOR . plugins . add ( "enterkey" , { init : function ( a ) { a . addCommand ( "enter" , { modes : { wysiwyg : 1 } , editorFocus : ! 1 , exec : function ( a ) { x ( a ) } } ) ; a . addCommand ( "shiftEnter" , { modes : { wysiwyg : 1 } , editorFocus : ! 1 , exec : function ( a ) { x ( a , a . activeShiftEnterMode , 1 ) } } ) ; a . setKeystroke ( [ [ 13 , "enter" ] , [ CKEDITOR . SHIFT + 13 , "shiftEnter" ] ] ) } } ) ; var A = CKEDITOR . dom . walker . whitespaces ( ) , B = CKEDITOR . dom . walker . bookmark ( ) , v , u , r , w ; CKEDITOR . plugins . enterkey =
{ enterBlock : function ( a , e , b , l ) { function n ( a ) { var b ; if ( a === CKEDITOR . ENTER _BR || - 1 === CKEDITOR . tools . indexOf ( [ "td" , "th" ] , p . lastElement . getName ( ) ) || 1 !== p . lastElement . getChildCount ( ) ) return ! 1 ; a = p . lastElement . getChild ( 0 ) . clone ( ! 0 ) ; ( b = a . getBogus ( ) ) && b . remove ( ) ; return a . getText ( ) . length ? ! 1 : ! 0 } if ( b = b || y ( a ) ) { b = z ( b ) ; var g = b . document , f = b . checkStartOfBlock ( ) , k = b . checkEndOfBlock ( ) , p = a . elementPath ( b . startContainer ) , c = p . block , m = e == CKEDITOR . ENTER _DIV ? "div" : "p" , d ; if ( c && f && k ) { f = c . getParent ( ) ; if ( f . is ( "li" ) && 1 < f . getChildCount ( ) ) { g =
new CKEDITOR . dom . element ( "li" ) ; d = a . createRange ( ) ; g . insertAfter ( f ) ; c . remove ( ) ; d . setStart ( g , 0 ) ; a . getSelection ( ) . selectRanges ( [ d ] ) ; return } if ( c . is ( "li" ) || c . getParent ( ) . is ( "li" ) ) { c . is ( "li" ) || ( c = c . getParent ( ) , f = c . getParent ( ) ) ; d = f . getParent ( ) ; b = ! c . hasPrevious ( ) ; var h = ! c . hasNext ( ) ; l = a . getSelection ( ) ; var m = l . createBookmarks ( ) , t = c . getDirection ( 1 ) , k = c . getAttribute ( "class" ) , q = c . getAttribute ( "style" ) , r = d . getDirection ( 1 ) != t ; a = a . enterMode != CKEDITOR . ENTER _BR || r || q || k ; if ( d . is ( "li" ) ) b || h ? ( b && h && f . remove ( ) , c [ h ? "insertAfter" :