Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9346739
showdown.b448e42a34c43d6a7de5.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
74 KB
Subscribers
None
showdown.b448e42a34c43d6a7de5.js
View Options
/*! For license information please see showdown.b448e42a34c43d6a7de5.js.LICENSE.txt */
(
self
.
webpackChunkswh
=
self
.
webpackChunkswh
||
[]).
push
([[
522
],{
83035
:
function
(
e
,
r
,
t
){
"use strict"
;
t
.
r
(
r
);
var
a
=
t
(
53787
),
n
=
{};
for
(
var
s
in
a
)
"default"
!==
s
&&
(
n
[
s
]
=
function
(
e
){
return
a
[
e
]}.
bind
(
0
,
s
));
t
.
d
(
r
,
n
)},
53787
:
function
(
e
,
r
,
t
){
var
a
;(
function
(){
function
n
(
e
){
"use strict"
;
var
r
=
{
omitExtraWLInCodeBlocks
:
{
defaultValue
:!
1
,
describe
:
"Omit the default extra whiteline added to code blocks"
,
type
:
"boolean"
},
noHeaderId
:
{
defaultValue
:!
1
,
describe
:
"Turn on/off generated header id"
,
type
:
"boolean"
},
prefixHeaderId
:
{
defaultValue
:!
1
,
describe
:
"Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic 'section-' prefix"
,
type
:
"string"
},
rawPrefixHeaderId
:
{
defaultValue
:!
1
,
describe
:
'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the " char is used in the prefix)'
,
type
:
"boolean"
},
ghCompatibleHeaderId
:
{
defaultValue
:!
1
,
describe
:
"Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)"
,
type
:
"boolean"
},
rawHeaderId
:
{
defaultValue
:!
1
,
describe
:
"Remove only spaces, ' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids"
,
type
:
"boolean"
},
headerLevelStart
:
{
defaultValue
:!
1
,
describe
:
"The header blocks level start"
,
type
:
"integer"
},
parseImgDimensions
:
{
defaultValue
:!
1
,
describe
:
"Turn on/off image dimension parsing"
,
type
:
"boolean"
},
simplifiedAutoLink
:
{
defaultValue
:!
1
,
describe
:
"Turn on/off GFM autolink style"
,
type
:
"boolean"
},
excludeTrailingPunctuationFromURLs
:
{
defaultValue
:!
1
,
describe
:
"Excludes trailing punctuation from links generated with autoLinking"
,
type
:
"boolean"
},
literalMidWordUnderscores
:
{
defaultValue
:!
1
,
describe
:
"Parse midword underscores as literal underscores"
,
type
:
"boolean"
},
literalMidWordAsterisks
:
{
defaultValue
:!
1
,
describe
:
"Parse midword asterisks as literal asterisks"
,
type
:
"boolean"
},
strikethrough
:
{
defaultValue
:!
1
,
describe
:
"Turn on/off strikethrough support"
,
type
:
"boolean"
},
tables
:
{
defaultValue
:!
1
,
describe
:
"Turn on/off tables support"
,
type
:
"boolean"
},
tablesHeaderId
:
{
defaultValue
:!
1
,
describe
:
"Add an id to table headers"
,
type
:
"boolean"
},
ghCodeBlocks
:
{
defaultValue
:!
0
,
describe
:
"Turn on/off GFM fenced code blocks support"
,
type
:
"boolean"
},
tasklists
:
{
defaultValue
:!
1
,
describe
:
"Turn on/off GFM tasklist support"
,
type
:
"boolean"
},
smoothLivePreview
:
{
defaultValue
:!
1
,
describe
:
"Prevents weird effects in live previews due to incomplete input"
,
type
:
"boolean"
},
smartIndentationFix
:
{
defaultValue
:!
1
,
describe
:
"Tries to smartly fix indentation in es6 strings"
,
type
:
"boolean"
},
disableForced4SpacesIndentedSublists
:
{
defaultValue
:!
1
,
describe
:
"Disables the requirement of indenting nested sublists by 4 spaces"
,
type
:
"boolean"
},
simpleLineBreaks
:
{
defaultValue
:!
1
,
describe
:
"Parses simple line breaks as <br> (GFM Style)"
,
type
:
"boolean"
},
requireSpaceBeforeHeadingText
:
{
defaultValue
:!
1
,
describe
:
"Makes adding a space between `#` and the header text mandatory (GFM Style)"
,
type
:
"boolean"
},
ghMentions
:
{
defaultValue
:!
1
,
describe
:
"Enables github @mentions"
,
type
:
"boolean"
},
ghMentionsLink
:
{
defaultValue
:
"https://github.com/{u}"
,
describe
:
"Changes the link generated by @mentions. Only applies if ghMentions option is enabled."
,
type
:
"string"
},
encodeEmails
:
{
defaultValue
:!
0
,
describe
:
"Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities"
,
type
:
"boolean"
},
openLinksInNewWindow
:
{
defaultValue
:!
1
,
describe
:
"Open all links in new windows"
,
type
:
"boolean"
},
backslashEscapesHTMLTags
:
{
defaultValue
:!
1
,
describe
:
"Support for HTML Tag escaping. ex: <div>foo</div>"
,
type
:
"boolean"
},
emoji
:
{
defaultValue
:!
1
,
describe
:
"Enable emoji support. Ex: `this is a :smile: emoji`"
,
type
:
"boolean"
},
underline
:
{
defaultValue
:!
1
,
describe
:
"Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`"
,
type
:
"boolean"
},
ellipsis
:
{
defaultValue
:!
0
,
describe
:
"Replaces three dots with the ellipsis unicode character"
,
type
:
"boolean"
},
completeHTMLDocument
:
{
defaultValue
:!
1
,
describe
:
"Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags"
,
type
:
"boolean"
},
metadata
:
{
defaultValue
:!
1
,
describe
:
"Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`)."
,
type
:
"boolean"
},
splitAdjacentBlockquotes
:
{
defaultValue
:!
1
,
describe
:
"Split adjacent blockquote blocks"
,
type
:
"boolean"
}};
if
(
!
1
===
e
)
return
JSON
.
parse
(
JSON
.
stringify
(
r
));
var
t
=
{};
for
(
var
a
in
r
)
r
.
hasOwnProperty
(
a
)
&&
(
t
[
a
]
=
r
[
a
].
defaultValue
);
return
t
}
var
s
=
{},
o
=
{},
i
=
{},
l
=
n
(
!
0
),
c
=
"vanilla"
,
u
=
{
github
:
{
omitExtraWLInCodeBlocks
:!
0
,
simplifiedAutoLink
:!
0
,
excludeTrailingPunctuationFromURLs
:!
0
,
literalMidWordUnderscores
:!
0
,
strikethrough
:!
0
,
tables
:!
0
,
tablesHeaderId
:!
0
,
ghCodeBlocks
:!
0
,
tasklists
:!
0
,
disableForced4SpacesIndentedSublists
:!
0
,
simpleLineBreaks
:!
0
,
requireSpaceBeforeHeadingText
:!
0
,
ghCompatibleHeaderId
:!
0
,
ghMentions
:!
0
,
backslashEscapesHTMLTags
:!
0
,
emoji
:!
0
,
splitAdjacentBlockquotes
:!
0
},
original
:
{
noHeaderId
:!
0
,
ghCodeBlocks
:!
1
},
ghost
:
{
omitExtraWLInCodeBlocks
:!
0
,
parseImgDimensions
:!
0
,
simplifiedAutoLink
:!
0
,
excludeTrailingPunctuationFromURLs
:!
0
,
literalMidWordUnderscores
:!
0
,
strikethrough
:!
0
,
tables
:!
0
,
tablesHeaderId
:!
0
,
ghCodeBlocks
:!
0
,
tasklists
:!
0
,
smoothLivePreview
:!
0
,
simpleLineBreaks
:!
0
,
requireSpaceBeforeHeadingText
:!
0
,
ghMentions
:!
1
,
encodeEmails
:!
0
},
vanilla
:
n
(
!
0
),
allOn
:
function
(){
"use strict"
;
var
e
=
n
(
!
0
),
r
=
{};
for
(
var
t
in
e
)
e
.
hasOwnProperty
(
t
)
&&
(
r
[
t
]
=!
0
);
return
r
}()};
function
d
(
e
,
r
){
"use strict"
;
var
t
=
r
?
"Error in "
+
r
+
" extension->"
:
"Error in unnamed extension"
,
a
=
{
valid
:!
0
,
error
:
""
};
s
.
helper
.
isArray
(
e
)
||
(
e
=
[
e
]);
for
(
var
n
=
0
;
n
<
e
.
length
;
++
n
){
var
o
=
t
+
" sub-extension "
+
n
+
": "
,
i
=
e
[
n
];
if
(
"object"
!=
typeof
i
)
return
a
.
valid
=!
1
,
a
.
error
=
o
+
"must be an object, but "
+
typeof
i
+
" given"
,
a
;
if
(
!
s
.
helper
.
isString
(
i
.
type
))
return
a
.
valid
=!
1
,
a
.
error
=
o
+
'property "type" must be a string, but '
+
typeof
i
.
type
+
" given"
,
a
;
var
l
=
i
.
type
=
i
.
type
.
toLowerCase
();
if
(
"language"
===
l
&&
(
l
=
i
.
type
=
"lang"
),
"html"
===
l
&&
(
l
=
i
.
type
=
"output"
),
"lang"
!==
l
&&
"output"
!==
l
&&
"listener"
!==
l
)
return
a
.
valid
=!
1
,
a
.
error
=
o
+
"type "
+
l
+
' is not recognized. Valid values: "lang/language", "output/html" or "listener"'
,
a
;
if
(
"listener"
===
l
){
if
(
s
.
helper
.
isUndefined
(
i
.
listeners
))
return
a
.
valid
=!
1
,
a
.
error
=
o
+
'. Extensions of type "listener" must have a property called "listeners"'
,
a
}
else
if
(
s
.
helper
.
isUndefined
(
i
.
filter
)
&&
s
.
helper
.
isUndefined
(
i
.
regex
))
return
a
.
valid
=!
1
,
a
.
error
=
o
+
l
+
' extensions must define either a "regex" property or a "filter" method'
,
a
;
if
(
i
.
listeners
){
if
(
"object"
!=
typeof
i
.
listeners
)
return
a
.
valid
=!
1
,
a
.
error
=
o
+
'"listeners" property must be an object but '
+
typeof
i
.
listeners
+
" given"
,
a
;
for
(
var
c
in
i
.
listeners
)
if
(
i
.
listeners
.
hasOwnProperty
(
c
)
&&
"function"
!=
typeof
i
.
listeners
[
c
])
return
a
.
valid
=!
1
,
a
.
error
=
o
+
'"listeners" property must be an hash of [event name]: [callback]. listeners.'
+
c
+
" must be a function but "
+
typeof
i
.
listeners
[
c
]
+
" given"
,
a
}
if
(
i
.
filter
){
if
(
"function"
!=
typeof
i
.
filter
)
return
a
.
valid
=!
1
,
a
.
error
=
o
+
'"filter" must be a function, but '
+
typeof
i
.
filter
+
" given"
,
a
}
else
if
(
i
.
regex
){
if
(
s
.
helper
.
isString
(
i
.
regex
)
&&
(
i
.
regex
=
new
RegExp
(
i
.
regex
,
"g"
)),
!
(
i
.
regex
instanceof
RegExp
))
return
a
.
valid
=!
1
,
a
.
error
=
o
+
'"regex" property must either be a string or a RegExp object, but '
+
typeof
i
.
regex
+
" given"
,
a
;
if
(
s
.
helper
.
isUndefined
(
i
.
replace
))
return
a
.
valid
=!
1
,
a
.
error
=
o
+
'"regex" extensions must implement a replace string or function'
,
a
}}
return
a
}
function
p
(
e
,
r
){
"use strict"
;
return
"¨E"
+
r
.
charCodeAt
(
0
)
+
"E"
}
s
.
helper
=
{},
s
.
extensions
=
{},
s
.
setOption
=
function
(
e
,
r
){
"use strict"
;
return
l
[
e
]
=
r
,
this
},
s
.
getOption
=
function
(
e
){
"use strict"
;
return
l
[
e
]},
s
.
getOptions
=
function
(){
"use strict"
;
return
l
},
s
.
resetOptions
=
function
(){
"use strict"
;
l
=
n
(
!
0
)},
s
.
setFlavor
=
function
(
e
){
"use strict"
;
if
(
!
u
.
hasOwnProperty
(
e
))
throw
Error
(
e
+
" flavor was not found"
);
s
.
resetOptions
();
var
r
=
u
[
e
];
for
(
var
t
in
c
=
e
,
r
)
r
.
hasOwnProperty
(
t
)
&&
(
l
[
t
]
=
r
[
t
])},
s
.
getFlavor
=
function
(){
"use strict"
;
return
c
},
s
.
getFlavorOptions
=
function
(
e
){
"use strict"
;
if
(
u
.
hasOwnProperty
(
e
))
return
u
[
e
]},
s
.
getDefaultOptions
=
function
(
e
){
"use strict"
;
return
n
(
e
)},
s
.
subParser
=
function
(
e
,
r
){
"use strict"
;
if
(
s
.
helper
.
isString
(
e
)){
if
(
void
0
===
r
){
if
(
o
.
hasOwnProperty
(
e
))
return
o
[
e
];
throw
Error
(
"SubParser named "
+
e
+
" not registered!"
)}
o
[
e
]
=
r
}},
s
.
extension
=
function
(
e
,
r
){
"use strict"
;
if
(
!
s
.
helper
.
isString
(
e
))
throw
Error
(
"Extension 'name' must be a string"
);
if
(
e
=
s
.
helper
.
stdExtName
(
e
),
s
.
helper
.
isUndefined
(
r
)){
if
(
!
i
.
hasOwnProperty
(
e
))
throw
Error
(
"Extension named "
+
e
+
" is not registered!"
);
return
i
[
e
]}
"function"
==
typeof
r
&&
(
r
=
r
()),
s
.
helper
.
isArray
(
r
)
||
(
r
=
[
r
]);
var
t
=
d
(
r
,
e
);
if
(
!
t
.
valid
)
throw
Error
(
t
.
error
);
i
[
e
]
=
r
},
s
.
getAllExtensions
=
function
(){
"use strict"
;
return
i
},
s
.
removeExtension
=
function
(
e
){
"use strict"
;
delete
i
[
e
]},
s
.
resetExtensions
=
function
(){
"use strict"
;
i
=
{}},
s
.
validateExtension
=
function
(
e
){
"use strict"
;
var
r
=
d
(
e
,
null
);
return
!!
r
.
valid
||
(
console
.
warn
(
r
.
error
),
!
1
)},
s
.
hasOwnProperty
(
"helper"
)
||
(
s
.
helper
=
{}),
s
.
helper
.
isString
=
function
(
e
){
"use strict"
;
return
"string"
==
typeof
e
||
e
instanceof
String
},
s
.
helper
.
isFunction
=
function
(
e
){
"use strict"
;
return
e
&&
"[object Function]"
===
{}.
toString
.
call
(
e
)},
s
.
helper
.
isArray
=
function
(
e
){
"use strict"
;
return
Array
.
isArray
(
e
)},
s
.
helper
.
isUndefined
=
function
(
e
){
"use strict"
;
return
void
0
===
e
},
s
.
helper
.
forEach
=
function
(
e
,
r
){
"use strict"
;
if
(
s
.
helper
.
isUndefined
(
e
))
throw
new
Error
(
"obj param is required"
);
if
(
s
.
helper
.
isUndefined
(
r
))
throw
new
Error
(
"callback param is required"
);
if
(
!
s
.
helper
.
isFunction
(
r
))
throw
new
Error
(
"callback param must be a function/closure"
);
if
(
"function"
==
typeof
e
.
forEach
)
e
.
forEach
(
r
);
else
if
(
s
.
helper
.
isArray
(
e
))
for
(
var
t
=
0
;
t
<
e
.
length
;
t
++
)
r
(
e
[
t
],
t
,
e
);
else
{
if
(
"object"
!=
typeof
e
)
throw
new
Error
(
"obj does not seem to be an array or an iterable object"
);
for
(
var
a
in
e
)
e
.
hasOwnProperty
(
a
)
&&
r
(
e
[
a
],
a
,
e
)}},
s
.
helper
.
stdExtName
=
function
(
e
){
"use strict"
;
return
e
.
replace
(
/[_?*+\/\\.^-]/g
,
""
).
replace
(
/\s/g
,
""
).
toLowerCase
()},
s
.
helper
.
escapeCharactersCallback
=
p
,
s
.
helper
.
escapeCharacters
=
function
(
e
,
r
,
t
){
"use strict"
;
var
a
=
"(["
+
r
.
replace
(
/([\[\]\\])/g
,
"\\$1"
)
+
"])"
;
t
&&
(
a
=
"\\\\"
+
a
);
var
n
=
new
RegExp
(
a
,
"g"
);
return
e
=
e
.
replace
(
n
,
p
)},
s
.
helper
.
unescapeHTMLEntities
=
function
(
e
){
"use strict"
;
return
e
.
replace
(
/"/g
,
'"'
).
replace
(
/</g
,
"<"
).
replace
(
/>/g
,
">"
).
replace
(
/&/g
,
"&"
)};
var
h
=
function
(
e
,
r
,
t
,
a
){
"use strict"
;
var
n
,
s
,
o
,
i
,
l
,
c
=
a
||
""
,
u
=
c
.
indexOf
(
"g"
)
>-
1
,
d
=
new
RegExp
(
r
+
"|"
+
t
,
"g"
+
c
.
replace
(
/g/g
,
""
)),
p
=
new
RegExp
(
r
,
c
.
replace
(
/g/g
,
""
)),
h
=
[];
do
{
for
(
n
=
0
;
o
=
d
.
exec
(
e
);)
if
(
p
.
test
(
o
[
0
]))
n
++||
(
i
=
(
s
=
d
.
lastIndex
)
-
o
[
0
].
length
);
else
if
(
n
&&!--
n
){
l
=
o
.
index
+
o
[
0
].
length
;
var
_
=
{
left
:
{
start
:
i
,
end
:
s
},
match
:
{
start
:
s
,
end
:
o
.
index
},
right
:
{
start
:
o
.
index
,
end
:
l
},
wholeMatch
:
{
start
:
i
,
end
:
l
}};
if
(
h
.
push
(
_
),
!
u
)
return
h
}}
while
(
n
&&
(
d
.
lastIndex
=
s
));
return
h
};
s
.
helper
.
matchRecursiveRegExp
=
function
(
e
,
r
,
t
,
a
){
"use strict"
;
for
(
var
n
=
h
(
e
,
r
,
t
,
a
),
s
=
[],
o
=
0
;
o
<
n
.
length
;
++
o
)
s
.
push
([
e
.
slice
(
n
[
o
].
wholeMatch
.
start
,
n
[
o
].
wholeMatch
.
end
),
e
.
slice
(
n
[
o
].
match
.
start
,
n
[
o
].
match
.
end
),
e
.
slice
(
n
[
o
].
left
.
start
,
n
[
o
].
left
.
end
),
e
.
slice
(
n
[
o
].
right
.
start
,
n
[
o
].
right
.
end
)]);
return
s
},
s
.
helper
.
replaceRecursiveRegExp
=
function
(
e
,
r
,
t
,
a
,
n
){
"use strict"
;
if
(
!
s
.
helper
.
isFunction
(
r
)){
var
o
=
r
;
r
=
function
(){
return
o
}}
var
i
=
h
(
e
,
t
,
a
,
n
),
l
=
e
,
c
=
i
.
length
;
if
(
c
>
0
){
var
u
=
[];
0
!==
i
[
0
].
wholeMatch
.
start
&&
u
.
push
(
e
.
slice
(
0
,
i
[
0
].
wholeMatch
.
start
));
for
(
var
d
=
0
;
d
<
c
;
++
d
)
u
.
push
(
r
(
e
.
slice
(
i
[
d
].
wholeMatch
.
start
,
i
[
d
].
wholeMatch
.
end
),
e
.
slice
(
i
[
d
].
match
.
start
,
i
[
d
].
match
.
end
),
e
.
slice
(
i
[
d
].
left
.
start
,
i
[
d
].
left
.
end
),
e
.
slice
(
i
[
d
].
right
.
start
,
i
[
d
].
right
.
end
))),
d
<
c
-
1
&&
u
.
push
(
e
.
slice
(
i
[
d
].
wholeMatch
.
end
,
i
[
d
+
1
].
wholeMatch
.
start
));
i
[
c
-
1
].
wholeMatch
.
end
<
e
.
length
&&
u
.
push
(
e
.
slice
(
i
[
c
-
1
].
wholeMatch
.
end
)),
l
=
u
.
join
(
""
)}
return
l
},
s
.
helper
.
regexIndexOf
=
function
(
e
,
r
,
t
){
"use strict"
;
if
(
!
s
.
helper
.
isString
(
e
))
throw
"InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string"
;
if
(
r
instanceof
RegExp
==!
1
)
throw
"InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp"
;
var
a
=
e
.
substring
(
t
||
0
).
search
(
r
);
return
a
>=
0
?
a
+
(
t
||
0
)
:
a
},
s
.
helper
.
splitAtIndex
=
function
(
e
,
r
){
"use strict"
;
if
(
!
s
.
helper
.
isString
(
e
))
throw
"InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string"
;
return
[
e
.
substring
(
0
,
r
),
e
.
substring
(
r
)]},
s
.
helper
.
encodeEmailAddress
=
function
(
e
){
"use strict"
;
var
r
=
[
function
(
e
){
return
"&#"
+
e
.
charCodeAt
(
0
)
+
";"
},
function
(
e
){
return
"&#x"
+
e
.
charCodeAt
(
0
).
toString
(
16
)
+
";"
},
function
(
e
){
return
e
}];
return
e
=
e
.
replace
(
/./g
,(
function
(
e
){
if
(
"@"
===
e
)
e
=
r
[
Math
.
floor
(
2
*
Math
.
random
())](
e
);
else
{
var
t
=
Math
.
random
();
e
=
t
>
.9
?
r
[
2
](
e
)
:
t
>
.45
?
r
[
1
](
e
)
:
r
[
0
](
e
)}
return
e
}))},
s
.
helper
.
padEnd
=
function
(
e
,
r
,
t
){
"use strict"
;
return
r
>>=
0
,
t
=
String
(
t
||
" "
),
e
.
length
>
r
?
String
(
e
)
:
((
r
-=
e
.
length
)
>
t
.
length
&&
(
t
+=
t
.
repeat
(
r
/
t
.
length
)),
String
(
e
)
+
t
.
slice
(
0
,
r
))},
"undefined"
==
typeof
console
&&
(
console
=
{
warn
:
function
(
e
){
"use strict"
;
alert
(
e
)},
log
:
function
(
e
){
"use strict"
;
alert
(
e
)},
error
:
function
(
e
){
"use strict"
;
throw
e
}}),
s
.
helper
.
regexes
=
{
asteriskDashAndColon
:
/([*_:~])/g
},
s
.
helper
.
emojis
=
{
"+1"
:
"👍"
,
"-1"
:
"👎"
,
100
:
"💯"
,
1234
:
"🔢"
,
"1st_place_medal"
:
"🥇"
,
"2nd_place_medal"
:
"🥈"
,
"3rd_place_medal"
:
"🥉"
,
"8ball"
:
"🎱"
,
a
:
"🅰️"
,
ab
:
"🆎"
,
abc
:
"🔤"
,
abcd
:
"🔡"
,
accept
:
"🉑"
,
aerial_tramway
:
"🚡"
,
airplane
:
"✈️"
,
alarm_clock
:
"⏰"
,
alembic
:
"⚗️"
,
alien
:
"👽"
,
ambulance
:
"🚑"
,
amphora
:
"🏺"
,
anchor
:
"⚓️"
,
angel
:
"👼"
,
anger
:
"💢"
,
angry
:
"😠"
,
anguished
:
"😧"
,
ant
:
"🐜"
,
apple
:
"🍎"
,
aquarius
:
"♒️"
,
aries
:
"♈️"
,
arrow_backward
:
"◀️"
,
arrow_double_down
:
"⏬"
,
arrow_double_up
:
"⏫"
,
arrow_down
:
"⬇️"
,
arrow_down_small
:
"🔽"
,
arrow_forward
:
"▶️"
,
arrow_heading_down
:
"⤵️"
,
arrow_heading_up
:
"⤴️"
,
arrow_left
:
"⬅️"
,
arrow_lower_left
:
"↙️"
,
arrow_lower_right
:
"↘️"
,
arrow_right
:
"➡️"
,
arrow_right_hook
:
"↪️"
,
arrow_up
:
"⬆️"
,
arrow_up_down
:
"↕️"
,
arrow_up_small
:
"🔼"
,
arrow_upper_left
:
"↖️"
,
arrow_upper_right
:
"↗️"
,
arrows_clockwise
:
"🔃"
,
arrows_counterclockwise
:
"🔄"
,
art
:
"🎨"
,
articulated_lorry
:
"🚛"
,
artificial_satellite
:
"🛰"
,
astonished
:
"😲"
,
athletic_shoe
:
"👟"
,
atm
:
"🏧"
,
atom_symbol
:
"⚛️"
,
avocado
:
"🥑"
,
b
:
"🅱️"
,
baby
:
"👶"
,
baby_bottle
:
"🍼"
,
baby_chick
:
"🐤"
,
baby_symbol
:
"🚼"
,
back
:
"🔙"
,
bacon
:
"🥓"
,
badminton
:
"🏸"
,
baggage_claim
:
"🛄"
,
baguette_bread
:
"🥖"
,
balance_scale
:
"⚖️"
,
balloon
:
"🎈"
,
ballot_box
:
"🗳"
,
ballot_box_with_check
:
"☑️"
,
bamboo
:
"🎍"
,
banana
:
"🍌"
,
bangbang
:
"‼️"
,
bank
:
"🏦"
,
bar_chart
:
"📊"
,
barber
:
"💈"
,
baseball
:
"⚾️"
,
basketball
:
"🏀"
,
basketball_man
:
"⛹️"
,
basketball_woman
:
"⛹️‍♀️"
,
bat
:
"🦇"
,
bath
:
"🛀"
,
bathtub
:
"🛁"
,
battery
:
"🔋"
,
beach_umbrella
:
"🏖"
,
bear
:
"🐻"
,
bed
:
"🛏"
,
bee
:
"🐝"
,
beer
:
"🍺"
,
beers
:
"🍻"
,
beetle
:
"🐞"
,
beginner
:
"🔰"
,
bell
:
"🔔"
,
bellhop_bell
:
"🛎"
,
bento
:
"🍱"
,
biking_man
:
"🚴"
,
bike
:
"🚲"
,
biking_woman
:
"🚴‍♀️"
,
bikini
:
"👙"
,
biohazard
:
"☣️"
,
bird
:
"🐦"
,
birthday
:
"🎂"
,
black_circle
:
"⚫️"
,
black_flag
:
"🏴"
,
black_heart
:
"🖤"
,
black_joker
:
"🃏"
,
black_large_square
:
"⬛️"
,
black_medium_small_square
:
"◾️"
,
black_medium_square
:
"◼️"
,
black_nib
:
"✒️"
,
black_small_square
:
"▪️"
,
black_square_button
:
"🔲"
,
blonde_man
:
"👱"
,
blonde_woman
:
"👱‍♀️"
,
blossom
:
"🌼"
,
blowfish
:
"🐡"
,
blue_book
:
"📘"
,
blue_car
:
"🚙"
,
blue_heart
:
"💙"
,
blush
:
"😊"
,
boar
:
"🐗"
,
boat
:
"⛵️"
,
bomb
:
"💣"
,
book
:
"📖"
,
bookmark
:
"🔖"
,
bookmark_tabs
:
"📑"
,
books
:
"📚"
,
boom
:
"💥"
,
boot
:
"👢"
,
bouquet
:
"💐"
,
bowing_man
:
"🙇"
,
bow_and_arrow
:
"🏹"
,
bowing_woman
:
"🙇‍♀️"
,
bowling
:
"🎳"
,
boxing_glove
:
"🥊"
,
boy
:
"👦"
,
bread
:
"🍞"
,
bride_with_veil
:
"👰"
,
bridge_at_night
:
"🌉"
,
briefcase
:
"💼"
,
broken_heart
:
"💔"
,
bug
:
"🐛"
,
building_construction
:
"🏗"
,
bulb
:
"💡"
,
bullettrain_front
:
"🚅"
,
bullettrain_side
:
"🚄"
,
burrito
:
"🌯"
,
bus
:
"🚌"
,
business_suit_levitating
:
"🕴"
,
busstop
:
"🚏"
,
bust_in_silhouette
:
"👤"
,
busts_in_silhouette
:
"👥"
,
butterfly
:
"🦋"
,
cactus
:
"🌵"
,
cake
:
"🍰"
,
calendar
:
"📆"
,
call_me_hand
:
"🤙"
,
calling
:
"📲"
,
camel
:
"🐫"
,
camera
:
"📷"
,
camera_flash
:
"📸"
,
camping
:
"🏕"
,
cancer
:
"♋️"
,
candle
:
"🕯"
,
candy
:
"🍬"
,
canoe
:
"🛶"
,
capital_abcd
:
"🔠"
,
capricorn
:
"♑️"
,
car
:
"🚗"
,
card_file_box
:
"🗃"
,
card_index
:
"📇"
,
card_index_dividers
:
"🗂"
,
carousel_horse
:
"🎠"
,
carrot
:
"🥕"
,
cat
:
"🐱"
,
cat2
:
"🐈"
,
cd
:
"💿"
,
chains
:
"⛓"
,
champagne
:
"🍾"
,
chart
:
"💹"
,
chart_with_downwards_trend
:
"📉"
,
chart_with_upwards_trend
:
"📈"
,
checkered_flag
:
"🏁"
,
cheese
:
"🧀"
,
cherries
:
"🍒"
,
cherry_blossom
:
"🌸"
,
chestnut
:
"🌰"
,
chicken
:
"🐔"
,
children_crossing
:
"🚸"
,
chipmunk
:
"🐿"
,
chocolate_bar
:
"🍫"
,
christmas_tree
:
"🎄"
,
church
:
"⛪️"
,
cinema
:
"🎦"
,
circus_tent
:
"🎪"
,
city_sunrise
:
"🌇"
,
city_sunset
:
"🌆"
,
cityscape
:
"🏙"
,
cl
:
"🆑"
,
clamp
:
"🗜"
,
clap
:
"👏"
,
clapper
:
"🎬"
,
classical_building
:
"🏛"
,
clinking_glasses
:
"🥂"
,
clipboard
:
"📋"
,
clock1
:
"🕐"
,
clock10
:
"🕙"
,
clock1030
:
"🕥"
,
clock11
:
"🕚"
,
clock1130
:
"🕦"
,
clock12
:
"🕛"
,
clock1230
:
"🕧"
,
clock130
:
"🕜"
,
clock2
:
"🕑"
,
clock230
:
"🕝"
,
clock3
:
"🕒"
,
clock330
:
"🕞"
,
clock4
:
"🕓"
,
clock430
:
"🕟"
,
clock5
:
"🕔"
,
clock530
:
"🕠"
,
clock6
:
"🕕"
,
clock630
:
"🕡"
,
clock7
:
"🕖"
,
clock730
:
"🕢"
,
clock8
:
"🕗"
,
clock830
:
"🕣"
,
clock9
:
"🕘"
,
clock930
:
"🕤"
,
closed_book
:
"📕"
,
closed_lock_with_key
:
"🔐"
,
closed_umbrella
:
"🌂"
,
cloud
:
"☁️"
,
cloud_with_lightning
:
"🌩"
,
cloud_with_lightning_and_rain
:
"⛈"
,
cloud_with_rain
:
"🌧"
,
cloud_with_snow
:
"🌨"
,
clown_face
:
"🤡"
,
clubs
:
"♣️"
,
cocktail
:
"🍸"
,
coffee
:
"☕️"
,
coffin
:
"⚰️"
,
cold_sweat
:
"😰"
,
comet
:
"☄️"
,
computer
:
"💻"
,
computer_mouse
:
"🖱"
,
confetti_ball
:
"🎊"
,
confounded
:
"😖"
,
confused
:
"😕"
,
congratulations
:
"㊗️"
,
construction
:
"🚧"
,
construction_worker_man
:
"👷"
,
construction_worker_woman
:
"👷‍♀️"
,
control_knobs
:
"🎛"
,
convenience_store
:
"🏪"
,
cookie
:
"🍪"
,
cool
:
"🆒"
,
policeman
:
"👮"
,
copyright
:
"©️"
,
corn
:
"🌽"
,
couch_and_lamp
:
"🛋"
,
couple
:
"👫"
,
couple_with_heart_woman_man
:
"💑"
,
couple_with_heart_man_man
:
"👨‍❤️‍👨"
,
couple_with_heart_woman_woman
:
"👩‍❤️‍👩"
,
couplekiss_man_man
:
"👨‍❤️‍💋‍👨"
,
couplekiss_man_woman
:
"💏"
,
couplekiss_woman_woman
:
"👩‍❤️‍💋‍👩"
,
cow
:
"🐮"
,
cow2
:
"🐄"
,
cowboy_hat_face
:
"🤠"
,
crab
:
"🦀"
,
crayon
:
"🖍"
,
credit_card
:
"💳"
,
crescent_moon
:
"🌙"
,
cricket
:
"🏏"
,
crocodile
:
"🐊"
,
croissant
:
"🥐"
,
crossed_fingers
:
"🤞"
,
crossed_flags
:
"🎌"
,
crossed_swords
:
"⚔️"
,
crown
:
"👑"
,
cry
:
"😢"
,
crying_cat_face
:
"😿"
,
crystal_ball
:
"🔮"
,
cucumber
:
"🥒"
,
cupid
:
"💘"
,
curly_loop
:
"➰"
,
currency_exchange
:
"💱"
,
curry
:
"🍛"
,
custard
:
"🍮"
,
customs
:
"🛃"
,
cyclone
:
"🌀"
,
dagger
:
"🗡"
,
dancer
:
"💃"
,
dancing_women
:
"👯"
,
dancing_men
:
"👯‍♂️"
,
dango
:
"🍡"
,
dark_sunglasses
:
"🕶"
,
dart
:
"🎯"
,
dash
:
"💨"
,
date
:
"📅"
,
deciduous_tree
:
"🌳"
,
deer
:
"🦌"
,
department_store
:
"🏬"
,
derelict_house
:
"🏚"
,
desert
:
"🏜"
,
desert_island
:
"🏝"
,
desktop_computer
:
"🖥"
,
male_detective
:
"🕵️"
,
diamond_shape_with_a_dot_inside
:
"💠"
,
diamonds
:
"♦️"
,
disappointed
:
"😞"
,
disappointed_relieved
:
"😥"
,
dizzy
:
"💫"
,
dizzy_face
:
"😵"
,
do_not_litter
:
"🚯"
,
dog
:
"🐶"
,
dog2
:
"🐕"
,
dollar
:
"💵"
,
dolls
:
"🎎"
,
dolphin
:
"🐬"
,
door
:
"🚪"
,
doughnut
:
"🍩"
,
dove
:
"🕊"
,
dragon
:
"🐉"
,
dragon_face
:
"🐲"
,
dress
:
"👗"
,
dromedary_camel
:
"🐪"
,
drooling_face
:
"🤤"
,
droplet
:
"💧"
,
drum
:
"🥁"
,
duck
:
"🦆"
,
dvd
:
"📀"
,
"e-mail"
:
"📧"
,
eagle
:
"🦅"
,
ear
:
"👂"
,
ear_of_rice
:
"🌾"
,
earth_africa
:
"🌍"
,
earth_americas
:
"🌎"
,
earth_asia
:
"🌏"
,
egg
:
"🥚"
,
eggplant
:
"🍆"
,
eight_pointed_black_star
:
"✴️"
,
eight_spoked_asterisk
:
"✳️"
,
electric_plug
:
"🔌"
,
elephant
:
"🐘"
,
email
:
"✉️"
,
end
:
"🔚"
,
envelope_with_arrow
:
"📩"
,
euro
:
"💶"
,
european_castle
:
"🏰"
,
european_post_office
:
"🏤"
,
evergreen_tree
:
"🌲"
,
exclamation
:
"❗️"
,
expressionless
:
"😑"
,
eye
:
"👁"
,
eye_speech_bubble
:
"👁‍🗨"
,
eyeglasses
:
"👓"
,
eyes
:
"👀"
,
face_with_head_bandage
:
"🤕"
,
face_with_thermometer
:
"🤒"
,
fist_oncoming
:
"👊"
,
factory
:
"🏭"
,
fallen_leaf
:
"🍂"
,
family_man_woman_boy
:
"👪"
,
family_man_boy
:
"👨‍👦"
,
family_man_boy_boy
:
"👨‍👦‍👦"
,
family_man_girl
:
"👨‍👧"
,
family_man_girl_boy
:
"👨‍👧‍👦"
,
family_man_girl_girl
:
"👨‍👧‍👧"
,
family_man_man_boy
:
"👨‍👨‍👦"
,
family_man_man_boy_boy
:
"👨‍👨‍👦‍👦"
,
family_man_man_girl
:
"👨‍👨‍👧"
,
family_man_man_girl_boy
:
"👨‍👨‍👧‍👦"
,
family_man_man_girl_girl
:
"👨‍👨‍👧‍👧"
,
family_man_woman_boy_boy
:
"👨‍👩‍👦‍👦"
,
family_man_woman_girl
:
"👨‍👩‍👧"
,
family_man_woman_girl_boy
:
"👨‍👩‍👧‍👦"
,
family_man_woman_girl_girl
:
"👨‍👩‍👧‍👧"
,
family_woman_boy
:
"👩‍👦"
,
family_woman_boy_boy
:
"👩‍👦‍👦"
,
family_woman_girl
:
"👩‍👧"
,
family_woman_girl_boy
:
"👩‍👧‍👦"
,
family_woman_girl_girl
:
"👩‍👧‍👧"
,
family_woman_woman_boy
:
"👩‍👩‍👦"
,
family_woman_woman_boy_boy
:
"👩‍👩‍👦‍👦"
,
family_woman_woman_girl
:
"👩‍👩‍👧"
,
family_woman_woman_girl_boy
:
"👩‍👩‍👧‍👦"
,
family_woman_woman_girl_girl
:
"👩‍👩‍👧‍👧"
,
fast_forward
:
"⏩"
,
fax
:
"📠"
,
fearful
:
"😨"
,
feet
:
"🐾"
,
female_detective
:
"🕵️‍♀️"
,
ferris_wheel
:
"🎡"
,
ferry
:
"⛴"
,
field_hockey
:
"🏑"
,
file_cabinet
:
"🗄"
,
file_folder
:
"📁"
,
film_projector
:
"📽"
,
film_strip
:
"🎞"
,
fire
:
"🔥"
,
fire_engine
:
"🚒"
,
fireworks
:
"🎆"
,
first_quarter_moon
:
"🌓"
,
first_quarter_moon_with_face
:
"🌛"
,
fish
:
"🐟"
,
fish_cake
:
"🍥"
,
fishing_pole_and_fish
:
"🎣"
,
fist_raised
:
"✊"
,
fist_left
:
"🤛"
,
fist_right
:
"🤜"
,
flags
:
"🎏"
,
flashlight
:
"🔦"
,
fleur_de_lis
:
"⚜️"
,
flight_arrival
:
"🛬"
,
flight_departure
:
"🛫"
,
floppy_disk
:
"💾"
,
flower_playing_cards
:
"🎴"
,
flushed
:
"😳"
,
fog
:
"🌫"
,
foggy
:
"🌁"
,
football
:
"🏈"
,
footprints
:
"👣"
,
fork_and_knife
:
"🍴"
,
fountain
:
"⛲️"
,
fountain_pen
:
"🖋"
,
four_leaf_clover
:
"🍀"
,
fox_face
:
"🦊"
,
framed_picture
:
"🖼"
,
free
:
"🆓"
,
fried_egg
:
"🍳"
,
fried_shrimp
:
"🍤"
,
fries
:
"🍟"
,
frog
:
"🐸"
,
frowning
:
"😦"
,
frowning_face
:
"☹️"
,
frowning_man
:
"🙍‍♂️"
,
frowning_woman
:
"🙍"
,
middle_finger
:
"🖕"
,
fuelpump
:
"⛽️"
,
full_moon
:
"🌕"
,
full_moon_with_face
:
"🌝"
,
funeral_urn
:
"⚱️"
,
game_die
:
"🎲"
,
gear
:
"⚙️"
,
gem
:
"💎"
,
gemini
:
"♊️"
,
ghost
:
"👻"
,
gift
:
"🎁"
,
gift_heart
:
"💝"
,
girl
:
"👧"
,
globe_with_meridians
:
"🌐"
,
goal_net
:
"🥅"
,
goat
:
"🐐"
,
golf
:
"⛳️"
,
golfing_man
:
"🏌️"
,
golfing_woman
:
"🏌️‍♀️"
,
gorilla
:
"🦍"
,
grapes
:
"🍇"
,
green_apple
:
"🍏"
,
green_book
:
"📗"
,
green_heart
:
"💚"
,
green_salad
:
"🥗"
,
grey_exclamation
:
"❕"
,
grey_question
:
"❔"
,
grimacing
:
"😬"
,
grin
:
"😁"
,
grinning
:
"😀"
,
guardsman
:
"💂"
,
guardswoman
:
"💂‍♀️"
,
guitar
:
"🎸"
,
gun
:
"🔫"
,
haircut_woman
:
"💇"
,
haircut_man
:
"💇‍♂️"
,
hamburger
:
"🍔"
,
hammer
:
"🔨"
,
hammer_and_pick
:
"⚒"
,
hammer_and_wrench
:
"🛠"
,
hamster
:
"🐹"
,
hand
:
"✋"
,
handbag
:
"👜"
,
handshake
:
"🤝"
,
hankey
:
"💩"
,
hatched_chick
:
"🐥"
,
hatching_chick
:
"🐣"
,
headphones
:
"🎧"
,
hear_no_evil
:
"🙉"
,
heart
:
"❤️"
,
heart_decoration
:
"💟"
,
heart_eyes
:
"😍"
,
heart_eyes_cat
:
"😻"
,
heartbeat
:
"💓"
,
heartpulse
:
"💗"
,
hearts
:
"♥️"
,
heavy_check_mark
:
"✔️"
,
heavy_division_sign
:
"➗"
,
heavy_dollar_sign
:
"💲"
,
heavy_heart_exclamation
:
"❣️"
,
heavy_minus_sign
:
"➖"
,
heavy_multiplication_x
:
"✖️"
,
heavy_plus_sign
:
"➕"
,
helicopter
:
"🚁"
,
herb
:
"🌿"
,
hibiscus
:
"🌺"
,
high_brightness
:
"🔆"
,
high_heel
:
"👠"
,
hocho
:
"🔪"
,
hole
:
"🕳"
,
honey_pot
:
"🍯"
,
horse
:
"🐴"
,
horse_racing
:
"🏇"
,
hospital
:
"🏥"
,
hot_pepper
:
"🌶"
,
hotdog
:
"🌭"
,
hotel
:
"🏨"
,
hotsprings
:
"♨️"
,
hourglass
:
"⌛️"
,
hourglass_flowing_sand
:
"⏳"
,
house
:
"🏠"
,
house_with_garden
:
"🏡"
,
houses
:
"🏘"
,
hugs
:
"🤗"
,
hushed
:
"😯"
,
ice_cream
:
"🍨"
,
ice_hockey
:
"🏒"
,
ice_skate
:
"⛸"
,
icecream
:
"🍦"
,
id
:
"🆔"
,
ideograph_advantage
:
"🉐"
,
imp
:
"👿"
,
inbox_tray
:
"📥"
,
incoming_envelope
:
"📨"
,
tipping_hand_woman
:
"💁"
,
information_source
:
"ℹ️"
,
innocent
:
"😇"
,
interrobang
:
"⁉️"
,
iphone
:
"📱"
,
izakaya_lantern
:
"🏮"
,
jack_o_lantern
:
"🎃"
,
japan
:
"🗾"
,
japanese_castle
:
"🏯"
,
japanese_goblin
:
"👺"
,
japanese_ogre
:
"👹"
,
jeans
:
"👖"
,
joy
:
"😂"
,
joy_cat
:
"😹"
,
joystick
:
"🕹"
,
kaaba
:
"🕋"
,
key
:
"🔑"
,
keyboard
:
"⌨️"
,
keycap_ten
:
"🔟"
,
kick_scooter
:
"🛴"
,
kimono
:
"👘"
,
kiss
:
"💋"
,
kissing
:
"😗"
,
kissing_cat
:
"😽"
,
kissing_closed_eyes
:
"😚"
,
kissing_heart
:
"😘"
,
kissing_smiling_eyes
:
"😙"
,
kiwi_fruit
:
"🥝"
,
koala
:
"🐨"
,
koko
:
"🈁"
,
label
:
"🏷"
,
large_blue_circle
:
"🔵"
,
large_blue_diamond
:
"🔷"
,
large_orange_diamond
:
"🔶"
,
last_quarter_moon
:
"🌗"
,
last_quarter_moon_with_face
:
"🌜"
,
latin_cross
:
"✝️"
,
laughing
:
"😆"
,
leaves
:
"🍃"
,
ledger
:
"📒"
,
left_luggage
:
"🛅"
,
left_right_arrow
:
"↔️"
,
leftwards_arrow_with_hook
:
"↩️"
,
lemon
:
"🍋"
,
leo
:
"♌️"
,
leopard
:
"🐆"
,
level_slider
:
"🎚"
,
libra
:
"♎️"
,
light_rail
:
"🚈"
,
link
:
"🔗"
,
lion
:
"🦁"
,
lips
:
"👄"
,
lipstick
:
"💄"
,
lizard
:
"🦎"
,
lock
:
"🔒"
,
lock_with_ink_pen
:
"🔏"
,
lollipop
:
"🍭"
,
loop
:
"➿"
,
loud_sound
:
"🔊"
,
loudspeaker
:
"📢"
,
love_hotel
:
"🏩"
,
love_letter
:
"💌"
,
low_brightness
:
"🔅"
,
lying_face
:
"🤥"
,
m
:
"Ⓜ️"
,
mag
:
"🔍"
,
mag_right
:
"🔎"
,
mahjong
:
"🀄️"
,
mailbox
:
"📫"
,
mailbox_closed
:
"📪"
,
mailbox_with_mail
:
"📬"
,
mailbox_with_no_mail
:
"📭"
,
man
:
"👨"
,
man_artist
:
"👨‍🎨"
,
man_astronaut
:
"👨‍🚀"
,
man_cartwheeling
:
"🤸‍♂️"
,
man_cook
:
"👨‍🍳"
,
man_dancing
:
"🕺"
,
man_facepalming
:
"🤦‍♂️"
,
man_factory_worker
:
"👨‍🏭"
,
man_farmer
:
"👨‍🌾"
,
man_firefighter
:
"👨‍🚒"
,
man_health_worker
:
"👨‍⚕️"
,
man_in_tuxedo
:
"🤵"
,
man_judge
:
"👨‍⚖️"
,
man_juggling
:
"🤹‍♂️"
,
man_mechanic
:
"👨‍🔧"
,
man_office_worker
:
"👨‍💼"
,
man_pilot
:
"👨‍✈️"
,
man_playing_handball
:
"🤾‍♂️"
,
man_playing_water_polo
:
"🤽‍♂️"
,
man_scientist
:
"👨‍🔬"
,
man_shrugging
:
"🤷‍♂️"
,
man_singer
:
"👨‍🎤"
,
man_student
:
"👨‍🎓"
,
man_teacher
:
"👨‍🏫"
,
man_technologist
:
"👨‍💻"
,
man_with_gua_pi_mao
:
"👲"
,
man_with_turban
:
"👳"
,
tangerine
:
"🍊"
,
mans_shoe
:
"👞"
,
mantelpiece_clock
:
"🕰"
,
maple_leaf
:
"🍁"
,
martial_arts_uniform
:
"🥋"
,
mask
:
"😷"
,
massage_woman
:
"💆"
,
massage_man
:
"💆‍♂️"
,
meat_on_bone
:
"🍖"
,
medal_military
:
"🎖"
,
medal_sports
:
"🏅"
,
mega
:
"📣"
,
melon
:
"🍈"
,
memo
:
"📝"
,
men_wrestling
:
"🤼‍♂️"
,
menorah
:
"🕎"
,
mens
:
"🚹"
,
metal
:
"🤘"
,
metro
:
"🚇"
,
microphone
:
"🎤"
,
microscope
:
"🔬"
,
milk_glass
:
"🥛"
,
milky_way
:
"🌌"
,
minibus
:
"🚐"
,
minidisc
:
"💽"
,
mobile_phone_off
:
"📴"
,
money_mouth_face
:
"🤑"
,
money_with_wings
:
"💸"
,
moneybag
:
"💰"
,
monkey
:
"🐒"
,
monkey_face
:
"🐵"
,
monorail
:
"🚝"
,
moon
:
"🌔"
,
mortar_board
:
"🎓"
,
mosque
:
"🕌"
,
motor_boat
:
"🛥"
,
motor_scooter
:
"🛵"
,
motorcycle
:
"🏍"
,
motorway
:
"🛣"
,
mount_fuji
:
"🗻"
,
mountain
:
"⛰"
,
mountain_biking_man
:
"🚵"
,
mountain_biking_woman
:
"🚵‍♀️"
,
mountain_cableway
:
"🚠"
,
mountain_railway
:
"🚞"
,
mountain_snow
:
"🏔"
,
mouse
:
"🐭"
,
mouse2
:
"🐁"
,
movie_camera
:
"🎥"
,
moyai
:
"🗿"
,
mrs_claus
:
"🤶"
,
muscle
:
"💪"
,
mushroom
:
"🍄"
,
musical_keyboard
:
"🎹"
,
musical_note
:
"🎵"
,
musical_score
:
"🎼"
,
mute
:
"🔇"
,
nail_care
:
"💅"
,
name_badge
:
"📛"
,
national_park
:
"🏞"
,
nauseated_face
:
"🤢"
,
necktie
:
"👔"
,
negative_squared_cross_mark
:
"❎"
,
nerd_face
:
"🤓"
,
neutral_face
:
"😐"
,
new
:
"🆕"
,
new_moon
:
"🌑"
,
new_moon_with_face
:
"🌚"
,
newspaper
:
"📰"
,
newspaper_roll
:
"🗞"
,
next_track_button
:
"⏭"
,
ng
:
"🆖"
,
no_good_man
:
"🙅‍♂️"
,
no_good_woman
:
"🙅"
,
night_with_stars
:
"🌃"
,
no_bell
:
"🔕"
,
no_bicycles
:
"🚳"
,
no_entry
:
"⛔️"
,
no_entry_sign
:
"🚫"
,
no_mobile_phones
:
"📵"
,
no_mouth
:
"😶"
,
no_pedestrians
:
"🚷"
,
no_smoking
:
"🚭"
,
"non-potable_water"
:
"🚱"
,
nose
:
"👃"
,
notebook
:
"📓"
,
notebook_with_decorative_cover
:
"📔"
,
notes
:
"🎶"
,
nut_and_bolt
:
"🔩"
,
o
:
"⭕️"
,
o2
:
"🅾️"
,
ocean
:
"🌊"
,
octopus
:
"🐙"
,
oden
:
"🍢"
,
office
:
"🏢"
,
oil_drum
:
"🛢"
,
ok
:
"🆗"
,
ok_hand
:
"👌"
,
ok_man
:
"🙆‍♂️"
,
ok_woman
:
"🙆"
,
old_key
:
"🗝"
,
older_man
:
"👴"
,
older_woman
:
"👵"
,
om
:
"🕉"
,
on
:
"🔛"
,
oncoming_automobile
:
"🚘"
,
oncoming_bus
:
"🚍"
,
oncoming_police_car
:
"🚔"
,
oncoming_taxi
:
"🚖"
,
open_file_folder
:
"📂"
,
open_hands
:
"👐"
,
open_mouth
:
"😮"
,
open_umbrella
:
"☂️"
,
ophiuchus
:
"⛎"
,
orange_book
:
"📙"
,
orthodox_cross
:
"☦️"
,
outbox_tray
:
"📤"
,
owl
:
"🦉"
,
ox
:
"🐂"
,
package
:
"📦"
,
page_facing_up
:
"📄"
,
page_with_curl
:
"📃"
,
pager
:
"📟"
,
paintbrush
:
"🖌"
,
palm_tree
:
"🌴"
,
pancakes
:
"🥞"
,
panda_face
:
"🐼"
,
paperclip
:
"📎"
,
paperclips
:
"🖇"
,
parasol_on_ground
:
"⛱"
,
parking
:
"🅿️"
,
part_alternation_mark
:
"〽️"
,
partly_sunny
:
"⛅️"
,
passenger_ship
:
"🛳"
,
passport_control
:
"🛂"
,
pause_button
:
"⏸"
,
peace_symbol
:
"☮️"
,
peach
:
"🍑"
,
peanuts
:
"🥜"
,
pear
:
"🍐"
,
pen
:
"🖊"
,
pencil2
:
"✏️"
,
penguin
:
"🐧"
,
pensive
:
"😔"
,
performing_arts
:
"🎭"
,
persevere
:
"😣"
,
person_fencing
:
"🤺"
,
pouting_woman
:
"🙎"
,
phone
:
"☎️"
,
pick
:
"⛏"
,
pig
:
"🐷"
,
pig2
:
"🐖"
,
pig_nose
:
"🐽"
,
pill
:
"💊"
,
pineapple
:
"🍍"
,
ping_pong
:
"🏓"
,
pisces
:
"♓️"
,
pizza
:
"🍕"
,
place_of_worship
:
"🛐"
,
plate_with_cutlery
:
"🍽"
,
play_or_pause_button
:
"⏯"
,
point_down
:
"👇"
,
point_left
:
"👈"
,
point_right
:
"👉"
,
point_up
:
"☝️"
,
point_up_2
:
"👆"
,
police_car
:
"🚓"
,
policewoman
:
"👮‍♀️"
,
poodle
:
"🐩"
,
popcorn
:
"🍿"
,
post_office
:
"🏣"
,
postal_horn
:
"📯"
,
postbox
:
"📮"
,
potable_water
:
"🚰"
,
potato
:
"🥔"
,
pouch
:
"👝"
,
poultry_leg
:
"🍗"
,
pound
:
"💷"
,
rage
:
"😡"
,
pouting_cat
:
"😾"
,
pouting_man
:
"🙎‍♂️"
,
pray
:
"🙏"
,
prayer_beads
:
"📿"
,
pregnant_woman
:
"🤰"
,
previous_track_button
:
"⏮"
,
prince
:
"🤴"
,
princess
:
"👸"
,
printer
:
"🖨"
,
purple_heart
:
"💜"
,
purse
:
"👛"
,
pushpin
:
"📌"
,
put_litter_in_its_place
:
"🚮"
,
question
:
"❓"
,
rabbit
:
"🐰"
,
rabbit2
:
"🐇"
,
racehorse
:
"🐎"
,
racing_car
:
"🏎"
,
radio
:
"📻"
,
radio_button
:
"🔘"
,
radioactive
:
"☢️"
,
railway_car
:
"🚃"
,
railway_track
:
"🛤"
,
rainbow
:
"🌈"
,
rainbow_flag
:
"🏳️‍🌈"
,
raised_back_of_hand
:
"🤚"
,
raised_hand_with_fingers_splayed
:
"🖐"
,
raised_hands
:
"🙌"
,
raising_hand_woman
:
"🙋"
,
raising_hand_man
:
"🙋‍♂️"
,
ram
:
"🐏"
,
ramen
:
"🍜"
,
rat
:
"🐀"
,
record_button
:
"⏺"
,
recycle
:
"♻️"
,
red_circle
:
"🔴"
,
registered
:
"®️"
,
relaxed
:
"☺️"
,
relieved
:
"😌"
,
reminder_ribbon
:
"🎗"
,
repeat
:
"🔁"
,
repeat_one
:
"🔂"
,
rescue_worker_helmet
:
"⛑"
,
restroom
:
"🚻"
,
revolving_hearts
:
"💞"
,
rewind
:
"⏪"
,
rhinoceros
:
"🦏"
,
ribbon
:
"🎀"
,
rice
:
"🍚"
,
rice_ball
:
"🍙"
,
rice_cracker
:
"🍘"
,
rice_scene
:
"🎑"
,
right_anger_bubble
:
"🗯"
,
ring
:
"💍"
,
robot
:
"🤖"
,
rocket
:
"🚀"
,
rofl
:
"🤣"
,
roll_eyes
:
"🙄"
,
roller_coaster
:
"🎢"
,
rooster
:
"🐓"
,
rose
:
"🌹"
,
rosette
:
"🏵"
,
rotating_light
:
"🚨"
,
round_pushpin
:
"📍"
,
rowing_man
:
"🚣"
,
rowing_woman
:
"🚣‍♀️"
,
rugby_football
:
"🏉"
,
running_man
:
"🏃"
,
running_shirt_with_sash
:
"🎽"
,
running_woman
:
"🏃‍♀️"
,
sa
:
"🈂️"
,
sagittarius
:
"♐️"
,
sake
:
"🍶"
,
sandal
:
"👡"
,
santa
:
"🎅"
,
satellite
:
"📡"
,
saxophone
:
"🎷"
,
school
:
"🏫"
,
school_satchel
:
"🎒"
,
scissors
:
"✂️"
,
scorpion
:
"🦂"
,
scorpius
:
"♏️"
,
scream
:
"😱"
,
scream_cat
:
"🙀"
,
scroll
:
"📜"
,
seat
:
"💺"
,
secret
:
"㊙️"
,
see_no_evil
:
"🙈"
,
seedling
:
"🌱"
,
selfie
:
"🤳"
,
shallow_pan_of_food
:
"🥘"
,
shamrock
:
"☘️"
,
shark
:
"🦈"
,
shaved_ice
:
"🍧"
,
sheep
:
"🐑"
,
shell
:
"🐚"
,
shield
:
"🛡"
,
shinto_shrine
:
"⛩"
,
ship
:
"🚢"
,
shirt
:
"👕"
,
shopping
:
"🛍"
,
shopping_cart
:
"🛒"
,
shower
:
"🚿"
,
shrimp
:
"🦐"
,
signal_strength
:
"📶"
,
six_pointed_star
:
"🔯"
,
ski
:
"🎿"
,
skier
:
"⛷"
,
skull
:
"💀"
,
skull_and_crossbones
:
"☠️"
,
sleeping
:
"😴"
,
sleeping_bed
:
"🛌"
,
sleepy
:
"😪"
,
slightly_frowning_face
:
"🙁"
,
slightly_smiling_face
:
"🙂"
,
slot_machine
:
"🎰"
,
small_airplane
:
"🛩"
,
small_blue_diamond
:
"🔹"
,
small_orange_diamond
:
"🔸"
,
small_red_triangle
:
"🔺"
,
small_red_triangle_down
:
"🔻"
,
smile
:
"😄"
,
smile_cat
:
"😸"
,
smiley
:
"😃"
,
smiley_cat
:
"😺"
,
smiling_imp
:
"😈"
,
smirk
:
"😏"
,
smirk_cat
:
"😼"
,
smoking
:
"🚬"
,
snail
:
"🐌"
,
snake
:
"🐍"
,
sneezing_face
:
"🤧"
,
snowboarder
:
"🏂"
,
snowflake
:
"❄️"
,
snowman
:
"⛄️"
,
snowman_with_snow
:
"☃️"
,
sob
:
"😭"
,
soccer
:
"⚽️"
,
soon
:
"🔜"
,
sos
:
"🆘"
,
sound
:
"🔉"
,
space_invader
:
"👾"
,
spades
:
"♠️"
,
spaghetti
:
"🍝"
,
sparkle
:
"❇️"
,
sparkler
:
"🎇"
,
sparkles
:
"✨"
,
sparkling_heart
:
"💖"
,
speak_no_evil
:
"🙊"
,
speaker
:
"🔈"
,
speaking_head
:
"🗣"
,
speech_balloon
:
"💬"
,
speedboat
:
"🚤"
,
spider
:
"🕷"
,
spider_web
:
"🕸"
,
spiral_calendar
:
"🗓"
,
spiral_notepad
:
"🗒"
,
spoon
:
"🥄"
,
squid
:
"🦑"
,
stadium
:
"🏟"
,
star
:
"⭐️"
,
star2
:
"🌟"
,
star_and_crescent
:
"☪️"
,
star_of_david
:
"✡️"
,
stars
:
"🌠"
,
station
:
"🚉"
,
statue_of_liberty
:
"🗽"
,
steam_locomotive
:
"🚂"
,
stew
:
"🍲"
,
stop_button
:
"⏹"
,
stop_sign
:
"🛑"
,
stopwatch
:
"⏱"
,
straight_ruler
:
"📏"
,
strawberry
:
"🍓"
,
stuck_out_tongue
:
"😛"
,
stuck_out_tongue_closed_eyes
:
"😝"
,
stuck_out_tongue_winking_eye
:
"😜"
,
studio_microphone
:
"🎙"
,
stuffed_flatbread
:
"🥙"
,
sun_behind_large_cloud
:
"🌥"
,
sun_behind_rain_cloud
:
"🌦"
,
sun_behind_small_cloud
:
"🌤"
,
sun_with_face
:
"🌞"
,
sunflower
:
"🌻"
,
sunglasses
:
"😎"
,
sunny
:
"☀️"
,
sunrise
:
"🌅"
,
sunrise_over_mountains
:
"🌄"
,
surfing_man
:
"🏄"
,
surfing_woman
:
"🏄‍♀️"
,
sushi
:
"🍣"
,
suspension_railway
:
"🚟"
,
sweat
:
"😓"
,
sweat_drops
:
"💦"
,
sweat_smile
:
"😅"
,
sweet_potato
:
"🍠"
,
swimming_man
:
"🏊"
,
swimming_woman
:
"🏊‍♀️"
,
symbols
:
"🔣"
,
synagogue
:
"🕍"
,
syringe
:
"💉"
,
taco
:
"🌮"
,
tada
:
"🎉"
,
tanabata_tree
:
"🎋"
,
taurus
:
"♉️"
,
taxi
:
"🚕"
,
tea
:
"🍵"
,
telephone_receiver
:
"📞"
,
telescope
:
"🔭"
,
tennis
:
"🎾"
,
tent
:
"⛺️"
,
thermometer
:
"🌡"
,
thinking
:
"🤔"
,
thought_balloon
:
"💭"
,
ticket
:
"🎫"
,
tickets
:
"🎟"
,
tiger
:
"🐯"
,
tiger2
:
"🐅"
,
timer_clock
:
"⏲"
,
tipping_hand_man
:
"💁‍♂️"
,
tired_face
:
"😫"
,
tm
:
"™️"
,
toilet
:
"🚽"
,
tokyo_tower
:
"🗼"
,
tomato
:
"🍅"
,
tongue
:
"👅"
,
top
:
"🔝"
,
tophat
:
"🎩"
,
tornado
:
"🌪"
,
trackball
:
"🖲"
,
tractor
:
"🚜"
,
traffic_light
:
"🚥"
,
train
:
"🚋"
,
train2
:
"🚆"
,
tram
:
"🚊"
,
triangular_flag_on_post
:
"🚩"
,
triangular_ruler
:
"📐"
,
trident
:
"🔱"
,
triumph
:
"😤"
,
trolleybus
:
"🚎"
,
trophy
:
"🏆"
,
tropical_drink
:
"🍹"
,
tropical_fish
:
"🐠"
,
truck
:
"🚚"
,
trumpet
:
"🎺"
,
tulip
:
"🌷"
,
tumbler_glass
:
"🥃"
,
turkey
:
"🦃"
,
turtle
:
"🐢"
,
tv
:
"📺"
,
twisted_rightwards_arrows
:
"🔀"
,
two_hearts
:
"💕"
,
two_men_holding_hands
:
"👬"
,
two_women_holding_hands
:
"👭"
,
u5272
:
"🈹"
,
u5408
:
"🈴"
,
u55b6
:
"🈺"
,
u6307
:
"🈯️"
,
u6708
:
"🈷️"
,
u6709
:
"🈶"
,
u6e80
:
"🈵"
,
u7121
:
"🈚️"
,
u7533
:
"🈸"
,
u7981
:
"🈲"
,
u7a7a
:
"🈳"
,
umbrella
:
"☔️"
,
unamused
:
"😒"
,
underage
:
"🔞"
,
unicorn
:
"🦄"
,
unlock
:
"🔓"
,
up
:
"🆙"
,
upside_down_face
:
"🙃"
,
v
:
"✌️"
,
vertical_traffic_light
:
"🚦"
,
vhs
:
"📼"
,
vibration_mode
:
"📳"
,
video_camera
:
"📹"
,
video_game
:
"🎮"
,
violin
:
"🎻"
,
virgo
:
"♍️"
,
volcano
:
"🌋"
,
volleyball
:
"🏐"
,
vs
:
"🆚"
,
vulcan_salute
:
"🖖"
,
walking_man
:
"🚶"
,
walking_woman
:
"🚶‍♀️"
,
waning_crescent_moon
:
"🌘"
,
waning_gibbous_moon
:
"🌖"
,
warning
:
"⚠️"
,
wastebasket
:
"🗑"
,
watch
:
"⌚️"
,
water_buffalo
:
"🐃"
,
watermelon
:
"🍉"
,
wave
:
"👋"
,
wavy_dash
:
"〰️"
,
waxing_crescent_moon
:
"🌒"
,
wc
:
"🚾"
,
weary
:
"😩"
,
wedding
:
"💒"
,
weight_lifting_man
:
"🏋️"
,
weight_lifting_woman
:
"🏋️‍♀️"
,
whale
:
"🐳"
,
whale2
:
"🐋"
,
wheel_of_dharma
:
"☸️"
,
wheelchair
:
"♿️"
,
white_check_mark
:
"✅"
,
white_circle
:
"⚪️"
,
white_flag
:
"🏳️"
,
white_flower
:
"💮"
,
white_large_square
:
"⬜️"
,
white_medium_small_square
:
"◽️"
,
white_medium_square
:
"◻️"
,
white_small_square
:
"▫️"
,
white_square_button
:
"🔳"
,
wilted_flower
:
"🥀"
,
wind_chime
:
"🎐"
,
wind_face
:
"🌬"
,
wine_glass
:
"🍷"
,
wink
:
"😉"
,
wolf
:
"🐺"
,
woman
:
"👩"
,
woman_artist
:
"👩‍🎨"
,
woman_astronaut
:
"👩‍🚀"
,
woman_cartwheeling
:
"🤸‍♀️"
,
woman_cook
:
"👩‍🍳"
,
woman_facepalming
:
"🤦‍♀️"
,
woman_factory_worker
:
"👩‍🏭"
,
woman_farmer
:
"👩‍🌾"
,
woman_firefighter
:
"👩‍🚒"
,
woman_health_worker
:
"👩‍⚕️"
,
woman_judge
:
"👩‍⚖️"
,
woman_juggling
:
"🤹‍♀️"
,
woman_mechanic
:
"👩‍🔧"
,
woman_office_worker
:
"👩‍💼"
,
woman_pilot
:
"👩‍✈️"
,
woman_playing_handball
:
"🤾‍♀️"
,
woman_playing_water_polo
:
"🤽‍♀️"
,
woman_scientist
:
"👩‍🔬"
,
woman_shrugging
:
"🤷‍♀️"
,
woman_singer
:
"👩‍🎤"
,
woman_student
:
"👩‍🎓"
,
woman_teacher
:
"👩‍🏫"
,
woman_technologist
:
"👩‍💻"
,
woman_with_turban
:
"👳‍♀️"
,
womans_clothes
:
"👚"
,
womans_hat
:
"👒"
,
women_wrestling
:
"🤼‍♀️"
,
womens
:
"🚺"
,
world_map
:
"🗺"
,
worried
:
"😟"
,
wrench
:
"🔧"
,
writing_hand
:
"✍️"
,
x
:
"❌"
,
yellow_heart
:
"💛"
,
yen
:
"💴"
,
yin_yang
:
"☯️"
,
yum
:
"😋"
,
zap
:
"⚡️"
,
zipper_mouth_face
:
"🤐"
,
zzz
:
"💤"
,
octocat
:
'<img alt=":octocat:" height="20" width="20" align="absmiddle" src="https://assets-cdn.github.com/images/icons/emoji/octocat.png">'
,
showdown
:
"<span style=\"font-family: 'Anonymous Pro', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;\">S</span>"
},
s
.
Converter
=
function
(
e
){
"use strict"
;
var
r
=
{},
t
=
[],
a
=
[],
n
=
{},
o
=
c
,
p
=
{
parsed
:
{},
raw
:
""
,
format
:
""
};
function
h
(
e
,
r
){
if
(
r
=
r
||
null
,
s
.
helper
.
isString
(
e
)){
if
(
r
=
e
=
s
.
helper
.
stdExtName
(
e
),
s
.
extensions
[
e
])
return
console
.
warn
(
"DEPRECATION WARNING: "
+
e
+
" is an old extension that uses a deprecated loading method.Please inform the developer that the extension should be updated!"
),
void
function
(
e
,
r
){
"function"
==
typeof
e
&&
(
e
=
e
(
new
s
.
Converter
));
s
.
helper
.
isArray
(
e
)
||
(
e
=
[
e
]);
var
n
=
d
(
e
,
r
);
if
(
!
n
.
valid
)
throw
Error
(
n
.
error
);
for
(
var
o
=
0
;
o
<
e
.
length
;
++
o
)
switch
(
e
[
o
].
type
){
case
"lang"
:
t
.
push
(
e
[
o
]);
break
;
case
"output"
:
a
.
push
(
e
[
o
]);
break
;
default
:
throw
Error
(
"Extension loader error: Type unrecognized!!!"
)}}(
s
.
extensions
[
e
],
e
);
if
(
s
.
helper
.
isUndefined
(
i
[
e
]))
throw
Error
(
'Extension "'
+
e
+
'" could not be loaded. It was either not found or is not a valid extension.'
);
e
=
i
[
e
]}
"function"
==
typeof
e
&&
(
e
=
e
()),
s
.
helper
.
isArray
(
e
)
||
(
e
=
[
e
]);
var
n
=
d
(
e
,
r
);
if
(
!
n
.
valid
)
throw
Error
(
n
.
error
);
for
(
var
o
=
0
;
o
<
e
.
length
;
++
o
){
switch
(
e
[
o
].
type
){
case
"lang"
:
t
.
push
(
e
[
o
]);
break
;
case
"output"
:
a
.
push
(
e
[
o
])}
if
(
e
[
o
].
hasOwnProperty
(
"listeners"
))
for
(
var
l
in
e
[
o
].
listeners
)
e
[
o
].
listeners
.
hasOwnProperty
(
l
)
&&
_
(
l
,
e
[
o
].
listeners
[
l
])}}
function
_
(
e
,
r
){
if
(
!
s
.
helper
.
isString
(
e
))
throw
Error
(
"Invalid argument in converter.listen() method: name must be a string, but "
+
typeof
e
+
" given"
);
if
(
"function"
!=
typeof
r
)
throw
Error
(
"Invalid argument in converter.listen() method: callback must be a function, but "
+
typeof
r
+
" given"
);
n
.
hasOwnProperty
(
e
)
||
(
n
[
e
]
=
[]),
n
[
e
].
push
(
r
)}
!
function
(){
for
(
var
t
in
e
=
e
||
{},
l
)
l
.
hasOwnProperty
(
t
)
&&
(
r
[
t
]
=
l
[
t
]);
if
(
"object"
!=
typeof
e
)
throw
Error
(
"Converter expects the passed parameter to be an object, but "
+
typeof
e
+
" was passed instead."
);
for
(
var
a
in
e
)
e
.
hasOwnProperty
(
a
)
&&
(
r
[
a
]
=
e
[
a
]);
r
.
extensions
&&
s
.
helper
.
forEach
(
r
.
extensions
,
h
)}(),
this
.
_dispatch
=
function
(
e
,
r
,
t
,
a
){
if
(
n
.
hasOwnProperty
(
e
))
for
(
var
s
=
0
;
s
<
n
[
e
].
length
;
++
s
){
var
o
=
n
[
e
][
s
](
e
,
r
,
this
,
t
,
a
);
o
&&
void
0
!==
o
&&
(
r
=
o
)}
return
r
},
this
.
listen
=
function
(
e
,
r
){
return
_
(
e
,
r
),
this
},
this
.
makeHtml
=
function
(
e
){
if
(
!
e
)
return
e
;
var
n
=
{
gHtmlBlocks
:
[],
gHtmlMdBlocks
:
[],
gHtmlSpans
:
[],
gUrls
:
{},
gTitles
:
{},
gDimensions
:
{},
gListLevel
:
0
,
hashLinkCounts
:
{},
langExtensions
:
t
,
outputModifiers
:
a
,
converter
:
this
,
ghCodeBlocks
:
[],
metadata
:
{
parsed
:
{},
raw
:
""
,
format
:
""
}};
return
e
=
(
e
=
(
e
=
(
e
=
(
e
=
e
.
replace
(
/¨/g
,
"¨T"
)).
replace
(
/\$/g
,
"¨D"
)).
replace
(
/\r\n/g
,
"\n"
)).
replace
(
/\r/g
,
"\n"
)).
replace
(
/\u00A0/g
,
" "
),
r
.
smartIndentationFix
&&
(
e
=
function
(
e
){
var
r
=
e
.
match
(
/^\s*/
)[
0
].
length
,
t
=
new
RegExp
(
"^\\s{0,"
+
r
+
"}"
,
"gm"
);
return
e
.
replace
(
t
,
""
)}(
e
)),
e
=
"\n\n"
+
e
+
"\n\n"
,
e
=
(
e
=
s
.
subParser
(
"detab"
)(
e
,
r
,
n
)).
replace
(
/^[ \t]+$/gm
,
""
),
s
.
helper
.
forEach
(
t
,(
function
(
t
){
e
=
s
.
subParser
(
"runExtension"
)(
t
,
e
,
r
,
n
)})),
e
=
s
.
subParser
(
"metadata"
)(
e
,
r
,
n
),
e
=
s
.
subParser
(
"hashPreCodeTags"
)(
e
,
r
,
n
),
e
=
s
.
subParser
(
"githubCodeBlocks"
)(
e
,
r
,
n
),
e
=
s
.
subParser
(
"hashHTMLBlocks"
)(
e
,
r
,
n
),
e
=
s
.
subParser
(
"hashCodeTags"
)(
e
,
r
,
n
),
e
=
s
.
subParser
(
"stripLinkDefinitions"
)(
e
,
r
,
n
),
e
=
s
.
subParser
(
"blockGamut"
)(
e
,
r
,
n
),
e
=
s
.
subParser
(
"unhashHTMLSpans"
)(
e
,
r
,
n
),
e
=
(
e
=
(
e
=
s
.
subParser
(
"unescapeSpecialChars"
)(
e
,
r
,
n
)).
replace
(
/¨D/g
,
"$$"
)).
replace
(
/¨T/g
,
"¨"
),
e
=
s
.
subParser
(
"completeHTMLDocument"
)(
e
,
r
,
n
),
s
.
helper
.
forEach
(
a
,(
function
(
t
){
e
=
s
.
subParser
(
"runExtension"
)(
t
,
e
,
r
,
n
)})),
p
=
n
.
metadata
,
e
},
this
.
makeMarkdown
=
this
.
makeMd
=
function
(
e
,
r
){
if
(
e
=
(
e
=
(
e
=
e
.
replace
(
/\r\n/g
,
"\n"
)).
replace
(
/\r/g
,
"\n"
)).
replace
(
/>[ \t]+</
,
">¨NBSP;<"
),
!
r
){
if
(
!
window
||!
window
.
document
)
throw
new
Error
(
"HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM"
);
r
=
window
.
document
}
var
t
=
r
.
createElement
(
"div"
);
t
.
innerHTML
=
e
;
var
a
=
{
preList
:
function
(
e
){
for
(
var
r
=
e
.
querySelectorAll
(
"pre"
),
t
=
[],
a
=
0
;
a
<
r
.
length
;
++
a
)
if
(
1
===
r
[
a
].
childElementCount
&&
"code"
===
r
[
a
].
firstChild
.
tagName
.
toLowerCase
()){
var
n
=
r
[
a
].
firstChild
.
innerHTML
.
trim
(),
o
=
r
[
a
].
firstChild
.
getAttribute
(
"data-language"
)
||
""
;
if
(
""
===
o
)
for
(
var
i
=
r
[
a
].
firstChild
.
className
.
split
(
" "
),
l
=
0
;
l
<
i
.
length
;
++
l
){
var
c
=
i
[
l
].
match
(
/^language-(.+)$/
);
if
(
null
!==
c
){
o
=
c
[
1
];
break
}}
n
=
s
.
helper
.
unescapeHTMLEntities
(
n
),
t
.
push
(
n
),
r
[
a
].
outerHTML
=
'<precode language="'
+
o
+
'" precodenum="'
+
a
.
toString
()
+
'"></precode>'
}
else
t
.
push
(
r
[
a
].
innerHTML
),
r
[
a
].
innerHTML
=
""
,
r
[
a
].
setAttribute
(
"prenum"
,
a
.
toString
());
return
t
}(
t
)};
!
function
e
(
r
){
for
(
var
t
=
0
;
t
<
r
.
childNodes
.
length
;
++
t
){
var
a
=
r
.
childNodes
[
t
];
3
===
a
.
nodeType
?
/\S/
.
test
(
a
.
nodeValue
)
||
/^[ ]+$/
.
test
(
a
.
nodeValue
)
?
(
a
.
nodeValue
=
a
.
nodeValue
.
split
(
"\n"
).
join
(
" "
),
a
.
nodeValue
=
a
.
nodeValue
.
replace
(
/(\s)+/g
,
"$1"
))
:
(
r
.
removeChild
(
a
),
--
t
)
:
1
===
a
.
nodeType
&&
e
(
a
)}}(
t
);
for
(
var
n
=
t
.
childNodes
,
o
=
""
,
i
=
0
;
i
<
n
.
length
;
i
++
)
o
+=
s
.
subParser
(
"makeMarkdown.node"
)(
n
[
i
],
a
);
return
o
},
this
.
setOption
=
function
(
e
,
t
){
r
[
e
]
=
t
},
this
.
getOption
=
function
(
e
){
return
r
[
e
]},
this
.
getOptions
=
function
(){
return
r
},
this
.
addExtension
=
function
(
e
,
r
){
h
(
e
,
r
=
r
||
null
)},
this
.
useExtension
=
function
(
e
){
h
(
e
)},
this
.
setFlavor
=
function
(
e
){
if
(
!
u
.
hasOwnProperty
(
e
))
throw
Error
(
e
+
" flavor was not found"
);
var
t
=
u
[
e
];
for
(
var
a
in
o
=
e
,
t
)
t
.
hasOwnProperty
(
a
)
&&
(
r
[
a
]
=
t
[
a
])},
this
.
getFlavor
=
function
(){
return
o
},
this
.
removeExtension
=
function
(
e
){
s
.
helper
.
isArray
(
e
)
||
(
e
=
[
e
]);
for
(
var
r
=
0
;
r
<
e
.
length
;
++
r
){
for
(
var
n
=
e
[
r
],
o
=
0
;
o
<
t
.
length
;
++
o
)
t
[
o
]
===
n
&&
t
.
splice
(
o
,
1
);
for
(
var
i
=
0
;
i
<
a
.
length
;
++
i
)
a
[
i
]
===
n
&&
a
.
splice
(
i
,
1
)}},
this
.
getAllExtensions
=
function
(){
return
{
language
:
t
,
output
:
a
}},
this
.
getMetadata
=
function
(
e
){
return
e
?
p
.
raw
:
p
.
parsed
},
this
.
getMetadataFormat
=
function
(){
return
p
.
format
},
this
.
_setMetadataPair
=
function
(
e
,
r
){
p
.
parsed
[
e
]
=
r
},
this
.
_setMetadataFormat
=
function
(
e
){
p
.
format
=
e
},
this
.
_setMetadataRaw
=
function
(
e
){
p
.
raw
=
e
}},
s
.
subParser
(
"anchors"
,(
function
(
e
,
r
,
t
){
"use strict"
;
var
a
=
function
(
e
,
a
,
n
,
o
,
i
,
l
,
c
){
if
(
s
.
helper
.
isUndefined
(
c
)
&&
(
c
=
""
),
n
=
n
.
toLowerCase
(),
e
.
search
(
/\(<?\s*>? ?(['"].*['"])?\)$/m
)
>-
1
)
o
=
""
;
else
if
(
!
o
){
if
(
n
||
(
n
=
a
.
toLowerCase
().
replace
(
/ ?\n/g
,
" "
)),
o
=
"#"
+
n
,
s
.
helper
.
isUndefined
(
t
.
gUrls
[
n
]))
return
e
;
o
=
t
.
gUrls
[
n
],
s
.
helper
.
isUndefined
(
t
.
gTitles
[
n
])
||
(
c
=
t
.
gTitles
[
n
])}
var
u
=
'<a href="'
+
(
o
=
o
.
replace
(
s
.
helper
.
regexes
.
asteriskDashAndColon
,
s
.
helper
.
escapeCharactersCallback
))
+
'"'
;
return
""
!==
c
&&
null
!==
c
&&
(
u
+=
' title="'
+
(
c
=
(
c
=
c
.
replace
(
/"/g
,
"""
)).
replace
(
s
.
helper
.
regexes
.
asteriskDashAndColon
,
s
.
helper
.
escapeCharactersCallback
))
+
'"'
),
r
.
openLinksInNewWindow
&&!
/^#/
.
test
(
o
)
&&
(
u
+=
' rel="noopener noreferrer" target="¨E95Eblank"'
),
u
+=
">"
+
a
+
"</a>"
};
return
e
=
(
e
=
(
e
=
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"anchors.before"
,
e
,
r
,
t
)).
replace
(
/\[((?:\[[^\]]*]|[^\[\]])*)] ?(?:\n *)?\[(.*?)]()()()()/g
,
a
)).
replace
(
/\[((?:\[[^\]]*]|[^\[\]])*)]()[ \t]*\([ \t]?<([^>]*)>(?:[ \t]*((["'])([^"]*?)\5))?[ \t]?\)/g
,
a
)).
replace
(
/\[((?:\[[^\]]*]|[^\[\]])*)]()[ \t]*\([ \t]?<?([\S]+?(?:\([\S]*?\)[\S]*?)?)>?(?:[ \t]*((["'])([^"]*?)\5))?[ \t]?\)/g
,
a
)).
replace
(
/\[([^\[\]]+)]()()()()()/g
,
a
),
r
.
ghMentions
&&
(
e
=
e
.
replace
(
/(^|\s)(\\)?(@([a-z\d]+(?:[a-z\d.-]+?[a-z\d]+)*))/gim
,(
function
(
e
,
t
,
a
,
n
,
o
){
if
(
"\\"
===
a
)
return
t
+
n
;
if
(
!
s
.
helper
.
isString
(
r
.
ghMentionsLink
))
throw
new
Error
(
"ghMentionsLink option must be a string"
);
var
i
=
r
.
ghMentionsLink
.
replace
(
/\{u}/g
,
o
),
l
=
""
;
return
r
.
openLinksInNewWindow
&&
(
l
=
' rel="noopener noreferrer" target="¨E95Eblank"'
),
t
+
'<a href="'
+
i
+
'"'
+
l
+
">"
+
n
+
"</a>"
}))),
e
=
t
.
converter
.
_dispatch
(
"anchors.after"
,
e
,
r
,
t
)}));
var
_
=
/([*~_]+|\b)(((https?|ftp|dict):\/\/|www\.)[^'">\s]+?\.[^'">\s]+?)()(\1)?(?=\s|$)(?!["<>])/gi
,
g
=
/([*~_]+|\b)(((https?|ftp|dict):\/\/|www\.)[^'">\s]+\.[^'">\s]+?)([.!?,()\[\]])?(\1)?(?=\s|$)(?!["<>])/gi
,
m
=
/()<(((https?|ftp|dict):\/\/|www\.)[^'">\s]+)()>()/gi
,
f
=
/(^|\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?=$|\s)/gim
,
b
=
/<()(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi
,
w
=
function
(
e
){
"use strict"
;
return
function
(
r
,
t
,
a
,
n
,
o
,
i
,
l
){
var
c
=
a
=
a
.
replace
(
s
.
helper
.
regexes
.
asteriskDashAndColon
,
s
.
helper
.
escapeCharactersCallback
),
u
=
""
,
d
=
""
,
p
=
t
||
""
,
h
=
l
||
""
;
return
/^www\./i
.
test
(
a
)
&&
(
a
=
a
.
replace
(
/^www\./i
,
"http://www."
)),
e
.
excludeTrailingPunctuationFromURLs
&&
i
&&
(
u
=
i
),
e
.
openLinksInNewWindow
&&
(
d
=
' rel="noopener noreferrer" target="¨E95Eblank"'
),
p
+
'<a href="'
+
a
+
'"'
+
d
+
">"
+
c
+
"</a>"
+
u
+
h
}},
k
=
function
(
e
,
r
){
"use strict"
;
return
function
(
t
,
a
,
n
){
var
o
=
"mailto:"
;
return
a
=
a
||
""
,
n
=
s
.
subParser
(
"unescapeSpecialChars"
)(
n
,
e
,
r
),
e
.
encodeEmails
?
(
o
=
s
.
helper
.
encodeEmailAddress
(
o
+
n
),
n
=
s
.
helper
.
encodeEmailAddress
(
n
))
:
o
+=
n
,
a
+
'<a href="'
+
o
+
'">'
+
n
+
"</a>"
}};
s
.
subParser
(
"autoLinks"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
e
=
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"autoLinks.before"
,
e
,
r
,
t
)).
replace
(
m
,
w
(
r
))).
replace
(
b
,
k
(
r
,
t
)),
e
=
t
.
converter
.
_dispatch
(
"autoLinks.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"simplifiedAutoLinks"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
r
.
simplifiedAutoLink
?
(
e
=
t
.
converter
.
_dispatch
(
"simplifiedAutoLinks.before"
,
e
,
r
,
t
),
e
=
(
e
=
r
.
excludeTrailingPunctuationFromURLs
?
e
.
replace
(
g
,
w
(
r
))
:
e
.
replace
(
_
,
w
(
r
))).
replace
(
f
,
k
(
r
,
t
)),
e
=
t
.
converter
.
_dispatch
(
"simplifiedAutoLinks.after"
,
e
,
r
,
t
))
:
e
})),
s
.
subParser
(
"blockGamut"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
e
=
t
.
converter
.
_dispatch
(
"blockGamut.before"
,
e
,
r
,
t
),
e
=
s
.
subParser
(
"blockQuotes"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"headers"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"horizontalRule"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"lists"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"codeBlocks"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"tables"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"hashHTMLBlocks"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"paragraphs"
)(
e
,
r
,
t
),
e
=
t
.
converter
.
_dispatch
(
"blockGamut.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"blockQuotes"
,(
function
(
e
,
r
,
t
){
"use strict"
;
e
=
t
.
converter
.
_dispatch
(
"blockQuotes.before"
,
e
,
r
,
t
),
e
+=
"\n\n"
;
var
a
=
/(^ {0,3}>[ \t]?.+\n(.+\n)*\n*)+/gm
;
return
r
.
splitAdjacentBlockquotes
&&
(
a
=
/^ {0,3}>[\s\S]*?(?:\n\n)/gm
),
e
=
e
.
replace
(
a
,(
function
(
e
){
return
e
=
(
e
=
(
e
=
e
.
replace
(
/^[ \t]*>[ \t]?/gm
,
""
)).
replace
(
/¨0/g
,
""
)).
replace
(
/^[ \t]+$/gm
,
""
),
e
=
s
.
subParser
(
"githubCodeBlocks"
)(
e
,
r
,
t
),
e
=
(
e
=
(
e
=
s
.
subParser
(
"blockGamut"
)(
e
,
r
,
t
)).
replace
(
/(^|\n)/g
,
"$1 "
)).
replace
(
/(\s*<pre>[^\r]+?<\/pre>)/gm
,(
function
(
e
,
r
){
var
t
=
r
;
return
t
=
(
t
=
t
.
replace
(
/^ /gm
,
"¨0"
)).
replace
(
/¨0/g
,
""
)})),
s
.
subParser
(
"hashBlock"
)(
"<blockquote>\n"
+
e
+
"\n</blockquote>"
,
r
,
t
)})),
e
=
t
.
converter
.
_dispatch
(
"blockQuotes.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"codeBlocks"
,(
function
(
e
,
r
,
t
){
"use strict"
;
e
=
t
.
converter
.
_dispatch
(
"codeBlocks.before"
,
e
,
r
,
t
);
return
e
=
(
e
=
(
e
+=
"¨0"
).
replace
(
/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=¨0))/g
,(
function
(
e
,
a
,
n
){
var
o
=
a
,
i
=
n
,
l
=
"\n"
;
return
o
=
s
.
subParser
(
"outdent"
)(
o
,
r
,
t
),
o
=
s
.
subParser
(
"encodeCode"
)(
o
,
r
,
t
),
o
=
(
o
=
(
o
=
s
.
subParser
(
"detab"
)(
o
,
r
,
t
)).
replace
(
/^\n+/g
,
""
)).
replace
(
/\n+$/g
,
""
),
r
.
omitExtraWLInCodeBlocks
&&
(
l
=
""
),
o
=
"<pre><code>"
+
o
+
l
+
"</code></pre>"
,
s
.
subParser
(
"hashBlock"
)(
o
,
r
,
t
)
+
i
}))).
replace
(
/¨0/
,
""
),
e
=
t
.
converter
.
_dispatch
(
"codeBlocks.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"codeSpans"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
void
0
===
(
e
=
t
.
converter
.
_dispatch
(
"codeSpans.before"
,
e
,
r
,
t
))
&&
(
e
=
""
),
e
=
e
.
replace
(
/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm
,(
function
(
e
,
a
,
n
,
o
){
var
i
=
o
;
return
i
=
(
i
=
i
.
replace
(
/^([ \t]*)/g
,
""
)).
replace
(
/[ \t]*$/g
,
""
),
i
=
a
+
"<code>"
+
(
i
=
s
.
subParser
(
"encodeCode"
)(
i
,
r
,
t
))
+
"</code>"
,
i
=
s
.
subParser
(
"hashHTMLSpans"
)(
i
,
r
,
t
)})),
e
=
t
.
converter
.
_dispatch
(
"codeSpans.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"completeHTMLDocument"
,(
function
(
e
,
r
,
t
){
"use strict"
;
if
(
!
r
.
completeHTMLDocument
)
return
e
;
e
=
t
.
converter
.
_dispatch
(
"completeHTMLDocument.before"
,
e
,
r
,
t
);
var
a
=
"html"
,
n
=
"<!DOCTYPE HTML>\n"
,
s
=
""
,
o
=
'<meta charset="utf-8">\n'
,
i
=
""
,
l
=
""
;
for
(
var
c
in
void
0
!==
t
.
metadata
.
parsed
.
doctype
&&
(
n
=
"<!DOCTYPE "
+
t
.
metadata
.
parsed
.
doctype
+
">\n"
,
"html"
!==
(
a
=
t
.
metadata
.
parsed
.
doctype
.
toString
().
toLowerCase
())
&&
"html5"
!==
a
||
(
o
=
'<meta charset="utf-8">'
)),
t
.
metadata
.
parsed
)
if
(
t
.
metadata
.
parsed
.
hasOwnProperty
(
c
))
switch
(
c
.
toLowerCase
()){
case
"doctype"
:
break
;
case
"title"
:
s
=
"<title>"
+
t
.
metadata
.
parsed
.
title
+
"</title>\n"
;
break
;
case
"charset"
:
o
=
"html"
===
a
||
"html5"
===
a
?
'<meta charset="'
+
t
.
metadata
.
parsed
.
charset
+
'">\n'
:
'<meta name="charset" content="'
+
t
.
metadata
.
parsed
.
charset
+
'">\n'
;
break
;
case
"language"
:
case
"lang"
:
i
=
' lang="'
+
t
.
metadata
.
parsed
[
c
]
+
'"'
,
l
+=
'<meta name="'
+
c
+
'" content="'
+
t
.
metadata
.
parsed
[
c
]
+
'">\n'
;
break
;
default
:
l
+=
'<meta name="'
+
c
+
'" content="'
+
t
.
metadata
.
parsed
[
c
]
+
'">\n'
}
return
e
=
n
+
"<html"
+
i
+
">\n<head>\n"
+
s
+
o
+
l
+
"</head>\n<body>\n"
+
e
.
trim
()
+
"\n</body>\n</html>"
,
e
=
t
.
converter
.
_dispatch
(
"completeHTMLDocument.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"detab"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
e
=
(
e
=
(
e
=
(
e
=
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"detab.before"
,
e
,
r
,
t
)).
replace
(
/\t(?=\t)/g
,
" "
)).
replace
(
/\t/g
,
"¨A¨B"
)).
replace
(
/¨B(.+?)¨A/g
,(
function
(
e
,
r
){
for
(
var
t
=
r
,
a
=
4
-
t
.
length
%
4
,
n
=
0
;
n
<
a
;
n
++
)
t
+=
" "
;
return
t
}))).
replace
(
/¨A/g
,
" "
)).
replace
(
/¨B/g
,
""
),
e
=
t
.
converter
.
_dispatch
(
"detab.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"ellipsis"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
r
.
ellipsis
?
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"ellipsis.before"
,
e
,
r
,
t
)).
replace
(
/\.\.\./g
,
"…"
),
e
=
t
.
converter
.
_dispatch
(
"ellipsis.after"
,
e
,
r
,
t
))
:
e
})),
s
.
subParser
(
"emoji"
,(
function
(
e
,
r
,
t
){
"use strict"
;
if
(
!
r
.
emoji
)
return
e
;
return
e
=
(
e
=
t
.
converter
.
_dispatch
(
"emoji.before"
,
e
,
r
,
t
)).
replace
(
/:([\S]+?):/g
,(
function
(
e
,
r
){
return
s
.
helper
.
emojis
.
hasOwnProperty
(
r
)
?
s
.
helper
.
emojis
[
r
]
:
e
})),
e
=
t
.
converter
.
_dispatch
(
"emoji.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"encodeAmpsAndAngles"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
e
=
(
e
=
(
e
=
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"encodeAmpsAndAngles.before"
,
e
,
r
,
t
)).
replace
(
/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g
,
"&"
)).
replace
(
/<(?![a-z\/?$!])/gi
,
"<"
)).
replace
(
/</g
,
"<"
)).
replace
(
/>/g
,
">"
),
e
=
t
.
converter
.
_dispatch
(
"encodeAmpsAndAngles.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"encodeBackslashEscapes"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
e
=
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"encodeBackslashEscapes.before"
,
e
,
r
,
t
)).
replace
(
/\\(\\)/g
,
s
.
helper
.
escapeCharactersCallback
)).
replace
(
/\\([`*_{}\[\]()>#+.!~=|:-])/g
,
s
.
helper
.
escapeCharactersCallback
),
e
=
t
.
converter
.
_dispatch
(
"encodeBackslashEscapes.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"encodeCode"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
e
=
(
e
=
t
.
converter
.
_dispatch
(
"encodeCode.before"
,
e
,
r
,
t
)).
replace
(
/&/g
,
"&"
).
replace
(
/</g
,
"<"
).
replace
(
/>/g
,
">"
).
replace
(
/([*_{}\[\]\\=~-])/g
,
s
.
helper
.
escapeCharactersCallback
),
e
=
t
.
converter
.
_dispatch
(
"encodeCode.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"escapeSpecialCharsWithinTagAttributes"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
e
=
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"escapeSpecialCharsWithinTagAttributes.before"
,
e
,
r
,
t
)).
replace
(
/<\/?[a-z\d_:-]+(?:[\s]+[\s\S]+?)?>/gi
,(
function
(
e
){
return
e
.
replace
(
/(.)<\/?code>(?=.)/g
,
"$1`"
).
replace
(
/([\\`*_~=|])/g
,
s
.
helper
.
escapeCharactersCallback
)}))).
replace
(
/<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi
,(
function
(
e
){
return
e
.
replace
(
/([\\`*_~=|])/g
,
s
.
helper
.
escapeCharactersCallback
)})),
e
=
t
.
converter
.
_dispatch
(
"escapeSpecialCharsWithinTagAttributes.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"githubCodeBlocks"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
r
.
ghCodeBlocks
?
(
e
=
t
.
converter
.
_dispatch
(
"githubCodeBlocks.before"
,
e
,
r
,
t
),
e
=
(
e
=
(
e
+=
"¨0"
).
replace
(
/(?:^|\n)(?: {0,3})(```+|~~~+)(?: *)([^\s`~]*)\n([\s\S]*?)\n(?: {0,3})\1/g
,(
function
(
e
,
a
,
n
,
o
){
var
i
=
r
.
omitExtraWLInCodeBlocks
?
""
:
"\n"
;
return
o
=
s
.
subParser
(
"encodeCode"
)(
o
,
r
,
t
),
o
=
"<pre><code"
+
(
n
?
' class="'
+
n
+
" language-"
+
n
+
'"'
:
""
)
+
">"
+
(
o
=
(
o
=
(
o
=
s
.
subParser
(
"detab"
)(
o
,
r
,
t
)).
replace
(
/^\n+/g
,
""
)).
replace
(
/\n+$/g
,
""
))
+
i
+
"</code></pre>"
,
o
=
s
.
subParser
(
"hashBlock"
)(
o
,
r
,
t
),
"\n\n¨G"
+
(
t
.
ghCodeBlocks
.
push
({
text
:
e
,
codeblock
:
o
})
-
1
)
+
"G\n\n"
}))).
replace
(
/¨0/
,
""
),
t
.
converter
.
_dispatch
(
"githubCodeBlocks.after"
,
e
,
r
,
t
))
:
e
})),
s
.
subParser
(
"hashBlock"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
e
=
(
e
=
t
.
converter
.
_dispatch
(
"hashBlock.before"
,
e
,
r
,
t
)).
replace
(
/(^\n+|\n+$)/g
,
""
),
e
=
"\n\n¨K"
+
(
t
.
gHtmlBlocks
.
push
(
e
)
-
1
)
+
"K\n\n"
,
e
=
t
.
converter
.
_dispatch
(
"hashBlock.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"hashCodeTags"
,(
function
(
e
,
r
,
t
){
"use strict"
;
e
=
t
.
converter
.
_dispatch
(
"hashCodeTags.before"
,
e
,
r
,
t
);
return
e
=
s
.
helper
.
replaceRecursiveRegExp
(
e
,(
function
(
e
,
a
,
n
,
o
){
var
i
=
n
+
s
.
subParser
(
"encodeCode"
)(
a
,
r
,
t
)
+
o
;
return
"¨C"
+
(
t
.
gHtmlSpans
.
push
(
i
)
-
1
)
+
"C"
}),
"<code\\b[^>]*>"
,
"</code>"
,
"gim"
),
e
=
t
.
converter
.
_dispatch
(
"hashCodeTags.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"hashElement"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
function
(
e
,
r
){
var
a
=
r
;
return
a
=
(
a
=
(
a
=
a
.
replace
(
/\n\n/g
,
"\n"
)).
replace
(
/^\n/
,
""
)).
replace
(
/\n+$/g
,
""
),
a
=
"\n\n¨K"
+
(
t
.
gHtmlBlocks
.
push
(
a
)
-
1
)
+
"K\n\n"
}})),
s
.
subParser
(
"hashHTMLBlocks"
,(
function
(
e
,
r
,
t
){
"use strict"
;
e
=
t
.
converter
.
_dispatch
(
"hashHTMLBlocks.before"
,
e
,
r
,
t
);
var
a
=
[
"pre"
,
"div"
,
"h1"
,
"h2"
,
"h3"
,
"h4"
,
"h5"
,
"h6"
,
"blockquote"
,
"table"
,
"dl"
,
"ol"
,
"ul"
,
"script"
,
"noscript"
,
"form"
,
"fieldset"
,
"iframe"
,
"math"
,
"style"
,
"section"
,
"header"
,
"footer"
,
"nav"
,
"article"
,
"aside"
,
"address"
,
"audio"
,
"canvas"
,
"figure"
,
"hgroup"
,
"output"
,
"video"
,
"p"
],
n
=
function
(
e
,
r
,
a
,
n
){
var
s
=
e
;
return
-
1
!==
a
.
search
(
/\bmarkdown\b/
)
&&
(
s
=
a
+
t
.
converter
.
makeHtml
(
r
)
+
n
),
"\n\n¨K"
+
(
t
.
gHtmlBlocks
.
push
(
s
)
-
1
)
+
"K\n\n"
};
r
.
backslashEscapesHTMLTags
&&
(
e
=
e
.
replace
(
/\\<(\/?[^>]+?)>/g
,(
function
(
e
,
r
){
return
"<"
+
r
+
">"
})));
for
(
var
o
=
0
;
o
<
a
.
length
;
++
o
)
for
(
var
i
,
l
=
new
RegExp
(
"^ {0,3}(<"
+
a
[
o
]
+
"\\b[^>]*>)"
,
"im"
),
c
=
"<"
+
a
[
o
]
+
"\\b[^>]*>"
,
u
=
"</"
+
a
[
o
]
+
">"
;
-
1
!==
(
i
=
s
.
helper
.
regexIndexOf
(
e
,
l
));){
var
d
=
s
.
helper
.
splitAtIndex
(
e
,
i
),
p
=
s
.
helper
.
replaceRecursiveRegExp
(
d
[
1
],
n
,
c
,
u
,
"im"
);
if
(
p
===
d
[
1
])
break
;
e
=
d
[
0
].
concat
(
p
)}
return
e
=
e
.
replace
(
/(\n {0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g
,
s
.
subParser
(
"hashElement"
)(
e
,
r
,
t
)),
e
=
(
e
=
s
.
helper
.
replaceRecursiveRegExp
(
e
,(
function
(
e
){
return
"\n\n¨K"
+
(
t
.
gHtmlBlocks
.
push
(
e
)
-
1
)
+
"K\n\n"
}),
"^ {0,3}\x3c!--"
,
"--\x3e"
,
"gm"
)).
replace
(
/(?:\n\n)( {0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g
,
s
.
subParser
(
"hashElement"
)(
e
,
r
,
t
)),
e
=
t
.
converter
.
_dispatch
(
"hashHTMLBlocks.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"hashHTMLSpans"
,(
function
(
e
,
r
,
t
){
"use strict"
;
function
a
(
e
){
return
"¨C"
+
(
t
.
gHtmlSpans
.
push
(
e
)
-
1
)
+
"C"
}
return
e
=
(
e
=
(
e
=
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"hashHTMLSpans.before"
,
e
,
r
,
t
)).
replace
(
/<[^>]+?\/>/gi
,(
function
(
e
){
return
a
(
e
)}))).
replace
(
/<([^>]+?)>[\s\S]*?<\/\1>/g
,(
function
(
e
){
return
a
(
e
)}))).
replace
(
/<([^>]+?)\s[^>]+?>[\s\S]*?<\/\1>/g
,(
function
(
e
){
return
a
(
e
)}))).
replace
(
/<[^>]+?>/gi
,(
function
(
e
){
return
a
(
e
)})),
e
=
t
.
converter
.
_dispatch
(
"hashHTMLSpans.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"unhashHTMLSpans"
,(
function
(
e
,
r
,
t
){
"use strict"
;
e
=
t
.
converter
.
_dispatch
(
"unhashHTMLSpans.before"
,
e
,
r
,
t
);
for
(
var
a
=
0
;
a
<
t
.
gHtmlSpans
.
length
;
++
a
){
for
(
var
n
=
t
.
gHtmlSpans
[
a
],
s
=
0
;
/¨C(\d+)C/
.
test
(
n
);){
var
o
=
RegExp
.
$1
;
if
(
n
=
n
.
replace
(
"¨C"
+
o
+
"C"
,
t
.
gHtmlSpans
[
o
]),
10
===
s
){
console
.
error
(
"maximum nesting of 10 spans reached!!!"
);
break
}
++
s
}
e
=
e
.
replace
(
"¨C"
+
a
+
"C"
,
n
)}
return
e
=
t
.
converter
.
_dispatch
(
"unhashHTMLSpans.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"hashPreCodeTags"
,(
function
(
e
,
r
,
t
){
"use strict"
;
e
=
t
.
converter
.
_dispatch
(
"hashPreCodeTags.before"
,
e
,
r
,
t
);
return
e
=
s
.
helper
.
replaceRecursiveRegExp
(
e
,(
function
(
e
,
a
,
n
,
o
){
var
i
=
n
+
s
.
subParser
(
"encodeCode"
)(
a
,
r
,
t
)
+
o
;
return
"\n\n¨G"
+
(
t
.
ghCodeBlocks
.
push
({
text
:
e
,
codeblock
:
i
})
-
1
)
+
"G\n\n"
}),
"^ {0,3}<pre\\b[^>]*>\\s*<code\\b[^>]*>"
,
"^ {0,3}</code>\\s*</pre>"
,
"gim"
),
e
=
t
.
converter
.
_dispatch
(
"hashPreCodeTags.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"headers"
,(
function
(
e
,
r
,
t
){
"use strict"
;
e
=
t
.
converter
.
_dispatch
(
"headers.before"
,
e
,
r
,
t
);
var
a
=
isNaN
(
parseInt
(
r
.
headerLevelStart
))
?
1
:
parseInt
(
r
.
headerLevelStart
),
n
=
r
.
smoothLivePreview
?
/^(.+)[ \t]*\n={2,}[ \t]*\n+/gm
:
/^(.+)[ \t]*\n=+[ \t]*\n+/gm
,
o
=
r
.
smoothLivePreview
?
/^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm
:
/^(.+)[ \t]*\n-+[ \t]*\n+/gm
;
e
=
(
e
=
e
.
replace
(
n
,(
function
(
e
,
n
){
var
o
=
s
.
subParser
(
"spanGamut"
)(
n
,
r
,
t
),
i
=
r
.
noHeaderId
?
""
:
' id="'
+
l
(
n
)
+
'"'
,
c
=
"<h"
+
a
+
i
+
">"
+
o
+
"</h"
+
a
+
">"
;
return
s
.
subParser
(
"hashBlock"
)(
c
,
r
,
t
)}))).
replace
(
o
,(
function
(
e
,
n
){
var
o
=
s
.
subParser
(
"spanGamut"
)(
n
,
r
,
t
),
i
=
r
.
noHeaderId
?
""
:
' id="'
+
l
(
n
)
+
'"'
,
c
=
a
+
1
,
u
=
"<h"
+
c
+
i
+
">"
+
o
+
"</h"
+
c
+
">"
;
return
s
.
subParser
(
"hashBlock"
)(
u
,
r
,
t
)}));
var
i
=
r
.
requireSpaceBeforeHeadingText
?
/^(#{1,6})[ \t]+(.+?)[ \t]*#*\n+/gm
:
/^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm
;
function
l
(
e
){
var
a
,
n
;
if
(
r
.
customizedHeaderId
){
var
o
=
e
.
match
(
/\{([^{]+?)}\s*$/
);
o
&&
o
[
1
]
&&
(
e
=
o
[
1
])}
return
a
=
e
,
n
=
s
.
helper
.
isString
(
r
.
prefixHeaderId
)
?
r
.
prefixHeaderId
:!
0
===
r
.
prefixHeaderId
?
"section-"
:
""
,
r
.
rawPrefixHeaderId
||
(
a
=
n
+
a
),
a
=
r
.
ghCompatibleHeaderId
?
a
.
replace
(
/ /g
,
"-"
).
replace
(
/&/g
,
""
).
replace
(
/¨T/g
,
""
).
replace
(
/¨D/g
,
""
).
replace
(
/[&+$,\/:;=?@"#{}|^¨~\[\]`\\*)(%.!'<>]/g
,
""
).
toLowerCase
()
:
r
.
rawHeaderId
?
a
.
replace
(
/ /g
,
"-"
).
replace
(
/&/g
,
"&"
).
replace
(
/¨T/g
,
"¨"
).
replace
(
/¨D/g
,
"$"
).
replace
(
/["']/g
,
"-"
).
toLowerCase
()
:
a
.
replace
(
/[^\w]/g
,
""
).
toLowerCase
(),
r
.
rawPrefixHeaderId
&&
(
a
=
n
+
a
),
t
.
hashLinkCounts
[
a
]
?
a
=
a
+
"-"
+
t
.
hashLinkCounts
[
a
]
++:
t
.
hashLinkCounts
[
a
]
=
1
,
a
}
return
e
=
e
.
replace
(
i
,(
function
(
e
,
n
,
o
){
var
i
=
o
;
r
.
customizedHeaderId
&&
(
i
=
o
.
replace
(
/\s?\{([^{]+?)}\s*$/
,
""
));
var
c
=
s
.
subParser
(
"spanGamut"
)(
i
,
r
,
t
),
u
=
r
.
noHeaderId
?
""
:
' id="'
+
l
(
o
)
+
'"'
,
d
=
a
-
1
+
n
.
length
,
p
=
"<h"
+
d
+
u
+
">"
+
c
+
"</h"
+
d
+
">"
;
return
s
.
subParser
(
"hashBlock"
)(
p
,
r
,
t
)})),
e
=
t
.
converter
.
_dispatch
(
"headers.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"horizontalRule"
,(
function
(
e
,
r
,
t
){
"use strict"
;
e
=
t
.
converter
.
_dispatch
(
"horizontalRule.before"
,
e
,
r
,
t
);
var
a
=
s
.
subParser
(
"hashBlock"
)(
"<hr />"
,
r
,
t
);
return
e
=
(
e
=
(
e
=
e
.
replace
(
/^ {0,2}( ?-){3,}[ \t]*$/gm
,
a
)).
replace
(
/^ {0,2}( ?\*){3,}[ \t]*$/gm
,
a
)).
replace
(
/^ {0,2}( ?_){3,}[ \t]*$/gm
,
a
),
e
=
t
.
converter
.
_dispatch
(
"horizontalRule.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"images"
,(
function
(
e
,
r
,
t
){
"use strict"
;
function
a
(
e
,
r
,
a
,
n
,
o
,
i
,
l
,
c
){
var
u
=
t
.
gUrls
,
d
=
t
.
gTitles
,
p
=
t
.
gDimensions
;
if
(
a
=
a
.
toLowerCase
(),
c
||
(
c
=
""
),
e
.
search
(
/\(<?\s*>? ?(['"].*['"])?\)$/m
)
>-
1
)
n
=
""
;
else
if
(
""
===
n
||
null
===
n
){
if
(
""
!==
a
&&
null
!==
a
||
(
a
=
r
.
toLowerCase
().
replace
(
/ ?\n/g
,
" "
)),
n
=
"#"
+
a
,
s
.
helper
.
isUndefined
(
u
[
a
]))
return
e
;
n
=
u
[
a
],
s
.
helper
.
isUndefined
(
d
[
a
])
||
(
c
=
d
[
a
]),
s
.
helper
.
isUndefined
(
p
[
a
])
||
(
o
=
p
[
a
].
width
,
i
=
p
[
a
].
height
)}
r
=
r
.
replace
(
/"/g
,
"""
).
replace
(
s
.
helper
.
regexes
.
asteriskDashAndColon
,
s
.
helper
.
escapeCharactersCallback
);
var
h
=
'<img src="'
+
(
n
=
n
.
replace
(
s
.
helper
.
regexes
.
asteriskDashAndColon
,
s
.
helper
.
escapeCharactersCallback
))
+
'" alt="'
+
r
+
'"'
;
return
c
&&
s
.
helper
.
isString
(
c
)
&&
(
h
+=
' title="'
+
(
c
=
c
.
replace
(
/"/g
,
"""
).
replace
(
s
.
helper
.
regexes
.
asteriskDashAndColon
,
s
.
helper
.
escapeCharactersCallback
))
+
'"'
),
o
&&
i
&&
(
h
+=
' width="'
+
(
o
=
"*"
===
o
?
"auto"
:
o
)
+
'"'
,
h
+=
' height="'
+
(
i
=
"*"
===
i
?
"auto"
:
i
)
+
'"'
),
h
+=
" />"
}
return
e
=
(
e
=
(
e
=
(
e
=
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"images.before"
,
e
,
r
,
t
)).
replace
(
/!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]()()()()()/g
,
a
)).
replace
(
/!\[([^\]]*?)][ \t]*()\([ \t]?<?(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g
,(
function
(
e
,
r
,
t
,
n
,
s
,
o
,
i
,
l
){
return
a
(
e
,
r
,
t
,
n
=
n
.
replace
(
/\s/g
,
""
),
s
,
o
,
i
,
l
)}))).
replace
(
/!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g
,
a
)).
replace
(
/!\[([^\]]*?)][ \t]*()\([ \t]?<?([\S]+?(?:\([\S]*?\)[\S]*?)?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g
,
a
)).
replace
(
/!\[([^\[\]]+)]()()()()()/g
,
a
),
e
=
t
.
converter
.
_dispatch
(
"images.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"italicsAndBold"
,(
function
(
e
,
r
,
t
){
"use strict"
;
function
a
(
e
,
r
,
t
){
return
r
+
e
+
t
}
return
e
=
t
.
converter
.
_dispatch
(
"italicsAndBold.before"
,
e
,
r
,
t
),
e
=
r
.
literalMidWordUnderscores
?
(
e
=
(
e
=
e
.
replace
(
/\b___(\S[\s\S]*?)___\b/g
,(
function
(
e
,
r
){
return
a
(
r
,
"<strong><em>"
,
"</em></strong>"
)}))).
replace
(
/\b__(\S[\s\S]*?)__\b/g
,(
function
(
e
,
r
){
return
a
(
r
,
"<strong>"
,
"</strong>"
)}))).
replace
(
/\b_(\S[\s\S]*?)_\b/g
,(
function
(
e
,
r
){
return
a
(
r
,
"<em>"
,
"</em>"
)}))
:
(
e
=
(
e
=
e
.
replace
(
/___(\S[\s\S]*?)___/g
,(
function
(
e
,
r
){
return
/\S$/
.
test
(
r
)
?
a
(
r
,
"<strong><em>"
,
"</em></strong>"
)
:
e
}))).
replace
(
/__(\S[\s\S]*?)__/g
,(
function
(
e
,
r
){
return
/\S$/
.
test
(
r
)
?
a
(
r
,
"<strong>"
,
"</strong>"
)
:
e
}))).
replace
(
/_([^\s_][\s\S]*?)_/g
,(
function
(
e
,
r
){
return
/\S$/
.
test
(
r
)
?
a
(
r
,
"<em>"
,
"</em>"
)
:
e
})),
e
=
r
.
literalMidWordAsterisks
?
(
e
=
(
e
=
e
.
replace
(
/([^*]|^)\B\*\*\*(\S[\s\S]*?)\*\*\*\B(?!\*)/g
,(
function
(
e
,
r
,
t
){
return
a
(
t
,
r
+
"<strong><em>"
,
"</em></strong>"
)}))).
replace
(
/([^*]|^)\B\*\*(\S[\s\S]*?)\*\*\B(?!\*)/g
,(
function
(
e
,
r
,
t
){
return
a
(
t
,
r
+
"<strong>"
,
"</strong>"
)}))).
replace
(
/([^*]|^)\B\*(\S[\s\S]*?)\*\B(?!\*)/g
,(
function
(
e
,
r
,
t
){
return
a
(
t
,
r
+
"<em>"
,
"</em>"
)}))
:
(
e
=
(
e
=
e
.
replace
(
/\*\*\*(\S[\s\S]*?)\*\*\*/g
,(
function
(
e
,
r
){
return
/\S$/
.
test
(
r
)
?
a
(
r
,
"<strong><em>"
,
"</em></strong>"
)
:
e
}))).
replace
(
/\*\*(\S[\s\S]*?)\*\*/g
,(
function
(
e
,
r
){
return
/\S$/
.
test
(
r
)
?
a
(
r
,
"<strong>"
,
"</strong>"
)
:
e
}))).
replace
(
/\*([^\s*][\s\S]*?)\*/g
,(
function
(
e
,
r
){
return
/\S$/
.
test
(
r
)
?
a
(
r
,
"<em>"
,
"</em>"
)
:
e
})),
e
=
t
.
converter
.
_dispatch
(
"italicsAndBold.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"lists"
,(
function
(
e
,
r
,
t
){
"use strict"
;
function
a
(
e
,
a
){
t
.
gListLevel
++
,
e
=
e
.
replace
(
/\n{2,}$/
,
"\n"
);
var
n
=
/(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0| {0,3}([*+-]|\d+[.])[ \t]+))/gm
,
o
=
/\n[ \t]*\n(?!¨0)/
.
test
(
e
+=
"¨0"
);
return
r
.
disableForced4SpacesIndentedSublists
&&
(
n
=
/(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0|\2([*+-]|\d+[.])[ \t]+))/gm
),
e
=
(
e
=
e
.
replace
(
n
,(
function
(
e
,
a
,
n
,
i
,
l
,
c
,
u
){
u
=
u
&&
""
!==
u
.
trim
();
var
d
=
s
.
subParser
(
"outdent"
)(
l
,
r
,
t
),
p
=
""
;
return
c
&&
r
.
tasklists
&&
(
p
=
' class="task-list-item" style="list-style-type: none;"'
,
d
=
d
.
replace
(
/^[ \t]*\[(x|X| )?]/m
,(
function
(){
var
e
=
'<input type="checkbox" disabled style="margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;"'
;
return
u
&&
(
e
+=
" checked"
),
e
+=
">"
}))),
d
=
d
.
replace
(
/^([-*+]|\d\.)[ \t]+[\S\n ]*/g
,(
function
(
e
){
return
"¨A"
+
e
})),
a
||
d
.
search
(
/\n{2,}/
)
>-
1
?
(
d
=
s
.
subParser
(
"githubCodeBlocks"
)(
d
,
r
,
t
),
d
=
s
.
subParser
(
"blockGamut"
)(
d
,
r
,
t
))
:
(
d
=
(
d
=
s
.
subParser
(
"lists"
)(
d
,
r
,
t
)).
replace
(
/\n$/
,
""
),
d
=
(
d
=
s
.
subParser
(
"hashHTMLBlocks"
)(
d
,
r
,
t
)).
replace
(
/\n\n+/g
,
"\n\n"
),
d
=
o
?
s
.
subParser
(
"paragraphs"
)(
d
,
r
,
t
)
:
s
.
subParser
(
"spanGamut"
)(
d
,
r
,
t
)),
d
=
"<li"
+
p
+
">"
+
(
d
=
d
.
replace
(
"¨A"
,
""
))
+
"</li>\n"
}))).
replace
(
/¨0/g
,
""
),
t
.
gListLevel
--
,
a
&&
(
e
=
e
.
replace
(
/\s+$/
,
""
)),
e
}
function
n
(
e
,
r
){
if
(
"ol"
===
r
){
var
t
=
e
.
match
(
/^ *(\d+)\./
);
if
(
t
&&
"1"
!==
t
[
1
])
return
' start="'
+
t
[
1
]
+
'"'
}
return
""
}
function
o
(
e
,
t
,
s
){
var
o
=
r
.
disableForced4SpacesIndentedSublists
?
/^ ?\d+\.[ \t]/gm
:
/^ {0,3}\d+\.[ \t]/gm
,
i
=
r
.
disableForced4SpacesIndentedSublists
?
/^ ?[*+-][ \t]/gm
:
/^ {0,3}[*+-][ \t]/gm
,
l
=
"ul"
===
t
?
o
:
i
,
c
=
""
;
if
(
-
1
!==
e
.
search
(
l
))
!
function
r
(
u
){
var
d
=
u
.
search
(
l
),
p
=
n
(
e
,
t
);
-
1
!==
d
?
(
c
+=
"\n\n<"
+
t
+
p
+
">\n"
+
a
(
u
.
slice
(
0
,
d
),
!!
s
)
+
"</"
+
t
+
">\n"
,
l
=
"ul"
===
(
t
=
"ul"
===
t
?
"ol"
:
"ul"
)
?
o
:
i
,
r
(
u
.
slice
(
d
)))
:
c
+=
"\n\n<"
+
t
+
p
+
">\n"
+
a
(
u
,
!!
s
)
+
"</"
+
t
+
">\n"
}(
e
);
else
{
var
u
=
n
(
e
,
t
);
c
=
"\n\n<"
+
t
+
u
+
">\n"
+
a
(
e
,
!!
s
)
+
"</"
+
t
+
">\n"
}
return
c
}
return
e
=
t
.
converter
.
_dispatch
(
"lists.before"
,
e
,
r
,
t
),
e
+=
"¨0"
,
e
=
(
e
=
t
.
gListLevel
?
e
.
replace
(
/^(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm
,(
function
(
e
,
r
,
t
){
return
o
(
r
,
t
.
search
(
/[*+-]/g
)
>-
1
?
"ul"
:
"ol"
,
!
0
)}))
:
e
.
replace
(
/(\n\n|^\n?)(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm
,(
function
(
e
,
r
,
t
,
a
){
return
o
(
t
,
a
.
search
(
/[*+-]/g
)
>-
1
?
"ul"
:
"ol"
,
!
1
)}))).
replace
(
/¨0/
,
""
),
e
=
t
.
converter
.
_dispatch
(
"lists.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"metadata"
,(
function
(
e
,
r
,
t
){
"use strict"
;
if
(
!
r
.
metadata
)
return
e
;
function
a
(
e
){
t
.
metadata
.
raw
=
e
,(
e
=
(
e
=
e
.
replace
(
/&/g
,
"&"
).
replace
(
/"/g
,
"""
)).
replace
(
/\n {4}/g
,
" "
)).
replace
(
/^([\S ]+): +([\s\S]+?)$/gm
,(
function
(
e
,
r
,
a
){
return
t
.
metadata
.
parsed
[
r
]
=
a
,
""
}))}
return
e
=
(
e
=
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"metadata.before"
,
e
,
r
,
t
)).
replace
(
/^\s*«««+(\S*?)\n([\s\S]+?)\n»»»+\n/
,(
function
(
e
,
r
,
t
){
return
a
(
t
),
"¨M"
}))).
replace
(
/^\s*---+(\S*?)\n([\s\S]+?)\n---+\n/
,(
function
(
e
,
r
,
n
){
return
r
&&
(
t
.
metadata
.
format
=
r
),
a
(
n
),
"¨M"
}))).
replace
(
/¨M/g
,
""
),
e
=
t
.
converter
.
_dispatch
(
"metadata.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"outdent"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
e
=
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"outdent.before"
,
e
,
r
,
t
)).
replace
(
/^(\t|[ ]{1,4})/gm
,
"¨0"
)).
replace
(
/¨0/g
,
""
),
e
=
t
.
converter
.
_dispatch
(
"outdent.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"paragraphs"
,(
function
(
e
,
r
,
t
){
"use strict"
;
for
(
var
a
=
(
e
=
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"paragraphs.before"
,
e
,
r
,
t
)).
replace
(
/^\n+/g
,
""
)).
replace
(
/\n+$/g
,
""
)).
split
(
/\n{2,}/g
),
n
=
[],
o
=
a
.
length
,
i
=
0
;
i
<
o
;
i
++
){
var
l
=
a
[
i
];
l
.
search
(
/¨(K|G)(\d+)\1/g
)
>=
0
?
n
.
push
(
l
)
:
l
.
search
(
/\S/
)
>=
0
&&
(
l
=
(
l
=
s
.
subParser
(
"spanGamut"
)(
l
,
r
,
t
)).
replace
(
/^([ \t]*)/g
,
"<p>"
),
l
+=
"</p>"
,
n
.
push
(
l
))}
for
(
o
=
n
.
length
,
i
=
0
;
i
<
o
;
i
++
){
for
(
var
c
=
""
,
u
=
n
[
i
],
d
=!
1
;
/¨(K|G)(\d+)\1/
.
test
(
u
);){
var
p
=
RegExp
.
$1
,
h
=
RegExp
.
$2
;
c
=
(
c
=
"K"
===
p
?
t
.
gHtmlBlocks
[
h
]
:
d
?
s
.
subParser
(
"encodeCode"
)(
t
.
ghCodeBlocks
[
h
].
text
,
r
,
t
)
:
t
.
ghCodeBlocks
[
h
].
codeblock
).
replace
(
/\$/g
,
"$$$$"
),
u
=
u
.
replace
(
/(\n\n)?¨(K|G)\d+\2(\n\n)?/
,
c
),
/^<pre\b[^>]*>\s*<code\b[^>]*>/
.
test
(
u
)
&&
(
d
=!
0
)}
n
[
i
]
=
u
}
return
e
=
(
e
=
(
e
=
n
.
join
(
"\n"
)).
replace
(
/^\n+/g
,
""
)).
replace
(
/\n+$/g
,
""
),
t
.
converter
.
_dispatch
(
"paragraphs.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"runExtension"
,(
function
(
e
,
r
,
t
,
a
){
"use strict"
;
if
(
e
.
filter
)
r
=
e
.
filter
(
r
,
a
.
converter
,
t
);
else
if
(
e
.
regex
){
var
n
=
e
.
regex
;
n
instanceof
RegExp
||
(
n
=
new
RegExp
(
n
,
"g"
)),
r
=
r
.
replace
(
n
,
e
.
replace
)}
return
r
})),
s
.
subParser
(
"spanGamut"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
e
=
t
.
converter
.
_dispatch
(
"spanGamut.before"
,
e
,
r
,
t
),
e
=
s
.
subParser
(
"codeSpans"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"escapeSpecialCharsWithinTagAttributes"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"encodeBackslashEscapes"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"images"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"anchors"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"autoLinks"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"simplifiedAutoLinks"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"emoji"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"underline"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"italicsAndBold"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"strikethrough"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"ellipsis"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"hashHTMLSpans"
)(
e
,
r
,
t
),
e
=
s
.
subParser
(
"encodeAmpsAndAngles"
)(
e
,
r
,
t
),
r
.
simpleLineBreaks
?
/\n\n¨K/
.
test
(
e
)
||
(
e
=
e
.
replace
(
/\n+/g
,
"<br />\n"
))
:
e
=
e
.
replace
(
/ +\n/g
,
"<br />\n"
),
e
=
t
.
converter
.
_dispatch
(
"spanGamut.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"strikethrough"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
r
.
strikethrough
&&
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"strikethrough.before"
,
e
,
r
,
t
)).
replace
(
/(?:~){2}([\s\S]+?)(?:~){2}/g
,(
function
(
e
,
a
){
return
function
(
e
){
return
r
.
simplifiedAutoLink
&&
(
e
=
s
.
subParser
(
"simplifiedAutoLinks"
)(
e
,
r
,
t
)),
"<del>"
+
e
+
"</del>"
}(
a
)})),
e
=
t
.
converter
.
_dispatch
(
"strikethrough.after"
,
e
,
r
,
t
)),
e
})),
s
.
subParser
(
"stripLinkDefinitions"
,(
function
(
e
,
r
,
t
){
"use strict"
;
var
a
=
function
(
a
,
n
,
o
,
i
,
l
,
c
,
u
){
return
n
=
n
.
toLowerCase
(),
e
.
toLowerCase
().
split
(
n
).
length
-
1
<
2
?
a
:
(
o
.
match
(
/^data:.+?\/.+?;base64,/
)
?
t
.
gUrls
[
n
]
=
o
.
replace
(
/\s/g
,
""
)
:
t
.
gUrls
[
n
]
=
s
.
subParser
(
"encodeAmpsAndAngles"
)(
o
,
r
,
t
),
c
?
c
+
u
:
(
u
&&
(
t
.
gTitles
[
n
]
=
u
.
replace
(
/"|'/g
,
"""
)),
r
.
parseImgDimensions
&&
i
&&
l
&&
(
t
.
gDimensions
[
n
]
=
{
width
:
i
,
height
:
l
}),
""
))};
return
e
=
(
e
=
(
e
=
(
e
+=
"¨0"
).
replace
(
/^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*<?(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm
,
a
)).
replace
(
/^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*<?([^>\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm
,
a
)).
replace
(
/¨0/
,
""
)})),
s
.
subParser
(
"tables"
,(
function
(
e
,
r
,
t
){
"use strict"
;
if
(
!
r
.
tables
)
return
e
;
function
a
(
e
,
a
){
return
"<td"
+
a
+
">"
+
s
.
subParser
(
"spanGamut"
)(
e
,
r
,
t
)
+
"</td>\n"
}
function
n
(
e
){
var
n
,
o
=
e
.
split
(
"\n"
);
for
(
n
=
0
;
n
<
o
.
length
;
++
n
)
/^
{
0
,
3
}
\
|
/.test(o[n])&&(o[n]=o[n].replace(/
^
{
0
,
3
}
\
|
/,"")),/
\
|
[
\
t
]
*
$
/
.
test
(
o
[
n
])
&&
(
o
[
n
]
=
o
[
n
].
replace
(
/\|[ \t]*$/
,
""
)),
o
[
n
]
=
s
.
subParser
(
"codeSpans"
)(
o
[
n
],
r
,
t
);
var
i
,
l
,
c
,
u
,
d
=
o
[
0
].
split
(
"|"
).
map
((
function
(
e
){
return
e
.
trim
()})),
p
=
o
[
1
].
split
(
"|"
).
map
((
function
(
e
){
return
e
.
trim
()})),
h
=
[],
_
=
[],
g
=
[],
m
=
[];
for
(
o
.
shift
(),
o
.
shift
(),
n
=
0
;
n
<
o
.
length
;
++
n
)
""
!==
o
[
n
].
trim
()
&&
h
.
push
(
o
[
n
].
split
(
"|"
).
map
((
function
(
e
){
return
e
.
trim
()})));
if
(
d
.
length
<
p
.
length
)
return
e
;
for
(
n
=
0
;
n
<
p
.
length
;
++
n
)
g
.
push
((
i
=
p
[
n
],
/^:[ \t]*--*$/
.
test
(
i
)
?
' style="text-align:left;"'
:
/^--*[ \t]*:[ \t]*$/
.
test
(
i
)
?
' style="text-align:right;"'
:
/^:[ \t]*--*[ \t]*:$/
.
test
(
i
)
?
' style="text-align:center;"'
:
""
));
for
(
n
=
0
;
n
<
d
.
length
;
++
n
)
s
.
helper
.
isUndefined
(
g
[
n
])
&&
(
g
[
n
]
=
""
),
_
.
push
((
l
=
d
[
n
],
c
=
g
[
n
],
u
=
void
0
,
u
=
""
,
l
=
l
.
trim
(),(
r
.
tablesHeaderId
||
r
.
tableHeaderId
)
&&
(
u
=
' id="'
+
l
.
replace
(
/ /g
,
"_"
).
toLowerCase
()
+
'"'
),
"<th"
+
u
+
c
+
">"
+
(
l
=
s
.
subParser
(
"spanGamut"
)(
l
,
r
,
t
))
+
"</th>\n"
));
for
(
n
=
0
;
n
<
h
.
length
;
++
n
){
for
(
var
f
=
[],
b
=
0
;
b
<
_
.
length
;
++
b
)
s
.
helper
.
isUndefined
(
h
[
n
][
b
]),
f
.
push
(
a
(
h
[
n
][
b
],
g
[
b
]));
m
.
push
(
f
)}
return
function
(
e
,
r
){
for
(
var
t
=
"<table>\n<thead>\n<tr>\n"
,
a
=
e
.
length
,
n
=
0
;
n
<
a
;
++
n
)
t
+=
e
[
n
];
for
(
t
+=
"</tr>\n</thead>\n<tbody>\n"
,
n
=
0
;
n
<
r
.
length
;
++
n
){
t
+=
"<tr>\n"
;
for
(
var
s
=
0
;
s
<
a
;
++
s
)
t
+=
r
[
n
][
s
];
t
+=
"</tr>\n"
}
return
t
+
"</tbody>\n</table>\n"
}(
_
,
m
)}
return
e
=
(
e
=
(
e
=
(
e
=
t
.
converter
.
_dispatch
(
"tables.before"
,
e
,
r
,
t
)).
replace
(
/\\(\|)/g
,
s
.
helper
.
escapeCharactersCallback
)).
replace
(
/^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:[-=]){2,}[\s\S]+?(?:\n\n|¨0)/gm
,
n
)).
replace
(
/^ {0,3}\|.+\|[ \t]*\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n( {0,3}\|.+\|[ \t]*\n)*(?:\n|¨0)/gm
,
n
),
e
=
t
.
converter
.
_dispatch
(
"tables.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"underline"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
r
.
underline
?
(
e
=
t
.
converter
.
_dispatch
(
"underline.before"
,
e
,
r
,
t
),
e
=
(
e
=
r
.
literalMidWordUnderscores
?
(
e
=
e
.
replace
(
/\b___(\S[\s\S]*?)___\b/g
,(
function
(
e
,
r
){
return
"<u>"
+
r
+
"</u>"
}))).
replace
(
/\b__(\S[\s\S]*?)__\b/g
,(
function
(
e
,
r
){
return
"<u>"
+
r
+
"</u>"
}))
:
(
e
=
e
.
replace
(
/___(\S[\s\S]*?)___/g
,(
function
(
e
,
r
){
return
/\S$/
.
test
(
r
)
?
"<u>"
+
r
+
"</u>"
:
e
}))).
replace
(
/__(\S[\s\S]*?)__/g
,(
function
(
e
,
r
){
return
/\S$/
.
test
(
r
)
?
"<u>"
+
r
+
"</u>"
:
e
}))).
replace
(
/(_)/g
,
s
.
helper
.
escapeCharactersCallback
),
e
=
t
.
converter
.
_dispatch
(
"underline.after"
,
e
,
r
,
t
))
:
e
})),
s
.
subParser
(
"unescapeSpecialChars"
,(
function
(
e
,
r
,
t
){
"use strict"
;
return
e
=
(
e
=
t
.
converter
.
_dispatch
(
"unescapeSpecialChars.before"
,
e
,
r
,
t
)).
replace
(
/¨E(\d+)E/g
,(
function
(
e
,
r
){
var
t
=
parseInt
(
r
);
return
String
.
fromCharCode
(
t
)})),
e
=
t
.
converter
.
_dispatch
(
"unescapeSpecialChars.after"
,
e
,
r
,
t
)})),
s
.
subParser
(
"makeMarkdown.blockquote"
,(
function
(
e
,
r
){
"use strict"
;
var
t
=
""
;
if
(
e
.
hasChildNodes
())
for
(
var
a
=
e
.
childNodes
,
n
=
a
.
length
,
o
=
0
;
o
<
n
;
++
o
){
var
i
=
s
.
subParser
(
"makeMarkdown.node"
)(
a
[
o
],
r
);
""
!==
i
&&
(
t
+=
i
)}
return
t
=
"> "
+
(
t
=
t
.
trim
()).
split
(
"\n"
).
join
(
"\n> "
)})),
s
.
subParser
(
"makeMarkdown.codeBlock"
,(
function
(
e
,
r
){
"use strict"
;
var
t
=
e
.
getAttribute
(
"language"
),
a
=
e
.
getAttribute
(
"precodenum"
);
return
"```"
+
t
+
"\n"
+
r
.
preList
[
a
]
+
"\n```"
})),
s
.
subParser
(
"makeMarkdown.codeSpan"
,(
function
(
e
){
"use strict"
;
return
"`"
+
e
.
innerHTML
+
"`"
})),
s
.
subParser
(
"makeMarkdown.emphasis"
,(
function
(
e
,
r
){
"use strict"
;
var
t
=
""
;
if
(
e
.
hasChildNodes
()){
t
+=
"*"
;
for
(
var
a
=
e
.
childNodes
,
n
=
a
.
length
,
o
=
0
;
o
<
n
;
++
o
)
t
+=
s
.
subParser
(
"makeMarkdown.node"
)(
a
[
o
],
r
);
t
+=
"*"
}
return
t
})),
s
.
subParser
(
"makeMarkdown.header"
,(
function
(
e
,
r
,
t
){
"use strict"
;
var
a
=
new
Array
(
t
+
1
).
join
(
"#"
),
n
=
""
;
if
(
e
.
hasChildNodes
()){
n
=
a
+
" "
;
for
(
var
o
=
e
.
childNodes
,
i
=
o
.
length
,
l
=
0
;
l
<
i
;
++
l
)
n
+=
s
.
subParser
(
"makeMarkdown.node"
)(
o
[
l
],
r
)}
return
n
})),
s
.
subParser
(
"makeMarkdown.hr"
,(
function
(){
"use strict"
;
return
"---"
})),
s
.
subParser
(
"makeMarkdown.image"
,(
function
(
e
){
"use strict"
;
var
r
=
""
;
return
e
.
hasAttribute
(
"src"
)
&&
(
r
+=
"
+
">"
,
e
.
hasAttribute
(
"width"
)
&&
e
.
hasAttribute
(
"height"
)
&&
(
r
+=
" ="
+
e
.
getAttribute
(
"width"
)
+
"x"
+
e
.
getAttribute
(
"height"
)),
e
.
hasAttribute
(
"title"
)
&&
(
r
+=
' "'
+
e
.
getAttribute
(
"title"
)
+
'"'
),
r
+=
")"
),
r
})),
s
.
subParser
(
"makeMarkdown.links"
,(
function
(
e
,
r
){
"use strict"
;
var
t
=
""
;
if
(
e
.
hasChildNodes
()
&&
e
.
hasAttribute
(
"href"
)){
var
a
=
e
.
childNodes
,
n
=
a
.
length
;
t
=
"["
;
for
(
var
o
=
0
;
o
<
n
;
++
o
)
t
+=
s
.
subParser
(
"makeMarkdown.node"
)(
a
[
o
],
r
);
t
+=
"]("
,
t
+=
"<"
+
e
.
getAttribute
(
"href"
)
+
">"
,
e
.
hasAttribute
(
"title"
)
&&
(
t
+=
' "'
+
e
.
getAttribute
(
"title"
)
+
'"'
),
t
+=
")"
}
return
t
})),
s
.
subParser
(
"makeMarkdown.list"
,(
function
(
e
,
r
,
t
){
"use strict"
;
var
a
=
""
;
if
(
!
e
.
hasChildNodes
())
return
""
;
for
(
var
n
=
e
.
childNodes
,
o
=
n
.
length
,
i
=
e
.
getAttribute
(
"start"
)
||
1
,
l
=
0
;
l
<
o
;
++
l
)
if
(
void
0
!==
n
[
l
].
tagName
&&
"li"
===
n
[
l
].
tagName
.
toLowerCase
()){
a
+=
(
"ol"
===
t
?
i
.
toString
()
+
". "
:
"- "
)
+
s
.
subParser
(
"makeMarkdown.listItem"
)(
n
[
l
],
r
),
++
i
}
return
(
a
+=
"\n\x3c!-- --\x3e\n"
).
trim
()})),
s
.
subParser
(
"makeMarkdown.listItem"
,(
function
(
e
,
r
){
"use strict"
;
for
(
var
t
=
""
,
a
=
e
.
childNodes
,
n
=
a
.
length
,
o
=
0
;
o
<
n
;
++
o
)
t
+=
s
.
subParser
(
"makeMarkdown.node"
)(
a
[
o
],
r
);
return
/\n$/
.
test
(
t
)
?
t
=
t
.
split
(
"\n"
).
join
(
"\n "
).
replace
(
/^ {4}$/gm
,
""
).
replace
(
/\n\n+/g
,
"\n\n"
)
:
t
+=
"\n"
,
t
})),
s
.
subParser
(
"makeMarkdown.node"
,(
function
(
e
,
r
,
t
){
"use strict"
;
t
=
t
||!
1
;
var
a
=
""
;
if
(
3
===
e
.
nodeType
)
return
s
.
subParser
(
"makeMarkdown.txt"
)(
e
,
r
);
if
(
8
===
e
.
nodeType
)
return
"\x3c!--"
+
e
.
data
+
"--\x3e\n\n"
;
if
(
1
!==
e
.
nodeType
)
return
""
;
switch
(
e
.
tagName
.
toLowerCase
()){
case
"h1"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.header"
)(
e
,
r
,
1
)
+
"\n\n"
);
break
;
case
"h2"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.header"
)(
e
,
r
,
2
)
+
"\n\n"
);
break
;
case
"h3"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.header"
)(
e
,
r
,
3
)
+
"\n\n"
);
break
;
case
"h4"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.header"
)(
e
,
r
,
4
)
+
"\n\n"
);
break
;
case
"h5"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.header"
)(
e
,
r
,
5
)
+
"\n\n"
);
break
;
case
"h6"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.header"
)(
e
,
r
,
6
)
+
"\n\n"
);
break
;
case
"p"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.paragraph"
)(
e
,
r
)
+
"\n\n"
);
break
;
case
"blockquote"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.blockquote"
)(
e
,
r
)
+
"\n\n"
);
break
;
case
"hr"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.hr"
)(
e
,
r
)
+
"\n\n"
);
break
;
case
"ol"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.list"
)(
e
,
r
,
"ol"
)
+
"\n\n"
);
break
;
case
"ul"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.list"
)(
e
,
r
,
"ul"
)
+
"\n\n"
);
break
;
case
"precode"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.codeBlock"
)(
e
,
r
)
+
"\n\n"
);
break
;
case
"pre"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.pre"
)(
e
,
r
)
+
"\n\n"
);
break
;
case
"table"
:
t
||
(
a
=
s
.
subParser
(
"makeMarkdown.table"
)(
e
,
r
)
+
"\n\n"
);
break
;
case
"code"
:
a
=
s
.
subParser
(
"makeMarkdown.codeSpan"
)(
e
,
r
);
break
;
case
"em"
:
case
"i"
:
a
=
s
.
subParser
(
"makeMarkdown.emphasis"
)(
e
,
r
);
break
;
case
"strong"
:
case
"b"
:
a
=
s
.
subParser
(
"makeMarkdown.strong"
)(
e
,
r
);
break
;
case
"del"
:
a
=
s
.
subParser
(
"makeMarkdown.strikethrough"
)(
e
,
r
);
break
;
case
"a"
:
a
=
s
.
subParser
(
"makeMarkdown.links"
)(
e
,
r
);
break
;
case
"img"
:
a
=
s
.
subParser
(
"makeMarkdown.image"
)(
e
,
r
);
break
;
default
:
a
=
e
.
outerHTML
+
"\n\n"
}
return
a
})),
s
.
subParser
(
"makeMarkdown.paragraph"
,(
function
(
e
,
r
){
"use strict"
;
var
t
=
""
;
if
(
e
.
hasChildNodes
())
for
(
var
a
=
e
.
childNodes
,
n
=
a
.
length
,
o
=
0
;
o
<
n
;
++
o
)
t
+=
s
.
subParser
(
"makeMarkdown.node"
)(
a
[
o
],
r
);
return
t
=
t
.
trim
()})),
s
.
subParser
(
"makeMarkdown.pre"
,(
function
(
e
,
r
){
"use strict"
;
var
t
=
e
.
getAttribute
(
"prenum"
);
return
"<pre>"
+
r
.
preList
[
t
]
+
"</pre>"
})),
s
.
subParser
(
"makeMarkdown.strikethrough"
,(
function
(
e
,
r
){
"use strict"
;
var
t
=
""
;
if
(
e
.
hasChildNodes
()){
t
+=
"~~"
;
for
(
var
a
=
e
.
childNodes
,
n
=
a
.
length
,
o
=
0
;
o
<
n
;
++
o
)
t
+=
s
.
subParser
(
"makeMarkdown.node"
)(
a
[
o
],
r
);
t
+=
"~~"
}
return
t
})),
s
.
subParser
(
"makeMarkdown.strong"
,(
function
(
e
,
r
){
"use strict"
;
var
t
=
""
;
if
(
e
.
hasChildNodes
()){
t
+=
"**"
;
for
(
var
a
=
e
.
childNodes
,
n
=
a
.
length
,
o
=
0
;
o
<
n
;
++
o
)
t
+=
s
.
subParser
(
"makeMarkdown.node"
)(
a
[
o
],
r
);
t
+=
"**"
}
return
t
})),
s
.
subParser
(
"makeMarkdown.table"
,(
function
(
e
,
r
){
"use strict"
;
var
t
,
a
,
n
=
""
,
o
=
[[],[]],
i
=
e
.
querySelectorAll
(
"thead>tr>th"
),
l
=
e
.
querySelectorAll
(
"tbody>tr"
);
for
(
t
=
0
;
t
<
i
.
length
;
++
t
){
var
c
=
s
.
subParser
(
"makeMarkdown.tableCell"
)(
i
[
t
],
r
),
u
=
"---"
;
if
(
i
[
t
].
hasAttribute
(
"style"
))
switch
(
i
[
t
].
getAttribute
(
"style"
).
toLowerCase
().
replace
(
/\s/g
,
""
)){
case
"text-align:left;"
:
u
=
":---"
;
break
;
case
"text-align:right;"
:
u
=
"---:"
;
break
;
case
"text-align:center;"
:
u
=
":---:"
}
o
[
0
][
t
]
=
c
.
trim
(),
o
[
1
][
t
]
=
u
}
for
(
t
=
0
;
t
<
l
.
length
;
++
t
){
var
d
=
o
.
push
([])
-
1
,
p
=
l
[
t
].
getElementsByTagName
(
"td"
);
for
(
a
=
0
;
a
<
i
.
length
;
++
a
){
var
h
=
" "
;
void
0
!==
p
[
a
]
&&
(
h
=
s
.
subParser
(
"makeMarkdown.tableCell"
)(
p
[
a
],
r
)),
o
[
d
].
push
(
h
)}}
var
_
=
3
;
for
(
t
=
0
;
t
<
o
.
length
;
++
t
)
for
(
a
=
0
;
a
<
o
[
t
].
length
;
++
a
){
var
g
=
o
[
t
][
a
].
length
;
g
>
_
&&
(
_
=
g
)}
for
(
t
=
0
;
t
<
o
.
length
;
++
t
){
for
(
a
=
0
;
a
<
o
[
t
].
length
;
++
a
)
1
===
t
?
":"
===
o
[
t
][
a
].
slice
(
-
1
)
?
o
[
t
][
a
]
=
s
.
helper
.
padEnd
(
o
[
t
][
a
].
slice
(
-
1
),
_
-
1
,
"-"
)
+
":"
:
o
[
t
][
a
]
=
s
.
helper
.
padEnd
(
o
[
t
][
a
],
_
,
"-"
)
:
o
[
t
][
a
]
=
s
.
helper
.
padEnd
(
o
[
t
][
a
],
_
);
n
+=
"| "
+
o
[
t
].
join
(
" | "
)
+
" |\n"
}
return
n
.
trim
()})),
s
.
subParser
(
"makeMarkdown.tableCell"
,(
function
(
e
,
r
){
"use strict"
;
var
t
=
""
;
if
(
!
e
.
hasChildNodes
())
return
""
;
for
(
var
a
=
e
.
childNodes
,
n
=
a
.
length
,
o
=
0
;
o
<
n
;
++
o
)
t
+=
s
.
subParser
(
"makeMarkdown.node"
)(
a
[
o
],
r
,
!
0
);
return
t
.
trim
()})),
s
.
subParser
(
"makeMarkdown.txt"
,(
function
(
e
){
"use strict"
;
var
r
=
e
.
nodeValue
;
return
r
=
(
r
=
r
.
replace
(
/ +/g
,
" "
)).
replace
(
/¨NBSP;/g
,
" "
),
r
=
(
r
=
(
r
=
(
r
=
(
r
=
(
r
=
(
r
=
(
r
=
(
r
=
s
.
helper
.
unescapeHTMLEntities
(
r
)).
replace
(
/([*_~|`])/g
,
"\\$1"
)).
replace
(
/^(\s*)>/g
,
"\\$1>"
)).
replace
(
/^#/gm
,
"\\#"
)).
replace
(
/^(\s*)([-=]{3,})(\s*)$/
,
"$1\\$2$3"
)).
replace
(
/^( {0,3}\d+)\./gm
,
"$1\\."
)).
replace
(
/^( {0,3})([+-])/gm
,
"$1\\$2"
)).
replace
(
/]([\s]*)\(/g
,
"\\]$1\\("
)).
replace
(
/^ {0,3}\[([\S \t]*?)]:/gm
,
"\\[$1]:"
)}));
void
0
===
(
a
=
function
(){
"use strict"
;
return
s
}.
call
(
r
,
t
,
r
,
e
))
||
(
e
.
exports
=
a
)}).
call
(
this
)}}]);
//# sourceMappingURL=showdown.b448e42a34c43d6a7de5.js.map
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jul 4, 4:24 PM (2 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3348152
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment