2015-08-29 07:02:09 +02:00
/ * *
2016-01-31 00:01:04 +01:00
* simplemde v1 . 10.0
2015-08-29 07:02:09 +02:00
* Copyright Next Step Webs , Inc .
* @ link https : //github.com/NextStepWebs/simplemde-markdown-editor
* @ license MIT
* /
2016-01-31 00:01:04 +01:00
! function ( e ) { if ( "object" == typeof exports && "undefined" != typeof module ) module . exports = e ( ) ; else if ( "function" == typeof define && define . amd ) define ( [ ] , e ) ; else { var t ; t = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , t . SimpleMDE = e ( ) } } ( function ( ) { var e ; return function t ( e , n , r ) { function i ( l , a ) { if ( ! n [ l ] ) { if ( ! e [ l ] ) { var s = "function" == typeof require && require ; if ( ! a && s ) return s ( l , ! 0 ) ; if ( o ) return o ( l , ! 0 ) ; var c = new Error ( "Cannot find module '" + l + "'" ) ; throw c . code = "MODULE_NOT_FOUND" , c } var u = n [ l ] = { exports : { } } ; e [ l ] [ 0 ] . call ( u . exports , function ( t ) { var n = e [ l ] [ 1 ] [ t ] ; return i ( n ? n : t ) } , u , u . exports , t , e , n , r ) } return n [ l ] . exports } for ( var o = "function" == typeof require && require , l = 0 ; l < r . length ; l ++ ) i ( r [ l ] ) ; return i } ( { 1 : [ function ( e , t , n ) { ( function ( n ) { Typo = n . Typo = e ( "D:\\My Web Sites\\simplemde-markdown-editor\\node_modules\\codemirror-spell-checker\\src\\js\\typo.js" ) , CodeMirror = n . CodeMirror = e ( "codemirror" ) ; ( function ( e , t , n ) { var r , i = 0 , o = ! 1 , l = ! 1 , a = "" , s = "" ; CodeMirror . defineMode ( "spell-checker" , function ( e , t ) { if ( ! o ) { o = ! 0 ; var n = new XMLHttpRequest ; n . open ( "GET" , "https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.aff" , ! 0 ) , n . onload = function ( e ) { 4 === n . readyState && 200 === n . status && ( a = n . responseText , i ++ , 2 == i && ( r = new Typo ( "en_US" , a , s , { platform : "any" } ) ) ) } , n . send ( null ) } if ( ! l ) { l = ! 0 ; var c = new XMLHttpRequest ; c . open ( "GET" , "https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.dic" , ! 0 ) , c . onload = function ( e ) { 4 === c . readyState && 200 === c . status && ( s = c . responseText , i ++ , 2 == i && ( r = new Typo ( "en_US" , a , s , { platform : "any" } ) ) ) } , c . send ( null ) } var u = '!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~ ' , d = { token : function ( e , t ) { var n = e . peek ( ) , i = "" ; if ( u . includes ( n ) ) return e . next ( ) , null ; for ( ; null != ( n = e . peek ( ) ) && ! u . includes ( n ) ; ) i += n , e . next ( ) ; return r && ! r . check ( i ) ? "spell-error" : null } } , h = CodeMirror . getMode ( e , e . backdrop || "text/plain" ) ; return CodeMirror . overlayMode ( h , d , ! 0 ) } ) , String . prototype . includes || ( String . prototype . includes = function ( ) { "use strict" ; return - 1 !== String . prototype . indexOf . apply ( this , arguments ) } ) } ) . call ( n , t , void 0 , void 0 ) } ) . call ( this , "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } ) } , { "D:\\My Web Sites\\simplemde-markdown-editor\\node_modules\\codemirror-spell-checker\\src\\js\\typo.js" : 2 , codemirror : 7 } ] , 2 : [ function ( e , t , n ) { ( function ( e ) { ( function ( e , t , n , r , i ) { "use strict" ; var o = function ( e , t , n , r ) { if ( r = r || { } , this . platform = r . platform || "chrome" , this . dictionary = null , this . rules = { } , this . dictionaryTable = { } , this . compoundRules = [ ] , this . compoundRuleCodes = { } , this . replacementTable = [ ] , this . flags = r . flags || { } , e ) { if ( this . dictionary = e , "chrome" == this . platform ) t || ( t = this . _readFile ( chrome . extension . getURL ( "lib/typo/dictionaries/" + e + "/" + e + ".aff" ) ) ) , n || ( n = this . _readFile ( chrome . extension . getURL ( "lib/typo/dictionaries/" + e + "/" + e + ".dic" ) ) ) ; else { var i = r . dictionaryPath || "" ; t || ( t = this . _readFile ( i + "/" + e + "/" + e + ".aff" ) ) , n || ( n = this . _readFile ( i + "/" + e + "/" + e + ".dic" ) ) } this . rules = this . _parseAFF ( t ) , this . compoundRuleCodes = { } ; for ( var o = 0 , l = this . compoundRules . length ; l > o ; o ++ ) for ( var a = this . compoundRules [ o ] , s = 0 , c = a . length ; c > s ; s ++ ) this . compoundRuleCodes [ a [ s ] ] = [ ] ; "ONLYINCOMPOUND" in this . flags && ( this . compoundRuleCodes [ this . flags . ONLYINCOMPOUND ] = [ ] ) , this . dictionaryTable = this . _parseDIC ( n ) ; for ( var o in this . compoundRuleCodes ) 0 == this . compoundRuleCodes [ o ] . length && delete this . compoundRuleCodes [ o ] ; for ( var o = 0 , l = this . compoundRules . length ; l > o ; o ++ ) { for ( var u = this . compoundRules [ o ] , d = "" , s = 0 , c = u . length ; c > s ; s ++ ) { var h = u [ s ] ; d += h in this . compoundRuleCodes ? "(" + this . compoundRuleCodes [ h ] . join ( "|" ) + ")" : h } this . compoundRules [ o ] = new RegExp ( d , "i" ) } } return this } ; o . prototype = { load : function ( e ) { for ( var t in e ) this [ t ] = e [ t ] ; return this } , _readFile : function ( e , t ) { t || ( t = "ISO8859-1" ) ; var n = new XMLHttpRequest ; return n . open ( "GET" , e , ! 1 ) , n . overrideMimeType && n . overrideMimeType ( "text/plain; charset=" + t ) , n . send ( null ) , n . responseText } , _parseAFF : function ( e ) { var t = { } ; e = this . _removeAffixComments ( e ) ; for ( var n = e . split ( "\n" ) , r = 0 , i = n . length ; i > r ; r ++ ) { var o = n [ r ] , l = o . split ( /\s+/ ) , a = l [ 0 ] ; if ( "PFX" == a || "SFX" == a ) { for ( var s = l [ 1 ] , c = l [ 2 ] , u = parseInt ( l [ 3 ] , 10 ) , d = [ ] , h = r + 1 , f = r + 1 + u ; f > h ; h ++ ) { var o = n [ h ] , p = o . spl
this . prevInput = "" , this . pollingFast = ! 1 , this . polling = new Wi , this . inaccurateSelection = ! 1 , this . hasSelection = ! 1 , this . composing = null } function ie ( ) { var e = qi ( "textarea" , null , null , "position: absolute; padding: 0; width: 1px; height: 1em; outline: none" ) , t = qi ( "div" , [ e ] , null , "overflow: hidden; position: relative; width: 3px; height: 0px;" ) ; return ko ? e . style . width = "1000px" : e . setAttribute ( "wrap" , "off" ) , Ao && ( e . style . border = "1px solid black" ) , ne ( e ) , t } function oe ( e ) { this . cm = e , this . lastAnchorNode = this . lastAnchorOffset = this . lastFocusNode = this . lastFocusOffset = null , this . polling = new Wi , this . gracePeriod = ! 1 } function le ( e , t ) { var n = et ( e , t . line ) ; if ( ! n || n . hidden ) return null ; var r = Qr ( e . doc , t . line ) , i = Ze ( n , r , t . line ) , o = oi ( r ) , l = "left" ; if ( o ) { var a = uo ( o , t . ch ) ; l = a % 2 ? "right" : "left" } var s = rt ( i . map , t . ch , l ) ; return s . offset = "right" == s . collapse ? s . end : s . start , s } function ae ( e , t ) { return t && ( e . bad = ! 0 ) , e } function se ( e , t , n ) { var r ; if ( t == e . display . lineDiv ) { if ( r = e . display . lineDiv . childNodes [ n ] , ! r ) return ae ( e . clipPos ( zo ( e . display . viewTo - 1 ) ) , ! 0 ) ; t = null , n = 0 } else for ( r = t ; ; r = r . parentNode ) { if ( ! r || r == e . display . lineDiv ) return null ; if ( r . parentNode && r . parentNode == e . display . lineDiv ) break } for ( var i = 0 ; i < e . display . view . length ; i ++ ) { var o = e . display . view [ i ] ; if ( o . node == r ) return ce ( o , t , n ) } } function ce ( e , t , n ) { function r ( t , n , r ) { for ( var i = - 1 ; i < ( u ? u . length : 0 ) ; i ++ ) for ( var o = 0 > i ? c . map : u [ i ] , l = 0 ; l < o . length ; l += 3 ) { var a = o [ l + 2 ] ; if ( a == t || a == n ) { var s = ni ( 0 > i ? e . line : e . rest [ i ] ) , d = o [ l ] + r ; return ( 0 > r || a != t ) && ( d = o [ l + ( r ? 1 : 0 ) ] ) , zo ( s , d ) } } } var i = e . text . firstChild , o = ! 1 ; if ( ! t || ! Kl ( i , t ) ) return ae ( zo ( ni ( e . line ) , 0 ) , ! 0 ) ; if ( t == i && ( o = ! 0 , t = i . childNodes [ n ] , n = 0 , ! t ) ) { var l = e . rest ? Di ( e . rest ) : e . line ; return ae ( zo ( ni ( l ) , l . text . length ) , o ) } var a = 3 == t . nodeType ? t : null , s = t ; for ( a || 1 != t . childNodes . length || 3 != t . firstChild . nodeType || ( a = t . firstChild , n && ( n = a . nodeValue . length ) ) ; s . parentNode != i ; ) s = s . parentNode ; var c = e . measure , u = c . maps , d = r ( a , s , n ) ; if ( d ) return ae ( d , o ) ; for ( var h = s . nextSibling , f = a ? a . nodeValue . length - n : 0 ; h ; h = h . nextSibling ) { if ( d = r ( h , h . firstChild , 0 ) ) return ae ( zo ( d . line , d . ch - f ) , o ) ; f += h . textContent . length } for ( var p = s . previousSibling , f = n ; p ; p = p . previousSibling ) { if ( d = r ( p , p . firstChild , - 1 ) ) return ae ( zo ( d . line , d . ch + f ) , o ) ; f += h . textContent . length } } function ue ( e , t , n , r , i ) { function o ( e ) { return function ( t ) { return t . id == e } } function l ( t ) { if ( 1 == t . nodeType ) { var n = t . getAttribute ( "cm-text" ) ; if ( null != n ) return "" == n && ( n = t . textContent . replace ( /\u200b/g , "" ) ) , void ( a += n ) ; var u , d = t . getAttribute ( "cm-marker" ) ; if ( d ) { var h = e . findMarks ( zo ( r , 0 ) , zo ( i + 1 , 0 ) , o ( + d ) ) ; return void ( h . length && ( u = h [ 0 ] . find ( ) ) && ( a += Jr ( e . doc , u . from , u . to ) . join ( c ) ) ) } if ( "false" == t . getAttribute ( "contenteditable" ) ) return ; for ( var f = 0 ; f < t . childNodes . length ; f ++ ) l ( t . childNodes [ f ] ) ; /^(pre|div|p)$/i . test ( t . nodeName ) && ( s = ! 0 ) } else if ( 3 == t . nodeType ) { var p = t . nodeValue ; if ( ! p ) return ; s && ( a += c , s = ! 1 ) , a += p } } for ( var a = "" , s = ! 1 , c = e . doc . lineSeparator ( ) ; l ( t ) , t != n ; ) t = t . nextSibling ; return a } function de ( e , t ) { this . ranges = e , this . primIndex = t } function he ( e , t ) { this . anchor = e , this . head = t } function fe ( e , t ) { var n = e [ t ] ; e . sort ( function ( e , t ) { return Ro ( e . from ( ) , t . from ( ) ) } ) , t = Ei ( e , n ) ; for ( var r = 1 ; r < e . length ; r ++ ) { var i = e [ r ] , o = e [ r - 1 ] ; if ( Ro ( o . to ( ) , i . from ( ) ) >= 0 ) { var l = X ( o . from ( ) , i . from ( ) ) , a = K ( o . to ( ) , i . to ( ) ) , s = o . empty ( ) ? i . from ( ) == i . head : o . from ( ) == o . head ; t >= r && -- t , e . splice ( -- r , 2 , new he ( s ? a : l , s ? l : a ) ) } } return new de ( e , t ) } function pe ( e , t ) { return new de ( [ new he ( e , t || e ) ] , 0 ) } function me ( e , t ) { return Math . max ( e . first , Math . min ( t , e . first + e . size - 1 ) ) } function ge ( e , t ) { if ( t . line < e . first ) return zo ( e . first , 0 ) ; var n = e . first + e . size - 1 ; return t . line > n ? zo ( n , Qr ( e , n ) . text . length ) : ve ( t , Qr ( e , t . line ) . text . length ) } function ve ( e , t ) { var n = e . ch ; return null == n || n > t ? zo ( e . line , t ) : 0 > n ? zo ( e . line , 0 ) : e } function ye ( e , t ) { return t >= e . first && t < e . first + e . size } function xe ( e , t ) { for ( var n = [ ] , r = 0 ; r < t . length ; r ++ ) n [ r ] = ge ( e , t [ r ] ) ; return n } function be ( e , t , n , r ) { if ( e . cm && e . cm . display . shift || e . extend ) { var i = t . anchor ; if ( r ) { var o = Ro ( n , i ) < 0 ; o != Ro ( r , i ) < 0 ? ( i = n , n = r ) : o != Ro ( n , r ) < 0 && ( n = r ) } return new he ( i , n ) } return new he ( r || n , n ) } function we ( e , t , n , r ) { Me ( e , new de ( [ be ( e , e . sel . primary ( ) , t , n ) ] , 0 ) , r ) } function ke ( e , t , n ) { for ( var r = [ ] , i = 0 ; i < e . sel . ranges . length ; i ++ ) r [ i ] = be ( e , e . sel . ranges [ i ] , t [ i ] , null ) ; var o = fe ( r , e
wi ( t ) } } } function Jt ( e , t ) { return Qt ( e , t , "gutterClick" , ! 0 ) } function en ( e ) { var t = this ; if ( rn ( t ) , ! Mi ( t , e ) && ! $t ( t . display , e ) ) { Ml ( e ) , bo && ( Vo = + new Date ) ; var n = Vt ( t , e , ! 0 ) , r = e . dataTransfer . files ; if ( n && ! Z ( t ) ) if ( r && r . length && window . FileReader && window . File ) for ( var i = r . length , o = Array ( i ) , l = 0 , a = function ( e , r ) { if ( ! t . options . allowDropFileTypes || - 1 != Ei ( t . options . allowDropFileTypes , e . type ) ) { var a = new FileReader ; a . onload = Wt ( t , function ( ) { var e = a . result ; if ( /[\x00-\x08\x0e-\x1f]{2}/ . test ( e ) && ( e = "" ) , o [ r ] = e , ++ l == i ) { n = ge ( t . doc , n ) ; var s = { from : n , to : n , text : t . doc . splitLines ( o . join ( t . doc . lineSeparator ( ) ) ) , origin : "paste" } ; Mn ( t . doc , s ) , Te ( t . doc , pe ( n , Jo ( s ) ) ) } } ) , a . readAsText ( e ) } } , s = 0 ; i > s ; ++ s ) a ( r [ s ] , s ) ; else { if ( t . state . draggingText && t . doc . sel . contains ( n ) > - 1 ) return t . state . draggingText ( e ) , void setTimeout ( function ( ) { t . display . input . focus ( ) } , 20 ) ; try { var o = e . dataTransfer . getData ( "Text" ) ; if ( o ) { if ( t . state . draggingText && ! ( Wo ? e . altKey : e . ctrlKey ) ) var c = t . listSelections ( ) ; if ( Ne ( t . doc , pe ( n , n ) ) , c ) for ( var s = 0 ; s < c . length ; ++ s ) Dn ( t . doc , "" , c [ s ] . anchor , c [ s ] . head , "drag" ) ; t . replaceSelection ( o , "around" , "paste" ) , t . display . input . focus ( ) } } catch ( e ) { } } } } function tn ( e , t ) { if ( bo && ( ! e . state . draggingText || + new Date - Vo < 100 ) ) return void Al ( t ) ; if ( ! Mi ( e , t ) && ! $t ( e . display , t ) && ( t . dataTransfer . setData ( "Text" , e . getSelection ( ) ) , t . dataTransfer . setDragImage && ! To ) ) { var n = qi ( "img" , null , null , "position: fixed; left: 0; top: 0;" ) ; n . src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" , Lo && ( n . width = n . height = 1 , e . display . wrapper . appendChild ( n ) , n . _top = n . offsetTop ) , t . dataTransfer . setDragImage ( n , 0 , 0 ) , Lo && n . parentNode . removeChild ( n ) } } function nn ( e , t ) { var n = Vt ( e , t ) ; if ( n ) { var r = document . createDocumentFragment ( ) ; Fe ( e , n , r ) , e . display . dragCursor || ( e . display . dragCursor = qi ( "div" , null , "CodeMirror-cursors CodeMirror-dragcursors" ) , e . display . lineSpace . insertBefore ( e . display . dragCursor , e . display . cursorDiv ) ) , Gi ( e . display . dragCursor , r ) } } function rn ( e ) { e . display . dragCursor && ( e . display . lineSpace . removeChild ( e . display . dragCursor ) , e . display . dragCursor = null ) } function on ( e , t ) { Math . abs ( e . doc . scrollTop - t ) < 2 || ( e . doc . scrollTop = t , vo || A ( e , { top : t } ) , e . display . scroller . scrollTop != t && ( e . display . scroller . scrollTop = t ) , e . display . scrollbars . setScrollTop ( t ) , vo && A ( e ) , Be ( e , 100 ) ) } function ln ( e , t , n ) { ( n ? t == e . doc . scrollLeft : Math . abs ( e . doc . scrollLeft - t ) < 2 ) || ( t = Math . min ( t , e . display . scroller . scrollWidth - e . display . scroller . clientWidth ) , e . doc . scrollLeft = t , w ( e ) , e . display . scroller . scrollLeft != t && ( e . display . scroller . scrollLeft = t ) , e . display . scrollbars . setScrollLeft ( t ) ) } function an ( e , t ) { var n = Yo ( t ) , r = n . x , i = n . y , o = e . display , l = o . scroller , a = l . scrollWidth > l . clientWidth , s = l . scrollHeight > l . clientHeight ; if ( r && a || i && s ) { if ( i && Wo && ko ) e : for ( var c = t . target , u = o . view ; c != l ; c = c . parentNode ) for ( var d = 0 ; d < u . length ; d ++ ) if ( u [ d ] . node == c ) { e . display . currentWheelTarget = c ; break e } if ( r && ! vo && ! Lo && null != Xo ) return i && s && on ( e , Math . max ( 0 , Math . min ( l . scrollTop + i * Xo , l . scrollHeight - l . clientHeight ) ) ) , ln ( e , Math . max ( 0 , Math . min ( l . scrollLeft + r * Xo , l . scrollWidth - l . clientWidth ) ) ) , ( ! i || i && s ) && Ml ( t ) , void ( o . wheelStartX = null ) ; if ( i && null != Xo ) { var h = i * Xo , f = e . doc . scrollTop , p = f + o . wrapper . clientHeight ; 0 > h ? f = Math . max ( 0 , f + h - 50 ) : p = Math . min ( e . doc . height , p + h + 50 ) , A ( e , { top : f , bottom : p } ) } 20 > Ko && ( null == o . wheelStartX ? ( o . wheelStartX = l . scrollLeft , o . wheelStartY = l . scrollTop , o . wheelDX = r , o . wheelDY = i , setTimeout ( function ( ) { if ( null != o . wheelStartX ) { var e = l . scrollLeft - o . wheelStartX , t = l . scrollTop - o . wheelStartY , n = t && o . wheelDY && t / o . wheelDY || e && o . wheelDX && e / o . wheelDX ; o . wheelStartX = o . wheelStartY = null , n && ( Xo = ( Xo * Ko + n ) / ( Ko + 1 ) , ++ Ko ) } } , 200 ) ) : ( o . wheelDX += r , o . wheelDY += i ) ) } } function sn ( e , t , n ) { if ( "string" == typeof t && ( t = ul [ t ] , ! t ) ) return ! 1 ; e . display . input . ensurePolled ( ) ; var r = e . display . shift , i = ! 1 ; try { Z ( e ) && ( e . state . suppressEdits = ! 0 ) , n && ( e . display . shift = ! 1 ) , i = t ( e ) != Pl } finally { e . display . shift = r , e . state . suppressEdits = ! 1 } return i } function cn ( e , t , n ) { for ( var r = 0 ; r < e . state . keyMaps . length ; r ++ ) { var i = hl ( t , e . state . keyMaps [ r ] , n , e ) ; if ( i ) return i } return e . options . extraKeys && hl ( t , e . options . extraKeys , n , e ) || hl ( t , e . options . keyMap , n , e ) } function un ( e , t , n , r ) { var i = e . state . keySeq ; if ( i ) { if ( fl ( t ) ) return "handled" ; Zo . set ( 50 , function ( ) { e . state . keySeq
e . doc = t , t . cm = e , l ( e ) , n ( e ) , e . options . lineWrapping || h ( e ) , e . options . mode = t . modeOption , Pt ( e ) } function Qr ( e , t ) { if ( t -= e . first , 0 > t || t >= e . size ) throw new Error ( "There is no line " + ( t + e . first ) + " in the document." ) ; for ( var n = e ; ! n . lines ; ) for ( var r = 0 ; ; ++ r ) { var i = n . children [ r ] , o = i . chunkSize ( ) ; if ( o > t ) { n = i ; break } t -= o } return n . lines [ t ] } function Jr ( e , t , n ) { var r = [ ] , i = t . line ; return e . iter ( t . line , n . line + 1 , function ( e ) { var o = e . text ; i == n . line && ( o = o . slice ( 0 , n . ch ) ) , i == t . line && ( o = o . slice ( t . ch ) ) , r . push ( o ) , ++ i } ) , r } function ei ( e , t , n ) { var r = [ ] ; return e . iter ( t , n , function ( e ) { r . push ( e . text ) } ) , r } function ti ( e , t ) { var n = t - e . height ; if ( n ) for ( var r = e ; r ; r = r . parent ) r . height += n } function ni ( e ) { if ( null == e . parent ) return null ; for ( var t = e . parent , n = Ei ( t . lines , e ) , r = t . parent ; r ; t = r , r = r . parent ) for ( var i = 0 ; r . children [ i ] != t ; ++ i ) n += r . children [ i ] . chunkSize ( ) ; return n + t . first } function ri ( e , t ) { var n = e . first ; e : do { for ( var r = 0 ; r < e . children . length ; ++ r ) { var i = e . children [ r ] , o = i . height ; if ( o > t ) { e = i ; continue e } t -= o , n += i . chunkSize ( ) } return n } while ( ! e . lines ) ; for ( var r = 0 ; r < e . lines . length ; ++ r ) { var l = e . lines [ r ] , a = l . height ; if ( a > t ) break ; t -= a } return n + r } function ii ( e ) { e = xr ( e ) ; for ( var t = 0 , n = e . parent , r = 0 ; r < n . lines . length ; ++ r ) { var i = n . lines [ r ] ; if ( i == e ) break ; t += i . height } for ( var o = n . parent ; o ; n = o , o = n . parent ) for ( var r = 0 ; r < o . children . length ; ++ r ) { var l = o . children [ r ] ; if ( l == n ) break ; t += l . height } return t } function oi ( e ) { var t = e . order ; return null == t && ( t = e . order = aa ( e . text ) ) , t } function li ( e ) { this . done = [ ] , this . undone = [ ] , this . undoDepth = 1 / 0 , this . lastModTime = this . lastSelTime = 0 , this . lastOp = this . lastSelOp = null , this . lastOrigin = this . lastSelOrigin = null , this . generation = this . maxGeneration = e || 1 } function ai ( e , t ) { var n = { from : V ( t . from ) , to : Jo ( t ) , text : Jr ( e , t . from , t . to ) } ; return pi ( e , n , t . from . line , t . to . line + 1 ) , Yr ( e , function ( e ) { pi ( e , n , t . from . line , t . to . line + 1 ) } , ! 0 ) , n } function si ( e ) { for ( ; e . length ; ) { var t = Di ( e ) ; if ( ! t . ranges ) break ; e . pop ( ) } } function ci ( e , t ) { return t ? ( si ( e . done ) , Di ( e . done ) ) : e . done . length && ! Di ( e . done ) . ranges ? Di ( e . done ) : e . done . length > 1 && ! e . done [ e . done . length - 2 ] . ranges ? ( e . done . pop ( ) , Di ( e . done ) ) : void 0 } function ui ( e , t , n , r ) { var i = e . history ; i . undone . length = 0 ; var o , l = + new Date ; if ( ( i . lastOp == r || i . lastOrigin == t . origin && t . origin && ( "+" == t . origin . charAt ( 0 ) && e . cm && i . lastModTime > l - e . cm . options . historyEventDelay || "*" == t . origin . charAt ( 0 ) ) ) && ( o = ci ( i , i . lastOp == r ) ) ) { var a = Di ( o . changes ) ; 0 == Ro ( t . from , t . to ) && 0 == Ro ( t . from , a . to ) ? a . to = Jo ( t ) : o . changes . push ( ai ( e , t ) ) } else { var s = Di ( i . done ) ; for ( s && s . ranges || fi ( e . sel , i . done ) , o = { changes : [ ai ( e , t ) ] , generation : i . generation } , i . done . push ( o ) ; i . done . length > i . undoDepth ; ) i . done . shift ( ) , i . done [ 0 ] . ranges || i . done . shift ( ) } i . done . push ( n ) , i . generation = ++ i . maxGeneration , i . lastModTime = i . lastSelTime = l , i . lastOp = i . lastSelOp = r , i . lastOrigin = i . lastSelOrigin = t . origin , a || Dl ( e , "historyAdded" ) } function di ( e , t , n , r ) { var i = t . charAt ( 0 ) ; return "*" == i || "+" == i && n . ranges . length == r . ranges . length && n . somethingSelected ( ) == r . somethingSelected ( ) && new Date - e . history . lastSelTime <= ( e . cm ? e . cm . options . historyEventDelay : 500 ) } function hi ( e , t , n , r ) { var i = e . history , o = r && r . origin ; n == i . lastSelOp || o && i . lastSelOrigin == o && ( i . lastModTime == i . lastSelTime && i . lastOrigin == o || di ( e , o , Di ( i . done ) , t ) ) ? i . done [ i . done . length - 1 ] = t : fi ( t , i . done ) , i . lastSelTime = + new Date , i . lastSelOrigin = o , i . lastSelOp = n , r && r . clearRedo !== ! 1 && si ( i . undone ) } function fi ( e , t ) { var n = Di ( t ) ; n && n . ranges && n . equals ( e ) || t . push ( e ) } function pi ( e , t , n , r ) { var i = t [ "spans_" + e . id ] , o = 0 ; e . iter ( Math . max ( e . first , n ) , Math . min ( e . first + e . size , r ) , function ( n ) { n . markedSpans && ( ( i || ( i = t [ "spans_" + e . id ] = { } ) ) [ o ] = n . markedSpans ) , ++ o } ) } function mi ( e ) { if ( ! e ) return null ; for ( var t , n = 0 ; n < e . length ; ++ n ) e [ n ] . marker . explicitlyCleared ? t || ( t = e . slice ( 0 , n ) ) : t && t . push ( e [ n ] ) ; return t ? t . length ? t : null : e } function gi ( e , t ) { var n = t [ "spans_" + e . id ] ; if ( ! n ) return null ; for ( var r = 0 , i = [ ] ; r < t . text . length ; ++ r ) i . push ( mi ( n [ r ] ) ) ; return i } function vi ( e , t , n ) { for ( var r = 0 , i = [ ] ; r < e . length ; ++ r ) { var o = e [ r ] ; if ( o . ranges ) i . push ( n ? de . prototype . deepCopy . call ( o ) : o ) ; else { var l = o . changes , a = [ ] ; i . push ( { changes : a } ) ; for ( var s = 0 ; s < l . length ; ++ s ) { var c , u = l [ s ] ; if ( a . push ( { from : u . from , to : u . to , text : u . text } ) , t ) for ( var d in u ) ( c = d . match ( /^spans_(\d+)$/ ) ) && Ei ( t , Number ( c [ 1 ] ) ) > - 1 && ( Di ( a ) [ d ] = u [ d ]
var a = pt ( n , l . head , "div" ) ; null != l . goalColumn && ( a . left = l . goalColumn ) , i . push ( a . left ) ; var s = Gn ( n , a , e , t ) ; return "page" == t && l == r . sel . primary ( ) && zn ( n , null , ft ( n , s , "div" ) . top - a . top ) , s } , Rl ) , i . length ) for ( var l = 0 ; l < r . sel . ranges . length ; l ++ ) r . sel . ranges [ l ] . goalColumn = i [ l ] } ) , findWordAt : function ( e ) { var t = this . doc , n = Qr ( t , e . line ) . text , r = e . ch , i = e . ch ; if ( n ) { var o = this . getHelper ( e , "wordChars" ) ; ( e . xRel < 0 || i == n . length ) && r ? -- r : ++ i ; for ( var l = n . charAt ( r ) , a = Bi ( l , o ) ? function ( e ) { return Bi ( e , o ) } : /\s/ . test ( l ) ? function ( e ) { return /\s/ . test ( e ) } : function ( e ) { return ! /\s/ . test ( e ) && ! Bi ( e ) } ; r > 0 && a ( n . charAt ( r - 1 ) ) ; ) -- r ; for ( ; i < n . length && a ( n . charAt ( i ) ) ; ) ++ i } return new he ( zo ( e . line , r ) , zo ( e . line , i ) ) } , toggleOverwrite : function ( e ) { ( null == e || e != this . state . overwrite ) && ( ( this . state . overwrite = ! this . state . overwrite ) ? Ql ( this . display . cursorDiv , "CodeMirror-overwrite" ) : Zl ( this . display . cursorDiv , "CodeMirror-overwrite" ) , Dl ( this , "overwriteToggle" , this , this . state . overwrite ) ) } , hasFocus : function ( ) { return this . display . input . getField ( ) == $i ( ) } , scrollTo : Ht ( function ( e , t ) { ( null != e || null != t ) && Bn ( this ) , null != e && ( this . curOp . scrollLeft = e ) , null != t && ( this . curOp . scrollTop = t ) } ) , getScrollInfo : function ( ) { var e = this . display . scroller ; return { left : e . scrollLeft , top : e . scrollTop , height : e . scrollHeight - Ve ( this ) - this . display . barHeight , width : e . scrollWidth - Ve ( this ) - this . display . barWidth , clientHeight : Xe ( this ) , clientWidth : Ke ( this ) } } , scrollIntoView : Ht ( function ( e , t ) { if ( null == e ? ( e = { from : this . doc . sel . primary ( ) . head , to : null } , null == t && ( t = this . options . cursorScrollMargin ) ) : "number" == typeof e ? e = { from : zo ( e , 0 ) , to : null } : null == e . from && ( e = { from : e , to : null } ) , e . to || ( e . to = e . from ) , e . margin = t || 0 , null != e . from . line ) Bn ( this ) , this . curOp . scrollToPos = e ; else { var n = Fn ( this , Math . min ( e . from . left , e . to . left ) , Math . min ( e . from . top , e . to . top ) - e . margin , Math . max ( e . from . right , e . to . right ) , Math . max ( e . from . bottom , e . to . bottom ) + e . margin ) ; this . scrollTo ( n . scrollLeft , n . scrollTop ) } } ) , setSize : Ht ( function ( e , t ) { function n ( e ) { return "number" == typeof e || /^\d+$/ . test ( String ( e ) ) ? e + "px" : e } var r = this ; null != e && ( r . display . wrapper . style . width = n ( e ) ) , null != t && ( r . display . wrapper . style . height = n ( t ) ) , r . options . lineWrapping && at ( this ) ; var i = r . display . viewFrom ; r . doc . iter ( i , r . display . viewTo , function ( e ) { if ( e . widgets ) for ( var t = 0 ; t < e . widgets . length ; t ++ ) if ( e . widgets [ t ] . noHScroll ) { Ft ( r , i , "widget" ) ; break } ++ i } ) , r . curOp . forceUpdate = ! 0 , Dl ( r , "refresh" , this ) } ) , operation : function ( e ) { return Ot ( this , e ) } , refresh : Ht ( function ( ) { var e = this . display . cachedTextHeight ; Pt ( this ) , this . curOp . forceUpdate = ! 0 , st ( this ) , this . scrollTo ( this . doc . scrollLeft , this . doc . scrollTop ) , u ( this ) , ( null == e || Math . abs ( e - xt ( this . display ) ) > . 5 ) && l ( this ) , Dl ( this , "refresh" , this ) } ) , swapDoc : Ht ( function ( e ) { var t = this . doc ; return t . cm = null , Zr ( this , e ) , st ( this ) , this . display . input . reset ( ) , this . scrollTo ( e . scrollLeft , e . scrollTop ) , this . curOp . forceScroll = ! 0 , Li ( this , "swapDoc" , this , t ) , t } ) , getInputField : function ( ) { return this . display . input . getField ( ) } , getWrapperElement : function ( ) { return this . display . wrapper } , getScrollerElement : function ( ) { return this . display . scroller } , getGutterElement : function ( ) { return this . display . gutters } } , Oi ( e ) ; var el = e . defaults = { } , tl = e . optionHandlers = { } , nl = e . Init = { toString : function ( ) { return "CodeMirror.Init" } } ; $n ( "value" , "" , function ( e , t ) { e . setValue ( t ) } , ! 0 ) , $n ( "mode" , null , function ( e , t ) { e . doc . modeOption = t , n ( e ) } , ! 0 ) , $n ( "indentUnit" , 2 , n , ! 0 ) , $n ( "indentWithTabs" , ! 1 ) , $n ( "smartIndent" , ! 0 ) , $n ( "tabSize" , 4 , function ( e ) { r ( e ) , st ( e ) , Pt ( e ) } , ! 0 ) , $n ( "lineSeparator" , null , function ( e , t ) { if ( e . doc . lineSep = t , t ) { var n = [ ] , r = e . doc . first ; e . doc . iter ( function ( e ) { for ( var i = 0 ; ; ) { var o = e . text . indexOf ( t , i ) ; if ( - 1 == o ) break ; i = o + t . length , n . push ( zo ( r , o ) ) } r ++ } ) ; for ( var i = n . length - 1 ; i >= 0 ; i -- ) Dn ( e . doc , t , n [ i ] , zo ( n [ i ] . line , n [ i ] . ch + t . length ) ) } } ) , $n ( "specialChars" , /[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g , function ( t , n , r ) { t . state . specialChars = new RegExp ( n . source + ( n . test ( " " ) ? "" : "| " ) , "g" ) , r != e . Init && t . refresh ( ) } ) , $n ( "specialCharPlaceholder" , Br , function ( e ) { e . refresh ( ) } , ! 0 ) , $n ( "electricChars" , ! 0 ) , $n ( "inputStyle" , Oo ? "contenteditable" : "textarea" , function ( ) { throw new Error ( "inputStyle can not (yet) be changed in a running editor" ) } , ! 0 ) , $n ( "rtlMoveVisually" , ! Ho ) , $n ( " whole
} , El = null , Il = 30 , Pl = e . Pass = { toString : function ( ) { return "CodeMirror.Pass" } } , Fl = { scroll : ! 1 } , zl = { origin : "*mouse" } , Rl = { origin : "+move" } ; Wi . prototype . set = function ( e , t ) { clearTimeout ( this . id ) , this . id = setTimeout ( t , e ) } ; var Bl = e . countColumn = function ( e , t , n , r , i ) { null == t && ( t = e . search ( /[^\s\u00a0]/ ) , - 1 == t && ( t = e . length ) ) ; for ( var o = r || 0 , l = i || 0 ; ; ) { var a = e . indexOf ( " " , o ) ; if ( 0 > a || a >= t ) return l + ( t - o ) ; l += a - o , l += n - l % n , o = a + 1 } } , jl = e . findColumn = function ( e , t , n ) { for ( var r = 0 , i = 0 ; ; ) { var o = e . indexOf ( " " , r ) ; - 1 == o && ( o = e . length ) ; var l = o - r ; if ( o == e . length || i + l >= t ) return r + Math . min ( l , t - i ) ; if ( i += o - r , i += n - i % n , r = o + 1 , i >= t ) return r } } , _l = [ "" ] , ql = function ( e ) { e . select ( ) } ; Ao ? ql = function ( e ) { e . selectionStart = 0 , e . selectionEnd = e . value . length } : bo && ( ql = function ( e ) { try { e . select ( ) } catch ( t ) { } } ) ; var Ul , Gl = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/ , $l = e . isWordChar = function ( e ) { return /\w/ . test ( e ) || e > " " && ( e . toUpperCase ( ) != e . toLowerCase ( ) || Gl . test ( e ) ) } , Vl = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/ ; Ul = document . createRange ? function ( e , t , n , r ) { var i = document . createRange ( ) ; return i . setEnd ( r || e , n ) , i . setStart ( e , t ) , i } : function ( e , t , n ) { var r = document . body . createTextRange ( ) ; try { r . moveToElementText ( e . parentNode ) } catch ( i ) { return r } return r . collapse ( ! 0 ) , r . moveEnd ( "character" , n ) , r . moveStart ( "character" , t ) , r } ; var Kl = e . contains = function ( e , t ) { if ( 3 == t . nodeType && ( t = t . parentNode ) , e . contains ) return e . contains ( t ) ; do if ( 11 == t . nodeType && ( t = t . host ) , t == e ) return ! 0 ; while ( t = t . parentNode ) } ; bo && 11 > wo && ( $i = function ( ) { try { return document . activeElement } catch ( e ) { return document . body } } ) ; var Xl , Yl , Zl = e . rmClass = function ( e , t ) { var n = e . className , r = Vi ( t ) . exec ( n ) ; if ( r ) { var i = n . slice ( r . index + r [ 0 ] . length ) ; e . className = n . slice ( 0 , r . index ) + ( i ? r [ 1 ] + i : "" ) } } , Ql = e . addClass = function ( e , t ) { var n = e . className ; Vi ( t ) . test ( n ) || ( e . className += ( n ? " " : "" ) + t ) } , Jl = ! 1 , ea = function ( ) { if ( bo && 9 > wo ) return ! 1 ; var e = qi ( "div" ) ; return "draggable" in e || "dragDrop" in e } ( ) , ta = e . splitLines = 3 != "\n\nb" . split ( /\n/ ) . length ? function ( e ) { for ( var t = 0 , n = [ ] , r = e . length ; r >= t ; ) { var i = e . indexOf ( "\n" , t ) ; - 1 == i && ( i = e . length ) ; var o = e . slice ( t , "\r" == e . charAt ( i - 1 ) ? i - 1 : i ) , l = o . indexOf ( "\r" ) ; - 1 != l ? ( n . push ( o . slice ( 0 , l ) ) , t += l + 1 ) : ( n . push ( o ) , t = i + 1 ) } return n } : function ( e ) { retu
} , e . findModeByName = function ( t ) { t = t . toLowerCase ( ) ; for ( var n = 0 ; n < e . modeInfo . length ; n ++ ) { var r = e . modeInfo [ n ] ; if ( r . name . toLowerCase ( ) == t ) return r ; if ( r . alias ) for ( var i = 0 ; i < r . alias . length ; i ++ ) if ( r . alias [ i ] . toLowerCase ( ) == t ) return r } } } ) } , { "../lib/codemirror" : 7 } ] , 11 : [ function ( t , n , r ) { ! function ( i ) { "object" == typeof r && "object" == typeof n ? i ( t ( "../../lib/codemirror" ) ) : "function" == typeof e && e . amd ? e ( [ "../../lib/codemirror" ] , i ) : i ( CodeMirror ) } ( function ( e ) { "use strict" ; e . defineMode ( "xml" , function ( t , n ) { function r ( e , t ) { function n ( n ) { return t . tokenize = n , n ( e , t ) } var r = e . next ( ) ; if ( "<" == r ) return e . eat ( "!" ) ? e . eat ( "[" ) ? e . match ( "CDATA[" ) ? n ( l ( "atom" , "]]>" ) ) : null : e . match ( "--" ) ? n ( l ( "comment" , "-->" ) ) : e . match ( "DOCTYPE" , ! 0 , ! 0 ) ? ( e . eatWhile ( /[\w\._\-]/ ) , n ( a ( 1 ) ) ) : null : e . eat ( "?" ) ? ( e . eatWhile ( /[\w\._\-]/ ) , t . tokenize = l ( "meta" , "?>" ) , "meta" ) : ( C = e . eat ( "/" ) ? "closeTag" : "openTag" , t . tokenize = i , "tag bracket" ) ; if ( "&" == r ) { var o ; return o = e . eat ( "#" ) ? e . eat ( "x" ) ? e . eatWhile ( /[a-fA-F\d]/ ) && e . eat ( ";" ) : e . eatWhile ( /[\d]/ ) && e . eat ( ";" ) : e . eatWhile ( /[\w\.\-:]/ ) && e . eat ( ";" ) , o ? "atom" : "error" } return e . eatWhile ( /[^&<]/ ) , null } function i ( e , t ) { var n = e . next ( ) ; if ( ">" == n || "/" == n && e . eat ( ">" ) ) return t . tokenize = r , C = ">" == n ? "endTag" : "selfcloseTag" , "tag bracket" ; if ( "=" == n ) return C = "equals" , null ; if ( "<" == n ) { t . tokenize = r , t . state = d , t . tagName = t . tagStart = null ; var i = t . tokenize ( e , t ) ; return i ? i + " tag error" : "tag error" } return /[\'\"]/ . test ( n ) ? ( t . tokenize = o ( n ) , t . stringStartCol = e . column ( ) , t . tokenize ( e , t ) ) : ( e . match ( /^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/ ) , "word" ) } function o ( e ) { var t = function ( t , n ) { for ( ; ! t . eol ( ) ; ) if ( t . next ( ) == e ) { n . tokenize = i ; break } return "string" } ; return t . isInAttribute = ! 0 , t } function l ( e , t ) { return function ( n , i ) { for ( ; ! n . eol ( ) ; ) { if ( n . match ( t ) ) { i . tokenize = r ; break } n . next ( ) } return e } } function a ( e ) { return function ( t , n ) { for ( var i ; null != ( i = t . next ( ) ) ; ) { if ( "<" == i ) return n . tokenize = a ( e + 1 ) , n . tokenize ( t , n ) ; if ( ">" == i ) { if ( 1 == e ) { n . tokenize = r ; break } return n . tokenize = a ( e - 1 ) , n . tokenize ( t , n ) } } return "meta" } } function s ( e , t , n ) { this . prev = e . context , this . tagName = t , this . indent = e . indented , this . startOfLine = n , ( L . doNotIndent . hasOwnProperty ( t ) || e . context && e . context . noIndent ) && ( this . noIndent = ! 0 ) } function c ( e ) { e . context && ( e . context = e . context . prev ) } function u ( e , t ) { for ( var n ; ; ) { if ( ! e . context ) return ; if ( n = e . context . tagName , ! L . contextGrabbers . hasOwnProperty ( n ) || ! L . contextGrabbers [ n ] . hasOwnProperty ( t ) ) return ; c ( e ) } } function d ( e , t , n ) { return "openTag" == e ? ( n . tagStart = t . column ( ) , h ) : "closeTag" == e ? f : d } function h ( e , t , n ) { return "word" == e ? ( n . tagName = t . current ( ) , S = "tag" , g ) : ( S = "error" , h ) } function f ( e , t , n ) { if ( "word" == e ) { var r = t . current ( ) ; return n . context && n . context . tagName != r && L . implicitlyClosed . hasOwnProperty ( n . context . tagName ) && c ( n ) , n . context && n . context . tagName == r ? ( S = "tag" , p ) : ( S = "tag error" , m ) } return S = "error" , m } function p ( e , t , n ) { return "endTag" != e ? ( S = "error" , p ) : ( c ( n ) , d ) } function m ( e , t , n ) { return S = "error" , p ( e , t , n ) } function g ( e , t , n ) { if ( "word" == e ) return S = "attribute" , v ; if ( "endTag" == e || "selfcloseTag" == e ) { var r = n . tagName , i = n . tagStart ; return n . tagName = n . tagStart = null , "selfcloseTag" == e || L . autoSelfClosers . hasOwnProperty ( r ) ? u ( n , r ) : ( u ( n , r ) , n . context = new s ( n , r , i == n . indented ) ) , d } return S = "error" , g } function v ( e , t , n ) { return "equals" == e ? y : ( L . allowMissing || ( S = "error" ) , g ( e , t , n ) ) } function y ( e , t , n ) { return "string" == e ? x : "word" == e && L . allowUnquoted ? ( S = "string" , g ) : ( S = "error" , g ( e , t , n ) ) } function x ( e , t , n ) { return "string" == e ? x : g ( e , t , n ) } var b = t . indentUnit , w = n . multilineTagIndentFactor || 1 , k = n . multilineTagIndentPastTag ; null == k && ( k = ! 0 ) ; var C , S , L = n . htmlMode ? { autoSelfClosers : { area : ! 0 , base : ! 0 , br : ! 0 , col : ! 0 , command : ! 0 , embed : ! 0 , frame : ! 0 , hr : ! 0 , img : ! 0 , input : ! 0 , keygen : ! 0 , link : ! 0 , meta : ! 0 , param : ! 0 , source : ! 0 , track : ! 0 , wbr : ! 0 , menuitem : ! 0 } , implicitlyClosed : { dd : ! 0 , li : ! 0 , optgroup : ! 0 , option : ! 0 , p : ! 0 , rp : ! 0 , rt : ! 0 , tbody : ! 0 , td : ! 0 , tfoot : ! 0 , th : ! 0 , tr : ! 0 } , contextGrabbers : { dd : { dd : ! 0 , dt : ! 0 } , dt : { dd : ! 0 , dt : ! 0 } , li : { li : ! 0 } , option : { option : ! 0 , optgroup : ! 0 } , optgroup : { optgroup : ! 0 } , p : { address : ! 0 , article : ! 0 , aside : ! 0 , blockquote : ! 0 , dir : ! 0 , div : ! 0 , dl : ! 0 , fieldset : ! 0 , footer : ! 0 , form : ! 0 , h1 : ! 0 , h2 : ! 0 , h3 : ! 0 , h4 : ! 0 , h5 : ! 0 , h6 : ! 0 , header : ! 0 , hgroup : ! 0 , hr : ! 0 , menu : ! 0 , nav : ! 0 , ol : ! 0 , p : ! 0 , pre : ! 0 , section : ! 0 , table : ! 0 , ul : ! 0 } , rp : { rp : ! 0 , rt : ! 0 } , rt : { r
e ( "codemirror/addon/display/placeholder.js" ) , e ( "codemirror/mode/gfm/gfm.js" ) , e ( "codemirror/mode/xml/xml.js" ) , e ( "spell-checker" ) ; var B = e ( "marked" ) , j = /Mac/ . test ( navigator . platform ) , _ = { toggleBold : c , toggleItalic : u , drawLink : k , toggleHeadingSmaller : p , toggleHeadingBigger : m , drawImage : C , toggleBlockquote : f , toggleOrderedList : b , toggleUnorderedList : x , toggleCodeBlock : h , togglePreview : A , toggleStrikethrough : d , toggleHeading1 : g , toggleHeading2 : v , toggleHeading3 : y , cleanBlock : w , drawTable : S , drawHorizontalRule : L , undo : T , redo : M , toggleSideBySide : N , toggleFullScreen : s } , q = { toggleBold : "Cmd-B" , toggleItalic : "Cmd-I" , drawLink : "Cmd-K" , toggleHeadingSmaller : "Cmd-H" , toggleHeadingBigger : "Shift-Cmd-H" , cleanBlock : "Cmd-E" , drawImage : "Cmd-Alt-I" , toggleBlockquote : "Cmd-'" , toggleOrderedList : "Cmd-Alt-L" , toggleUnorderedList : "Cmd-L" , toggleCodeBlock : "Cmd-Alt-C" , togglePreview : "Cmd-P" , toggleSideBySide : "F9" , toggleFullScreen : "F11" } , U = function ( e ) { for ( var t in _ ) if ( _ [ t ] === e ) return t ; return null } , G = function ( ) { var e = ! 1 ; return function ( t ) { ( /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i . test ( t ) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i . test ( t . substr ( 0 , 4 ) ) ) && ( e = ! 0 ) } ( navigator . userAgent || navigator . vendor || window . opera ) , e } , $ = "" , V = { bold : { name : "bold" , action : c , className : "fa fa-bold" , title : "Bold" , "default" : ! 0 } , italic : { name : "italic" , action : u , className : "fa fa-italic" , title : "Italic" , "default" : ! 0 } , strikethrough : { name : "strikethrough" , action : d , className : "fa fa-strikethrough" , title : "Strikethrough" } , heading : { name : "heading" , action : p , className : "fa fa-header" , title : "Heading" , "default" : ! 0 } , "heading-smaller" : { name : "heading-smaller" , action : p , className : "fa fa-header fa-header-x fa-header-smaller" , title : "Smaller Heading" } , "heading-bigger" : { name : "heading-bigger" , action : m , className : "fa fa-header fa-header-x fa-header-bigger" , title : "Bigger Heading" } , "heading-1" : { name : "heading-1" , action : g , className : "fa fa-header fa-header-x fa-header-1" , title : "Big Heading" } , "heading-2" : { name : "heading-2" , action : v , className : "fa fa-header fa-header-x fa-header-2" , title : "Medium Heading" } , "heading-3" : { name : "heading-3" , action : y , className : "fa fa-header fa-header-x fa-header-3" , title : "Small Heading" } , "separator-1" : { name : "separator-1" } , code : { name : "code" , action : h , className : "fa fa-code" , title : "Code" } , quote : { n