diff --git a/dist/Valine.min.js b/dist/Valine.min.js
deleted file mode 100644
index 07ffabe7..00000000
--- a/dist/Valine.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Valine",[],t):"object"==typeof exports?exports.Valine=t():e.Valine=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/dist/",t(t.s=11)}([function(e,t,n){function r(e,t){return new o(t).process(e)}var i=n(2),o=n(14);t=e.exports=r,t.FilterCSS=o;for(var a in i)t[a]=i[a];"undefined"!=typeof window&&(window.filterCSS=e.exports)},function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n /g,z=/"/g,L=/"/g,C=/([a-zA-Z0-9]*);?/gim,q=/:?/gim,I=/&newline;?/gim,$=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,R=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,E=/u\s*r\s*l\s*\(.*/gi,j=//g;t.whiteList=r(),t.getDefaultWhiteList=r,t.onTag=i,t.onIgnoreTag=o,t.onTagAttr=a,t.onIgnoreTagAttr=s,t.safeAttrValue=c,t.escapeHtml=l,t.escapeQuote=u,t.unescapeQuote=p,t.escapeHtmlEntities=d,t.escapeDangerHtml5Entities=h,t.clearNonPrintableCharacter=f,t.friendlyAttrValue=g,t.escapeAttrValue=v,t.onIgnoreTagStripAll=m,t.StripTagBody=b,t.stripCommentTag=y,t.stripBlankChar=x,t.cssFilter=S,t.getDefaultCSSWhiteList=w},function(e,t,n){function r(e){var t=p.spaceIndex(e);if(-1===t)var n=e.slice(1,-1);else var n=e.slice(1,t+1);return n=p.trim(n).toLowerCase(),"/"===n.slice(0,1)&&(n=n.slice(1)),"/"===n.slice(-1)&&(n=n.slice(0,-1)),n}function i(e){return""===e.slice(0,2)}function o(e,t,n){"use strict";var o="",a=0,s=!1,l=!1,c=0,u=e.length,p="",d="";e:for(c=0;c"===h){o+=n(e.slice(a,s)),d=e.slice(s,c+1),p=r(d),o+=t(s,o.length,p,d,i(d)),a=c+1,s=!1;continue}if('"'===h||"'"===h)for(var f=1,g=e.charAt(c-f);" "===g||"="===g;){if("="===g){l=h;continue e}g=e.charAt(c-++f)}}else if(h===l){l=!1;continue}}return a0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function c(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}function u(e){return c(e)?e.substr(1,e.length-2):e}var p=n(1),d=/[^a-zA-Z0-9_:\.\-]/gim;t.parseTag=o,t.parseAttr=a},function(e,t,n){var r;!function(i){"use strict";function o(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function a(e,t){return e<>>32-t}function s(e,t,n,r,i,s){return o(a(o(o(t,e),o(r,s)),i),n)}function l(e,t,n,r,i,o,a){return s(t&n|~t&r,e,t,i,o,a)}function c(e,t,n,r,i,o,a){return s(t&r|n&~r,e,t,i,o,a)}function u(e,t,n,r,i,o,a){return s(t^n^r,e,t,i,o,a)}function p(e,t,n,r,i,o,a){return s(n^(t|~r),e,t,i,o,a)}function d(e,t){e[t>>5]|=128<>>9<<4)]=t;var n,r,i,a,s,d=1732584193,h=-271733879,f=-1732584194,g=271733878;for(n=0;n>5]>>>t%32&255);return n}function f(e){var t,n=[];for(n[(e.length>>2)-1]=void 0,t=0;t>5]|=(255&e.charCodeAt(t/8))<16&&(i=d(i,8*e.length)),n=0;n<16;n+=1)o[n]=909522486^i[n],a[n]=1549556828^i[n];return r=d(o.concat(f(t)),512+8*t.length),h(d(a.concat(r),640))}function m(e){var t,n,r="0123456789abcdef",i="";for(n=0;n>>4&15)+r.charAt(15&t);return i}function b(e){return unescape(encodeURIComponent(e))}function y(e){return g(b(e))}function x(e){return m(y(e))}function k(e,t){return v(b(e),b(t))}function w(e,t){return m(k(e,t))}function A(e,t,n){return t?n?k(t,e):w(t,e):n?y(e):x(e)}void 0!==(r=function(){return A}.call(t,n,t,e))&&(e.exports=r)}()},function(e,t,n){(function(t){!function(t){"use strict";function n(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||b.defaults,this.rules=y.normal,this.options.pedantic?this.rules=y.pedantic:this.options.gfm&&(this.options.tables?this.rules=y.tables:this.rules=y.gfm)}function r(e,t){if(this.options=t||b.defaults,this.links=e,this.rules=x.normal,this.renderer=this.options.renderer||new i,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.pedantic?this.rules=x.pedantic:this.options.gfm&&(this.options.breaks?this.rules=x.breaks:this.rules=x.gfm)}function i(e){this.options=e||b.defaults}function o(){}function a(e){this.tokens=[],this.token=null,this.options=e||b.defaults,this.options.renderer=this.options.renderer||new i,this.renderer=this.options.renderer,this.renderer.options=this.options,this.slugger=new s}function s(){this.seen={}}function l(e,t){if(t){if(l.escapeTest.test(e))return e.replace(l.escapeReplace,function(e){return l.replacements[e]})}else if(l.escapeTestNoEncode.test(e))return e.replace(l.escapeReplaceNoEncode,function(e){return l.replacements[e]});return e}function c(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function u(e,t){return e=e.source||e,t=t||"",{replace:function(t,n){return n=n.source||n,n=n.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(t,n),this},getRegex:function(){return new RegExp(e,t)}}}function p(e,t,n){if(e){try{var r=decodeURIComponent(c(n)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!w.test(n)&&(n=d(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}function d(e,t){return k[" "+e]||(/^[^:]+:\/*[^/]*$/.test(e)?k[" "+e]=e+"/":k[" "+e]=v(e,"/",!0)),e=k[" "+e],"//"===t.slice(0,2)?e.replace(/:[\s\S]*/,":")+t:"/"===t.charAt(0)?e.replace(/(:\/*[^/]*)[\s\S]*/,"$1")+t:e+t}function h(){}function f(e){for(var t,n,r=1;r=0&&"\\"===n[i];)r=!r;return r?"|":" |"}),r=n.split(/ \|/),i=0;if(r.length>t)r.splice(t);else for(;r.lengthAn error occurred:
"+l(e.message+"",!0)+" ";throw e}}var y={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:h,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,nptable:h,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:h,lheading:/^([^\n]+)\n {0,3}(=|-){2,} *(?:\n+|$)/,paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,text:/^[^\n]+/};y._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,y._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,y.def=u(y.def).replace("label",y._label).replace("title",y._title).getRegex(),y.bullet=/(?:[*+-]|\d{1,9}\.)/,y.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,y.item=u(y.item,"gm").replace(/bull/g,y.bullet).getRegex(),y.list=u(y.list).replace(/bull/g,y.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+y.def.source+")").getRegex(),y._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",y._comment=//,y.html=u(y.html,"i").replace("comment",y._comment).replace("tag",y._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),y.paragraph=u(y.paragraph).replace("hr",y.hr).replace("heading",y.heading).replace("lheading",y.lheading).replace("tag",y._tag).getRegex(),y.blockquote=u(y.blockquote).replace("paragraph",y.paragraph).getRegex(),y.normal=f({},y),y.gfm=f({},y.normal,{fences:/^ {0,3}(`{3,}|~{3,})([^`\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),y.gfm.paragraph=u(y.paragraph).replace("(?!","(?!"+y.gfm.fences.source.replace("\\1","\\2")+"|"+y.list.source.replace("\\1","\\3")+"|").getRegex(),y.tables=f({},y.gfm,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),y.pedantic=f({},y.normal,{html:u("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?\\1> *(?:\\n{2,}|\\s*$)| \\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",y._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/}),n.rules=y,n.lex=function(e,t){return new n(t).lex(e)},n.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},n.prototype.token=function(e,t){e=e.replace(/^ +$/gm,"");for(var n,r,i,o,a,s,l,c,u,p,d,h,f,m,b,x;e;)if((i=this.rules.newline.exec(e))&&(e=e.substring(i[0].length),i[0].length>1&&this.tokens.push({type:"space"})),i=this.rules.code.exec(e)){var k=this.tokens[this.tokens.length-1];e=e.substring(i[0].length),k&&"paragraph"===k.type?k.text+="\n"+i[0].trimRight():(i=i[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",codeBlockStyle:"indented",text:this.options.pedantic?i:v(i,"\n")}))}else if(i=this.rules.fences.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"code",lang:i[2]?i[2].trim():i[2],text:i[3]||""});else if(i=this.rules.heading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:i[1].length,text:i[2]});else if((i=this.rules.nptable.exec(e))&&(s={type:"table",header:g(i[1].replace(/^ *| *\| *$/g,"")),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3]?i[3].replace(/\n$/,"").split("\n"):[]},s.header.length===s.align.length)){for(e=e.substring(i[0].length),d=0;d ?/gm,""),this.token(i,t),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(e)){for(e=e.substring(i[0].length),o=i[2],m=o.length>1,l={type:"list_start",ordered:m,start:m?+o:"",loose:!1},this.tokens.push(l),i=i[0].match(this.rules.item),c=[],n=!1,f=i.length,d=0;d1?1===a.length:a.length>1||this.options.smartLists&&a!==o)&&(e=i.slice(d+1).join("\n")+e,d=f-1)),r=n||/\n\n(?!\s*$)/.test(s),d!==f-1&&(n="\n"===s.charAt(s.length-1),r||(r=n)),r&&(l.loose=!0),b=/^\[[ xX]\] /.test(s),x=void 0,b&&(x=" "!==s[1],s=s.replace(/^\[[ xX]\] +/,"")),u={type:"list_item_start",task:b,checked:x,loose:r},c.push(u),this.tokens.push(u),this.token(s,!1),this.tokens.push({type:"list_item_end"});if(l.loose)for(f=c.length,d=0;d?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:h,tag:"^comment|^[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*<\[])\*(?!\*)|^_([^\s<][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_<][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s<"][\s\S]*?[^\s\*])\*(?!\*|[^\spunctuation])|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:h,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~",x.em=u(x.em).replace(/punctuation/g,x._punctuation).getRegex(),x._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,x._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,x._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,x.autolink=u(x.autolink).replace("scheme",x._scheme).replace("email",x._email).getRegex(),x._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,x.tag=u(x.tag).replace("comment",y._comment).replace("attribute",x._attribute).getRegex(),x._label=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|`(?!`)|[^\[\]\\`])*?/,x._href=/\s*(<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*)/,x._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,x.link=u(x.link).replace("label",x._label).replace("href",x._href).replace("title",x._title).getRegex(),x.reflink=u(x.reflink).replace("label",x._label).getRegex(),x.normal=f({},x),x.pedantic=f({},x.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:u(/^!?\[(label)\]\((.*?)\)/).replace("label",x._label).getRegex(),reflink:u(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",x._label).getRegex()}),x.gfm=f({},x.normal,{escape:u(x.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\/i.test(a[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(a[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(a[0])&&(this.inRawBlock=!1),e=e.substring(a[0].length),c+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):l(a[0]):a[0];else if(a=this.rules.link.exec(e)){var u=m(a[2],"()");if(u>-1){var p=a[0].length-(a[2].length-u)-(a[3]||"").length;a[2]=a[2].substring(0,u),a[0]=a[0].substring(0,p).trim(),a[3]=""}e=e.substring(a[0].length),this.inLink=!0,i=a[2],this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(i),t?(i=t[1],o=t[3]):o=""):o=a[3]?a[3].slice(1,-1):"",i=i.trim().replace(/^<([\s\S]*)>$/,"$1"),c+=this.outputLink(a,{href:r.escapes(i),title:r.escapes(o)}),this.inLink=!1}else if((a=this.rules.reflink.exec(e))||(a=this.rules.nolink.exec(e))){if(e=e.substring(a[0].length),t=(a[2]||a[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){c+=a[0].charAt(0),e=a[0].substring(1)+e;continue}this.inLink=!0,c+=this.outputLink(a,t),this.inLink=!1}else if(a=this.rules.strong.exec(e))e=e.substring(a[0].length),c+=this.renderer.strong(this.output(a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.em.exec(e))e=e.substring(a[0].length),c+=this.renderer.em(this.output(a[6]||a[5]||a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.code.exec(e))e=e.substring(a[0].length),c+=this.renderer.codespan(l(a[2].trim(),!0));else if(a=this.rules.br.exec(e))e=e.substring(a[0].length),c+=this.renderer.br();else if(a=this.rules.del.exec(e))e=e.substring(a[0].length),c+=this.renderer.del(this.output(a[1]));else if(a=this.rules.autolink.exec(e))e=e.substring(a[0].length),"@"===a[2]?(n=l(this.mangle(a[1])),i="mailto:"+n):(n=l(a[1]),i=n),c+=this.renderer.link(i,null,n);else if(this.inLink||!(a=this.rules.url.exec(e))){if(a=this.rules.text.exec(e))e=e.substring(a[0].length),this.inRawBlock?c+=this.renderer.text(a[0]):c+=this.renderer.text(l(this.smartypants(a[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===a[2])n=l(a[0]),i="mailto:"+n;else{do{s=a[0],a[0]=this.rules._backpedal.exec(a[0])[0]}while(s!==a[0]);n=l(a[0]),i="www."===a[1]?"http://"+n:n}e=e.substring(a[0].length),c+=this.renderer.link(i,null,n)}return c},r.escapes=function(e){return e?e.replace(r.rules._escapes,"$1"):e},r.prototype.outputLink=function(e,t){var n=t.href,r=t.title?l(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,l(e[1]))},r.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},r.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,i=0;i.5&&(t="x"+t.toString(16)),n+=""+t+";";return n},i.prototype.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return r?''+(n?e:l(e,!0))+"
\n":""+(n?e:l(e,!0))+"
"},i.prototype.blockquote=function(e){return"\n"+e+" \n"},i.prototype.html=function(e){return e},i.prototype.heading=function(e,t,n,r){return this.options.headerIds?"\n":""+e+" \n"},i.prototype.hr=function(){return this.options.xhtml?" \n":" \n"},i.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+""+r+">\n"},i.prototype.listitem=function(e){return""+e+" \n"},i.prototype.checkbox=function(e){return" "},i.prototype.paragraph=function(e){return""+e+"
\n"},i.prototype.table=function(e,t){return t&&(t=""+t+" "),"\n"},i.prototype.tablerow=function(e){return"\n"+e+" \n"},i.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+""+n+">\n"},i.prototype.strong=function(e){return""+e+" "},i.prototype.em=function(e){return""+e+" "},i.prototype.codespan=function(e){return""+e+"
"},i.prototype.br=function(){return this.options.xhtml?" ":" "},i.prototype.del=function(e){return""+e+""},i.prototype.link=function(e,t,n){if(null===(e=p(this.options.sanitize,this.options.baseUrl,e)))return n;var r='"+n+" "},i.prototype.image=function(e,t,n){if(null===(e=p(this.options.sanitize,this.options.baseUrl,e)))return n;var r=' ":">"},i.prototype.text=function(e){return e},o.prototype.strong=o.prototype.em=o.prototype.codespan=o.prototype.del=o.prototype.text=function(e){return e},o.prototype.link=o.prototype.image=function(e,t,n){return""+n},o.prototype.br=function(){return""},a.parse=function(e,t){return new a(t).parse(e)},a.prototype.parse=function(e){this.inline=new r(e.links,this.options),this.inlineText=new r(e.links,f({},this.options,{renderer:new o})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},a.prototype.next=function(){return this.token=this.tokens.pop(),this.token},a.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},a.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},a.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,c(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,i="",o="";for(n="",e=0;e?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){var n=t;do{this.seen[n]++,t=n+"-"+this.seen[n]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t},l.escapeTest=/[&<>"']/,l.escapeReplace=/[&<>"']/g,l.replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},l.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,l.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var k={},w=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;h.exec=h,b.options=b.setOptions=function(e){return f(b.defaults,e),b},b.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new i,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tables:!0,xhtml:!1}},b.defaults=b.getDefaults(),b.Parser=a,b.parser=a.parse,b.Renderer=i,b.TextRenderer=o,b.Lexer=n,b.lexer=n.lex,b.InlineLexer=r,b.inlineLexer=r.output,b.Slugger=s,b.parse=b,e.exports=b}(this||"undefined"!=typeof window&&window)}).call(t,n(18))},function(e,t,n){(function(t){"use strict";function n(e){var t=new Error(e);return t.name="ValueError",t}function r(e){return function(t){var r=Array.prototype.slice.call(arguments,1),i=0,o="UNDEFINED";return t.replace(/([{}])\1|[{](.*?)(?:!(.+?))?[}]/g,function(t,a,s,l){if(null!=a)return a;var c=s;if(c.length>0){if("IMPLICIT"===o)throw n("cannot switch from implicit to explicit numbering");o="EXPLICIT"}else{if("EXPLICIT"===o)throw n("cannot switch from explicit to implicit numbering");o="IMPLICIT",c=String(i),i+=1}var u=c.split("."),p=(/^\d+$/.test(u[0])?u:["0"].concat(u)).reduce(function(e,t){return e.reduce(function(e,n){return null!=n&&t in Object(n)?["function"==typeof n[t]?n[t]():n[t]]:[]},[])},[r]).reduce(function(e,t){return t},"");if(null==l)return p;if(Object.prototype.hasOwnProperty.call(e,l))return e[l](p);throw n('no transformer named "'+l+'"')})}}var i=r({});i.create=r,i.extend=function(e,n){var i=r(n);e.format=function(){var e=Array.prototype.slice.call(arguments);return e.unshift(this),i.apply(t,e)}},e.exports=i}).call(this,this)},function(e,t,n){var r=n(12);"string"==typeof r&&(r=[[e.i,r,""]]);var i={};i.transform=void 0;n(16)(r,i);r.locals&&(e.exports=r.locals)},function(e,t,n){function r(e,t){return new a(t).process(e)}var i=n(4),o=n(5),a=n(19);t=e.exports=r,t.filterXSS=r,t.FilterXSS=a;for(var s in i)t[s]=i[s];for(var s in o)t[s]=o[s];"undefined"!=typeof window&&(window.filterXSS=e.exports),function(){return"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope}()&&(self.filterXSS=e.exports)},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;n element "+e.count_el+" was not found."),t.el=i,t.count_el=o,t.el.classList.add("valine");var a=e.placeholder||"",s='\n \n
'+l(t.i18n.comment_count,'0 ')+'
\n
\n \n
\n
';t.el.innerHTML=s;var g=t.el.querySelector(".vempty");t.nodata={show:function(e){g.innerHTML=e||t.i18n.no_comment_yet,g.setAttribute("style","display:block;")},hide:function(){g.setAttribute("style","display:none;")}},t.nodata.show();var v=t.el.querySelector(".vsmile-icons"),b=e.emoticon_list||[];for(var y in b){var x=document.createElement("img");x.setAttribute("src",e.emoticon_url+"/"+b[y]),v.appendChild(x)}var k="https://",w="";if(!e.serverURLs)switch(e.app_id.slice(-9)){case"-9Nh9j0Va":k+="tab.";break;case"-MdYXbMMI":k+="us."}w=e.serverURLs||k+"avoscloud.com",p||(n.init({appId:e.app_id||e.appId,appKey:e.app_key||e.appKey,serverURLs:w}),p=!0),t.v=n}catch(e){var A="https://github.com/DesertsP/Valine/issues";return void(t.el?t.nodata.show(''+e+" Valine:"+t.version+" feedback:"+A+" "):console&&console.log("%c"+e+"\n%cValine%c"+t.version+" "+A,"color:red;","background:#000;padding:5px;line-height:30px;color:#fff;","background:#456;line-height:30px;padding:5px;color:#fff;"))}var S='',_=t.el.querySelector(".vloading");_.innerHTML=S,t.loading={show:function(){_.setAttribute("style","display:block;"),t.nodata.hide()},hide:function(){_.setAttribute("style","display:none;"),0===t.el.querySelectorAll(".vcard").length&&t.nodata.show()}},t.loading.hide();var T=t.el.querySelector(".vsubmitting");T.innerHTML=S,t.submitting={show:function(){T.setAttribute("style","display:block;")},hide:function(){T.setAttribute("style","display:none;"),t.nodata.hide()}};var z=t.el.querySelector(".vmark");t.alert={show:function(e){z.innerHTML='';var n=z.querySelector(".vbtns"),r=''+(e&&e.ctxt||t.i18n.cancel)+" ",i=''+(e&&e.otxt||t.i18n.continue)+" ";if(n.innerHTML=""+r+(e.type&&i),z.querySelector(".vcancel").addEventListener("click",function(e){t.alert.hide()}),z.setAttribute("style","display:block;"),e&&e.type){var o=z.querySelector(".vsure");m.on("click",o,function(n){t.alert.hide(),e.cb&&e.cb()})}},hide:function(){z.setAttribute("style","display:none;")}};var L=new t.v.Query("Comment");L.equalTo("url",u.url);var C=new t.v.Query("Comment");C.equalTo("url",u.url+"/");var q=AV.Query.or(L,C);q.notEqualTo("isSpam",!0),q.count().then(function(e){t.el.querySelector(".count").innerHTML=e,"[object HTMLSpanElement]"==f.call(t.count_el)&&(t.count_el.innerHTML=e)}).catch(function(e){console.log(e),t.el.querySelector(".count").innerHTML=0}),t.bind(e)}},{key:"bind",value:function(e){var t=this,n=t.el.querySelector(".vsmile-icons");m.on("click",n,function(e){var n=t.el.querySelector(".veditor"),r=e.target.src;if(void 0!==r){var i="!(:"+decodeURI(r).replace(/^.*\/(.*)$/,"$1")+":)";if(document.selection)n.focus(),sel=document.selection.createRange(),sel.text=i,n.focus();else if(n.selectionStart||"0"==n.selectionStart){var o=n.selectionStart,a=n.selectionEnd,s=a;n.value=n.value.substring(0,o)+i+n.value.substring(a,n.value.length),s+=i.length,n.focus(),n.selectionStart=s,n.selectionEnd=s}else n.value+=i,n.focus();u.comment=n.value;var l=t.el.querySelector(".vsubmit");l.getAttribute("disabled")&&l.removeAttribute("disabled")}});var r=t.el.querySelector(".comment_trigger");m.on("click",r,function(e){r.setAttribute("style","display:none"),t.el.querySelector(".auth-section").removeAttribute("style"),t.el.querySelector(".veditor").focus()}),m.on("click",t.el.querySelector(".vcancel-comment-reply"),function(e){t.reset()});var i=function(e){e.offsetHeight>180&&(e.classList.add("expand"),m.on("click",e,function(t){e.setAttribute("class","vcomment")}))},l=1,c=0,p=function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;t.loading.show(),t.v.Query.doCloudQuery("select nick, comment, link, rid, emailHash, isSpam\n from Comment\n where (rid='' or rid is not exists) and (url='"+u.url+"' or url='"+u.url+"/')\n order by -createdAt\n limit "+(n-1)*h+","+h).then(function(r){r=r&&r.results||[];var i=r.length;if(i){for(var o=0;o'+t.i18n.more+"":"";var u=s.querySelector("#vmore");u&&m.on("click",u,function(t){s.innerHTML="",e(++l)})}t.loading.hide()}).catch(function(e){console.log(e),t.loading.hide()})};t.v.Query.doCloudQuery("select count(*)\n from Comment\n where (rid='' or rid is not exists) \n and (url='"+u.url+"' or url='"+u.url+"/')\n order by -createdAt").then(function(e){c=e.count,p(1)});var f=function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=n.querySelector(".vcomment-children"),o=i.querySelector(".vlist"),a=n.getAttribute("id");if(r<=0&&i.setAttribute("style","margin-left: 0 !important"),r>=d)return void t.v.Query.doCloudQuery("select count(*)\n from Comment\n where rid='"+a+"' and (url='"+u.url+"' or url='"+u.url+"/')\n order by -createdAt").then(function(r){if(r.count>0){var o=i.querySelector(".vshow-children-wrapper");o.setAttribute("style","display: block !important;"),o.innerHTML=''+t.i18n.more+" ";var s=o.querySelector(".vshow-children");m.on("click",s,function(t){o.setAttribute("style","display: none !important;"),e(n,-1e3)})}},function(e){console.log(e)});t.v.Query.doCloudQuery("select nick, comment, link, rid, emailHash, isSpam\n from Comment\n where rid='"+a+"' and (url='"+u.url+"' or url='"+u.url+"/')\n order by -createdAt").then(function(t){t=t&&t.results||[];var n=t.length;if(n)for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:null,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=document.createElement("li");o.setAttribute("class","vcard"),o.setAttribute("id",e.id);var a=e.get("emailHash"),s="https://gravatar.loli.net/avatar/"+a+"?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80";o.innerHTML='\n ';for(var l=n||t.el.querySelector(".vlist"),c=l.querySelectorAll("li"),u=o.querySelectorAll("a"),p=0,d=u.length;p')),{onIgnoreTagAttr:function(e,t,n,r){if("class"===t)return t+'="'+a.escapeAttrValue(n)+'"'}}),u.comment.indexOf(u.at)>-1&&""!=u.at){var r='"+u.at+" ";u.comment=u.comment.replace(u.at,r)}var i=b.mail(u.mail),s=b.link(u.link);u.mail=i.k?i.v:"",u.link=s.k?s.v:"",i.k&&s.k?I():t.alert.show({type:0,text:t.i18n.input_tips,ctxt:t.i18n.confirm})},T=t.el.querySelector(".vemoji-btn"),z=t.el.querySelector(".vsmile-icons");m.on("click",T,function(e){C.getAttribute("triggered")&&(C.setAttribute("style","display:none;"),C.removeAttribute("triggered")),z.getAttribute("triggered")?(z.setAttribute("style","display:none;"),z.removeAttribute("triggered")):(z.removeAttribute("style"),z.setAttribute("triggered",1))});var L=t.el.querySelector(".vpreview-btn"),C=t.el.querySelector(".vpreview-text");m.on("click",L,function(t){if(z.getAttribute("triggered")&&(z.setAttribute("style","display:none;"),z.removeAttribute("triggered")),C.getAttribute("triggered"))C.setAttribute("style","display:none;"),C.removeAttribute("triggered");else{if(""==u.comment)return void k.comment.focus();C.innerHTML=a(o(u.comment.replace(/!\(:(.*?\.\w+):\)/g,' ')),{onIgnoreTagAttr:function(e,t,n,r){if("class"===t)return t+'="'+a.escapeAttrValue(n)+'"'}}),C.removeAttribute("style"),C.setAttribute("triggered",1)}});var q=function(){var e=new t.v.ACL;return e.setPublicReadAccess(!0),e.setPublicWriteAccess(!1),e},I=function(){S.setAttribute("disabled",!0),t.submitting.show();var e=t.v.Object.extend("Comment"),n=new e;for(var r in u)if(u.hasOwnProperty(r)){if("at"===r)continue;var i=u[r];n.set(r,i)}n.set("emailHash",s(u.mail.toLowerCase().trim())),n.setACL(q()),n.save().then(function(e){g&&g.setItem("ValineCache",JSON.stringify({nick:u.nick,link:u.link,mail:u.mail}));var n=t.el.querySelector(".count");if(n.innerText=Number(n.innerText)+1,""===u.rid)v(e,null,!0);else{var r=t.el.querySelector("#children-list-"+u.rid);v(e,r,!0)}S.removeAttribute("disabled"),t.submitting.hide(),t.nodata.hide(),t.reset()}).catch(function(e){t.submitting.hide()})},$=function(e){var n=e.getAttribute("id"),r=e.querySelector("#at-"+n);m.on("click",r,function(i){var o=r.getAttribute("at"),a=r.getAttribute("rid");u.rid=a,u.at=o,k.comment.value=o+" ,"+k.comment.value,e.querySelector("#comment-"+n).appendChild(t.el.querySelector(".vinputs-wrap")),t.el.querySelector(".vcancel-comment-reply").removeAttribute("style"),t.el.querySelector(".comment_trigger").setAttribute("style","display:none"),t.el.querySelector(".auth-section").removeAttribute("style"),t.el.querySelector(".veditor").focus(),k.comment.focus()})};m.off("click",S,_),m.on("click",S,_)}}]),e}(),m={on:function(e,t,n,r){t.addEventListener?t.addEventListener(e,n,r||!1):t.attachEvent?t.attachEvent("on"+e,n):t["on"+e]=n},off:function(e,t,n,r){t.removeEventListener?t.removeEventListener(e,n,r||!1):t.detachEvent?t.detachEvent("on"+e,n):t["on"+e]=null}},b={mail:function(e){return{k:/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/.test(e),v:e}},link:function(e){return e.length>0&&(e=/^(http|https)/.test(e)?e:"http://"+e),{k:!(e.length>0)||/(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(e),v:e}}},y=function(e,t){try{var n=e.getTime(),r=(new Date).getTime(),i=r-n,o=Math.floor(i/864e5);if(0===o){var a=i%864e5,s=Math.floor(a/36e5);if(0===s){var l=a%36e5,c=Math.floor(l/6e4);if(0===c){var u=l%6e4;return Math.round(u/1e3)+" "+t.seconds}return c+" "+t.minutes}return s+" "+t.hours}return o<0?t.now:o+" "+t.days}catch(e){console.log(e)}},x=function(){var e=new XMLHttpRequest;e.open("GET","https://api.ipify.org/?format=json",!0),e.onload=function(){if(this.status>=200&&this.status<400){var e=JSON.parse(this.response);u.ip=e.ip}},e.onerror=function(){},e.send()};e.exports=v},function(e,t,n){t=e.exports=n(13)(!1),t.push([e.i,'.valine {\n /************ Loading ************/ }\n .valine * {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n color: var(--color);\n -webkit-transition: all .3s ease;\n transition: all .3s ease;\n margin: initial;\n padding: initial; }\n .valine .vemoticon-img {\n display: inline-block;\n max-height: 32px;\n margin: 0 2px; }\n .valine .vsubmitting {\n margin: 1em 0; }\n .valine .vcancel-comment-reply {\n margin: 1.5em 0 .5em;\n cursor: pointer;\n color: var(--color-secondary);\n text-decoration: underline; }\n .valine .vinputs-area {\n overflow: hidden;\n position: relative;\n border: 1px solid var(--border-color); }\n .valine .vinputs-area .veditor-area {\n position: inherit; }\n .valine .vinputs-area .btn-wrap {\n position: absolute !important;\n right: 1.5em;\n bottom: 0; }\n .valine .vinputs-area .btn-wrap .vfunction-btn {\n display: inline-block; }\n .valine .vinputs-area .btn-wrap .vfunction-btn svg {\n fill: #bbb;\n cursor: pointer; }\n .valine .vinputs-area .btn-wrap .vfunction-btn svg:hover {\n fill: #777777; }\n .valine .vinputs-area .btn-wrap .vfunction-btn svg:active {\n fill: #777777; }\n .valine .vinputs-area .vextra-area {\n margin: .4em 0 .4em .5em; }\n .valine .vinputs-area .vextra-area .vsmile-icons {\n padding: .2em 0;\n border-top: 1px solid rgba(150, 150, 150, 0.08);\n border-radius: 0;\n margin: .3em 0;\n max-height: 145px;\n overflow: auto; }\n .valine .vinputs-area .vextra-area .vsmile-icons img {\n display: inline-block;\n width: auto !important;\n height: 28px !important;\n margin-right: 4px;\n cursor: pointer; }\n .valine .vinputs-area .vextra-area .vpreview-text {\n border-top: 1px solid rgba(150, 150, 150, 0.08);\n border-radius: 0;\n padding: .5em .5em;\n margin: .3em 0;\n max-height: 10em;\n overflow: auto; }\n .valine .vinputs-area .textarea-wrapper {\n color: var(--color-secondary);\n width: 100%;\n height: 100%;\n background: var(--background);\n position: relative;\n border-radius: 0; }\n .valine .vinputs-area .textarea-wrapper .comment_trigger {\n position: absolute;\n z-index: 10;\n width: 100%;\n height: 100%;\n background-color: var(--background);\n padding: 0 0 0 1.5em; }\n .valine .vinputs-area .textarea-wrapper .comment_trigger .avatar {\n position: absolute;\n width: 36px;\n height: 36px;\n position: absolute;\n top: 50%;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%); }\n .valine .vinputs-area .textarea-wrapper .comment_trigger .avatar img {\n border-radius: 100%;\n width: 36px;\n height: 36px; }\n .valine .vinputs-area .textarea-wrapper .comment_trigger .trigger_title {\n position: absolute;\n top: 50%;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n color: var(--color-secondary);\n font-size: 1.4em;\n margin-left: 3.5em; }\n .valine .vinputs-area .textarea-wrapper textarea {\n padding: 1em 1em 0;\n width: 100%;\n background: var(--background);\n border: none;\n resize: none;\n min-height: 8em;\n margin: 0; }\n .valine .vinputs-area .textarea-wrapper textarea:focus {\n border-color: var(--border-color);\n outline: 0; }\n .valine .vinputs-area .trigger-section {\n display: none; }\n .valine .vinputs-area .auth-section {\n display: -webkit-box;\n display: flex;\n display: -ms-flexbox;\n background: var(--background-secondary);\n padding: .3em .6em; }\n .valine .vinputs-area .auth-section .input-wrapper {\n -ms-flex: 1 1 27%;\n -webkit-box-flex: 1;\n flex: 1 1 27%;\n width: 27%; }\n .valine .vinputs-area .auth-section .input-wrapper input {\n color: var(--color-secondary);\n background: var(--background-secondary);\n border: none;\n border-radius: 0;\n padding: .6em;\n margin: 0;\n line-height: 2;\n font-size: 1em !important; }\n .valine .vinputs-area .auth-section .input-wrapper input:focus {\n border-color: var(--border-color);\n outline: 0; }\n .valine .vinputs-area .auth-section input {\n width: 100%; }\n .valine .vinputs-area .auth-section .post-action {\n -ms-flex: 1 1 19%;\n -webkit-box-flex: 1;\n flex: 1 1 19%;\n width: 19%;\n margin: 0;\n padding: 2px 0 0; }\n .valine .vinputs-area .auth-section .post-action button {\n color: var(--background);\n width: 100%;\n line-height: 2;\n font-weight: bolder;\n border-radius: 30px;\n border: 1px solid var(--border-color);\n background-color: var(--color);\n padding: .4em .5em;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n font-size: 1em !important; }\n .valine .vinputs-area .auth-section .post-action button:hover {\n background-color: var(--color-secondary); }\n @media screen and (max-width: 720px) {\n .valine .vinputs-area .auth-section {\n display: block; }\n .valine .vinputs-area .auth-section .input-wrapper, .valine .vinputs-area .auth-section .post-action {\n -ms-flex: 1 1 100%;\n -webkit-box-flex: 1;\n flex: 1 1 100%;\n padding-right: 0;\n width: 100%; } }\n .valine .vinputs-area .vmark {\n position: absolute;\n background: var(--color);\n width: 100%;\n height: 100%;\n left: 0;\n top: 0; }\n .valine .vinputs-area .vmark .valert {\n padding: 2em 0 0 0; }\n .valine .vinputs-area .vmark .valert .vtext {\n color: var(--background);\n padding: 15px; }\n .valine .vinputs-area .vmark .valert .vcode {\n width: 75px;\n border-radius: 5px;\n background: var(--background-secondary); }\n .valine .vinputs-area .vmark .valert .vcode:focus {\n background-color: var(--background); }\n @media screen and (max-width: 720px) {\n .valine .vinputs-area .vmark .valert {\n padding: 8em 0; }\n .valine .vinputs-area .vmark .valert .vtext {\n color: var(--background);\n padding: 10px; } }\n .valine .info {\n margin: 2em 0;\n font-size: 16px;\n line-height: 1;\n position: relative;\n text-align: center; }\n .valine .info::before {\n display: block;\n content: \'\';\n border-top: 1px solid var(--border-color);\n margin: 0 25%;\n position: relative;\n top: 10px;\n z-index: 1; }\n .valine .info svg {\n margin-right: 2px;\n overflow: hidden;\n fill: currentColor; }\n .valine .info .col {\n display: inline-block;\n padding: 0 20px;\n position: relative;\n background: var(--background);\n z-index: 2; }\n .valine .power {\n color: var(--color-secondary);\n font-size: 0.625em !important;\n position: relative; }\n .valine a {\n text-decoration: none;\n border: none; }\n .valine .txt-center {\n text-align: center; }\n .valine .float-right {\n float: right !important; }\n .valine .pd5 {\n padding: 5px; }\n .valine .pd10 {\n padding: 10px; }\n .valine .vbtn {\n display: inline-block;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border: 1px solid var(--border-color);\n background-color: var(--color);\n border-radius: .1em;\n color: var(--background);\n padding: .5em 1.5em;\n cursor: pointer;\n white-space: nowrap;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n outline: none;\n min-width: 60px;\n max-width: 100%;\n margin: 0 1em; }\n .valine .vbtn:active,\n .valine .vbtn:hover {\n border-color: var(--border-color); }\n .valine .vpage {\n margin: 1.5em 0; }\n .valine .vpage .more {\n width: 100%;\n height: 2.5em;\n line-height: 2.5em;\n text-align: center;\n cursor: pointer;\n color: var(--color);\n background: var(--background-secondary);\n border-radius: 1.25em; }\n .valine .vlist {\n width: 100%;\n list-style: none;\n margin: 0;\n padding: 0; }\n .valine .vlist .vcard {\n list-style: none;\n word-break: break-all; }\n .valine .vlist .vcard .vcomment-body {\n padding: 2em .5em 2em;\n border-top: 1px solid rgba(150, 150, 150, 0.08); }\n @media screen and (max-width: 600px) {\n .valine .vlist .vcard .vcomment-body {\n padding: 1em 1em 1em;\n border-top: 0 !important; } }\n .valine .vlist .vcard .vcomment-body:hover .vat {\n background: var(--color) !important; }\n .valine .vlist .vcard .vcomment-body .vat {\n float: right;\n background: transparent;\n color: var(--background);\n padding: .2em 1em;\n line-height: 1.2;\n cursor: pointer;\n word-break: keep-all;\n white-space: nowrap;\n text-transform: uppercase; }\n .valine .vlist .vcard .vcomment-body .vavatar {\n margin-right: 1em;\n margin-top: 0.1em;\n display: inline-block;\n height: 36px;\n width: 36px;\n position: absolute;\n top: 0;\n border-radius: 50%; }\n .valine .vlist .vcard .vcomment-body .vhead {\n line-height: 1;\n display: block;\n margin-bottom: .3em;\n position: relative; }\n .valine .vlist .vcard .vcomment-body .vhead .vmeta-info {\n margin: 0 0 0 48px; }\n .valine .vlist .vcard .vcomment-body .vhead .vname {\n font-weight: bolder;\n font-size: 1em;\n color: var(--color); }\n .valine .vlist .vcard .vcomment-body .vhead .spacer {\n color: var(--color-secondary);\n margin-left: 0.3em;\n margin-right: 0.3em; }\n .valine .vlist .vcard .vcomment-body .vhead .vtime {\n color: var(--color-secondary);\n display: inline-block;\n font-weight: normal;\n font-size: 90%; }\n .valine .vlist .vcard .vcomment-body .text-wrapper {\n overflow: hidden;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin-left: 48px; }\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment {\n position: relative;\n overflow: auto;\n color: var(--color); }\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment blockquote p {\n padding-left: 12px; }\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment p {\n word-wrap: break-word;\n white-space: pre-wrap;\n word-break: break-all;\n text-align: justify;\n line-height: 1.8; }\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment pre {\n overflow: auto;\n padding: 6px 10px;\n word-wrap: break-word;\n color: var(--color-secondary);\n background: var(--background-secondary);\n border-radius: 3px;\n font-size: .875rem;\n margin: 5px 0; }\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand {\n cursor: pointer;\n max-height: 11.25rem;\n overflow: hidden; }\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand:before {\n display: block;\n content: "";\n position: absolute;\n width: 100%;\n left: 0;\n top: 0;\n bottom: 3.15rem;\n pointer-events: none; }\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand:after {\n display: block;\n content: "";\n text-align: center;\n color: var(--color-secondary);\n position: absolute;\n width: 100%;\n height: 3.15rem;\n line-height: 3.15rem;\n left: 0;\n bottom: 0;\n pointer-events: none; }\n .valine .vlist .vcard .vcomment-children {\n margin-left: 48px; }\n @media screen and (max-width: 600px) {\n .valine .vlist .vcard .vcomment-children {\n margin-left: 16px;\n border-left: 1px solid var(--border-color); } }\n .valine .vlist .vcard .vcomment-children .vshow-children-wrapper {\n margin: 0 0 2em; }\n .valine .vlist .vcard .vcomment-children .vshow-children-wrapper .vshow-children {\n color: var(--color-secondary);\n text-decoration: underline;\n cursor: pointer; }\n .valine .vlist .vempty {\n padding: 20px;\n text-align: center;\n color: var(--color-secondary); }\n .valine .spinner {\n margin: 10px auto;\n width: 50px;\n height: 30px;\n text-align: center;\n font-size: 10px; }\n .valine .spinner > div {\n background-color: var(--background-secondary);\n height: 100%;\n width: 6px;\n margin-right: 3px;\n display: inline-block;\n -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;\n animation: sk-stretchdelay 1.2s infinite ease-in-out; }\n .valine .spinner .r2 {\n -webkit-animation-delay: -1.1s;\n animation-delay: -1.1s; }\n .valine .spinner .r3 {\n -webkit-animation-delay: -1.0s;\n animation-delay: -1.0s; }\n .valine .spinner .r4 {\n -webkit-animation-delay: -0.9s;\n animation-delay: -0.9s; }\n .valine .spinner .r5 {\n -webkit-animation-delay: -0.8s;\n animation-delay: -0.8s; }\n\n@-webkit-keyframes sk-stretchdelay {\n 0%,\n 40%,\n 100% {\n -webkit-transform: scaleY(0.4); }\n 20% {\n -webkit-transform: scaleY(1); } }\n\n@keyframes sk-stretchdelay {\n 0%,\n 40%,\n 100% {\n transform: scaleY(0.4);\n -webkit-transform: scaleY(0.4); }\n 20% {\n transform: scaleY(1);\n -webkit-transform: scaleY(1); } }\n',""])},function(e,t){function n(e,t){var n=e[1]||"",i=e[3];if(!i)return n;if(t&&"function"==typeof btoa){var o=r(i);return[n].concat(i.sources.map(function(e){return"/*# sourceURL="+i.sourceRoot+e+" */"})).concat([o]).join("\n")}return[n].join("\n")}function r(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?"@media "+t[2]+"{"+r+"}":r}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i=0&&y.splice(t,1)}function s(e){var t=document.createElement("style");return e.attrs.type="text/css",c(t,e.attrs),o(e,t),t}function l(e){var t=document.createElement("link");return e.attrs.type="text/css",e.attrs.rel="stylesheet",c(t,e.attrs),o(e,t),t}function c(e,t){Object.keys(t).forEach(function(n){e.setAttribute(n,t[n])})}function u(e,t){var n,r,i,o;if(t.transform&&e.css){if(!(o=t.transform(e.css)))return function(){};e.css=o}if(t.singleton){var c=b++;n=m||(m=s(t)),r=p.bind(null,n,c,!1),i=p.bind(null,n,c,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=l(t),r=h.bind(null,n,t),i=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(t),r=d.bind(null,n),i=function(){a(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else i()}}function p(e,t,n,r){var i=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=k(t,i);else{var o=document.createTextNode(i),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(o,a[t]):e.appendChild(o)}}function d(e,t){var n=t.css,r=t.media;if(r&&e.setAttribute("media",r),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}function h(e,t,n){var r=n.css,i=n.sourceMap,o=void 0===t.convertToAbsoluteUrls&&i;(t.convertToAbsoluteUrls||o)&&(r=x(r)),i&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */");var a=new Blob([r],{type:"text/css"}),s=e.href;e.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var f={},g=function(e){var t;return function(){return void 0===t&&(t=e.apply(this,arguments)),t}}(function(){return window&&document&&document.all&&!window.atob}),v=function(e){var t={};return function(n){return void 0===t[n]&&(t[n]=e.call(this,n)),t[n]}}(function(e){return document.querySelector(e)}),m=null,b=0,y=[],x=n(17);e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");t=t||{},t.attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||(t.singleton=g()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=i(e,t);return r(n,t),function(e){for(var o=[],a=0;a";var y=i(l),x=o[n],k=p(y.html,function(e,t){var i=-1!==d.indexOf(x,e),o=c(n,e,t,i);if(!r(o))return o;if(i)return t=f(n,e,t,v),t?e+'="'+t+'"':e;var o=h(n,e,t,i);return r(o)?void 0:o}),l="<"+n;return k&&(l+=" "+k),y.closing&&(l+=" /"),l+=">"}var b=s(n,l,m);return r(b)?g(l):b},g);return m&&(b=m.remove(b)),b},e.exports=a}])});
-//# sourceMappingURL=Valine.min.js.map
\ No newline at end of file
diff --git a/dist/Valine.min.js.map b/dist/Valine.min.js.map
deleted file mode 100644
index 8f059995..00000000
--- a/dist/Valine.min.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap b59d95920c8eb2322d21","webpack:///Valine.min.js","webpack:///./~/cssfilter/lib/index.js","webpack:///./~/xss/lib/util.js","webpack:///./~/cssfilter/lib/default.js","webpack:///./~/cssfilter/lib/util.js","webpack:///./~/xss/lib/default.js","webpack:///./~/xss/lib/parser.js","webpack:///./~/blueimp-md5/js/md5.js","webpack:///./~/marked/lib/marked.js","webpack:///./~/string-format/index.js","webpack:///./src/Valine.scss?0329","webpack:///./~/xss/lib/index.js","webpack:///./src/Valine.js","webpack:///./src/Valine.scss","webpack:///./~/css-loader/lib/css-base.js","webpack:///./~/cssfilter/lib/css.js","webpack:///./~/cssfilter/lib/parser.js","webpack:///./~/style-loader/lib/addStyles.js","webpack:///./~/style-loader/lib/urls.js","webpack:///(webpack)/buildin/global.js","webpack:///./~/xss/lib/xss.js"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","moduleId","installedModules","i","l","modules","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","filterCSS","html","options","FilterCSS","process","DEFAULT","window","indexOf","arr","item","j","Array","length","forEach","fn","scope","trim","str","String","replace","spaceIndex","reg","match","exec","index","getDefaultWhiteList","whiteList","onAttr","onIgnoreAttr","safeAttrValue","REGEXP_URL_JAVASCRIPT","test","trimRight","a","abbr","address","area","article","aside","audio","b","bdi","bdo","big","blockquote","br","caption","center","cite","code","col","colgroup","dd","del","details","div","dl","dt","em","font","footer","h1","h2","h3","h4","h5","h6","header","hr","img","ins","li","mark","nav","ol","pre","section","small","span","sub","sup","strong","table","tbody","td","tfoot","th","thead","tr","tt","u","ul","video","onTag","tag","onIgnoreTag","onTagAttr","onIgnoreTagAttr","escapeHtml","REGEXP_LT","REGEXP_GT","cssFilter","friendlyAttrValue","_","substr","REGEXP_DEFAULT_ON_TAG_ATTR_4","lastIndex","REGEXP_DEFAULT_ON_TAG_ATTR_7","REGEXP_DEFAULT_ON_TAG_ATTR_8","defaultCSSFilter","escapeAttrValue","escapeQuote","REGEXP_QUOTE","unescapeQuote","REGEXP_QUOTE_2","escapeHtmlEntities","REGEXP_ATTR_VALUE_1","fromCharCode","parseInt","escapeDangerHtml5Entities","REGEXP_ATTR_VALUE_COLON","REGEXP_ATTR_VALUE_NEWLINE","clearNonPrintableCharacter","str2","len","charCodeAt","charAt","onIgnoreTagStripAll","StripTagBody","tags","next","isRemoveTag","isRemoveAllTag","isArray","removeList","posStart","isClosing","ret","end","position","push","remove","rethtml","lastPos","pos","slice","stripCommentTag","STRIP_COMMENT_TAG_REGEXP","stripBlankChar","chars","split","filter","char","join","getDefaultCSSWhiteList","getTagName","tagName","toLowerCase","parseTag","tagStart","quoteStart","currentPos","currentTagName","currentHtml","chariterator","ic","parseAttr","addAttr","REGEXP_ILLEGAL_ATTR_NAME","retAttrs","tmpName","v","findNextEqual","findBeforeEqual","stripQuoteWrap","isQuoteWrapString","text","$","safeAdd","x","y","lsw","bitRotateLeft","num","cnt","md5cmn","q","t","md5ff","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","input","output","length32","rstr2binl","undefined","length8","rstrMD5","rstrHMACMD5","key","data","hash","bkey","ipad","opad","concat","rstr2hex","hexTab","str2rstrUTF8","unescape","encodeURIComponent","rawMD5","hexMD5","rawHMACMD5","k","hexHMACMD5","md5","string","raw","Lexer","tokens","links","create","marked","defaults","rules","block","normal","pedantic","gfm","tables","InlineLexer","inline","renderer","Renderer","Error","breaks","TextRenderer","Parser","token","slugger","Slugger","seen","escape","encode","escapeTest","escapeReplace","ch","replacements","escapeTestNoEncode","escapeReplaceNoEncode","substring","edit","regex","opt","source","val","getRegex","RegExp","cleanUrl","sanitize","base","href","prot","decodeURIComponent","e","originIndependentUrl","resolveUrl","encodeURI","baseUrls","rtrim","noop","merge","obj","target","arguments","splitCells","tableRow","count","row","offset","escaped","curr","cells","splice","invert","suffLen","currChar","findClosingBracket","level","src","callback","toString","pending","highlight","lex","done","err","out","parse","type","lang","message","silent","newline","fences","heading","nptable","list","def","lheading","paragraph","_label","_title","bullet","_tag","_comment","top","loose","cap","bull","listStart","listItems","space","isordered","istask","ischecked","lastToken","codeBlockStyle","depth","align","ordered","start","smartLists","task","checked","sanitizer","title","autolink","url","link","reflink","nolink","_punctuation","_escapes","_scheme","_email","_attribute","_href","_extended_email","_backpedal","prevCapZero","inLink","inRawBlock","lastParenIndex","linkLen","outputLink","escapes","codespan","mangle","smartypants","image","Math","random","infostring","langPrefix","quote","headerIds","headerPrefix","slug","xhtml","body","listitem","checkbox","tablerow","content","tablecell","flags","baseUrl","inlineText","reverse","tok","pop","peek","parseText","cell","errMsg","console","log","originalSlug","setOptions","getDefaults","parser","lexer","inlineLexer","global","ValueError","transformers","template","args","idx","state","literal","_key","xf","path","reduce","maybe","format","extend","$format","unshift","apply","transform","locals","filterXSS","FilterXSS","self","DedicatedWorkerGlobalScope","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","props","descriptor","writable","protoProps","staticProps","require","md","xss","crypto","i18n_set","nick","mail","no_comment_yet","submit","reply","cancel_reply","comment_count","cancel","confirm","continue","more","preview","emoji","error99","error100","error401","error403","seconds","minutes","hours","days","now","input_tips","defaultComment","ip","comment","rid","at","ua","navigator","userAgent","location","pathname","pin","disable_av_init","MAX_NEST_LEVEL","PAGE_SIZE","store","localStorage","Valine","option","_root","version","getIp","init","av","AV","maxNest","pageSize","i18n","el","document","querySelectorAll","count_el","classList","add","placeholder","eleHTML","innerHTML","vempty","querySelector","nodata","show","txt","setAttribute","hide","_smile_wrapper","smile_names","emoticon_list","createElement","emoticon_url","appendChild","prefix","serverURLs","app_id","appId","appKey","app_key","ex","issue","_spinner","vloading","loading","vsubmitting","submitting","_mark","alert","_vbtns","_cBtn","ctxt","_oBtn","otxt","addEventListener","_ok","Event","on","cb","query1","Query","equalTo","query2","query","or","notEqualTo","then","catch","bind","vsmiles","textField","imgSrc","decodeURI","selection","focus","sel","createRange","selectionStart","startPos","endPos","selectionEnd","cursorPos","submitBtn","getAttribute","removeAttribute","comment_trigger","reset","expandEvt","offsetHeight","parent_count","parentQuery","page_num","doCloudQuery","rets","results","_parent_vcard","insertComment","nestQuery","_vpage","_vmore","vcard","_vchild","_vlist","_id","_show_children_wrapper","_show_children","error","vl","vlist","_vcard","id","emailHash","gravatar_url","timeAgo","_vlis","_as","insertBefore","_vcontent","bindAtEvt","mapping","veditor","vnick","vlink","vmail","inputs","_v","_el","getCache","getItem","JSON","smile_icons","preview_text","submitEvt","isWhiteAttr","mailRet","check","linkRet","commitEvt","smile_btn","preview_btn","getAcl","acl","ACL","setPublicReadAccess","setPublicWriteAccess","Ct","set","setACL","save","commentItem","setItem","stringify","_count","innerText","Number","_vat","off","handler","capture","attachEvent","removeEventListener","detachEvent","date","oldTime","getTime","currTime","Date","diffValue","floor","leave1","leave2","leave3","round","request","XMLHttpRequest","open","onload","status","response","onerror","send","cssWithMappingToString","useSourceMap","cssMapping","btoa","sourceMapping","toComment","sources","map","sourceRoot","sourceMap","mediaQuery","alreadyImportedModules","isNull","shallowCopyObject","parseStyle","css","me","sourcePosition","isWhite","opts","addNewAttr","isParenthesisOpen","retCSS","cssLength","addStylesToDom","styles","domStyle","stylesInDom","refs","parts","addStyle","listToStyles","newStyles","media","part","insertStyleElement","style","getElement","insertInto","lastStyleElementInsertedAtTop","stylesInsertedAtTop","insertAt","nextSibling","firstChild","removeStyleElement","parentNode","removeChild","createStyleElement","attrs","addAttrs","createLinkElement","rel","keys","update","result","singleton","styleIndex","singletonCounter","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","updateLink","applyToTag","newObj","styleSheet","cssText","replaceText","cssNode","createTextNode","childNodes","autoFixUrls","convertToAbsoluteUrls","fixUrls","blob","oldSrc","isOldIE","memo","all","atob","selector","DEBUG","newList","mayRemove","textStore","replacement","Boolean","protocol","host","currentDir","fullMatch","origUrl","unquotedOrigUrl","$1","newUrl","g","Function","eval","getAttrs","closing","stripIgnoreTag","allowCommentTag","stripIgnoreTagBody","retHtml","info","whiteAttrList","attrsHtml"],"mappings":"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","file":"Valine.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Valine\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Valine\"] = factory();\n\telse\n\t\troot[\"Valine\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b59d95920c8eb2322d21","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Valine\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Valine\"] = factory();\n\telse\n\t\troot[\"Valine\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 11);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = __webpack_require__(2);\nvar FilterCSS = __webpack_require__(14);\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n var xss = new FilterCSS(options);\n return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== 'undefined') {\n window.filterCSS = module.exports;\n}\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\n indexOf: function(arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function(arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function(str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n },\n spaceIndex: function(str) {\n var reg = /\\s|\\n|\\t/;\n var match = reg.exec(str);\n return match ? match.index : -1;\n }\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nfunction getDefaultWhiteList () {\n // 白名单值说明:\n // true: 允许该属性\n // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许\n // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许\n // 除上面列出的值外均表示不允许\n var whiteList = {};\n\n whiteList['align-content'] = false; // default: auto\n whiteList['align-items'] = false; // default: auto\n whiteList['align-self'] = false; // default: auto\n whiteList['alignment-adjust'] = false; // default: auto\n whiteList['alignment-baseline'] = false; // default: baseline\n whiteList['all'] = false; // default: depending on individual properties\n whiteList['anchor-point'] = false; // default: none\n whiteList['animation'] = false; // default: depending on individual properties\n whiteList['animation-delay'] = false; // default: 0\n whiteList['animation-direction'] = false; // default: normal\n whiteList['animation-duration'] = false; // default: 0\n whiteList['animation-fill-mode'] = false; // default: none\n whiteList['animation-iteration-count'] = false; // default: 1\n whiteList['animation-name'] = false; // default: none\n whiteList['animation-play-state'] = false; // default: running\n whiteList['animation-timing-function'] = false; // default: ease\n whiteList['azimuth'] = false; // default: center\n whiteList['backface-visibility'] = false; // default: visible\n whiteList['background'] = true; // default: depending on individual properties\n whiteList['background-attachment'] = true; // default: scroll\n whiteList['background-clip'] = true; // default: border-box\n whiteList['background-color'] = true; // default: transparent\n whiteList['background-image'] = true; // default: none\n whiteList['background-origin'] = true; // default: padding-box\n whiteList['background-position'] = true; // default: 0% 0%\n whiteList['background-repeat'] = true; // default: repeat\n whiteList['background-size'] = true; // default: auto\n whiteList['baseline-shift'] = false; // default: baseline\n whiteList['binding'] = false; // default: none\n whiteList['bleed'] = false; // default: 6pt\n whiteList['bookmark-label'] = false; // default: content()\n whiteList['bookmark-level'] = false; // default: none\n whiteList['bookmark-state'] = false; // default: open\n whiteList['border'] = true; // default: depending on individual properties\n whiteList['border-bottom'] = true; // default: depending on individual properties\n whiteList['border-bottom-color'] = true; // default: current color\n whiteList['border-bottom-left-radius'] = true; // default: 0\n whiteList['border-bottom-right-radius'] = true; // default: 0\n whiteList['border-bottom-style'] = true; // default: none\n whiteList['border-bottom-width'] = true; // default: medium\n whiteList['border-collapse'] = true; // default: separate\n whiteList['border-color'] = true; // default: depending on individual properties\n whiteList['border-image'] = true; // default: none\n whiteList['border-image-outset'] = true; // default: 0\n whiteList['border-image-repeat'] = true; // default: stretch\n whiteList['border-image-slice'] = true; // default: 100%\n whiteList['border-image-source'] = true; // default: none\n whiteList['border-image-width'] = true; // default: 1\n whiteList['border-left'] = true; // default: depending on individual properties\n whiteList['border-left-color'] = true; // default: current color\n whiteList['border-left-style'] = true; // default: none\n whiteList['border-left-width'] = true; // default: medium\n whiteList['border-radius'] = true; // default: 0\n whiteList['border-right'] = true; // default: depending on individual properties\n whiteList['border-right-color'] = true; // default: current color\n whiteList['border-right-style'] = true; // default: none\n whiteList['border-right-width'] = true; // default: medium\n whiteList['border-spacing'] = true; // default: 0\n whiteList['border-style'] = true; // default: depending on individual properties\n whiteList['border-top'] = true; // default: depending on individual properties\n whiteList['border-top-color'] = true; // default: current color\n whiteList['border-top-left-radius'] = true; // default: 0\n whiteList['border-top-right-radius'] = true; // default: 0\n whiteList['border-top-style'] = true; // default: none\n whiteList['border-top-width'] = true; // default: medium\n whiteList['border-width'] = true; // default: depending on individual properties\n whiteList['bottom'] = false; // default: auto\n whiteList['box-decoration-break'] = true; // default: slice\n whiteList['box-shadow'] = true; // default: none\n whiteList['box-sizing'] = true; // default: content-box\n whiteList['box-snap'] = true; // default: none\n whiteList['box-suppress'] = true; // default: show\n whiteList['break-after'] = true; // default: auto\n whiteList['break-before'] = true; // default: auto\n whiteList['break-inside'] = true; // default: auto\n whiteList['caption-side'] = false; // default: top\n whiteList['chains'] = false; // default: none\n whiteList['clear'] = true; // default: none\n whiteList['clip'] = false; // default: auto\n whiteList['clip-path'] = false; // default: none\n whiteList['clip-rule'] = false; // default: nonzero\n whiteList['color'] = true; // default: implementation dependent\n whiteList['color-interpolation-filters'] = true; // default: auto\n whiteList['column-count'] = false; // default: auto\n whiteList['column-fill'] = false; // default: balance\n whiteList['column-gap'] = false; // default: normal\n whiteList['column-rule'] = false; // default: depending on individual properties\n whiteList['column-rule-color'] = false; // default: current color\n whiteList['column-rule-style'] = false; // default: medium\n whiteList['column-rule-width'] = false; // default: medium\n whiteList['column-span'] = false; // default: none\n whiteList['column-width'] = false; // default: auto\n whiteList['columns'] = false; // default: depending on individual properties\n whiteList['contain'] = false; // default: none\n whiteList['content'] = false; // default: normal\n whiteList['counter-increment'] = false; // default: none\n whiteList['counter-reset'] = false; // default: none\n whiteList['counter-set'] = false; // default: none\n whiteList['crop'] = false; // default: auto\n whiteList['cue'] = false; // default: depending on individual properties\n whiteList['cue-after'] = false; // default: none\n whiteList['cue-before'] = false; // default: none\n whiteList['cursor'] = false; // default: auto\n whiteList['direction'] = false; // default: ltr\n whiteList['display'] = true; // default: depending on individual properties\n whiteList['display-inside'] = true; // default: auto\n whiteList['display-list'] = true; // default: none\n whiteList['display-outside'] = true; // default: inline-level\n whiteList['dominant-baseline'] = false; // default: auto\n whiteList['elevation'] = false; // default: level\n whiteList['empty-cells'] = false; // default: show\n whiteList['filter'] = false; // default: none\n whiteList['flex'] = false; // default: depending on individual properties\n whiteList['flex-basis'] = false; // default: auto\n whiteList['flex-direction'] = false; // default: row\n whiteList['flex-flow'] = false; // default: depending on individual properties\n whiteList['flex-grow'] = false; // default: 0\n whiteList['flex-shrink'] = false; // default: 1\n whiteList['flex-wrap'] = false; // default: nowrap\n whiteList['float'] = false; // default: none\n whiteList['float-offset'] = false; // default: 0 0\n whiteList['flood-color'] = false; // default: black\n whiteList['flood-opacity'] = false; // default: 1\n whiteList['flow-from'] = false; // default: none\n whiteList['flow-into'] = false; // default: none\n whiteList['font'] = true; // default: depending on individual properties\n whiteList['font-family'] = true; // default: implementation dependent\n whiteList['font-feature-settings'] = true; // default: normal\n whiteList['font-kerning'] = true; // default: auto\n whiteList['font-language-override'] = true; // default: normal\n whiteList['font-size'] = true; // default: medium\n whiteList['font-size-adjust'] = true; // default: none\n whiteList['font-stretch'] = true; // default: normal\n whiteList['font-style'] = true; // default: normal\n whiteList['font-synthesis'] = true; // default: weight style\n whiteList['font-variant'] = true; // default: normal\n whiteList['font-variant-alternates'] = true; // default: normal\n whiteList['font-variant-caps'] = true; // default: normal\n whiteList['font-variant-east-asian'] = true; // default: normal\n whiteList['font-variant-ligatures'] = true; // default: normal\n whiteList['font-variant-numeric'] = true; // default: normal\n whiteList['font-variant-position'] = true; // default: normal\n whiteList['font-weight'] = true; // default: normal\n whiteList['grid'] = false; // default: depending on individual properties\n whiteList['grid-area'] = false; // default: depending on individual properties\n whiteList['grid-auto-columns'] = false; // default: auto\n whiteList['grid-auto-flow'] = false; // default: none\n whiteList['grid-auto-rows'] = false; // default: auto\n whiteList['grid-column'] = false; // default: depending on individual properties\n whiteList['grid-column-end'] = false; // default: auto\n whiteList['grid-column-start'] = false; // default: auto\n whiteList['grid-row'] = false; // default: depending on individual properties\n whiteList['grid-row-end'] = false; // default: auto\n whiteList['grid-row-start'] = false; // default: auto\n whiteList['grid-template'] = false; // default: depending on individual properties\n whiteList['grid-template-areas'] = false; // default: none\n whiteList['grid-template-columns'] = false; // default: none\n whiteList['grid-template-rows'] = false; // default: none\n whiteList['hanging-punctuation'] = false; // default: none\n whiteList['height'] = true; // default: auto\n whiteList['hyphens'] = false; // default: manual\n whiteList['icon'] = false; // default: auto\n whiteList['image-orientation'] = false; // default: auto\n whiteList['image-resolution'] = false; // default: normal\n whiteList['ime-mode'] = false; // default: auto\n whiteList['initial-letters'] = false; // default: normal\n whiteList['inline-box-align'] = false; // default: last\n whiteList['justify-content'] = false; // default: auto\n whiteList['justify-items'] = false; // default: auto\n whiteList['justify-self'] = false; // default: auto\n whiteList['left'] = false; // default: auto\n whiteList['letter-spacing'] = true; // default: normal\n whiteList['lighting-color'] = true; // default: white\n whiteList['line-box-contain'] = false; // default: block inline replaced\n whiteList['line-break'] = false; // default: auto\n whiteList['line-grid'] = false; // default: match-parent\n whiteList['line-height'] = false; // default: normal\n whiteList['line-snap'] = false; // default: none\n whiteList['line-stacking'] = false; // default: depending on individual properties\n whiteList['line-stacking-ruby'] = false; // default: exclude-ruby\n whiteList['line-stacking-shift'] = false; // default: consider-shifts\n whiteList['line-stacking-strategy'] = false; // default: inline-line-height\n whiteList['list-style'] = true; // default: depending on individual properties\n whiteList['list-style-image'] = true; // default: none\n whiteList['list-style-position'] = true; // default: outside\n whiteList['list-style-type'] = true; // default: disc\n whiteList['margin'] = true; // default: depending on individual properties\n whiteList['margin-bottom'] = true; // default: 0\n whiteList['margin-left'] = true; // default: 0\n whiteList['margin-right'] = true; // default: 0\n whiteList['margin-top'] = true; // default: 0\n whiteList['marker-offset'] = false; // default: auto\n whiteList['marker-side'] = false; // default: list-item\n whiteList['marks'] = false; // default: none\n whiteList['mask'] = false; // default: border-box\n whiteList['mask-box'] = false; // default: see individual properties\n whiteList['mask-box-outset'] = false; // default: 0\n whiteList['mask-box-repeat'] = false; // default: stretch\n whiteList['mask-box-slice'] = false; // default: 0 fill\n whiteList['mask-box-source'] = false; // default: none\n whiteList['mask-box-width'] = false; // default: auto\n whiteList['mask-clip'] = false; // default: border-box\n whiteList['mask-image'] = false; // default: none\n whiteList['mask-origin'] = false; // default: border-box\n whiteList['mask-position'] = false; // default: center\n whiteList['mask-repeat'] = false; // default: no-repeat\n whiteList['mask-size'] = false; // default: border-box\n whiteList['mask-source-type'] = false; // default: auto\n whiteList['mask-type'] = false; // default: luminance\n whiteList['max-height'] = true; // default: none\n whiteList['max-lines'] = false; // default: none\n whiteList['max-width'] = true; // default: none\n whiteList['min-height'] = true; // default: 0\n whiteList['min-width'] = true; // default: 0\n whiteList['move-to'] = false; // default: normal\n whiteList['nav-down'] = false; // default: auto\n whiteList['nav-index'] = false; // default: auto\n whiteList['nav-left'] = false; // default: auto\n whiteList['nav-right'] = false; // default: auto\n whiteList['nav-up'] = false; // default: auto\n whiteList['object-fit'] = false; // default: fill\n whiteList['object-position'] = false; // default: 50% 50%\n whiteList['opacity'] = false; // default: 1\n whiteList['order'] = false; // default: 0\n whiteList['orphans'] = false; // default: 2\n whiteList['outline'] = false; // default: depending on individual properties\n whiteList['outline-color'] = false; // default: invert\n whiteList['outline-offset'] = false; // default: 0\n whiteList['outline-style'] = false; // default: none\n whiteList['outline-width'] = false; // default: medium\n whiteList['overflow'] = false; // default: depending on individual properties\n whiteList['overflow-wrap'] = false; // default: normal\n whiteList['overflow-x'] = false; // default: visible\n whiteList['overflow-y'] = false; // default: visible\n whiteList['padding'] = true; // default: depending on individual properties\n whiteList['padding-bottom'] = true; // default: 0\n whiteList['padding-left'] = true; // default: 0\n whiteList['padding-right'] = true; // default: 0\n whiteList['padding-top'] = true; // default: 0\n whiteList['page'] = false; // default: auto\n whiteList['page-break-after'] = false; // default: auto\n whiteList['page-break-before'] = false; // default: auto\n whiteList['page-break-inside'] = false; // default: auto\n whiteList['page-policy'] = false; // default: start\n whiteList['pause'] = false; // default: implementation dependent\n whiteList['pause-after'] = false; // default: implementation dependent\n whiteList['pause-before'] = false; // default: implementation dependent\n whiteList['perspective'] = false; // default: none\n whiteList['perspective-origin'] = false; // default: 50% 50%\n whiteList['pitch'] = false; // default: medium\n whiteList['pitch-range'] = false; // default: 50\n whiteList['play-during'] = false; // default: auto\n whiteList['position'] = false; // default: static\n whiteList['presentation-level'] = false; // default: 0\n whiteList['quotes'] = false; // default: text\n whiteList['region-fragment'] = false; // default: auto\n whiteList['resize'] = false; // default: none\n whiteList['rest'] = false; // default: depending on individual properties\n whiteList['rest-after'] = false; // default: none\n whiteList['rest-before'] = false; // default: none\n whiteList['richness'] = false; // default: 50\n whiteList['right'] = false; // default: auto\n whiteList['rotation'] = false; // default: 0\n whiteList['rotation-point'] = false; // default: 50% 50%\n whiteList['ruby-align'] = false; // default: auto\n whiteList['ruby-merge'] = false; // default: separate\n whiteList['ruby-position'] = false; // default: before\n whiteList['shape-image-threshold'] = false; // default: 0.0\n whiteList['shape-outside'] = false; // default: none\n whiteList['shape-margin'] = false; // default: 0\n whiteList['size'] = false; // default: auto\n whiteList['speak'] = false; // default: auto\n whiteList['speak-as'] = false; // default: normal\n whiteList['speak-header'] = false; // default: once\n whiteList['speak-numeral'] = false; // default: continuous\n whiteList['speak-punctuation'] = false; // default: none\n whiteList['speech-rate'] = false; // default: medium\n whiteList['stress'] = false; // default: 50\n whiteList['string-set'] = false; // default: none\n whiteList['tab-size'] = false; // default: 8\n whiteList['table-layout'] = false; // default: auto\n whiteList['text-align'] = true; // default: start\n whiteList['text-align-last'] = true; // default: auto\n whiteList['text-combine-upright'] = true; // default: none\n whiteList['text-decoration'] = true; // default: none\n whiteList['text-decoration-color'] = true; // default: currentColor\n whiteList['text-decoration-line'] = true; // default: none\n whiteList['text-decoration-skip'] = true; // default: objects\n whiteList['text-decoration-style'] = true; // default: solid\n whiteList['text-emphasis'] = true; // default: depending on individual properties\n whiteList['text-emphasis-color'] = true; // default: currentColor\n whiteList['text-emphasis-position'] = true; // default: over right\n whiteList['text-emphasis-style'] = true; // default: none\n whiteList['text-height'] = true; // default: auto\n whiteList['text-indent'] = true; // default: 0\n whiteList['text-justify'] = true; // default: auto\n whiteList['text-orientation'] = true; // default: mixed\n whiteList['text-overflow'] = true; // default: clip\n whiteList['text-shadow'] = true; // default: none\n whiteList['text-space-collapse'] = true; // default: collapse\n whiteList['text-transform'] = true; // default: none\n whiteList['text-underline-position'] = true; // default: auto\n whiteList['text-wrap'] = true; // default: normal\n whiteList['top'] = false; // default: auto\n whiteList['transform'] = false; // default: none\n whiteList['transform-origin'] = false; // default: 50% 50% 0\n whiteList['transform-style'] = false; // default: flat\n whiteList['transition'] = false; // default: depending on individual properties\n whiteList['transition-delay'] = false; // default: 0s\n whiteList['transition-duration'] = false; // default: 0s\n whiteList['transition-property'] = false; // default: all\n whiteList['transition-timing-function'] = false; // default: ease\n whiteList['unicode-bidi'] = false; // default: normal\n whiteList['vertical-align'] = false; // default: baseline\n whiteList['visibility'] = false; // default: visible\n whiteList['voice-balance'] = false; // default: center\n whiteList['voice-duration'] = false; // default: auto\n whiteList['voice-family'] = false; // default: implementation dependent\n whiteList['voice-pitch'] = false; // default: medium\n whiteList['voice-range'] = false; // default: medium\n whiteList['voice-rate'] = false; // default: normal\n whiteList['voice-stress'] = false; // default: normal\n whiteList['voice-volume'] = false; // default: medium\n whiteList['volume'] = false; // default: medium\n whiteList['white-space'] = false; // default: normal\n whiteList['widows'] = false; // default: 2\n whiteList['width'] = true; // default: auto\n whiteList['will-change'] = false; // default: auto\n whiteList['word-break'] = true; // default: normal\n whiteList['word-spacing'] = true; // default: normal\n whiteList['word-wrap'] = true; // default: normal\n whiteList['wrap-flow'] = false; // default: auto\n whiteList['wrap-through'] = false; // default: wrap\n whiteList['writing-mode'] = false; // default: horizontal-tb\n whiteList['z-index'] = false; // default: auto\n\n return whiteList;\n}\n\n\n/**\n * 匹配到白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onAttr (name, value, options) {\n // do nothing\n}\n\n/**\n * 匹配到不在白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreAttr (name, value, options) {\n // do nothing\n}\n\nvar REGEXP_URL_JAVASCRIPT = /javascript\\s*\\:/img;\n\n/**\n * 过滤属性值\n *\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction safeAttrValue(name, value) {\n if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, '');\n },\n trimRight: function (str) {\n if (String.prototype.trimRight) {\n return str.trimRight();\n }\n return str.replace(/(\\s*$)/g, '');\n }\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * default settings\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = __webpack_require__(0).FilterCSS;\nvar getDefaultCSSWhiteList = __webpack_require__(0).getDefaultWhiteList;\nvar _ = __webpack_require__(1);\n\nfunction getDefaultWhiteList() {\n return {\n a: [\"target\", \"href\", \"title\"],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\"autoplay\", \"controls\", \"loop\", \"preload\", \"src\"],\n b: [],\n bdi: [\"dir\"],\n bdo: [\"dir\"],\n big: [],\n blockquote: [\"cite\"],\n br: [],\n caption: [],\n center: [],\n cite: [],\n code: [],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [],\n dl: [],\n dt: [],\n em: [],\n font: [\"color\", \"size\", \"face\"],\n footer: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n header: [],\n hr: [],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\"],\n ins: [\"datetime\"],\n li: [],\n mark: [],\n nav: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n section: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n table: [\"width\", \"border\", \"align\", \"valign\"],\n tbody: [\"align\", \"valign\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n tfoot: [\"align\", \"valign\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n thead: [\"align\", \"valign\"],\n tr: [\"rowspan\", \"align\", \"valign\"],\n tt: [],\n u: [],\n ul: [],\n video: [\"autoplay\", \"controls\", \"loop\", \"preload\", \"src\", \"height\", \"width\"]\n };\n}\n\nvar defaultCSSFilter = new FilterCSS();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n return html.replace(REGEXP_LT, \"<\").replace(REGEXP_GT, \">\");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n // unescape attribute value firstly\n value = friendlyAttrValue(value);\n\n if (name === \"href\" || name === \"src\") {\n // filter `href` and `src` attribute\n // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n value = _.trim(value);\n if (value === \"#\") return \"#\";\n if (\n !(\n value.substr(0, 7) === \"http://\" ||\n value.substr(0, 8) === \"https://\" ||\n value.substr(0, 7) === \"mailto:\" ||\n value.substr(0, 4) === \"tel:\" ||\n value.substr(0, 11) === \"data:image/\" ||\n value.substr(0, 6) === \"ftp://\" ||\n value.substr(0, 2) === \"./\" ||\n value.substr(0, 3) === \"../\" ||\n value[0] === \"#\" ||\n value[0] === \"/\"\n )\n ) {\n return \"\";\n }\n } else if (name === \"background\") {\n // filter `background` attribute (maybe no use)\n // `javascript:`\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n } else if (name === \"style\") {\n // `expression()`\n REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n return \"\";\n }\n // `url()`\n REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n }\n if (cssFilter !== false) {\n cssFilter = cssFilter || defaultCSSFilter;\n value = cssFilter.process(value);\n }\n }\n\n // escape `<>\"` before returns\n value = escapeAttrValue(value);\n return value;\n}\n\n// RegExp list\nvar REGEXP_LT = //g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /"/g;\nvar REGEXP_ATTR_VALUE_1 = /([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /:?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 = /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a)\\:/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 = /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape doube quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n return str.replace(REGEXP_QUOTE, \""\");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n return str.replace(REGEXP_QUOTE_2, '\"');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n return code[0] === \"x\" || code[0] === \"X\"\n ? String.fromCharCode(parseInt(code.substr(1), 16))\n : String.fromCharCode(parseInt(code, 10));\n });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n return str\n .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n .replace(REGEXP_ATTR_VALUE_NEWLINE, \" \");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n var str2 = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n str2 += str.charCodeAt(i) < 32 ? \" \" : str.charAt(i);\n }\n return _.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n str = unescapeQuote(str);\n str = escapeHtmlEntities(str);\n str = escapeDangerHtml5Entities(str);\n str = clearNonPrintableCharacter(str);\n return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n str = escapeQuote(str);\n str = escapeHtml(str);\n return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n return \"\";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n if (typeof next !== \"function\") {\n next = function() {};\n }\n\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _.indexOf(tags, tag) !== -1;\n }\n\n var removeList = [];\n var posStart = false;\n\n return {\n onIgnoreTag: function(tag, html, options) {\n if (isRemoveTag(tag)) {\n if (options.isClosing) {\n var ret = \"[/removed]\";\n var end = options.position + ret.length;\n removeList.push([\n posStart !== false ? posStart : options.position,\n end\n ]);\n posStart = false;\n return ret;\n } else {\n if (!posStart) {\n posStart = options.position;\n }\n return \"[removed]\";\n }\n } else {\n return next(tag, html, options);\n }\n },\n remove: function(html) {\n var rethtml = \"\";\n var lastPos = 0;\n _.forEach(removeList, function(pos) {\n rethtml += html.slice(lastPos, pos[0]);\n lastPos = pos[1];\n });\n rethtml += html.slice(lastPos);\n return rethtml;\n }\n };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n return html.replace(STRIP_COMMENT_TAG_REGEXP, \"\");\n}\nvar STRIP_COMMENT_TAG_REGEXP = //g;\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n var chars = html.split(\"\");\n chars = chars.filter(function(char) {\n var c = char.charCodeAt(0);\n if (c === 127) return false;\n if (c <= 31) {\n if (c === 10 || c === 13) return true;\n return false;\n }\n return true;\n });\n return chars.join(\"\");\n}\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei\n */\n\nvar _ = __webpack_require__(1);\n\n/**\n * get tag name\n *\n * @param {String} html e.g. ''\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n var tagName = html.slice(1, -1);\n } else {\n var tagName = html.slice(1, i + 1);\n }\n tagName = _.trim(tagName).toLowerCase();\n if (tagName.slice(0, 1) === \"/\") tagName = tagName.slice(1);\n if (tagName.slice(-1) === \"/\") tagName = tagName.slice(0, -1);\n return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如:' '\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"\";\n}\n\n/**\n * parse input html and returns processed html\n *\n * @param {String} html\n * @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing)\n * @param {Function} escapeHtml\n * @return {String}\n */\nfunction parseTag(html, onTag, escapeHtml) {\n \"use strict\";\n\n var rethtml = \"\";\n var lastPos = 0;\n var tagStart = false;\n var quoteStart = false;\n var currentPos = 0;\n var len = html.length;\n var currentTagName = \"\";\n var currentHtml = \"\";\n\n chariterator: for (currentPos = 0; currentPos < len; currentPos++) {\n var c = html.charAt(currentPos);\n if (tagStart === false) {\n if (c === \"<\") {\n tagStart = currentPos;\n continue;\n }\n } else {\n if (quoteStart === false) {\n if (c === \"<\") {\n rethtml += escapeHtml(html.slice(lastPos, currentPos));\n tagStart = currentPos;\n lastPos = currentPos;\n continue;\n }\n if (c === \">\") {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(\n tagStart,\n rethtml.length,\n currentTagName,\n currentHtml,\n isClosing(currentHtml)\n );\n lastPos = currentPos + 1;\n tagStart = false;\n continue;\n }\n if ((c === '\"' || c === \"'\")) {\n var i = 1;\n var ic = html.charAt(currentPos - i);\n\n while ((ic === \" \") || (ic === \"=\")) {\n if (ic === \"=\") {\n quoteStart = c;\n continue chariterator;\n }\n ic = html.charAt(currentPos - ++i);\n }\n }\n } else {\n if (c === quoteStart) {\n quoteStart = false;\n continue;\n }\n }\n }\n }\n if (lastPos < html.length) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n\n return rethtml;\n}\n\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9_:\\.\\-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href=\"#\" target=\"_blank\"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr(html, onAttr) {\n \"use strict\";\n\n var lastPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n\n function addAttr(name, value) {\n name = _.trim(name);\n name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, \"\").toLowerCase();\n if (name.length < 1) return;\n var ret = onAttr(name, value || \"\");\n if (ret) retAttrs.push(ret);\n }\n\n // 逐个分析字符\n for (var i = 0; i < len; i++) {\n var c = html.charAt(i);\n var v, j;\n if (tmpName === false && c === \"=\") {\n tmpName = html.slice(lastPos, i);\n lastPos = i + 1;\n continue;\n }\n if (tmpName !== false) {\n if (\n i === lastPos &&\n (c === '\"' || c === \"'\") &&\n html.charAt(i - 1) === \"=\"\n ) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _.trim(html.slice(lastPos + 1, j));\n addAttr(tmpName, v);\n tmpName = false;\n i = j;\n lastPos = i + 1;\n continue;\n }\n }\n }\n if (/\\s|\\n|\\t/.test(c)) {\n html = html.replace(/\\s|\\n|\\t/g, \" \");\n if (tmpName === false) {\n j = findNextEqual(html, i);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n addAttr(v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n i = j - 1;\n continue;\n }\n } else {\n j = findBeforeEqual(html, i - 1);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n v = stripQuoteWrap(v);\n addAttr(tmpName, v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n continue;\n }\n }\n }\n }\n\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n }\n }\n\n return _.trim(retAttrs.join(\" \"));\n}\n\nfunction findNextEqual(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction findBeforeEqual(str, i) {\n for (; i > 0; i--) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction isQuoteWrapString(text) {\n if (\n (text[0] === '\"' && text[text.length - 1] === '\"') ||\n (text[0] === \"'\" && text[text.length - 1] === \"'\")\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/* global define */\n\n/* eslint-disable strict */\n\n;(function ($) {\n 'use strict'\n\n /**\n * Add integers, wrapping at 2^32.\n * This uses 16-bit operations internally to work around bugs in interpreters.\n *\n * @param {number} x First integer\n * @param {number} y Second integer\n * @returns {number} Sum\n */\n function safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff)\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n return (msw << 16) | (lsw & 0xffff)\n }\n\n /**\n * Bitwise rotate a 32-bit number to the left.\n *\n * @param {number} num 32-bit number\n * @param {number} cnt Rotation count\n * @returns {number} Rotated number\n */\n function bitRotateLeft(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt))\n }\n\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} q q\n * @param {number} a a\n * @param {number} b b\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5ff(a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5gg(a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t)\n }\n\n /**\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n *\n * @param {Array} x Array of little-endian words\n * @param {number} len Bit length\n * @returns {Array} MD5 Array\n */\n function binlMD5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32\n x[(((len + 64) >>> 9) << 4) + 14] = len\n\n var i\n var olda\n var oldb\n var oldc\n var oldd\n var a = 1732584193\n var b = -271733879\n var c = -1732584194\n var d = 271733878\n\n for (i = 0; i < x.length; i += 16) {\n olda = a\n oldb = b\n oldc = c\n oldd = d\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936)\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063)\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)\n b = md5gg(b, c, d, a, x[i], 20, -373897302)\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558)\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)\n d = md5hh(d, a, b, c, x[i], 11, -358537222)\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844)\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)\n\n a = safeAdd(a, olda)\n b = safeAdd(b, oldb)\n c = safeAdd(c, oldc)\n d = safeAdd(d, oldd)\n }\n return [a, b, c, d]\n }\n\n /**\n * Convert an array of little-endian words to a string\n *\n * @param {Array} input MD5 Array\n * @returns {string} MD5 string\n */\n function binl2rstr(input) {\n var i\n var output = ''\n var length32 = input.length * 32\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> i % 32) & 0xff)\n }\n return output\n }\n\n /**\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n *\n * @param {string} input Raw input string\n * @returns {Array} Array of little-endian words\n */\n function rstr2binl(input) {\n var i\n var output = []\n output[(input.length >> 2) - 1] = undefined\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0\n }\n var length8 = input.length * 8\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32\n }\n return output\n }\n\n /**\n * Calculate the MD5 of a raw string\n *\n * @param {string} s Input string\n * @returns {string} Raw MD5 string\n */\n function rstrMD5(s) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))\n }\n\n /**\n * Calculates the HMAC-MD5 of a key and some data (raw strings)\n *\n * @param {string} key HMAC key\n * @param {string} data Raw input string\n * @returns {string} Raw MD5 string\n */\n function rstrHMACMD5(key, data) {\n var i\n var bkey = rstr2binl(key)\n var ipad = []\n var opad = []\n var hash\n ipad[15] = opad[15] = undefined\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8)\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636\n opad[i] = bkey[i] ^ 0x5c5c5c5c\n }\n hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))\n }\n\n /**\n * Convert a raw string to a hex string\n *\n * @param {string} input Raw input string\n * @returns {string} Hex encoded string\n */\n function rstr2hex(input) {\n var hexTab = '0123456789abcdef'\n var output = ''\n var x\n var i\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i)\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)\n }\n return output\n }\n\n /**\n * Encode a string as UTF-8\n *\n * @param {string} input Input string\n * @returns {string} UTF8 string\n */\n function str2rstrUTF8(input) {\n return unescape(encodeURIComponent(input))\n }\n\n /**\n * Encodes input string as raw MD5 string\n *\n * @param {string} s Input string\n * @returns {string} Raw MD5 string\n */\n function rawMD5(s) {\n return rstrMD5(str2rstrUTF8(s))\n }\n /**\n * Encodes input string as Hex encoded string\n *\n * @param {string} s Input string\n * @returns {string} Hex encoded string\n */\n function hexMD5(s) {\n return rstr2hex(rawMD5(s))\n }\n /**\n * Calculates the raw HMAC-MD5 for the given key and data\n *\n * @param {string} k HMAC key\n * @param {string} d Input string\n * @returns {string} Raw MD5 string\n */\n function rawHMACMD5(k, d) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))\n }\n /**\n * Calculates the Hex encoded HMAC-MD5 for the given key and data\n *\n * @param {string} k HMAC key\n * @param {string} d Input string\n * @returns {string} Raw MD5 string\n */\n function hexHMACMD5(k, d) {\n return rstr2hex(rawHMACMD5(k, d))\n }\n\n /**\n * Calculates MD5 value for a given string.\n * If a key is provided, calculates the HMAC-MD5 value.\n * Returns a Hex encoded string unless the raw argument is given.\n *\n * @param {string} string Input string\n * @param {string} [key] HMAC key\n * @param {boolean} [raw] Raw output switch\n * @returns {string} MD5 output\n */\n function md5(string, key, raw) {\n if (!key) {\n if (!raw) {\n return hexMD5(string)\n }\n return rawMD5(string)\n }\n if (!raw) {\n return hexHMACMD5(key, string)\n }\n return rawHMACMD5(key, string)\n }\n\n if (true) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n return md5\n }.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))\n } else if (typeof module === 'object' && module.exports) {\n module.exports = md5\n } else {\n $.md5 = md5\n }\n})(this)\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * marked - a markdown parser\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n;(function(root) {\n'use strict';\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n nptable: noop,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|\\\\n*' // (4)\n + '|\\\\n*' // (5)\n + '|?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|(?!script|pre|style)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *([^\\s>]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n table: noop,\n lheading: /^([^\\n]+)\\n {0,3}(=|-){2,} *(?:\\n+|$)/,\n paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading| {0,3}>|<\\/?(?:tag)(?: +|\\n|\\/?>)|<(?:script|pre|style|!--))[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = //;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block.paragraph)\n .replace('hr', block.hr)\n .replace('heading', block.heading)\n .replace('lheading', block.lheading)\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ {0,3}(`{3,}|~{3,})([^`\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = edit(block.paragraph)\n .replace('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n .getRegex();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:.*[^>\\n ].*(?:\\n|$))*)\\n*|$)/,\n table: /^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n((?: *[^>\\n ].*(?:\\n|$))*)\\n*|$)/\n});\n\n/**\n * Pedantic grammar\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '| \\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.pedantic) {\n this.rules = block.pedantic;\n } else if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top) {\n src = src.replace(/^ +$/gm, '');\n var next,\n loose,\n cap,\n bull,\n b,\n item,\n listStart,\n listItems,\n t,\n space,\n i,\n tag,\n l,\n isordered,\n istask,\n ischecked;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n var lastToken = this.tokens[this.tokens.length - 1];\n src = src.substring(cap[0].length);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && lastToken.type === 'paragraph') {\n lastToken.text += '\\n' + cap[0].trimRight();\n } else {\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(cap, '\\n')\n : cap\n });\n }\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (cap = this.rules.nptable.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n\n listStart = {\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false\n };\n\n this.tokens.push(listStart);\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n listItems = [];\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull.length > 1 ? b.length === 1\n : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n listStart.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n t = {\n type: 'list_item_start',\n task: istask,\n checked: ischecked,\n loose: loose\n };\n\n listItems.push(t);\n this.tokens.push(t);\n\n // Recurse.\n this.token(item, false);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n if (listStart.loose) {\n l = listItems.length;\n i = 0;\n for (; i < l; i++) {\n listItems[i].loose = true;\n }\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (cap = this.rules.table.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noop,\n tag: '^comment'\n + '|^[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(href(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^\\*([^\\s*<\\[])\\*(?!\\*)|^_([^\\s<][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_<][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s<\"][\\s\\S]*?[^\\s\\*])\\*(?!\\*|[^\\spunctuation])|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noop,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]?|`[^`]*`|`(?!`)|[^\\[\\]\\\\`])*?/;\ninline._href = /\\s*(<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*)/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\/i.test(cap[0])) {\n this.inLink = false;\n }\n if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = true;\n } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n var lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n var linkLen = cap[0].length - (cap[2].length - lastParenIndex) - (cap[3] || '').length;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n src = src.substring(cap[0].length);\n this.inLink = true;\n href = cap[2];\n if (this.options.pedantic) {\n link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n out += this.outputLink(cap, {\n href: InlineLexer.escapes(href),\n title: InlineLexer.escapes(title)\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n src = src.substring(cap[0].length);\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n if (this.inRawBlock) {\n out += this.renderer.text(cap[0]);\n } else {\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n }\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\nInlineLexer.escapes = function(text) {\n return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = link.href,\n title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = '',\n l = text.length,\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || marked.defaults;\n}\n\nRenderer.prototype.code = function(code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return ''\n + (escaped ? code : escape(code, true))\n + '
';\n }\n\n return ''\n + (escaped ? code : escape(code, true))\n + '
\\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '\\n' + quote + ' \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return ''\n + text\n + ' \\n';\n }\n // ignore IDs\n return '' + text + ' \\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? ' \\n' : ' \\n';\n};\n\nRenderer.prototype.list = function(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '' + type + '>\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '' + text + ' \\n';\n};\n\nRenderer.prototype.checkbox = function(checked) {\n return ' ';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '' + text + '
\\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n if (body) body = '' + body + ' ';\n\n return '\\n'\n + '\\n'\n + header\n + ' \\n'\n + body\n + '
\\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + ' \\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '' + type + '>\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + ' ';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + ' ';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '
';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? ' ' : ' ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n var out = '' + text + ' ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n var out = ' ' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\n\nfunction TextRenderer() {}\n\n// no need for block level renderers\n\nTextRenderer.prototype.strong =\nTextRenderer.prototype.em =\nTextRenderer.prototype.codespan =\nTextRenderer.prototype.del =\nTextRenderer.prototype.text = function(text) {\n return text;\n};\n\nTextRenderer.prototype.link =\nTextRenderer.prototype.image = function(href, title, text) {\n return '' + text;\n};\n\nTextRenderer.prototype.br = function() {\n return '';\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.slugger = new Slugger();\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options) {\n var parser = new Parser(options);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options);\n // use an InlineLexer with a TextRenderer to extract pure text\n this.inlineText = new InlineLexer(\n src.links,\n merge({}, this.options, { renderer: new TextRenderer() })\n );\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n this.token = this.tokens.pop();\n return this.token;\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n unescape(this.inlineText.output(this.token.text)),\n this.slugger);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = '',\n body = '',\n i,\n row,\n cell,\n j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n body = '';\n var ordered = this.token.ordered,\n start = this.token.start;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered, start);\n }\n case 'list_item_start': {\n body = '';\n var loose = this.token.loose;\n var checked = this.token.checked;\n var task = this.token.task;\n\n if (this.token.task) {\n body += this.renderer.checkbox(checked);\n }\n\n while (this.next().type !== 'list_item_end') {\n body += !loose && this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n return this.renderer.listitem(body, task, checked);\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n return this.renderer.html(this.token.text);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n default: {\n var errMsg = 'Token with \"' + this.token.type + '\" type was not found.';\n if (this.options.silent) {\n console.log(errMsg);\n } else {\n throw new Error(errMsg);\n }\n }\n }\n};\n\n/**\n * Slugger generates header id\n */\n\nfunction Slugger() {\n this.seen = {};\n}\n\n/**\n * Convert string to unique id\n */\n\nSlugger.prototype.slug = function(value) {\n var slug = value\n .toLowerCase()\n .trim()\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n var originalSlug = slug;\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n this.seen[slug] = 0;\n\n return slug;\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n if (encode) {\n if (escape.escapeTest.test(html)) {\n return html.replace(escape.escapeReplace, function(ch) { return escape.replacements[ch]; });\n }\n } else {\n if (escape.escapeTestNoEncode.test(html)) {\n return html.replace(escape.escapeReplaceNoEncode, function(ch) { return escape.replacements[ch]; });\n }\n }\n\n return html;\n}\n\nescape.escapeTest = /[&<>\"']/;\nescape.escapeReplace = /[&<>\"']/g;\nescape.replacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\nescape.escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nescape.escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n return {\n replace: function(name, val) {\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return this;\n },\n getRegex: function() {\n return new RegExp(regex, opt);\n }\n };\n}\n\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (/^[^:]+:\\/*[^/]*$/.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n\n if (href.slice(0, 2) === '//') {\n return base.replace(/:[\\s\\S]*/, ':') + href;\n } else if (href.charAt(0) === '/') {\n return base.replace(/(:\\/*[^/]*)[\\s\\S]*/, '$1') + href;\n } else {\n return base + href;\n }\n}\nvar baseUrls = {};\nvar originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function(match, offset, str) {\n var escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/),\n i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n if (str.length === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n var suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < str.length) {\n var currChar = str.charAt(str.length - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, str.length - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n var level = 0;\n for (var i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight,\n tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return 'An error occurred:
'\n + escape(e.message + '', true)\n + ' ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.getDefaults = function() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: new Renderer(),\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tables: true,\n xhtml: false\n };\n};\n\nmarked.defaults = marked.getDefaults();\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nif (true) {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n root.marked = marked;\n}\n})(this || (typeof window !== 'undefined' ? window : global));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(18)))\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvoid function(global) {\n\n 'use strict';\n\n // ValueError :: String -> Error\n function ValueError(message) {\n var err = new Error(message);\n err.name = 'ValueError';\n return err;\n }\n\n // create :: Object -> String,*... -> String\n function create(transformers) {\n return function(template) {\n var args = Array.prototype.slice.call(arguments, 1);\n var idx = 0;\n var state = 'UNDEFINED';\n\n return template.replace(\n /([{}])\\1|[{](.*?)(?:!(.+?))?[}]/g,\n function(match, literal, _key, xf) {\n if (literal != null) {\n return literal;\n }\n var key = _key;\n if (key.length > 0) {\n if (state === 'IMPLICIT') {\n throw ValueError('cannot switch from ' +\n 'implicit to explicit numbering');\n }\n state = 'EXPLICIT';\n } else {\n if (state === 'EXPLICIT') {\n throw ValueError('cannot switch from ' +\n 'explicit to implicit numbering');\n }\n state = 'IMPLICIT';\n key = String(idx);\n idx += 1;\n }\n\n // 1. Split the key into a lookup path.\n // 2. If the first path component is not an index, prepend '0'.\n // 3. Reduce the lookup path to a single result. If the lookup\n // succeeds the result is a singleton array containing the\n // value at the lookup path; otherwise the result is [].\n // 4. Unwrap the result by reducing with '' as the default value.\n var path = key.split('.');\n var value = (/^\\d+$/.test(path[0]) ? path : ['0'].concat(path))\n .reduce(function(maybe, key) {\n return maybe.reduce(function(_, x) {\n return x != null && key in Object(x) ?\n [typeof x[key] === 'function' ? x[key]() : x[key]] :\n [];\n }, []);\n }, [args])\n .reduce(function(_, x) { return x; }, '');\n\n if (xf == null) {\n return value;\n } else if (Object.prototype.hasOwnProperty.call(transformers, xf)) {\n return transformers[xf](value);\n } else {\n throw ValueError('no transformer named \"' + xf + '\"');\n }\n }\n );\n };\n }\n\n // format :: String,*... -> String\n var format = create({});\n\n // format.create :: Object -> String,*... -> String\n format.create = create;\n\n // format.extend :: Object,Object -> ()\n format.extend = function(prototype, transformers) {\n var $format = create(transformers);\n prototype.format = function() {\n var args = Array.prototype.slice.call(arguments);\n args.unshift(this);\n return $format.apply(global, args);\n };\n };\n\n /* istanbul ignore else */\n if (true) {\n module.exports = format;\n } else if (typeof define === 'function' && define.amd) {\n define(function() { return format; });\n } else {\n global.format = format;\n }\n\n}.call(this, this);\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a \\n \\n \\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n \\n
' + format(_root.i18n['comment_count'], '0 ') + '
\\n
\\n \\n
\\n
';\n _root.el.innerHTML = eleHTML;\n // Empty Data\n var vempty = _root.el.querySelector('.vempty');\n _root.nodata = {\n show: function show(txt) {\n vempty.innerHTML = txt || _root.i18n['no_comment_yet'];\n vempty.setAttribute('style', 'display:block;');\n },\n hide: function hide() {\n vempty.setAttribute('style', 'display:none;');\n }\n };\n _root.nodata.show();\n\n // load smiles image\n var _smile_wrapper = _root.el.querySelector('.vsmile-icons');\n var smile_names = option.emoticon_list || [];\n for (var i in smile_names) {\n var img = document.createElement('img');\n img.setAttribute('src', option.emoticon_url + '/' + smile_names[i]);\n _smile_wrapper.appendChild(img);\n }\n // set serverURLs\n\n var prefix = 'https://';\n var serverURLs = '';\n if (!option['serverURLs']) {\n switch (option.app_id.slice(-9)) {\n // TAB \n case '-9Nh9j0Va':\n prefix += 'tab.';\n break;\n // US\n case '-MdYXbMMI':\n prefix += 'us.';\n break;\n default:\n break;\n }\n }\n serverURLs = option['serverURLs'] || prefix + 'avoscloud.com';\n\n if (!disable_av_init) {\n av.init({\n appId: option.app_id || option.appId,\n appKey: option.app_key || option.appKey,\n serverURLs: serverURLs\n });\n disable_av_init = true;\n }\n _root.v = av;\n } catch (ex) {\n var issue = 'https://github.com/DesertsP/Valine/issues';\n if (_root.el) _root.nodata.show('' + ex + ' Valine:' + _root.version + ' feedback\\uFF1A' + issue + ' ');else console && console.log('%c' + ex + '\\n%cValine%c' + _root.version + ' ' + issue, 'color:red;', 'background:#000;padding:5px;line-height:30px;color:#fff;', 'background:#456;line-height:30px;padding:5px;color:#fff;');\n return;\n }\n\n // loading\n var _spinner = '';\n var vloading = _root.el.querySelector('.vloading');\n vloading.innerHTML = _spinner;\n // loading control\n _root.loading = {\n show: function show() {\n vloading.setAttribute('style', 'display:block;');\n _root.nodata.hide();\n },\n hide: function hide() {\n vloading.setAttribute('style', 'display:none;');\n _root.el.querySelectorAll('.vcard').length === 0 && _root.nodata.show();\n }\n };\n\n _root.loading.hide();\n\n var vsubmitting = _root.el.querySelector('.vsubmitting');\n vsubmitting.innerHTML = _spinner;\n _root.submitting = {\n show: function show() {\n vsubmitting.setAttribute('style', 'display:block;');\n },\n hide: function hide() {\n vsubmitting.setAttribute('style', 'display:none;');\n _root.nodata.hide();\n }\n };\n\n var _mark = _root.el.querySelector('.vmark');\n // alert\n _root.alert = {\n /**\n * {\n * type:0/1,\n * text:'',\n * ctxt:'',\n * otxt:'',\n * cb:fn\n * }\n *\n * @param {Object} o\n */\n show: function show(o) {\n _mark.innerHTML = '';\n var _vbtns = _mark.querySelector('.vbtns');\n var _cBtn = '' + (o && o.ctxt || _root.i18n['cancel']) + ' ';\n var _oBtn = '' + (o && o.otxt || _root.i18n['continue']) + ' ';\n _vbtns.innerHTML = '' + _cBtn + (o.type && _oBtn);\n _mark.querySelector('.vcancel').addEventListener('click', function (e) {\n _root.alert.hide();\n });\n _mark.setAttribute('style', 'display:block;');\n if (o && o.type) {\n var _ok = _mark.querySelector('.vsure');\n Event.on('click', _ok, function (e) {\n _root.alert.hide();\n o.cb && o.cb();\n });\n }\n },\n hide: function hide() {\n _mark.setAttribute('style', 'display:none;');\n }\n };\n\n var query1 = new _root.v.Query('Comment');\n query1.equalTo('url', defaultComment['url']);\n var query2 = new _root.v.Query('Comment');\n query2.equalTo('url', defaultComment['url'] + '/');\n var query = AV.Query.or(query1, query2);\n query.notEqualTo('isSpam', true);\n query.count().then(function (count) {\n _root.el.querySelector('.count').innerHTML = count;\n if (toString.call(_root.count_el) == '[object HTMLSpanElement]') {\n _root.count_el.innerHTML = count;\n }\n }).catch(function (ex) {\n console.log(ex);\n _root.el.querySelector('.count').innerHTML = 0;\n });\n _root.bind(option);\n }\n\n /**\n * Bind Event\n */\n\n }, {\n key: 'bind',\n value: function bind(option) {\n var _root = this;\n // Smile pictures\n var vsmiles = _root.el.querySelector('.vsmile-icons');\n Event.on('click', vsmiles, function (e) {\n var textField = _root.el.querySelector('.veditor');\n var imgSrc = e.target.src;\n if (typeof imgSrc == 'undefined') return;\n // var tag = \" ![](/\" + imgSrc.replace(/^.*\\/(.*\\.gif)$/, '$1') + \") \";\n var tag = \"!(:\" + decodeURI(imgSrc).replace(/^.*\\/(.*)$/, '$1') + \":)\";\n if (document.selection) {\n textField.focus();\n sel = document.selection.createRange();\n sel.text = tag;\n textField.focus();\n } else if (textField.selectionStart || textField.selectionStart == '0') {\n var startPos = textField.selectionStart;\n var endPos = textField.selectionEnd;\n var cursorPos = endPos;\n textField.value = textField.value.substring(0, startPos) + tag + textField.value.substring(endPos, textField.value.length);\n cursorPos += tag.length;\n textField.focus();\n textField.selectionStart = cursorPos;\n textField.selectionEnd = cursorPos;\n } else {\n textField.value += tag;\n textField.focus();\n }\n defaultComment[\"comment\"] = textField.value;\n var submitBtn = _root.el.querySelector('.vsubmit');\n if (submitBtn.getAttribute('disabled')) submitBtn.removeAttribute('disabled');\n });\n var comment_trigger = _root.el.querySelector('.comment_trigger');\n Event.on('click', comment_trigger, function (e) {\n comment_trigger.setAttribute('style', 'display:none');\n _root.el.querySelector('.auth-section').removeAttribute('style');\n _root.el.querySelector('.veditor').focus();\n });\n\n // cancel reply\n Event.on('click', _root.el.querySelector('.vcancel-comment-reply'), function (e) {\n _root.reset();\n });\n\n // Query && show comment list\n\n var expandEvt = function expandEvt(el) {\n if (el.offsetHeight > 180) {\n el.classList.add('expand');\n Event.on('click', el, function (e) {\n el.setAttribute('class', 'vcomment');\n });\n }\n };\n\n /*\n * 需要权衡: 网络请求数,查询效率,分页问题,Leancloud限制等\n * */\n\n var num = 1;\n var parent_count = 0;\n\n var parentQuery = function parentQuery() {\n var page_num = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\n _root.loading.show();\n var cq = _root.v.Query.doCloudQuery('select nick, comment, link, rid, emailHash, isSpam\\n from Comment\\n where (rid=\\'\\' or rid is not exists) and (url=\\'' + defaultComment[\"url\"] + '\\' or url=\\'' + (defaultComment[\"url\"] + \"/\") + '\\')\\n order by -createdAt\\n limit ' + (page_num - 1) * PAGE_SIZE + ',' + PAGE_SIZE);\n cq.then(function (rets) {\n rets = rets && rets.results || [];\n var len = rets.length;\n if (len) {\n // _root.el.querySelector('.vlist').innerHTML = '';\n for (var i = 0; i < len; i++) {\n if (rets[i].get('isSpam')) continue;\n var _parent_vcard = insertComment(rets[i], _root.el.querySelector('.vlist'), false);\n _parent_vcard.setAttribute('style', 'margin-bottom: .5em');\n nestQuery(_parent_vcard);\n }\n var _vpage = _root.el.querySelector('.vpage');\n _vpage.innerHTML = PAGE_SIZE * page_num < parent_count ? '' + _root.i18n['more'] + '
' : '';\n var _vmore = _vpage.querySelector('#vmore');\n if (_vmore) {\n Event.on('click', _vmore, function (e) {\n _vpage.innerHTML = '';\n parentQuery(++num);\n });\n }\n }\n _root.loading.hide();\n }).catch(function (ex) {\n console.log(ex);\n _root.loading.hide();\n });\n };\n _root.v.Query.doCloudQuery('select count(*)\\n from Comment\\n where (rid=\\'\\' or rid is not exists) \\n and (url=\\'' + defaultComment[\"url\"] + '\\' or url=\\'' + (defaultComment[\"url\"] + \"/\") + '\\')\\n order by -createdAt').then(function (data) {\n parent_count = data.count;\n parentQuery(1);\n });\n\n // 无限嵌套加载\n var nestQuery = function nestQuery(vcard) {\n var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var _vchild = vcard.querySelector('.vcomment-children');\n var _vlist = _vchild.querySelector('.vlist');\n var _id = vcard.getAttribute('id');\n if (level <= 0) {\n _vchild.setAttribute('style', 'margin-left: 0 !important');\n }\n if (level >= MAX_NEST_LEVEL) {\n _root.v.Query.doCloudQuery('select count(*)\\n from Comment\\n where rid=\\'' + _id + '\\' and (url=\\'' + defaultComment[\"url\"] + '\\' or url=\\'' + (defaultComment[\"url\"] + \"/\") + '\\')\\n order by -createdAt').then(function (data) {\n var count = data.count;\n if (count > 0) {\n var _show_children_wrapper = _vchild.querySelector('.vshow-children-wrapper');\n _show_children_wrapper.setAttribute('style', 'display: block !important;');\n _show_children_wrapper.innerHTML = '' + _root.i18n['more'] + ' ';\n var _show_children = _show_children_wrapper.querySelector('.vshow-children');\n Event.on('click', _show_children, function (e) {\n _show_children_wrapper.setAttribute('style', 'display: none !important;');\n nestQuery(vcard, -1000);\n });\n }\n }, function (error) {\n console.log(error);\n });\n return;\n }\n\n _root.v.Query.doCloudQuery('select nick, comment, link, rid, emailHash, isSpam\\n from Comment\\n where rid=\\'' + _id + '\\' and (url=\\'' + defaultComment[\"url\"] + '\\' or url=\\'' + (defaultComment[\"url\"] + \"/\") + '\\')\\n order by -createdAt').then(function (rets) {\n rets = rets && rets.results || [];\n var len = rets.length;\n if (len) {\n for (var i = 0; i < len; i++) {\n if (!rets[i].get('isSpam')) {\n var vl = insertComment(rets[i], _vlist, true);\n nestQuery(vl, level + 1);\n }\n }\n }\n }).catch(function (ex) {\n console.log(ex);\n _root.loading.hide();\n });\n };\n\n var insertComment = function insertComment(comment) {\n var vlist = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var top = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var _vcard = document.createElement('li');\n _vcard.setAttribute('class', 'vcard');\n _vcard.setAttribute('id', comment.id);\n var emailHash = comment.get('emailHash');\n var gravatar_url = GRAVATAR_BASE_URL + emailHash + '?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80';\n // language=HTML\n _vcard.innerHTML = '\\n ';\n var _vlist = vlist || _root.el.querySelector('.vlist');\n var _vlis = _vlist.querySelectorAll('li');\n // let _vat = _vcard.querySelector('.vat');\n var _as = _vcard.querySelectorAll('a');\n for (var i = 0, len = _as.length; i < len; i++) {\n var item = _as[i];\n if (item && item.getAttribute('class') != 'at') {\n item.setAttribute('target', '_blank');\n item.setAttribute('rel', 'nofollow');\n }\n }\n if (!top) _vlist.appendChild(_vcard);else _vlist.insertBefore(_vcard, _vlis[0]);\n var _vcontent = _vcard.querySelector('.vcomment');\n expandEvt(_vcontent);\n bindAtEvt(_vcard);\n return _vcard;\n };\n\n var mapping = {\n veditor: \"comment\",\n vnick: \"nick\",\n vlink: \"link\",\n vmail: 'mail'\n };\n var inputs = {};\n for (var i in mapping) {\n if (mapping.hasOwnProperty(i)) {\n (function () {\n var _v = mapping[i];\n var _el = _root.el.querySelector('.' + i);\n inputs[_v] = _el;\n Event.on('input', _el, function (e) {\n // defaultComment[_v] = HtmlUtil.encode(_el.value.replace(/(^\\s*)|(\\s*$)/g, \"\"));\n defaultComment[_v] = _el.value;\n });\n })();\n }\n }\n\n // cache\n var getCache = function getCache() {\n var s = store && store.getItem('ValineCache');\n if (!!s) {\n s = JSON.parse(s);\n var m = ['nick', 'link', 'mail'];\n for (var _i in m) {\n var k = m[_i];\n _root.el.querySelector('.v' + k).value = s[k];\n defaultComment[k] = s[k];\n }\n if (s['mail'] != '') {\n var el = _root.el.querySelector('.visitor_avatar');\n el.setAttribute('src', GRAVATAR_BASE_URL + crypto(s['mail'].toLowerCase().trim()) + '?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80');\n }\n }\n };\n getCache();\n\n // reset form\n _root.reset = function () {\n for (var _i2 in mapping) {\n if (mapping.hasOwnProperty(_i2)) {\n var _v = mapping[_i2];\n var _el = _root.el.querySelector('.' + _i2);\n _el.value = \"\";\n defaultComment[_v] = \"\";\n }\n }\n defaultComment['rid'] = '';\n defaultComment['nick'] = '';\n getCache();\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n _root.el.querySelector('.vcancel-comment-reply').setAttribute('style', 'display:none');\n _root.el.querySelector('#vinputs-placeholder').appendChild(_root.el.querySelector('.vinputs-wrap'));\n };\n\n // submit\n var submitBtn = _root.el.querySelector('.vsubmit');\n var submitEvt = function submitEvt(e) {\n if (submitBtn.getAttribute('disabled')) {\n _root.alert.show({\n type: 0,\n text: '再等等,评论正在提交中ヾ(๑╹◡╹)ノ\"',\n ctxt: '好的'\n });\n return;\n }\n if (defaultComment.comment == '') {\n inputs['comment'].focus();\n return;\n }\n if (defaultComment.nick == '') {\n inputs['nick'].focus();\n return;\n }\n // render markdown\n defaultComment.comment = xss(md(defaultComment.comment.replace(/!\\(:(.*?\\.\\w+):\\)/g, ' ')), {\n onIgnoreTagAttr: function onIgnoreTagAttr(tag, name, value, isWhiteAttr) {\n if (name === 'class') {\n return name + '=\"' + xss.escapeAttrValue(value) + '\"';\n }\n }\n });\n var idx = defaultComment.comment.indexOf(defaultComment.at);\n if (idx > -1 && defaultComment.at != '') {\n var at = '' + defaultComment.at + ' ';\n defaultComment.comment = defaultComment.comment.replace(defaultComment.at, at);\n }\n // veirfy\n var mailRet = check.mail(defaultComment.mail);\n var linkRet = check.link(defaultComment.link);\n defaultComment['mail'] = mailRet.k ? mailRet.v : '';\n defaultComment['link'] = linkRet.k ? linkRet.v : '';\n\n if (!mailRet.k || !linkRet.k) {\n _root.alert.show({\n type: 0,\n text: _root.i18n['input_tips'],\n ctxt: _root.i18n['confirm']\n });\n } else {\n commitEvt();\n }\n };\n\n var smile_btn = _root.el.querySelector('.vemoji-btn');\n var smile_icons = _root.el.querySelector('.vsmile-icons');\n Event.on('click', smile_btn, function (e) {\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n } else {\n smile_icons.removeAttribute('style');\n smile_icons.setAttribute('triggered', 1);\n }\n });\n\n var preview_btn = _root.el.querySelector('.vpreview-btn');\n var preview_text = _root.el.querySelector('.vpreview-text');\n Event.on('click', preview_btn, function (e) {\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n } else {\n if (defaultComment.comment == '') {\n inputs['comment'].focus();\n return;\n }\n // render markdown\n preview_text.innerHTML = xss(md(defaultComment.comment.replace(/!\\(:(.*?\\.\\w+):\\)/g, ' ')), {\n onIgnoreTagAttr: function onIgnoreTagAttr(tag, name, value, isWhiteAttr) {\n if (name === 'class') {\n return name + '=\"' + xss.escapeAttrValue(value) + '\"';\n }\n }\n });\n preview_text.removeAttribute('style');\n preview_text.setAttribute('triggered', 1);\n }\n });\n\n // setting access\n var getAcl = function getAcl() {\n var acl = new _root.v.ACL();\n acl.setPublicReadAccess(true);\n acl.setPublicWriteAccess(false);\n return acl;\n };\n\n var commitEvt = function commitEvt() {\n submitBtn.setAttribute('disabled', true);\n _root.submitting.show();\n // 声明类型\n var Ct = _root.v.Object.extend('Comment');\n // 新建对象\n var comment = new Ct();\n for (var _i3 in defaultComment) {\n if (defaultComment.hasOwnProperty(_i3)) {\n if (_i3 === 'at') continue;\n var _v = defaultComment[_i3];\n comment.set(_i3, _v);\n }\n }\n comment.set('emailHash', crypto(defaultComment.mail.toLowerCase().trim()));\n comment.setACL(getAcl());\n comment.save().then(function (commentItem) {\n store && store.setItem('ValineCache', JSON.stringify({\n nick: defaultComment['nick'],\n link: defaultComment['link'],\n mail: defaultComment['mail']\n }));\n var _count = _root.el.querySelector('.count');\n _count.innerText = Number(_count.innerText) + 1;\n if (defaultComment['rid'] === '') {\n insertComment(commentItem, null, true);\n } else {\n // get children vlist\n var _vlist = _root.el.querySelector('#children-list-' + defaultComment['rid']);\n insertComment(commentItem, _vlist, true);\n }\n\n submitBtn.removeAttribute('disabled');\n _root.submitting.hide();\n _root.nodata.hide();\n _root.reset();\n }).catch(function (ex) {\n _root.submitting.hide();\n });\n };\n\n // at event\n var bindAtEvt = function bindAtEvt(vcard) {\n var _id = vcard.getAttribute('id');\n var _vat = vcard.querySelector('#at-' + _id);\n Event.on('click', _vat, function (e) {\n var at = _vat.getAttribute('at');\n var rid = _vat.getAttribute('rid');\n defaultComment['rid'] = rid;\n defaultComment['at'] = at;\n inputs['comment'].value = at + ' \\uFF0C' + inputs['comment'].value;\n // move inputs\n var _comment_el = vcard.querySelector('#comment-' + _id);\n _comment_el.appendChild(_root.el.querySelector('.vinputs-wrap'));\n _root.el.querySelector('.vcancel-comment-reply').removeAttribute('style');\n // remove comment trigger\n _root.el.querySelector('.comment_trigger').setAttribute('style', 'display:none');\n _root.el.querySelector('.auth-section').removeAttribute('style');\n _root.el.querySelector('.veditor').focus();\n // focus\n inputs['comment'].focus();\n });\n };\n\n Event.off('click', submitBtn, submitEvt);\n Event.on('click', submitBtn, submitEvt);\n }\n }]);\n\n return Valine;\n}();\n\nvar Event = {\n on: function on(type, el, handler, capture) {\n if (el.addEventListener) el.addEventListener(type, handler, capture || false);else if (el.attachEvent) el.attachEvent('on' + type, handler);else el['on' + type] = handler;\n },\n off: function off(type, el, handler, capture) {\n if (el.removeEventListener) el.removeEventListener(type, handler, capture || false);else if (el.detachEvent) el.detachEvent('on' + type, handler);else el['on' + type] = null;\n }\n};\n\nvar check = {\n mail: function mail(m) {\n return {\n k: /\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}/.test(m),\n v: m\n };\n },\n link: function link(l) {\n if (l.length > 0) {\n l = /^(http|https)/.test(l) ? l : 'http://' + l;\n }\n return {\n k: l.length > 0 ? /(http|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(l) : true,\n v: l\n };\n }\n};\n\nvar dateFormat = function dateFormat(date) {\n var vDay = padWithZeros(date.getDate(), 2);\n var vMonth = padWithZeros(date.getMonth() + 1, 2);\n var vYear = padWithZeros(date.getFullYear(), 2);\n // var vHour = padWithZeros(date.getHours(), 2);\n // var vMinute = padWithZeros(date.getMinutes(), 2);\n // var vSecond = padWithZeros(date.getSeconds(), 2);\n return vYear + '-' + vMonth + '-' + vDay;\n // return `${vYear}-${vMonth}-${vDay} ${vHour}:${vMinute}:${vSecond}`;\n};\n\nvar timeAgo = function timeAgo(date, i18n) {\n try {\n var oldTime = date.getTime();\n var currTime = new Date().getTime();\n var diffValue = currTime - oldTime;\n\n var days = Math.floor(diffValue / (24 * 3600 * 1000));\n if (days === 0) {\n //计算相差小时数\n var leave1 = diffValue % (24 * 3600 * 1000); //计算天数后剩余的毫秒数\n var hours = Math.floor(leave1 / (3600 * 1000));\n if (hours === 0) {\n //计算相差分钟数\n var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数\n var minutes = Math.floor(leave2 / (60 * 1000));\n if (minutes === 0) {\n //计算相差秒数\n var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数\n var seconds = Math.round(leave3 / 1000);\n return seconds + ' ' + i18n['seconds'];\n }\n return minutes + ' ' + i18n['minutes'];\n }\n return hours + ' ' + i18n['hours'];\n }\n if (days < 0) return i18n['now'];else return days + ' ' + i18n['days'];\n return dateFormat(date);\n } catch (error) {\n console.log(error);\n }\n};\n\nvar padWithZeros = function padWithZeros(vNumber, width) {\n var numAsString = vNumber.toString();\n while (numAsString.length < width) {\n numAsString = '0' + numAsString;\n }\n return numAsString;\n};\n\nvar loadJS = function loadJS(url, success) {\n var domScript = document.createElement('script');\n domScript.src = url;\n success = success || function () {};\n domScript.onload = domScript.onreadystatechange = function () {\n if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {\n success();\n this.onload = this.onreadystatechange = null;\n // this.parentNode.removeChild(this);\n }\n };\n document.getElementsByTagName('head')[0].appendChild(domScript);\n};\n\nvar getIp = function getIp() {\n var request = new XMLHttpRequest();\n request.open('GET', IP_SERVICE, true);\n\n request.onload = function () {\n if (this.status >= 200 && this.status < 400) {\n var data = JSON.parse(this.response);\n defaultComment['ip'] = data.ip;\n } else {}\n };\n\n request.onerror = function () {};\n\n request.send();\n};\n\nmodule.exports = Valine;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(13)(false);\n// imports\n\n\n// module\nexports.push([module.i, \".valine {\\n /************ Loading ************/ }\\n .valine * {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n font-size: 14px;\\n font-weight: normal;\\n line-height: 1.42857143;\\n color: var(--color);\\n -webkit-transition: all .3s ease;\\n transition: all .3s ease;\\n margin: initial;\\n padding: initial; }\\n .valine .vemoticon-img {\\n display: inline-block;\\n max-height: 32px;\\n margin: 0 2px; }\\n .valine .vsubmitting {\\n margin: 1em 0; }\\n .valine .vcancel-comment-reply {\\n margin: 1.5em 0 .5em;\\n cursor: pointer;\\n color: var(--color-secondary);\\n text-decoration: underline; }\\n .valine .vinputs-area {\\n overflow: hidden;\\n position: relative;\\n border: 1px solid var(--border-color); }\\n .valine .vinputs-area .veditor-area {\\n position: inherit; }\\n .valine .vinputs-area .btn-wrap {\\n position: absolute !important;\\n right: 1.5em;\\n bottom: 0; }\\n .valine .vinputs-area .btn-wrap .vfunction-btn {\\n display: inline-block; }\\n .valine .vinputs-area .btn-wrap .vfunction-btn svg {\\n fill: #bbb;\\n cursor: pointer; }\\n .valine .vinputs-area .btn-wrap .vfunction-btn svg:hover {\\n fill: #777777; }\\n .valine .vinputs-area .btn-wrap .vfunction-btn svg:active {\\n fill: #777777; }\\n .valine .vinputs-area .vextra-area {\\n margin: .4em 0 .4em .5em; }\\n .valine .vinputs-area .vextra-area .vsmile-icons {\\n padding: .2em 0;\\n border-top: 1px solid rgba(150, 150, 150, 0.08);\\n border-radius: 0;\\n margin: .3em 0;\\n max-height: 145px;\\n overflow: auto; }\\n .valine .vinputs-area .vextra-area .vsmile-icons img {\\n display: inline-block;\\n width: auto !important;\\n height: 28px !important;\\n margin-right: 4px;\\n cursor: pointer; }\\n .valine .vinputs-area .vextra-area .vpreview-text {\\n border-top: 1px solid rgba(150, 150, 150, 0.08);\\n border-radius: 0;\\n padding: .5em .5em;\\n margin: .3em 0;\\n max-height: 10em;\\n overflow: auto; }\\n .valine .vinputs-area .textarea-wrapper {\\n color: var(--color-secondary);\\n width: 100%;\\n height: 100%;\\n background: var(--background);\\n position: relative;\\n border-radius: 0; }\\n .valine .vinputs-area .textarea-wrapper .comment_trigger {\\n position: absolute;\\n z-index: 10;\\n width: 100%;\\n height: 100%;\\n background-color: var(--background);\\n padding: 0 0 0 1.5em; }\\n .valine .vinputs-area .textarea-wrapper .comment_trigger .avatar {\\n position: absolute;\\n width: 36px;\\n height: 36px;\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%); }\\n .valine .vinputs-area .textarea-wrapper .comment_trigger .avatar img {\\n border-radius: 100%;\\n width: 36px;\\n height: 36px; }\\n .valine .vinputs-area .textarea-wrapper .comment_trigger .trigger_title {\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n color: var(--color-secondary);\\n font-size: 1.4em;\\n margin-left: 3.5em; }\\n .valine .vinputs-area .textarea-wrapper textarea {\\n padding: 1em 1em 0;\\n width: 100%;\\n background: var(--background);\\n border: none;\\n resize: none;\\n min-height: 8em;\\n margin: 0; }\\n .valine .vinputs-area .textarea-wrapper textarea:focus {\\n border-color: var(--border-color);\\n outline: 0; }\\n .valine .vinputs-area .trigger-section {\\n display: none; }\\n .valine .vinputs-area .auth-section {\\n display: -webkit-box;\\n display: flex;\\n display: -ms-flexbox;\\n background: var(--background-secondary);\\n padding: .3em .6em; }\\n .valine .vinputs-area .auth-section .input-wrapper {\\n -ms-flex: 1 1 27%;\\n -webkit-box-flex: 1;\\n flex: 1 1 27%;\\n width: 27%; }\\n .valine .vinputs-area .auth-section .input-wrapper input {\\n color: var(--color-secondary);\\n background: var(--background-secondary);\\n border: none;\\n border-radius: 0;\\n padding: .6em;\\n margin: 0;\\n line-height: 2;\\n font-size: 1em !important; }\\n .valine .vinputs-area .auth-section .input-wrapper input:focus {\\n border-color: var(--border-color);\\n outline: 0; }\\n .valine .vinputs-area .auth-section input {\\n width: 100%; }\\n .valine .vinputs-area .auth-section .post-action {\\n -ms-flex: 1 1 19%;\\n -webkit-box-flex: 1;\\n flex: 1 1 19%;\\n width: 19%;\\n margin: 0;\\n padding: 2px 0 0; }\\n .valine .vinputs-area .auth-section .post-action button {\\n color: var(--background);\\n width: 100%;\\n line-height: 2;\\n font-weight: bolder;\\n border-radius: 30px;\\n border: 1px solid var(--border-color);\\n background-color: var(--color);\\n padding: .4em .5em;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n font-size: 1em !important; }\\n .valine .vinputs-area .auth-section .post-action button:hover {\\n background-color: var(--color-secondary); }\\n @media screen and (max-width: 720px) {\\n .valine .vinputs-area .auth-section {\\n display: block; }\\n .valine .vinputs-area .auth-section .input-wrapper, .valine .vinputs-area .auth-section .post-action {\\n -ms-flex: 1 1 100%;\\n -webkit-box-flex: 1;\\n flex: 1 1 100%;\\n padding-right: 0;\\n width: 100%; } }\\n .valine .vinputs-area .vmark {\\n position: absolute;\\n background: var(--color);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0; }\\n .valine .vinputs-area .vmark .valert {\\n padding: 2em 0 0 0; }\\n .valine .vinputs-area .vmark .valert .vtext {\\n color: var(--background);\\n padding: 15px; }\\n .valine .vinputs-area .vmark .valert .vcode {\\n width: 75px;\\n border-radius: 5px;\\n background: var(--background-secondary); }\\n .valine .vinputs-area .vmark .valert .vcode:focus {\\n background-color: var(--background); }\\n @media screen and (max-width: 720px) {\\n .valine .vinputs-area .vmark .valert {\\n padding: 8em 0; }\\n .valine .vinputs-area .vmark .valert .vtext {\\n color: var(--background);\\n padding: 10px; } }\\n .valine .info {\\n margin: 2em 0;\\n font-size: 16px;\\n line-height: 1;\\n position: relative;\\n text-align: center; }\\n .valine .info::before {\\n display: block;\\n content: '';\\n border-top: 1px solid var(--border-color);\\n margin: 0 25%;\\n position: relative;\\n top: 10px;\\n z-index: 1; }\\n .valine .info svg {\\n margin-right: 2px;\\n overflow: hidden;\\n fill: currentColor; }\\n .valine .info .col {\\n display: inline-block;\\n padding: 0 20px;\\n position: relative;\\n background: var(--background);\\n z-index: 2; }\\n .valine .power {\\n color: var(--color-secondary);\\n font-size: 0.625em !important;\\n position: relative; }\\n .valine a {\\n text-decoration: none;\\n border: none; }\\n .valine .txt-center {\\n text-align: center; }\\n .valine .float-right {\\n float: right !important; }\\n .valine .pd5 {\\n padding: 5px; }\\n .valine .pd10 {\\n padding: 10px; }\\n .valine .vbtn {\\n display: inline-block;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: 1px solid var(--border-color);\\n background-color: var(--color);\\n border-radius: .1em;\\n color: var(--background);\\n padding: .5em 1.5em;\\n cursor: pointer;\\n white-space: nowrap;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n outline: none;\\n min-width: 60px;\\n max-width: 100%;\\n margin: 0 1em; }\\n .valine .vbtn:active,\\n .valine .vbtn:hover {\\n border-color: var(--border-color); }\\n .valine .vpage {\\n margin: 1.5em 0; }\\n .valine .vpage .more {\\n width: 100%;\\n height: 2.5em;\\n line-height: 2.5em;\\n text-align: center;\\n cursor: pointer;\\n color: var(--color);\\n background: var(--background-secondary);\\n border-radius: 1.25em; }\\n .valine .vlist {\\n width: 100%;\\n list-style: none;\\n margin: 0;\\n padding: 0; }\\n .valine .vlist .vcard {\\n list-style: none;\\n word-break: break-all; }\\n .valine .vlist .vcard .vcomment-body {\\n padding: 2em .5em 2em;\\n border-top: 1px solid rgba(150, 150, 150, 0.08); }\\n @media screen and (max-width: 600px) {\\n .valine .vlist .vcard .vcomment-body {\\n padding: 1em 1em 1em;\\n border-top: 0 !important; } }\\n .valine .vlist .vcard .vcomment-body:hover .vat {\\n background: var(--color) !important; }\\n .valine .vlist .vcard .vcomment-body .vat {\\n float: right;\\n background: transparent;\\n color: var(--background);\\n padding: .2em 1em;\\n line-height: 1.2;\\n cursor: pointer;\\n word-break: keep-all;\\n white-space: nowrap;\\n text-transform: uppercase; }\\n .valine .vlist .vcard .vcomment-body .vavatar {\\n margin-right: 1em;\\n margin-top: 0.1em;\\n display: inline-block;\\n height: 36px;\\n width: 36px;\\n position: absolute;\\n top: 0;\\n border-radius: 50%; }\\n .valine .vlist .vcard .vcomment-body .vhead {\\n line-height: 1;\\n display: block;\\n margin-bottom: .3em;\\n position: relative; }\\n .valine .vlist .vcard .vcomment-body .vhead .vmeta-info {\\n margin: 0 0 0 48px; }\\n .valine .vlist .vcard .vcomment-body .vhead .vname {\\n font-weight: bolder;\\n font-size: 1em;\\n color: var(--color); }\\n .valine .vlist .vcard .vcomment-body .vhead .spacer {\\n color: var(--color-secondary);\\n margin-left: 0.3em;\\n margin-right: 0.3em; }\\n .valine .vlist .vcard .vcomment-body .vhead .vtime {\\n color: var(--color-secondary);\\n display: inline-block;\\n font-weight: normal;\\n font-size: 90%; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper {\\n overflow: hidden;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n margin-left: 48px; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment {\\n position: relative;\\n overflow: auto;\\n color: var(--color); }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment blockquote p {\\n padding-left: 12px; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment p {\\n word-wrap: break-word;\\n white-space: pre-wrap;\\n word-break: break-all;\\n text-align: justify;\\n line-height: 1.8; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment pre {\\n overflow: auto;\\n padding: 6px 10px;\\n word-wrap: break-word;\\n color: var(--color-secondary);\\n background: var(--background-secondary);\\n border-radius: 3px;\\n font-size: .875rem;\\n margin: 5px 0; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand {\\n cursor: pointer;\\n max-height: 11.25rem;\\n overflow: hidden; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand:before {\\n display: block;\\n content: \\\"\\\";\\n position: absolute;\\n width: 100%;\\n left: 0;\\n top: 0;\\n bottom: 3.15rem;\\n pointer-events: none; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand:after {\\n display: block;\\n content: \\\"\\\";\\n text-align: center;\\n color: var(--color-secondary);\\n position: absolute;\\n width: 100%;\\n height: 3.15rem;\\n line-height: 3.15rem;\\n left: 0;\\n bottom: 0;\\n pointer-events: none; }\\n .valine .vlist .vcard .vcomment-children {\\n margin-left: 48px; }\\n @media screen and (max-width: 600px) {\\n .valine .vlist .vcard .vcomment-children {\\n margin-left: 16px;\\n border-left: 1px solid var(--border-color); } }\\n .valine .vlist .vcard .vcomment-children .vshow-children-wrapper {\\n margin: 0 0 2em; }\\n .valine .vlist .vcard .vcomment-children .vshow-children-wrapper .vshow-children {\\n color: var(--color-secondary);\\n text-decoration: underline;\\n cursor: pointer; }\\n .valine .vlist .vempty {\\n padding: 20px;\\n text-align: center;\\n color: var(--color-secondary); }\\n .valine .spinner {\\n margin: 10px auto;\\n width: 50px;\\n height: 30px;\\n text-align: center;\\n font-size: 10px; }\\n .valine .spinner > div {\\n background-color: var(--background-secondary);\\n height: 100%;\\n width: 6px;\\n margin-right: 3px;\\n display: inline-block;\\n -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;\\n animation: sk-stretchdelay 1.2s infinite ease-in-out; }\\n .valine .spinner .r2 {\\n -webkit-animation-delay: -1.1s;\\n animation-delay: -1.1s; }\\n .valine .spinner .r3 {\\n -webkit-animation-delay: -1.0s;\\n animation-delay: -1.0s; }\\n .valine .spinner .r4 {\\n -webkit-animation-delay: -0.9s;\\n animation-delay: -0.9s; }\\n .valine .spinner .r5 {\\n -webkit-animation-delay: -0.8s;\\n animation-delay: -0.8s; }\\n\\n@-webkit-keyframes sk-stretchdelay {\\n 0%,\\n 40%,\\n 100% {\\n -webkit-transform: scaleY(0.4); }\\n 20% {\\n -webkit-transform: scaleY(1); } }\\n\\n@keyframes sk-stretchdelay {\\n 0%,\\n 40%,\\n 100% {\\n transform: scaleY(0.4);\\n -webkit-transform: scaleY(0.4); }\\n 20% {\\n transform: scaleY(1);\\n -webkit-transform: scaleY(1); } }\\n\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = __webpack_require__(2);\nvar parseStyle = __webpack_require__(15);\nvar _ = __webpack_require__(3);\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar _ = __webpack_require__(3);\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(selector) {\n\t\tif (typeof memo[selector] === \"undefined\") {\n\t\t\tmemo[selector] = fn.call(this, selector);\n\t\t}\n\n\t\treturn memo[selector]\n\t};\n})(function (target) {\n\treturn document.querySelector(target)\n});\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(17);\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of \n \n \n \n \n \n \n
\n \n
\n \n \n \n
${format(_root.i18n['comment_count'], '0 ')}
\n
\n \n
\n
`;\n _root.el.innerHTML = eleHTML;\n // Empty Data\n let vempty = _root.el.querySelector('.vempty');\n _root.nodata = {\n show(txt) {\n vempty.innerHTML = txt || _root.i18n['no_comment_yet'];\n vempty.setAttribute('style', 'display:block;');\n },\n hide() {\n vempty.setAttribute('style', 'display:none;');\n }\n }\n _root.nodata.show();\n\n // load smiles image\n let _smile_wrapper = _root.el.querySelector('.vsmile-icons');\n let smile_names = option.emoticon_list || [];\n for (let i in smile_names) {\n let img = document.createElement('img');\n img.setAttribute('src', `${option.emoticon_url}/${smile_names[i]}`);\n _smile_wrapper.appendChild(img);\n }\n // set serverURLs\n\n let prefix = 'https://';\n let serverURLs = '';\n if (!option['serverURLs']) {\n switch (option.app_id.slice(-9)) {\n // TAB \n case '-9Nh9j0Va':\n prefix += 'tab.';\n break;\n // US\n case '-MdYXbMMI':\n prefix += 'us.';\n break;\n default:\n break;\n }\n }\n serverURLs = option['serverURLs'] || prefix + 'avoscloud.com';\n\n if (!disable_av_init) {\n av.init({\n appId: option.app_id || option.appId,\n appKey: option.app_key || option.appKey,\n serverURLs: serverURLs\n });\n disable_av_init = true;\n }\n _root.v = av;\n\n } catch (ex) {\n let issue = 'https://github.com/DesertsP/Valine/issues';\n if (_root.el) _root.nodata.show(`${ex} Valine:${_root.version} feedback:${issue} `);\n else console && console.log(`%c${ex}\\n%cValine%c${_root.version} ${issue}`, 'color:red;', 'background:#000;padding:5px;line-height:30px;color:#fff;', 'background:#456;line-height:30px;padding:5px;color:#fff;');\n return;\n }\n\n // loading\n let _spinner = ``;\n let vloading = _root.el.querySelector('.vloading');\n vloading.innerHTML = _spinner;\n // loading control\n _root.loading = {\n show() {\n vloading.setAttribute('style', 'display:block;');\n _root.nodata.hide();\n },\n hide() {\n vloading.setAttribute('style', 'display:none;');\n _root.el.querySelectorAll('.vcard').length === 0 && _root.nodata.show();\n }\n };\n\n _root.loading.hide()\n\n let vsubmitting = _root.el.querySelector('.vsubmitting');\n vsubmitting.innerHTML = _spinner;\n _root.submitting = {\n show() {\n vsubmitting.setAttribute('style', 'display:block;');\n },\n hide() {\n vsubmitting.setAttribute('style', 'display:none;');\n _root.nodata.hide();\n }\n };\n\n let _mark = _root.el.querySelector('.vmark');\n // alert\n _root.alert = {\n /**\n * {\n * type:0/1,\n * text:'',\n * ctxt:'',\n * otxt:'',\n * cb:fn\n * }\n *\n * @param {Object} o\n */\n show(o) {\n _mark.innerHTML = ``;\n let _vbtns = _mark.querySelector('.vbtns');\n let _cBtn = `${o && o.ctxt || _root.i18n['cancel']} `;\n let _oBtn = `${o && o.otxt || _root.i18n['continue']} `;\n _vbtns.innerHTML = `${_cBtn}${o.type && _oBtn}`;\n _mark.querySelector('.vcancel').addEventListener('click', function (e) {\n _root.alert.hide();\n });\n _mark.setAttribute('style', 'display:block;');\n if (o && o.type) {\n let _ok = _mark.querySelector('.vsure');\n Event.on('click', _ok, (e) => {\n _root.alert.hide();\n o.cb && o.cb();\n });\n }\n },\n hide() {\n _mark.setAttribute('style', 'display:none;');\n }\n }\n\n let query1 = new _root.v.Query('Comment');\n query1.equalTo('url', defaultComment['url']);\n let query2 = new _root.v.Query('Comment');\n query2.equalTo('url', defaultComment['url'] + '/');\n let query = AV.Query.or(query1, query2);\n query.notEqualTo('isSpam', true);\n query.count().then(count => {\n _root.el.querySelector('.count').innerHTML = count;\n if (toString.call(_root.count_el) == '[object HTMLSpanElement]') {\n _root.count_el.innerHTML = count;\n }\n })\n .catch(ex => {\n console.log(ex)\n _root.el.querySelector('.count').innerHTML=0\n });\n _root.bind(option);\n\n }\n\n /**\n * Bind Event\n */\n bind(option) {\n let _root = this;\n // Smile pictures\n let vsmiles = _root.el.querySelector('.vsmile-icons');\n Event.on('click', vsmiles, (e) => {\n var textField = _root.el.querySelector('.veditor');\n let imgSrc = e.target.src;\n if (typeof imgSrc == 'undefined') return;\n // var tag = \" ![](/\" + imgSrc.replace(/^.*\\/(.*\\.gif)$/, '$1') + \") \";\n var tag = \"!(:\" + decodeURI(imgSrc).replace(/^.*\\/(.*)$/, '$1') + \":)\";\n if (document.selection) {\n textField.focus();\n sel = document.selection.createRange();\n sel.text = tag;\n textField.focus();\n } else if (textField.selectionStart || textField.selectionStart == '0') {\n var startPos = textField.selectionStart;\n var endPos = textField.selectionEnd;\n var cursorPos = endPos;\n textField.value = textField.value.substring(0, startPos) + tag + textField.value.substring(endPos, textField.value.length);\n cursorPos += tag.length;\n textField.focus();\n textField.selectionStart = cursorPos;\n textField.selectionEnd = cursorPos\n } else {\n textField.value += tag;\n textField.focus()\n }\n defaultComment[\"comment\"] = textField.value;\n let submitBtn = _root.el.querySelector('.vsubmit');\n if (submitBtn.getAttribute('disabled')) submitBtn.removeAttribute('disabled');\n })\n let comment_trigger = _root.el.querySelector('.comment_trigger');\n Event.on('click', comment_trigger, (e) => {\n comment_trigger.setAttribute('style', 'display:none');\n _root.el.querySelector('.auth-section').removeAttribute('style');\n _root.el.querySelector('.veditor').focus();\n })\n\n // cancel reply\n Event.on('click', _root.el.querySelector('.vcancel-comment-reply'), (e) => {\n _root.reset();\n });\n\n // Query && show comment list\n\n let expandEvt = (el) => {\n if (el.offsetHeight > 180) {\n el.classList.add('expand');\n Event.on('click', el, (e) => {\n el.setAttribute('class', 'vcomment');\n })\n }\n };\n\n /*\n * 需要权衡: 网络请求数,查询效率,分页问题,Leancloud限制等\n * */\n\n var num = 1;\n var parent_count = 0;\n\n let parentQuery = (page_num = 1) => {\n _root.loading.show();\n let cq = _root.v.Query.doCloudQuery(`select nick, comment, link, rid, emailHash, isSpam\n from Comment\n where (rid='' or rid is not exists) and (url='${defaultComment[\"url\"]}' or url='${defaultComment[\"url\"] + \"/\"}')\n order by -createdAt\n limit ${(page_num - 1) * PAGE_SIZE},${PAGE_SIZE}`);\n cq.then(rets => {\n rets = rets && rets.results || [];\n let len = rets.length;\n if (len) {\n // _root.el.querySelector('.vlist').innerHTML = '';\n for (let i = 0; i < len; i++) {\n if (rets[i].get('isSpam'))\n continue;\n let _parent_vcard = insertComment(rets[i], _root.el.querySelector('.vlist'), false);\n _parent_vcard.setAttribute('style', 'margin-bottom: .5em');\n nestQuery(_parent_vcard);\n }\n var _vpage = _root.el.querySelector('.vpage');\n _vpage.innerHTML = PAGE_SIZE * page_num < parent_count ? `${_root.i18n['more']}
` : '';\n var _vmore = _vpage.querySelector('#vmore');\n if (_vmore) {\n Event.on('click', _vmore, (e) => {\n _vpage.innerHTML = '';\n parentQuery(++num);\n })\n }\n }\n _root.loading.hide();\n }).catch(ex => {\n console.log(ex);\n _root.loading.hide();\n })\n };\n _root.v.Query.doCloudQuery(`select count(*)\n from Comment\n where (rid='' or rid is not exists) \n and (url='${defaultComment[\"url\"]}' or url='${defaultComment[\"url\"] + \"/\"}')\n order by -createdAt`).then(data => {\n parent_count = data.count;\n parentQuery(1);\n });\n\n // 无限嵌套加载\n let nestQuery = (vcard, level = 1) => {\n var _vchild = vcard.querySelector('.vcomment-children');\n var _vlist = _vchild.querySelector('.vlist');\n var _id = vcard.getAttribute('id');\n if (level <= 0) {\n _vchild.setAttribute('style', 'margin-left: 0 !important');\n }\n if (level >= MAX_NEST_LEVEL) {\n _root.v.Query.doCloudQuery(`select count(*)\n from Comment\n where rid='${_id}' and (url='${defaultComment[\"url\"]}' or url='${defaultComment[\"url\"] + \"/\"}')\n order by -createdAt`).then(function (data) {\n let count = data.count;\n if (count > 0) {\n var _show_children_wrapper = _vchild.querySelector('.vshow-children-wrapper');\n _show_children_wrapper.setAttribute('style', 'display: block !important;');\n _show_children_wrapper.innerHTML = `${_root.i18n['more']} `;\n var _show_children = _show_children_wrapper.querySelector('.vshow-children');\n Event.on('click', _show_children, (e) => {\n _show_children_wrapper.setAttribute('style', 'display: none !important;');\n nestQuery(vcard, -1000);\n })\n\n }\n }, function (error) {\n console.log(error);\n });\n return;\n }\n\n _root.v.Query.doCloudQuery(`select nick, comment, link, rid, emailHash, isSpam\n from Comment\n where rid='${_id}' and (url='${defaultComment[\"url\"]}' or url='${defaultComment[\"url\"] + \"/\"}')\n order by -createdAt`).then(rets => {\n rets = rets && rets.results || [];\n let len = rets.length;\n if (len) {\n for (let i = 0; i < len; i++) {\n if (!rets[i].get('isSpam')) {\n let vl = insertComment(rets[i], _vlist, true)\n nestQuery(vl, level + 1);\n }\n\n }\n }\n }).catch(ex => {\n console.log(ex);\n _root.loading.hide();\n })\n };\n\n let insertComment = (comment, vlist = null, top = true) => {\n let _vcard = document.createElement('li');\n _vcard.setAttribute('class', 'vcard');\n _vcard.setAttribute('id', comment.id);\n let emailHash = comment.get('emailHash');\n let gravatar_url = GRAVATAR_BASE_URL + emailHash + '?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80';\n // language=HTML\n _vcard.innerHTML = `\n
\n
\n \n
\n
\n \n
\n `;\n let _vlist = vlist || _root.el.querySelector('.vlist');\n let _vlis = _vlist.querySelectorAll('li');\n // let _vat = _vcard.querySelector('.vat');\n let _as = _vcard.querySelectorAll('a');\n for (let i = 0, len = _as.length; i < len; i++) {\n let item = _as[i];\n if (item && item.getAttribute('class') != 'at') {\n item.setAttribute('target', '_blank');\n item.setAttribute('rel', 'nofollow');\n }\n }\n if (!top) _vlist.appendChild(_vcard);\n else _vlist.insertBefore(_vcard, _vlis[0]);\n let _vcontent = _vcard.querySelector('.vcomment');\n expandEvt(_vcontent);\n bindAtEvt(_vcard);\n return _vcard;\n };\n\n let mapping = {\n veditor: \"comment\",\n vnick: \"nick\",\n vlink: \"link\",\n vmail: 'mail'\n };\n let inputs = {};\n for (let i in mapping) {\n if (mapping.hasOwnProperty(i)) {\n let _v = mapping[i];\n let _el = _root.el.querySelector(`.${i}`);\n inputs[_v] = _el;\n Event.on('input', _el, (e) => {\n // defaultComment[_v] = HtmlUtil.encode(_el.value.replace(/(^\\s*)|(\\s*$)/g, \"\"));\n defaultComment[_v] = _el.value;\n });\n }\n }\n\n // cache\n let getCache = () => {\n let s = store && store.getItem('ValineCache');\n if (!!s) {\n s = JSON.parse(s);\n let m = ['nick', 'link', 'mail'];\n for (let i in m) {\n let k = m[i];\n _root.el.querySelector(`.v${k}`).value = s[k];\n defaultComment[k] = s[k];\n }\n if (s['mail'] != '') {\n let el = _root.el.querySelector('.visitor_avatar');\n el.setAttribute('src', GRAVATAR_BASE_URL + crypto(s['mail'].toLowerCase().trim()) + '?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80');\n }\n }\n };\n getCache();\n\n // reset form\n _root.reset = () => {\n for (let i in mapping) {\n if (mapping.hasOwnProperty(i)) {\n let _v = mapping[i];\n let _el = _root.el.querySelector(`.${i}`);\n _el.value = \"\";\n defaultComment[_v] = \"\";\n }\n }\n defaultComment['rid'] = '';\n defaultComment['nick'] = '';\n getCache();\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n _root.el.querySelector('.vcancel-comment-reply').setAttribute('style', 'display:none');\n _root.el.querySelector('#vinputs-placeholder').appendChild(_root.el.querySelector('.vinputs-wrap'));\n }\n\n // submit\n let submitBtn = _root.el.querySelector('.vsubmit');\n let submitEvt = (e) => {\n if (submitBtn.getAttribute('disabled')) {\n _root.alert.show({\n type: 0,\n text: '再等等,评论正在提交中ヾ(๑╹◡╹)ノ\"',\n ctxt: '好的'\n })\n return;\n }\n if (defaultComment.comment == '') {\n inputs['comment'].focus();\n return;\n }\n if (defaultComment.nick == '') {\n inputs['nick'].focus();\n return;\n }\n // render markdown\n defaultComment.comment = xss(md(defaultComment.comment.replace(/!\\(:(.*?\\.\\w+):\\)/g,\n ` `)),\n {\n onIgnoreTagAttr: function (tag, name, value, isWhiteAttr) {\n if (name === 'class') {\n return name + '=\"' + xss.escapeAttrValue(value) + '\"';\n }\n }\n });\n let idx = defaultComment.comment.indexOf(defaultComment.at);\n if (idx > -1 && defaultComment.at != '') {\n let at = `${defaultComment.at} `;\n defaultComment.comment = defaultComment.comment.replace(defaultComment.at, at);\n }\n // veirfy\n let mailRet = check.mail(defaultComment.mail);\n let linkRet = check.link(defaultComment.link);\n defaultComment['mail'] = mailRet.k ? mailRet.v : '';\n defaultComment['link'] = linkRet.k ? linkRet.v : '';\n\n if (!mailRet.k || !linkRet.k) {\n _root.alert.show({\n type: 0,\n text: _root.i18n['input_tips'],\n ctxt: _root.i18n['confirm']\n })\n } else {\n commitEvt();\n }\n };\n\n let smile_btn = _root.el.querySelector('.vemoji-btn');\n let smile_icons = _root.el.querySelector('.vsmile-icons');\n Event.on('click', smile_btn, (e) => {\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n else {\n smile_icons.removeAttribute('style');\n smile_icons.setAttribute('triggered', 1);\n }\n });\n\n let preview_btn = _root.el.querySelector('.vpreview-btn');\n let preview_text = _root.el.querySelector('.vpreview-text');\n Event.on('click', preview_btn, (e) => {\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n else {\n if (defaultComment.comment == '') {\n inputs['comment'].focus();\n return;\n }\n // render markdown\n preview_text.innerHTML = xss(md(defaultComment.comment.replace(/!\\(:(.*?\\.\\w+):\\)/g,\n ` `)),\n {\n onIgnoreTagAttr: function (tag, name, value, isWhiteAttr) {\n if (name === 'class') {\n return name + '=\"' + xss.escapeAttrValue(value) + '\"';\n }\n }\n });\n preview_text.removeAttribute('style');\n preview_text.setAttribute('triggered', 1);\n }\n });\n\n // setting access\n let getAcl = () => {\n let acl = new _root.v.ACL();\n acl.setPublicReadAccess(true);\n acl.setPublicWriteAccess(false);\n return acl;\n };\n\n let commitEvt = () => {\n submitBtn.setAttribute('disabled', true);\n _root.submitting.show();\n // 声明类型\n let Ct = _root.v.Object.extend('Comment');\n // 新建对象\n let comment = new Ct();\n for (let i in defaultComment) {\n if (defaultComment.hasOwnProperty(i)) {\n if (i === 'at')\n continue;\n let _v = defaultComment[i];\n comment.set(i, _v);\n }\n }\n comment.set('emailHash', crypto(defaultComment.mail.toLowerCase().trim()));\n comment.setACL(getAcl());\n comment.save().then((commentItem) => {\n store && store.setItem('ValineCache', JSON.stringify({\n nick: defaultComment['nick'],\n link: defaultComment['link'],\n mail: defaultComment['mail']\n }));\n let _count = _root.el.querySelector('.count');\n _count.innerText = Number(_count.innerText) + 1;\n if (defaultComment['rid'] === '') {\n insertComment(commentItem, null, true);\n } else {\n // get children vlist\n let _vlist = _root.el.querySelector('#children-list-' + defaultComment['rid']);\n insertComment(commentItem, _vlist, true);\n }\n\n submitBtn.removeAttribute('disabled');\n _root.submitting.hide();\n _root.nodata.hide();\n _root.reset();\n }).catch(ex => {\n _root.submitting.hide();\n })\n };\n\n // at event\n let bindAtEvt = (vcard) => {\n let _id = vcard.getAttribute('id');\n let _vat = vcard.querySelector('#at-' + _id);\n Event.on('click', _vat, (e) => {\n let at = _vat.getAttribute('at');\n let rid = _vat.getAttribute('rid');\n defaultComment['rid'] = rid;\n defaultComment['at'] = at;\n inputs['comment'].value = `${at} ,` + inputs['comment'].value;\n // move inputs\n let _comment_el = vcard.querySelector('#comment-' + _id);\n _comment_el.appendChild(_root.el.querySelector('.vinputs-wrap'));\n _root.el.querySelector('.vcancel-comment-reply').removeAttribute('style');\n // remove comment trigger\n _root.el.querySelector('.comment_trigger').setAttribute('style', 'display:none');\n _root.el.querySelector('.auth-section').removeAttribute('style');\n _root.el.querySelector('.veditor').focus();\n // focus\n inputs['comment'].focus();\n })\n };\n\n Event.off('click', submitBtn, submitEvt);\n Event.on('click', submitBtn, submitEvt);\n }\n}\n\nconst Event = {\n on(type, el, handler, capture) {\n if (el.addEventListener) el.addEventListener(type, handler, capture || false);\n else if (el.attachEvent) el.attachEvent(`on${type}`, handler);\n else el[`on${type}`] = handler;\n },\n off(type, el, handler, capture) {\n if (el.removeEventListener) el.removeEventListener(type, handler, capture || false);\n else if (el.detachEvent) el.detachEvent(`on${type}`, handler);\n else el[`on${type}`] = null;\n }\n}\n\nconst check = {\n mail(m) {\n return {\n k: /\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}/.test(m),\n v: m\n };\n },\n link(l) {\n if (l.length > 0) {\n l = /^(http|https)/.test(l) ? l : `http://${l}`;\n }\n return {\n k: l.length > 0 ? /(http|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(l) : true,\n v: l\n };\n }\n}\n\n\nconst dateFormat = (date) => {\n var vDay = padWithZeros(date.getDate(), 2);\n var vMonth = padWithZeros(date.getMonth() + 1, 2);\n var vYear = padWithZeros(date.getFullYear(), 2);\n // var vHour = padWithZeros(date.getHours(), 2);\n // var vMinute = padWithZeros(date.getMinutes(), 2);\n // var vSecond = padWithZeros(date.getSeconds(), 2);\n return `${vYear}-${vMonth}-${vDay}`;\n // return `${vYear}-${vMonth}-${vDay} ${vHour}:${vMinute}:${vSecond}`;\n}\n\nconst timeAgo = (date, i18n) => {\n try {\n var oldTime = date.getTime();\n var currTime = new Date().getTime();\n var diffValue = currTime - oldTime;\n\n var days = Math.floor(diffValue / (24 * 3600 * 1000));\n if (days === 0) {\n //计算相差小时数\n var leave1 = diffValue % (24 * 3600 * 1000); //计算天数后剩余的毫秒数\n var hours = Math.floor(leave1 / (3600 * 1000));\n if (hours === 0) {\n //计算相差分钟数\n var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数\n var minutes = Math.floor(leave2 / (60 * 1000));\n if (minutes === 0) {\n //计算相差秒数\n var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数\n var seconds = Math.round(leave3 / 1000);\n return seconds + ' ' + i18n['seconds'];\n }\n return minutes + ' ' + i18n['minutes'];\n }\n return hours + ' ' + i18n['hours'];\n }\n if (days < 0)\n return i18n['now'];\n else\n return days + ' ' + i18n['days'];\n return dateFormat(date);\n } catch (error) {\n console.log(error)\n }\n}\n\nconst padWithZeros = (vNumber, width) => {\n var numAsString = vNumber.toString();\n while (numAsString.length < width) {\n numAsString = '0' + numAsString;\n }\n return numAsString;\n}\n\nconst loadJS = function (url, success) {\n var domScript = document.createElement('script');\n domScript.src = url;\n success = success || function () {\n };\n domScript.onload = domScript.onreadystatechange = function () {\n if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {\n success();\n this.onload = this.onreadystatechange = null;\n // this.parentNode.removeChild(this);\n }\n };\n document.getElementsByTagName('head')[0].appendChild(domScript);\n};\n\nconst getIp = function(){\n var request = new XMLHttpRequest();\n request.open('GET', IP_SERVICE, true);\n\n request.onload = function() {\n if (this.status >= 200 && this.status < 400) {\n var data = JSON.parse(this.response);\n defaultComment['ip'] = data.ip;\n } else {\n }\n };\n\n request.onerror = function() {\n };\n\n request.send();\n\n};\n\n\nmodule.exports = Valine;\n\n\n\n// WEBPACK FOOTER //\n// ./src/Valine.js","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".valine {\\n /************ Loading ************/ }\\n .valine * {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n font-size: 14px;\\n font-weight: normal;\\n line-height: 1.42857143;\\n color: var(--color);\\n -webkit-transition: all .3s ease;\\n transition: all .3s ease;\\n margin: initial;\\n padding: initial; }\\n .valine .vemoticon-img {\\n display: inline-block;\\n max-height: 32px;\\n margin: 0 2px; }\\n .valine .vsubmitting {\\n margin: 1em 0; }\\n .valine .vcancel-comment-reply {\\n margin: 1.5em 0 .5em;\\n cursor: pointer;\\n color: var(--color-secondary);\\n text-decoration: underline; }\\n .valine .vinputs-area {\\n overflow: hidden;\\n position: relative;\\n border: 1px solid var(--border-color); }\\n .valine .vinputs-area .veditor-area {\\n position: inherit; }\\n .valine .vinputs-area .btn-wrap {\\n position: absolute !important;\\n right: 1.5em;\\n bottom: 0; }\\n .valine .vinputs-area .btn-wrap .vfunction-btn {\\n display: inline-block; }\\n .valine .vinputs-area .btn-wrap .vfunction-btn svg {\\n fill: #bbb;\\n cursor: pointer; }\\n .valine .vinputs-area .btn-wrap .vfunction-btn svg:hover {\\n fill: #777777; }\\n .valine .vinputs-area .btn-wrap .vfunction-btn svg:active {\\n fill: #777777; }\\n .valine .vinputs-area .vextra-area {\\n margin: .4em 0 .4em .5em; }\\n .valine .vinputs-area .vextra-area .vsmile-icons {\\n padding: .2em 0;\\n border-top: 1px solid rgba(150, 150, 150, 0.08);\\n border-radius: 0;\\n margin: .3em 0;\\n max-height: 145px;\\n overflow: auto; }\\n .valine .vinputs-area .vextra-area .vsmile-icons img {\\n display: inline-block;\\n width: auto !important;\\n height: 28px !important;\\n margin-right: 4px;\\n cursor: pointer; }\\n .valine .vinputs-area .vextra-area .vpreview-text {\\n border-top: 1px solid rgba(150, 150, 150, 0.08);\\n border-radius: 0;\\n padding: .5em .5em;\\n margin: .3em 0;\\n max-height: 10em;\\n overflow: auto; }\\n .valine .vinputs-area .textarea-wrapper {\\n color: var(--color-secondary);\\n width: 100%;\\n height: 100%;\\n background: var(--background);\\n position: relative;\\n border-radius: 0; }\\n .valine .vinputs-area .textarea-wrapper .comment_trigger {\\n position: absolute;\\n z-index: 10;\\n width: 100%;\\n height: 100%;\\n background-color: var(--background);\\n padding: 0 0 0 1.5em; }\\n .valine .vinputs-area .textarea-wrapper .comment_trigger .avatar {\\n position: absolute;\\n width: 36px;\\n height: 36px;\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%); }\\n .valine .vinputs-area .textarea-wrapper .comment_trigger .avatar img {\\n border-radius: 100%;\\n width: 36px;\\n height: 36px; }\\n .valine .vinputs-area .textarea-wrapper .comment_trigger .trigger_title {\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n color: var(--color-secondary);\\n font-size: 1.4em;\\n margin-left: 3.5em; }\\n .valine .vinputs-area .textarea-wrapper textarea {\\n padding: 1em 1em 0;\\n width: 100%;\\n background: var(--background);\\n border: none;\\n resize: none;\\n min-height: 8em;\\n margin: 0; }\\n .valine .vinputs-area .textarea-wrapper textarea:focus {\\n border-color: var(--border-color);\\n outline: 0; }\\n .valine .vinputs-area .trigger-section {\\n display: none; }\\n .valine .vinputs-area .auth-section {\\n display: -webkit-box;\\n display: flex;\\n display: -ms-flexbox;\\n background: var(--background-secondary);\\n padding: .3em .6em; }\\n .valine .vinputs-area .auth-section .input-wrapper {\\n -ms-flex: 1 1 27%;\\n -webkit-box-flex: 1;\\n flex: 1 1 27%;\\n width: 27%; }\\n .valine .vinputs-area .auth-section .input-wrapper input {\\n color: var(--color-secondary);\\n background: var(--background-secondary);\\n border: none;\\n border-radius: 0;\\n padding: .6em;\\n margin: 0;\\n line-height: 2;\\n font-size: 1em !important; }\\n .valine .vinputs-area .auth-section .input-wrapper input:focus {\\n border-color: var(--border-color);\\n outline: 0; }\\n .valine .vinputs-area .auth-section input {\\n width: 100%; }\\n .valine .vinputs-area .auth-section .post-action {\\n -ms-flex: 1 1 19%;\\n -webkit-box-flex: 1;\\n flex: 1 1 19%;\\n width: 19%;\\n margin: 0;\\n padding: 2px 0 0; }\\n .valine .vinputs-area .auth-section .post-action button {\\n color: var(--background);\\n width: 100%;\\n line-height: 2;\\n font-weight: bolder;\\n border-radius: 30px;\\n border: 1px solid var(--border-color);\\n background-color: var(--color);\\n padding: .4em .5em;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n font-size: 1em !important; }\\n .valine .vinputs-area .auth-section .post-action button:hover {\\n background-color: var(--color-secondary); }\\n @media screen and (max-width: 720px) {\\n .valine .vinputs-area .auth-section {\\n display: block; }\\n .valine .vinputs-area .auth-section .input-wrapper, .valine .vinputs-area .auth-section .post-action {\\n -ms-flex: 1 1 100%;\\n -webkit-box-flex: 1;\\n flex: 1 1 100%;\\n padding-right: 0;\\n width: 100%; } }\\n .valine .vinputs-area .vmark {\\n position: absolute;\\n background: var(--color);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0; }\\n .valine .vinputs-area .vmark .valert {\\n padding: 2em 0 0 0; }\\n .valine .vinputs-area .vmark .valert .vtext {\\n color: var(--background);\\n padding: 15px; }\\n .valine .vinputs-area .vmark .valert .vcode {\\n width: 75px;\\n border-radius: 5px;\\n background: var(--background-secondary); }\\n .valine .vinputs-area .vmark .valert .vcode:focus {\\n background-color: var(--background); }\\n @media screen and (max-width: 720px) {\\n .valine .vinputs-area .vmark .valert {\\n padding: 8em 0; }\\n .valine .vinputs-area .vmark .valert .vtext {\\n color: var(--background);\\n padding: 10px; } }\\n .valine .info {\\n margin: 2em 0;\\n font-size: 16px;\\n line-height: 1;\\n position: relative;\\n text-align: center; }\\n .valine .info::before {\\n display: block;\\n content: '';\\n border-top: 1px solid var(--border-color);\\n margin: 0 25%;\\n position: relative;\\n top: 10px;\\n z-index: 1; }\\n .valine .info svg {\\n margin-right: 2px;\\n overflow: hidden;\\n fill: currentColor; }\\n .valine .info .col {\\n display: inline-block;\\n padding: 0 20px;\\n position: relative;\\n background: var(--background);\\n z-index: 2; }\\n .valine .power {\\n color: var(--color-secondary);\\n font-size: 0.625em !important;\\n position: relative; }\\n .valine a {\\n text-decoration: none;\\n border: none; }\\n .valine .txt-center {\\n text-align: center; }\\n .valine .float-right {\\n float: right !important; }\\n .valine .pd5 {\\n padding: 5px; }\\n .valine .pd10 {\\n padding: 10px; }\\n .valine .vbtn {\\n display: inline-block;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: 1px solid var(--border-color);\\n background-color: var(--color);\\n border-radius: .1em;\\n color: var(--background);\\n padding: .5em 1.5em;\\n cursor: pointer;\\n white-space: nowrap;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n outline: none;\\n min-width: 60px;\\n max-width: 100%;\\n margin: 0 1em; }\\n .valine .vbtn:active,\\n .valine .vbtn:hover {\\n border-color: var(--border-color); }\\n .valine .vpage {\\n margin: 1.5em 0; }\\n .valine .vpage .more {\\n width: 100%;\\n height: 2.5em;\\n line-height: 2.5em;\\n text-align: center;\\n cursor: pointer;\\n color: var(--color);\\n background: var(--background-secondary);\\n border-radius: 1.25em; }\\n .valine .vlist {\\n width: 100%;\\n list-style: none;\\n margin: 0;\\n padding: 0; }\\n .valine .vlist .vcard {\\n list-style: none;\\n word-break: break-all; }\\n .valine .vlist .vcard .vcomment-body {\\n padding: 2em .5em 2em;\\n border-top: 1px solid rgba(150, 150, 150, 0.08); }\\n @media screen and (max-width: 600px) {\\n .valine .vlist .vcard .vcomment-body {\\n padding: 1em 1em 1em;\\n border-top: 0 !important; } }\\n .valine .vlist .vcard .vcomment-body:hover .vat {\\n background: var(--color) !important; }\\n .valine .vlist .vcard .vcomment-body .vat {\\n float: right;\\n background: transparent;\\n color: var(--background);\\n padding: .2em 1em;\\n line-height: 1.2;\\n cursor: pointer;\\n word-break: keep-all;\\n white-space: nowrap;\\n text-transform: uppercase; }\\n .valine .vlist .vcard .vcomment-body .vavatar {\\n margin-right: 1em;\\n margin-top: 0.1em;\\n display: inline-block;\\n height: 36px;\\n width: 36px;\\n position: absolute;\\n top: 0;\\n border-radius: 50%; }\\n .valine .vlist .vcard .vcomment-body .vhead {\\n line-height: 1;\\n display: block;\\n margin-bottom: .3em;\\n position: relative; }\\n .valine .vlist .vcard .vcomment-body .vhead .vmeta-info {\\n margin: 0 0 0 48px; }\\n .valine .vlist .vcard .vcomment-body .vhead .vname {\\n font-weight: bolder;\\n font-size: 1em;\\n color: var(--color); }\\n .valine .vlist .vcard .vcomment-body .vhead .spacer {\\n color: var(--color-secondary);\\n margin-left: 0.3em;\\n margin-right: 0.3em; }\\n .valine .vlist .vcard .vcomment-body .vhead .vtime {\\n color: var(--color-secondary);\\n display: inline-block;\\n font-weight: normal;\\n font-size: 90%; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper {\\n overflow: hidden;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n margin-left: 48px; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment {\\n position: relative;\\n overflow: auto;\\n color: var(--color); }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment blockquote p {\\n padding-left: 12px; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment p {\\n word-wrap: break-word;\\n white-space: pre-wrap;\\n word-break: break-all;\\n text-align: justify;\\n line-height: 1.8; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment pre {\\n overflow: auto;\\n padding: 6px 10px;\\n word-wrap: break-word;\\n color: var(--color-secondary);\\n background: var(--background-secondary);\\n border-radius: 3px;\\n font-size: .875rem;\\n margin: 5px 0; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand {\\n cursor: pointer;\\n max-height: 11.25rem;\\n overflow: hidden; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand:before {\\n display: block;\\n content: \\\"\\\";\\n position: absolute;\\n width: 100%;\\n left: 0;\\n top: 0;\\n bottom: 3.15rem;\\n pointer-events: none; }\\n .valine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand:after {\\n display: block;\\n content: \\\"\\\";\\n text-align: center;\\n color: var(--color-secondary);\\n position: absolute;\\n width: 100%;\\n height: 3.15rem;\\n line-height: 3.15rem;\\n left: 0;\\n bottom: 0;\\n pointer-events: none; }\\n .valine .vlist .vcard .vcomment-children {\\n margin-left: 48px; }\\n @media screen and (max-width: 600px) {\\n .valine .vlist .vcard .vcomment-children {\\n margin-left: 16px;\\n border-left: 1px solid var(--border-color); } }\\n .valine .vlist .vcard .vcomment-children .vshow-children-wrapper {\\n margin: 0 0 2em; }\\n .valine .vlist .vcard .vcomment-children .vshow-children-wrapper .vshow-children {\\n color: var(--color-secondary);\\n text-decoration: underline;\\n cursor: pointer; }\\n .valine .vlist .vempty {\\n padding: 20px;\\n text-align: center;\\n color: var(--color-secondary); }\\n .valine .spinner {\\n margin: 10px auto;\\n width: 50px;\\n height: 30px;\\n text-align: center;\\n font-size: 10px; }\\n .valine .spinner > div {\\n background-color: var(--background-secondary);\\n height: 100%;\\n width: 6px;\\n margin-right: 3px;\\n display: inline-block;\\n -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;\\n animation: sk-stretchdelay 1.2s infinite ease-in-out; }\\n .valine .spinner .r2 {\\n -webkit-animation-delay: -1.1s;\\n animation-delay: -1.1s; }\\n .valine .spinner .r3 {\\n -webkit-animation-delay: -1.0s;\\n animation-delay: -1.0s; }\\n .valine .spinner .r4 {\\n -webkit-animation-delay: -0.9s;\\n animation-delay: -0.9s; }\\n .valine .spinner .r5 {\\n -webkit-animation-delay: -0.8s;\\n animation-delay: -0.8s; }\\n\\n@-webkit-keyframes sk-stretchdelay {\\n 0%,\\n 40%,\\n 100% {\\n -webkit-transform: scaleY(0.4); }\\n 20% {\\n -webkit-transform: scaleY(1); } }\\n\\n@keyframes sk-stretchdelay {\\n 0%,\\n 40%,\\n 100% {\\n transform: scaleY(0.4);\\n -webkit-transform: scaleY(0.4); }\\n 20% {\\n transform: scaleY(1);\\n -webkit-transform: scaleY(1); } }\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/postcss-loader/lib!./~/sass-loader/lib/loader.js!./src/Valine.scss\n// module id = 12\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader/lib/css-base.js\n// module id = 13\n// module chunks = 0","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = require('./default');\nvar parseStyle = require('./parser');\nvar _ = require('./util');\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cssfilter/lib/css.js\n// module id = 14\n// module chunks = 0","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar _ = require('./util');\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cssfilter/lib/parser.js\n// module id = 15\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(selector) {\n\t\tif (typeof memo[selector] === \"undefined\") {\n\t\t\tmemo[selector] = fn.call(this, selector);\n\t\t}\n\n\t\treturn memo[selector]\n\t};\n})(function (target) {\n\treturn document.querySelector(target)\n});\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of