2015-08-29 07:02:09 +02:00
/ * *
2016-05-08 03:10:07 +02:00
* simplemde v1 . 10.1
2015-08-29 07:02:09 +02:00
* Copyright Next Step Webs , Inc .
* @ link https : //github.com/NextStepWebs/simplemde-markdown-editor
* @ license MIT
* /
2016-05-08 03:10:07 +02: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
e . setAttribute ( "spellcheck" , "false" ) } function ne ( e ) { this . cm = e , this . prevInput = "" , this . pollingFast = ! 1 , this . polling = new Oi , this . inaccurateSelection = ! 1 , this . hasSelection = ! 1 , this . composing = null } function re ( ) { var e = _i ( "textarea" , null , null , "position: absolute; padding: 0; width: 1px; height: 1em; outline: none" ) , t = _i ( "div" , [ e ] , null , "overflow: hidden; position: relative; width: 3px; height: 0px;" ) ; return wo ? e . style . width = "1000px" : e . setAttribute ( "wrap" , "off" ) , No && ( e . style . border = "1px solid black" ) , te ( e ) , t } function ie ( e ) { this . cm = e , this . lastAnchorNode = this . lastAnchorOffset = this . lastFocusNode = this . lastFocusOffset = null , this . polling = new Oi , this . gracePeriod = ! 1 } function oe ( e , t ) { var n = Je ( e , t . line ) ; if ( ! n || n . hidden ) return null ; var r = Zr ( e . doc , t . line ) , i = Ye ( n , r , t . line ) , o = ii ( r ) , l = "left" ; if ( o ) { var a = co ( o , t . ch ) ; l = a % 2 ? "right" : "left" } var s = nt ( i . map , t . ch , l ) ; return s . offset = "right" == s . collapse ? s . end : s . start , s } function le ( e , t ) { return t && ( e . bad = ! 0 ) , e } function ae ( e , t , n ) { var r ; if ( t == e . display . lineDiv ) { if ( r = e . display . lineDiv . childNodes [ n ] , ! r ) return le ( e . clipPos ( Fo ( 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 se ( o , t , n ) } } function se ( 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 = ti ( 0 > i ? e . line : e . rest [ i ] ) , d = o [ l ] + r ; return ( 0 > r || a != t ) && ( d = o [ l + ( r ? 1 : 0 ) ] ) , Fo ( s , d ) } } } var i = e . text . firstChild , o = ! 1 ; if ( ! t || ! Vl ( i , t ) ) return le ( Fo ( ti ( e . line ) , 0 ) , ! 0 ) ; if ( t == i && ( o = ! 0 , t = i . childNodes [ n ] , n = 0 , ! t ) ) { var l = e . rest ? Wi ( e . rest ) : e . line ; return le ( Fo ( ti ( 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 le ( 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 le ( Fo ( 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 le ( Fo ( d . line , d . ch + f ) , o ) ; f += h . textContent . length } } function ce ( 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 ( Fo ( r , 0 ) , Fo ( i + 1 , 0 ) , o ( + d ) ) ; return void ( h . length && ( u = h [ 0 ] . find ( ) ) && ( a += Qr ( 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 ue ( e , t ) { this . ranges = e , this . primIndex = t } function de ( e , t ) { this . anchor = e , this . head = t } function he ( e , t ) { var n = e [ t ] ; e . sort ( function ( e , t ) { return zo ( e . from ( ) , t . from ( ) ) } ) , t = Ii ( e , n ) ; for ( var r = 1 ; r < e . length ; r ++ ) { var i = e [ r ] , o = e [ r - 1 ] ; if ( zo ( 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 de ( s ? a : l , s ? l : a ) ) } } return new ue ( e , t ) } function fe ( e , t ) { return new ue ( [ new de ( e , t || e ) ] , 0 ) } function pe ( e , t ) { return Math . max ( e . first , Math . min ( t , e . first + e . size - 1 ) ) } function me ( e , t ) { if ( t . line < e . first ) return Fo ( e . first , 0 ) ; var n = e . first + e . size - 1 ; return t . line > n ? Fo ( n , Zr ( e , n ) . text . length ) : ge ( t , Zr ( e , t . line ) . text . length ) } function ge ( e , t ) { var n = e . ch ; return null == n || n > t ? Fo ( e . line , t ) : 0 > n ? Fo ( e . line , 0 ) : e } function ve ( e , t ) { return t >= e . first && t < e . first + e . size } function ye ( e , t ) { for ( var n = [ ] , r = 0 ; r < t . length ; r ++ ) n [ r ] = me ( e , t [ r ] ) ; return n } function xe ( e , t , n , r ) { if ( e . cm && e . cm . display . shift || e . extend ) { var i = t . anchor ; if ( r ) { var o = zo ( n , i ) < 0 ; o != zo ( r , i ) < 0 ? ( i = n , n = r ) : o != zo ( n , r ) < 0 && ( n = r ) } return new de ( i , n ) } return new de ( r || n , n ) } function be ( e , t , n , r ) { Te ( e , new ue ( [ xe ( e , e . sel . primary ( ) , t , n ) ] , 0 ) , r ) } function we ( e , t , n ) { for ( var r = [ ] , i = 0 ; i < e . sel . range
if ( o > a . bottom || ! Ni ( e , n ) ) return bi ( t ) ; o -= a . top - l . viewOffset ; for ( var s = 0 ; s < e . options . gutters . length ; ++ s ) { var c = l . gutters . childNodes [ s ] ; if ( c && c . getBoundingClientRect ( ) . right >= i ) { var u = ni ( e . doc , o ) , d = e . options . gutters [ s ] ; return Wl ( e , n , e , u , d , t ) , bi ( t ) } } } function Qt ( e , t ) { return Zt ( e , t , "gutterClick" , ! 0 ) } function Jt ( e ) { var t = this ; if ( nn ( t ) , ! Ti ( t , e ) && ! Gt ( t . display , e ) ) { Tl ( e ) , xo && ( $o = + new Date ) ; var n = $t ( t , e , ! 0 ) , r = e . dataTransfer . files ; if ( n && ! t . isReadOnly ( ) ) 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 != Ii ( t . options . allowDropFileTypes , e . type ) ) { var a = new FileReader ; a . onload = Ot ( t , function ( ) { var e = a . result ; if ( /[\x00-\x08\x0e-\x1f]{2}/ . test ( e ) && ( e = "" ) , o [ r ] = e , ++ l == i ) { n = me ( t . doc , n ) ; var s = { from : n , to : n , text : t . doc . splitLines ( o . join ( t . doc . lineSeparator ( ) ) ) , origin : "paste" } ; Tn ( t . doc , s ) , Le ( t . doc , fe ( n , Qo ( 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 && ! ( Oo ? e . altKey : e . ctrlKey ) ) var c = t . listSelections ( ) ; if ( Me ( t . doc , fe ( n , n ) ) , c ) for ( var s = 0 ; s < c . length ; ++ s ) Wn ( t . doc , "" , c [ s ] . anchor , c [ s ] . head , "drag" ) ; t . replaceSelection ( o , "around" , "paste" ) , t . display . input . focus ( ) } } catch ( e ) { } } } } function en ( e , t ) { if ( xo && ( ! e . state . draggingText || + new Date - $o < 100 ) ) return void Nl ( t ) ; if ( ! Ti ( e , t ) && ! Gt ( e . display , t ) && ( t . dataTransfer . setData ( "Text" , e . getSelection ( ) ) , t . dataTransfer . setDragImage && ! Lo ) ) { var n = _i ( "img" , null , null , "position: fixed; left: 0; top: 0;" ) ; n . src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" , So && ( n . width = n . height = 1 , e . display . wrapper . appendChild ( n ) , n . _top = n . offsetTop ) , t . dataTransfer . setDragImage ( n , 0 , 0 ) , So && n . parentNode . removeChild ( n ) } } function tn ( e , t ) { var n = $t ( e , t ) ; if ( n ) { var r = document . createDocumentFragment ( ) ; Pe ( e , n , r ) , e . display . dragCursor || ( e . display . dragCursor = _i ( "div" , null , "CodeMirror-cursors CodeMirror-dragcursors" ) , e . display . lineSpace . insertBefore ( e . display . dragCursor , e . display . cursorDiv ) ) , Ui ( e . display . dragCursor , r ) } } function nn ( e ) { e . display . dragCursor && ( e . display . lineSpace . removeChild ( e . display . dragCursor ) , e . display . dragCursor = null ) } function rn ( e , t ) { Math . abs ( e . doc . scrollTop - t ) < 2 || ( e . doc . scrollTop = t , go || A ( e , { top : t } ) , e . display . scroller . scrollTop != t && ( e . display . scroller . scrollTop = t ) , e . display . scrollbars . setScrollTop ( t ) , go && A ( e ) , Re ( e , 100 ) ) } function on ( 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 ln ( e , t ) { var n = Xo ( 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 && Oo && wo ) 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 && ! go && ! So && null != Ko ) return i && s && rn ( e , Math . max ( 0 , Math . min ( l . scrollTop + i * Ko , l . scrollHeight - l . clientHeight ) ) ) , on ( e , Math . max ( 0 , Math . min ( l . scrollLeft + r * Ko , l . scrollWidth - l . clientWidth ) ) ) , ( ! i || i && s ) && Tl ( t ) , void ( o . wheelStartX = null ) ; if ( i && null != Ko ) { var h = i * Ko , 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 > Vo && ( 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 && ( Ko = ( Ko * Vo + n ) / ( Vo + 1 ) , ++ Vo ) } } , 200 ) ) : ( o . wheelDX += r , o . wheelDY += i ) ) } } function an ( e , t , n ) { if ( "string" == typeof t && ( t = cl [ t ] , ! t ) ) return ! 1 ; e . display . input . ensurePolled ( ) ; var r = e . display . shift , i = ! 1 ; try { e . isReadOnly ( ) && ( e . state . suppressEdits = ! 0 ) , n && ( e . display . shift = ! 1 ) , i = t ( e ) != Dl } finally { e . display . shift = r , e . state . suppressEdits = ! 1 } return i } function sn ( e , t , n ) { for ( var r = 0 ; r < e . state . keyM
var i = e [ r ] ; t += i . chunkSize ( ) , n += i . height , i . parent = this } this . size = t , this . height = n , this . parent = null } function Xr ( e , t , n ) { function r ( e , i , o ) { if ( e . linked ) for ( var l = 0 ; l < e . linked . length ; ++ l ) { var a = e . linked [ l ] ; if ( a . doc != i ) { var s = o && a . sharedHist ; n && ! s || ( t ( a . doc , s ) , r ( a . doc , e , s ) ) } } } r ( e , null , ! 0 ) } function Yr ( e , t ) { if ( t . cm ) throw new Error ( "This document is already in use." ) ; e . doc = t , t . cm = e , l ( e ) , n ( e ) , e . options . lineWrapping || h ( e ) , e . options . mode = t . modeOption , Dt ( e ) } function Zr ( 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 Qr ( 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 Jr ( e , t , n ) { var r = [ ] ; return e . iter ( t , n , function ( e ) { r . push ( e . text ) } ) , r } function ei ( e , t ) { var n = t - e . height ; if ( n ) for ( var r = e ; r ; r = r . parent ) r . height += n } function ti ( e ) { if ( null == e . parent ) return null ; for ( var t = e . parent , n = Ii ( 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 ni ( 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 ri ( e ) { e = yr ( 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 ii ( e ) { var t = e . order ; return null == t && ( t = e . order = la ( e . text ) ) , t } function oi ( 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 li ( e , t ) { var n = { from : V ( t . from ) , to : Qo ( t ) , text : Qr ( e , t . from , t . to ) } ; return fi ( e , n , t . from . line , t . to . line + 1 ) , Xr ( e , function ( e ) { fi ( e , n , t . from . line , t . to . line + 1 ) } , ! 0 ) , n } function ai ( e ) { for ( ; e . length ; ) { var t = Wi ( e ) ; if ( ! t . ranges ) break ; e . pop ( ) } } function si ( e , t ) { return t ? ( ai ( e . done ) , Wi ( e . done ) ) : e . done . length && ! Wi ( e . done ) . ranges ? Wi ( e . done ) : e . done . length > 1 && ! e . done [ e . done . length - 2 ] . ranges ? ( e . done . pop ( ) , Wi ( e . done ) ) : void 0 } function ci ( 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 = si ( i , i . lastOp == r ) ) ) { var a = Wi ( o . changes ) ; 0 == zo ( t . from , t . to ) && 0 == zo ( t . from , a . to ) ? a . to = Qo ( t ) : o . changes . push ( li ( e , t ) ) } else { var s = Wi ( i . done ) ; for ( s && s . ranges || hi ( e . sel , i . done ) , o = { changes : [ li ( 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 || Wl ( e , "historyAdded" ) } function ui ( 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 di ( 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 || ui ( e , o , Wi ( i . done ) , t ) ) ? i . done [ i . done . length - 1 ] = t : hi ( t , i . done ) , i . lastSelTime = + new Date , i . lastSelOrigin = o , i . lastSelOp = n , r && r . clearRedo !== ! 1 && ai ( i . undone ) } function hi ( e , t ) { var n = Wi ( t ) ; n && n . ranges && n . equals ( e ) || t . push ( e ) } function fi ( 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 pi ( 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 mi ( e , t ) { var n = t [ "spans_" + e . id ] ; if ( ! n ) return null ; for ( var r = 0 , i = [ ] ; r < t . text . length ; ++ r )
} , zl ) } ) , deleteH : Ht ( function ( e , t ) { var n = this . doc . sel , r = this . doc ; n . somethingSelected ( ) ? r . replaceSelection ( "" , null , "+delete" ) : _n ( this , function ( n ) { var i = qn ( r , n . head , e , t , ! 1 ) ; return 0 > e ? { from : i , to : n . head } : { from : n . head , to : i } } ) } ) , findPosV : function ( e , t , n , r ) { var i = 1 , o = r ; 0 > t && ( i = - 1 , t = - t ) ; for ( var l = 0 , a = me ( this . doc , e ) ; t > l ; ++ l ) { var s = ft ( this , a , "div" ) ; if ( null == o ? o = s . left : s . left = o , a = Un ( this , s , i , n ) , a . hitSide ) break } return a } , moveV : Ht ( function ( e , t ) { var n = this , r = this . doc , i = [ ] , o = ! n . display . shift && ! r . extend && r . sel . somethingSelected ( ) ; if ( r . extendSelectionsBy ( function ( l ) { if ( o ) return 0 > e ? l . from ( ) : l . to ( ) ; var a = ft ( n , l . head , "div" ) ; null != l . goalColumn && ( a . left = l . goalColumn ) , i . push ( a . left ) ; var s = Un ( n , a , e , t ) ; return "page" == t && l == r . sel . primary ( ) && Fn ( n , null , ht ( n , s , "div" ) . top - a . top ) , s } , zl ) , 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 = Zr ( 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 = Ri ( l , o ) ? function ( e ) { return Ri ( e , o ) } : /\s/ . test ( l ) ? function ( e ) { return /\s/ . test ( e ) } : function ( e ) { return ! /\s/ . test ( e ) && ! Ri ( e ) } ; r > 0 && a ( n . charAt ( r - 1 ) ) ; ) -- r ; for ( ; i < n . length && a ( n . charAt ( i ) ) ; ) ++ i } return new de ( Fo ( e . line , r ) , Fo ( e . line , i ) ) } , toggleOverwrite : function ( e ) { null != e && e == this . state . overwrite || ( ( this . state . overwrite = ! this . state . overwrite ) ? Zl ( this . display . cursorDiv , "CodeMirror-overwrite" ) : Yl ( this . display . cursorDiv , "CodeMirror-overwrite" ) , Wl ( this , "overwriteToggle" , this , this . state . overwrite ) ) } , hasFocus : function ( ) { return this . display . input . getField ( ) == Gi ( ) } , isReadOnly : function ( ) { return ! ( ! this . options . readOnly && ! this . doc . cantEdit ) } , scrollTo : Ht ( function ( e , t ) { null == e && null == t || Rn ( 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 - $e ( this ) - this . display . barHeight , width : e . scrollWidth - $e ( this ) - this . display . barWidth , clientHeight : Ke ( this ) , clientWidth : Ve ( 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 : Fo ( 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 ) Rn ( this ) , this . curOp . scrollToPos = e ; else { var n = Pn ( 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 && lt ( 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 ) { Pt ( r , i , "widget" ) ; break } ++ i } ) , r . curOp . forceUpdate = ! 0 , Wl ( r , "refresh" , this ) } ) , operation : function ( e ) { return At ( this , e ) } , refresh : Ht ( function ( ) { var e = this . display . cachedTextHeight ; Dt ( this ) , this . curOp . forceUpdate = ! 0 , at ( this ) , this . scrollTo ( this . doc . scrollLeft , this . doc . scrollTop ) , u ( this ) , ( null == e || Math . abs ( e - yt ( this . display ) ) > . 5 ) && l ( this ) , Wl ( this , "refresh" , this ) } ) , swapDoc : Ht ( function ( e ) { var t = this . doc ; return t . cm = null , Yr ( this , e ) , at ( this ) , this . display . input . reset ( ) , this . scrollTo ( e . scrollLeft , e . scrollTop ) , this . curOp . forceScroll = ! 0 , Si ( 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 } } , Ai ( e ) ; var Jo = e . defaults = { } , el = e . optionHandlers = { } , tl = e . Init = { toString : function ( ) { return "CodeMirror.Init" } } ; Gn ( "value" , "" , function ( e , t ) { e . setValue ( t ) } , ! 0 ) , Gn ( "mode" , null , function ( e , t ) { e . doc . modeOption = t , n ( e ) } , ! 0 ) , Gn ( "indentUnit" , 2 , n , ! 0 ) , Gn ( "indentWithTabs" , ! 1 ) , Gn ( "smartIndent" , ! 0 ) , Gn ( "tabSize" , 4 , function ( e ) { r ( e ) , at ( e ) , Dt ( e ) } , ! 0 ) , Gn ( "lineSeparator" , null , function ( e , t ) { if ( e . doc . lineSep = t , t ) { var
e . preventDefault ? e . preventDefault ( ) : e . returnValue = ! 1 } , Ml = e . e _stopPropagation = function ( e ) { e . stopPropagation ? e . stopPropagation ( ) : e . cancelBubble = ! 0 } , Nl = e . e _stop = function ( e ) { Tl ( e ) , Ml ( e ) } , Al = e . on = function ( e , t , n ) { if ( e . addEventListener ) e . addEventListener ( t , n , ! 1 ) ; else if ( e . attachEvent ) e . attachEvent ( "on" + t , n ) ; else { var r = e . _handlers || ( e . _handlers = { } ) , i = r [ t ] || ( r [ t ] = [ ] ) ; i . push ( n ) } } , Ol = [ ] , Hl = e . off = function ( e , t , n ) { if ( e . removeEventListener ) e . removeEventListener ( t , n , ! 1 ) ; else if ( e . detachEvent ) e . detachEvent ( "on" + t , n ) ; else for ( var r = Ci ( e , t , ! 1 ) , i = 0 ; i < r . length ; ++ i ) if ( r [ i ] == n ) { r . splice ( i , 1 ) ; break } } , Wl = e . signal = function ( e , t ) { var n = Ci ( e , t , ! 0 ) ; if ( n . length ) for ( var r = Array . prototype . slice . call ( arguments , 2 ) , i = 0 ; i < n . length ; ++ i ) n [ i ] . apply ( null , r ) } , Il = null , El = 30 , Dl = e . Pass = { toString : function ( ) { return "CodeMirror.Pass" } } , Pl = { scroll : ! 1 } , Fl = { origin : "*mouse" } , zl = { origin : "+move" } ; Oi . prototype . set = function ( e , t ) { clearTimeout ( this . id ) , this . id = setTimeout ( t , e ) } ; var Rl = 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 } } , Bl = 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 } } , jl = [ "" ] , _l = function ( e ) { e . select ( ) } ; No ? _l = function ( e ) { e . selectionStart = 0 , e . selectionEnd = e . value . length } : xo && ( _l = function ( e ) { try { e . select ( ) } catch ( t ) { } } ) ; var ql , Ul = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/ , Gl = e . isWordChar = function ( e ) { return /\w/ . test ( e ) || e > " " && ( e . toUpperCase ( ) != e . toLowerCase ( ) || Ul . test ( e ) ) } , $l = /[\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]/ ; ql = 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 Vl = 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 . paren
ext : [ "v" ] } , { name : "VHDL" , mime : "text/x-vhdl" , mode : "vhdl" , ext : [ "vhd" , "vhdl" ] } , { name : "XML" , mimes : [ "application/xml" , "text/xml" ] , mode : "xml" , ext : [ "xml" , "xsl" , "xsd" ] , alias : [ "rss" , "wsdl" , "xsd" ] } , { name : "XQuery" , mime : "application/xquery" , mode : "xquery" , ext : [ "xy" , "xquery" ] } , { name : "YAML" , mime : "text/x-yaml" , mode : "yaml" , ext : [ "yaml" , "yml" ] , alias : [ "yml" ] } , { name : "Z80" , mime : "text/x-z80" , mode : "z80" , ext : [ "z80" ] } , { name : "mscgen" , mime : "text/x-mscgen" , mode : "mscgen" , ext : [ "mscgen" , "mscin" , "msc" ] } , { name : "xu" , mime : "text/x-xu" , mode : "mscgen" , ext : [ "xu" ] } , { name : "msgenny" , mime : "text/x-msgenny" , mode : "mscgen" , ext : [ "msgenny" ] } ] ; for ( var t = 0 ; t < e . modeInfo . length ; t ++ ) { var n = e . modeInfo [ t ] ; n . mimes && ( n . mime = n . mimes [ 0 ] ) } e . findModeByMIME = function ( t ) { t = t . toLowerCase ( ) ; for ( var n = 0 ; n < e . modeInfo . length ; n ++ ) { var r = e . modeInfo [ n ] ; if ( r . mime == t ) return r ; if ( r . mimes ) for ( var i = 0 ; i < r . mimes . length ; i ++ ) if ( r . mimes [ i ] == t ) return r } } , e . findModeByExtension = function ( t ) { for ( var n = 0 ; n < e . modeInfo . length ; n ++ ) { var r = e . modeInfo [ n ] ; if ( r . ext ) for ( var i = 0 ; i < r . ext . length ; i ++ ) if ( r . ext [ i ] == t ) return r } } , e . findModeByFileName = function ( t ) { for ( var n = 0 ; n < e . modeInfo . length ; n ++ ) { var r = e . modeInfo [ n ] ; if ( r . file && r . file . test ( t ) ) return r } var i = t . lastIndexOf ( "." ) , o = i > - 1 && t . substring ( i + 1 , t . length ) ; return o ? e . findModeByExtension ( o ) : void 0 } , 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" ; var t = { 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 : { rp : ! 0 , rt : ! 0 } , tbody : { tbody : ! 0 , tfoot : ! 0 } , td : { td : ! 0 , th : ! 0 } , tfoot : { tbody : ! 0 } , th : { td : ! 0 , th : ! 0 } , thead : { tbody : ! 0 , tfoot : ! 0 } , tr : { tr : ! 0 } } , doNotIndent : { pre : ! 0 } , allowUnquoted : ! 0 , allowMissing : ! 0 , caseFold : ! 0 } , n = { autoSelfClosers : { } , implicitlyClosed : { } , contextGrabbers : { } , doNotIndent : { } , allowUnquoted : ! 1 , allowMissing : ! 1 , caseFold : ! 1 } ; e . defineMode ( "xml" , function ( r , i ) { function o ( 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 ( s ( "atom" , "]]>" ) ) : null : e . match ( "--" ) ? n ( s ( "comment" , "-->" ) ) : e . match ( "DOCTYPE" , ! 0 , ! 0 ) ? ( e . eatWhile ( /[\w\._\-]/ ) , n ( c ( 1 ) ) ) : null : e . eat ( "?" ) ? ( e . eatWhile ( /[\w\._\-]/ ) , t . tokenize = s ( "meta" , "?>" ) , "meta" ) : ( T = e . eat ( "/" ) ? "closeTag" : "openTag" , t . tokenize = l , "tag bracket" ) ; if ( "&" == r ) { var i ; return i = e . eat ( "#" ) ? e . eat ( "x" ) ? e . eatWhile ( /[a-fA-F\d]/ ) && e . eat ( ";" ) : e . eatWhile ( /[\d]/ ) && e . eat ( ";" ) : e . eatWhile ( /[\w\.\-:]/ ) && e . eat ( ";" ) , i ? "atom" : "error" } return e . eatWhile ( /[^&<]/ ) , null } function l ( e , t ) { var n = e . next ( ) ; if ( ">" == n || "/" == n && e . eat ( ">" ) ) return t . tokenize = o , T = ">" == n ? "endTag" : "selfcloseTag" , "tag bracket" ; if ( "=" == n ) return T = "equals" , null ; if ( "<" == n ) { t . tokenize = o , t . state = f , t . tagName = t . tagStart = null ; var r = t . tokenize ( e , t ) ; return r ? r + " tag error" : "tag error" } return /[\'\"]/ . test ( n ) ? ( t . tokenize = a ( n ) , t . stringStartCol = e . column ( ) , t . tokenize ( e , t ) ) : ( e . match ( /^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/ ) , "word" ) } function a ( e ) { var t = function ( t , n ) { for ( ; ! t . eol ( ) ; ) if ( t . next ( ) == e ) { n . tokenize = l ; break } return "string" } ; return t . isInAttribute = ! 0 , t } function s ( e , t ) { return function ( n , r ) { for ( ; ! n . eol ( ) ; ) { if ( n . match ( t ) ) { r . tokenize = o ; break } n . next ( ) } return e } } function c ( e ) { return function ( t , n ) { for ( var r ; null != ( r = t . next ( ) ) ; ) { if ( "<" == r ) return n . tokenize = c ( e + 1 ) , n . tokenize ( t , n ) ; if ( ">" == r ) { if ( 1 == e ) { n .
for ( var r = e . getCursor ( "start" ) , i = e . getCursor ( "end" ) , o = r . line ; o <= i . line ; o ++ ) ! function ( r ) { var i = e . getLine ( r ) , o = i . search ( /[^#]/ ) ; i = void 0 !== t ? 0 >= o ? "bigger" == t ? "###### " + i : "# " + i : 6 == o && "smaller" == t ? i . substr ( 7 ) : 1 == o && "bigger" == t ? i . substr ( 2 ) : "bigger" == t ? i . substr ( 1 ) : "#" + i : 1 == n ? 0 >= o ? "# " + i : o == n ? i . substr ( o + 1 ) : "# " + i . substr ( o + 1 ) : 2 == n ? 0 >= o ? "## " + i : o == n ? i . substr ( o + 1 ) : "## " + i . substr ( o + 1 ) : 0 >= o ? "### " + i : o == n ? i . substr ( o + 1 ) : "### " + i . substr ( o + 1 ) , e . replaceRange ( i , { line : r , ch : 0 } , { line : r , ch : 99999999999999 } ) } ( o ) ; e . focus ( ) } } function W ( e , t ) { if ( ! /editor-preview-active/ . test ( e . getWrapperElement ( ) . lastChild . className ) ) { for ( var n = a ( e ) , r = e . getCursor ( "start" ) , i = e . getCursor ( "end" ) , o = { quote : /^(\s*)\>\s+/ , "unordered-list" : /^(\s*)(\*|\-|\+)\s+/ , "ordered-list" : /^(\s*)\d+\.\s+/ } , l = { quote : "> " , "unordered-list" : "* " , "ordered-list" : "1. " } , s = r . line ; s <= i . line ; s ++ ) ! function ( r ) { var i = e . getLine ( r ) ; i = n [ t ] ? i . replace ( o [ t ] , "$1" ) : l [ t ] + i , e . replaceRange ( i , { line : r , ch : 0 } , { line : r , ch : 99999999999999 } ) } ( s ) ; e . focus ( ) } } function I ( e , t , n , r ) { if ( ! /editor-preview-active/ . test ( e . codemirror . getWrapperElement ( ) . lastChild . className ) ) { r = "undefined" == typeof r ? n : r ; var i , o = e . codemirror , l = a ( o ) , s = n , c = r , u = o . getCursor ( "start" ) , d = o . getCursor ( "end" ) ; l [ t ] ? ( i = o . getLine ( u . line ) , s = i . slice ( 0 , u . ch ) , c = i . slice ( u . ch ) , "bold" == t ? ( s = s . replace ( /(\*\*|__)(?![\s\S]*(\*\*|__))/ , "" ) , c = c . replace ( /(\*\*|__)/ , "" ) ) : "italic" == t ? ( s = s . replace ( /(\*|_)(?![\s\S]*(\*|_))/ , "" ) , c = c . replace ( /(\*|_)/ , "" ) ) : "strikethrough" == t && ( s = s . replace ( /(\*\*|~~)(?![\s\S]*(\*\*|~~))/ , "" ) , c = c . replace ( /(\*\*|~~)/ , "" ) ) , o . replaceRange ( s + c , { line : u . line , ch : 0 } , { line : u . line , ch : 99999999999999 } ) , "bold" == t || "strikethrough" == t ? ( u . ch -= 2 , u !== d && ( d . ch -= 2 ) ) : "italic" == t && ( u . ch -= 1 , u !== d && ( d . ch -= 1 ) ) ) : ( i = o . getSelection ( ) , "bold" == t ? ( i = i . split ( "**" ) . join ( "" ) , i = i . split ( "__" ) . join ( "" ) ) : "italic" == t ? ( i = i . split ( "*" ) . join ( "" ) , i = i . split ( "_" ) . join ( "" ) ) : "strikethrough" == t && ( i = i . split ( "~~" ) . join ( "" ) ) , o . replaceSelection ( s + i + c ) , u . ch += n . length , d . ch = u . ch + i . length ) , o . setSelection ( u , d ) , o . focus ( ) } } function E ( e ) { if ( ! /editor-preview-active/ . test ( e . getWrapperElement ( ) . lastChild . className ) ) for ( var t , n = e . getCursor ( "start" ) , r = e . getCursor ( "end" ) , i = n . line ; i <= r . line ; i ++ ) t = e . getLine ( i ) , t = t . replace ( /^[ ]*([# ]+|\*|\-|[> ]+|[0-9]+(.|\)))[ ]*/ , "" ) , e . replaceRange ( t , { line : i , ch : 0 } , { line : i , ch : 99999999999999 } ) } function D ( e , t ) { for ( var n in t ) t . hasOwnProperty ( n ) && ( t [ n ] instanceof Array ? e [ n ] = t [ n ] . concat ( e [ n ] instanceof Array ? e [ n ] : [ ] ) : null !== t [ n ] && "object" == typeof t [ n ] && t [ n ] . constructor === Object ? e [ n ] = D ( e [ n ] || { } , t [ n ] ) : e [ n ] = t [ n ] ) ; return e } function P ( e ) { for ( var t = 1 ; t < arguments . length ; t ++ ) e = D ( e , arguments [ t ] ) ; return e } function F ( e ) { var t = /[a-zA-Z0-9_\u0392-\u03c9]+|[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af]+/g , n = e . match ( t ) , r = 0 ; if ( null === n ) return r ; for ( var i = 0 ; i < n . length ; i ++ ) r += n [ i ] . charCodeAt ( 0 ) >= 19968 ? n [ i ] . length : 1 ; return r } function z ( e ) { e = e || { } , e . parent = this ; var t = ! 0 ; if ( e . autoDownloadFontAwesome === ! 1 && ( t = ! 1 ) , e . autoDownloadFontAwesome !== ! 0 ) for ( var n = document . styleSheets , r = 0 ; r < n . length ; r ++ ) n [ r ] . href && n [ r ] . href . indexOf ( "//maxcdn.bootstrapcdn.com/font-awesome/" ) > - 1 && ( t = ! 1 ) ; if ( t ) { var i = document . createElement ( "link" ) ; i . rel = "stylesheet" , i . href = "https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css" , document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( i ) } if ( e . element ) this . element = e . element ; else if ( null === e . element ) return void console . log ( "SimpleMDE: Error. No element was found." ) ; if ( void 0 === e . toolbar ) { e . toolbar = [ ] ; for ( var o in K ) K . hasOwnProperty ( o ) && ( - 1 != o . indexOf ( "separator-" ) && e . toolbar . push ( "|" ) , ( K [ o ] [ "default" ] === ! 0 || e . showIcons && e . showIcons . constructor === Array && - 1 != e . showIcons . indexOf ( o ) ) && e . toolbar . push ( o ) ) } e . hasOwnProperty ( "status" ) || ( e . status = [ "autosave" , "lines" , "words" , "cursor" ] ) , e . previewRender || ( e . previewRender = function ( e ) { return this . parent . markdown ( e ) } ) , e . parsingConfig = P ( { highlightFormatting : ! 0 } , e . parsingConfig || { } ) , e . insertTexts = P ( { } , X , e . insertTexts || { } ) , e . promptTexts = Y , e . blockStyles = P ( { } , Z , e . blockStyles || { } ) , e . shortcuts = P ( { } , U , e . shortcuts || { } ) , void 0 != e . autosave && void 0 != e . autosave . unique _id && "" != e . autosave . unique _id && ( e . autosave . uniqueId = e . autosave . uni