{"version":3,"file":"markdown-it-prism.mjs","sources":["W:/Projects/sites/library.visyond.gov/80/lib/js/markdown-it-prism/node_modules/@gerhobbelt/markdown-it/dist/markdown-it.mjs","../../src/index.ts","../test.ts"],"sourcesContent":["/*! @gerhobbelt/markdown-it 12.1.0-64 https://github.com/GerHobbelt/markdown-it @license MIT */\nimport punycode from \"punycode\";\n\n// HTML5 entities map: { name -> utf16string }\n/*eslint quotes:0*/\n//export * from \"entities/lib/maps/entities.json\";\nconst entities = {\n  Aacute: \"\\xc1\",\n  aacute: \"\\xe1\",\n  Abreve: \"\\u0102\",\n  abreve: \"\\u0103\",\n  ac: \"\\u223e\",\n  acd: \"\\u223f\",\n  acE: \"\\u223e\\u0333\",\n  Acirc: \"\\xc2\",\n  acirc: \"\\xe2\",\n  acute: \"\\xb4\",\n  Acy: \"\\u0410\",\n  acy: \"\\u0430\",\n  AElig: \"\\xc6\",\n  aelig: \"\\xe6\",\n  af: \"\\u2061\",\n  Afr: \"\\ud835\\udd04\",\n  afr: \"\\ud835\\udd1e\",\n  Agrave: \"\\xc0\",\n  agrave: \"\\xe0\",\n  alefsym: \"\\u2135\",\n  aleph: \"\\u2135\",\n  Alpha: \"\\u0391\",\n  alpha: \"\\u03b1\",\n  Amacr: \"\\u0100\",\n  amacr: \"\\u0101\",\n  amalg: \"\\u2a3f\",\n  amp: \"&\",\n  AMP: \"&\",\n  andand: \"\\u2a55\",\n  And: \"\\u2a53\",\n  and: \"\\u2227\",\n  andd: \"\\u2a5c\",\n  andslope: \"\\u2a58\",\n  andv: \"\\u2a5a\",\n  ang: \"\\u2220\",\n  ange: \"\\u29a4\",\n  angle: \"\\u2220\",\n  angmsdaa: \"\\u29a8\",\n  angmsdab: \"\\u29a9\",\n  angmsdac: \"\\u29aa\",\n  angmsdad: \"\\u29ab\",\n  angmsdae: \"\\u29ac\",\n  angmsdaf: \"\\u29ad\",\n  angmsdag: \"\\u29ae\",\n  angmsdah: \"\\u29af\",\n  angmsd: \"\\u2221\",\n  angrt: \"\\u221f\",\n  angrtvb: \"\\u22be\",\n  angrtvbd: \"\\u299d\",\n  angsph: \"\\u2222\",\n  angst: \"\\xc5\",\n  angzarr: \"\\u237c\",\n  Aogon: \"\\u0104\",\n  aogon: \"\\u0105\",\n  Aopf: \"\\ud835\\udd38\",\n  aopf: \"\\ud835\\udd52\",\n  apacir: \"\\u2a6f\",\n  ap: \"\\u2248\",\n  apE: \"\\u2a70\",\n  ape: \"\\u224a\",\n  apid: \"\\u224b\",\n  apos: \"'\",\n  ApplyFunction: \"\\u2061\",\n  approx: \"\\u2248\",\n  approxeq: \"\\u224a\",\n  Aring: \"\\xc5\",\n  aring: \"\\xe5\",\n  Ascr: \"\\ud835\\udc9c\",\n  ascr: \"\\ud835\\udcb6\",\n  Assign: \"\\u2254\",\n  ast: \"*\",\n  asymp: \"\\u2248\",\n  asympeq: \"\\u224d\",\n  Atilde: \"\\xc3\",\n  atilde: \"\\xe3\",\n  Auml: \"\\xc4\",\n  auml: \"\\xe4\",\n  awconint: \"\\u2233\",\n  awint: \"\\u2a11\",\n  backcong: \"\\u224c\",\n  backepsilon: \"\\u03f6\",\n  backprime: \"\\u2035\",\n  backsim: \"\\u223d\",\n  backsimeq: \"\\u22cd\",\n  Backslash: \"\\u2216\",\n  Barv: \"\\u2ae7\",\n  barvee: \"\\u22bd\",\n  barwed: \"\\u2305\",\n  Barwed: \"\\u2306\",\n  barwedge: \"\\u2305\",\n  bbrk: \"\\u23b5\",\n  bbrktbrk: \"\\u23b6\",\n  bcong: \"\\u224c\",\n  Bcy: \"\\u0411\",\n  bcy: \"\\u0431\",\n  bdquo: \"\\u201e\",\n  becaus: \"\\u2235\",\n  because: \"\\u2235\",\n  Because: \"\\u2235\",\n  bemptyv: \"\\u29b0\",\n  bepsi: \"\\u03f6\",\n  bernou: \"\\u212c\",\n  Bernoullis: \"\\u212c\",\n  Beta: \"\\u0392\",\n  beta: \"\\u03b2\",\n  beth: \"\\u2136\",\n  between: \"\\u226c\",\n  Bfr: \"\\ud835\\udd05\",\n  bfr: \"\\ud835\\udd1f\",\n  bigcap: \"\\u22c2\",\n  bigcirc: \"\\u25ef\",\n  bigcup: \"\\u22c3\",\n  bigodot: \"\\u2a00\",\n  bigoplus: \"\\u2a01\",\n  bigotimes: \"\\u2a02\",\n  bigsqcup: \"\\u2a06\",\n  bigstar: \"\\u2605\",\n  bigtriangledown: \"\\u25bd\",\n  bigtriangleup: \"\\u25b3\",\n  biguplus: \"\\u2a04\",\n  bigvee: \"\\u22c1\",\n  bigwedge: \"\\u22c0\",\n  bkarow: \"\\u290d\",\n  blacklozenge: \"\\u29eb\",\n  blacksquare: \"\\u25aa\",\n  blacktriangle: \"\\u25b4\",\n  blacktriangledown: \"\\u25be\",\n  blacktriangleleft: \"\\u25c2\",\n  blacktriangleright: \"\\u25b8\",\n  blank: \"\\u2423\",\n  blk12: \"\\u2592\",\n  blk14: \"\\u2591\",\n  blk34: \"\\u2593\",\n  block: \"\\u2588\",\n  bne: \"=\\u20e5\",\n  bnequiv: \"\\u2261\\u20e5\",\n  bNot: \"\\u2aed\",\n  bnot: \"\\u2310\",\n  Bopf: \"\\ud835\\udd39\",\n  bopf: \"\\ud835\\udd53\",\n  bot: \"\\u22a5\",\n  bottom: \"\\u22a5\",\n  bowtie: \"\\u22c8\",\n  boxbox: \"\\u29c9\",\n  boxdl: \"\\u2510\",\n  boxdL: \"\\u2555\",\n  boxDl: \"\\u2556\",\n  boxDL: \"\\u2557\",\n  boxdr: \"\\u250c\",\n  boxdR: \"\\u2552\",\n  boxDr: \"\\u2553\",\n  boxDR: \"\\u2554\",\n  boxh: \"\\u2500\",\n  boxH: \"\\u2550\",\n  boxhd: \"\\u252c\",\n  boxHd: \"\\u2564\",\n  boxhD: \"\\u2565\",\n  boxHD: \"\\u2566\",\n  boxhu: \"\\u2534\",\n  boxHu: \"\\u2567\",\n  boxhU: \"\\u2568\",\n  boxHU: \"\\u2569\",\n  boxminus: \"\\u229f\",\n  boxplus: \"\\u229e\",\n  boxtimes: \"\\u22a0\",\n  boxul: \"\\u2518\",\n  boxuL: \"\\u255b\",\n  boxUl: \"\\u255c\",\n  boxUL: \"\\u255d\",\n  boxur: \"\\u2514\",\n  boxuR: \"\\u2558\",\n  boxUr: \"\\u2559\",\n  boxUR: \"\\u255a\",\n  boxv: \"\\u2502\",\n  boxV: \"\\u2551\",\n  boxvh: \"\\u253c\",\n  boxvH: \"\\u256a\",\n  boxVh: \"\\u256b\",\n  boxVH: \"\\u256c\",\n  boxvl: \"\\u2524\",\n  boxvL: \"\\u2561\",\n  boxVl: \"\\u2562\",\n  boxVL: \"\\u2563\",\n  boxvr: \"\\u251c\",\n  boxvR: \"\\u255e\",\n  boxVr: \"\\u255f\",\n  boxVR: \"\\u2560\",\n  bprime: \"\\u2035\",\n  breve: \"\\u02d8\",\n  Breve: \"\\u02d8\",\n  brvbar: \"\\xa6\",\n  bscr: \"\\ud835\\udcb7\",\n  Bscr: \"\\u212c\",\n  bsemi: \"\\u204f\",\n  bsim: \"\\u223d\",\n  bsime: \"\\u22cd\",\n  bsolb: \"\\u29c5\",\n  bsol: \"\\\\\",\n  bsolhsub: \"\\u27c8\",\n  bull: \"\\u2022\",\n  bullet: \"\\u2022\",\n  bump: \"\\u224e\",\n  bumpE: \"\\u2aae\",\n  bumpe: \"\\u224f\",\n  Bumpeq: \"\\u224e\",\n  bumpeq: \"\\u224f\",\n  Cacute: \"\\u0106\",\n  cacute: \"\\u0107\",\n  capand: \"\\u2a44\",\n  capbrcup: \"\\u2a49\",\n  capcap: \"\\u2a4b\",\n  cap: \"\\u2229\",\n  Cap: \"\\u22d2\",\n  capcup: \"\\u2a47\",\n  capdot: \"\\u2a40\",\n  CapitalDifferentialD: \"\\u2145\",\n  caps: \"\\u2229\\ufe00\",\n  caret: \"\\u2041\",\n  caron: \"\\u02c7\",\n  Cayleys: \"\\u212d\",\n  ccaps: \"\\u2a4d\",\n  Ccaron: \"\\u010c\",\n  ccaron: \"\\u010d\",\n  Ccedil: \"\\xc7\",\n  ccedil: \"\\xe7\",\n  Ccirc: \"\\u0108\",\n  ccirc: \"\\u0109\",\n  Cconint: \"\\u2230\",\n  ccups: \"\\u2a4c\",\n  ccupssm: \"\\u2a50\",\n  Cdot: \"\\u010a\",\n  cdot: \"\\u010b\",\n  cedil: \"\\xb8\",\n  Cedilla: \"\\xb8\",\n  cemptyv: \"\\u29b2\",\n  cent: \"\\xa2\",\n  centerdot: \"\\xb7\",\n  CenterDot: \"\\xb7\",\n  cfr: \"\\ud835\\udd20\",\n  Cfr: \"\\u212d\",\n  CHcy: \"\\u0427\",\n  chcy: \"\\u0447\",\n  check: \"\\u2713\",\n  checkmark: \"\\u2713\",\n  Chi: \"\\u03a7\",\n  chi: \"\\u03c7\",\n  circ: \"\\u02c6\",\n  circeq: \"\\u2257\",\n  circlearrowleft: \"\\u21ba\",\n  circlearrowright: \"\\u21bb\",\n  circledast: \"\\u229b\",\n  circledcirc: \"\\u229a\",\n  circleddash: \"\\u229d\",\n  CircleDot: \"\\u2299\",\n  circledR: \"\\xae\",\n  circledS: \"\\u24c8\",\n  CircleMinus: \"\\u2296\",\n  CirclePlus: \"\\u2295\",\n  CircleTimes: \"\\u2297\",\n  cir: \"\\u25cb\",\n  cirE: \"\\u29c3\",\n  cire: \"\\u2257\",\n  cirfnint: \"\\u2a10\",\n  cirmid: \"\\u2aef\",\n  cirscir: \"\\u29c2\",\n  ClockwiseContourIntegral: \"\\u2232\",\n  CloseCurlyDoubleQuote: \"\\u201d\",\n  CloseCurlyQuote: \"\\u2019\",\n  clubs: \"\\u2663\",\n  clubsuit: \"\\u2663\",\n  colon: \":\",\n  Colon: \"\\u2237\",\n  Colone: \"\\u2a74\",\n  colone: \"\\u2254\",\n  coloneq: \"\\u2254\",\n  comma: \",\",\n  commat: \"@\",\n  comp: \"\\u2201\",\n  compfn: \"\\u2218\",\n  complement: \"\\u2201\",\n  complexes: \"\\u2102\",\n  cong: \"\\u2245\",\n  congdot: \"\\u2a6d\",\n  Congruent: \"\\u2261\",\n  conint: \"\\u222e\",\n  Conint: \"\\u222f\",\n  ContourIntegral: \"\\u222e\",\n  copf: \"\\ud835\\udd54\",\n  Copf: \"\\u2102\",\n  coprod: \"\\u2210\",\n  Coproduct: \"\\u2210\",\n  copy: \"\\xa9\",\n  COPY: \"\\xa9\",\n  copysr: \"\\u2117\",\n  CounterClockwiseContourIntegral: \"\\u2233\",\n  crarr: \"\\u21b5\",\n  cross: \"\\u2717\",\n  Cross: \"\\u2a2f\",\n  Cscr: \"\\ud835\\udc9e\",\n  cscr: \"\\ud835\\udcb8\",\n  csub: \"\\u2acf\",\n  csube: \"\\u2ad1\",\n  csup: \"\\u2ad0\",\n  csupe: \"\\u2ad2\",\n  ctdot: \"\\u22ef\",\n  cudarrl: \"\\u2938\",\n  cudarrr: \"\\u2935\",\n  cuepr: \"\\u22de\",\n  cuesc: \"\\u22df\",\n  cularr: \"\\u21b6\",\n  cularrp: \"\\u293d\",\n  cupbrcap: \"\\u2a48\",\n  cupcap: \"\\u2a46\",\n  CupCap: \"\\u224d\",\n  cup: \"\\u222a\",\n  Cup: \"\\u22d3\",\n  cupcup: \"\\u2a4a\",\n  cupdot: \"\\u228d\",\n  cupor: \"\\u2a45\",\n  cups: \"\\u222a\\ufe00\",\n  curarr: \"\\u21b7\",\n  curarrm: \"\\u293c\",\n  curlyeqprec: \"\\u22de\",\n  curlyeqsucc: \"\\u22df\",\n  curlyvee: \"\\u22ce\",\n  curlywedge: \"\\u22cf\",\n  curren: \"\\xa4\",\n  curvearrowleft: \"\\u21b6\",\n  curvearrowright: \"\\u21b7\",\n  cuvee: \"\\u22ce\",\n  cuwed: \"\\u22cf\",\n  cwconint: \"\\u2232\",\n  cwint: \"\\u2231\",\n  cylcty: \"\\u232d\",\n  dagger: \"\\u2020\",\n  Dagger: \"\\u2021\",\n  daleth: \"\\u2138\",\n  darr: \"\\u2193\",\n  Darr: \"\\u21a1\",\n  dArr: \"\\u21d3\",\n  dash: \"\\u2010\",\n  Dashv: \"\\u2ae4\",\n  dashv: \"\\u22a3\",\n  dbkarow: \"\\u290f\",\n  dblac: \"\\u02dd\",\n  Dcaron: \"\\u010e\",\n  dcaron: \"\\u010f\",\n  Dcy: \"\\u0414\",\n  dcy: \"\\u0434\",\n  ddagger: \"\\u2021\",\n  ddarr: \"\\u21ca\",\n  DD: \"\\u2145\",\n  dd: \"\\u2146\",\n  DDotrahd: \"\\u2911\",\n  ddotseq: \"\\u2a77\",\n  deg: \"\\xb0\",\n  Del: \"\\u2207\",\n  Delta: \"\\u0394\",\n  delta: \"\\u03b4\",\n  demptyv: \"\\u29b1\",\n  dfisht: \"\\u297f\",\n  Dfr: \"\\ud835\\udd07\",\n  dfr: \"\\ud835\\udd21\",\n  dHar: \"\\u2965\",\n  dharl: \"\\u21c3\",\n  dharr: \"\\u21c2\",\n  DiacriticalAcute: \"\\xb4\",\n  DiacriticalDot: \"\\u02d9\",\n  DiacriticalDoubleAcute: \"\\u02dd\",\n  DiacriticalGrave: \"`\",\n  DiacriticalTilde: \"\\u02dc\",\n  diam: \"\\u22c4\",\n  diamond: \"\\u22c4\",\n  Diamond: \"\\u22c4\",\n  diamondsuit: \"\\u2666\",\n  diams: \"\\u2666\",\n  die: \"\\xa8\",\n  DifferentialD: \"\\u2146\",\n  digamma: \"\\u03dd\",\n  disin: \"\\u22f2\",\n  div: \"\\xf7\",\n  divide: \"\\xf7\",\n  divideontimes: \"\\u22c7\",\n  divonx: \"\\u22c7\",\n  DJcy: \"\\u0402\",\n  djcy: \"\\u0452\",\n  dlcorn: \"\\u231e\",\n  dlcrop: \"\\u230d\",\n  dollar: \"$\",\n  Dopf: \"\\ud835\\udd3b\",\n  dopf: \"\\ud835\\udd55\",\n  Dot: \"\\xa8\",\n  dot: \"\\u02d9\",\n  DotDot: \"\\u20dc\",\n  doteq: \"\\u2250\",\n  doteqdot: \"\\u2251\",\n  DotEqual: \"\\u2250\",\n  dotminus: \"\\u2238\",\n  dotplus: \"\\u2214\",\n  dotsquare: \"\\u22a1\",\n  doublebarwedge: \"\\u2306\",\n  DoubleContourIntegral: \"\\u222f\",\n  DoubleDot: \"\\xa8\",\n  DoubleDownArrow: \"\\u21d3\",\n  DoubleLeftArrow: \"\\u21d0\",\n  DoubleLeftRightArrow: \"\\u21d4\",\n  DoubleLeftTee: \"\\u2ae4\",\n  DoubleLongLeftArrow: \"\\u27f8\",\n  DoubleLongLeftRightArrow: \"\\u27fa\",\n  DoubleLongRightArrow: \"\\u27f9\",\n  DoubleRightArrow: \"\\u21d2\",\n  DoubleRightTee: \"\\u22a8\",\n  DoubleUpArrow: \"\\u21d1\",\n  DoubleUpDownArrow: \"\\u21d5\",\n  DoubleVerticalBar: \"\\u2225\",\n  DownArrowBar: \"\\u2913\",\n  downarrow: \"\\u2193\",\n  DownArrow: \"\\u2193\",\n  Downarrow: \"\\u21d3\",\n  DownArrowUpArrow: \"\\u21f5\",\n  DownBreve: \"\\u0311\",\n  downdownarrows: \"\\u21ca\",\n  downharpoonleft: \"\\u21c3\",\n  downharpoonright: \"\\u21c2\",\n  DownLeftRightVector: \"\\u2950\",\n  DownLeftTeeVector: \"\\u295e\",\n  DownLeftVectorBar: \"\\u2956\",\n  DownLeftVector: \"\\u21bd\",\n  DownRightTeeVector: \"\\u295f\",\n  DownRightVectorBar: \"\\u2957\",\n  DownRightVector: \"\\u21c1\",\n  DownTeeArrow: \"\\u21a7\",\n  DownTee: \"\\u22a4\",\n  drbkarow: \"\\u2910\",\n  drcorn: \"\\u231f\",\n  drcrop: \"\\u230c\",\n  Dscr: \"\\ud835\\udc9f\",\n  dscr: \"\\ud835\\udcb9\",\n  DScy: \"\\u0405\",\n  dscy: \"\\u0455\",\n  dsol: \"\\u29f6\",\n  Dstrok: \"\\u0110\",\n  dstrok: \"\\u0111\",\n  dtdot: \"\\u22f1\",\n  dtri: \"\\u25bf\",\n  dtrif: \"\\u25be\",\n  duarr: \"\\u21f5\",\n  duhar: \"\\u296f\",\n  dwangle: \"\\u29a6\",\n  DZcy: \"\\u040f\",\n  dzcy: \"\\u045f\",\n  dzigrarr: \"\\u27ff\",\n  Eacute: \"\\xc9\",\n  eacute: \"\\xe9\",\n  easter: \"\\u2a6e\",\n  Ecaron: \"\\u011a\",\n  ecaron: \"\\u011b\",\n  Ecirc: \"\\xca\",\n  ecirc: \"\\xea\",\n  ecir: \"\\u2256\",\n  ecolon: \"\\u2255\",\n  Ecy: \"\\u042d\",\n  ecy: \"\\u044d\",\n  eDDot: \"\\u2a77\",\n  Edot: \"\\u0116\",\n  edot: \"\\u0117\",\n  eDot: \"\\u2251\",\n  ee: \"\\u2147\",\n  efDot: \"\\u2252\",\n  Efr: \"\\ud835\\udd08\",\n  efr: \"\\ud835\\udd22\",\n  eg: \"\\u2a9a\",\n  Egrave: \"\\xc8\",\n  egrave: \"\\xe8\",\n  egs: \"\\u2a96\",\n  egsdot: \"\\u2a98\",\n  el: \"\\u2a99\",\n  Element: \"\\u2208\",\n  elinters: \"\\u23e7\",\n  ell: \"\\u2113\",\n  els: \"\\u2a95\",\n  elsdot: \"\\u2a97\",\n  Emacr: \"\\u0112\",\n  emacr: \"\\u0113\",\n  empty: \"\\u2205\",\n  emptyset: \"\\u2205\",\n  EmptySmallSquare: \"\\u25fb\",\n  emptyv: \"\\u2205\",\n  EmptyVerySmallSquare: \"\\u25ab\",\n  emsp13: \"\\u2004\",\n  emsp14: \"\\u2005\",\n  emsp: \"\\u2003\",\n  ENG: \"\\u014a\",\n  eng: \"\\u014b\",\n  ensp: \"\\u2002\",\n  Eogon: \"\\u0118\",\n  eogon: \"\\u0119\",\n  Eopf: \"\\ud835\\udd3c\",\n  eopf: \"\\ud835\\udd56\",\n  epar: \"\\u22d5\",\n  eparsl: \"\\u29e3\",\n  eplus: \"\\u2a71\",\n  epsi: \"\\u03b5\",\n  Epsilon: \"\\u0395\",\n  epsilon: \"\\u03b5\",\n  epsiv: \"\\u03f5\",\n  eqcirc: \"\\u2256\",\n  eqcolon: \"\\u2255\",\n  eqsim: \"\\u2242\",\n  eqslantgtr: \"\\u2a96\",\n  eqslantless: \"\\u2a95\",\n  Equal: \"\\u2a75\",\n  equals: \"=\",\n  EqualTilde: \"\\u2242\",\n  equest: \"\\u225f\",\n  Equilibrium: \"\\u21cc\",\n  equiv: \"\\u2261\",\n  equivDD: \"\\u2a78\",\n  eqvparsl: \"\\u29e5\",\n  erarr: \"\\u2971\",\n  erDot: \"\\u2253\",\n  escr: \"\\u212f\",\n  Escr: \"\\u2130\",\n  esdot: \"\\u2250\",\n  Esim: \"\\u2a73\",\n  esim: \"\\u2242\",\n  Eta: \"\\u0397\",\n  eta: \"\\u03b7\",\n  ETH: \"\\xd0\",\n  eth: \"\\xf0\",\n  Euml: \"\\xcb\",\n  euml: \"\\xeb\",\n  euro: \"\\u20ac\",\n  excl: \"!\",\n  exist: \"\\u2203\",\n  Exists: \"\\u2203\",\n  expectation: \"\\u2130\",\n  exponentiale: \"\\u2147\",\n  ExponentialE: \"\\u2147\",\n  fallingdotseq: \"\\u2252\",\n  Fcy: \"\\u0424\",\n  fcy: \"\\u0444\",\n  female: \"\\u2640\",\n  ffilig: \"\\ufb03\",\n  fflig: \"\\ufb00\",\n  ffllig: \"\\ufb04\",\n  Ffr: \"\\ud835\\udd09\",\n  ffr: \"\\ud835\\udd23\",\n  filig: \"\\ufb01\",\n  FilledSmallSquare: \"\\u25fc\",\n  FilledVerySmallSquare: \"\\u25aa\",\n  fjlig: \"fj\",\n  flat: \"\\u266d\",\n  fllig: \"\\ufb02\",\n  fltns: \"\\u25b1\",\n  fnof: \"\\u0192\",\n  Fopf: \"\\ud835\\udd3d\",\n  fopf: \"\\ud835\\udd57\",\n  forall: \"\\u2200\",\n  ForAll: \"\\u2200\",\n  fork: \"\\u22d4\",\n  forkv: \"\\u2ad9\",\n  Fouriertrf: \"\\u2131\",\n  fpartint: \"\\u2a0d\",\n  frac12: \"\\xbd\",\n  frac13: \"\\u2153\",\n  frac14: \"\\xbc\",\n  frac15: \"\\u2155\",\n  frac16: \"\\u2159\",\n  frac18: \"\\u215b\",\n  frac23: \"\\u2154\",\n  frac25: \"\\u2156\",\n  frac34: \"\\xbe\",\n  frac35: \"\\u2157\",\n  frac38: \"\\u215c\",\n  frac45: \"\\u2158\",\n  frac56: \"\\u215a\",\n  frac58: \"\\u215d\",\n  frac78: \"\\u215e\",\n  frasl: \"\\u2044\",\n  frown: \"\\u2322\",\n  fscr: \"\\ud835\\udcbb\",\n  Fscr: \"\\u2131\",\n  gacute: \"\\u01f5\",\n  Gamma: \"\\u0393\",\n  gamma: \"\\u03b3\",\n  Gammad: \"\\u03dc\",\n  gammad: \"\\u03dd\",\n  gap: \"\\u2a86\",\n  Gbreve: \"\\u011e\",\n  gbreve: \"\\u011f\",\n  Gcedil: \"\\u0122\",\n  Gcirc: \"\\u011c\",\n  gcirc: \"\\u011d\",\n  Gcy: \"\\u0413\",\n  gcy: \"\\u0433\",\n  Gdot: \"\\u0120\",\n  gdot: \"\\u0121\",\n  ge: \"\\u2265\",\n  gE: \"\\u2267\",\n  gEl: \"\\u2a8c\",\n  gel: \"\\u22db\",\n  geq: \"\\u2265\",\n  geqq: \"\\u2267\",\n  geqslant: \"\\u2a7e\",\n  gescc: \"\\u2aa9\",\n  ges: \"\\u2a7e\",\n  gesdot: \"\\u2a80\",\n  gesdoto: \"\\u2a82\",\n  gesdotol: \"\\u2a84\",\n  gesl: \"\\u22db\\ufe00\",\n  gesles: \"\\u2a94\",\n  Gfr: \"\\ud835\\udd0a\",\n  gfr: \"\\ud835\\udd24\",\n  gg: \"\\u226b\",\n  Gg: \"\\u22d9\",\n  ggg: \"\\u22d9\",\n  gimel: \"\\u2137\",\n  GJcy: \"\\u0403\",\n  gjcy: \"\\u0453\",\n  gla: \"\\u2aa5\",\n  gl: \"\\u2277\",\n  glE: \"\\u2a92\",\n  glj: \"\\u2aa4\",\n  gnap: \"\\u2a8a\",\n  gnapprox: \"\\u2a8a\",\n  gne: \"\\u2a88\",\n  gnE: \"\\u2269\",\n  gneq: \"\\u2a88\",\n  gneqq: \"\\u2269\",\n  gnsim: \"\\u22e7\",\n  Gopf: \"\\ud835\\udd3e\",\n  gopf: \"\\ud835\\udd58\",\n  grave: \"`\",\n  GreaterEqual: \"\\u2265\",\n  GreaterEqualLess: \"\\u22db\",\n  GreaterFullEqual: \"\\u2267\",\n  GreaterGreater: \"\\u2aa2\",\n  GreaterLess: \"\\u2277\",\n  GreaterSlantEqual: \"\\u2a7e\",\n  GreaterTilde: \"\\u2273\",\n  Gscr: \"\\ud835\\udca2\",\n  gscr: \"\\u210a\",\n  gsim: \"\\u2273\",\n  gsime: \"\\u2a8e\",\n  gsiml: \"\\u2a90\",\n  gtcc: \"\\u2aa7\",\n  gtcir: \"\\u2a7a\",\n  gt: \">\",\n  GT: \">\",\n  Gt: \"\\u226b\",\n  gtdot: \"\\u22d7\",\n  gtlPar: \"\\u2995\",\n  gtquest: \"\\u2a7c\",\n  gtrapprox: \"\\u2a86\",\n  gtrarr: \"\\u2978\",\n  gtrdot: \"\\u22d7\",\n  gtreqless: \"\\u22db\",\n  gtreqqless: \"\\u2a8c\",\n  gtrless: \"\\u2277\",\n  gtrsim: \"\\u2273\",\n  gvertneqq: \"\\u2269\\ufe00\",\n  gvnE: \"\\u2269\\ufe00\",\n  Hacek: \"\\u02c7\",\n  hairsp: \"\\u200a\",\n  half: \"\\xbd\",\n  hamilt: \"\\u210b\",\n  HARDcy: \"\\u042a\",\n  hardcy: \"\\u044a\",\n  harrcir: \"\\u2948\",\n  harr: \"\\u2194\",\n  hArr: \"\\u21d4\",\n  harrw: \"\\u21ad\",\n  Hat: \"^\",\n  hbar: \"\\u210f\",\n  Hcirc: \"\\u0124\",\n  hcirc: \"\\u0125\",\n  hearts: \"\\u2665\",\n  heartsuit: \"\\u2665\",\n  hellip: \"\\u2026\",\n  hercon: \"\\u22b9\",\n  hfr: \"\\ud835\\udd25\",\n  Hfr: \"\\u210c\",\n  HilbertSpace: \"\\u210b\",\n  hksearow: \"\\u2925\",\n  hkswarow: \"\\u2926\",\n  hoarr: \"\\u21ff\",\n  homtht: \"\\u223b\",\n  hookleftarrow: \"\\u21a9\",\n  hookrightarrow: \"\\u21aa\",\n  hopf: \"\\ud835\\udd59\",\n  Hopf: \"\\u210d\",\n  horbar: \"\\u2015\",\n  HorizontalLine: \"\\u2500\",\n  hscr: \"\\ud835\\udcbd\",\n  Hscr: \"\\u210b\",\n  hslash: \"\\u210f\",\n  Hstrok: \"\\u0126\",\n  hstrok: \"\\u0127\",\n  HumpDownHump: \"\\u224e\",\n  HumpEqual: \"\\u224f\",\n  hybull: \"\\u2043\",\n  hyphen: \"\\u2010\",\n  Iacute: \"\\xcd\",\n  iacute: \"\\xed\",\n  ic: \"\\u2063\",\n  Icirc: \"\\xce\",\n  icirc: \"\\xee\",\n  Icy: \"\\u0418\",\n  icy: \"\\u0438\",\n  Idot: \"\\u0130\",\n  IEcy: \"\\u0415\",\n  iecy: \"\\u0435\",\n  iexcl: \"\\xa1\",\n  iff: \"\\u21d4\",\n  ifr: \"\\ud835\\udd26\",\n  Ifr: \"\\u2111\",\n  Igrave: \"\\xcc\",\n  igrave: \"\\xec\",\n  ii: \"\\u2148\",\n  iiiint: \"\\u2a0c\",\n  iiint: \"\\u222d\",\n  iinfin: \"\\u29dc\",\n  iiota: \"\\u2129\",\n  IJlig: \"\\u0132\",\n  ijlig: \"\\u0133\",\n  Imacr: \"\\u012a\",\n  imacr: \"\\u012b\",\n  image: \"\\u2111\",\n  ImaginaryI: \"\\u2148\",\n  imagline: \"\\u2110\",\n  imagpart: \"\\u2111\",\n  imath: \"\\u0131\",\n  Im: \"\\u2111\",\n  imof: \"\\u22b7\",\n  imped: \"\\u01b5\",\n  Implies: \"\\u21d2\",\n  incare: \"\\u2105\",\n  in: \"\\u2208\",\n  infin: \"\\u221e\",\n  infintie: \"\\u29dd\",\n  inodot: \"\\u0131\",\n  intcal: \"\\u22ba\",\n  int: \"\\u222b\",\n  Int: \"\\u222c\",\n  integers: \"\\u2124\",\n  Integral: \"\\u222b\",\n  intercal: \"\\u22ba\",\n  Intersection: \"\\u22c2\",\n  intlarhk: \"\\u2a17\",\n  intprod: \"\\u2a3c\",\n  InvisibleComma: \"\\u2063\",\n  InvisibleTimes: \"\\u2062\",\n  IOcy: \"\\u0401\",\n  iocy: \"\\u0451\",\n  Iogon: \"\\u012e\",\n  iogon: \"\\u012f\",\n  Iopf: \"\\ud835\\udd40\",\n  iopf: \"\\ud835\\udd5a\",\n  Iota: \"\\u0399\",\n  iota: \"\\u03b9\",\n  iprod: \"\\u2a3c\",\n  iquest: \"\\xbf\",\n  iscr: \"\\ud835\\udcbe\",\n  Iscr: \"\\u2110\",\n  isin: \"\\u2208\",\n  isindot: \"\\u22f5\",\n  isinE: \"\\u22f9\",\n  isins: \"\\u22f4\",\n  isinsv: \"\\u22f3\",\n  isinv: \"\\u2208\",\n  it: \"\\u2062\",\n  Itilde: \"\\u0128\",\n  itilde: \"\\u0129\",\n  Iukcy: \"\\u0406\",\n  iukcy: \"\\u0456\",\n  Iuml: \"\\xcf\",\n  iuml: \"\\xef\",\n  Jcirc: \"\\u0134\",\n  jcirc: \"\\u0135\",\n  Jcy: \"\\u0419\",\n  jcy: \"\\u0439\",\n  Jfr: \"\\ud835\\udd0d\",\n  jfr: \"\\ud835\\udd27\",\n  jmath: \"\\u0237\",\n  Jopf: \"\\ud835\\udd41\",\n  jopf: \"\\ud835\\udd5b\",\n  Jscr: \"\\ud835\\udca5\",\n  jscr: \"\\ud835\\udcbf\",\n  Jsercy: \"\\u0408\",\n  jsercy: \"\\u0458\",\n  Jukcy: \"\\u0404\",\n  jukcy: \"\\u0454\",\n  Kappa: \"\\u039a\",\n  kappa: \"\\u03ba\",\n  kappav: \"\\u03f0\",\n  Kcedil: \"\\u0136\",\n  kcedil: \"\\u0137\",\n  Kcy: \"\\u041a\",\n  kcy: \"\\u043a\",\n  Kfr: \"\\ud835\\udd0e\",\n  kfr: \"\\ud835\\udd28\",\n  kgreen: \"\\u0138\",\n  KHcy: \"\\u0425\",\n  khcy: \"\\u0445\",\n  KJcy: \"\\u040c\",\n  kjcy: \"\\u045c\",\n  Kopf: \"\\ud835\\udd42\",\n  kopf: \"\\ud835\\udd5c\",\n  Kscr: \"\\ud835\\udca6\",\n  kscr: \"\\ud835\\udcc0\",\n  lAarr: \"\\u21da\",\n  Lacute: \"\\u0139\",\n  lacute: \"\\u013a\",\n  laemptyv: \"\\u29b4\",\n  lagran: \"\\u2112\",\n  Lambda: \"\\u039b\",\n  lambda: \"\\u03bb\",\n  lang: \"\\u27e8\",\n  Lang: \"\\u27ea\",\n  langd: \"\\u2991\",\n  langle: \"\\u27e8\",\n  lap: \"\\u2a85\",\n  Laplacetrf: \"\\u2112\",\n  laquo: \"\\xab\",\n  larrb: \"\\u21e4\",\n  larrbfs: \"\\u291f\",\n  larr: \"\\u2190\",\n  Larr: \"\\u219e\",\n  lArr: \"\\u21d0\",\n  larrfs: \"\\u291d\",\n  larrhk: \"\\u21a9\",\n  larrlp: \"\\u21ab\",\n  larrpl: \"\\u2939\",\n  larrsim: \"\\u2973\",\n  larrtl: \"\\u21a2\",\n  latail: \"\\u2919\",\n  lAtail: \"\\u291b\",\n  lat: \"\\u2aab\",\n  late: \"\\u2aad\",\n  lates: \"\\u2aad\\ufe00\",\n  lbarr: \"\\u290c\",\n  lBarr: \"\\u290e\",\n  lbbrk: \"\\u2772\",\n  lbrace: \"{\",\n  lbrack: \"[\",\n  lbrke: \"\\u298b\",\n  lbrksld: \"\\u298f\",\n  lbrkslu: \"\\u298d\",\n  Lcaron: \"\\u013d\",\n  lcaron: \"\\u013e\",\n  Lcedil: \"\\u013b\",\n  lcedil: \"\\u013c\",\n  lceil: \"\\u2308\",\n  lcub: \"{\",\n  Lcy: \"\\u041b\",\n  lcy: \"\\u043b\",\n  ldca: \"\\u2936\",\n  ldquo: \"\\u201c\",\n  ldquor: \"\\u201e\",\n  ldrdhar: \"\\u2967\",\n  ldrushar: \"\\u294b\",\n  ldsh: \"\\u21b2\",\n  le: \"\\u2264\",\n  lE: \"\\u2266\",\n  LeftAngleBracket: \"\\u27e8\",\n  LeftArrowBar: \"\\u21e4\",\n  leftarrow: \"\\u2190\",\n  LeftArrow: \"\\u2190\",\n  Leftarrow: \"\\u21d0\",\n  LeftArrowRightArrow: \"\\u21c6\",\n  leftarrowtail: \"\\u21a2\",\n  LeftCeiling: \"\\u2308\",\n  LeftDoubleBracket: \"\\u27e6\",\n  LeftDownTeeVector: \"\\u2961\",\n  LeftDownVectorBar: \"\\u2959\",\n  LeftDownVector: \"\\u21c3\",\n  LeftFloor: \"\\u230a\",\n  leftharpoondown: \"\\u21bd\",\n  leftharpoonup: \"\\u21bc\",\n  leftleftarrows: \"\\u21c7\",\n  leftrightarrow: \"\\u2194\",\n  LeftRightArrow: \"\\u2194\",\n  Leftrightarrow: \"\\u21d4\",\n  leftrightarrows: \"\\u21c6\",\n  leftrightharpoons: \"\\u21cb\",\n  leftrightsquigarrow: \"\\u21ad\",\n  LeftRightVector: \"\\u294e\",\n  LeftTeeArrow: \"\\u21a4\",\n  LeftTee: \"\\u22a3\",\n  LeftTeeVector: \"\\u295a\",\n  leftthreetimes: \"\\u22cb\",\n  LeftTriangleBar: \"\\u29cf\",\n  LeftTriangle: \"\\u22b2\",\n  LeftTriangleEqual: \"\\u22b4\",\n  LeftUpDownVector: \"\\u2951\",\n  LeftUpTeeVector: \"\\u2960\",\n  LeftUpVectorBar: \"\\u2958\",\n  LeftUpVector: \"\\u21bf\",\n  LeftVectorBar: \"\\u2952\",\n  LeftVector: \"\\u21bc\",\n  lEg: \"\\u2a8b\",\n  leg: \"\\u22da\",\n  leq: \"\\u2264\",\n  leqq: \"\\u2266\",\n  leqslant: \"\\u2a7d\",\n  lescc: \"\\u2aa8\",\n  les: \"\\u2a7d\",\n  lesdot: \"\\u2a7f\",\n  lesdoto: \"\\u2a81\",\n  lesdotor: \"\\u2a83\",\n  lesg: \"\\u22da\\ufe00\",\n  lesges: \"\\u2a93\",\n  lessapprox: \"\\u2a85\",\n  lessdot: \"\\u22d6\",\n  lesseqgtr: \"\\u22da\",\n  lesseqqgtr: \"\\u2a8b\",\n  LessEqualGreater: \"\\u22da\",\n  LessFullEqual: \"\\u2266\",\n  LessGreater: \"\\u2276\",\n  lessgtr: \"\\u2276\",\n  LessLess: \"\\u2aa1\",\n  lesssim: \"\\u2272\",\n  LessSlantEqual: \"\\u2a7d\",\n  LessTilde: \"\\u2272\",\n  lfisht: \"\\u297c\",\n  lfloor: \"\\u230a\",\n  Lfr: \"\\ud835\\udd0f\",\n  lfr: \"\\ud835\\udd29\",\n  lg: \"\\u2276\",\n  lgE: \"\\u2a91\",\n  lHar: \"\\u2962\",\n  lhard: \"\\u21bd\",\n  lharu: \"\\u21bc\",\n  lharul: \"\\u296a\",\n  lhblk: \"\\u2584\",\n  LJcy: \"\\u0409\",\n  ljcy: \"\\u0459\",\n  llarr: \"\\u21c7\",\n  ll: \"\\u226a\",\n  Ll: \"\\u22d8\",\n  llcorner: \"\\u231e\",\n  Lleftarrow: \"\\u21da\",\n  llhard: \"\\u296b\",\n  lltri: \"\\u25fa\",\n  Lmidot: \"\\u013f\",\n  lmidot: \"\\u0140\",\n  lmoustache: \"\\u23b0\",\n  lmoust: \"\\u23b0\",\n  lnap: \"\\u2a89\",\n  lnapprox: \"\\u2a89\",\n  lne: \"\\u2a87\",\n  lnE: \"\\u2268\",\n  lneq: \"\\u2a87\",\n  lneqq: \"\\u2268\",\n  lnsim: \"\\u22e6\",\n  loang: \"\\u27ec\",\n  loarr: \"\\u21fd\",\n  lobrk: \"\\u27e6\",\n  longleftarrow: \"\\u27f5\",\n  LongLeftArrow: \"\\u27f5\",\n  Longleftarrow: \"\\u27f8\",\n  longleftrightarrow: \"\\u27f7\",\n  LongLeftRightArrow: \"\\u27f7\",\n  Longleftrightarrow: \"\\u27fa\",\n  longmapsto: \"\\u27fc\",\n  longrightarrow: \"\\u27f6\",\n  LongRightArrow: \"\\u27f6\",\n  Longrightarrow: \"\\u27f9\",\n  looparrowleft: \"\\u21ab\",\n  looparrowright: \"\\u21ac\",\n  lopar: \"\\u2985\",\n  Lopf: \"\\ud835\\udd43\",\n  lopf: \"\\ud835\\udd5d\",\n  loplus: \"\\u2a2d\",\n  lotimes: \"\\u2a34\",\n  lowast: \"\\u2217\",\n  lowbar: \"_\",\n  LowerLeftArrow: \"\\u2199\",\n  LowerRightArrow: \"\\u2198\",\n  loz: \"\\u25ca\",\n  lozenge: \"\\u25ca\",\n  lozf: \"\\u29eb\",\n  lpar: \"(\",\n  lparlt: \"\\u2993\",\n  lrarr: \"\\u21c6\",\n  lrcorner: \"\\u231f\",\n  lrhar: \"\\u21cb\",\n  lrhard: \"\\u296d\",\n  lrm: \"\\u200e\",\n  lrtri: \"\\u22bf\",\n  lsaquo: \"\\u2039\",\n  lscr: \"\\ud835\\udcc1\",\n  Lscr: \"\\u2112\",\n  lsh: \"\\u21b0\",\n  Lsh: \"\\u21b0\",\n  lsim: \"\\u2272\",\n  lsime: \"\\u2a8d\",\n  lsimg: \"\\u2a8f\",\n  lsqb: \"[\",\n  lsquo: \"\\u2018\",\n  lsquor: \"\\u201a\",\n  Lstrok: \"\\u0141\",\n  lstrok: \"\\u0142\",\n  ltcc: \"\\u2aa6\",\n  ltcir: \"\\u2a79\",\n  lt: \"<\",\n  LT: \"<\",\n  Lt: \"\\u226a\",\n  ltdot: \"\\u22d6\",\n  lthree: \"\\u22cb\",\n  ltimes: \"\\u22c9\",\n  ltlarr: \"\\u2976\",\n  ltquest: \"\\u2a7b\",\n  ltri: \"\\u25c3\",\n  ltrie: \"\\u22b4\",\n  ltrif: \"\\u25c2\",\n  ltrPar: \"\\u2996\",\n  lurdshar: \"\\u294a\",\n  luruhar: \"\\u2966\",\n  lvertneqq: \"\\u2268\\ufe00\",\n  lvnE: \"\\u2268\\ufe00\",\n  macr: \"\\xaf\",\n  male: \"\\u2642\",\n  malt: \"\\u2720\",\n  maltese: \"\\u2720\",\n  Map: \"\\u2905\",\n  map: \"\\u21a6\",\n  mapsto: \"\\u21a6\",\n  mapstodown: \"\\u21a7\",\n  mapstoleft: \"\\u21a4\",\n  mapstoup: \"\\u21a5\",\n  marker: \"\\u25ae\",\n  mcomma: \"\\u2a29\",\n  Mcy: \"\\u041c\",\n  mcy: \"\\u043c\",\n  mdash: \"\\u2014\",\n  mDDot: \"\\u223a\",\n  measuredangle: \"\\u2221\",\n  MediumSpace: \"\\u205f\",\n  Mellintrf: \"\\u2133\",\n  Mfr: \"\\ud835\\udd10\",\n  mfr: \"\\ud835\\udd2a\",\n  mho: \"\\u2127\",\n  micro: \"\\xb5\",\n  midast: \"*\",\n  midcir: \"\\u2af0\",\n  mid: \"\\u2223\",\n  middot: \"\\xb7\",\n  minusb: \"\\u229f\",\n  minus: \"\\u2212\",\n  minusd: \"\\u2238\",\n  minusdu: \"\\u2a2a\",\n  MinusPlus: \"\\u2213\",\n  mlcp: \"\\u2adb\",\n  mldr: \"\\u2026\",\n  mnplus: \"\\u2213\",\n  models: \"\\u22a7\",\n  Mopf: \"\\ud835\\udd44\",\n  mopf: \"\\ud835\\udd5e\",\n  mp: \"\\u2213\",\n  mscr: \"\\ud835\\udcc2\",\n  Mscr: \"\\u2133\",\n  mstpos: \"\\u223e\",\n  Mu: \"\\u039c\",\n  mu: \"\\u03bc\",\n  multimap: \"\\u22b8\",\n  mumap: \"\\u22b8\",\n  nabla: \"\\u2207\",\n  Nacute: \"\\u0143\",\n  nacute: \"\\u0144\",\n  nang: \"\\u2220\\u20d2\",\n  nap: \"\\u2249\",\n  napE: \"\\u2a70\\u0338\",\n  napid: \"\\u224b\\u0338\",\n  napos: \"\\u0149\",\n  napprox: \"\\u2249\",\n  natural: \"\\u266e\",\n  naturals: \"\\u2115\",\n  natur: \"\\u266e\",\n  nbsp: \"\\xa0\",\n  nbump: \"\\u224e\\u0338\",\n  nbumpe: \"\\u224f\\u0338\",\n  ncap: \"\\u2a43\",\n  Ncaron: \"\\u0147\",\n  ncaron: \"\\u0148\",\n  Ncedil: \"\\u0145\",\n  ncedil: \"\\u0146\",\n  ncong: \"\\u2247\",\n  ncongdot: \"\\u2a6d\\u0338\",\n  ncup: \"\\u2a42\",\n  Ncy: \"\\u041d\",\n  ncy: \"\\u043d\",\n  ndash: \"\\u2013\",\n  nearhk: \"\\u2924\",\n  nearr: \"\\u2197\",\n  neArr: \"\\u21d7\",\n  nearrow: \"\\u2197\",\n  ne: \"\\u2260\",\n  nedot: \"\\u2250\\u0338\",\n  NegativeMediumSpace: \"\\u200b\",\n  NegativeThickSpace: \"\\u200b\",\n  NegativeThinSpace: \"\\u200b\",\n  NegativeVeryThinSpace: \"\\u200b\",\n  nequiv: \"\\u2262\",\n  nesear: \"\\u2928\",\n  nesim: \"\\u2242\\u0338\",\n  NestedGreaterGreater: \"\\u226b\",\n  NestedLessLess: \"\\u226a\",\n  NewLine: \"\\n\",\n  nexist: \"\\u2204\",\n  nexists: \"\\u2204\",\n  Nfr: \"\\ud835\\udd11\",\n  nfr: \"\\ud835\\udd2b\",\n  ngE: \"\\u2267\\u0338\",\n  nge: \"\\u2271\",\n  ngeq: \"\\u2271\",\n  ngeqq: \"\\u2267\\u0338\",\n  ngeqslant: \"\\u2a7e\\u0338\",\n  nges: \"\\u2a7e\\u0338\",\n  nGg: \"\\u22d9\\u0338\",\n  ngsim: \"\\u2275\",\n  nGt: \"\\u226b\\u20d2\",\n  ngt: \"\\u226f\",\n  ngtr: \"\\u226f\",\n  nGtv: \"\\u226b\\u0338\",\n  nharr: \"\\u21ae\",\n  nhArr: \"\\u21ce\",\n  nhpar: \"\\u2af2\",\n  ni: \"\\u220b\",\n  nis: \"\\u22fc\",\n  nisd: \"\\u22fa\",\n  niv: \"\\u220b\",\n  NJcy: \"\\u040a\",\n  njcy: \"\\u045a\",\n  nlarr: \"\\u219a\",\n  nlArr: \"\\u21cd\",\n  nldr: \"\\u2025\",\n  nlE: \"\\u2266\\u0338\",\n  nle: \"\\u2270\",\n  nleftarrow: \"\\u219a\",\n  nLeftarrow: \"\\u21cd\",\n  nleftrightarrow: \"\\u21ae\",\n  nLeftrightarrow: \"\\u21ce\",\n  nleq: \"\\u2270\",\n  nleqq: \"\\u2266\\u0338\",\n  nleqslant: \"\\u2a7d\\u0338\",\n  nles: \"\\u2a7d\\u0338\",\n  nless: \"\\u226e\",\n  nLl: \"\\u22d8\\u0338\",\n  nlsim: \"\\u2274\",\n  nLt: \"\\u226a\\u20d2\",\n  nlt: \"\\u226e\",\n  nltri: \"\\u22ea\",\n  nltrie: \"\\u22ec\",\n  nLtv: \"\\u226a\\u0338\",\n  nmid: \"\\u2224\",\n  NoBreak: \"\\u2060\",\n  NonBreakingSpace: \"\\xa0\",\n  nopf: \"\\ud835\\udd5f\",\n  Nopf: \"\\u2115\",\n  Not: \"\\u2aec\",\n  not: \"\\xac\",\n  NotCongruent: \"\\u2262\",\n  NotCupCap: \"\\u226d\",\n  NotDoubleVerticalBar: \"\\u2226\",\n  NotElement: \"\\u2209\",\n  NotEqual: \"\\u2260\",\n  NotEqualTilde: \"\\u2242\\u0338\",\n  NotExists: \"\\u2204\",\n  NotGreater: \"\\u226f\",\n  NotGreaterEqual: \"\\u2271\",\n  NotGreaterFullEqual: \"\\u2267\\u0338\",\n  NotGreaterGreater: \"\\u226b\\u0338\",\n  NotGreaterLess: \"\\u2279\",\n  NotGreaterSlantEqual: \"\\u2a7e\\u0338\",\n  NotGreaterTilde: \"\\u2275\",\n  NotHumpDownHump: \"\\u224e\\u0338\",\n  NotHumpEqual: \"\\u224f\\u0338\",\n  notin: \"\\u2209\",\n  notindot: \"\\u22f5\\u0338\",\n  notinE: \"\\u22f9\\u0338\",\n  notinva: \"\\u2209\",\n  notinvb: \"\\u22f7\",\n  notinvc: \"\\u22f6\",\n  NotLeftTriangleBar: \"\\u29cf\\u0338\",\n  NotLeftTriangle: \"\\u22ea\",\n  NotLeftTriangleEqual: \"\\u22ec\",\n  NotLess: \"\\u226e\",\n  NotLessEqual: \"\\u2270\",\n  NotLessGreater: \"\\u2278\",\n  NotLessLess: \"\\u226a\\u0338\",\n  NotLessSlantEqual: \"\\u2a7d\\u0338\",\n  NotLessTilde: \"\\u2274\",\n  NotNestedGreaterGreater: \"\\u2aa2\\u0338\",\n  NotNestedLessLess: \"\\u2aa1\\u0338\",\n  notni: \"\\u220c\",\n  notniva: \"\\u220c\",\n  notnivb: \"\\u22fe\",\n  notnivc: \"\\u22fd\",\n  NotPrecedes: \"\\u2280\",\n  NotPrecedesEqual: \"\\u2aaf\\u0338\",\n  NotPrecedesSlantEqual: \"\\u22e0\",\n  NotReverseElement: \"\\u220c\",\n  NotRightTriangleBar: \"\\u29d0\\u0338\",\n  NotRightTriangle: \"\\u22eb\",\n  NotRightTriangleEqual: \"\\u22ed\",\n  NotSquareSubset: \"\\u228f\\u0338\",\n  NotSquareSubsetEqual: \"\\u22e2\",\n  NotSquareSuperset: \"\\u2290\\u0338\",\n  NotSquareSupersetEqual: \"\\u22e3\",\n  NotSubset: \"\\u2282\\u20d2\",\n  NotSubsetEqual: \"\\u2288\",\n  NotSucceeds: \"\\u2281\",\n  NotSucceedsEqual: \"\\u2ab0\\u0338\",\n  NotSucceedsSlantEqual: \"\\u22e1\",\n  NotSucceedsTilde: \"\\u227f\\u0338\",\n  NotSuperset: \"\\u2283\\u20d2\",\n  NotSupersetEqual: \"\\u2289\",\n  NotTilde: \"\\u2241\",\n  NotTildeEqual: \"\\u2244\",\n  NotTildeFullEqual: \"\\u2247\",\n  NotTildeTilde: \"\\u2249\",\n  NotVerticalBar: \"\\u2224\",\n  nparallel: \"\\u2226\",\n  npar: \"\\u2226\",\n  nparsl: \"\\u2afd\\u20e5\",\n  npart: \"\\u2202\\u0338\",\n  npolint: \"\\u2a14\",\n  npr: \"\\u2280\",\n  nprcue: \"\\u22e0\",\n  nprec: \"\\u2280\",\n  npreceq: \"\\u2aaf\\u0338\",\n  npre: \"\\u2aaf\\u0338\",\n  nrarrc: \"\\u2933\\u0338\",\n  nrarr: \"\\u219b\",\n  nrArr: \"\\u21cf\",\n  nrarrw: \"\\u219d\\u0338\",\n  nrightarrow: \"\\u219b\",\n  nRightarrow: \"\\u21cf\",\n  nrtri: \"\\u22eb\",\n  nrtrie: \"\\u22ed\",\n  nsc: \"\\u2281\",\n  nsccue: \"\\u22e1\",\n  nsce: \"\\u2ab0\\u0338\",\n  Nscr: \"\\ud835\\udca9\",\n  nscr: \"\\ud835\\udcc3\",\n  nshortmid: \"\\u2224\",\n  nshortparallel: \"\\u2226\",\n  nsim: \"\\u2241\",\n  nsime: \"\\u2244\",\n  nsimeq: \"\\u2244\",\n  nsmid: \"\\u2224\",\n  nspar: \"\\u2226\",\n  nsqsube: \"\\u22e2\",\n  nsqsupe: \"\\u22e3\",\n  nsub: \"\\u2284\",\n  nsubE: \"\\u2ac5\\u0338\",\n  nsube: \"\\u2288\",\n  nsubset: \"\\u2282\\u20d2\",\n  nsubseteq: \"\\u2288\",\n  nsubseteqq: \"\\u2ac5\\u0338\",\n  nsucc: \"\\u2281\",\n  nsucceq: \"\\u2ab0\\u0338\",\n  nsup: \"\\u2285\",\n  nsupE: \"\\u2ac6\\u0338\",\n  nsupe: \"\\u2289\",\n  nsupset: \"\\u2283\\u20d2\",\n  nsupseteq: \"\\u2289\",\n  nsupseteqq: \"\\u2ac6\\u0338\",\n  ntgl: \"\\u2279\",\n  Ntilde: \"\\xd1\",\n  ntilde: \"\\xf1\",\n  ntlg: \"\\u2278\",\n  ntriangleleft: \"\\u22ea\",\n  ntrianglelefteq: \"\\u22ec\",\n  ntriangleright: \"\\u22eb\",\n  ntrianglerighteq: \"\\u22ed\",\n  Nu: \"\\u039d\",\n  nu: \"\\u03bd\",\n  num: \"#\",\n  numero: \"\\u2116\",\n  numsp: \"\\u2007\",\n  nvap: \"\\u224d\\u20d2\",\n  nvdash: \"\\u22ac\",\n  nvDash: \"\\u22ad\",\n  nVdash: \"\\u22ae\",\n  nVDash: \"\\u22af\",\n  nvge: \"\\u2265\\u20d2\",\n  nvgt: \">\\u20d2\",\n  nvHarr: \"\\u2904\",\n  nvinfin: \"\\u29de\",\n  nvlArr: \"\\u2902\",\n  nvle: \"\\u2264\\u20d2\",\n  nvlt: \"<\\u20d2\",\n  nvltrie: \"\\u22b4\\u20d2\",\n  nvrArr: \"\\u2903\",\n  nvrtrie: \"\\u22b5\\u20d2\",\n  nvsim: \"\\u223c\\u20d2\",\n  nwarhk: \"\\u2923\",\n  nwarr: \"\\u2196\",\n  nwArr: \"\\u21d6\",\n  nwarrow: \"\\u2196\",\n  nwnear: \"\\u2927\",\n  Oacute: \"\\xd3\",\n  oacute: \"\\xf3\",\n  oast: \"\\u229b\",\n  Ocirc: \"\\xd4\",\n  ocirc: \"\\xf4\",\n  ocir: \"\\u229a\",\n  Ocy: \"\\u041e\",\n  ocy: \"\\u043e\",\n  odash: \"\\u229d\",\n  Odblac: \"\\u0150\",\n  odblac: \"\\u0151\",\n  odiv: \"\\u2a38\",\n  odot: \"\\u2299\",\n  odsold: \"\\u29bc\",\n  OElig: \"\\u0152\",\n  oelig: \"\\u0153\",\n  ofcir: \"\\u29bf\",\n  Ofr: \"\\ud835\\udd12\",\n  ofr: \"\\ud835\\udd2c\",\n  ogon: \"\\u02db\",\n  Ograve: \"\\xd2\",\n  ograve: \"\\xf2\",\n  ogt: \"\\u29c1\",\n  ohbar: \"\\u29b5\",\n  ohm: \"\\u03a9\",\n  oint: \"\\u222e\",\n  olarr: \"\\u21ba\",\n  olcir: \"\\u29be\",\n  olcross: \"\\u29bb\",\n  oline: \"\\u203e\",\n  olt: \"\\u29c0\",\n  Omacr: \"\\u014c\",\n  omacr: \"\\u014d\",\n  Omega: \"\\u03a9\",\n  omega: \"\\u03c9\",\n  Omicron: \"\\u039f\",\n  omicron: \"\\u03bf\",\n  omid: \"\\u29b6\",\n  ominus: \"\\u2296\",\n  Oopf: \"\\ud835\\udd46\",\n  oopf: \"\\ud835\\udd60\",\n  opar: \"\\u29b7\",\n  OpenCurlyDoubleQuote: \"\\u201c\",\n  OpenCurlyQuote: \"\\u2018\",\n  operp: \"\\u29b9\",\n  oplus: \"\\u2295\",\n  orarr: \"\\u21bb\",\n  Or: \"\\u2a54\",\n  or: \"\\u2228\",\n  ord: \"\\u2a5d\",\n  order: \"\\u2134\",\n  orderof: \"\\u2134\",\n  ordf: \"\\xaa\",\n  ordm: \"\\xba\",\n  origof: \"\\u22b6\",\n  oror: \"\\u2a56\",\n  orslope: \"\\u2a57\",\n  orv: \"\\u2a5b\",\n  oS: \"\\u24c8\",\n  Oscr: \"\\ud835\\udcaa\",\n  oscr: \"\\u2134\",\n  Oslash: \"\\xd8\",\n  oslash: \"\\xf8\",\n  osol: \"\\u2298\",\n  Otilde: \"\\xd5\",\n  otilde: \"\\xf5\",\n  otimesas: \"\\u2a36\",\n  Otimes: \"\\u2a37\",\n  otimes: \"\\u2297\",\n  Ouml: \"\\xd6\",\n  ouml: \"\\xf6\",\n  ovbar: \"\\u233d\",\n  OverBar: \"\\u203e\",\n  OverBrace: \"\\u23de\",\n  OverBracket: \"\\u23b4\",\n  OverParenthesis: \"\\u23dc\",\n  para: \"\\xb6\",\n  parallel: \"\\u2225\",\n  par: \"\\u2225\",\n  parsim: \"\\u2af3\",\n  parsl: \"\\u2afd\",\n  part: \"\\u2202\",\n  PartialD: \"\\u2202\",\n  Pcy: \"\\u041f\",\n  pcy: \"\\u043f\",\n  percnt: \"%\",\n  period: \".\",\n  permil: \"\\u2030\",\n  perp: \"\\u22a5\",\n  pertenk: \"\\u2031\",\n  Pfr: \"\\ud835\\udd13\",\n  pfr: \"\\ud835\\udd2d\",\n  Phi: \"\\u03a6\",\n  phi: \"\\u03c6\",\n  phiv: \"\\u03d5\",\n  phmmat: \"\\u2133\",\n  phone: \"\\u260e\",\n  Pi: \"\\u03a0\",\n  pi: \"\\u03c0\",\n  pitchfork: \"\\u22d4\",\n  piv: \"\\u03d6\",\n  planck: \"\\u210f\",\n  planckh: \"\\u210e\",\n  plankv: \"\\u210f\",\n  plusacir: \"\\u2a23\",\n  plusb: \"\\u229e\",\n  pluscir: \"\\u2a22\",\n  plus: \"+\",\n  plusdo: \"\\u2214\",\n  plusdu: \"\\u2a25\",\n  pluse: \"\\u2a72\",\n  PlusMinus: \"\\xb1\",\n  plusmn: \"\\xb1\",\n  plussim: \"\\u2a26\",\n  plustwo: \"\\u2a27\",\n  pm: \"\\xb1\",\n  Poincareplane: \"\\u210c\",\n  pointint: \"\\u2a15\",\n  popf: \"\\ud835\\udd61\",\n  Popf: \"\\u2119\",\n  pound: \"\\xa3\",\n  prap: \"\\u2ab7\",\n  Pr: \"\\u2abb\",\n  pr: \"\\u227a\",\n  prcue: \"\\u227c\",\n  precapprox: \"\\u2ab7\",\n  prec: \"\\u227a\",\n  preccurlyeq: \"\\u227c\",\n  Precedes: \"\\u227a\",\n  PrecedesEqual: \"\\u2aaf\",\n  PrecedesSlantEqual: \"\\u227c\",\n  PrecedesTilde: \"\\u227e\",\n  preceq: \"\\u2aaf\",\n  precnapprox: \"\\u2ab9\",\n  precneqq: \"\\u2ab5\",\n  precnsim: \"\\u22e8\",\n  pre: \"\\u2aaf\",\n  prE: \"\\u2ab3\",\n  precsim: \"\\u227e\",\n  prime: \"\\u2032\",\n  Prime: \"\\u2033\",\n  primes: \"\\u2119\",\n  prnap: \"\\u2ab9\",\n  prnE: \"\\u2ab5\",\n  prnsim: \"\\u22e8\",\n  prod: \"\\u220f\",\n  Product: \"\\u220f\",\n  profalar: \"\\u232e\",\n  profline: \"\\u2312\",\n  profsurf: \"\\u2313\",\n  prop: \"\\u221d\",\n  Proportional: \"\\u221d\",\n  Proportion: \"\\u2237\",\n  propto: \"\\u221d\",\n  prsim: \"\\u227e\",\n  prurel: \"\\u22b0\",\n  Pscr: \"\\ud835\\udcab\",\n  pscr: \"\\ud835\\udcc5\",\n  Psi: \"\\u03a8\",\n  psi: \"\\u03c8\",\n  puncsp: \"\\u2008\",\n  Qfr: \"\\ud835\\udd14\",\n  qfr: \"\\ud835\\udd2e\",\n  qint: \"\\u2a0c\",\n  qopf: \"\\ud835\\udd62\",\n  Qopf: \"\\u211a\",\n  qprime: \"\\u2057\",\n  Qscr: \"\\ud835\\udcac\",\n  qscr: \"\\ud835\\udcc6\",\n  quaternions: \"\\u210d\",\n  quatint: \"\\u2a16\",\n  quest: \"?\",\n  questeq: \"\\u225f\",\n  quot: '\"',\n  QUOT: '\"',\n  rAarr: \"\\u21db\",\n  race: \"\\u223d\\u0331\",\n  Racute: \"\\u0154\",\n  racute: \"\\u0155\",\n  radic: \"\\u221a\",\n  raemptyv: \"\\u29b3\",\n  rang: \"\\u27e9\",\n  Rang: \"\\u27eb\",\n  rangd: \"\\u2992\",\n  range: \"\\u29a5\",\n  rangle: \"\\u27e9\",\n  raquo: \"\\xbb\",\n  rarrap: \"\\u2975\",\n  rarrb: \"\\u21e5\",\n  rarrbfs: \"\\u2920\",\n  rarrc: \"\\u2933\",\n  rarr: \"\\u2192\",\n  Rarr: \"\\u21a0\",\n  rArr: \"\\u21d2\",\n  rarrfs: \"\\u291e\",\n  rarrhk: \"\\u21aa\",\n  rarrlp: \"\\u21ac\",\n  rarrpl: \"\\u2945\",\n  rarrsim: \"\\u2974\",\n  Rarrtl: \"\\u2916\",\n  rarrtl: \"\\u21a3\",\n  rarrw: \"\\u219d\",\n  ratail: \"\\u291a\",\n  rAtail: \"\\u291c\",\n  ratio: \"\\u2236\",\n  rationals: \"\\u211a\",\n  rbarr: \"\\u290d\",\n  rBarr: \"\\u290f\",\n  RBarr: \"\\u2910\",\n  rbbrk: \"\\u2773\",\n  rbrace: \"}\",\n  rbrack: \"]\",\n  rbrke: \"\\u298c\",\n  rbrksld: \"\\u298e\",\n  rbrkslu: \"\\u2990\",\n  Rcaron: \"\\u0158\",\n  rcaron: \"\\u0159\",\n  Rcedil: \"\\u0156\",\n  rcedil: \"\\u0157\",\n  rceil: \"\\u2309\",\n  rcub: \"}\",\n  Rcy: \"\\u0420\",\n  rcy: \"\\u0440\",\n  rdca: \"\\u2937\",\n  rdldhar: \"\\u2969\",\n  rdquo: \"\\u201d\",\n  rdquor: \"\\u201d\",\n  rdsh: \"\\u21b3\",\n  real: \"\\u211c\",\n  realine: \"\\u211b\",\n  realpart: \"\\u211c\",\n  reals: \"\\u211d\",\n  Re: \"\\u211c\",\n  rect: \"\\u25ad\",\n  reg: \"\\xae\",\n  REG: \"\\xae\",\n  ReverseElement: \"\\u220b\",\n  ReverseEquilibrium: \"\\u21cb\",\n  ReverseUpEquilibrium: \"\\u296f\",\n  rfisht: \"\\u297d\",\n  rfloor: \"\\u230b\",\n  rfr: \"\\ud835\\udd2f\",\n  Rfr: \"\\u211c\",\n  rHar: \"\\u2964\",\n  rhard: \"\\u21c1\",\n  rharu: \"\\u21c0\",\n  rharul: \"\\u296c\",\n  Rho: \"\\u03a1\",\n  rho: \"\\u03c1\",\n  rhov: \"\\u03f1\",\n  RightAngleBracket: \"\\u27e9\",\n  RightArrowBar: \"\\u21e5\",\n  rightarrow: \"\\u2192\",\n  RightArrow: \"\\u2192\",\n  Rightarrow: \"\\u21d2\",\n  RightArrowLeftArrow: \"\\u21c4\",\n  rightarrowtail: \"\\u21a3\",\n  RightCeiling: \"\\u2309\",\n  RightDoubleBracket: \"\\u27e7\",\n  RightDownTeeVector: \"\\u295d\",\n  RightDownVectorBar: \"\\u2955\",\n  RightDownVector: \"\\u21c2\",\n  RightFloor: \"\\u230b\",\n  rightharpoondown: \"\\u21c1\",\n  rightharpoonup: \"\\u21c0\",\n  rightleftarrows: \"\\u21c4\",\n  rightleftharpoons: \"\\u21cc\",\n  rightrightarrows: \"\\u21c9\",\n  rightsquigarrow: \"\\u219d\",\n  RightTeeArrow: \"\\u21a6\",\n  RightTee: \"\\u22a2\",\n  RightTeeVector: \"\\u295b\",\n  rightthreetimes: \"\\u22cc\",\n  RightTriangleBar: \"\\u29d0\",\n  RightTriangle: \"\\u22b3\",\n  RightTriangleEqual: \"\\u22b5\",\n  RightUpDownVector: \"\\u294f\",\n  RightUpTeeVector: \"\\u295c\",\n  RightUpVectorBar: \"\\u2954\",\n  RightUpVector: \"\\u21be\",\n  RightVectorBar: \"\\u2953\",\n  RightVector: \"\\u21c0\",\n  ring: \"\\u02da\",\n  risingdotseq: \"\\u2253\",\n  rlarr: \"\\u21c4\",\n  rlhar: \"\\u21cc\",\n  rlm: \"\\u200f\",\n  rmoustache: \"\\u23b1\",\n  rmoust: \"\\u23b1\",\n  rnmid: \"\\u2aee\",\n  roang: \"\\u27ed\",\n  roarr: \"\\u21fe\",\n  robrk: \"\\u27e7\",\n  ropar: \"\\u2986\",\n  ropf: \"\\ud835\\udd63\",\n  Ropf: \"\\u211d\",\n  roplus: \"\\u2a2e\",\n  rotimes: \"\\u2a35\",\n  RoundImplies: \"\\u2970\",\n  rpar: \")\",\n  rpargt: \"\\u2994\",\n  rppolint: \"\\u2a12\",\n  rrarr: \"\\u21c9\",\n  Rrightarrow: \"\\u21db\",\n  rsaquo: \"\\u203a\",\n  rscr: \"\\ud835\\udcc7\",\n  Rscr: \"\\u211b\",\n  rsh: \"\\u21b1\",\n  Rsh: \"\\u21b1\",\n  rsqb: \"]\",\n  rsquo: \"\\u2019\",\n  rsquor: \"\\u2019\",\n  rthree: \"\\u22cc\",\n  rtimes: \"\\u22ca\",\n  rtri: \"\\u25b9\",\n  rtrie: \"\\u22b5\",\n  rtrif: \"\\u25b8\",\n  rtriltri: \"\\u29ce\",\n  RuleDelayed: \"\\u29f4\",\n  ruluhar: \"\\u2968\",\n  rx: \"\\u211e\",\n  Sacute: \"\\u015a\",\n  sacute: \"\\u015b\",\n  sbquo: \"\\u201a\",\n  scap: \"\\u2ab8\",\n  Scaron: \"\\u0160\",\n  scaron: \"\\u0161\",\n  Sc: \"\\u2abc\",\n  sc: \"\\u227b\",\n  sccue: \"\\u227d\",\n  sce: \"\\u2ab0\",\n  scE: \"\\u2ab4\",\n  Scedil: \"\\u015e\",\n  scedil: \"\\u015f\",\n  Scirc: \"\\u015c\",\n  scirc: \"\\u015d\",\n  scnap: \"\\u2aba\",\n  scnE: \"\\u2ab6\",\n  scnsim: \"\\u22e9\",\n  scpolint: \"\\u2a13\",\n  scsim: \"\\u227f\",\n  Scy: \"\\u0421\",\n  scy: \"\\u0441\",\n  sdotb: \"\\u22a1\",\n  sdot: \"\\u22c5\",\n  sdote: \"\\u2a66\",\n  searhk: \"\\u2925\",\n  searr: \"\\u2198\",\n  seArr: \"\\u21d8\",\n  searrow: \"\\u2198\",\n  sect: \"\\xa7\",\n  semi: \";\",\n  seswar: \"\\u2929\",\n  setminus: \"\\u2216\",\n  setmn: \"\\u2216\",\n  sext: \"\\u2736\",\n  Sfr: \"\\ud835\\udd16\",\n  sfr: \"\\ud835\\udd30\",\n  sfrown: \"\\u2322\",\n  sharp: \"\\u266f\",\n  SHCHcy: \"\\u0429\",\n  shchcy: \"\\u0449\",\n  SHcy: \"\\u0428\",\n  shcy: \"\\u0448\",\n  ShortDownArrow: \"\\u2193\",\n  ShortLeftArrow: \"\\u2190\",\n  shortmid: \"\\u2223\",\n  shortparallel: \"\\u2225\",\n  ShortRightArrow: \"\\u2192\",\n  ShortUpArrow: \"\\u2191\",\n  shy: \"\\xad\",\n  Sigma: \"\\u03a3\",\n  sigma: \"\\u03c3\",\n  sigmaf: \"\\u03c2\",\n  sigmav: \"\\u03c2\",\n  sim: \"\\u223c\",\n  simdot: \"\\u2a6a\",\n  sime: \"\\u2243\",\n  simeq: \"\\u2243\",\n  simg: \"\\u2a9e\",\n  simgE: \"\\u2aa0\",\n  siml: \"\\u2a9d\",\n  simlE: \"\\u2a9f\",\n  simne: \"\\u2246\",\n  simplus: \"\\u2a24\",\n  simrarr: \"\\u2972\",\n  slarr: \"\\u2190\",\n  SmallCircle: \"\\u2218\",\n  smallsetminus: \"\\u2216\",\n  smashp: \"\\u2a33\",\n  smeparsl: \"\\u29e4\",\n  smid: \"\\u2223\",\n  smile: \"\\u2323\",\n  smt: \"\\u2aaa\",\n  smte: \"\\u2aac\",\n  smtes: \"\\u2aac\\ufe00\",\n  SOFTcy: \"\\u042c\",\n  softcy: \"\\u044c\",\n  solbar: \"\\u233f\",\n  solb: \"\\u29c4\",\n  sol: \"/\",\n  Sopf: \"\\ud835\\udd4a\",\n  sopf: \"\\ud835\\udd64\",\n  spades: \"\\u2660\",\n  spadesuit: \"\\u2660\",\n  spar: \"\\u2225\",\n  sqcap: \"\\u2293\",\n  sqcaps: \"\\u2293\\ufe00\",\n  sqcup: \"\\u2294\",\n  sqcups: \"\\u2294\\ufe00\",\n  Sqrt: \"\\u221a\",\n  sqsub: \"\\u228f\",\n  sqsube: \"\\u2291\",\n  sqsubset: \"\\u228f\",\n  sqsubseteq: \"\\u2291\",\n  sqsup: \"\\u2290\",\n  sqsupe: \"\\u2292\",\n  sqsupset: \"\\u2290\",\n  sqsupseteq: \"\\u2292\",\n  square: \"\\u25a1\",\n  Square: \"\\u25a1\",\n  SquareIntersection: \"\\u2293\",\n  SquareSubset: \"\\u228f\",\n  SquareSubsetEqual: \"\\u2291\",\n  SquareSuperset: \"\\u2290\",\n  SquareSupersetEqual: \"\\u2292\",\n  SquareUnion: \"\\u2294\",\n  squarf: \"\\u25aa\",\n  squ: \"\\u25a1\",\n  squf: \"\\u25aa\",\n  srarr: \"\\u2192\",\n  Sscr: \"\\ud835\\udcae\",\n  sscr: \"\\ud835\\udcc8\",\n  ssetmn: \"\\u2216\",\n  ssmile: \"\\u2323\",\n  sstarf: \"\\u22c6\",\n  Star: \"\\u22c6\",\n  star: \"\\u2606\",\n  starf: \"\\u2605\",\n  straightepsilon: \"\\u03f5\",\n  straightphi: \"\\u03d5\",\n  strns: \"\\xaf\",\n  sub: \"\\u2282\",\n  Sub: \"\\u22d0\",\n  subdot: \"\\u2abd\",\n  subE: \"\\u2ac5\",\n  sube: \"\\u2286\",\n  subedot: \"\\u2ac3\",\n  submult: \"\\u2ac1\",\n  subnE: \"\\u2acb\",\n  subne: \"\\u228a\",\n  subplus: \"\\u2abf\",\n  subrarr: \"\\u2979\",\n  subset: \"\\u2282\",\n  Subset: \"\\u22d0\",\n  subseteq: \"\\u2286\",\n  subseteqq: \"\\u2ac5\",\n  SubsetEqual: \"\\u2286\",\n  subsetneq: \"\\u228a\",\n  subsetneqq: \"\\u2acb\",\n  subsim: \"\\u2ac7\",\n  subsub: \"\\u2ad5\",\n  subsup: \"\\u2ad3\",\n  succapprox: \"\\u2ab8\",\n  succ: \"\\u227b\",\n  succcurlyeq: \"\\u227d\",\n  Succeeds: \"\\u227b\",\n  SucceedsEqual: \"\\u2ab0\",\n  SucceedsSlantEqual: \"\\u227d\",\n  SucceedsTilde: \"\\u227f\",\n  succeq: \"\\u2ab0\",\n  succnapprox: \"\\u2aba\",\n  succneqq: \"\\u2ab6\",\n  succnsim: \"\\u22e9\",\n  succsim: \"\\u227f\",\n  SuchThat: \"\\u220b\",\n  sum: \"\\u2211\",\n  Sum: \"\\u2211\",\n  sung: \"\\u266a\",\n  sup1: \"\\xb9\",\n  sup2: \"\\xb2\",\n  sup3: \"\\xb3\",\n  sup: \"\\u2283\",\n  Sup: \"\\u22d1\",\n  supdot: \"\\u2abe\",\n  supdsub: \"\\u2ad8\",\n  supE: \"\\u2ac6\",\n  supe: \"\\u2287\",\n  supedot: \"\\u2ac4\",\n  Superset: \"\\u2283\",\n  SupersetEqual: \"\\u2287\",\n  suphsol: \"\\u27c9\",\n  suphsub: \"\\u2ad7\",\n  suplarr: \"\\u297b\",\n  supmult: \"\\u2ac2\",\n  supnE: \"\\u2acc\",\n  supne: \"\\u228b\",\n  supplus: \"\\u2ac0\",\n  supset: \"\\u2283\",\n  Supset: \"\\u22d1\",\n  supseteq: \"\\u2287\",\n  supseteqq: \"\\u2ac6\",\n  supsetneq: \"\\u228b\",\n  supsetneqq: \"\\u2acc\",\n  supsim: \"\\u2ac8\",\n  supsub: \"\\u2ad4\",\n  supsup: \"\\u2ad6\",\n  swarhk: \"\\u2926\",\n  swarr: \"\\u2199\",\n  swArr: \"\\u21d9\",\n  swarrow: \"\\u2199\",\n  swnwar: \"\\u292a\",\n  szlig: \"\\xdf\",\n  Tab: \"\\t\",\n  target: \"\\u2316\",\n  Tau: \"\\u03a4\",\n  tau: \"\\u03c4\",\n  tbrk: \"\\u23b4\",\n  Tcaron: \"\\u0164\",\n  tcaron: \"\\u0165\",\n  Tcedil: \"\\u0162\",\n  tcedil: \"\\u0163\",\n  Tcy: \"\\u0422\",\n  tcy: \"\\u0442\",\n  tdot: \"\\u20db\",\n  telrec: \"\\u2315\",\n  Tfr: \"\\ud835\\udd17\",\n  tfr: \"\\ud835\\udd31\",\n  there4: \"\\u2234\",\n  therefore: \"\\u2234\",\n  Therefore: \"\\u2234\",\n  Theta: \"\\u0398\",\n  theta: \"\\u03b8\",\n  thetasym: \"\\u03d1\",\n  thetav: \"\\u03d1\",\n  thickapprox: \"\\u2248\",\n  thicksim: \"\\u223c\",\n  ThickSpace: \"\\u205f\\u200a\",\n  ThinSpace: \"\\u2009\",\n  thinsp: \"\\u2009\",\n  thkap: \"\\u2248\",\n  thksim: \"\\u223c\",\n  THORN: \"\\xde\",\n  thorn: \"\\xfe\",\n  tilde: \"\\u02dc\",\n  Tilde: \"\\u223c\",\n  TildeEqual: \"\\u2243\",\n  TildeFullEqual: \"\\u2245\",\n  TildeTilde: \"\\u2248\",\n  timesbar: \"\\u2a31\",\n  timesb: \"\\u22a0\",\n  times: \"\\xd7\",\n  timesd: \"\\u2a30\",\n  tint: \"\\u222d\",\n  toea: \"\\u2928\",\n  topbot: \"\\u2336\",\n  topcir: \"\\u2af1\",\n  top: \"\\u22a4\",\n  Topf: \"\\ud835\\udd4b\",\n  topf: \"\\ud835\\udd65\",\n  topfork: \"\\u2ada\",\n  tosa: \"\\u2929\",\n  tprime: \"\\u2034\",\n  trade: \"\\u2122\",\n  TRADE: \"\\u2122\",\n  triangle: \"\\u25b5\",\n  triangledown: \"\\u25bf\",\n  triangleleft: \"\\u25c3\",\n  trianglelefteq: \"\\u22b4\",\n  triangleq: \"\\u225c\",\n  triangleright: \"\\u25b9\",\n  trianglerighteq: \"\\u22b5\",\n  tridot: \"\\u25ec\",\n  trie: \"\\u225c\",\n  triminus: \"\\u2a3a\",\n  TripleDot: \"\\u20db\",\n  triplus: \"\\u2a39\",\n  trisb: \"\\u29cd\",\n  tritime: \"\\u2a3b\",\n  trpezium: \"\\u23e2\",\n  Tscr: \"\\ud835\\udcaf\",\n  tscr: \"\\ud835\\udcc9\",\n  TScy: \"\\u0426\",\n  tscy: \"\\u0446\",\n  TSHcy: \"\\u040b\",\n  tshcy: \"\\u045b\",\n  Tstrok: \"\\u0166\",\n  tstrok: \"\\u0167\",\n  twixt: \"\\u226c\",\n  twoheadleftarrow: \"\\u219e\",\n  twoheadrightarrow: \"\\u21a0\",\n  Uacute: \"\\xda\",\n  uacute: \"\\xfa\",\n  uarr: \"\\u2191\",\n  Uarr: \"\\u219f\",\n  uArr: \"\\u21d1\",\n  Uarrocir: \"\\u2949\",\n  Ubrcy: \"\\u040e\",\n  ubrcy: \"\\u045e\",\n  Ubreve: \"\\u016c\",\n  ubreve: \"\\u016d\",\n  Ucirc: \"\\xdb\",\n  ucirc: \"\\xfb\",\n  Ucy: \"\\u0423\",\n  ucy: \"\\u0443\",\n  udarr: \"\\u21c5\",\n  Udblac: \"\\u0170\",\n  udblac: \"\\u0171\",\n  udhar: \"\\u296e\",\n  ufisht: \"\\u297e\",\n  Ufr: \"\\ud835\\udd18\",\n  ufr: \"\\ud835\\udd32\",\n  Ugrave: \"\\xd9\",\n  ugrave: \"\\xf9\",\n  uHar: \"\\u2963\",\n  uharl: \"\\u21bf\",\n  uharr: \"\\u21be\",\n  uhblk: \"\\u2580\",\n  ulcorn: \"\\u231c\",\n  ulcorner: \"\\u231c\",\n  ulcrop: \"\\u230f\",\n  ultri: \"\\u25f8\",\n  Umacr: \"\\u016a\",\n  umacr: \"\\u016b\",\n  uml: \"\\xa8\",\n  UnderBar: \"_\",\n  UnderBrace: \"\\u23df\",\n  UnderBracket: \"\\u23b5\",\n  UnderParenthesis: \"\\u23dd\",\n  Union: \"\\u22c3\",\n  UnionPlus: \"\\u228e\",\n  Uogon: \"\\u0172\",\n  uogon: \"\\u0173\",\n  Uopf: \"\\ud835\\udd4c\",\n  uopf: \"\\ud835\\udd66\",\n  UpArrowBar: \"\\u2912\",\n  uparrow: \"\\u2191\",\n  UpArrow: \"\\u2191\",\n  Uparrow: \"\\u21d1\",\n  UpArrowDownArrow: \"\\u21c5\",\n  updownarrow: \"\\u2195\",\n  UpDownArrow: \"\\u2195\",\n  Updownarrow: \"\\u21d5\",\n  UpEquilibrium: \"\\u296e\",\n  upharpoonleft: \"\\u21bf\",\n  upharpoonright: \"\\u21be\",\n  uplus: \"\\u228e\",\n  UpperLeftArrow: \"\\u2196\",\n  UpperRightArrow: \"\\u2197\",\n  upsi: \"\\u03c5\",\n  Upsi: \"\\u03d2\",\n  upsih: \"\\u03d2\",\n  Upsilon: \"\\u03a5\",\n  upsilon: \"\\u03c5\",\n  UpTeeArrow: \"\\u21a5\",\n  UpTee: \"\\u22a5\",\n  upuparrows: \"\\u21c8\",\n  urcorn: \"\\u231d\",\n  urcorner: \"\\u231d\",\n  urcrop: \"\\u230e\",\n  Uring: \"\\u016e\",\n  uring: \"\\u016f\",\n  urtri: \"\\u25f9\",\n  Uscr: \"\\ud835\\udcb0\",\n  uscr: \"\\ud835\\udcca\",\n  utdot: \"\\u22f0\",\n  Utilde: \"\\u0168\",\n  utilde: \"\\u0169\",\n  utri: \"\\u25b5\",\n  utrif: \"\\u25b4\",\n  uuarr: \"\\u21c8\",\n  Uuml: \"\\xdc\",\n  uuml: \"\\xfc\",\n  uwangle: \"\\u29a7\",\n  vangrt: \"\\u299c\",\n  varepsilon: \"\\u03f5\",\n  varkappa: \"\\u03f0\",\n  varnothing: \"\\u2205\",\n  varphi: \"\\u03d5\",\n  varpi: \"\\u03d6\",\n  varpropto: \"\\u221d\",\n  varr: \"\\u2195\",\n  vArr: \"\\u21d5\",\n  varrho: \"\\u03f1\",\n  varsigma: \"\\u03c2\",\n  varsubsetneq: \"\\u228a\\ufe00\",\n  varsubsetneqq: \"\\u2acb\\ufe00\",\n  varsupsetneq: \"\\u228b\\ufe00\",\n  varsupsetneqq: \"\\u2acc\\ufe00\",\n  vartheta: \"\\u03d1\",\n  vartriangleleft: \"\\u22b2\",\n  vartriangleright: \"\\u22b3\",\n  vBar: \"\\u2ae8\",\n  Vbar: \"\\u2aeb\",\n  vBarv: \"\\u2ae9\",\n  Vcy: \"\\u0412\",\n  vcy: \"\\u0432\",\n  vdash: \"\\u22a2\",\n  vDash: \"\\u22a8\",\n  Vdash: \"\\u22a9\",\n  VDash: \"\\u22ab\",\n  Vdashl: \"\\u2ae6\",\n  veebar: \"\\u22bb\",\n  vee: \"\\u2228\",\n  Vee: \"\\u22c1\",\n  veeeq: \"\\u225a\",\n  vellip: \"\\u22ee\",\n  verbar: \"|\",\n  Verbar: \"\\u2016\",\n  vert: \"|\",\n  Vert: \"\\u2016\",\n  VerticalBar: \"\\u2223\",\n  VerticalLine: \"|\",\n  VerticalSeparator: \"\\u2758\",\n  VerticalTilde: \"\\u2240\",\n  VeryThinSpace: \"\\u200a\",\n  Vfr: \"\\ud835\\udd19\",\n  vfr: \"\\ud835\\udd33\",\n  vltri: \"\\u22b2\",\n  vnsub: \"\\u2282\\u20d2\",\n  vnsup: \"\\u2283\\u20d2\",\n  Vopf: \"\\ud835\\udd4d\",\n  vopf: \"\\ud835\\udd67\",\n  vprop: \"\\u221d\",\n  vrtri: \"\\u22b3\",\n  Vscr: \"\\ud835\\udcb1\",\n  vscr: \"\\ud835\\udccb\",\n  vsubnE: \"\\u2acb\\ufe00\",\n  vsubne: \"\\u228a\\ufe00\",\n  vsupnE: \"\\u2acc\\ufe00\",\n  vsupne: \"\\u228b\\ufe00\",\n  Vvdash: \"\\u22aa\",\n  vzigzag: \"\\u299a\",\n  Wcirc: \"\\u0174\",\n  wcirc: \"\\u0175\",\n  wedbar: \"\\u2a5f\",\n  wedge: \"\\u2227\",\n  Wedge: \"\\u22c0\",\n  wedgeq: \"\\u2259\",\n  weierp: \"\\u2118\",\n  Wfr: \"\\ud835\\udd1a\",\n  wfr: \"\\ud835\\udd34\",\n  Wopf: \"\\ud835\\udd4e\",\n  wopf: \"\\ud835\\udd68\",\n  wp: \"\\u2118\",\n  wr: \"\\u2240\",\n  wreath: \"\\u2240\",\n  Wscr: \"\\ud835\\udcb2\",\n  wscr: \"\\ud835\\udccc\",\n  xcap: \"\\u22c2\",\n  xcirc: \"\\u25ef\",\n  xcup: \"\\u22c3\",\n  xdtri: \"\\u25bd\",\n  Xfr: \"\\ud835\\udd1b\",\n  xfr: \"\\ud835\\udd35\",\n  xharr: \"\\u27f7\",\n  xhArr: \"\\u27fa\",\n  Xi: \"\\u039e\",\n  xi: \"\\u03be\",\n  xlarr: \"\\u27f5\",\n  xlArr: \"\\u27f8\",\n  xmap: \"\\u27fc\",\n  xnis: \"\\u22fb\",\n  xodot: \"\\u2a00\",\n  Xopf: \"\\ud835\\udd4f\",\n  xopf: \"\\ud835\\udd69\",\n  xoplus: \"\\u2a01\",\n  xotime: \"\\u2a02\",\n  xrarr: \"\\u27f6\",\n  xrArr: \"\\u27f9\",\n  Xscr: \"\\ud835\\udcb3\",\n  xscr: \"\\ud835\\udccd\",\n  xsqcup: \"\\u2a06\",\n  xuplus: \"\\u2a04\",\n  xutri: \"\\u25b3\",\n  xvee: \"\\u22c1\",\n  xwedge: \"\\u22c0\",\n  Yacute: \"\\xdd\",\n  yacute: \"\\xfd\",\n  YAcy: \"\\u042f\",\n  yacy: \"\\u044f\",\n  Ycirc: \"\\u0176\",\n  ycirc: \"\\u0177\",\n  Ycy: \"\\u042b\",\n  ycy: \"\\u044b\",\n  yen: \"\\xa5\",\n  Yfr: \"\\ud835\\udd1c\",\n  yfr: \"\\ud835\\udd36\",\n  YIcy: \"\\u0407\",\n  yicy: \"\\u0457\",\n  Yopf: \"\\ud835\\udd50\",\n  yopf: \"\\ud835\\udd6a\",\n  Yscr: \"\\ud835\\udcb4\",\n  yscr: \"\\ud835\\udcce\",\n  YUcy: \"\\u042e\",\n  yucy: \"\\u044e\",\n  yuml: \"\\xff\",\n  Yuml: \"\\u0178\",\n  Zacute: \"\\u0179\",\n  zacute: \"\\u017a\",\n  Zcaron: \"\\u017d\",\n  zcaron: \"\\u017e\",\n  Zcy: \"\\u0417\",\n  zcy: \"\\u0437\",\n  Zdot: \"\\u017b\",\n  zdot: \"\\u017c\",\n  zeetrf: \"\\u2128\",\n  ZeroWidthSpace: \"\\u200b\",\n  Zeta: \"\\u0396\",\n  zeta: \"\\u03b6\",\n  zfr: \"\\ud835\\udd37\",\n  Zfr: \"\\u2128\",\n  ZHcy: \"\\u0416\",\n  zhcy: \"\\u0436\",\n  zigrarr: \"\\u21dd\",\n  zopf: \"\\ud835\\udd6b\",\n  Zopf: \"\\u2124\",\n  Zscr: \"\\ud835\\udcb5\",\n  zscr: \"\\ud835\\udccf\",\n  zwj: \"\\u200d\",\n  zwnj: \"\\u200c\"\n};\n\nvar regex$4 = /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4E\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/;\n\nvar mdurl = {};\n\nvar encodeCache = {};\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n\nfunction getEncodeCache(exclude) {\n  var i, ch, cache = encodeCache[exclude];\n  if (cache) {\n    return cache;\n  }\n  cache = encodeCache[exclude] = [];\n  for (i = 0; i < 128; i++) {\n    ch = String.fromCharCode(i);\n    if (/^[0-9a-z]$/i.test(ch)) {\n      // always allow unencoded alphanumeric characters\n      cache.push(ch);\n    } else {\n      cache.push(\"%\" + (\"0\" + i.toString(16).toUpperCase()).slice(-2));\n    }\n  }\n  for (i = 0; i < exclude.length; i++) {\n    cache[exclude.charCodeAt(i)] = exclude[i];\n  }\n  return cache;\n}\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n\n//  - string       - string to encode\n//  - exclude      - list of characters to ignore (in addition to a-zA-Z0-9)\n//  - keepEscaped  - don't encode '%' in a correct escape sequence (default: true)\n\nfunction encode(string, exclude, keepEscaped) {\n  var i, l, code, nextCode, cache, result = \"\";\n  if (typeof exclude !== \"string\") {\n    // encode(string, keepEscaped)\n    keepEscaped = exclude;\n    exclude = encode.defaultChars;\n  }\n  if (typeof keepEscaped === \"undefined\") {\n    keepEscaped = true;\n  }\n  cache = getEncodeCache(exclude);\n  for (i = 0, l = string.length; i < l; i++) {\n    code = string.charCodeAt(i);\n    if (keepEscaped && code === 37 /* % */ && i + 2 < l) {\n      if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n        result += string.slice(i, i + 3);\n        i += 2;\n        continue;\n      }\n    }\n    if (code < 128) {\n      result += cache[code];\n      continue;\n    }\n    if (code >= 55296 && code <= 57343) {\n      if (code >= 55296 && code <= 56319 && i + 1 < l) {\n        nextCode = string.charCodeAt(i + 1);\n        if (nextCode >= 56320 && nextCode <= 57343) {\n          result += encodeURIComponent(string[i] + string[i + 1]);\n          i++;\n          continue;\n        }\n      }\n      result += \"%EF%BF%BD\";\n      continue;\n    }\n    result += encodeURIComponent(string[i]);\n  }\n  return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\n\nencode.componentChars = \"-_.!~*'()\";\n\nvar encode_1 = encode;\n\n/* eslint-disable no-bitwise */ var decodeCache = {};\n\nfunction getDecodeCache(exclude) {\n  var i, ch, cache = decodeCache[exclude];\n  if (cache) {\n    return cache;\n  }\n  cache = decodeCache[exclude] = [];\n  for (i = 0; i < 128; i++) {\n    ch = String.fromCharCode(i);\n    cache.push(ch);\n  }\n  for (i = 0; i < exclude.length; i++) {\n    ch = exclude.charCodeAt(i);\n    cache[ch] = \"%\" + (\"0\" + ch.toString(16).toUpperCase()).slice(-2);\n  }\n  return cache;\n}\n\n// Decode percent-encoded string.\n\nfunction decode(string, exclude) {\n  var cache;\n  if (typeof exclude !== \"string\") {\n    exclude = decode.defaultChars;\n  }\n  cache = getDecodeCache(exclude);\n  return string.replace(/(%[a-f0-9]{2})+/gi, (function(seq) {\n    var i, l, b1, b2, b3, b4, chr, result = \"\";\n    for (i = 0, l = seq.length; i < l; i += 3) {\n      b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n      if (b1 < 128) {\n        result += cache[b1];\n        continue;\n      }\n      if ((b1 & 224) === 192 && i + 3 < l) {\n        // 110xxxxx 10xxxxxx\n        b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n        if ((b2 & 192) === 128) {\n          chr = b1 << 6 & 1984 | b2 & 63;\n          if (chr < 128) {\n            result += \"\\ufffd\\ufffd\";\n          } else {\n            result += String.fromCharCode(chr);\n          }\n          i += 3;\n          continue;\n        }\n      }\n      if ((b1 & 240) === 224 && i + 6 < l) {\n        // 1110xxxx 10xxxxxx 10xxxxxx\n        b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n        b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n        if ((b2 & 192) === 128 && (b3 & 192) === 128) {\n          chr = b1 << 12 & 61440 | b2 << 6 & 4032 | b3 & 63;\n          if (chr < 2048 || chr >= 55296 && chr <= 57343) {\n            result += \"\\ufffd\\ufffd\\ufffd\";\n          } else {\n            result += String.fromCharCode(chr);\n          }\n          i += 6;\n          continue;\n        }\n      }\n      if ((b1 & 248) === 240 && i + 9 < l) {\n        // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n        b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n        b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n        b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n        if ((b2 & 192) === 128 && (b3 & 192) === 128 && (b4 & 192) === 128) {\n          chr = b1 << 18 & 1835008 | b2 << 12 & 258048 | b3 << 6 & 4032 | b4 & 63;\n          if (chr < 65536 || chr > 1114111) {\n            result += \"\\ufffd\\ufffd\\ufffd\\ufffd\";\n          } else {\n            chr -= 65536;\n            result += String.fromCharCode(55296 + (chr >> 10), 56320 + (chr & 1023));\n          }\n          i += 9;\n          continue;\n        }\n      }\n      result += \"\\ufffd\";\n    }\n    return result;\n  }));\n}\n\ndecode.defaultChars = \";/?:@&=+$,#\";\n\ndecode.componentChars = \"\";\n\nvar decode_1 = decode;\n\nvar format = function format(url) {\n  var result = \"\";\n  result += url.protocol || \"\";\n  result += url.slashes ? \"//\" : \"\";\n  result += url.auth ? url.auth + \"@\" : \"\";\n  if (url.hostname && url.hostname.indexOf(\":\") !== -1) {\n    // ipv6 address\n    result += \"[\" + url.hostname + \"]\";\n  } else {\n    result += url.hostname || \"\";\n  }\n  result += url.port ? \":\" + url.port : \"\";\n  result += url.pathname || \"\";\n  result += url.search || \"\";\n  result += url.hash || \"\";\n  return result;\n};\n\n// Changes from joyent/node:\n\n// 1. No leading slash in paths,\n//    e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n\n// 2. Backslashes are not replaced with slashes,\n//    so `http:\\\\example.org\\` is treated like a relative path\n\n// 3. Trailing colon is treated like a part of the path,\n//    i.e. in `http://example.org:foo` pathname is `:foo`\n\n// 4. Nothing is URL-encoded in the resulting object,\n//    (in joyent/node some chars in auth and paths are encoded)\n\n// 5. `url.parse()` does not have `parseQueryString` argument\n\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n//    which can be constructed using other parts of the url.\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.pathname = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i, portPattern = /:[0-9]*$/, \n// Special case for a simple path URL\nsimplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/, \n// RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\ndelims = [ \"<\", \">\", '\"', \"`\", \" \", \"\\r\", \"\\n\", \"\\t\" ], \n// RFC 2396: characters not allowed for various reasons.\nunwise = [ \"{\", \"}\", \"|\", \"\\\\\", \"^\", \"`\" ].concat(delims), \n// Allowed by RFCs, but cause of XSS attacks.  Always escape these.\nautoEscape = [ \"'\" ].concat(unwise), \n// Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nnonHostChars = [ \"%\", \"/\", \"?\", \";\", \"#\" ].concat(autoEscape), hostEndingChars = [ \"/\", \"?\", \"#\" ], hostnameMaxLen = 255, hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, \n// protocols that can allow \"unsafe\" and \"unwise\" chars.\n/* eslint-disable no-script-url */\n// protocols that never have a hostname.\nhostlessProtocol = {\n  javascript: true,\n  \"javascript:\": true\n}, \n// protocols that always contain a // bit.\nslashedProtocol = {\n  http: true,\n  https: true,\n  ftp: true,\n  gopher: true,\n  file: true,\n  \"http:\": true,\n  \"https:\": true,\n  \"ftp:\": true,\n  \"gopher:\": true,\n  \"file:\": true\n};\n\n/* eslint-enable no-script-url */ function urlParse(url, slashesDenoteHost) {\n  if (url && url instanceof Url) {\n    return url;\n  }\n  var u = new Url;\n  u.parse(url, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function(url, slashesDenoteHost) {\n  var i, l, lowerProto, hec, slashes, rest = url;\n  // trim before proceeding.\n  // This is to support parse stuff like \"  http://foo.com  \\n\"\n    rest = rest.trim();\n  if (!slashesDenoteHost && url.split(\"#\").length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n      }\n      return this;\n    }\n  }\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    lowerProto = proto.toLowerCase();\n    this.protocol = proto;\n    rest = rest.substr(proto.length);\n  }\n  // figure out if it's got a host\n  // user@server is *always* interpreted as a hostname, and url\n  // resolution will treat //foo/bar as host=foo,path=bar because that's\n  // how the browser resolves relative URLs.\n    if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n    slashes = rest.substr(0, 2) === \"//\";\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n  if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n    // there's a hostname.\n    // the first instance of /, ?, ;, or # ends the host.\n    // If there is an @ in the hostname, then non-host chars *are* allowed\n    // to the left of the last @ sign, unless some host-ending character\n    // comes *before* the @-sign.\n    // URLs are obnoxious.\n    // ex:\n    // http://a@b@c/ => user:a@b host:c\n    // http://a@b?@c => user:a host:c path:/?@c\n    // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n    // Review our test case against browsers more comprehensively.\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (i = 0; i < hostEndingChars.length; i++) {\n      hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n        hostEnd = hec;\n      }\n    }\n    // at this point, either we have an explicit point where the\n    // auth portion cannot go past, or the last @ char is the decider.\n        var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf(\"@\");\n    } else {\n      // atSign must be in auth portion.\n      // http://a@b/c@d => host:b auth:a path:/c@d\n      atSign = rest.lastIndexOf(\"@\", hostEnd);\n    }\n    // Now we have a portion which is definitely the auth.\n    // Pull that off.\n        if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = auth;\n    }\n    // the host is the remaining to the left of the first non-host char\n        hostEnd = -1;\n    for (i = 0; i < nonHostChars.length; i++) {\n      hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n        hostEnd = hec;\n      }\n    }\n    // if we still have not hit it, then the entire thing is a host.\n        if (hostEnd === -1) {\n      hostEnd = rest.length;\n    }\n    if (rest[hostEnd - 1] === \":\") {\n      hostEnd--;\n    }\n    var host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n    // pull out port.\n        this.parseHost(host);\n    // we've indicated that there is a hostname,\n    // so even if it's empty, it has to be present.\n        this.hostname = this.hostname || \"\";\n    // if hostname begins with [ and ends with ]\n    // assume that it's an IPv6 address.\n        var ipv6Hostname = this.hostname[0] === \"[\" && this.hostname[this.hostname.length - 1] === \"]\";\n    // validate a little.\n        if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) {\n          continue;\n        }\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = \"\";\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              // we replace non-ASCII char with a temporary placeholder\n              // we need this to make sure size of hostname is not\n              // broken by replacing non-ASCII by nothing\n              newpart += \"x\";\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n                    if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = notHost.join(\".\") + rest;\n            }\n            this.hostname = validParts.join(\".\");\n            break;\n          }\n        }\n      }\n    }\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = \"\";\n    }\n    // strip [ and ] from the hostname\n    // the host field still retains them, though\n        if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n    }\n  }\n  // chop off from the tail first.\n    var hash = rest.indexOf(\"#\");\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf(\"?\");\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    rest = rest.slice(0, qm);\n  }\n  if (rest) {\n    this.pathname = rest;\n  }\n  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n    this.pathname = \"\";\n  }\n  return this;\n};\n\nUrl.prototype.parseHost = function(host) {\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== \":\") {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) {\n    this.hostname = host;\n  }\n};\n\nvar parse = urlParse;\n\nmdurl.encode = encode_1;\n\nmdurl.decode = decode_1;\n\nmdurl.format = format;\n\nmdurl.parse = parse;\n\nvar uc_micro = {};\n\nvar regex$3 = /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\nvar regex$2 = /[\\0-\\x1F\\x7F-\\x9F]/;\n\nvar regex$1 = /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/;\n\nvar regex = /[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n\nuc_micro.Any = regex$3;\n\nuc_micro.Cc = regex$2;\n\nuc_micro.Cf = regex$1;\n\nuc_micro.P = regex$4;\n\nuc_micro.Z = regex;\n\n// Utilities\nfunction isNil(v) {\n  return v === null || typeof v === \"undefined\";\n}\n\nfunction _class$1(obj) {\n  return Object.prototype.toString.call(obj);\n}\n\nfunction isString$1(obj) {\n  return _class$1(obj) === \"[object String]\";\n}\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction has(object, key) {\n  return _hasOwnProperty.call(object, key);\n}\n\n// Merge objects\n\nfunction assign$1(obj /*from1, from2, from3, ...*/) {\n  const sources = Array.prototype.slice.call(arguments, 1);\n  sources.forEach((function(source) {\n    if (!source) {\n      return;\n    }\n    if (typeof source !== \"object\") {\n      throw new TypeError(source + \"must be object\");\n    }\n    Object.keys(source).forEach((function(key) {\n      obj[key] = source[key];\n    }));\n  }));\n  return obj;\n}\n\n// Remove element from array and put another array at those position.\n// Useful for some operations with tokens\nfunction arrayReplaceAt(src, pos, newElements) {\n  return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));\n}\n\n////////////////////////////////////////////////////////////////////////////////\nfunction isValidEntityCode(c) {\n  /*eslint no-bitwise:0*/\n  // broken sequence\n  if (c >= 55296 && c <= 57343) {\n    return false;\n  }\n  // never used\n    if (c >= 64976 && c <= 65007) {\n    return false;\n  }\n  if ((c & 65535) === 65535 || (c & 65535) === 65534) {\n    return false;\n  }\n  // control codes\n    if (c >= 0 && c <= 8) {\n    return false;\n  }\n  if (c === 11) {\n    return false;\n  }\n  if (c >= 14 && c <= 31) {\n    return false;\n  }\n  if (c >= 127 && c <= 159) {\n    return false;\n  }\n  // out of range\n    if (c > 1114111) {\n    return false;\n  }\n  return true;\n}\n\nfunction fromCodePoint(c) {\n  /*eslint no-bitwise:0*/\n  if (c > 65535) {\n    c -= 65536;\n    const surrogate1 = 55296 + (c >> 10), surrogate2 = 56320 + (c & 1023);\n    return String.fromCharCode(surrogate1, surrogate2);\n  }\n  return String.fromCharCode(c);\n}\n\nconst UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g;\n\nconst ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;\n\nconst UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + \"|\" + ENTITY_RE.source, \"gi\");\n\nconst DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;\n\nfunction replaceEntityPattern(match, name) {\n  let code = 0;\n  if (has(entities, name)) {\n    return entities[name];\n  }\n  if (name.charCodeAt(0) === 35 /* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n    code = name[1].toLowerCase() === \"x\" ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);\n    if (isValidEntityCode(code)) {\n      return fromCodePoint(code);\n    }\n  }\n  return match;\n}\n\n/*function replaceEntities(str) {\n  if (str.indexOf('&') < 0) { return str; }\n\n  return str.replace(ENTITY_RE, replaceEntityPattern);\n}*/ function unescapeMd(str) {\n  if (str.indexOf(\"\\\\\") < 0) {\n    return str;\n  }\n  return str.replace(UNESCAPE_MD_RE, \"$1\");\n}\n\nfunction unescapeAll(str) {\n  if (str.indexOf(\"\\\\\") < 0 && str.indexOf(\"&\") < 0) {\n    return str;\n  }\n  return str.replace(UNESCAPE_ALL_RE, (function(match, escaped, entity) {\n    if (escaped) {\n      return escaped;\n    }\n    return replaceEntityPattern(match, entity);\n  }));\n}\n\n////////////////////////////////////////////////////////////////////////////////\nconst HTML_ESCAPE_TEST_RE = /[&<>\"]/;\n\nconst HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\n\nconst HTML_REPLACEMENTS = {\n  \"&\": \"&amp;\",\n  \"<\": \"&lt;\",\n  \">\": \"&gt;\",\n  '\"': \"&quot;\",\n  \"'\": \"&#039;\",\n  \"`\": \"&#096;\"\n};\n\nfunction replaceUnsafeChar(ch) {\n  return HTML_REPLACEMENTS[ch];\n}\n\nfunction escapeHtml(str) {\n  if (HTML_ESCAPE_TEST_RE.test(str)) {\n    return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n  }\n  return str;\n}\n\n////////////////////////////////////////////////////////////////////////////////\nconst REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\n\nfunction escapeRE$1(str) {\n  return str.replace(REGEXP_ESCAPE_RE, \"\\\\$&\");\n}\n\n////////////////////////////////////////////////////////////////////////////////\nfunction isSpace(code) {\n  switch (code) {\n   case 9:\n   case 32:\n    return true;\n  }\n  return false;\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace(code) {\n  if (code >= 8192 && code <= 8202) {\n    return true;\n  }\n  switch (code) {\n   case 9:\n // \\t\n       case 10:\n // \\n\n       case 11:\n // \\v\n       case 12:\n // \\f\n       case 13:\n // \\r\n       case 32:\n   case 160:\n   case 5760:\n   case 8239:\n   case 8287:\n   case 12288:\n    return true;\n  }\n  return false;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Currently without astral characters support.\nfunction isPunctChar(ch) {\n  return regex$4.test(ch);\n}\n\n// Markdown ASCII punctuation characters.\n\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n\nfunction isMdAsciiPunct(ch) {\n  switch (ch) {\n   case 33 /* ! */ :\n   case 34 /* \" */ :\n   case 35 /* # */ :\n   case 36 /* $ */ :\n   case 37 /* % */ :\n   case 38 /* & */ :\n   case 39 /* ' */ :\n   case 40 /* ( */ :\n   case 41 /* ) */ :\n   case 42 /* * */ :\n   case 43 /* + */ :\n   case 44 /* , */ :\n   case 45 /* - */ :\n   case 46 /* . */ :\n   case 47 /* / */ :\n   case 58 /* : */ :\n   case 59 /* ; */ :\n   case 60 /* < */ :\n   case 61 /* = */ :\n   case 62 /* > */ :\n   case 63 /* ? */ :\n   case 64 /* @ */ :\n   case 91 /* [ */ :\n   case 92 /* \\ */ :\n   case 93 /* ] */ :\n   case 94 /* ^ */ :\n   case 95 /* _ */ :\n   case 96 /* ` */ :\n   case 123 /* { */ :\n   case 124 /* | */ :\n   case 125 /* } */ :\n   case 126 /* ~ */ :\n    return true;\n\n   default:\n    return false;\n  }\n}\n\n// Helper to unify [reference labels].\n\nfunction normalizeReference(str) {\n  // Trim and collapse whitespace\n  str = str.trim().replace(/\\s+/g, \" \");\n  // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n  // fixed in v12 (couldn't find any details).\n  \n  // So treat this one as a special case\n  \n  // TODO: remove this when node v10 is no longer supported.\n  \n    if (\"\\u1e9e\".toLowerCase() === \"\\u1e7e\") {\n    str = str.replace(/\\u1e9e/g, \"\\xdf\");\n  }\n  // .toLowerCase().toUpperCase() should get rid of all differences\n  // between letter variants.\n  \n  // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n  // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n  // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n  // uppercased versions).\n  \n  // Here's an example showing how it happens. Lets take greek letter omega:\n  // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n  \n  // Unicode entries:\n  // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n  // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n  // 03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n  // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;\n  \n  // Case-insensitive comparison should treat all of them as equivalent.\n  \n  // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n  // and .toUpperCase() doesn't change ϴ (already uppercase).\n  \n  // Applying first lower then upper case normalizes any character:\n  // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n  \n  // Note: this is equivalent to unicode case folding; unicode normalization\n  // is a different step that is not required here.\n  \n  // Final result should be uppercased, because it's later stored in an object\n  // (this avoid a conflict with Object.prototype members,\n  // most notably, `__proto__`)\n  \n    return str.toLowerCase().toUpperCase();\n}\n\n/* eslint-env browser */ const _g = typeof global !== \"undefined\" ? global : window;\n\nconst tokensRef = new _g.WeakMap;\n\n// TODO: performance tweaks for emphasis **_* pattern which has only 1/10 performance after adding line offset\nfunction getLineOffset(state, tokenIdx) {\n  const blockState = state.env.state_block;\n  const parentToken = state.env.parentToken;\n  const tokensBefore = typeof tokenIdx !== \"undefined\" ? state.tokens.slice(0, tokenIdx) : state.tokens;\n  let resultsMap = tokensRef.get(state.tokens);\n  if (resultsMap) {\n    const cachedResult = resultsMap.get(tokenIdx);\n    if (typeof cachedResult !== \"undefined\") {\n      return cachedResult;\n    }\n  } else {\n    resultsMap = new _g.Map;\n    tokensRef.set(state.tokens, resultsMap);\n  }\n  const linesBefore = tokensBefore.filter((function(t) {\n    return t.type === \"softbreak\" || t.type === \"hardbreak\";\n  })).length;\n  let lineOffset = 0;\n  for (let i = 0; i < linesBefore; i++) {\n    const startLine = i + parentToken.map[0] + 1;\n    lineOffset += blockState.tShift[startLine];\n  }\n  resultsMap.set(tokenIdx, lineOffset);\n  return lineOffset;\n}\n\nfunction trimLeftOffset(str) {\n  return str.length - str.trimLeft().length;\n}\n\nvar utils =  Object.freeze({\n  __proto__: null,\n  mdurl: mdurl,\n  ucmicro: uc_micro,\n  isNil: isNil,\n  assign: assign$1,\n  isString: isString$1,\n  has: has,\n  unescapeMd: unescapeMd,\n  unescapeAll: unescapeAll,\n  isValidEntityCode: isValidEntityCode,\n  fromCodePoint: fromCodePoint,\n  escapeHtml: escapeHtml,\n  arrayReplaceAt: arrayReplaceAt,\n  isSpace: isSpace,\n  isWhiteSpace: isWhiteSpace,\n  isMdAsciiPunct: isMdAsciiPunct,\n  isPunctChar: isPunctChar,\n  escapeRE: escapeRE$1,\n  normalizeReference: normalizeReference,\n  getLineOffset: getLineOffset,\n  trimLeftOffset: trimLeftOffset\n});\n\n// Parse link label\n\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n\nfunction parseLinkLabel(state, start, disableNested) {\n  let level, found, marker, prevPos, labelEnd = -1, max = state.posMax, oldPos = state.pos;\n  state.pos = start + 1;\n  level = 1;\n  while (state.pos < max) {\n    marker = state.src.charCodeAt(state.pos);\n    if (marker === 93 /* ] */) {\n      level--;\n      if (level === 0) {\n        found = true;\n        break;\n      }\n    }\n    prevPos = state.pos;\n    state.md.inline.skipToken(state);\n    if (marker === 91 /* [ */) {\n      if (prevPos === state.pos - 1) {\n        // increase level if we find text `[`, which is not a part of any token\n        level++;\n      } else if (disableNested) {\n        state.pos = oldPos;\n        return -1;\n      }\n    }\n  }\n  if (found) {\n    labelEnd = state.pos;\n  }\n  // restore old state\n    state.pos = oldPos;\n  return labelEnd;\n}\n\n// Parse link destination\nfunction parseLinkDestination(str, pos, max) {\n  let code, level, lines = 0, start = pos, result = {\n    ok: false,\n    pos: 0,\n    lines: 0,\n    str: \"\"\n  };\n  if (str.charCodeAt(pos) === 60 /* < */) {\n    pos++;\n    while (pos < max) {\n      code = str.charCodeAt(pos);\n      if (code === 10 /* \\n */) {\n        return result;\n      }\n      if (code === 60 /* < */) {\n        return result;\n      }\n      if (code === 62 /* > */) {\n        result.pos = pos + 1;\n        result.str = unescapeAll(str.slice(start + 1, pos));\n        result.ok = true;\n        return result;\n      }\n      if (code === 92 /* \\ */ && pos + 1 < max) {\n        pos += 2;\n        continue;\n      }\n      pos++;\n    }\n    // no closing '>'\n        return result;\n  }\n  // this should be ... } else { ... branch\n    level = 0;\n  while (pos < max) {\n    code = str.charCodeAt(pos);\n    if (code === 32) {\n      break;\n    }\n    // ascii control characters\n        if (code < 32 || code === 127) {\n      break;\n    }\n    if (code === 92 /* \\ */ && pos + 1 < max) {\n      if (str.charCodeAt(pos + 1) === 32) {\n        break;\n      }\n      pos += 2;\n      continue;\n    }\n    if (code === 40 /* ( */) {\n      level++;\n      if (level > 32) {\n        return result;\n      }\n    }\n    if (code === 41 /* ) */) {\n      if (level === 0) {\n        break;\n      }\n      level--;\n    }\n    pos++;\n  }\n  if (start === pos) {\n    return result;\n  }\n  if (level !== 0) {\n    return result;\n  }\n  result.str = unescapeAll(str.slice(start, pos));\n  result.lines = lines;\n  result.pos = pos;\n  result.ok = true;\n  return result;\n}\n\n// Parse link title\nfunction parseLinkTitle(str, pos, max) {\n  let code, marker, lines = 0, start = pos, result = {\n    ok: false,\n    pos: 0,\n    lines: 0,\n    str: \"\"\n  };\n  if (pos >= max) {\n    return result;\n  }\n  marker = str.charCodeAt(pos);\n  if (marker !== 34 /* \" */ && marker !== 39 /* ' */ && marker !== 40 /* ( */) {\n    return result;\n  }\n  pos++;\n  // if opening marker is \"(\", switch it to closing marker \")\"\n    if (marker === 40) {\n    marker = 41;\n  }\n  while (pos < max) {\n    code = str.charCodeAt(pos);\n    if (code === marker) {\n      result.pos = pos + 1;\n      result.lines = lines;\n      result.str = unescapeAll(str.slice(start + 1, pos));\n      result.ok = true;\n      return result;\n    } else if (code === 40 /* ( */ && marker === 41 /* ) */) {\n      return result;\n    } else if (code === 10) {\n      lines++;\n    } else if (code === 92 /* \\ */ && pos + 1 < max) {\n      pos++;\n      if (str.charCodeAt(pos) === 10) {\n        lines++;\n      }\n    }\n    pos++;\n  }\n  return result;\n}\n\n// Just a shortcut for bulk export\nvar helpers =  Object.freeze({\n  __proto__: null,\n  parseLinkLabel: parseLinkLabel,\n  parseLinkDestination: parseLinkDestination,\n  parseLinkTitle: parseLinkTitle\n});\n\n/**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n////////////////////////////////////////////////////////////////////////////////\nconst default_rules = {};\n\ndefault_rules.code_inline = function(tokens, idx, options, env, slf) {\n  const token = tokens[idx];\n  return \"<code\" + slf.renderAttrs(token) + \">\" + escapeHtml(tokens[idx].content) + \"</code>\";\n};\n\ndefault_rules.code_block = function(tokens, idx, options, env, slf) {\n  const token = tokens[idx];\n  return \"<pre\" + slf.renderAttrs(token) + \"><code>\" + escapeHtml(tokens[idx].content) + \"</code></pre>\\n\";\n};\n\ndefault_rules.fence = function(tokens, idx, options, env, slf) {\n  let token = tokens[idx], info = token.info ? unescapeAll(token.info).trim() : \"\", langName = \"\", langAttrs = [], highlighted, i, arr, tmpAttrs, tmpToken;\n  if (info) {\n    arr = info.split(/\\s+/g);\n    langName = arr[0];\n    langAttrs = arr.slice(1);\n  }\n  if (options.highlight) {\n    highlighted = options.highlight(token.content, langName, [].concat(token.attrs || [], langAttrs)) || escapeHtml(token.content);\n  } else {\n    highlighted = escapeHtml(token.content);\n  }\n  if (highlighted.indexOf(\"<pre\") === 0) {\n    return highlighted + \"\\n\";\n  }\n  // If language exists, inject class gently, without modifying original token.\n  // May be, one day we will add .deepClone() for token and simplify this part, but\n  // now we prefer to keep things local.\n    if (info) {\n    i = token.attrIndex(\"class\");\n    tmpAttrs = token.attrs ? token.attrs.slice() : [];\n    if (i < 0) {\n      tmpAttrs.push([ \"class\", options.langPrefix + langName ]);\n    } else {\n      tmpAttrs[i] = tmpAttrs[i].slice();\n      tmpAttrs[i][1] += \" \" + options.langPrefix + langName;\n    }\n    // Fake token just to render attributes\n        tmpToken = {\n      attrs: tmpAttrs\n    };\n    return \"<pre><code\" + slf.renderAttrs(tmpToken) + \">\" + highlighted + \"</code></pre>\\n\";\n  }\n  return \"<pre><code\" + slf.renderAttrs(token, options) + \">\" + highlighted + \"</code></pre>\\n\";\n};\n\ndefault_rules.image = function(tokens, idx, options, env, slf) {\n  const token = tokens[idx];\n  // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n  // should be placed on proper position for tests.\n  \n  // Replace content with actual value\n    token.attrs[token.attrIndex(\"alt\")][1] = slf.renderInlineAsText(token.children, options, env);\n  return slf.renderToken(tokens, idx, options);\n};\n\ndefault_rules.hardbreak = function(tokens, idx, options /*, env */) {\n  return options.xhtmlOut ? \"<br />\\n\" : \"<br>\\n\";\n};\n\ndefault_rules.softbreak = function(tokens, idx, options /*, env */) {\n  return options.breaks ? options.xhtmlOut ? \"<br />\\n\" : \"<br>\\n\" : \"\\n\";\n};\n\ndefault_rules.text = function(tokens, idx /*, options, env */) {\n  return escapeHtml(tokens[idx].content);\n};\n\ndefault_rules.html_block = function(tokens, idx /*, options, env */) {\n  return tokens[idx].content;\n};\n\ndefault_rules.html_inline = function(tokens, idx /*, options, env */) {\n  return tokens[idx].content;\n};\n\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/ function Renderer() {\n  /**\n   * Renderer#rules -> Object\n   *\n   * Contains render rules for tokens. Can be updated and extended.\n   *\n   * ##### Example\n   *\n   * ```javascript\n   * var md = require('markdown-it')();\n   *\n   * md.renderer.rules.strong_open  = function () { return '<b>'; };\n   * md.renderer.rules.strong_close = function () { return '</b>'; };\n   *\n   * var result = md.renderInline(...);\n   * ```\n   *\n   * Each rule is called as independent static function with fixed signature:\n   *\n   * ```javascript\n   * function my_token_render(tokens, idx, options, env, renderer) {\n   *   // ...\n   *   return renderedHTML;\n   * }\n   * ```\n   *\n   * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js)\n   * for more details and examples.\n   **/\n  this.rules = assign$1({}, default_rules);\n}\n\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/ Renderer.prototype.renderAttrs = function renderAttrs(token, options) {\n  let i, l, result;\n  if (options && options.default_attributes && options.default_attributes[token.tag]) {\n    token.attrs = (token.attrs || []).concat(options.default_attributes[token.tag]);\n  }\n  if (!token.attrs) {\n    return \"\";\n  }\n  result = \"\";\n  for (i = 0, l = token.attrs.length; i < l; i++) {\n    const value = token.attrs[i][1];\n    result += \" \" + escapeHtml(token.attrs[i][0]) + (isNil(value) ? \"\" : '=\"' + escapeHtml(value) + '\"');\n  }\n  return result;\n};\n\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/ Renderer.prototype.renderToken = function renderToken(tokens, idx, options) {\n  let nextToken, result = \"\", needLf = false, token = tokens[idx];\n  // Tight list paragraphs\n    if (token.hidden) {\n    return \"\";\n  }\n  // Insert a newline between hidden paragraph and subsequent opening\n  // block-level tag.\n  \n  // For example, here we should insert a newline before blockquote:\n  //  - a\n  //    >\n  \n    if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n    result += \"\\n\";\n  }\n  // Add token name, e.g. `<img`\n    result += (token.nesting === -1 ? \"</\" : \"<\") + token.tag;\n  // Encode attributes, e.g. `<img src=\"foo\"`\n    result += this.renderAttrs(token, options);\n  // Add a slash for self-closing tags, e.g. `<img src=\"foo\" /`\n    if (token.nesting === 0 && options.xhtmlOut) {\n    result += \" /\";\n  }\n  // Check if we need to add a newline after this tag\n    if (token.block) {\n    needLf = true;\n    if (token.nesting === 1) {\n      if (idx + 1 < tokens.length) {\n        nextToken = tokens[idx + 1];\n        if (nextToken.type === \"inline\" || nextToken.hidden) {\n          // Block-level tag containing an inline tag.\n          needLf = false;\n        } else if (nextToken.tag === \"blockquote\" && nextToken.tag === token.tag) ; else if (nextToken.nesting === -1 && nextToken.tag === token.tag) {\n          // Opening tag + closing tag of the same type. E.g. `<li></li>`.\n          needLf = false;\n        }\n      }\n    }\n  }\n  result += needLf ? \">\\n\" : \">\";\n  return result;\n};\n\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/ Renderer.prototype.renderInline = function(tokens, options, env) {\n  let type, result = \"\", rules = this.rules;\n  if (tokens) {\n    for (let i = 0, len = tokens.length; i < len; i++) {\n      type = tokens[i].type;\n      if (typeof rules[type] !== \"undefined\") {\n        result += rules[type](tokens, i, options, env, this);\n      } else {\n        result += this.renderToken(tokens, i, options);\n      }\n    }\n  }\n  return result;\n};\n\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/ Renderer.prototype.renderInlineAsText = function(tokens, options, env) {\n  let result = \"\";\n  if (tokens) {\n    for (let i = 0, len = tokens.length; i < len; i++) {\n      if (tokens[i].type === \"text\") {\n        result += tokens[i].content;\n      } else if (tokens[i].type === \"image\") {\n        result += this.renderInlineAsText(tokens[i].children, options, env);\n      } else if (tokens[i].type === \"softbreak\") {\n        result += \"\\n\";\n      }\n    }\n  }\n  return result;\n};\n\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/ Renderer.prototype.render = function(tokens, options, env) {\n  if (options.ast) return tokens;\n  let i, len, type, result = \"\", rules = this.rules;\n  for (i = 0, len = tokens.length; i < len; i++) {\n    type = tokens[i].type;\n    if (type === \"inline\") {\n      result += this.renderInline(tokens[i].children, options, env);\n    } else if (typeof rules[type] !== \"undefined\") {\n      result += rules[tokens[i].type](tokens, i, options, env, this);\n    } else {\n      result += this.renderToken(tokens, i, options, env);\n    }\n  }\n  return result;\n};\n\n/**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n/**\n * new Ruler()\n **/ function Ruler() {\n  // List of added rules. Each element is:\n  // {\n  //   name: XXX,\n  //   enabled: Boolean,\n  //   fn: Function(),\n  //   alt: [ name2, name3 ]\n  // }\n  this.__rules__ = [];\n  // Cached rule chains.\n  \n  // First level - chain name, '' for default.\n  // Second level - diginal anchor for fast filtering by charcodes.\n  \n    this.__cache__ = null;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Helper methods, should not be used directly\n// Find rule index by name\n\nRuler.prototype.__find__ = function(name) {\n  return this.__rules__.findIndex((function(rule) {\n    return rule.name === name;\n  }));\n};\n\n// Build rules lookup cache\n\nRuler.prototype.__compile__ = function() {\n  const self = this;\n  const chains = [ \"\" ];\n  // collect unique names\n    self.__rules__.forEach((function(rule) {\n    if (!rule.enabled) {\n      return;\n    }\n    rule.alt.forEach((function(altName) {\n      if (chains.indexOf(altName) < 0) {\n        chains.push(altName);\n      }\n    }));\n  }));\n  self.__cache__ = {};\n  chains.forEach((function(chain) {\n    self.__cache__[chain] = [];\n    self.__rules__.forEach((function(rule) {\n      if (!rule.enabled) {\n        return;\n      }\n      if (chain && rule.alt.indexOf(chain) < 0) {\n        return;\n      }\n      self.__cache__[chain].push(rule.fn);\n    }));\n  }));\n};\n\n/**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n *   //...\n * });\n * ```\n **/ Ruler.prototype.at = function(name, fn, options) {\n  const index = this.__find__(name);\n  const opt = options || {};\n  if (index === -1) {\n    throw new Error(\"Parser rule not found: \" + name);\n  }\n  this.__rules__[index].fn = fn;\n  this.__rules__[index].alt = opt.alt || [];\n  this.__cache__ = null;\n};\n\n/**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n *   //...\n * });\n * ```\n **/ Ruler.prototype.before = function(beforeName, ruleName, fn, options) {\n  const index = this.__find__(beforeName);\n  const opt = options || {};\n  if (index === -1) {\n    throw new Error(\"Parser rule not found: \" + beforeName);\n  }\n  this.__rules__.splice(index, 0, {\n    name: ruleName,\n    enabled: true,\n    fn: fn,\n    alt: opt.alt || []\n  });\n  this.__cache__ = null;\n};\n\n/**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n *   //...\n * });\n * ```\n **/ Ruler.prototype.after = function(afterName, ruleName, fn, options) {\n  const index = this.__find__(afterName);\n  const opt = options || {};\n  if (index === -1) {\n    throw new Error(\"Parser rule not found: \" + afterName);\n  }\n  this.__rules__.splice(index + 1, 0, {\n    name: ruleName,\n    enabled: true,\n    fn: fn,\n    alt: opt.alt || []\n  });\n  this.__cache__ = null;\n};\n\n/**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n *   //...\n * });\n * ```\n **/ Ruler.prototype.push = function(ruleName, fn, options) {\n  const opt = options || {};\n  this.__rules__.push({\n    name: ruleName,\n    enabled: true,\n    fn: fn,\n    alt: opt.alt || []\n  });\n  this.__cache__ = null;\n};\n\n/**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/ Ruler.prototype.enable = function(list, ignoreInvalid) {\n  if (!Array.isArray(list)) {\n    list = [ list ];\n  }\n  const result = [];\n  // Search by name and enable\n    list.forEach((function(name) {\n    const idx = this.__find__(name);\n    if (idx < 0) {\n      if (ignoreInvalid) {\n        return;\n      }\n      throw new Error(\"Rules manager: invalid rule name \" + name);\n    }\n    this.__rules__[idx].enabled = true;\n    result.push(name);\n  }), this);\n  this.__cache__ = null;\n  return result;\n};\n\n/**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/ Ruler.prototype.enableOnly = function(list, ignoreInvalid) {\n  if (!Array.isArray(list)) {\n    list = [ list ];\n  }\n  this.__rules__.forEach((function(rule) {\n    rule.enabled = false;\n  }));\n  this.enable(list, ignoreInvalid);\n};\n\n/**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/ Ruler.prototype.disable = function(list, ignoreInvalid) {\n  if (!Array.isArray(list)) {\n    list = [ list ];\n  }\n  const result = [];\n  // Search by name and disable\n    list.forEach((function(name) {\n    const idx = this.__find__(name);\n    if (idx < 0) {\n      if (ignoreInvalid) {\n        return;\n      }\n      throw new Error(\"Rules manager: invalid rule name \" + name);\n    }\n    this.__rules__[idx].enabled = false;\n    result.push(name);\n  }), this);\n  this.__cache__ = null;\n  return result;\n};\n\n/**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/ Ruler.prototype.getRules = function(chainName) {\n  if (this.__cache__ === null) {\n    this.__compile__();\n  }\n  // Chain can be empty, if rules disabled. But we still have to return Array.\n    return this.__cache__[chainName] || [];\n};\n\n// Normalize input string\n// https://spec.commonmark.org/0.29/#line-ending\nconst NEWLINES_RE = /\\r\\n?|\\n/g;\n\nconst NULL_RE = /\\0/g;\n\nfunction normalize(state) {\n  let str;\n  // Normalize newlines\n    str = state.src.replace(NEWLINES_RE, \"\\n\");\n  // Replace NULL characters\n    str = str.replace(NULL_RE, \"\\ufffd\");\n  state.src = str;\n}\n\nfunction block(state) {\n  let token;\n  if (state.inlineMode) {\n    token = new state.Token(\"inline\", \"\", 0);\n    token.content = state.src;\n    token.map = [ 0, 1 ];\n    token.children = [];\n    state.tokens.push(token);\n  } else {\n    state.md.block.parse(state.src, state.md, state.env, state.tokens);\n  }\n}\n\nfunction inline(state, positionOffset) {\n  let tokens = state.tokens, tok, i, l;\n  // Parse inlines\n    for (i = 0, l = tokens.length; i < l; i++) {\n    tok = tokens[i];\n    tok.position += positionOffset || 0;\n    if (tok.type === \"inline\") {\n      state.md.inline.parse(tok.content, state.md, Object.assign({}, state.env, {\n        parentToken: tok,\n        parentState: state,\n        parentTokenIndex: i\n      }), tok.children);\n      // Update position of all children to be absolute\n            for (let child = 0; child < tok.children.length; child++) {\n        tok.children[child].position += tok.position;\n      }\n    }\n  }\n}\n\n// Simple typographic replacements\n\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// (p) (P) -> §\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → &ndash;, --- → &mdash;\n// --> → →; <-- → ←; <--> → ↔\n// ==> → ⇒; <== → ⇐; <==> → ⇔\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - miltiplication 2 x 4 -> 2 × 4\nconst RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--|==/;\n\nconst ARROW_REPLACEMENTS = {\n  \"<--\\x3e\": \"\\u2194\",\n  \"--\\x3e\": \"\\u2192\",\n  \"<--\": \"\\u2190\",\n  \"<==>\": \"\\u21d4\",\n  \"==>\": \"\\u21d2\",\n  \"<==\": \"\\u21d0\"\n};\n\n// Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\nconst SCOPED_ABBR_TEST_RE = /\\((c|tm|r|p)\\)/i;\n\nconst SCOPED_ABBR_RE = /\\((c|tm|r|p)\\)/gi;\n\nconst SCOPED_ABBR = {\n  c: \"\\xa9\",\n  r: \"\\xae\",\n  p: \"\\xa7\",\n  tm: \"\\u2122\"\n};\n\nfunction replaceFn(match, name) {\n  return SCOPED_ABBR[name.toLowerCase()];\n}\n\nfunction replace_scoped(inlineTokens) {\n  let i, token, inside_autolink = 0;\n  for (i = inlineTokens.length - 1; i >= 0; i--) {\n    token = inlineTokens[i];\n    if (token.type === \"text\" && !inside_autolink) {\n      token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n    }\n    if (token.type === \"link_open\" && token.info === \"auto\") {\n      inside_autolink--;\n    }\n    if (token.type === \"link_close\" && token.info === \"auto\") {\n      inside_autolink++;\n    }\n  }\n}\n\nfunction replace_rare(inlineTokens) {\n  let i, token, inside_autolink = 0;\n  function replace_arrow(m, p1, p2) {\n    return p1 + (ARROW_REPLACEMENTS[p2] || p2);\n  }\n  for (i = inlineTokens.length - 1; i >= 0; i--) {\n    token = inlineTokens[i];\n    if (token.type === \"text\" && !inside_autolink) {\n      if (RARE_RE.test(token.content)) {\n        token.content = token.content.replace(/\\+-/g, \"\\xb1\").replace(/([?!])\\.{4,}/g, \"$1..\").replace(/\\.{3,}/g, \"\\u2026\").replace(/\\u2026\\.+/g, \"\\u2026\").replace(/([?!]){4,}/g, \"$1$1$1\").replace(/,{2,}/g, \",\").replace(/(^|[^<=-])([<]?(?:==|--)[>]?)(?=[^>=-]|$)/gm, replace_arrow).replace(/(^|[^<=-])([<]?(?:==|--)[>]?)(?=[^>=-]|$)/gm, replace_arrow).replace(/(^|[^-])---(?=[^-]|$)/gm, \"$1\\u2014\").replace(/(^|\\s)--(?=\\s|$)/gm, \"$1\\u2013\").replace(/(^|[^-\\s])--(?=[^-\\s]|$)/gm, \"$1\\u2013\");\n      }\n    }\n    if (token.type === \"link_open\" && token.info === \"auto\") {\n      inside_autolink--;\n    }\n    if (token.type === \"link_close\" && token.info === \"auto\") {\n      inside_autolink++;\n    }\n  }\n}\n\nfunction replace(state) {\n  let blkIdx;\n  if (!state.md.options.typographer) {\n    return;\n  }\n  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n    if (state.tokens[blkIdx].type !== \"inline\") {\n      continue;\n    }\n    if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n      replace_scoped(state.tokens[blkIdx].children);\n    }\n    if (RARE_RE.test(state.tokens[blkIdx].content)) {\n      replace_rare(state.tokens[blkIdx].children);\n    }\n  }\n}\n\n// Convert straight quotation marks to typographic ones\nconst QUOTE_TEST_RE = /['\"]/;\n\nconst QUOTE_RE = /['\"]/g;\n\nconst APOSTROPHE = \"\\u2019\";\n\n /* ’ */ function replaceAt(str, index, ch) {\n  return str.substr(0, index) + ch + str.substr(index + 1);\n}\n\nfunction process_inlines(tokens, state) {\n  let i, token, text, t, pos, max, thisLevel, item, lastChar, nextChar, isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace, canOpen, canClose, j, isSingle, stack, openQuote, closeQuote;\n  stack = [];\n  for (i = 0; i < tokens.length; i++) {\n    token = tokens[i];\n    thisLevel = tokens[i].level;\n    for (j = stack.length - 1; j >= 0; j--) {\n      if (stack[j].level <= thisLevel) {\n        break;\n      }\n    }\n    stack.length = j + 1;\n    if (token.type !== \"text\") {\n      continue;\n    }\n    text = token.content;\n    pos = 0;\n    max = text.length;\n    /*eslint no-labels:0,block-scoped-var:0*/    OUTER: while (pos < max) {\n      QUOTE_RE.lastIndex = pos;\n      t = QUOTE_RE.exec(text);\n      if (!t) {\n        break;\n      }\n      canOpen = canClose = true;\n      pos = t.index + 1;\n      isSingle = t[0] === \"'\";\n      // Find previous character,\n      // default to space if it's the beginning of the line\n      \n            lastChar = 32;\n      if (t.index - 1 >= 0) {\n        lastChar = text.charCodeAt(t.index - 1);\n      } else {\n        for (j = i - 1; j >= 0; j--) {\n          if (tokens[j].type === \"softbreak\" || tokens[j].type === \"hardbreak\") break;\n // lastChar defaults to 0x20\n                    if (!tokens[j].content) continue;\n // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n                    lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);\n          break;\n        }\n      }\n      // Find next character,\n      // default to space if it's the end of the line\n      \n            nextChar = 32;\n      if (pos < max) {\n        nextChar = text.charCodeAt(pos);\n      } else {\n        for (j = i + 1; j < tokens.length; j++) {\n          if (tokens[j].type === \"softbreak\" || tokens[j].type === \"hardbreak\") break;\n // nextChar defaults to 0x20\n                    if (!tokens[j].content) continue;\n // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n                    nextChar = tokens[j].content.charCodeAt(0);\n          break;\n        }\n      }\n      isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n      isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n      isLastWhiteSpace = isWhiteSpace(lastChar);\n      isNextWhiteSpace = isWhiteSpace(nextChar);\n      if (isNextWhiteSpace) {\n        canOpen = false;\n      } else if (isNextPunctChar) {\n        if (!(isLastWhiteSpace || isLastPunctChar)) {\n          canOpen = false;\n        }\n      }\n      if (isLastWhiteSpace) {\n        canClose = false;\n      } else if (isLastPunctChar) {\n        if (!(isNextWhiteSpace || isNextPunctChar)) {\n          canClose = false;\n        }\n      }\n      if (nextChar === 34 /* \" */ && t[0] === '\"') {\n        if (lastChar >= 48 /* 0 */ && lastChar <= 57 /* 9 */) {\n          // special case: 1\"\" - count first quote as an inch\n          canClose = canOpen = false;\n        }\n      }\n      if (canOpen && canClose) {\n        // Replace quotes in the middle of punctuation sequence, but not\n        // in the middle of the words, i.e.:\n        // 1. foo \" bar \" baz - not replaced\n        // 2. foo-\"-bar-\"-baz - replaced\n        // 3. foo\"bar\"baz     - not replaced\n        canOpen = isLastPunctChar;\n        canClose = isNextPunctChar;\n      }\n      if (!canOpen && !canClose) {\n        // middle of word\n        if (isSingle) {\n          token.content = replaceAt(token.content, t.index, APOSTROPHE);\n        }\n        continue;\n      }\n      if (canClose) {\n        // this could be a closing quote, rewind the stack to get a match\n        for (j = stack.length - 1; j >= 0; j--) {\n          item = stack[j];\n          if (stack[j].level < thisLevel) {\n            break;\n          }\n          if (item.single === isSingle && stack[j].level === thisLevel) {\n            item = stack[j];\n            if (isSingle) {\n              openQuote = state.md.options.quotes[2];\n              closeQuote = state.md.options.quotes[3];\n            } else {\n              openQuote = state.md.options.quotes[0];\n              closeQuote = state.md.options.quotes[1];\n            }\n            // replace token.content *before* tokens[item.token].content,\n            // because, if they are pointing at the same token, replaceAt\n            // could mess up indices when quote length != 1\n                        token.content = replaceAt(token.content, t.index, closeQuote);\n            tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, openQuote);\n            pos += closeQuote.length - 1;\n            if (item.token === i) {\n              pos += openQuote.length - 1;\n            }\n            text = token.content;\n            max = text.length;\n            stack.length = j;\n            continue OUTER;\n          }\n        }\n      }\n      if (canOpen) {\n        stack.push({\n          token: i,\n          pos: t.index,\n          single: isSingle,\n          level: thisLevel\n        });\n      } else if (canClose && isSingle) {\n        token.content = replaceAt(token.content, t.index, APOSTROPHE);\n      }\n    }\n  }\n}\n\nfunction smartquotes(state) {\n  /*eslint max-depth:0*/\n  let blkIdx;\n  if (!state.md.options.typographer) {\n    return;\n  }\n  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n    if (state.tokens[blkIdx].type !== \"inline\" || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n      continue;\n    }\n    process_inlines(state.tokens[blkIdx].children, state);\n  }\n}\n\n// Token class\n/**\n * class Token\n **/\n/**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/ function Token(type, tag, nesting) {\n  /**\n   * Token#type -> String\n   *\n   * Type of the token (string, e.g. \"paragraph_open\")\n   **/\n  this.type = type;\n  /**\n   * Token#tag -> String\n   *\n   * html tag name, e.g. \"p\"\n   **/  this.tag = tag;\n  /**\n   * Token#attrs -> Array\n   *\n   * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n   **/  this.attrs = null;\n  /**\n   * Token#map -> Array\n   *\n   * Source map info. Format: `[ line_begin, line_end ]`\n   **/  this.map = null;\n  /**\n   * Token#nesting -> Number\n   *\n   * Level change (number in {-1, 0, 1} set), where:\n   *\n   * -  `1` means the tag is opening\n   * -  `0` means the tag is self-closing\n   * - `-1` means the tag is closing\n   **/  this.nesting = nesting;\n  /**\n   * Token#level -> Number\n   *\n   * nesting level, the same as `state.level`\n   **/  this.level = 0;\n  /**\n   * Token#children -> Array\n   *\n   * An array of child nodes (inline and img tokens)\n   **/  this.children = null;\n  /**\n   * Token#content -> String\n   *\n   * In a case of self-closing tag (code, html, fence, etc.),\n   * it has contents of this tag.\n   **/  this.content = \"\";\n  /**\n   * Token#markup -> String\n   *\n   * '*' or '_' for emphasis, fence string for fence, etc.\n   **/  this.markup = \"\";\n  /**\n   * Token#info -> String\n   *\n   * Additional information:\n   *\n   * - Info string for \"fence\" tokens\n   * - The value \"auto\" for autolink \"link_open\" and \"link_close\" tokens\n   **/  this.info = \"\";\n  /**\n   * Token#meta -> Object\n   *\n   * A place for plugins to store an arbitrary data\n   **/  this.meta = null;\n  /**\n   * Token#block -> Boolean\n   *\n   * True for block-level tokens, false for inline tokens.\n   * Used in renderer to calculate line breaks\n   **/  this.block = false;\n  /**\n   * Token#hidden -> Boolean\n   *\n   * If it's true, ignore this element when rendering. Used for tight lists\n   * to hide paragraphs.\n   **/  this.hidden = false;\n  /**\n   * Token#position -> Number\n   *\n   * Position in the original string\n   **/  this.position = 0;\n  /**\n   * Token#size -> Number\n   *\n   * Size of the token\n   **/  this.size = 0;\n}\n\n/**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/ Token.prototype.attrIndex = function attrIndex(name) {\n  let attrs;\n  if (!this.attrs) {\n    return -1;\n  }\n  attrs = this.attrs;\n  return attrs.findIndex((function(el) {\n    return el[0] === name;\n  }));\n};\n\n/**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/ Token.prototype.attrPush = function attrPush(attrData) {\n  if (this.attrs) {\n    this.attrs.push(attrData);\n  } else {\n    this.attrs = [ attrData ];\n  }\n};\n\n/**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/ Token.prototype.attrSet = function attrSet(name, value) {\n  const idx = this.attrIndex(name), attrData = [ name, value ];\n  if (idx < 0) {\n    this.attrPush(attrData);\n  } else {\n    this.attrs[idx] = attrData;\n  }\n};\n\n/**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/ Token.prototype.attrGet = function attrGet(name) {\n  let idx = this.attrIndex(name), value = null;\n  if (idx >= 0) {\n    value = this.attrs[idx][1];\n  }\n  return value;\n};\n\n/**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/ Token.prototype.attrJoin = function attrJoin(name, value) {\n  const idx = this.attrIndex(name);\n  if (idx < 0) {\n    this.attrPush([ name, value ]);\n  } else {\n    this.attrs[idx][1] = this.attrs[idx][1] + \" \" + value;\n  }\n};\n\n/**\n * Token.clone()\n *\n * Obtain a shallow clone of the token.  You can use this while rendering to\n * prevent modifying the token list while rendering.\n **/ Token.prototype.clone = function clone() {\n  const token = new Token(this.type, this.tag, this.nesting);\n  token.attrs = this.attrs;\n  token.level = this.level;\n  token.children = this.children;\n  token.content = this.content;\n  token.map = this.map;\n  token.markup = this.markup;\n  token.info = this.info;\n  token.meta = this.meta;\n  token.block = this.block;\n  token.hidden = this.hidden;\n  return token;\n};\n\n// Core state object\nfunction StateCore(src, md, env) {\n  this.src = src;\n  this.env = env;\n  this.tokens = [];\n  this.inlineMode = false;\n  this.md = md;\n // link to parser instance\n}\n\n// re-export Token class to use in core rules\nStateCore.prototype.Token = Token;\n\n/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/ const _rules$2 = [ [ \"normalize\", normalize ], [ \"block\", block ], [ \"inline\", inline ], [ \"replacements\", replace ], [ \"smartquotes\", smartquotes ] ];\n\n/**\n * new Core()\n **/ function Core() {\n  /**\n   * Core#ruler -> Ruler\n   *\n   * [[Ruler]] instance. Keep configuration of core rules.\n   **/\n  this.ruler = new Ruler;\n  for (let i = 0; i < _rules$2.length; i++) {\n    this.ruler.push(_rules$2[i][0], _rules$2[i][1]);\n  }\n}\n\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/ Core.prototype.process = function(state) {\n  let i, l, rules;\n  rules = this.ruler.getRules(\"\");\n  for (i = 0, l = rules.length; i < l; i++) {\n    rules[i](state);\n  }\n};\n\nCore.prototype.State = StateCore;\n\n// GFM table, https://github.github.com/gfm/#tables-extension-\nfunction getLine(state, line) {\n  const pos = state.bMarks[line] + state.tShift[line], max = state.eMarks[line];\n  return state.src.substr(pos, max - pos);\n}\n\nfunction escapedSplit(str, positions) {\n  let result = [], pos = 0, max = str.length, ch, isEscaped = false, lastPos = 0, current = \"\";\n  ch = str.charCodeAt(pos);\n  while (pos < max) {\n    if (ch === 124 /* | */) {\n      if (!isEscaped) {\n        // pipe separating cells, '|'\n        result.push(current + str.substring(lastPos, pos));\n        positions.push(lastPos);\n        current = \"\";\n        lastPos = pos + 1;\n      } else {\n        // escaped pipe, '\\|'\n        current += str.substring(lastPos, pos - 1);\n        lastPos = pos;\n      }\n    }\n    isEscaped = ch === 92 /* \\ */;\n    pos++;\n    ch = str.charCodeAt(pos);\n  }\n  result.push(current + str.substring(lastPos));\n  positions.push(lastPos);\n  return result;\n}\n\nfunction table(state, startLine, endLine, silent) {\n  let ch, lineText, pos, i, l, nextLine, columns, columnCount, token, aligns, t, tableLines, tbodyLines, oldParentType, terminate, terminatorRules, firstCh, secondCh, positions, len, columnVIndex;\n  // should have at least two lines\n    if (startLine + 2 > endLine) {\n    return false;\n  }\n  nextLine = startLine + 1;\n  if (state.sCount[nextLine] < state.blkIndent) {\n    return false;\n  }\n  // if it's indented more than 3 spaces, it should be a code block\n    if (state.sCount[nextLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  // first character of the second line should be '|', '-', ':',\n  // and no other characters are allowed but spaces;\n  // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n    pos = state.bMarks[nextLine] + state.tShift[nextLine];\n  if (pos >= state.eMarks[nextLine]) {\n    return false;\n  }\n  firstCh = state.src.charCodeAt(pos++);\n  if (firstCh !== 124 /* | */ && firstCh !== 45 /* - */ && firstCh !== 58 /* : */) {\n    return false;\n  }\n  if (pos >= state.eMarks[nextLine]) {\n    return false;\n  }\n  secondCh = state.src.charCodeAt(pos++);\n  if (secondCh !== 124 /* | */ && secondCh !== 45 /* - */ && secondCh !== 58 /* : */ && !isSpace(secondCh)) {\n    return false;\n  }\n  // if first character is '-', then second character must not be a space\n  // (due to parsing ambiguity with list)\n    if (firstCh === 45 /* - */ && isSpace(secondCh)) {\n    return false;\n  }\n  while (pos < state.eMarks[nextLine]) {\n    ch = state.src.charCodeAt(pos);\n    if (ch !== 124 /* | */ && ch !== 45 /* - */ && ch !== 58 /* : */ && !isSpace(ch)) {\n      return false;\n    }\n    pos++;\n  }\n  lineText = getLine(state, startLine + 1);\n  columns = lineText.split(\"|\");\n  aligns = [];\n  for (i = 0; i < columns.length; i++) {\n    t = columns[i].trim();\n    if (!t) {\n      // allow empty columns before and after table, but not in between columns;\n      // e.g. allow ` |---| `, disallow ` ---||--- `\n      if (i === 0 || i === columns.length - 1) {\n        continue;\n      } else {\n        return false;\n      }\n    }\n    if (!/^:?-+:?$/.test(t)) {\n      return false;\n    }\n    if (t.charCodeAt(t.length - 1) === 58 /* : */) {\n      aligns.push(t.charCodeAt(0) === 58 /* : */ ? \"center\" : \"right\");\n    } else if (t.charCodeAt(0) === 58 /* : */) {\n      aligns.push(\"left\");\n    } else {\n      aligns.push(\"\");\n    }\n  }\n  lineText = getLine(state, startLine).trim();\n  if (lineText.indexOf(\"|\") === -1) {\n    return false;\n  }\n  if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  positions = [];\n  columns = escapedSplit(lineText, positions);\n  if (columns.length && columns[0] === \"\") {\n    columns.shift();\n    positions.shift();\n  }\n  if (columns.length && columns[columns.length - 1] === \"\") {\n    columns.pop();\n    positions.pop();\n  }\n  // header row will define an amount of columns in the entire table,\n  // and align row should be exactly the same (the rest of the rows can differ)\n    columnCount = columns.length;\n  if (columnCount === 0 || columnCount !== aligns.length) {\n    return false;\n  }\n  if (silent) {\n    return true;\n  }\n  oldParentType = state.parentType;\n  state.parentType = \"table\";\n  // use 'blockquote' lists for termination because it's\n  // the most similar to tables\n    terminatorRules = state.md.block.ruler.getRules(\"blockquote\");\n  token = state.push(\"table_open\", \"table\", 1);\n  token.map = tableLines = [ startLine, 0 ];\n  token.size = 0;\n  token.position = state.bMarks[startLine];\n  token = state.push(\"thead_open\", \"thead\", 1);\n  token.map = [ startLine, startLine + 1 ];\n  token.size = 0;\n  token.position = state.bMarks[startLine];\n  token = state.push(\"tr_open\", \"tr\", 1);\n  token.map = [ startLine, startLine + 1 ];\n  token.size = 0;\n  token.position = state.bMarks[startLine];\n  const headings = [];\n  columnVIndex = state.bMarks[startLine] + state.tShift[startLine];\n  for (i = 0; i < columns.length; i++) {\n    token = state.push(\"th_open\", \"th\", 1);\n    token.size = 1;\n    token.position = columnVIndex;\n    columnVIndex += 1;\n    if (aligns[i]) {\n      token.attrs = [ [ \"style\", \"text-align:\" + aligns[i] ] ];\n    }\n    token = state.push(\"inline\", \"\", 0);\n    token.content = columns[i].trim();\n    token.children = [];\n    token.position = columnVIndex + trimLeftOffset(columns[i]);\n    token.size = token.content.length;\n    columnVIndex += columns[i].length;\n    // empty headings get the column index number as a data-label\n        headings[i] = token.content || `col-${i + 1}`;\n    token = state.push(\"th_close\", \"th\", -1);\n    token.position = columnVIndex;\n    token.size = 0;\n    // Last column?\n        if (i === columns.length - 1) {\n      token.size = 1;\n      columnVIndex += 1;\n    }\n  }\n  token = state.push(\"tr_close\", \"tr\", -1);\n  token.size = 0;\n  token.position = state.eMarks[startLine];\n  token = state.push(\"thead_close\", \"thead\", -1);\n  token.size = state.eMarks[startLine + 1] - state.bMarks[startLine + 1];\n  token.position = state.bMarks[startLine + 1];\n  for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n    if (state.sCount[nextLine] < state.blkIndent) {\n      break;\n    }\n    terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) {\n      break;\n    }\n    lineText = getLine(state, nextLine).trim();\n    if (!lineText) {\n      break;\n    }\n    if (state.sCount[nextLine] - state.blkIndent >= 4) {\n      break;\n    }\n    positions = [];\n    columns = escapedSplit(lineText, positions);\n    if (columns.length && columns[0] === \"\") {\n      columns.shift();\n      positions.shift();\n    }\n    if (columns.length && columns[columns.length - 1] === \"\") {\n      columns.pop();\n      positions.pop();\n    }\n    if (nextLine === startLine + 2) {\n      token = state.push(\"tbody_open\", \"tbody\", 1);\n      token.map = tbodyLines = [ startLine + 2, 0 ];\n      token.size = 0;\n      token.position = state.bMarks[startLine + 2];\n    }\n    token = state.push(\"tr_open\", \"tr\", 1);\n    token.map = [ nextLine, nextLine + 1 ];\n    token.size = 0;\n    token.position = state.bMarks[nextLine];\n    columnVIndex = state.bMarks[nextLine] + state.tShift[nextLine];\n    len = Math.max(columns.length, columnCount);\n    for (i = 0; i < len; i++) {\n      token = state.push(\"td_open\", \"td\", 1);\n      token.size = 1;\n      token.position = columnVIndex;\n      columnVIndex++;\n      // as MarkDown table rows MAY have more columns than originally set up in the table header\n      // by the user, augment the data-label table as we go along:\n      // empty headings get the column index number as a data-label\n            if (!headings[i]) {\n        headings[i] = `col-${i + 1}`;\n      }\n      token.attrs = [ [ \"data-label\", headings[i] ] ];\n      if (aligns[i]) {\n        token.attrs.push([ \"style\", \"text-align:\" + aligns[i] ]);\n      }\n      const originalContent = columns[i] || \"\";\n      token = state.push(\"inline\", \"\", 0);\n      token.content = originalContent.trim();\n      token.children = [];\n      token.size = token.content.length;\n      token.position = columnVIndex + trimLeftOffset(originalContent);\n      columnVIndex += originalContent.length;\n      token.map = [ nextLine, nextLine + 1 ];\n      token = state.push(\"td_close\", \"td\", -1);\n      token.position = columnVIndex;\n      token.size = 0;\n      // Last column?\n            if (i === columns.length - 1) {\n        token.size = 1;\n      }\n    }\n    token = state.push(\"tr_close\", \"tr\", -1);\n    token.size = 0;\n    token.position = state.eMarks[nextLine];\n  }\n  if (tbodyLines) {\n    token = state.push(\"tbody_close\", \"tbody\", -1);\n    token.size = 0;\n    token.position = state.eMarks[nextLine];\n    tbodyLines[1] = nextLine;\n  }\n  token = state.push(\"table_close\", \"table\", -1);\n  token.size = 0;\n  token.position = state.eMarks[nextLine];\n  tableLines[1] = nextLine;\n  state.parentType = oldParentType;\n  state.line = nextLine;\n  return true;\n}\n\n// Code block (4 spaces padded)\nfunction code(state, startLine, endLine /*, silent*/) {\n  let nextLine, last, token, pos = state.bMarks[startLine], endPos;\n  if (state.sCount[startLine] - state.blkIndent < 4) {\n    return false;\n  }\n  last = nextLine = startLine + 1;\n  while (nextLine < endLine) {\n    if (state.isEmpty(nextLine)) {\n      nextLine++;\n      continue;\n    }\n    if (state.sCount[nextLine] - state.blkIndent >= 4) {\n      nextLine++;\n      last = nextLine;\n      continue;\n    }\n    break;\n  }\n  endPos = state.bMarks[last] + state.tShift[last];\n  state.line = last;\n  token = state.push(\"code_block\", \"code\", 0);\n  token.content = state.getLines(startLine, last, 4 + state.blkIndent, true);\n  token.map = [ startLine, state.line ];\n  token.position = pos;\n  token.size = endPos - pos;\n  return true;\n}\n\n// fences (``` lang, ~~~ lang)\nfunction fence(state, startLine, endLine, silent) {\n  let marker, len, params, nextLine, mem, token, markup, originalPos, haveEndMarker = false, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];\n  // if it's indented more than 3 spaces, it should be a code block\n    if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  if (pos + 3 > max) {\n    return false;\n  }\n  marker = state.src.charCodeAt(pos);\n  if (marker !== 126 /* ~ */ && marker !== 96 /* ` */) {\n    return false;\n  }\n  // scan marker length\n    mem = pos;\n  pos = state.skipChars(pos, marker);\n  len = pos - mem;\n  if (len < 3) {\n    return false;\n  }\n  originalPos = mem;\n  markup = state.src.slice(mem, pos);\n  params = state.src.slice(pos, max);\n  if (marker === 96 /* ` */) {\n    if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n      return false;\n    }\n  }\n  // Since start is found, we can report success here in validation mode\n    if (silent) {\n    return true;\n  }\n  // search end of block\n    nextLine = startLine;\n  for (;;) {\n    nextLine++;\n    if (nextLine >= endLine) {\n      // unclosed block should be autoclosed by end of document.\n      // also block seems to be autoclosed by end of parent\n      break;\n    }\n    pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n    max = state.eMarks[nextLine];\n    if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n      // non-empty line with negative indent should stop the list:\n      // - ```\n      //  test\n      break;\n    }\n    if (state.src.charCodeAt(pos) !== marker) {\n      continue;\n    }\n    if (state.sCount[nextLine] - state.blkIndent >= 4) {\n      // closing fence should be indented less than 4 spaces\n      continue;\n    }\n    pos = state.skipChars(pos, marker);\n    // closing code fence must be at least as long as the opening one\n        if (pos - mem < len) {\n      continue;\n    }\n    // make sure tail has spaces only\n        pos = state.skipSpaces(pos);\n    if (pos < max) {\n      continue;\n    }\n    haveEndMarker = true;\n    // found!\n        break;\n  }\n  // If a fence has heading spaces, they should be removed from its inner block\n    len = state.sCount[startLine];\n  state.line = nextLine + (haveEndMarker ? 1 : 0);\n  token = state.push(\"fence\", \"code\", 0);\n  token.info = params;\n  token.content = state.getLines(startLine + 1, nextLine, len, true);\n  token.markup = markup;\n  token.map = [ startLine, state.line ];\n  token.position = originalPos;\n  token.size = pos - originalPos;\n  return true;\n}\n\n// Block quotes\nfunction blockquote(state, startLine, endLine, silent) {\n  let adjustTab, ch, i, initial, blockStart, l, lastLineEmpty, lines, nextLine, offset, oldBMarks, oldBSCount, oldIndent, oldParentType, oldSCount, oldTShift, spaceAfterMarker, terminate, terminatorRules, token, isOutdented, oldLineMax = state.lineMax, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];\n  // if it's indented more than 3 spaces, it should be a code block\n    if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  // check the block quote marker\n    if (state.src.charCodeAt(pos++) !== 62 /* > */) {\n    return false;\n  }\n  // we know that it's going to be a valid blockquote,\n  // so no point trying to find the end of it in silent mode\n    if (silent) {\n    return true;\n  }\n  // store position for token position/size later on\n    blockStart = pos;\n  // set offset past spaces and \">\"\n    initial = offset = state.sCount[startLine] + 1;\n  // skip one optional space after '>'\n    if (state.src.charCodeAt(pos) === 32 /* space */) {\n    // ' >   test '\n    //     ^ -- position start of line here:\n    pos++;\n    initial++;\n    offset++;\n    adjustTab = false;\n    spaceAfterMarker = true;\n  } else if (state.src.charCodeAt(pos) === 9 /* tab */) {\n    spaceAfterMarker = true;\n    if ((state.bsCount[startLine] + offset) % 4 === 3) {\n      // '  >\\t  test '\n      //       ^ -- position start of line here (tab has width===1)\n      pos++;\n      initial++;\n      offset++;\n      adjustTab = false;\n    } else {\n      // ' >\\t  test '\n      //    ^ -- position start of line here + shift bsCount slightly\n      //         to make extra space appear\n      adjustTab = true;\n    }\n  } else {\n    spaceAfterMarker = false;\n  }\n  oldBMarks = [ state.bMarks[startLine] ];\n  state.bMarks[startLine] = pos;\n  while (pos < max) {\n    ch = state.src.charCodeAt(pos);\n    if (isSpace(ch)) {\n      if (ch === 9) {\n        offset += 4 - (offset + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4;\n      } else {\n        offset++;\n      }\n    } else {\n      break;\n    }\n    pos++;\n  }\n  oldBSCount = [ state.bsCount[startLine] ];\n  state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0);\n  lastLineEmpty = pos >= max;\n  oldSCount = [ state.sCount[startLine] ];\n  state.sCount[startLine] = offset - initial;\n  oldTShift = [ state.tShift[startLine] ];\n  state.tShift[startLine] = pos - state.bMarks[startLine];\n  terminatorRules = state.md.block.ruler.getRules(\"blockquote\");\n  oldParentType = state.parentType;\n  state.parentType = \"blockquote\";\n  // Search the end of the block\n  \n  // Block ends with either:\n  //  1. an empty line outside:\n  //     ```\n  //     > test\n  \n  //     ```\n  //  2. an empty line inside:\n  //     ```\n  //     >\n  //     test\n  //     ```\n  //  3. another tag:\n  //     ```\n  //     > test\n  //      - - -\n  //     ```\n    for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {\n    // check if it's outdented, i.e. it's inside list item and indented\n    // less than said list item:\n    // ```\n    // 1. anything\n    //    > current blockquote\n    // 2. checking this line\n    // ```\n    isOutdented = state.sCount[nextLine] < state.blkIndent;\n    pos = state.bMarks[nextLine] + state.tShift[nextLine];\n    max = state.eMarks[nextLine];\n    if (pos >= max) {\n      // Case 1: line is not inside the blockquote, and this line is empty.\n      break;\n    }\n    if (state.src.charCodeAt(pos++) === 62 /* > */ && !isOutdented) {\n      // This line is inside the blockquote.\n      // set offset past spaces and \">\"\n      initial = offset = state.sCount[nextLine] + 1;\n      // skip one optional space after '>'\n            if (state.src.charCodeAt(pos) === 32 /* space */) {\n        // ' >   test '\n        //     ^ -- position start of line here:\n        pos++;\n        initial++;\n        offset++;\n        adjustTab = false;\n        spaceAfterMarker = true;\n      } else if (state.src.charCodeAt(pos) === 9 /* tab */) {\n        spaceAfterMarker = true;\n        if ((state.bsCount[nextLine] + offset) % 4 === 3) {\n          // '  >\\t  test '\n          //       ^ -- position start of line here (tab has width===1)\n          pos++;\n          initial++;\n          offset++;\n          adjustTab = false;\n        } else {\n          // ' >\\t  test '\n          //    ^ -- position start of line here + shift bsCount slightly\n          //         to make extra space appear\n          adjustTab = true;\n        }\n      } else {\n        spaceAfterMarker = false;\n      }\n      oldBMarks.push(state.bMarks[nextLine]);\n      state.bMarks[nextLine] = pos;\n      while (pos < max) {\n        ch = state.src.charCodeAt(pos);\n        if (isSpace(ch)) {\n          if (ch === 9) {\n            offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n          } else {\n            offset++;\n          }\n        } else {\n          break;\n        }\n        pos++;\n      }\n      lastLineEmpty = pos >= max;\n      oldBSCount.push(state.bsCount[nextLine]);\n      state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\n      oldSCount.push(state.sCount[nextLine]);\n      state.sCount[nextLine] = offset - initial;\n      oldTShift.push(state.tShift[nextLine]);\n      state.tShift[nextLine] = pos - state.bMarks[nextLine];\n      continue;\n    }\n    // Case 2: line is not inside the blockquote, and the last line was empty.\n        if (lastLineEmpty) {\n      break;\n    }\n    // Case 3: another tag found.\n        terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) {\n      // Quirk to enforce \"hard termination mode\" for paragraphs;\n      // normally if you call `tokenize(state, startLine, nextLine)`,\n      // paragraphs will look below nextLine for paragraph continuation,\n      // but if blockquote is terminated by another tag, they shouldn't\n      state.lineMax = nextLine;\n      if (state.blkIndent !== 0) {\n        // state.blkIndent was non-zero, we now set it to zero,\n        // so we need to re-calculate all offsets to appear as\n        // if indent wasn't changed\n        oldBMarks.push(state.bMarks[nextLine]);\n        oldBSCount.push(state.bsCount[nextLine]);\n        oldTShift.push(state.tShift[nextLine]);\n        oldSCount.push(state.sCount[nextLine]);\n        state.sCount[nextLine] -= state.blkIndent;\n      }\n      break;\n    }\n    oldBMarks.push(state.bMarks[nextLine]);\n    oldBSCount.push(state.bsCount[nextLine]);\n    oldTShift.push(state.tShift[nextLine]);\n    oldSCount.push(state.sCount[nextLine]);\n    // A negative indentation means that this is a paragraph continuation\n    \n        state.sCount[nextLine] = -1;\n  }\n  oldIndent = state.blkIndent;\n  state.blkIndent = 0;\n  token = state.push(\"blockquote_open\", \"blockquote\", 1);\n  token.markup = \">\";\n  token.map = lines = [ startLine, 0 ];\n  token.position = blockStart;\n  token.size = pos - blockStart;\n  state.md.block.tokenize(state, startLine, nextLine);\n  token = state.push(\"blockquote_close\", \"blockquote\", -1);\n  token.markup = \">\";\n  token.position = pos;\n  token.size = 0;\n  state.lineMax = oldLineMax;\n  state.parentType = oldParentType;\n  lines[1] = state.line;\n  // Restore original tShift; this might not be necessary since the parser\n  // has already been here, but just to make sure we can do that.\n    for (i = 0; i < oldTShift.length; i++) {\n    state.bMarks[i + startLine] = oldBMarks[i];\n    state.tShift[i + startLine] = oldTShift[i];\n    state.sCount[i + startLine] = oldSCount[i];\n    state.bsCount[i + startLine] = oldBSCount[i];\n  }\n  state.blkIndent = oldIndent;\n  return true;\n}\n\n// Horizontal rule\nfunction hr(state, startLine, endLine, silent) {\n  let marker, cnt, ch, token, originalPos, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];\n  // if it's indented more than 3 spaces, it should be a code block\n    if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  originalPos = pos;\n  marker = state.src.charCodeAt(pos++);\n  // Check hr marker\n    if (marker !== 42 /* * */ && marker !== 45 /* - */ && marker !== 95 /* _ */) {\n    return false;\n  }\n  // markers can be mixed with spaces, but there should be at least 3 of them\n    cnt = 1;\n  while (pos < max) {\n    ch = state.src.charCodeAt(pos++);\n    if (ch !== marker && !isSpace(ch)) {\n      return false;\n    }\n    if (ch === marker) {\n      cnt++;\n    }\n  }\n  if (cnt < 3) {\n    return false;\n  }\n  if (silent) {\n    return true;\n  }\n  state.line = startLine + 1;\n  token = state.push(\"hr\", \"hr\", 0);\n  token.map = [ startLine, state.line ];\n  token.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n  token.position = originalPos;\n  token.size = pos - originalPos;\n  return true;\n}\n\n// Lists\n// Search `[-+*][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipBulletListMarker(state, startLine) {\n  let marker, pos, max, ch;\n  pos = state.bMarks[startLine] + state.tShift[startLine];\n  max = state.eMarks[startLine];\n  marker = state.src.charCodeAt(pos++);\n  // Check bullet\n    if (marker !== 42 /* * */ && marker !== 45 /* - */ && marker !== 43 /* + */) {\n    return -1;\n  }\n  if (pos < max) {\n    ch = state.src.charCodeAt(pos);\n    if (!isSpace(ch)) {\n      // \" -test \" - is not a list item\n      return -1;\n    }\n  }\n  return pos;\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker(state, startLine) {\n  let ch, start = state.bMarks[startLine] + state.tShift[startLine], pos = start, max = state.eMarks[startLine];\n  // List marker should have at least 2 chars (digit + dot)\n    if (pos + 1 >= max) {\n    return -1;\n  }\n  ch = state.src.charCodeAt(pos++);\n  if (ch < 48 /* 0 */ || ch > 57 /* 9 */) {\n    return -1;\n  }\n  for (;;) {\n    // EOL -> fail\n    if (pos >= max) {\n      return -1;\n    }\n    ch = state.src.charCodeAt(pos++);\n    if (ch >= 48 /* 0 */ && ch <= 57 /* 9 */) {\n      // List marker should have no more than 9 digits\n      // (prevents integer overflow in browsers)\n      if (pos - start >= 10) {\n        return -1;\n      }\n      continue;\n    }\n    // found valid marker\n        if (ch === 41 /* ) */ || ch === 46 /* . */) {\n      break;\n    }\n    return -1;\n  }\n  if (pos < max) {\n    ch = state.src.charCodeAt(pos);\n    if (!isSpace(ch)) {\n      // \" 1.test \" - is not a list item\n      return -1;\n    }\n  }\n  return pos;\n}\n\nfunction markTightParagraphs(state, idx) {\n  let i, l, level = state.level + 2;\n  for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n    if (state.tokens[i].level === level && state.tokens[i].type === \"paragraph_open\") {\n      state.tokens[i + 2].hidden = true;\n      state.tokens[i].hidden = true;\n      i += 2;\n    }\n  }\n}\n\nfunction list(state, startLine, endLine, silent) {\n  let ch, contentStart, i, indent, indentAfterMarker, initial, isOrdered, itemLines, l, listLines, listTokIdx, markerCharCode, markerValue, max, nextLine, offset, oldListIndent, oldParentType, oldSCount, oldTShift, oldTight, pos, posAfterMarker, prevEmptyEnd, start, blockStart, terminate, terminatorRules, token, isTerminatingParagraph = false, tight = true;\n  // if it's indented more than 3 spaces, it should be a code block\n    if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  // Special case:\n  //  - item 1\n  //   - item 2\n  //    - item 3\n  //     - item 4\n  //      - this one is a paragraph continuation\n    if (state.listIndent >= 0 && state.sCount[startLine] - state.listIndent >= 4 && state.sCount[startLine] < state.blkIndent) {\n    return false;\n  }\n  // limit conditions when list can interrupt\n  // a paragraph (validation mode only)\n    if (silent && state.parentType === \"paragraph\") {\n    // Next list item should still terminate previous list item;\n    // This code can fail if plugins use blkIndent as well as lists,\n    // but I hope the spec gets fixed long before that happens.\n    if (state.tShift[startLine] >= state.blkIndent) {\n      isTerminatingParagraph = true;\n    }\n  }\n  blockStart = state.bMarks[startLine] + state.tShift[startLine];\n  // Detect list type and position after marker\n    if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {\n    isOrdered = true;\n    start = state.bMarks[startLine] + state.tShift[startLine];\n    markerValue = Number(state.src.substr(start, posAfterMarker - start - 1));\n    // If we're starting a new ordered list right after\n    // a paragraph, it should start with 1.\n        if (isTerminatingParagraph && markerValue !== 1) return false;\n  } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {\n    isOrdered = false;\n  } else {\n    return false;\n  }\n  // If we're starting a new unordered list right after\n  // a paragraph, first line should not be empty.\n    if (isTerminatingParagraph) {\n    if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine]) return false;\n  }\n  // We should terminate list on style change. Remember first one to compare.\n    markerCharCode = state.src.charCodeAt(posAfterMarker - 1);\n  // For validation mode we can terminate immediately\n    if (silent) {\n    return true;\n  }\n  // Start list\n    listTokIdx = state.tokens.length;\n  if (isOrdered) {\n    token = state.push(\"ordered_list_open\", \"ol\", 1);\n    if (markerValue !== 1) {\n      token.attrs = [ [ \"start\", markerValue ] ];\n    }\n  } else {\n    token = state.push(\"bullet_list_open\", \"ul\", 1);\n  }\n  token.map = listLines = [ startLine, 0 ];\n  token.markup = String.fromCharCode(markerCharCode);\n  token.position = blockStart;\n  token.size = state.eMarks[endLine] - blockStart;\n  \n  // Iterate list items\n  \n    nextLine = startLine;\n  prevEmptyEnd = false;\n  terminatorRules = state.md.block.ruler.getRules(\"list\");\n  oldParentType = state.parentType;\n  state.parentType = \"list\";\n  while (nextLine < endLine) {\n    pos = posAfterMarker;\n    max = state.eMarks[nextLine];\n    initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);\n    while (pos < max) {\n      ch = state.src.charCodeAt(pos);\n      if (ch === 9) {\n        offset += 4 - (offset + state.bsCount[nextLine]) % 4;\n      } else if (ch === 32) {\n        offset++;\n      } else {\n        break;\n      }\n      pos++;\n    }\n    contentStart = pos;\n    if (contentStart >= max) {\n      // trimming space in \"-    \\n  3\" case, indent is 1 here\n      indentAfterMarker = 1;\n    } else {\n      indentAfterMarker = offset - initial;\n    }\n    // If we have more than 4 spaces, the indent is 1\n    // (the rest is just indented code block)\n        if (indentAfterMarker > 4) {\n      indentAfterMarker = 1;\n    }\n    // \"  -  test\"\n    //  ^^^^^ - calculating total length of this thing\n        indent = initial + indentAfterMarker;\n    // Run subparser & write tokens\n        token = state.push(\"list_item_open\", \"li\", 1);\n    token.markup = String.fromCharCode(markerCharCode);\n    token.map = itemLines = [ startLine, 0 ];\n    token.position = contentStart;\n    token.size = 0;\n    // change current state, then restore it after parser subcall\n        oldTight = state.tight;\n    oldTShift = state.tShift[startLine];\n    oldSCount = state.sCount[startLine];\n    //  - example list\n    // ^ listIndent position will be here\n    //   ^ blkIndent position will be here\n    \n        oldListIndent = state.listIndent;\n    state.listIndent = state.blkIndent;\n    state.blkIndent = indent;\n    state.tight = true;\n    state.tShift[startLine] = contentStart - state.bMarks[startLine];\n    state.sCount[startLine] = offset;\n    if (contentStart >= max && state.isEmpty(startLine + 1)) {\n      // workaround for this case\n      // (list item is empty, list terminates before \"foo\"):\n      // ~~~~~~~~\n      //   -\n      //     foo\n      // ~~~~~~~~\n      state.line = Math.min(state.line + 2, endLine);\n    } else {\n      state.md.block.tokenize(state, startLine, endLine, true);\n    }\n    // If any of list item is tight, mark list as tight\n        if (!state.tight || prevEmptyEnd) {\n      tight = false;\n    }\n    // Item become loose if finish with empty line,\n    // but we should filter last element, because it means list finish\n        prevEmptyEnd = state.line - startLine > 1 && state.isEmpty(state.line - 1);\n    state.blkIndent = state.listIndent;\n    state.listIndent = oldListIndent;\n    state.tShift[startLine] = oldTShift;\n    state.sCount[startLine] = oldSCount;\n    state.tight = oldTight;\n    token = state.push(\"list_item_close\", \"li\", -1);\n    token.markup = String.fromCharCode(markerCharCode);\n    token.position = state.bMarks[state.line];\n    token.size = 0;\n    nextLine = startLine = state.line;\n    itemLines[1] = nextLine;\n    contentStart = state.bMarks[startLine];\n    if (nextLine >= endLine) {\n      break;\n    }\n    \n    // Try to check if list is terminated or continued.\n    \n        if (state.sCount[nextLine] < state.blkIndent) {\n      break;\n    }\n    // if it's indented more than 3 spaces, it should be a code block\n        if (state.sCount[startLine] - state.blkIndent >= 4) {\n      break;\n    }\n    // fail if terminating block found\n        terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) {\n      break;\n    }\n    // fail if list has another type\n        if (isOrdered) {\n      posAfterMarker = skipOrderedListMarker(state, nextLine);\n      if (posAfterMarker < 0) {\n        break;\n      }\n    } else {\n      posAfterMarker = skipBulletListMarker(state, nextLine);\n      if (posAfterMarker < 0) {\n        break;\n      }\n    }\n    if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) {\n      break;\n    }\n  }\n  // Finalize list\n    if (isOrdered) {\n    token = state.push(\"ordered_list_close\", \"ol\", -1);\n  } else {\n    token = state.push(\"bullet_list_close\", \"ul\", -1);\n  }\n  token.markup = String.fromCharCode(markerCharCode);\n  token.position = state.bMarks[nextLine];\n  token.size = 0;\n  listLines[1] = nextLine;\n  state.line = nextLine;\n  state.parentType = oldParentType;\n  // mark paragraphs tight if needed\n    if (tight) {\n    markTightParagraphs(state, listTokIdx);\n  }\n  return true;\n}\n\nfunction reference(state, startLine, _endLine, silent) {\n  let ch, destEndPos, destEndLineNo, endLine, href, i, l, label, labelEnd, oldParentType, res, start, str, terminate, terminatorRules, title, lines = 0, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine], nextLine = startLine + 1;\n  // if it's indented more than 3 spaces, it should be a code block\n    if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  if (state.src.charCodeAt(pos) !== 91 /* [ */) {\n    return false;\n  }\n  // Simple check to quickly interrupt scan on [link](url) at the start of line.\n  // Can be useful on practice: https://github.com/markdown-it/markdown-it/issues/54\n    while (++pos < max) {\n    if (state.src.charCodeAt(pos) === 93 /* ] */ && state.src.charCodeAt(pos - 1) !== 92 /* \\ */) {\n      if (pos + 1 === max) {\n        return false;\n      }\n      if (state.src.charCodeAt(pos + 1) !== 58 /* : */) {\n        return false;\n      }\n      break;\n    }\n  }\n  endLine = state.lineMax;\n  // jump line-by-line until empty one or EOF\n    terminatorRules = state.md.block.ruler.getRules(\"reference\");\n  oldParentType = state.parentType;\n  state.parentType = \"reference\";\n  for (;nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n    // this would be a code block normally, but after paragraph\n    // it's considered a lazy continuation regardless of what's there\n    if (state.sCount[nextLine] - state.blkIndent > 3) {\n      continue;\n    }\n    // quirk for blockquotes, this line should already be checked by that rule\n        if (state.sCount[nextLine] < 0) {\n      continue;\n    }\n    // Some tags can terminate paragraph without empty line.\n        terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) {\n      break;\n    }\n  }\n  str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n  max = str.length;\n  for (pos = 1; pos < max; pos++) {\n    ch = str.charCodeAt(pos);\n    if (ch === 91 /* [ */) {\n      return false;\n    } else if (ch === 93 /* ] */) {\n      labelEnd = pos;\n      break;\n    } else if (ch === 10 /* \\n */) {\n      lines++;\n    } else if (ch === 92 /* \\ */) {\n      pos++;\n      if (pos < max && str.charCodeAt(pos) === 10) {\n        lines++;\n      }\n    }\n  }\n  if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 58 /* : */) {\n    return false;\n  }\n  // [label]:   destination   'title'\n  //         ^^^ skip optional whitespace here\n    for (pos = labelEnd + 2; pos < max; pos++) {\n    ch = str.charCodeAt(pos);\n    if (ch === 10) {\n      lines++;\n    } else if (isSpace(ch)) ; else {\n      break;\n    }\n  }\n  // [label]:   destination   'title'\n  //            ^^^^^^^^^^^ parse this\n    res = state.md.helpers.parseLinkDestination(str, pos, max);\n  if (!res.ok) {\n    return false;\n  }\n  href = state.md.normalizeLink(res.str);\n  if (!state.md.validateLink(href)) {\n    return false;\n  }\n  pos = res.pos;\n  lines += res.lines;\n  // save cursor state, we could require to rollback later\n    destEndPos = pos;\n  destEndLineNo = lines;\n  // [label]:   destination   'title'\n  //                       ^^^ skipping those spaces\n    start = pos;\n  for (;pos < max; pos++) {\n    ch = str.charCodeAt(pos);\n    if (ch === 10) {\n      lines++;\n    } else if (isSpace(ch)) ; else {\n      break;\n    }\n  }\n  // [label]:   destination   'title'\n  //                          ^^^^^^^ parse this\n    res = state.md.helpers.parseLinkTitle(str, pos, max);\n  if (pos < max && start !== pos && res.ok) {\n    title = res.str;\n    pos = res.pos;\n    lines += res.lines;\n  } else {\n    title = \"\";\n    pos = destEndPos;\n    lines = destEndLineNo;\n  }\n  // skip trailing spaces until the rest of the line\n    while (pos < max) {\n    ch = str.charCodeAt(pos);\n    if (!isSpace(ch)) {\n      break;\n    }\n    pos++;\n  }\n  if (pos < max && str.charCodeAt(pos) !== 10) {\n    if (title) {\n      // garbage at the end of the line after title,\n      // but it could still be a valid reference if we roll back\n      title = \"\";\n      pos = destEndPos;\n      lines = destEndLineNo;\n      while (pos < max) {\n        ch = str.charCodeAt(pos);\n        if (!isSpace(ch)) {\n          break;\n        }\n        pos++;\n      }\n    }\n  }\n  if (pos < max && str.charCodeAt(pos) !== 10) {\n    // garbage at the end of the line\n    return false;\n  }\n  label = normalizeReference(str.slice(1, labelEnd));\n  if (!label) {\n    // CommonMark 0.20 disallows empty labels\n    return false;\n  }\n  // Reference can not terminate anything. This check is for safety only.\n  /*istanbul ignore if*/  if (silent) {\n    return true;\n  }\n  if (typeof state.env === \"undefined\") {\n    state.env = {};\n  }\n  if (typeof state.env.references === \"undefined\") {\n    state.env.references = {};\n  }\n  if (typeof state.env.references[label] === \"undefined\") {\n    state.env.references[label] = {\n      title: title,\n      href: href\n    };\n  }\n  state.parentType = oldParentType;\n  state.line = startLine + lines + 1;\n  return true;\n}\n\n// List of valid html blocks names, according to commonmark spec\n// http://jgm.github.io/CommonMark/spec.html#html-blocks\nvar block_names = [ \"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\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hr\", \"html\", \"iframe\", \"legend\", \"li\", \"link\", \"main\", \"menu\", \"menuitem\", \"nav\", \"noframes\", \"ol\", \"optgroup\", \"option\", \"p\", \"param\", \"section\", \"source\", \"summary\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"title\", \"tr\", \"track\", \"ul\" ];\n\n// Regexps to match html elements\nconst attr_name = \"[a-zA-Z_:@][a-zA-Z0-9:._-]*\";\n\nconst unquoted = \"[^\\\"'=<>`\\\\x00-\\\\x20]+\";\n\nconst single_quoted = \"'[^']*'\";\n\nconst double_quoted = '\"[^\"]*\"';\n\nconst attr_value = \"(?:\" + unquoted + \"|\" + single_quoted + \"|\" + double_quoted + \")\";\n\nconst attribute = \"(?:\\\\s+\" + attr_name + \"(?:\\\\s*=\\\\s*\" + attr_value + \")?)\";\n\nconst open_tag = \"<[A-Za-z][A-Za-z0-9\\\\-]*\" + attribute + \"*\\\\s*\\\\/?>\";\n\nconst close_tag = \"<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>\";\n\nconst comment = \"\\x3c!----\\x3e|\\x3c!--(?:-?[^>-])(?:-?[^-])*--\\x3e\";\n\nconst processing = \"<[?][\\\\s\\\\S]*?[?]>\";\n\nconst declaration = \"<![A-Z]+\\\\s+[^>]*>\";\n\nconst cdata = \"<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\";\n\nconst HTML_TAG_RE = new RegExp(\"^(?:\" + open_tag + \"|\" + close_tag + \"|\" + comment + \"|\" + processing + \"|\" + declaration + \"|\" + cdata + \")\");\n\nconst HTML_OPEN_CLOSE_TAG_RE = new RegExp(\"^(?:\" + open_tag + \"|\" + close_tag + \")\");\n\n// HTML block\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n\nconst HTML_SEQUENCES = [ [ /^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true ], [ /^<!--/, /-->/, true ], [ /^<\\?/, /\\?>/, true ], [ /^<![A-Z]/, />/, true ], [ /^<!\\[CDATA\\[/, /\\]\\]>/, true ], [ new RegExp(\"^</?(?:\" + block_names.join(\"|\") + \")(?=(\\\\s|/?>|$))\", \"i\"), /^$/, true ], [ new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + \"\\\\s*$\"), /^$/, false ] ];\n\nfunction html_block(state, startLine, endLine, silent) {\n  let i, nextLine, token, lineText, blockStart, pos = blockStart = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];\n  // if it's indented more than 3 spaces, it should be a code block\n    if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  if (!state.md.options.html) {\n    return false;\n  }\n  if (state.src.charCodeAt(pos) !== 60 /* < */) {\n    return false;\n  }\n  lineText = state.src.slice(pos, max);\n  for (i = 0; i < HTML_SEQUENCES.length; i++) {\n    if (HTML_SEQUENCES[i][0].test(lineText)) {\n      break;\n    }\n  }\n  if (i === HTML_SEQUENCES.length) {\n    return false;\n  }\n  if (silent) {\n    // true if this sequence can be a terminator, false otherwise\n    return HTML_SEQUENCES[i][2];\n  }\n  nextLine = startLine + 1;\n  // If we are here - we detected HTML block.\n  // Let's roll down till block end.\n    if (!HTML_SEQUENCES[i][1].test(lineText)) {\n    for (;nextLine < endLine; nextLine++) {\n      if (state.sCount[nextLine] < state.blkIndent) {\n        break;\n      }\n      pos = state.bMarks[nextLine] + state.tShift[nextLine];\n      max = state.eMarks[nextLine];\n      lineText = state.src.slice(pos, max);\n      if (HTML_SEQUENCES[i][1].test(lineText)) {\n        if (lineText.length !== 0) {\n          nextLine++;\n        }\n        break;\n      }\n    }\n  }\n  state.line = nextLine;\n  token = state.push(\"html_block\", \"\", 0);\n  token.map = [ startLine, nextLine ];\n  token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n  token.position = blockStart;\n  token.size = state.bMarks[nextLine] - blockStart;\n  return true;\n}\n\n// heading (#, ##, ...)\nfunction heading(state, startLine, endLine, silent) {\n  let ch, level, tmp, token, originalPos, originalMax, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];\n  // if it's indented more than 3 spaces, it should be a code block\n    if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  ch = state.src.charCodeAt(pos);\n  originalPos = pos;\n  originalMax = max;\n  if (ch !== 35 /* # */ || pos >= max) {\n    return false;\n  }\n  // count heading level\n    level = 1;\n  ch = state.src.charCodeAt(++pos);\n  while (ch === 35 /* # */ && pos < max && level <= 6) {\n    level++;\n    ch = state.src.charCodeAt(++pos);\n  }\n  if (level > 6 || pos < max && !isSpace(ch)) {\n    return false;\n  }\n  if (silent) {\n    return true;\n  }\n  // Let's cut tails like '    ###  ' from the end of string\n    max = state.skipSpacesBack(max, pos);\n  tmp = state.skipCharsBack(max, 35, pos);\n // #\n    if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n    max = tmp;\n  }\n  state.line = startLine + 1;\n  token = state.push(\"heading_open\", \"h\" + String(level), 1);\n  token.markup = \"########\".slice(0, level);\n  token.map = [ startLine, state.line ];\n  token.position = originalPos;\n  token.size = pos - originalPos;\n  const originalContent = state.src.slice(pos, max);\n  token = state.push(\"inline\", \"\", 0);\n  token.content = originalContent.trim();\n  token.map = [ startLine, state.line ];\n  token.children = [];\n  token.position = pos + trimLeftOffset(originalContent);\n  token.size = token.content.length;\n // (max - pos) includes leading and trailing whitespace\n    token = state.push(\"heading_close\", \"h\" + String(level), -1);\n  token.markup = \"########\".slice(0, level);\n  token.position = max;\n  token.size = originalMax - max;\n  return true;\n}\n\n// lheading (---, ===)\nfunction lheading(state, startLine, endLine /*, silent*/) {\n  let content, terminate, i, l, token, pos, max, level, marker, nextLine = startLine + 1, oldParentType, terminatorRules = state.md.block.ruler.getRules(\"paragraph\");\n  // if it's indented more than 3 spaces, it should be a code block\n    if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  oldParentType = state.parentType;\n  state.parentType = \"paragraph\";\n // use paragraph to match terminatorRules\n  // jump line-by-line until empty one or EOF\n    for (;nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n    // this would be a code block normally, but after paragraph\n    // it's considered a lazy continuation regardless of what's there\n    if (state.sCount[nextLine] - state.blkIndent > 3) {\n      continue;\n    }\n    \n    // Check for underline in setext header\n    \n        if (state.sCount[nextLine] >= state.blkIndent) {\n      pos = state.bMarks[nextLine] + state.tShift[nextLine];\n      max = state.eMarks[nextLine];\n      if (pos < max) {\n        marker = state.src.charCodeAt(pos);\n        if (marker === 45 /* - */ || marker === 61 /* = */) {\n          pos = state.skipChars(pos, marker);\n          pos = state.skipSpaces(pos);\n          if (pos >= max) {\n            level = marker === 61 /* = */ ? 1 : 2;\n            break;\n          }\n        }\n      }\n    }\n    // quirk for blockquotes, this line should already be checked by that rule\n        if (state.sCount[nextLine] < 0) {\n      continue;\n    }\n    // Some tags can terminate paragraph without empty line.\n        terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) {\n      break;\n    }\n  }\n  if (!level) {\n    // Didn't find valid underline\n    return false;\n  }\n  content = state.getLines(startLine, nextLine, state.blkIndent, false);\n  state.line = nextLine + 1;\n  token = state.push(\"heading_open\", \"h\" + String(level), 1);\n  token.markup = String.fromCharCode(marker);\n  token.map = [ startLine, state.line ];\n  token.position = state.bMarks[startLine];\n  token.size = 0;\n  token = state.push(\"inline\", \"\", 0);\n  token.content = content.trim();\n  token.map = [ startLine, state.line - 1 ];\n  token.children = [];\n  token.position = state.bMarks[startLine] + trimLeftOffset(content);\n  token.size = token.content.length;\n // content.length includes leading and trailing whitespace\n    token = state.push(\"heading_close\", \"h\" + String(level), -1);\n  token.markup = String.fromCharCode(marker);\n  token.position = state.bMarks[state.line - 1];\n  token.size = state.bMarks[state.line] - state.bMarks[state.line - 1];\n  state.parentType = oldParentType;\n  return true;\n}\n\n// Paragraph\nfunction paragraph(state, startLine /*, endLine*/) {\n  let content, terminate, i, l, token, oldParentType, nextLine = startLine + 1, terminatorRules = state.md.block.ruler.getRules(\"paragraph\"), endLine = state.lineMax, pos = state.bMarks[startLine];\n  oldParentType = state.parentType;\n  state.parentType = \"paragraph\";\n  // jump line-by-line until empty one or EOF\n    for (;nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n    // this would be a code block normally, but after paragraph\n    // it's considered a lazy continuation regardless of what's there\n    if (state.sCount[nextLine] - state.blkIndent > 3) {\n      continue;\n    }\n    // quirk for blockquotes, this line should already be checked by that rule\n        if (state.sCount[nextLine] < 0) {\n      continue;\n    }\n    // Some tags can terminate paragraph without empty line.\n        terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) {\n      break;\n    }\n  }\n  content = state.getLines(startLine, nextLine, state.blkIndent, false);\n  state.line = nextLine;\n  token = state.push(\"paragraph_open\", \"p\", 1);\n  token.map = [ startLine, state.line ];\n  token.position = pos;\n  token.size = 0;\n  token = state.push(\"inline\", \"\", 0);\n  token.content = content.trim();\n  token.map = [ startLine, state.line ];\n  token.children = [];\n  token.position = pos + state.tShift[startLine] + trimLeftOffset(content);\n  token.size = token.content.length;\n  token = state.push(\"paragraph_close\", \"p\", -1);\n  token.size = 0;\n  token.position = content.length + pos + state.tShift[startLine];\n  state.parentType = oldParentType;\n  return true;\n}\n\n// Parser state class\nfunction StateBlock(src, md, env, tokens) {\n  let ch, s, start, pos, len, indent, offset, indent_found;\n  this.src = src;\n  // link to parser instance\n    this.md = md;\n  this.env = env;\n  if (env) {\n    env.state_block = this;\n  } else {\n    this.env = {\n      state_block: this\n    };\n  }\n  \n  // Internal state vartiables\n  \n    this.tokens = tokens;\n  this.bMarks = [];\n // line begin offsets for fast jumps\n    this.eMarks = [];\n // line end offsets for fast jumps\n    this.tShift = [];\n // offsets of the first non-space characters (tabs not expanded)\n    this.sCount = [];\n // indents for each line (tabs expanded)\n  // An amount of virtual spaces (tabs expanded) between beginning\n  // of each line (bMarks) and real beginning of that line.\n  \n  // It exists only as a hack because blockquotes override bMarks\n  // losing information in the process.\n  \n  // It's used only when expanding tabs, you can think about it as\n  // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n  // means first tab should be expanded to 4-21%4 === 3 spaces.\n  \n    this.bsCount = [];\n  // block parser variables\n    this.blkIndent = 0;\n // required block content indent (for example, if we are\n  // inside a list, it would be positioned after list marker)\n    this.line = 0;\n // line index in src\n    this.lineMax = 0;\n // lines count\n    this.tight = false;\n // loose/tight mode for lists\n    this.ddIndent = -1;\n // indent of the current dd block (-1 if there isn't any)\n    this.listIndent = -1;\n // indent of the current list block (-1 if there isn't any)\n  // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n  // used in lists to determine if they interrupt a paragraph\n    this.parentType = \"root\";\n  this.level = 0;\n  // renderer\n    this.result = \"\";\n  // Create caches\n  // Generate markers.\n    s = this.src;\n  indent_found = false;\n  for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {\n    ch = s.charCodeAt(pos);\n    if (!indent_found) {\n      if (isSpace(ch)) {\n        indent++;\n        if (ch === 9) {\n          offset += 4 - offset % 4;\n        } else {\n          offset++;\n        }\n        continue;\n      } else {\n        indent_found = true;\n      }\n    }\n    if (ch === 10 || pos === len - 1) {\n      if (ch !== 10) {\n        pos++;\n      }\n      this.bMarks.push(start);\n      this.eMarks.push(pos);\n      this.tShift.push(indent);\n      this.sCount.push(offset);\n      this.bsCount.push(0);\n      indent_found = false;\n      indent = 0;\n      offset = 0;\n      start = pos + 1;\n    }\n  }\n  // Push fake entry to simplify cache bounds checks\n    this.bMarks.push(s.length);\n  this.eMarks.push(s.length);\n  this.tShift.push(0);\n  this.sCount.push(0);\n  this.bsCount.push(0);\n  this.lineMax = this.bMarks.length - 1;\n // don't count last fake line\n}\n\n// Push new token to \"stream\".\n\nStateBlock.prototype.push = function(type, tag, nesting) {\n  const token = new Token(type, tag, nesting);\n  token.block = true;\n  if (nesting < 0) this.level--;\n // closing tag\n    token.level = this.level;\n  if (nesting > 0) this.level++;\n // opening tag\n    this.tokens.push(token);\n  return token;\n};\n\nStateBlock.prototype.isEmpty = function isEmpty(line) {\n  return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n};\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n  for (let max = this.lineMax; from < max; from++) {\n    if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n      break;\n    }\n  }\n  return from;\n};\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n  let ch;\n  for (let max = this.src.length; pos < max; pos++) {\n    ch = this.src.charCodeAt(pos);\n    if (!isSpace(ch)) {\n      break;\n    }\n  }\n  return pos;\n};\n\n// Skip spaces from given position in reverse.\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {\n  if (pos <= min) {\n    return pos;\n  }\n  while (pos > min) {\n    if (!isSpace(this.src.charCodeAt(--pos))) {\n      return pos + 1;\n    }\n  }\n  return pos;\n};\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars(pos, code) {\n  for (let max = this.src.length; pos < max; pos++) {\n    if (this.src.charCodeAt(pos) !== code) {\n      break;\n    }\n  }\n  return pos;\n};\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n  if (pos <= min) {\n    return pos;\n  }\n  while (pos > min) {\n    if (code !== this.src.charCodeAt(--pos)) {\n      return pos + 1;\n    }\n  }\n  return pos;\n};\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n  let i, lineIndent, ch, first, last, queue, lineStart, line = begin;\n  if (begin >= end) {\n    return \"\";\n  }\n  queue = new Array(end - begin);\n  for (i = 0; line < end; line++, i++) {\n    lineIndent = 0;\n    lineStart = first = this.bMarks[line];\n    if (line + 1 < end || keepLastLF) {\n      // No need for bounds check because we have fake entry on tail.\n      last = this.eMarks[line] + 1;\n    } else {\n      last = this.eMarks[line];\n    }\n    while (first < last && lineIndent < indent) {\n      ch = this.src.charCodeAt(first);\n      if (isSpace(ch)) {\n        if (ch === 9) {\n          lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;\n        } else {\n          lineIndent++;\n        }\n      } else if (first - lineStart < this.tShift[line]) {\n        // patched tShift masked characters to look like spaces (blockquotes, list markers)\n        lineIndent++;\n      } else {\n        break;\n      }\n      first++;\n    }\n    if (lineIndent > indent) {\n      // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n      // with indent=2 becomes '  \\tfoobar'\n      queue[i] = new Array(lineIndent - indent + 1).join(\" \") + this.src.slice(first, last);\n    } else {\n      queue[i] = this.src.slice(first, last);\n    }\n  }\n  return queue.join(\"\");\n};\n\n// re-export Token class to use in block rules\nStateBlock.prototype.Token = Token;\n\n/** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/ const _rules$1 = [ \n// First 2 params - rule name & source. Secondary array - list of rules,\n// which can be terminated by this one.\n[ \"table\", table, [ \"paragraph\", \"reference\" ] ], [ \"code\", code ], [ \"fence\", fence, [ \"paragraph\", \"reference\", \"blockquote\", \"list\" ] ], [ \"blockquote\", blockquote, [ \"paragraph\", \"reference\", \"blockquote\", \"list\" ] ], [ \"hr\", hr, [ \"paragraph\", \"reference\", \"blockquote\", \"list\" ] ], [ \"list\", list, [ \"paragraph\", \"reference\", \"blockquote\", \"table\" ] ], [ \"reference\", reference ], [ \"html_block\", html_block, [ \"paragraph\", \"reference\", \"blockquote\" ] ], [ \"heading\", heading, [ \"paragraph\", \"reference\", \"blockquote\" ] ], [ \"lheading\", lheading ], [ \"paragraph\", paragraph ] ];\n\n/**\n * new ParserBlock()\n **/ function ParserBlock() {\n  /**\n   * ParserBlock#ruler -> Ruler\n   *\n   * [[Ruler]] instance. Keep configuration of block rules.\n   **/\n  this.ruler = new Ruler;\n  for (let i = 0; i < _rules$1.length; i++) {\n    this.ruler.push(_rules$1[i][0], _rules$1[i][1], {\n      alt: (_rules$1[i][2] || []).slice()\n    });\n  }\n}\n\n// Generate tokens for input range\n\nParserBlock.prototype.tokenize = function(state, startLine, endLine) {\n  let ok, i, rules = this.ruler.getRules(\"\"), len = rules.length, line = startLine, hasEmptyLines = false, maxNesting = state.md.options.maxNesting;\n  while (line < endLine) {\n    state.line = line = state.skipEmptyLines(line);\n    if (line >= endLine) {\n      break;\n    }\n    // Termination condition for nested calls.\n    // Nested calls currently used for blockquotes & lists\n        if (state.sCount[line] < state.blkIndent) {\n      break;\n    }\n    // If nesting level exceeded - skip tail to the end. That's not ordinary\n    // situation and we should not care about content.\n        if (state.level >= maxNesting) {\n      state.line = endLine;\n      break;\n    }\n    // Try all possible rules.\n    // On success, rule should:\n    \n    // - update `state.line`\n    // - update `state.tokens`\n    // - return true\n        for (i = 0; i < len; i++) {\n      ok = rules[i](state, line, endLine, false);\n      if (ok) {\n        break;\n      }\n    }\n    // set state.tight if we had an empty line before current tag\n    // i.e. latest empty line should not count\n        state.tight = !hasEmptyLines;\n    // paragraph might \"eat\" one newline after it in nested lists\n        if (state.isEmpty(state.line - 1)) {\n      hasEmptyLines = true;\n    }\n    line = state.line;\n    if (line < endLine && state.isEmpty(line)) {\n      hasEmptyLines = true;\n      line++;\n      state.line = line;\n    }\n  }\n};\n\n/**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/ ParserBlock.prototype.parse = function(src, md, env, outTokens) {\n  let state;\n  if (!src) {\n    return;\n  }\n  state = new this.State(src, md, env, outTokens);\n  this.tokenize(state, state.line, state.lineMax);\n};\n\nParserBlock.prototype.State = StateBlock;\n\n// Handle implicit links found by rules_core/linkify that were not yet\n// subsumed by other inline rules (backticks, link, etc.)\nconst tokenize$2 = function linkify(state, silent) {\n  let link, url, fullUrl, urlText, token;\n  const oldPos = state.pos;\n  if (state.links) {\n    link = state.links[oldPos];\n  }\n  if (!link) {\n    return false;\n  }\n  url = link.url;\n  fullUrl = state.md.normalizeLink(url);\n  if (!state.md.validateLink(fullUrl)) {\n    return false;\n  }\n  urlText = link.text;\n  // Linkifier might send raw hostnames like \"example.com\", where url\n  // starts with domain name. So we prepend http:// in those cases,\n  // and remove it afterwards.\n  \n    if (!link.schema) {\n    urlText = state.md.normalizeLinkText(\"http://\" + urlText).replace(/^http:\\/\\//, \"\");\n  } else if (link.schema === \"mailto:\" && !/^mailto:/i.test(urlText)) {\n    urlText = state.md.normalizeLinkText(\"mailto:\" + urlText).replace(/^mailto:/, \"\");\n  } else {\n    urlText = state.md.normalizeLinkText(urlText);\n  }\n  if (!silent) {\n    const linkInfo = {\n      url: link,\n      fullUrl: fullUrl,\n      urlText: urlText\n    };\n    token = state.push(\"link_open\", \"a\", 1);\n    token.attrs = [ [ \"href\", fullUrl ] ];\n    token.markup = \"linkify\";\n    token.info = \"auto\";\n    token.__linkInfo = linkInfo;\n    token.position = oldPos;\n    token.size = 0;\n    token = state.push(\"text\", \"\", 0);\n    token.content = urlText;\n    token.position = oldPos;\n    token.size = link.lastIndex - oldPos;\n    token = state.push(\"link_close\", \"a\", -1);\n    token.markup = \"linkify\";\n    token.info = \"auto\";\n    token.__linkInfo = linkInfo;\n    token.position = link.lastIndex;\n    token.size = 0;\n  }\n  state.pos = link.lastIndex;\n  return true;\n};\n\n// Set state.links to an index from position to links, if links found\nconst preProcess = function linkify(state) {\n  let links, i;\n  if (!state.md.options.linkify || !state.md.linkify.pretest(state.src)) {\n    return;\n  }\n  links = state.md.linkify.match(state.src);\n  if (!links || !links.length) {\n    return;\n  }\n  state.links = {};\n  for (i = 0; i < links.length; i++) {\n    state.links[links[i].index] = links[i];\n  }\n};\n\nfunction isLinkOpen(str) {\n  return /^<a[>\\s]/i.test(str);\n}\n\nfunction isLinkClose(str) {\n  return /^<\\/a\\s*>/i.test(str);\n}\n\n// Remove linkify links if already inside\nconst postProcess$2 = function linkify(state) {\n  let i, len, token, linkLevel = 0, htmlLinkLevel = 0;\n  len = state.tokens.length;\n  for (i = 0; i < len; i++) {\n    token = state.tokens[i];\n    // Transform into empty tokens any linkify open/close tags inside links\n        if (token.markup === \"linkify\") {\n      if (linkLevel > 0 || htmlLinkLevel > 0) {\n        if (token.type === \"link_open\") {\n          state.tokens[i + 1].level--;\n        }\n        token.type = \"text\";\n        token.attrs = token.markup = token.info = null;\n        token.nesting = 0;\n        token.content = \"\";\n      }\n      continue;\n    }\n    // Skip content of markdown links\n        if (token.type === \"link_open\") {\n      linkLevel++;\n    } else if (token.type === \"link_close\" && linkLevel > 0) {\n      linkLevel--;\n    }\n    // Skip content of html tag links\n        if (token.type === \"html_inline\") {\n      if (isLinkOpen(token.content)) {\n        htmlLinkLevel++;\n      }\n      if (isLinkClose(token.content) && htmlLinkLevel > 0) {\n        htmlLinkLevel--;\n      }\n    }\n  }\n};\n\n// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n// Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\nfunction isTerminatorChar(ch) {\n  switch (ch) {\n   case 10 /* \\n */ :\n   case 33 /* ! */ :\n   case 35 /* # */ :\n   case 36 /* $ */ :\n   case 37 /* % */ :\n   case 38 /* & */ :\n   case 42 /* * */ :\n   case 43 /* + */ :\n   case 45 /* - */ :\n   case 58 /* : */ :\n   case 60 /* < */ :\n   case 61 /* = */ :\n   case 62 /* > */ :\n   case 64 /* @ */ :\n   case 91 /* [ */ :\n   case 92 /* \\ */ :\n   case 47 /* / */ :\n   case 93 /* ] */ :\n   case 94 /* ^ */ :\n   case 95 /* _ */ :\n   case 96 /* ` */ :\n   case 123 /* { */ :\n   case 124 /* | */ :\n   case 125 /* } */ :\n   case 126 /* ~ */ :\n    return true;\n\n   default:\n    return false;\n  }\n}\n\nfunction text(state, silent) {\n  let pos = state.pos;\n  const terminatorRe = state.md.options.inlineTokenTerminatorsRe;\n  if (!terminatorRe) {\n    while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos)) && (!state.links || !state.links[pos])) {\n      pos++;\n    }\n  } else {\n    while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos)) && !terminatorRe.test(state.src[pos]) && (!state.links || !state.links[pos])) {\n      pos++;\n    }\n  }\n  if (pos === state.pos) {\n    return false;\n  }\n  if (!silent) {\n    state.pending += state.src.slice(state.pos, pos);\n  }\n  state.pos = pos;\n  return true;\n}\n\n// Alternative implementation, for memory.\n\n// It costs 10% of performance, but allows extend terminators list, if place it\n// to `ParserInline` property. Probably will switch to it sometime, such\n// flexibility required.\n/*\nvar TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n\nexport function text(state, silent) {\n  var pos = state.pos,\n      idx = state.src.slice(pos).search(TERMINATOR_RE);\n\n  // first char is terminator -> empty text\n  if (idx === 0) { return false; }\n\n  // no terminator -> text till end of string\n  if (idx < 0) {\n    if (!silent) { state.pending += state.src.slice(pos); }\n    state.pos = state.src.length;\n    return true;\n  }\n\n  if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n\n  state.pos += idx;\n\n  return true;\n};*/\n// Process '\\n'\nfunction newline(state, silent) {\n  let pmax, max, pos = state.pos;\n  if (state.src.charCodeAt(pos) !== 10 /* \\n */) {\n    return false;\n  }\n  pmax = state.pending.length - 1;\n  max = state.posMax;\n  // '  \\n' -> hardbreak\n  // Lookup in pending chars is bad practice! Don't copy to other rules!\n  // Pending string is stored in concat mode, indexed lookups will cause\n  // convertion to flat mode.\n    if (!silent) {\n    let token;\n    if (pmax >= 0 && state.pending.charCodeAt(pmax) === 32) {\n      if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 32) {\n        state.pending = state.pending.replace(/ +$/, \"\");\n        token = state.push(\"hardbreak\", \"br\", 0);\n      } else {\n        state.pending = state.pending.slice(0, -1);\n        token = state.push(\"softbreak\", \"br\", 0);\n      }\n    } else {\n      token = state.push(\"softbreak\", \"br\", 0);\n    }\n    token.position = pos;\n    token.size = 1;\n  }\n  pos++;\n  // skip heading spaces for next line\n    while (pos < max && isSpace(state.src.charCodeAt(pos))) {\n    pos++;\n  }\n  state.pos = pos;\n  return true;\n}\n\n// Process escaped chars and hardbreaks\nconst ESCAPED = [];\n\nfor (let i = 0; i < 256; i++) {\n  ESCAPED.push(0);\n}\n\n\"\\\\!\\\"#$%&'()*+,./:;<=>?@[]^_`{|}~-\".split(\"\").forEach((function(ch) {\n  ESCAPED[ch.charCodeAt(0)] = 1;\n}));\n\nfunction escape(state, silent) {\n  let ch, pos = state.pos, max = state.posMax;\n  if (state.src.charCodeAt(pos) !== 92 /* \\ */) {\n    return false;\n  }\n  pos++;\n  if (pos < max) {\n    ch = state.src.charCodeAt(pos);\n    if (ch < 256 && ESCAPED[ch] !== 0) {\n      if (!silent) {\n        state.pending += state.src[pos];\n      }\n      state.pos += 2;\n      return true;\n    }\n    if (ch === 10) {\n      if (!silent) {\n        const token = state.push(\"hardbreak\", \"br\", 0);\n        token.position = pos;\n        token.size = 1;\n      }\n      pos++;\n      // skip leading whitespaces from next line\n            while (pos < max) {\n        ch = state.src.charCodeAt(pos);\n        if (!isSpace(ch)) {\n          break;\n        }\n        pos++;\n      }\n      state.pos = pos;\n      return true;\n    }\n  }\n  if (!silent) {\n    state.pending += \"\\\\\";\n  }\n  state.pos++;\n  return true;\n}\n\n// Parse backticks\nfunction backtick(state, silent) {\n  let start, max, marker, token, matchStart, matchEnd, openerLength, closerLength, pos = state.pos, ch = state.src.charCodeAt(pos);\n  if (ch !== 96 /* ` */) {\n    return false;\n  }\n  start = pos;\n  pos++;\n  max = state.posMax;\n  // scan marker length\n    while (pos < max && state.src.charCodeAt(pos) === 96 /* ` */) {\n    pos++;\n  }\n  marker = state.src.slice(start, pos);\n  openerLength = marker.length;\n  if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n    if (!silent) state.pending += marker;\n    state.pos += openerLength;\n    return true;\n  }\n  matchStart = matchEnd = pos;\n  // Nothing found in the cache, scan until the end of the line (or until marker is found)\n    while ((matchStart = state.src.indexOf(\"`\", matchEnd)) !== -1) {\n    matchEnd = matchStart + 1;\n    // scan marker length\n        while (matchEnd < max && state.src.charCodeAt(matchEnd) === 96 /* ` */) {\n      matchEnd++;\n    }\n    closerLength = matchEnd - matchStart;\n    if (closerLength === openerLength) {\n      // Found matching closer length.\n      if (!silent) {\n        token = state.push(\"code_inline\", \"code\", 0);\n        token.markup = marker;\n        const originalContent = state.src.slice(pos, matchStart);\n        token.content = originalContent.replace(/\\n/g, \" \").replace(/^ (.+) $/, \"$1\");\n        token.position = pos + (originalContent.length - token.content.length) / 2;\n        token.size = token.content.length;\n      }\n      state.pos = matchEnd;\n      return true;\n    }\n    // Some different length found, put it in cache as upper limit of where closer can be found\n        state.backticks[closerLength] = matchStart;\n  }\n  // Scanned through the end, didn't find anything\n    state.backticksScanned = true;\n  if (!silent) state.pending += marker;\n  state.pos += openerLength;\n  return true;\n}\n\n// ~~strike through~~\n// Insert each marker as a separate text token, and add it to delimiter list\n\nfunction tokenize$1(state, silent) {\n  let i, scanned, token, len, ch, offset, start = state.pos, marker = state.src.charCodeAt(start);\n  if (silent) {\n    return false;\n  }\n  if (marker !== 126 /* ~ */) {\n    return false;\n  }\n  scanned = state.scanDelims(state.pos, true);\n  len = scanned.length;\n  ch = String.fromCharCode(marker);\n  if (len < 2) {\n    return false;\n  }\n  offset = 0;\n  if (len % 2) {\n    token = state.push(\"text\", \"\", 0);\n    token.content = ch;\n    token.position = start;\n    token.size = 1;\n    offset = 1;\n    len--;\n  }\n  for (i = 0; i < len; i += 2) {\n    token = state.push(\"text\", \"\", 0);\n    token.content = ch + ch;\n    token.position = start + i + offset;\n    token.size = 2;\n    state.delimiters.push({\n      marker: marker,\n      position: start,\n      length: 0,\n      // disable \"rule of 3\" length checks meant for emphasis\n      jump: i / 2,\n      // for `~~` 1 marker = 2 characters\n      token: state.tokens.length - 1,\n      end: -1,\n      open: scanned.can_open,\n      close: scanned.can_close\n    });\n  }\n  state.pos += scanned.length;\n  return true;\n}\n\nfunction __postProcess$1(state, delimiters) {\n  let i, j, startDelim, endDelim, token, loneMarkers = [], max = delimiters.length;\n  for (i = 0; i < max; i++) {\n    startDelim = delimiters[i];\n    if (startDelim.marker !== 126 /* ~ */) {\n      continue;\n    }\n    if (startDelim.end === -1) {\n      continue;\n    }\n    endDelim = delimiters[startDelim.end];\n    token = state.tokens[startDelim.token];\n    token.type = \"s_open\";\n    token.tag = \"s\";\n    token.nesting = 1;\n    token.markup = \"~~\";\n    token.content = \"\";\n    token.position = startDelim.position + getLineOffset(state, startDelim.token);\n    token = state.tokens[endDelim.token];\n    token.type = \"s_close\";\n    token.tag = \"s\";\n    token.nesting = -1;\n    token.markup = \"~~\";\n    token.content = \"\";\n    if (state.tokens[endDelim.token - 1].type === \"text\" && state.tokens[endDelim.token - 1].content === \"~\") {\n      loneMarkers.push(endDelim.token - 1);\n    }\n  }\n  // If a marker sequence has an odd number of characters, it's splitted\n  // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n  // start of the sequence.\n  \n  // So, we have to move all those markers after subsequent s_close tags.\n  \n    while (loneMarkers.length) {\n    i = loneMarkers.pop();\n    j = i + 1;\n    while (j < state.tokens.length && state.tokens[j].type === \"s_close\") {\n      j++;\n    }\n    j--;\n    if (i !== j) {\n      token = state.tokens[j];\n      state.tokens[j] = state.tokens[i];\n      state.tokens[i] = token;\n    }\n  }\n}\n\n// Walk through delimiter list and replace text tokens with tags\n\nfunction postProcess$1(state) {\n  let curr, tokens_meta = state.tokens_meta, max = state.tokens_meta.length;\n  __postProcess$1(state, state.delimiters);\n  for (curr = 0; curr < max; curr++) {\n    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n      __postProcess$1(state, tokens_meta[curr].delimiters);\n    }\n  }\n}\n\n// Process *this* and _that_\n// Insert each marker as a separate text token, and add it to delimiter list\n\nfunction tokenize(state, silent) {\n  let i, scanned, token, start = state.pos, marker = state.src.charCodeAt(start);\n  if (silent) {\n    return false;\n  }\n  if (marker !== 95 /* _ */ && marker !== 42 /* * */) {\n    return false;\n  }\n  scanned = state.scanDelims(state.pos, marker === 42);\n  for (i = 0; i < scanned.length; i++) {\n    token = state.push(\"text\", \"\", 0);\n    token.content = String.fromCharCode(marker);\n    token.position = state.pos;\n    token.size = token.content.length;\n    state.delimiters.push({\n      position: state.pos,\n      // Char code of the starting marker (number).\n      marker: marker,\n      // Total length of these series of delimiters.\n      length: scanned.length,\n      // An amount of characters before this one that's equivalent to\n      // current one. In plain English: if this delimiter does not open\n      // an emphasis, neither do previous `jump` characters.\n      // Used to skip sequences like \"*****\" in one step, for 1st asterisk\n      // value will be 0, for 2nd it's 1 and so on.\n      jump: i,\n      // A position of the token this delimiter corresponds to.\n      token: state.tokens.length - 1,\n      // If this delimiter is matched as a valid opener, `end` will be\n      // equal to its position, otherwise it's `-1`.\n      end: -1,\n      // Boolean flags that determine if this delimiter could open or close\n      // an emphasis.\n      open: scanned.can_open,\n      close: scanned.can_close\n    });\n  }\n  state.pos += scanned.length;\n  return true;\n}\n\nfunction __postProcess(state, delimiters) {\n  let i, startDelim, endDelim, token, ch, isStrong, max = delimiters.length;\n  for (i = max - 1; i >= 0; i--) {\n    startDelim = delimiters[i];\n    if (startDelim.marker !== 95 /* _ */ && startDelim.marker !== 42 /* * */) {\n      continue;\n    }\n    // Process only opening markers\n        if (startDelim.end === -1) {\n      continue;\n    }\n    endDelim = delimiters[startDelim.end];\n    // If the previous delimiter has the same marker and is adjacent to this one,\n    // merge those into one strong delimiter.\n    \n    // `<em><em>whatever</em></em>` -> `<strong>whatever</strong>`\n    \n        isStrong = i > 0 && delimiters[i - 1].end === startDelim.end + 1 && delimiters[i - 1].token === startDelim.token - 1 && delimiters[startDelim.end + 1].token === endDelim.token + 1 && delimiters[i - 1].marker === startDelim.marker;\n    ch = String.fromCharCode(startDelim.marker);\n    token = state.tokens[startDelim.token];\n    token.type = isStrong ? \"strong_open\" : \"em_open\";\n    token.tag = isStrong ? \"strong\" : \"em\";\n    token.nesting = 1;\n    token.markup = isStrong ? ch + ch : ch;\n    token.content = \"\";\n    token.position = startDelim.position + getLineOffset(state, startDelim.token);\n    token = state.tokens[endDelim.token];\n    token.type = isStrong ? \"strong_close\" : \"em_close\";\n    token.tag = isStrong ? \"strong\" : \"em\";\n    token.nesting = -1;\n    token.markup = isStrong ? ch + ch : ch;\n    token.content = \"\";\n    if (isStrong) {\n      state.tokens[delimiters[i - 1].token].content = \"\";\n      state.tokens[delimiters[startDelim.end + 1].token].content = \"\";\n      i--;\n    }\n  }\n}\n\n// Walk through delimiter list and replace text tokens with tags\n\nfunction postProcess(state) {\n  let curr, tokens_meta = state.tokens_meta, max = state.tokens_meta.length;\n  __postProcess(state, state.delimiters);\n  for (curr = 0; curr < max; curr++) {\n    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n      __postProcess(state, tokens_meta[curr].delimiters);\n    }\n  }\n}\n\n// Process [link](<to> \"stuff\")\nfunction link(state, silent) {\n  let attrs, code, label, labelEnd, labelStart, pos, res, ref, token, href = \"\", title = \"\", oldPos = state.pos, max = state.posMax, start = state.pos, parseReference = true;\n  if (state.src.charCodeAt(state.pos) !== 91 /* [ */) {\n    return false;\n  }\n  labelStart = state.pos + 1;\n  labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);\n  // parser failed to find ']', so it's not a valid link\n    if (labelEnd < 0) {\n    return false;\n  }\n  pos = labelEnd + 1;\n  if (pos < max && state.src.charCodeAt(pos) === 40 /* ( */) {\n    // Inline link\n    // might have found a valid shortcut link, disable reference parsing\n    parseReference = false;\n    // [link](  <href>  \"title\"  )\n    //        ^^ skipping these spaces\n        pos++;\n    for (;pos < max; pos++) {\n      code = state.src.charCodeAt(pos);\n      if (!isSpace(code) && code !== 10) {\n        break;\n      }\n    }\n    if (pos >= max) {\n      return false;\n    }\n    // [link](  <href>  \"title\"  )\n    //          ^^^^^^ parsing link destination\n        start = pos;\n    res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n    if (res.ok) {\n      href = state.md.normalizeLink(res.str);\n      if (state.md.validateLink(href)) {\n        pos = res.pos;\n      } else {\n        href = \"\";\n      }\n      // [link](  <href>  \"title\"  )\n      //                ^^ skipping these spaces\n            start = pos;\n      for (;pos < max; pos++) {\n        code = state.src.charCodeAt(pos);\n        if (!isSpace(code) && code !== 10) {\n          break;\n        }\n      }\n      // [link](  <href>  \"title\"  )\n      //                  ^^^^^^^ parsing link title\n            res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n      if (pos < max && start !== pos && res.ok) {\n        title = res.str;\n        pos = res.pos;\n        // [link](  <href>  \"title\"  )\n        //                         ^^ skipping these spaces\n                for (;pos < max; pos++) {\n          code = state.src.charCodeAt(pos);\n          if (!isSpace(code) && code !== 10) {\n            break;\n          }\n        }\n      }\n    }\n    if (pos >= max || state.src.charCodeAt(pos) !== 41 /* ) */) {\n      // parsing a valid shortcut link failed, fallback to reference\n      parseReference = true;\n    }\n    pos++;\n  }\n  if (parseReference) {\n    // Link reference\n    if (typeof state.env === \"undefined\" || typeof state.env.references === \"undefined\") {\n      return false;\n    }\n    if (pos < max && state.src.charCodeAt(pos) === 91 /* [ */) {\n      start = pos + 1;\n      pos = state.md.helpers.parseLinkLabel(state, pos);\n      if (pos >= 0) {\n        label = state.src.slice(start, pos++);\n      } else {\n        pos = labelEnd + 1;\n      }\n    } else {\n      pos = labelEnd + 1;\n    }\n    // covers label === '' and label === undefined\n    // (collapsed reference link and shortcut reference link respectively)\n        if (!label) {\n      label = state.src.slice(labelStart, labelEnd);\n    }\n    ref = state.env.references[normalizeReference(label)];\n    if (!ref) {\n      state.pos = oldPos;\n      return false;\n    }\n    href = ref.href;\n    title = ref.title;\n  }\n  \n  // We found the end of the link, and know for a fact it's a valid link;\n  // so all that's left to do is to call tokenizer.\n  \n    if (!silent) {\n    state.pos = labelStart;\n    state.posMax = labelEnd;\n    token = state.push(\"link_open\", \"a\", 1);\n    token.position = labelStart - 1;\n    token.size = pos - token.position;\n    token.attrs = attrs = [ [ \"href\", href ] ];\n    if (title) {\n      attrs.push([ \"title\", title ]);\n    }\n    state.md.inline.tokenize(state, labelStart);\n    token = state.push(\"link_close\", \"a\", -1);\n    token.position = pos;\n    token.size = 0;\n  }\n  state.pos = pos;\n  state.posMax = max;\n  return true;\n}\n\n// Process ![image](<src> \"title\")\nfunction image(state, silent) {\n  let attrs, code, content, label, labelEnd, labelStart, pos, ref, res, title, token, tokens, start, href = \"\", oldPos = state.pos, max = state.posMax, endPos = state.pos;\n  if (state.src.charCodeAt(state.pos) !== 33 /* ! */) {\n    return false;\n  }\n  if (state.src.charCodeAt(state.pos + 1) !== 91 /* [ */) {\n    return false;\n  }\n  labelStart = state.pos + 2;\n  labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false);\n  // parser failed to find ']', so it's not a valid link\n    if (labelEnd < 0) {\n    return false;\n  }\n  if (state.pending) {\n    state.pushPending();\n  }\n  pos = labelEnd + 1;\n  if (pos < max && state.src.charCodeAt(pos) === 40 /* ( */) {\n    // Inline link\n    // [link](  <href>  \"title\"  )\n    //        ^^ skipping these spaces\n    pos++;\n    for (;pos < max; pos++) {\n      code = state.src.charCodeAt(pos);\n      if (!isSpace(code) && code !== 10) {\n        break;\n      }\n    }\n    if (pos >= max) {\n      return false;\n    }\n    // [link](  <href>  \"title\"  )\n    //          ^^^^^^ parsing link destination\n        start = pos;\n    res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n    if (res.ok) {\n      href = state.md.normalizeLink(res.str);\n      if (state.md.validateLink(href)) {\n        pos = res.pos;\n      } else {\n        href = \"\";\n      }\n    }\n    // [link](  <href>  \"title\"  )\n    //                ^^ skipping these spaces\n        start = pos;\n    for (;pos < max; pos++) {\n      code = state.src.charCodeAt(pos);\n      if (!isSpace(code) && code !== 10) {\n        break;\n      }\n    }\n    // [link](  <href>  \"title\"  )\n    //                  ^^^^^^^ parsing link title\n        res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n    if (pos < max && start !== pos && res.ok) {\n      title = res.str;\n      pos = res.pos;\n      // [link](  <href>  \"title\"  )\n      //                         ^^ skipping these spaces\n            for (;pos < max; pos++) {\n        code = state.src.charCodeAt(pos);\n        if (!isSpace(code) && code !== 10) {\n          break;\n        }\n      }\n    } else {\n      title = \"\";\n    }\n    if (pos >= max || state.src.charCodeAt(pos) !== 41 /* ) */) {\n      state.pos = oldPos;\n      return false;\n    }\n    endPos = pos;\n    pos++;\n  } else {\n    // Link reference\n    if (typeof state.env === \"undefined\" || typeof state.env.references === \"undefined\") {\n      return false;\n    }\n    if (pos < max && state.src.charCodeAt(pos) === 91 /* [ */) {\n      start = pos + 1;\n      pos = state.md.helpers.parseLinkLabel(state, pos);\n      if (pos >= 0) {\n        endPos = pos;\n        label = state.src.slice(start, pos++);\n      } else {\n        pos = labelEnd + 1;\n        endPos = pos;\n      }\n    } else {\n      pos = labelEnd + 1;\n      endPos = pos;\n    }\n    // covers label === '' and label === undefined\n    // (collapsed reference link and shortcut reference link respectively)\n        if (!label) {\n      label = state.src.slice(labelStart, labelEnd);\n    }\n    ref = state.env.references[normalizeReference(label)];\n    if (!ref) {\n      state.pos = oldPos;\n      return false;\n    }\n    href = ref.href;\n    title = ref.title;\n  }\n  \n  // We found the end of the link, and know for a fact it's a valid link;\n  // so all that's left to do is to call tokenizer.\n  \n    if (!silent) {\n    content = state.src.slice(labelStart, labelEnd);\n    state.md.inline.parse(content, state.md, state.env, tokens = []);\n    token = state.push(\"image\", \"img\", 0);\n    token.attrs = attrs = [ [ \"src\", href ], [ \"alt\", \"\" ] ];\n    token.children = tokens;\n    token.content = content;\n    token.position = oldPos;\n    token.size = endPos - oldPos + 1;\n    if (title) {\n      attrs.push([ \"title\", title ]);\n    }\n  }\n  state.pos = pos;\n  state.posMax = max;\n  return true;\n}\n\n// Process autolinks '<protocol:...>'\n/*eslint max-len:0*/ const EMAIL_RE = /^([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])?)*)$/;\n\nconst AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)$/;\n\nfunction autolink(state, silent) {\n  let url, fullUrl, token, start, max, pos = state.pos;\n  if (state.src.charCodeAt(pos) !== 60 /* < */) {\n    return false;\n  }\n  start = state.pos;\n  max = state.posMax;\n  for (;;) {\n    if (++pos >= max) return false;\n    const ch = state.src.charCodeAt(pos);\n    if (ch === 60 /* < */) return false;\n    if (ch === 62 /* > */) break;\n  }\n  url = state.src.slice(start + 1, pos);\n  if (AUTOLINK_RE.test(url)) {\n    fullUrl = state.md.normalizeLink(url);\n    if (!state.md.validateLink(fullUrl)) {\n      return false;\n    }\n    if (!silent) {\n      token = state.push(\"link_open\", \"a\", 1);\n      token.attrs = [ [ \"href\", fullUrl ] ];\n      token.markup = \"autolink\";\n      token.info = \"auto\";\n      token.position = start;\n      token.size = pos - start + 2;\n      token = state.push(\"text\", \"\", 0);\n      token.content = state.md.normalizeLinkText(url);\n      token.position = start + 1;\n      token.size = pos - start;\n      token = state.push(\"link_close\", \"a\", -1);\n      token.markup = \"autolink\";\n      token.info = \"auto\";\n      token.position = pos;\n      token.size = 0;\n    }\n    state.pos = pos + 1;\n    return true;\n  }\n  if (EMAIL_RE.test(url)) {\n    fullUrl = state.md.normalizeLink(\"mailto:\" + url);\n    if (!state.md.validateLink(fullUrl)) {\n      return false;\n    }\n    if (!silent) {\n      token = state.push(\"link_open\", \"a\", 1);\n      token.attrs = [ [ \"href\", fullUrl ] ];\n      token.markup = \"autolink\";\n      token.info = \"auto\";\n      token.position = start;\n      token.size = pos - start + 2;\n      token = state.push(\"text\", \"\", 0);\n      token.content = state.md.normalizeLinkText(url);\n      token.position = start + 1;\n      token.size = pos - start;\n      token = state.push(\"link_close\", \"a\", -1);\n      token.markup = \"autolink\";\n      token.info = \"auto\";\n      token.position = pos;\n      token.size = 0;\n    }\n    state.pos = pos + 1;\n    return true;\n  }\n  return false;\n}\n\n// Process html tags\nfunction isLetter(ch) {\n  /*eslint no-bitwise:0*/\n  const lc = ch | 32;\n // to lower case\n    return lc >= 97 /* a */ && lc <= 122 /* z */;\n}\n\nfunction html_inline(state, silent) {\n  let ch, match, max, token, pos = state.pos;\n  if (!state.md.options.html) {\n    return false;\n  }\n  // Check start\n    max = state.posMax;\n  if (state.src.charCodeAt(pos) !== 60 /* < */ || pos + 2 >= max) {\n    return false;\n  }\n  // Quick fail on second char\n    ch = state.src.charCodeAt(pos + 1);\n  if (ch !== 33 /* ! */ && ch !== 63 /* ? */ && ch !== 47 /* / */ && !isLetter(ch)) {\n    return false;\n  }\n  match = state.src.slice(pos).match(HTML_TAG_RE);\n  if (!match) {\n    return false;\n  }\n  if (!silent) {\n    token = state.push(\"html_inline\", \"\", 0);\n    token.content = state.src.slice(pos, pos + match[0].length);\n    token.position = state.pos;\n    token.size = match[0].length;\n  }\n  state.pos += match[0].length;\n  return true;\n}\n\n// Process html entity - &#123;, &#xAF;, &quot;, ...\nconst DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;\n\nconst NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\nfunction entity(state, silent) {\n  let ch, code, match, pos = state.pos, max = state.posMax;\n  if (state.src.charCodeAt(pos) !== 38 /* & */) {\n    return false;\n  }\n  if (pos + 1 < max) {\n    ch = state.src.charCodeAt(pos + 1);\n    if (ch === 35 /* # */) {\n      match = state.src.slice(pos).match(DIGITAL_RE);\n      if (match) {\n        if (!silent) {\n          code = match[1][0].toLowerCase() === \"x\" ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n          state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(65533);\n        }\n        state.pos += match[0].length;\n        return true;\n      }\n    } else {\n      match = state.src.slice(pos).match(NAMED_RE);\n      if (match) {\n        if (has(entities, match[1])) {\n          if (!silent) {\n            state.pending += entities[match[1]];\n          }\n          state.pos += match[0].length;\n          return true;\n        }\n      }\n    }\n  }\n  return false;\n}\n\n// For each opening emphasis-like marker find a matching closing one\n\nfunction processDelimiters(state, delimiters) {\n  let closerIdx, openerIdx, closer, opener, minOpenerIdx, newMinOpenerIdx, isOddMatch, lastJump, openersBottom = {}, max = delimiters.length;\n  for (closerIdx = 0; closerIdx < max; closerIdx++) {\n    closer = delimiters[closerIdx];\n    // Length is only used for emphasis-specific \"rule of 3\",\n    // if it's not defined (in strikethrough or 3rd party plugins),\n    // we can default it to 0 to disable those checks.\n    \n        closer.length = closer.length || 0;\n    if (!closer.close) continue;\n    // Previously calculated lower bounds (previous fails)\n    // for each marker, each delimiter length modulo 3,\n    // and for whether this closer can be an opener;\n    // https://github.com/commonmark/cmark/commit/34250e12ccebdc6372b8b49c44fab57c72443460\n        if (!Object.prototype.hasOwnProperty.call(openersBottom, closer.marker)) {\n      openersBottom[closer.marker] = [ -1, -1, -1, -1, -1, -1 ];\n    }\n    minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3];\n    openerIdx = closerIdx - closer.jump - 1;\n    // avoid crash if `closer.jump` is pointing outside of the array, see #742\n        if (openerIdx < -1) openerIdx = -1;\n    newMinOpenerIdx = openerIdx;\n    for (;openerIdx > minOpenerIdx; openerIdx -= opener.jump + 1) {\n      opener = delimiters[openerIdx];\n      if (opener.marker !== closer.marker) continue;\n      if (opener.open && opener.end < 0) {\n        isOddMatch = false;\n        // from spec:\n        \n        // If one of the delimiters can both open and close emphasis, then the\n        // sum of the lengths of the delimiter runs containing the opening and\n        // closing delimiters must not be a multiple of 3 unless both lengths\n        // are multiples of 3.\n        \n                if (opener.close || closer.open) {\n          if ((opener.length + closer.length) % 3 === 0) {\n            if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n              isOddMatch = true;\n            }\n          }\n        }\n        if (!isOddMatch) {\n          // If previous delimiter cannot be an opener, we can safely skip\n          // the entire sequence in future checks. This is required to make\n          // sure algorithm has linear complexity (see *_*_*_*_*_... case).\n          lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? delimiters[openerIdx - 1].jump + 1 : 0;\n          closer.jump = closerIdx - openerIdx + lastJump;\n          closer.open = false;\n          opener.end = closerIdx;\n          opener.jump = lastJump;\n          opener.close = false;\n          newMinOpenerIdx = -1;\n          break;\n        }\n      }\n    }\n    if (newMinOpenerIdx !== -1) {\n      // If match for this delimiter run failed, we want to set lower bound for\n      // future lookups. This is required to make sure algorithm has linear\n      // complexity.\n      // See details here:\n      // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442\n      openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx;\n    }\n  }\n}\n\nfunction link_pairs(state) {\n  let curr, tokens_meta = state.tokens_meta, max = state.tokens_meta.length;\n  processDelimiters(state, state.delimiters);\n  for (curr = 0; curr < max; curr++) {\n    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n      processDelimiters(state, tokens_meta[curr].delimiters);\n    }\n  }\n}\n\n// Clean up tokens after emphasis and strikethrough postprocessing:\n// merge adjacent text nodes into one and re-calculate all token levels\n\n// This is necessary because initially emphasis delimiter markers (*, _, ~)\n// are treated as their own separate text tokens. Then emphasis rule either\n// leaves them as text (needed to merge with adjacent text) or turns them\n// into opening/closing tags (which messes up levels inside).\n\nfunction text_collapse(state) {\n  let curr, last, level = 0, tokens = state.tokens, max = state.tokens.length;\n  for (curr = last = 0; curr < max; curr++) {\n    // re-calculate levels after emphasis/strikethrough turns some text nodes\n    // into opening/closing tags\n    if (tokens[curr].nesting < 0) level--;\n // closing tag\n        tokens[curr].level = level;\n    if (tokens[curr].nesting > 0) level++;\n // opening tag\n        if (tokens[curr].type === \"text\" && curr + 1 < max && tokens[curr + 1].type === \"text\") {\n      // collapse two adjacent text nodes\n      tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n      // only move foward position when it has content\n            if (tokens[curr].content) {\n        tokens[curr + 1].position = tokens[curr].position;\n      }\n      // add up size\n            tokens[curr + 1].size = tokens[curr].size + tokens[curr + 1].size;\n    } else {\n      if (curr !== last) {\n        tokens[last] = tokens[curr];\n      }\n      last++;\n    }\n  }\n  if (curr !== last) {\n    tokens.length = last;\n  }\n}\n\n// Inline parser state\nfunction StateInline(src, md, env, outTokens) {\n  this.src = src;\n  this.env = env;\n  this.md = md;\n  this.tokens = outTokens;\n  this.tokens_meta = Array(outTokens.length);\n  this.links = null;\n  this.pos = 0;\n  this.posMax = this.src.length;\n  this.level = 0;\n  this.pending = \"\";\n  this.pendingLevel = 0;\n  // Stores { start: end } pairs. Useful for backtrack\n  // optimization of pairs parse (emphasis, strikes).\n    this.cache = {};\n  // List of emphasis-like delimiters for current tag\n    this.delimiters = [];\n  // Stack of delimiter lists for upper level tags\n    this._prev_delimiters = [];\n  // backtick length => last seen position\n    this.backticks = {};\n  this.backticksScanned = false;\n}\n\n// Flush pending text\n\nStateInline.prototype.pushPending = function() {\n  const token = new Token(\"text\", \"\", 0);\n  token.content = this.pending;\n  token.level = this.pendingLevel;\n  token.size = token.content.length;\n  token.position = this.pos - token.size + getLineOffset(this);\n  this.tokens.push(token);\n  this.pending = \"\";\n  return token;\n};\n\n// Push new token to \"stream\".\n// If pending text exists - flush it as text token\n\nStateInline.prototype.push = function(type, tag, nesting) {\n  if (this.pending) {\n    this.pushPending();\n  }\n  const token = new Token(type, tag, nesting);\n  let token_meta = null;\n  if (nesting < 0) {\n    // closing tag\n    this.level--;\n    this.delimiters = this._prev_delimiters.pop();\n  }\n  token.level = this.level;\n  if (nesting > 0) {\n    // opening tag\n    this.level++;\n    this._prev_delimiters.push(this.delimiters);\n    this.delimiters = [];\n    token_meta = {\n      delimiters: this.delimiters\n    };\n  }\n  this.pendingLevel = this.level;\n  this.tokens.push(token);\n  this.tokens_meta.push(token_meta);\n  return token;\n};\n\n// Scan a sequence of emphasis-like markers, and determine whether\n// it can start an emphasis sequence or end an emphasis sequence.\n\n//  - start - position to scan from (it should point at a valid marker);\n//  - canSplitWord - determine if these markers can be found inside a word\n\nStateInline.prototype.scanDelims = function(start, canSplitWord) {\n  let pos = start, lastChar, nextChar, count, can_open, can_close, isLastWhiteSpace, isLastPunctChar, isNextWhiteSpace, isNextPunctChar, left_flanking = true, right_flanking = true, max = this.posMax, marker = this.src.charCodeAt(start);\n  // treat beginning of the line as a whitespace\n    lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 32;\n  while (pos < max && this.src.charCodeAt(pos) === marker) {\n    pos++;\n  }\n  count = pos - start;\n  // treat end of the line as a whitespace\n    nextChar = pos < max ? this.src.charCodeAt(pos) : 32;\n  isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n  isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n  isLastWhiteSpace = isWhiteSpace(lastChar);\n  isNextWhiteSpace = isWhiteSpace(nextChar);\n  if (isNextWhiteSpace) {\n    left_flanking = false;\n  } else if (isNextPunctChar) {\n    if (!(isLastWhiteSpace || isLastPunctChar)) {\n      left_flanking = false;\n    }\n  }\n  if (isLastWhiteSpace) {\n    right_flanking = false;\n  } else if (isLastPunctChar) {\n    if (!(isNextWhiteSpace || isNextPunctChar)) {\n      right_flanking = false;\n    }\n  }\n  if (!canSplitWord) {\n    can_open = left_flanking && (!right_flanking || isLastPunctChar);\n    can_close = right_flanking && (!left_flanking || isNextPunctChar);\n  } else {\n    can_open = left_flanking;\n    can_close = right_flanking;\n  }\n  return {\n    can_open: can_open,\n    can_close: can_close,\n    length: count\n  };\n};\n\n// re-export Token class to use in block rules\nStateInline.prototype.Token = Token;\n\n/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n////////////////////////////////////////////////////////////////////////////////\n// Parser rules\nconst _rules0 = [ [ \"linkify\", preProcess ] ];\n\nconst _rules = [ [ \"linkify\", tokenize$2 ], [ \"text\", text ], [ \"newline\", newline ], [ \"escape\", escape ], [ \"backticks\", backtick ], [ \"strikethrough\", tokenize$1 ], [ \"emphasis\", tokenize ], [ \"link\", link ], [ \"image\", image ], [ \"autolink\", autolink ], [ \"html_inline\", html_inline ], [ \"entity\", entity ] ];\n\nconst _rules2 = [ [ \"balance_pairs\", link_pairs ], [ \"strikethrough\", postProcess$1 ], [ \"emphasis\", postProcess ], [ \"linkify\", postProcess$2 ], [ \"text_collapse\", text_collapse ] ];\n\n/**\n * new ParserInline()\n **/ function ParserInline() {\n  let i;\n  /**\n   * ParserInline#ruler -> Ruler\n   *\n   * [[Ruler]] instance. Keep configuration of inline rules.\n   **/  this.ruler = new Ruler;\n  for (i = 0; i < _rules.length; i++) {\n    this.ruler.push(_rules[i][0], _rules[i][1]);\n  }\n  /**\n   * ParserInline#ruler2 -> Ruler\n   *\n   * [[Ruler]] instance. Second ruler used for post-processing\n   * (e.g. in emphasis-like rules).\n   **/  this.ruler2 = new Ruler;\n  for (i = 0; i < _rules2.length; i++) {\n    this.ruler2.push(_rules2[i][0], _rules2[i][1]);\n  }\n  /**\n   * ParserInline#ruler0 -> Ruler\n   *\n   * [[Ruler]] instance. Third ruler used for pre-processing\n   * (e.g. in linkify rule).\n   **/  this.ruler0 = new Ruler;\n  for (i = 0; i < _rules0.length; i++) {\n    this.ruler0.push(_rules0[i][0], _rules0[i][1]);\n  }\n}\n\n// Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n\nParserInline.prototype.skipToken = function(state) {\n  let ok, i, pos = state.pos, rules = this.ruler.getRules(\"\"), len = rules.length, maxNesting = state.md.options.maxNesting, cache = state.cache;\n  if (typeof cache[pos] !== \"undefined\") {\n    state.pos = cache[pos];\n    return;\n  }\n  if (state.level < maxNesting) {\n    for (i = 0; i < len; i++) {\n      // Increment state.level and decrement it later to limit recursion.\n      // It's harmless to do here, because no tokens are created. But ideally,\n      // we'd need a separate private state variable for this purpose.\n      state.level++;\n      ok = rules[i](state, true);\n      state.level--;\n      if (ok) {\n        break;\n      }\n    }\n  } else {\n    // Too much nesting, just skip until the end of the paragraph.\n    // NOTE: this will cause links to behave incorrectly in the following case,\n    //       when an amount of `[` is exactly equal to `maxNesting + 1`:\n    //       [[[[[[[[[[[[[[[[[[[[[foo]()\n    // TODO: remove this workaround when CM standard will allow nested links\n    //       (we can replace it by preventing links from being parsed in\n    //       validation mode)\n    state.pos = state.posMax;\n  }\n  if (!ok) {\n    state.pos++;\n  }\n  cache[pos] = state.pos;\n};\n\n// Generate tokens for input range\n\nParserInline.prototype.tokenize = function(state) {\n  let ok, i, rules = this.ruler.getRules(\"\"), len = rules.length, end = state.posMax, maxNesting = state.md.options.maxNesting;\n  while (state.pos < end) {\n    // Try all possible rules.\n    // On success, rule should:\n    // - update `state.pos`\n    // - update `state.tokens`\n    // - return true\n    if (state.level < maxNesting) {\n      for (i = 0; i < len; i++) {\n        ok = rules[i](state, false);\n        if (ok) {\n          break;\n        }\n      }\n    }\n    if (ok) {\n      if (state.pos >= end) {\n        break;\n      }\n      continue;\n    }\n    state.pending += state.src[state.pos++];\n  }\n  if (state.pending) {\n    state.pushPending();\n  }\n};\n\n/**\n * ParserInline.parse(str, links, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/ ParserInline.prototype.parse = function(str, md, env, outTokens) {\n  let i, rules, len;\n  const state = new this.State(str, md, env, outTokens);\n  rules = this.ruler0.getRules(\"\");\n  len = rules.length;\n  for (i = 0; i < len; i++) {\n    rules[i](state);\n  }\n  this.tokenize(state);\n  rules = this.ruler2.getRules(\"\");\n  len = rules.length;\n  for (i = 0; i < len; i++) {\n    rules[i](state);\n  }\n};\n\nParserInline.prototype.State = StateInline;\n\nvar re = function(opts) {\n  var re = {};\n  // Use direct extract instead of `regenerate` to reduse browserified size\n    re.src_Any = regex$3.source;\n  re.src_Cc = regex$2.source;\n  re.src_Z = regex.source;\n  re.src_P = regex$4.source;\n  // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n    re.src_ZPCc = [ re.src_Z, re.src_P, re.src_Cc ].join(\"|\");\n  // \\p{\\Z\\Cc} (white spaces + control)\n    re.src_ZCc = [ re.src_Z, re.src_Cc ].join(\"|\");\n  // Experimental. List of chars, completely prohibited in links\n  // because can separate it from other part of text\n    var text_separators = \"[><\\uff5c]\";\n  // All possible word characters (everything without punctuation, spaces & controls)\n  // Defined via punctuation & spaces to save space\n  // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n    re.src_pseudo_letter = \"(?:(?!\" + text_separators + \"|\" + re.src_ZPCc + \")\" + re.src_Any + \")\";\n  // The same as abothe but without [0-9]\n  // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n  ////////////////////////////////////////////////////////////////////////////////\n    re.src_ip4 = \"(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\";\n  // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n    re.src_auth = \"(?:(?:(?!\" + re.src_ZCc + \"|[@/\\\\[\\\\]()]).)+@)?\";\n  re.src_port = \"(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?\";\n  re.src_host_terminator = \"(?=$|\" + text_separators + \"|\" + re.src_ZPCc + \")(?!-|_|:\\\\d|\\\\.-|\\\\.(?!$|\" + re.src_ZPCc + \"))\";\n  re.src_path = \"(?:\" + \"[/?#]\" + \"(?:\" + \"(?!\" + re.src_ZCc + \"|\" + text_separators + \"|[()[\\\\]{}.,\\\"'?!\\\\-]).|\" + \"\\\\[(?:(?!\" + re.src_ZCc + \"|\\\\]).)*\\\\]|\" + \"\\\\((?:(?!\" + re.src_ZCc + \"|[)]).)*\\\\)|\" + \"\\\\{(?:(?!\" + re.src_ZCc + \"|[}]).)*\\\\}|\" + '\\\\\"(?:(?!' + re.src_ZCc + '|[\"]).)+\\\\\"|' + \"\\\\'(?:(?!\" + re.src_ZCc + \"|[']).)+\\\\'|\" + \"\\\\'(?=\" + re.src_pseudo_letter + \"|[-]).|\" + // allow `I'm_king` if no pair found\n  \"\\\\.{2,}[a-zA-Z0-9%/&]|\" + // google has many dots in \"google search\" links (#66, #81).\n  // github has ... in commit range links,\n  // Restrict to\n  // - english\n  // - percent-encoded\n  // - parts of file path\n  // - params separator\n  // until more examples found.\n  \"\\\\.(?!\" + re.src_ZCc + \"|[.]).|\" + (opts && opts[\"---\"] ? \"\\\\-(?!--(?:[^-]|$))(?:-*)|\" : \"\\\\-+|\") + \"\\\\,(?!\" + re.src_ZCc + \").|\" + // allow `,,,` in paths\n  \"\\\\!+(?!\" + re.src_ZCc + \"|[!]).|\" + // allow `!!!` in paths, but not at the end\n  \"\\\\?(?!\" + re.src_ZCc + \"|[?]).\" + \")+\" + \"|\\\\/\" + \")?\";\n  // Allow anything in markdown spec, forbid quote (\") at the first position\n  // because emails enclosed in quotes are far more common\n    re.src_email_name = '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*';\n  re.src_xn = \"xn--[a-z0-9\\\\-]{1,59}\";\n  // More to read about domain names\n  // http://serverfault.com/questions/638260/\n    re.src_domain_root = \n  // Allow letters & digits (http://test1)\n  \"(?:\" + re.src_xn + \"|\" + re.src_pseudo_letter + \"{1,63}\" + \")\";\n  re.src_domain = \"(?:\" + re.src_xn + \"|\" + \"(?:\" + re.src_pseudo_letter + \")\" + \"|\" + \"(?:\" + re.src_pseudo_letter + \"(?:-|\" + re.src_pseudo_letter + \"){0,61}\" + re.src_pseudo_letter + \")\" + \")\";\n  re.src_host = \"(?:\" + \n  // Don't need IP check, because digits are already allowed in normal domain names\n  //   src_ip4 +\n  // '|' +\n  \"(?:(?:(?:\" + re.src_domain + \")\\\\.)*\" + re.src_domain /*_root*/ + \")\" + \")\";\n  re.tpl_host_fuzzy = \"(?:\" + re.src_ip4 + \"|\" + \"(?:(?:(?:\" + re.src_domain + \")\\\\.)+(?:%TLDS%))\" + \")\";\n  re.tpl_host_no_ip_fuzzy = \"(?:(?:(?:\" + re.src_domain + \")\\\\.)+(?:%TLDS%))\";\n  re.src_host_strict = re.src_host + re.src_host_terminator;\n  re.tpl_host_fuzzy_strict = re.tpl_host_fuzzy + re.src_host_terminator;\n  re.src_host_port_strict = re.src_host + re.src_port + re.src_host_terminator;\n  re.tpl_host_port_fuzzy_strict = re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;\n  re.tpl_host_port_no_ip_fuzzy_strict = re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator;\n  ////////////////////////////////////////////////////////////////////////////////\n  // Main rules\n  // Rude test fuzzy links by host, for quick deny\n    re.tpl_host_fuzzy_test = \"localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:\" + re.src_ZPCc + \"|>|$))\";\n  re.tpl_email_fuzzy = \"(^|\" + text_separators + '|\"|\\\\(|' + re.src_ZCc + \")\" + \"(\" + re.src_email_name + \"@\" + re.tpl_host_fuzzy_strict + \")\";\n  re.tpl_link_fuzzy = \n  // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n  // but can start with > (markdown blockquote)\n  \"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|\" + re.src_ZPCc + \"))\" + \"((?![$+<=>^`|\\uff5c])\" + re.tpl_host_port_fuzzy_strict + re.src_path + \")\";\n  re.tpl_link_no_ip_fuzzy = \n  // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n  // but can start with > (markdown blockquote)\n  \"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|\" + re.src_ZPCc + \"))\" + \"((?![$+<=>^`|\\uff5c])\" + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + \")\";\n  return re;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Helpers\n// Merge objects\n\nfunction assign(obj /*from1, from2, from3, ...*/) {\n  var sources = Array.prototype.slice.call(arguments, 1);\n  sources.forEach((function(source) {\n    if (!source) {\n      return;\n    }\n    Object.keys(source).forEach((function(key) {\n      obj[key] = source[key];\n    }));\n  }));\n  return obj;\n}\n\nfunction _class(obj) {\n  return Object.prototype.toString.call(obj);\n}\n\nfunction isString(obj) {\n  return _class(obj) === \"[object String]\";\n}\n\nfunction isObject(obj) {\n  return _class(obj) === \"[object Object]\";\n}\n\nfunction isRegExp(obj) {\n  return _class(obj) === \"[object RegExp]\";\n}\n\nfunction isFunction(obj) {\n  return _class(obj) === \"[object Function]\";\n}\n\nfunction escapeRE(str) {\n  return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, \"\\\\$&\");\n}\n\n////////////////////////////////////////////////////////////////////////////////\nvar defaultOptions = {\n  fuzzyLink: true,\n  fuzzyEmail: true,\n  fuzzyIP: false\n};\n\nfunction isOptionsObj(obj) {\n  return Object.keys(obj || {}).reduce((function(acc, k) {\n    return acc || defaultOptions.hasOwnProperty(k);\n  }), false);\n}\n\nvar defaultSchemas = {\n  \"http:\": {\n    validate: function(text, pos, self) {\n      var tail = text.slice(pos);\n      if (!self.re.http) {\n        // compile lazily, because \"host\"-containing variables can change on tlds update.\n        self.re.http = new RegExp(\"^\\\\/\\\\/\" + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, \"i\");\n      }\n      if (self.re.http.test(tail)) {\n        return tail.match(self.re.http)[0].length;\n      }\n      return 0;\n    }\n  },\n  \"https:\": \"http:\",\n  \"ftp:\": \"http:\",\n  \"//\": {\n    validate: function(text, pos, self) {\n      var tail = text.slice(pos);\n      if (!self.re.no_http) {\n        // compile lazily, because \"host\"-containing variables can change on tlds update.\n        self.re.no_http = new RegExp(\"^\" + self.re.src_auth + \n        // Don't allow single-level domains, because of false positives like '//test'\n        // with code comments\n        \"(?:localhost|(?:(?:\" + self.re.src_domain + \")\\\\.)+\" + self.re.src_domain_root + \")\" + self.re.src_port + self.re.src_host_terminator + self.re.src_path, \"i\");\n      }\n      if (self.re.no_http.test(tail)) {\n        // should not be `://` & `///`, that protects from errors in protocol name\n        if (pos >= 3 && text[pos - 3] === \":\") {\n          return 0;\n        }\n        if (pos >= 3 && text[pos - 3] === \"/\") {\n          return 0;\n        }\n        return tail.match(self.re.no_http)[0].length;\n      }\n      return 0;\n    }\n  },\n  \"mailto:\": {\n    validate: function(text, pos, self) {\n      var tail = text.slice(pos);\n      if (!self.re.mailto) {\n        self.re.mailto = new RegExp(\"^\" + self.re.src_email_name + \"@\" + self.re.src_host_strict, \"i\");\n      }\n      if (self.re.mailto.test(tail)) {\n        return tail.match(self.re.mailto)[0].length;\n      }\n      return 0;\n    }\n  }\n};\n\n/*eslint-disable max-len*/\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\nvar tlds_2ch_src_re = \"a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]\";\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nvar tlds_default = \"biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\\u0440\\u0444\".split(\"|\");\n\n/*eslint-enable max-len*/\n////////////////////////////////////////////////////////////////////////////////\nfunction resetScanCache(self) {\n  self.__index__ = -1;\n  self.__text_cache__ = \"\";\n}\n\nfunction createValidator(re) {\n  return function(text, pos) {\n    var tail = text.slice(pos);\n    if (re.test(tail)) {\n      return tail.match(re)[0].length;\n    }\n    return 0;\n  };\n}\n\nfunction createNormalizer() {\n  return function(match, self) {\n    self.normalize(match);\n  };\n}\n\n// Schemas compiler. Build regexps.\n\nfunction compile(self) {\n  // Load & clone RE patterns.\n  var re$1 = self.re = re(self.__opts__);\n  // Define dynamic patterns\n    var tlds = self.__tlds__.slice();\n  self.onCompile();\n  if (!self.__tlds_replaced__) {\n    tlds.push(tlds_2ch_src_re);\n  }\n  tlds.push(re$1.src_xn);\n  re$1.src_tlds = tlds.join(\"|\");\n  function untpl(tpl) {\n    return tpl.replace(\"%TLDS%\", re$1.src_tlds);\n  }\n  re$1.email_fuzzy = RegExp(untpl(re$1.tpl_email_fuzzy), \"i\");\n  re$1.link_fuzzy = RegExp(untpl(re$1.tpl_link_fuzzy), \"i\");\n  re$1.link_no_ip_fuzzy = RegExp(untpl(re$1.tpl_link_no_ip_fuzzy), \"i\");\n  re$1.host_fuzzy_test = RegExp(untpl(re$1.tpl_host_fuzzy_test), \"i\");\n  \n  // Compile each schema\n  \n    var aliases = [];\n  self.__compiled__ = {};\n // Reset compiled data\n    function schemaError(name, val) {\n    throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val);\n  }\n  Object.keys(self.__schemas__).forEach((function(name) {\n    var val = self.__schemas__[name];\n    // skip disabled methods\n        if (val === null) {\n      return;\n    }\n    var compiled = {\n      validate: null,\n      link: null\n    };\n    self.__compiled__[name] = compiled;\n    if (isObject(val)) {\n      if (isRegExp(val.validate)) {\n        compiled.validate = createValidator(val.validate);\n      } else if (isFunction(val.validate)) {\n        compiled.validate = val.validate;\n      } else {\n        schemaError(name, val);\n      }\n      if (isFunction(val.normalize)) {\n        compiled.normalize = val.normalize;\n      } else if (!val.normalize) {\n        compiled.normalize = createNormalizer();\n      } else {\n        schemaError(name, val);\n      }\n      return;\n    }\n    if (isString(val)) {\n      aliases.push(name);\n      return;\n    }\n    schemaError(name, val);\n  }));\n  \n  // Compile postponed aliases\n  \n    aliases.forEach((function(alias) {\n    if (!self.__compiled__[self.__schemas__[alias]]) {\n      // Silently fail on missed schemas to avoid errons on disable.\n      // schemaError(alias, self.__schemas__[alias]);\n      return;\n    }\n    self.__compiled__[alias].validate = self.__compiled__[self.__schemas__[alias]].validate;\n    self.__compiled__[alias].normalize = self.__compiled__[self.__schemas__[alias]].normalize;\n  }));\n  \n  // Fake record for guessed links\n  \n    self.__compiled__[\"\"] = {\n    validate: null,\n    normalize: createNormalizer()\n  };\n  \n  // Build schema condition\n  \n    var slist = Object.keys(self.__compiled__).filter((function(name) {\n    // Filter disabled & fake schemas\n    return name.length > 0 && self.__compiled__[name];\n  })).map(escapeRE).join(\"|\");\n  // (?!_) cause 1.5x slowdown\n    self.re.schema_test = RegExp(\"(^|(?!_)(?:[><\\uff5c]|\" + re$1.src_ZPCc + \"))(\" + slist + \")\", \"i\");\n  self.re.schema_search = RegExp(\"(^|(?!_)(?:[><\\uff5c]|\" + re$1.src_ZPCc + \"))(\" + slist + \")\", \"ig\");\n  self.re.pretest = RegExp(\"(\" + self.re.schema_test.source + \")|(\" + self.re.host_fuzzy_test.source + \")|@\", \"i\");\n  \n  // Cleanup\n  \n    resetScanCache(self);\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/ function Match(self, shift) {\n  var start = self.__index__, end = self.__last_index__, text = self.__text_cache__.slice(start, end);\n  /**\n   * Match#schema -> String\n   *\n   * Prefix (protocol) for matched string.\n   **/  this.schema = self.__schema__.toLowerCase();\n  /**\n   * Match#index -> Number\n   *\n   * First position of matched string.\n   **/  this.index = start + shift;\n  /**\n   * Match#lastIndex -> Number\n   *\n   * Next position after matched string.\n   **/  this.lastIndex = end + shift;\n  /**\n   * Match#raw -> String\n   *\n   * Matched string.\n   **/  this.raw = text;\n  /**\n   * Match#text -> String\n   *\n   * Notmalized text of matched string.\n   **/  this.text = text;\n  /**\n   * Match#url -> String\n   *\n   * Normalized url of matched string.\n   **/  this.url = text;\n}\n\nfunction createMatch(self, shift) {\n  var match = new Match(self, shift);\n  self.__compiled__[match.schema].normalize(match, self);\n  return match;\n}\n\n/**\n * class LinkifyIt\n **/\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n *   for example). `linkify-it` makes shure that prefix is not preceeded with\n *   alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n *   - _String_ - just alias to existing rule\n *   - _Object_\n *     - _validate_ - validator function (should return matched length on success),\n *       or `RegExp`.\n *     - _normalize_ - optional function to normalize text & url of matched result\n *       (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n *   like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/ function LinkifyIt(schemas, options) {\n  if (!(this instanceof LinkifyIt)) {\n    return new LinkifyIt(schemas, options);\n  }\n  if (!options) {\n    if (isOptionsObj(schemas)) {\n      options = schemas;\n      schemas = {};\n    }\n  }\n  this.__opts__ = assign({}, defaultOptions, options);\n  // Cache last tested result. Used to skip repeating steps on next `match` call.\n    this.__index__ = -1;\n  this.__last_index__ = -1;\n // Next scan position\n    this.__schema__ = \"\";\n  this.__text_cache__ = \"\";\n  this.__schemas__ = assign({}, defaultSchemas, schemas);\n  this.__compiled__ = {};\n  this.__tlds__ = tlds_default;\n  this.__tlds_replaced__ = false;\n  this.re = {};\n  compile(this);\n}\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/ LinkifyIt.prototype.add = function add(schema, definition) {\n  this.__schemas__[schema] = definition;\n  compile(this);\n  return this;\n};\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/ LinkifyIt.prototype.set = function set(options) {\n  this.__opts__ = assign(this.__opts__, options);\n  return this;\n};\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/ LinkifyIt.prototype.test = function test(text) {\n  // Reset scan cache\n  this.__text_cache__ = text;\n  this.__index__ = -1;\n  if (!text.length) {\n    return false;\n  }\n  var m, ml, me, len, shift, next, re, tld_pos, at_pos;\n  // try to scan for link with schema - that's the most simple rule\n    if (this.re.schema_test.test(text)) {\n    re = this.re.schema_search;\n    re.lastIndex = 0;\n    while ((m = re.exec(text)) !== null) {\n      len = this.testSchemaAt(text, m[2], re.lastIndex);\n      if (len) {\n        this.__schema__ = m[2];\n        this.__index__ = m.index + m[1].length;\n        this.__last_index__ = m.index + m[0].length + len;\n        break;\n      }\n    }\n  }\n  if (this.__opts__.fuzzyLink && this.__compiled__[\"http:\"]) {\n    // guess schemaless links\n    tld_pos = text.search(this.re.host_fuzzy_test);\n    if (tld_pos >= 0) {\n      // if tld is located after found link - no need to check fuzzy pattern\n      if (this.__index__ < 0 || tld_pos < this.__index__) {\n        if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n          shift = ml.index + ml[1].length;\n          if (this.__index__ < 0 || shift < this.__index__) {\n            this.__schema__ = \"\";\n            this.__index__ = shift;\n            this.__last_index__ = ml.index + ml[0].length;\n          }\n        }\n      }\n    }\n  }\n  if (this.__opts__.fuzzyEmail && this.__compiled__[\"mailto:\"]) {\n    // guess schemaless emails\n    at_pos = text.indexOf(\"@\");\n    if (at_pos >= 0) {\n      // We can't skip this check, because this cases are possible:\n      // 192.168.1.1@gmail.com, my.in@example.com\n      if ((me = text.match(this.re.email_fuzzy)) !== null) {\n        shift = me.index + me[1].length;\n        next = me.index + me[0].length;\n        if (this.__index__ < 0 || shift < this.__index__ || shift === this.__index__ && next > this.__last_index__) {\n          this.__schema__ = \"mailto:\";\n          this.__index__ = shift;\n          this.__last_index__ = next;\n        }\n      }\n    }\n  }\n  return this.__index__ >= 0;\n};\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/ LinkifyIt.prototype.pretest = function pretest(text) {\n  return this.re.pretest.test(text);\n};\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/ LinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) {\n  // If not supported schema check requested - terminate\n  if (!this.__compiled__[schema.toLowerCase()]) {\n    return 0;\n  }\n  return this.__compiled__[schema.toLowerCase()].validate(text, pos, this);\n};\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n *   protocol-neutral  links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/ LinkifyIt.prototype.match = function match(text) {\n  var shift = 0, result = [];\n  // Try to take previous element from cache, if .test() called before\n    if (this.__index__ >= 0 && this.__text_cache__ === text) {\n    result.push(createMatch(this, shift));\n    shift = this.__last_index__;\n  }\n  // Cut head if cache was used\n    var tail = shift ? text.slice(shift) : text;\n  // Scan string until end reached\n    while (this.test(tail)) {\n    result.push(createMatch(this, shift));\n    tail = tail.slice(this.__last_index__);\n    shift += this.__last_index__;\n  }\n  if (result.length) {\n    return result;\n  }\n  return null;\n};\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n *   are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/ LinkifyIt.prototype.tlds = function tlds(list, keepOld) {\n  list = Array.isArray(list) ? list : [ list ];\n  if (!keepOld) {\n    this.__tlds__ = list.slice();\n    this.__tlds_replaced__ = true;\n    compile(this);\n    return this;\n  }\n  this.__tlds__ = this.__tlds__.concat(list).sort().filter((function(el, idx, arr) {\n    return el !== arr[idx - 1];\n  })).reverse();\n  compile(this);\n  return this;\n};\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/ LinkifyIt.prototype.normalize = function normalize(match) {\n  // Do minimal possible changes by default. Need to collect feedback prior\n  // to move forward https://github.com/markdown-it/linkify-it/issues/1\n  if (!match.schema) {\n    match.url = \"http://\" + match.url;\n  }\n  if (match.schema === \"mailto:\" && !/^mailto:/i.test(match.url)) {\n    match.url = \"mailto:\" + match.url;\n  }\n};\n\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/ LinkifyIt.prototype.onCompile = function onCompile() {};\n\nvar linkifyIt = LinkifyIt;\n\n// markdown-it default options\nvar defaultPreset = {\n  options: {\n    html: false,\n    // Enable HTML tags in source\n    xhtmlOut: false,\n    // Use '/' to close single tags (<br />)\n    breaks: false,\n    // Convert '\\n' in paragraphs into <br>\n    langPrefix: \"language-\",\n    // CSS language prefix for fenced blocks\n    linkify: false,\n    // autoconvert URL-like texts to links\n    // highSecurity:\n    // - false:           lower protection against XSS/Unicode-Homologue/etc. attacks via the input MarkDown.\n    //                    This setting assumes you own or at least trust the Markdown\n    //                    being fed to MarkDonw-It. The result is a nicer render.\n    // - true (default):  maximum protection against XSS/Unicode-Homologue/etc. attacks via the input MarkDown.\n    //                    This is the default setting and assumes you have no control or absolute trust in the Markdown\n    //                    being fed to MarkDonw-It. Use this setting when using markdown-it as part of a forum or other\n    //                    website where more-or-less arbitrary users can enter and feed any MarkDown to markdown-it.\n    // See https://en.wikipedia.org/wiki/Internationalized_domain_name for details on homograph attacks, for example.\n    highSecurity: true,\n    // Enable some language-neutral replacements + quotes beautification\n    typographer: false,\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Could be either a String or an Array.\n    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n    // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n    quotes: \"\\u201c\\u201d\\u2018\\u2019\",\n    /* “”‘’ */\n    // Highlighter function. Should return escaped HTML,\n    // or '' if the source string is not changed and should be escaped externaly.\n    // If result starts with <pre... internal wrapper is skipped.\n    // function (/*str, lang*/) { return ''; }\n    highlight: null,\n    // A regex which matches *additional* characters in an inline text string which may serve\n    // as the start of a special word, i.e. the start of anything that might be matched\n    // by a markdown-it parse rule / plugin.\n    // Using this option will slow markdown-it, hence you should only use it when you need it,\n    // e.g. when writing custom plugins which are not looking for words which start with one\n    // of the default set of sentinel characters as specified in rules_inline/text.js:\n    // !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n    inlineTokenTerminatorsRe: null,\n    // Internal protection, recursion limit\n    maxNesting: 100\n  },\n  components: {\n    core: {},\n    block: {},\n    inline: {}\n  }\n};\n\n// \"Zero\" preset, with nothing enabled. Useful for manual configuring of simple\n// modes. For example, to parse bold/italic only.\nvar zero = {\n  options: {\n    html: false,\n    // Enable HTML tags in source\n    xhtmlOut: false,\n    // Use '/' to close single tags (<br />)\n    breaks: false,\n    // Convert '\\n' in paragraphs into <br>\n    langPrefix: \"language-\",\n    // CSS language prefix for fenced blocks\n    linkify: false,\n    // autoconvert URL-like texts to links\n    // highSecurity:\n    // - false:           lower protection against XSS/Unicode-Homologue/etc. attacks via the input MarkDown.\n    //                    This setting assumes you own or at least trust the Markdown\n    //                    being fed to MarkDonw-It. The result is a nicer render.\n    // - true (default):  maximum protection against XSS/Unicode-Homologue/etc. attacks via the input MarkDown.\n    //                    This is the default setting and assumes you have no control or absolute trust in the Markdown\n    //                    being fed to MarkDonw-It. Use this setting when using markdown-it as part of a forum or other\n    //                    website where more-or-less arbitrary users can enter and feed any MarkDown to markdown-it.\n    // See https://en.wikipedia.org/wiki/Internationalized_domain_name for details on homograph attacks, for example.\n    highSecurity: true,\n    // Enable some language-neutral replacements + quotes beautification\n    typographer: false,\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Could be either a String or an Array.\n    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n    // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n    quotes: \"\\u201c\\u201d\\u2018\\u2019\",\n    /* “”‘’ */\n    // Highlighter function. Should return escaped HTML,\n    // or '' if the source string is not changed and should be escaped externaly.\n    // If result starts with <pre... internal wrapper is skipped.\n    // function (/*str, lang*/) { return ''; }\n    highlight: null,\n    // A regex which matches *additional* characters in an inline text string which may serve\n    // as the start of a special word, i.e. the start of anything that might be matched\n    // by a markdown-it parse rule / plugin.\n    // Using this option will slow markdown-it, hence you should only use it when you need it,\n    // e.g. when writing custom plugins which are not looking for words which start with one\n    // of the default set of sentinel characters as specified in rules_inline/text.js:\n    // !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n    inlineTokenTerminatorsRe: null,\n    // Internal protection, recursion limit\n    maxNesting: 20\n  },\n  components: {\n    core: {\n      rules: [ \"normalize\", \"block\", \"inline\" ]\n    },\n    block: {\n      rules: [ \"paragraph\" ]\n    },\n    inline: {\n      rules: [ \"text\" ],\n      rules2: [ \"balance_pairs\", \"text_collapse\" ]\n    }\n  }\n};\n\n// Commonmark default options\nvar commonmark = {\n  options: {\n    html: true,\n    // Enable HTML tags in source\n    xhtmlOut: true,\n    // Use '/' to close single tags (<br />)\n    breaks: false,\n    // Convert '\\n' in paragraphs into <br>\n    langPrefix: \"language-\",\n    // CSS language prefix for fenced blocks\n    linkify: false,\n    // autoconvert URL-like texts to links\n    // highSecurity:\n    // - false:           lower protection against XSS/Unicode-Homologue/etc. attacks via the input MarkDown.\n    //                    This setting assumes you own or at least trust the Markdown\n    //                    being fed to MarkDonw-It. The result is a nicer render.\n    // - true (default):  maximum protection against XSS/Unicode-Homologue/etc. attacks via the input MarkDown.\n    //                    This is the default setting and assumes you have no control or absolute trust in the Markdown\n    //                    being fed to MarkDonw-It. Use this setting when using markdown-it as part of a forum or other\n    //                    website where more-or-less arbitrary users can enter and feed any MarkDown to markdown-it.\n    // See https://en.wikipedia.org/wiki/Internationalized_domain_name for details on homograph attacks, for example.\n    highSecurity: true,\n    // Enable some language-neutral replacements + quotes beautification\n    typographer: false,\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Could be either a String or an Array.\n    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n    // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n    quotes: \"\\u201c\\u201d\\u2018\\u2019\",\n    /* “”‘’ */\n    // Highlighter function. Should return escaped HTML,\n    // or '' if the source string is not changed and should be escaped externaly.\n    // If result starts with <pre... internal wrapper is skipped.\n    // function (/*str, lang*/) { return ''; }\n    highlight: null,\n    // A regex which matches *additional* characters in an inline text string which may serve\n    // as the start of a special word, i.e. the start of anything that might be matched\n    // by a markdown-it parse rule / plugin.\n    // Using this option will slow markdown-it, hence you should only use it when you need it,\n    // e.g. when writing custom plugins which are not looking for words which start with one\n    // of the default set of sentinel characters as specified in rules_inline/text.js:\n    // !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n    inlineTokenTerminatorsRe: null,\n    // Internal protection, recursion limit\n    maxNesting: 20\n  },\n  components: {\n    core: {\n      rules: [ \"normalize\", \"block\", \"inline\" ]\n    },\n    block: {\n      rules: [ \"blockquote\", \"code\", \"fence\", \"heading\", \"hr\", \"html_block\", \"lheading\", \"list\", \"reference\", \"paragraph\" ]\n    },\n    inline: {\n      rules: [ \"autolink\", \"backticks\", \"emphasis\", \"entity\", \"escape\", \"html_inline\", \"image\", \"link\", \"newline\", \"text\" ],\n      rules2: [ \"balance_pairs\", \"emphasis\", \"text_collapse\" ]\n    }\n  }\n};\n\n// Main parser class\nconst config = {\n  default: defaultPreset,\n  zero: zero,\n  commonmark: commonmark\n};\n\n////////////////////////////////////////////////////////////////////////////////\n\n// This validator can prohibit more than really needed to prevent XSS. It's a\n// tradeoff to keep code simple and to be secure by default.\n\n// If you need different setup - override validator method as you wish. Or\n// replace it with dummy function and use external sanitizer.\n\nconst BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\n\nconst GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp|svg\\+xml);/;\n\nfunction validateLink(url) {\n  // url should be normalized at this point, and existing entities are decoded\n  const str = url.trim().toLowerCase();\n  return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) ? true : false : true;\n}\n\n////////////////////////////////////////////////////////////////////////////////\nconst RECODE_HOSTNAME_FOR = [ \"http:\", \"https:\", \"mailto:\" ];\n\nfunction normalizeLink(url) {\n  const parsed = mdurl.parse(url, true);\n  if (parsed.hostname) {\n    // Encode hostnames in urls like:\n    // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n    // We don't encode unknown schemas, because it's likely that we encode\n    // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n    if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n      try {\n        parsed.hostname = punycode.toASCII(parsed.hostname);\n      } catch (er) {}\n    }\n  }\n  return mdurl.encode(mdurl.format(parsed));\n}\n\nfunction normalizeLinkText(url) {\n  const parsed = mdurl.parse(url, true);\n  if (parsed.hostname) {\n    // Encode hostnames in urls like:\n    // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n    // We don't encode unknown schemas, because it's likely that we encode\n    // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n    // Use \"toASCII\" instead of \"toUNICODE\" to avoid Unicode homograph attack.\n    // The original *unsafe* normalize action produces nicer URI presentations for\n    // punycode Unicode URIs; only use this setting when you can trust the input MarkDown\n    // fed into markdown-it.\n    // See https://en.wikipedia.org/wiki/Internationalized_domain_name for details.\n    if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n      try {\n        if (this.options && !this.options.highSecurity) {\n          parsed.hostname = punycode.toUnicode(parsed.hostname);\n        } else {\n          parsed.hostname = punycode.toASCII(parsed.hostname);\n        }\n      } catch (er) {}\n    }\n  }\n  // add '%' to exclude list because of https://github.com/markdown-it/markdown-it/issues/720\n    return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + \"%\");\n}\n\n/**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n *     md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n/**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js) -\n *   configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) -\n *   similar to GFM, used when no preset name given. Enables all available rules,\n *   but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.js) -\n *   all rules disabled. Useful to quickly setup your config via `.enable()`.\n *   For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n *   That's not safe! You may need external sanitizer to protect output from XSS.\n *   It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n *   (`<br />`). This is needed only for full CommonMark compatibility. In real\n *   world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `<br>`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n *   Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__  - `false`. Set `true` to enable [some language-neutral\n *   replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) +\n *   quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n *   pairs (a.k.a. \"smartquotes\"), when typographer enabled. For example, you can\n *   use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n *   `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n *   Highlighter `function (str, lang, attrs)` should return escaped HTML. It can also\n *   return empty string if the source was not changed and should be escaped\n *   externaly. If result starts with <pre... internal wrapper is skipped.\n *\n * ##### Example\n *\n * ```javascript\n * // commonmark mode\n * var md = require('markdown-it')('commonmark');\n *\n * // default mode\n * var md = require('markdown-it')();\n *\n * // enable everything\n * var md = require('markdown-it')({\n *   html: true,\n *   linkify: true,\n *   typographer: true\n * });\n * ```\n *\n * ##### Syntax highlighting\n *\n * ```js\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * var md = require('markdown-it')({\n *   highlight: function (str, lang, attrs) {\n *     if (lang && hljs.getLanguage(lang)) {\n *       try {\n *         return hljs.highlight(str, { language: lang, ignoreIllegals: true }).value;\n *       } catch (__) {}\n *     }\n *\n *     return ''; // use external default escaping\n *   }\n * });\n * ```\n *\n * Or with full wrapper override (if you need assign class to `<pre>`):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n *   highlight: function (str, lang, attrs) {\n *     if (lang && hljs.getLanguage(lang)) {\n *       try {\n *         return '<pre class=\"hljs\"><code>' +\n *                hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +\n *                '</code></pre>';\n *       } catch (__) {}\n *     }\n *\n *     return '<pre class=\"hljs\"><code>' + md.utils.escapeHtml(str) + '</code></pre>';\n *   }\n * });\n * ```\n *\n **/ function MarkdownIt(presetName, options) {\n  if (!(this instanceof MarkdownIt)) {\n    return new MarkdownIt(presetName, options);\n  }\n  if (!options) {\n    if (!isString$1(presetName)) {\n      options = presetName || {};\n      presetName = \"default\";\n    }\n  }\n  /**\n   * MarkdownIt#inline -> ParserInline\n   *\n   * Instance of [[ParserInline]]. You may need it to add new rules when\n   * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n   * [[MarkdownIt.enable]].\n   **/  this.inline = new ParserInline;\n  /**\n   * MarkdownIt#block -> ParserBlock\n   *\n   * Instance of [[ParserBlock]]. You may need it to add new rules when\n   * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n   * [[MarkdownIt.enable]].\n   **/  this.block = new ParserBlock;\n  /**\n   * MarkdownIt#core -> Core\n   *\n   * Instance of [[Core]] chain executor. You may need it to add new rules when\n   * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n   * [[MarkdownIt.enable]].\n   **/  this.core = new Core;\n  /**\n   * MarkdownIt#renderer -> Renderer\n   *\n   * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n   * rules for new token types, generated by plugins.\n   *\n   * ##### Example\n   *\n   * ```javascript\n   * var md = require('markdown-it')();\n   *\n   * function myToken(tokens, idx, options, env, self) {\n   *   //...\n   *   return result;\n   * };\n   *\n   * md.renderer.rules['my_token'] = myToken\n   * ```\n   *\n   * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js).\n   **/  this.renderer = new Renderer;\n  /**\n   * MarkdownIt#linkify -> LinkifyIt\n   *\n   * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n   * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js)\n   * rule.\n   **/  this.linkify = new linkifyIt;\n  /**\n   * MarkdownIt#validateLink(url) -> Boolean\n   *\n   * Link validation function. CommonMark allows too much in links. By default\n   * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n   * except some embedded image types.\n   *\n   * You can change this behaviour:\n   *\n   * ```javascript\n   * var md = require('markdown-it')();\n   * // enable everything\n   * md.validateLink = function () { return true; }\n   * ```\n   **/  this.validateLink = validateLink;\n  /**\n   * MarkdownIt#normalizeLink(url) -> String\n   *\n   * Function used to encode link url to a machine-readable format,\n   * which includes url-encoding, punycode, etc.\n   **/  this.normalizeLink = normalizeLink;\n  /**\n   * MarkdownIt#normalizeLinkText(url) -> String\n   *\n   * Function used to decode link url to a human-readable format`\n   **/  this.normalizeLinkText = normalizeLinkText;\n  // Expose utils & helpers for easy acces from plugins\n  /**\n   * MarkdownIt#utils -> utils\n   *\n   * Assorted utility functions, useful to write plugins. See details\n   * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js).\n   **/  this.utils = utils;\n  /**\n   * MarkdownIt#helpers -> helpers\n   *\n   * Link components parser functions, useful to write plugins. See details\n   * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n   **/  this.helpers = assign$1({}, helpers);\n  this.options = {};\n  this.configure(presetName);\n  if (options) {\n    this.set(options);\n  }\n}\n\n/** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n *             .set({ html: true, breaks: true })\n *             .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/ MarkdownIt.prototype.set = function(options) {\n  assign$1(this.options, options);\n  return this;\n};\n\n/** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you will - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/ MarkdownIt.prototype.configure = function(presets) {\n  let self = this, presetName;\n  if (isString$1(presets)) {\n    presetName = presets;\n    presets = config[presetName];\n    if (!presets) {\n      throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name');\n    }\n  }\n  if (!presets) {\n    throw new Error(\"Wrong `markdown-it` preset, can't be empty\");\n  }\n  if (presets.options) {\n    self.set(presets.options);\n  }\n  if (presets.components) {\n    Object.keys(presets.components).forEach((function(name) {\n      if (presets.components[name].rules) {\n        self[name].ruler.enableOnly(presets.components[name].rules);\n      }\n      if (presets.components[name].rules2) {\n        self[name].ruler2.enableOnly(presets.components[name].rules2);\n      }\n      if (presets.components[name].rules0) {\n        self[name].ruler0.enableOnly(presets.components[name].rules2);\n      }\n    }));\n  }\n  return this;\n};\n\n/** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n *             .enable(['sub', 'sup'])\n *             .disable('smartquotes');\n * ```\n **/ MarkdownIt.prototype.enable = function(list, ignoreInvalid) {\n  let result = [];\n  if (!Array.isArray(list)) {\n    list = [ list ];\n  }\n  [ \"core\", \"block\", \"inline\" ].forEach((function(chain) {\n    result = result.concat(this[chain].ruler.enable(list, true));\n  }), this);\n  result = result.concat(this.inline.ruler2.enable(list, true));\n  result = result.concat(this.inline.ruler0.enable(list, true));\n  const missed = list.filter((function(name) {\n    return result.indexOf(name) < 0;\n  }));\n  if (missed.length && !ignoreInvalid) {\n    throw new Error(\"MarkdownIt. Failed to enable unknown rule(s): \" + missed);\n  }\n  return this;\n};\n\n/** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/ MarkdownIt.prototype.disable = function(list, ignoreInvalid) {\n  let result = [];\n  if (!Array.isArray(list)) {\n    list = [ list ];\n  }\n  [ \"core\", \"block\", \"inline\" ].forEach((function(chain) {\n    result = result.concat(this[chain].ruler.disable(list, true));\n  }), this);\n  result = result.concat(this.inline.ruler2.disable(list, true));\n  result = result.concat(this.inline.ruler0.disable(list, true));\n  const missed = list.filter((function(name) {\n    return result.indexOf(name) < 0;\n  }));\n  if (missed.length && !ignoreInvalid) {\n    throw new Error(\"MarkdownIt. Failed to disable unknown rule(s): \" + missed);\n  }\n  return this;\n};\n\n/** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n *             .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n *               tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n *             });\n * ```\n **/ MarkdownIt.prototype.use = function(plugin /*, params, ... */) {\n  const args = [ this ].concat(Array.prototype.slice.call(arguments, 1));\n  plugin.apply(plugin, args);\n  return this;\n};\n\n/** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and return list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}` or NULL,\n * and then pass updated object to renderer.\n **/ MarkdownIt.prototype.parse = function(src, env) {\n  if (typeof src !== \"string\") {\n    throw new Error(\"Input data should be a String\");\n  }\n  const state = new this.core.State(src, this, env || {});\n  this.core.process(state);\n  return state.tokens;\n};\n\n/**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/ MarkdownIt.prototype.render = function(src, env) {\n  env = env || {};\n  return this.renderer.render(this.parse(src, env), this.options, env);\n};\n\n/** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/ MarkdownIt.prototype.parseInline = function(src, env) {\n  const state = new this.core.State(src, this, env);\n  state.inlineMode = true;\n  this.core.process(state);\n  return state.tokens;\n};\n\n/**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `<p>` tags.\n **/ MarkdownIt.prototype.renderInline = function(src, env) {\n  env = env || {};\n  return this.renderer.render(this.parseInline(src, env), this.options, env);\n};\n\nexport default MarkdownIt;\n","import Prism, { Grammar } from '@gerhobbelt/prismjs';\nimport loadLanguages from '@gerhobbelt/prismjs/components/index.js';\nimport MarkdownIt from '@gerhobbelt/markdown-it';\n\ninterface Options {\n\tplugins: string[]\n\t/**\n\t * Callback for Prism initialisation. Useful for initialising plugins.\n\t * @param prism The Prism instance that will be used by the plugin.\n\t */\n\tinit: (prism: typeof Prism) => void\n\t/**\n\t * The language to use for code blocks that specify a language that Prism does not know.\n\t */\n\tdefaultLanguageForUnknown?: string\n\t/**\n\t * The language to use for code blocks that do not specify a language.\n\t */\n\tdefaultLanguageForUnspecified?: string\n\t/**\n\t * Shorthand to set both {@code defaultLanguageForUnknown} and {@code defaultLanguageForUnspecified} to the same value. Will be copied\n\t * to each option if it is set to {@code undefined}.\n\t */\n\tdefaultLanguage?: string,\n\t/**\n\t * Function which will be invoked when the specified/default language is not known to Prism. The function is passed the error message, the specified language and the set of available languages.\n\t */\n\tnoKnownLanguageCallback?: any\n}\n\nconst DEFAULTS: Options = {\n  plugins: [],\n  init: () => {\n\t\t// do nothing by default\n  },\n  defaultLanguageForUnknown: undefined,\n  defaultLanguageForUnspecified: undefined,\n  defaultLanguage: undefined,\n  noKnownLanguageCallback: undefined\n};\n\n\n/**\n * Loads the provided {@code lang} into prism.\n *\n * @param lang\n *        Code of the language to load.\n * @return The Prism language object for the provided {@code lang} code. {@code undefined} if the language is not known to Prism.\n */\nfunction loadPrismLang(lang: string): Grammar | undefined {\n  if (!lang) return undefined;\n  let langObject = Prism.languages[lang];\n  if (langObject === undefined) {\n    loadLanguages([ lang ]);\n    langObject =  Prism.languages[lang];\n  }\n  return langObject;\n}\n\n/**\n * Loads the provided Prism plugin.a\n * @param name\n *        Name of the plugin to load\n * @throws {Error} If there is no plugin with the provided {@code name}\n */\nfunction loadPrismPlugin(name: string): void {\n  try {\n    require(`@gerhobbelt/prismjs/plugins/${name}/prism-${name}`);\n  } catch (e) {\n    throw new Error(`Cannot load Prism plugin \"${name}\". Please check the spelling.`);\n  }\n}\n\n\n/**\n * Select the language to use for highlighting, based on the provided options and the specified language.\n *\n * @param options\n *        The options that were used to initialise the plugin.\n * @param lang\n *        Code of the language to highlight the text in.\n * @return An array where the first element is the name of the language to use, and the second element is the PRISM language object for that language.\n */\nfunction selectLanguage(options: Options, lang: string): [string, Grammar | undefined] {\n  let langToUse = lang;\n  if (langToUse === '' && options.defaultLanguageForUnspecified !== undefined) {\n    langToUse = options.defaultLanguageForUnspecified;\n  }\n  let prismLang = loadPrismLang(langToUse);\n  if (prismLang === undefined && options.defaultLanguageForUnknown !== undefined) {\n    langToUse = options.defaultLanguageForUnknown;\n    prismLang = loadPrismLang(langToUse);\n  }\n  return [ langToUse, prismLang ];\n}\n\n/**\n * Highlights the provided text using Prism.\n *\n * @param markdownit\n *        Instance of MarkdownIt Class. This argument is bound in markdownItPrism().\n * @param options\n *        The options that have been used to initialise the plugin. This argument is bound in markdownItPrism().\n * @param text\n *        The text to highlight.\n * @param lang\n *        Code of the language to highlight the text in.\n * @return {@code text} wrapped in {@code &lt;pre&gt;} and {@code &lt;code&gt;}, both equipped with the appropriate class\n *  (markdown-it’s langPrefix + lang). If Prism knows {@code lang}, {@code text} will be highlighted by it.\n */\nfunction highlight(markdownit: MarkdownIt, options: Options, text: string, lang: string): string {\n  const [ langToUse, prismLang ] = selectLanguage(options, lang);\n  let code;\n  if (prismLang) {\n    code = Prism.highlight(text, prismLang, langToUse);\n  } else {\n    if (options.noKnownLanguageCallback && lang) {\n      options.noKnownLanguageCallback(`There is no Prism language '${lang}' for highlight chunk:\\n${text}`, lang, loadLanguages.getSupportedLanguages());\n    }\n    code = markdownit.utils.escapeHtml(text);\n  }\n  const classAttribute = langToUse ? ` class=\"${markdownit.options.langPrefix}${markdownit.utils.escapeHtml(langToUse)}\"` : '';\n  return `<pre${classAttribute}><code${classAttribute}>${code}</code></pre>`;\n}\n\n/**\n * Checks whether an option represents a valid Prism language\n *\n * @param options\n *        The options that have been used to initialise the plugin.\n * @param optionName\n *        The key of the option inside {@code options} that shall be checked.\n * @throws {Error} If the option is not set to a valid Prism language.\n */\nfunction checkLanguageOption(\n  options: Options,\n  optionName: 'defaultLanguage' | 'defaultLanguageForUnknown' | 'defaultLanguageForUnspecified'\n): void {\n  const language = options[optionName];\n  if (language !== undefined && loadPrismLang(language) === undefined) {\n    throw new Error(`Bad option ${optionName}: There is no Prism language '${language}'.`);\n  }\n}\n\n/**\n * Initialisation function of the plugin. This function is not called directly by clients, but is rather provided\n * to MarkdownIt’s {@link MarkdownIt.use} function.\n *\n * @param markdownit\n *        The markdown it instance the plugin is being registered to.\n * @param useroptions\n *        The options this plugin is being initialised with.\n */\nexport default function markdownItPrism(markdownit: MarkdownIt, useroptions: Options): void {\n  const options = Object.assign({}, DEFAULTS, useroptions);\n\n  checkLanguageOption(options, 'defaultLanguage');\n  checkLanguageOption(options, 'defaultLanguageForUnknown');\n  checkLanguageOption(options, 'defaultLanguageForUnspecified');\n  options.defaultLanguageForUnknown = options.defaultLanguageForUnknown || options.defaultLanguage;\n  options.defaultLanguageForUnspecified = options.defaultLanguageForUnspecified || options.defaultLanguage;\n\n  options.plugins.forEach(loadPrismPlugin);\n  options.init(Prism);\n\n\t// register ourselves as highlighter\n  markdownit.options.highlight = (text, lang) => highlight(markdownit, options, text, lang);\n}\n","\nimport { strict as assert } from 'assert';\nimport * as fs from 'fs';\nimport markdownit from '@gerhobbelt/markdown-it';\n\nimport markdownItPrism from '../src/';\n\n\nconst read = path => fs.readFileSync(`testdata/${path}`).toString();\n\n\nconst ASSERT = {\n  equalIgnoreSpaces: (a, b) => {\n    const aa = a.trim().replace(/\\r?\\n/g, '\\n');\n    const bb = b.trim().replace(/\\r?\\n/g, '\\n');\n    assert.strictEqual(aa, bb);\n  }\n};\n\n\ndescribe('markdown-it-prism', () => {\n\n  it('highlights fenced code blocks with a language specification using Prism', () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism)\n\t\t\t.render(read('input/fenced-with-language.md')),\n    read('expected/fenced-with-language.html'));\n  });\n\n  it('throws for unknown plugins', () => {\n    assert.throws(() => markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  plugins: [ 'foo' ]\n\t\t\t}), /plugin/);\n  });\n\n  it('throws for unknown defaultLanguage', () => {\n    assert.throws(() => markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  defaultLanguage: 'i-dont-exist'\n\t\t\t}), /defaultLanguage.*i-dont-exist/);\n  });\n\n  it('throws for unknown defaultLanguageForUnknown', () => {\n    assert.throws(() => markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  defaultLanguageForUnknown: 'i-dont-exist'\n\t\t\t}), /defaultLanguageForUnknown.*i-dont-exist/);\n  });\n\n  it('throws for unknown defaultLanguageForUnspecified', () => {\n    assert.throws(() => markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  defaultLanguageForUnspecified: 'i-dont-exist'\n\t\t\t}), /defaultLanguageForUnspecified.*i-dont-exist/);\n  });\n\n  it('offers an init function for further initialisation', () => {\n    let called = false;\n    markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  init: prism => {\n\t\t\t    assert.ok(prism.hasOwnProperty('plugins'));\n\t\t\t    called = true;\n\t\t\t  }\n\t\t\t});\n    assert.strictEqual(called, true);\n  });\n\n  it('does not add classes to fenced code blocks without language specification', () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism)\n\t\t\t.render(read('input/fenced-without-language.md')),\n    read('expected/fenced-without-language.html'));\n  });\n\n  it('falls back to defaultLanguageForUnspecified if no language is specified', () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  defaultLanguageForUnspecified: 'java'\n\t\t\t})\n\t\t\t.render(read('input/fenced-without-language.md')),\n    read('expected/fenced-with-language.html'));\n  });\n\n  it('falls back to defaultLanguage if no language and no defaultLanguageForUnspecified is specified', () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  defaultLanguage: 'java'\n\t\t\t})\n\t\t\t.render(read('input/fenced-without-language.md')),\n    read('expected/fenced-with-language.html'));\n  });\n\n  it('falls back to defaultLanguage if no language and no defaultLanguageForUnspecified is specified, while noKnownLanguageCallback option is specified', () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  defaultLanguage: 'java',\n\t\t\t  noKnownLanguageCallback: (msg /* , lang, available */) => {\n\t\t\t    throw new Error(msg);\n\t\t\t  }\n\t\t\t})\n\t\t\t.render(read('input/fenced-without-language.md')),\n    read('expected/fenced-with-language.html'));\n  });\n\n  it('does not invoke noKnownLanguageCallback if no language and no defaultLanguage is specified', () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  noKnownLanguageCallback: (msg /* , lang, available */) => {\n\t\t\t    throw new Error(msg);\n\t\t\t  }\n\t\t\t})\n\t\t\t.render(read('input/fenced-without-language.md')),\n    read('expected/fenced-without-language.html'));\n  });\n\n  it('invokes noKnownLanguageCallback if language is specified but unknown', () => {\n    assert.throws(() => markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  noKnownLanguageCallback: (msg /* , lang, available */) => {\n\t\t\t    throw new Error(msg);\n\t\t\t  }\n\t\t\t})\n\t\t\t.render(read('input/fenced-with-unknown-language.md')),\n    /There is no Prism language/);\n  });\n\n  it('does not add classes to indented code blocks', () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism)\n\t\t\t.render(read('input/indented.md')),\n    read('expected/indented.html'));\n  });\n\n  it('adds classes even if the language is unknown', () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism)\n\t\t\t.render(read('input/fenced-with-unknown-language.md')),\n    read('expected/fenced-with-unknown-language.html'));\n  });\n\n  it('escapes HTML in the language name', async () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism)\n\t\t\t.render(read('input/fenced-with-html-in-language.md')),\n    read('expected/fenced-with-html-in-language.html'));\n  });\n\n  it('falls back to defaultLanguageForUnknown if the specified language is unknown', () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  defaultLanguageForUnknown: 'java'\n\t\t\t})\n\t\t\t.render(read('input/fenced-with-unknown-language.md')),\n    read('expected/fenced-with-language.html'));\n  });\n\n  it('falls back to defaultLanguage if the specified language is unknown and no defaultLanguageForUnknown is specified', () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  defaultLanguage: 'java'\n\t\t\t})\n\t\t\t.render(read('input/fenced-with-unknown-language.md')),\n    read('expected/fenced-with-language.html'));\n  });\n\n  it('respects markdown-it’s langPrefix setting', () => {\n    ASSERT.equalIgnoreSpaces(\n      markdownit({\n        langPrefix: 'test-'\n      })\n\t\t\t\t.use(markdownItPrism)\n\t\t\t\t.render(read('input/fenced-with-language.md')),\n      read('expected/fenced-with-language-prefix.html'));\n  });\n\n  it('is able to resolve C++ correctly', () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism)\n\t\t\t.render(read('input/cpp.md')),\n    read('expected/cpp.html'));\n  });\n\n\t// This test must be the last one, as the plugins get loaded into Prism and cannot be unloaded!\n  //\n  // [EDIT: in ES2017/ES6/ESM, you should *explicitly* *import* plugins as prism uses obsoleted require() internally.]\n  xit('allows to use Prism plugins', () => {\n    ASSERT.equalIgnoreSpaces(markdownit()\n\t\t\t.use(markdownItPrism, {\n\t\t\t  plugins: [\n\t\t\t    'highlight-keywords',\n\t\t\t    'show-language'\n\t\t\t  ]\n\t\t\t})\n\t\t\t.render(read('input/fenced-with-language.md')),\n    read('expected/fenced-with-language-plugins.html'));\n  });\n});\n"],"names":["entities","Aacute","aacute","Abreve","abreve","ac","acd","acE","Acirc","acirc","acute","Acy","acy","AElig","aelig","af","Afr","afr","Agrave","agrave","alefsym","aleph","Alpha","alpha","Amacr","amacr","amalg","amp","AMP","andand","And","and","andd","andslope","andv","ang","ange","angle","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angmsd","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","Aogon","aogon","Aopf","aopf","apacir","ap","apE","ape","apid","apos","ApplyFunction","approx","approxeq","Aring","aring","Ascr","ascr","Assign","ast","asymp","asympeq","Atilde","atilde","Auml","auml","awconint","awint","backcong","backepsilon","backprime","backsim","backsimeq","Backslash","Barv","barvee","barwed","Barwed","barwedge","bbrk","bbrktbrk","bcong","Bcy","bcy","bdquo","becaus","because","Because","bemptyv","bepsi","bernou","Bernoullis","Beta","beta","beth","between","Bfr","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","block","bne","bnequiv","bNot","bnot","Bopf","bopf","bot","bottom","bowtie","boxbox","boxdl","boxdL","boxDl","boxDL","boxdr","boxdR","boxDr","boxDR","boxh","boxH","boxhd","boxHd","boxhD","boxHD","boxhu","boxHu","boxhU","boxHU","boxminus","boxplus","boxtimes","boxul","boxuL","boxUl","boxUL","boxur","boxuR","boxUr","boxUR","boxv","boxV","boxvh","boxvH","boxVh","boxVH","boxvl","boxvL","boxVl","boxVL","boxvr","boxvR","boxVr","boxVR","bprime","breve","Breve","brvbar","bscr","Bscr","bsemi","bsim","bsime","bsolb","bsol","bsolhsub","bull","bullet","bump","bumpE","bumpe","Bumpeq","bumpeq","Cacute","cacute","capand","capbrcup","capcap","cap","Cap","capcup","capdot","CapitalDifferentialD","caps","caret","caron","Cayleys","ccaps","Ccaron","ccaron","Ccedil","ccedil","Ccirc","ccirc","Cconint","ccups","ccupssm","Cdot","cdot","cedil","Cedilla","cemptyv","cent","centerdot","CenterDot","cfr","Cfr","CHcy","chcy","check","checkmark","Chi","chi","circ","circeq","circlearrowleft","circlearrowright","circledast","circledcirc","circleddash","CircleDot","circledR","circledS","CircleMinus","CirclePlus","CircleTimes","cir","cirE","cire","cirfnint","cirmid","cirscir","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","clubs","clubsuit","colon","Colon","Colone","colone","coloneq","comma","commat","comp","compfn","complement","complexes","cong","congdot","Congruent","conint","Conint","ContourIntegral","copf","Copf","coprod","Coproduct","copy","COPY","copysr","CounterClockwiseContourIntegral","crarr","cross","Cross","Cscr","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","cupbrcap","cupcap","CupCap","cup","Cup","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curren","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","dagger","Dagger","daleth","darr","Darr","dArr","dash","Dashv","dashv","dbkarow","dblac","Dcaron","dcaron","Dcy","dcy","ddagger","ddarr","DD","dd","DDotrahd","ddotseq","deg","Del","Delta","delta","demptyv","dfisht","Dfr","dfr","dHar","dharl","dharr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","diam","diamond","Diamond","diamondsuit","diams","die","DifferentialD","digamma","disin","div","divide","divideontimes","divonx","DJcy","djcy","dlcorn","dlcrop","dollar","Dopf","dopf","Dot","dot","DotDot","doteq","doteqdot","DotEqual","dotminus","dotplus","dotsquare","doublebarwedge","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrowBar","downarrow","DownArrow","Downarrow","DownArrowUpArrow","DownBreve","downdownarrows","downharpoonleft","downharpoonright","DownLeftRightVector","DownLeftTeeVector","DownLeftVectorBar","DownLeftVector","DownRightTeeVector","DownRightVectorBar","DownRightVector","DownTeeArrow","DownTee","drbkarow","drcorn","drcrop","Dscr","dscr","DScy","dscy","dsol","Dstrok","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","DZcy","dzcy","dzigrarr","Eacute","eacute","easter","Ecaron","ecaron","Ecirc","ecirc","ecir","ecolon","Ecy","ecy","eDDot","Edot","edot","eDot","ee","efDot","Efr","efr","eg","Egrave","egrave","egs","egsdot","el","Element","elinters","ell","els","elsdot","Emacr","emacr","empty","emptyset","EmptySmallSquare","emptyv","EmptyVerySmallSquare","emsp13","emsp14","emsp","ENG","eng","ensp","Eogon","eogon","Eopf","eopf","epar","eparsl","eplus","epsi","Epsilon","epsilon","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","Equal","equals","EqualTilde","equest","Equilibrium","equiv","equivDD","eqvparsl","erarr","erDot","escr","Escr","esdot","Esim","esim","Eta","eta","ETH","eth","Euml","euml","euro","excl","exist","Exists","expectation","exponentiale","ExponentialE","fallingdotseq","Fcy","fcy","female","ffilig","fflig","ffllig","Ffr","ffr","filig","FilledSmallSquare","FilledVerySmallSquare","fjlig","flat","fllig","fltns","fnof","Fopf","fopf","forall","ForAll","fork","forkv","Fouriertrf","fpartint","frac12","frac13","frac14","frac15","frac16","frac18","frac23","frac25","frac34","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","fscr","Fscr","gacute","Gamma","gamma","Gammad","gammad","gap","Gbreve","gbreve","Gcedil","Gcirc","gcirc","Gcy","gcy","Gdot","gdot","ge","gE","gEl","gel","geq","geqq","geqslant","gescc","ges","gesdot","gesdoto","gesdotol","gesl","gesles","Gfr","gfr","gg","Gg","ggg","gimel","GJcy","gjcy","gla","gl","glE","glj","gnap","gnapprox","gne","gnE","gneq","gneqq","gnsim","Gopf","gopf","grave","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","gscr","gsim","gsime","gsiml","gtcc","gtcir","gt","GT","Gt","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","Hacek","hairsp","half","hamilt","HARDcy","hardcy","harrcir","harr","hArr","harrw","Hat","hbar","Hcirc","hcirc","hearts","heartsuit","hellip","hercon","hfr","Hfr","HilbertSpace","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","hopf","Hopf","horbar","HorizontalLine","hscr","Hscr","hslash","Hstrok","hstrok","HumpDownHump","HumpEqual","hybull","hyphen","Iacute","iacute","ic","Icirc","icirc","Icy","icy","Idot","IEcy","iecy","iexcl","iff","ifr","Ifr","Igrave","igrave","ii","iiiint","iiint","iinfin","iiota","IJlig","ijlig","Imacr","imacr","image","ImaginaryI","imagline","imagpart","imath","Im","imof","imped","Implies","incare","in","infin","infintie","inodot","intcal","int","Int","integers","Integral","intercal","Intersection","intlarhk","intprod","InvisibleComma","InvisibleTimes","IOcy","iocy","Iogon","iogon","Iopf","iopf","Iota","iota","iprod","iquest","iscr","Iscr","isin","isindot","isinE","isins","isinsv","isinv","it","Itilde","itilde","Iukcy","iukcy","Iuml","iuml","Jcirc","jcirc","Jcy","jcy","Jfr","jfr","jmath","Jopf","jopf","Jscr","jscr","Jsercy","jsercy","Jukcy","jukcy","Kappa","kappa","kappav","Kcedil","kcedil","Kcy","kcy","Kfr","kfr","kgreen","KHcy","khcy","KJcy","kjcy","Kopf","kopf","Kscr","kscr","lAarr","Lacute","lacute","laemptyv","lagran","Lambda","lambda","lang","Lang","langd","langle","lap","Laplacetrf","laquo","larrb","larrbfs","larr","Larr","lArr","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","latail","lAtail","lat","late","lates","lbarr","lBarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","Lcaron","lcaron","Lcedil","lcedil","lceil","lcub","Lcy","lcy","ldca","ldquo","ldquor","ldrdhar","ldrushar","ldsh","le","lE","LeftAngleBracket","LeftArrowBar","leftarrow","LeftArrow","Leftarrow","LeftArrowRightArrow","leftarrowtail","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVectorBar","LeftDownVector","LeftFloor","leftharpoondown","leftharpoonup","leftleftarrows","leftrightarrow","LeftRightArrow","Leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","LeftRightVector","LeftTeeArrow","LeftTee","LeftTeeVector","leftthreetimes","LeftTriangleBar","LeftTriangle","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVectorBar","LeftUpVector","LeftVectorBar","LeftVector","lEg","leg","leq","leqq","leqslant","lescc","les","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","LessEqualGreater","LessFullEqual","LessGreater","lessgtr","LessLess","lesssim","LessSlantEqual","LessTilde","lfisht","lfloor","Lfr","lfr","lg","lgE","lHar","lhard","lharu","lharul","lhblk","LJcy","ljcy","llarr","ll","Ll","llcorner","Lleftarrow","llhard","lltri","Lmidot","lmidot","lmoustache","lmoust","lnap","lnapprox","lne","lnE","lneq","lneqq","lnsim","loang","loarr","lobrk","longleftarrow","LongLeftArrow","Longleftarrow","longleftrightarrow","LongLeftRightArrow","Longleftrightarrow","longmapsto","longrightarrow","LongRightArrow","Longrightarrow","looparrowleft","looparrowright","lopar","Lopf","lopf","loplus","lotimes","lowast","lowbar","LowerLeftArrow","LowerRightArrow","loz","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrm","lrtri","lsaquo","lscr","Lscr","lsh","Lsh","lsim","lsime","lsimg","lsqb","lsquo","lsquor","Lstrok","lstrok","ltcc","ltcir","lt","LT","Lt","ltdot","lthree","ltimes","ltlarr","ltquest","ltri","ltrie","ltrif","ltrPar","lurdshar","luruhar","lvertneqq","lvnE","macr","male","malt","maltese","Map","map","mapsto","mapstodown","mapstoleft","mapstoup","marker","mcomma","Mcy","mcy","mdash","mDDot","measuredangle","MediumSpace","Mellintrf","Mfr","mfr","mho","micro","midast","midcir","mid","middot","minusb","minus","minusd","minusdu","MinusPlus","mlcp","mldr","mnplus","models","Mopf","mopf","mp","mscr","Mscr","mstpos","Mu","mu","multimap","mumap","nabla","Nacute","nacute","nang","nap","napE","napid","napos","napprox","natural","naturals","natur","nbsp","nbump","nbumpe","ncap","Ncaron","ncaron","Ncedil","ncedil","ncong","ncongdot","ncup","Ncy","ncy","ndash","nearhk","nearr","neArr","nearrow","ne","nedot","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","nequiv","nesear","nesim","NestedGreaterGreater","NestedLessLess","NewLine","nexist","nexists","Nfr","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","nGg","ngsim","nGt","ngt","ngtr","nGtv","nharr","nhArr","nhpar","ni","nis","nisd","niv","NJcy","njcy","nlarr","nlArr","nldr","nlE","nle","nleftarrow","nLeftarrow","nleftrightarrow","nLeftrightarrow","nleq","nleqq","nleqslant","nles","nless","nLl","nlsim","nLt","nlt","nltri","nltrie","nLtv","nmid","NoBreak","NonBreakingSpace","nopf","Nopf","Not","not","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","notin","notindot","notinE","notinva","notinvb","notinvc","NotLeftTriangleBar","NotLeftTriangle","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","notni","notniva","notnivb","notnivc","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangleBar","NotRightTriangle","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","nparallel","npar","nparsl","npart","npolint","npr","nprcue","nprec","npreceq","npre","nrarrc","nrarr","nrArr","nrarrw","nrightarrow","nRightarrow","nrtri","nrtrie","nsc","nsccue","nsce","Nscr","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsub","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","Ntilde","ntilde","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","Nu","nu","num","numero","numsp","nvap","nvdash","nvDash","nVdash","nVDash","nvge","nvgt","nvHarr","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwarhk","nwarr","nwArr","nwarrow","nwnear","Oacute","oacute","oast","Ocirc","ocirc","ocir","Ocy","ocy","odash","Odblac","odblac","odiv","odot","odsold","OElig","oelig","ofcir","Ofr","ofr","ogon","Ograve","ograve","ogt","ohbar","ohm","oint","olarr","olcir","olcross","oline","olt","Omacr","omacr","Omega","omega","Omicron","omicron","omid","ominus","Oopf","oopf","opar","OpenCurlyDoubleQuote","OpenCurlyQuote","operp","oplus","orarr","Or","or","ord","order","orderof","ordf","ordm","origof","oror","orslope","orv","oS","Oscr","oscr","Oslash","oslash","osol","Otilde","otilde","otimesas","Otimes","otimes","Ouml","ouml","ovbar","OverBar","OverBrace","OverBracket","OverParenthesis","para","parallel","par","parsim","parsl","part","PartialD","Pcy","pcy","percnt","period","permil","perp","pertenk","Pfr","pfr","Phi","phi","phiv","phmmat","phone","Pi","pi","pitchfork","piv","planck","planckh","plankv","plusacir","plusb","pluscir","plus","plusdo","plusdu","pluse","PlusMinus","plusmn","plussim","plustwo","pm","Poincareplane","pointint","popf","Popf","pound","prap","Pr","pr","prcue","precapprox","prec","preccurlyeq","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","preceq","precnapprox","precneqq","precnsim","pre","prE","precsim","prime","Prime","primes","prnap","prnE","prnsim","prod","Product","profalar","profline","profsurf","prop","Proportional","Proportion","propto","prsim","prurel","Pscr","pscr","Psi","psi","puncsp","Qfr","qfr","qint","qopf","Qopf","qprime","Qscr","qscr","quaternions","quatint","quest","questeq","quot","QUOT","rAarr","race","Racute","racute","radic","raemptyv","rang","Rang","rangd","range","rangle","raquo","rarrap","rarrb","rarrbfs","rarrc","rarr","Rarr","rArr","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","Rarrtl","rarrtl","rarrw","ratail","rAtail","ratio","rationals","rbarr","rBarr","RBarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","Rcaron","rcaron","Rcedil","rcedil","rceil","rcub","Rcy","rcy","rdca","rdldhar","rdquo","rdquor","rdsh","real","realine","realpart","reals","Re","rect","reg","REG","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","rfisht","rfloor","rfr","Rfr","rHar","rhard","rharu","rharul","Rho","rho","rhov","RightAngleBracket","RightArrowBar","rightarrow","RightArrow","Rightarrow","RightArrowLeftArrow","rightarrowtail","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVectorBar","RightDownVector","RightFloor","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","RightTeeArrow","RightTee","RightTeeVector","rightthreetimes","RightTriangleBar","RightTriangle","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVectorBar","RightUpVector","RightVectorBar","RightVector","ring","risingdotseq","rlarr","rlhar","rlm","rmoustache","rmoust","rnmid","roang","roarr","robrk","ropar","ropf","Ropf","roplus","rotimes","RoundImplies","rpar","rpargt","rppolint","rrarr","Rrightarrow","rsaquo","rscr","Rscr","rsh","Rsh","rsqb","rsquo","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","RuleDelayed","ruluhar","rx","Sacute","sacute","sbquo","scap","Scaron","scaron","Sc","sc","sccue","sce","scE","Scedil","scedil","Scirc","scirc","scnap","scnE","scnsim","scpolint","scsim","Scy","scy","sdotb","sdot","sdote","searhk","searr","seArr","searrow","sect","semi","seswar","setminus","setmn","sext","Sfr","sfr","sfrown","sharp","SHCHcy","shchcy","SHcy","shcy","ShortDownArrow","ShortLeftArrow","shortmid","shortparallel","ShortRightArrow","ShortUpArrow","shy","Sigma","sigma","sigmaf","sigmav","sim","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","SmallCircle","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","SOFTcy","softcy","solbar","solb","sol","Sopf","sopf","spades","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","Sqrt","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","square","Square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","squarf","squ","squf","srarr","Sscr","sscr","ssetmn","ssmile","sstarf","Star","star","starf","straightepsilon","straightphi","strns","sub","Sub","subdot","subE","sube","subedot","submult","subnE","subne","subplus","subrarr","subset","Subset","subseteq","subseteqq","SubsetEqual","subsetneq","subsetneqq","subsim","subsub","subsup","succapprox","succ","succcurlyeq","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","succeq","succnapprox","succneqq","succnsim","succsim","SuchThat","sum","Sum","sung","sup1","sup2","sup3","sup","Sup","supdot","supdsub","supE","supe","supedot","Superset","SupersetEqual","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","supset","Supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swarhk","swarr","swArr","swarrow","swnwar","szlig","Tab","target","Tau","tau","tbrk","Tcaron","tcaron","Tcedil","tcedil","Tcy","tcy","tdot","telrec","Tfr","tfr","there4","therefore","Therefore","Theta","theta","thetasym","thetav","thickapprox","thicksim","ThickSpace","ThinSpace","thinsp","thkap","thksim","THORN","thorn","tilde","Tilde","TildeEqual","TildeFullEqual","TildeTilde","timesbar","timesb","times","timesd","tint","toea","topbot","topcir","top","Topf","topf","topfork","tosa","tprime","trade","TRADE","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","TripleDot","triplus","trisb","tritime","trpezium","Tscr","tscr","TScy","tscy","TSHcy","tshcy","Tstrok","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","Uacute","uacute","uarr","Uarr","uArr","Uarrocir","Ubrcy","ubrcy","Ubreve","ubreve","Ucirc","ucirc","Ucy","ucy","udarr","Udblac","udblac","udhar","ufisht","Ufr","ufr","Ugrave","ugrave","uHar","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","Umacr","umacr","uml","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","uogon","Uopf","uopf","UpArrowBar","uparrow","UpArrow","Uparrow","UpArrowDownArrow","updownarrow","UpDownArrow","Updownarrow","UpEquilibrium","upharpoonleft","upharpoonright","uplus","UpperLeftArrow","UpperRightArrow","upsi","Upsi","upsih","Upsilon","upsilon","UpTeeArrow","UpTee","upuparrows","urcorn","urcorner","urcrop","Uring","uring","urtri","Uscr","uscr","utdot","Utilde","utilde","utri","utrif","uuarr","Uuml","uuml","uwangle","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","varr","vArr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","vBar","Vbar","vBarv","Vcy","vcy","vdash","vDash","Vdash","VDash","Vdashl","veebar","vee","Vee","veeeq","vellip","verbar","Verbar","vert","Vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","vfr","vltri","vnsub","vnsup","Vopf","vopf","vprop","vrtri","Vscr","vscr","vsubnE","vsubne","vsupnE","vsupne","Vvdash","vzigzag","Wcirc","wcirc","wedbar","wedge","Wedge","wedgeq","weierp","Wfr","wfr","Wopf","wopf","wp","wr","wreath","Wscr","wscr","xcap","xcirc","xcup","xdtri","Xfr","xfr","xharr","xhArr","Xi","xi","xlarr","xlArr","xmap","xnis","xodot","Xopf","xopf","xoplus","xotime","xrarr","xrArr","Xscr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","Yacute","yacute","YAcy","yacy","Ycirc","ycirc","Ycy","ycy","yen","Yfr","yfr","YIcy","yicy","Yopf","yopf","Yscr","yscr","YUcy","yucy","yuml","Yuml","Zacute","zacute","Zcaron","zcaron","Zcy","zcy","Zdot","zdot","zeetrf","ZeroWidthSpace","Zeta","zeta","zfr","Zfr","ZHcy","zhcy","zigrarr","zopf","Zopf","Zscr","zscr","zwj","zwnj","regex$4","mdurl","encodeCache","getEncodeCache","exclude","i","ch","cache","String","fromCharCode","test","push","toString","toUpperCase","slice","length","charCodeAt","encode","string","keepEscaped","l","code","nextCode","result","defaultChars","encodeURIComponent","componentChars","encode_1","decodeCache","getDecodeCache","decode","replace","seq","b1","b2","b3","b4","chr","parseInt","decode_1","format","url","protocol","slashes","auth","hostname","indexOf","port","pathname","search","hash","Url","protocolPattern","portPattern","simplePathPattern","delims","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","hostlessProtocol","javascript","slashedProtocol","http","https","ftp","gopher","file","urlParse","slashesDenoteHost","u","parse","prototype","lowerProto","hec","rest","trim","split","simplePath","exec","proto","toLowerCase","substr","match","hostEnd","atSign","lastIndexOf","host","parseHost","ipv6Hostname","hostparts","newpart","j","k","validParts","notHost","bit","unshift","join","qm","uc_micro","regex$3","regex$2","regex$1","regex","Any","Cc","Cf","P","Z","isNil","v","_class$1","obj","Object","call","isString$1","_hasOwnProperty","hasOwnProperty","has","object","key","assign$1","sources","Array","arguments","forEach","source","TypeError","keys","arrayReplaceAt","src","pos","newElements","isValidEntityCode","c","fromCodePoint","surrogate1","surrogate2","UNESCAPE_MD_RE","ENTITY_RE","UNESCAPE_ALL_RE","RegExp","DIGITAL_ENTITY_TEST_RE","replaceEntityPattern","name","unescapeMd","str","unescapeAll","escaped","entity","HTML_ESCAPE_TEST_RE","HTML_ESCAPE_REPLACE_RE","HTML_REPLACEMENTS","replaceUnsafeChar","escapeHtml","REGEXP_ESCAPE_RE","escapeRE$1","isSpace","isWhiteSpace","isPunctChar","isMdAsciiPunct","normalizeReference","_g","global","window","tokensRef","WeakMap","getLineOffset","state","tokenIdx","blockState","env","state_block","parentToken","tokensBefore","tokens","resultsMap","get","cachedResult","set","linesBefore","filter","t","type","lineOffset","startLine","tShift","trimLeftOffset","trimLeft","utils","freeze","__proto__","ucmicro","assign","isString","escapeRE","parseLinkLabel","start","disableNested","level","found","prevPos","labelEnd","max","posMax","oldPos","md","inline","skipToken","parseLinkDestination","lines","ok","parseLinkTitle","helpers","default_rules","code_inline","idx","options","slf","token","renderAttrs","content","code_block","fence","info","langName","langAttrs","highlighted","arr","tmpAttrs","tmpToken","highlight","attrs","attrIndex","langPrefix","renderInlineAsText","children","renderToken","hardbreak","xhtmlOut","softbreak","breaks","text","html_block","html_inline","Renderer","rules","default_attributes","tag","value","nextToken","needLf","hidden","nesting","renderInline","len","render","Ruler","__rules__","__cache__","__find__","findIndex","rule","__compile__","self","chains","enabled","alt","altName","chain","fn","at","index","opt","Error","before","beforeName","ruleName","splice","after","afterName","enable","list","ignoreInvalid","isArray","enableOnly","disable","getRules","chainName","NEWLINES_RE","NULL_RE","normalize","inlineMode","Token","positionOffset","tok","position","parentState","parentTokenIndex","child","RARE_RE","ARROW_REPLACEMENTS","SCOPED_ABBR_TEST_RE","SCOPED_ABBR_RE","SCOPED_ABBR","r","p","tm","replaceFn","replace_scoped","inlineTokens","inside_autolink","replace_rare","replace_arrow","m","p1","p2","blkIdx","typographer","QUOTE_TEST_RE","QUOTE_RE","APOSTROPHE","replaceAt","process_inlines","thisLevel","item","lastChar","nextChar","isLastPunctChar","isNextPunctChar","isLastWhiteSpace","isNextWhiteSpace","canOpen","canClose","isSingle","stack","openQuote","closeQuote","OUTER","lastIndex","single","quotes","smartquotes","markup","meta","size","attrPush","attrData","attrSet","attrGet","attrJoin","clone","StateCore","_rules$2","Core","ruler","process","State","getLine","line","bMarks","eMarks","escapedSplit","positions","isEscaped","lastPos","current","substring","table","endLine","silent","lineText","nextLine","columns","columnCount","aligns","tableLines","tbodyLines","oldParentType","terminate","terminatorRules","firstCh","secondCh","columnVIndex","sCount","blkIndent","shift","pop","parentType","headings","Math","originalContent","last","endPos","isEmpty","getLines","params","mem","originalPos","haveEndMarker","skipChars","skipSpaces","blockquote","adjustTab","initial","blockStart","lastLineEmpty","offset","oldBMarks","oldBSCount","oldIndent","oldSCount","oldTShift","spaceAfterMarker","isOutdented","oldLineMax","lineMax","bsCount","tokenize","hr","cnt","skipBulletListMarker","skipOrderedListMarker","markTightParagraphs","contentStart","indent","indentAfterMarker","isOrdered","itemLines","listLines","listTokIdx","markerCharCode","markerValue","oldListIndent","oldTight","posAfterMarker","prevEmptyEnd","isTerminatingParagraph","tight","listIndent","Number","min","reference","_endLine","destEndPos","destEndLineNo","href","label","res","title","normalizeLink","validateLink","references","block_names","attr_name","unquoted","single_quoted","double_quoted","attr_value","attribute","open_tag","close_tag","comment","processing","declaration","cdata","HTML_TAG_RE","HTML_OPEN_CLOSE_TAG_RE","HTML_SEQUENCES","html","heading","tmp","originalMax","skipSpacesBack","skipCharsBack","lheading","paragraph","StateBlock","s","indent_found","ddIndent","skipEmptyLines","from","begin","end","keepLastLF","lineIndent","first","queue","lineStart","_rules$1","ParserBlock","hasEmptyLines","maxNesting","outTokens","tokenize$2","linkify","link","fullUrl","urlText","links","schema","normalizeLinkText","linkInfo","__linkInfo","preProcess","pretest","isLinkOpen","isLinkClose","postProcess$2","linkLevel","htmlLinkLevel","isTerminatorChar","terminatorRe","inlineTokenTerminatorsRe","pending","newline","pmax","ESCAPED","escape","backtick","matchStart","matchEnd","openerLength","closerLength","backticksScanned","backticks","tokenize$1","scanned","scanDelims","delimiters","jump","open","can_open","close","can_close","__postProcess$1","startDelim","endDelim","loneMarkers","postProcess$1","curr","tokens_meta","__postProcess","isStrong","postProcess","labelStart","ref","parseReference","pushPending","EMAIL_RE","AUTOLINK_RE","autolink","isLetter","lc","DIGITAL_RE","NAMED_RE","processDelimiters","closerIdx","openerIdx","closer","opener","minOpenerIdx","newMinOpenerIdx","isOddMatch","lastJump","openersBottom","link_pairs","text_collapse","StateInline","pendingLevel","_prev_delimiters","token_meta","canSplitWord","count","left_flanking","right_flanking","_rules0","_rules","_rules2","ParserInline","ruler2","ruler0","re","opts","src_Any","src_Cc","src_Z","src_P","src_ZPCc","src_ZCc","text_separators","src_pseudo_letter","src_ip4","src_auth","src_port","src_host_terminator","src_path","src_email_name","src_xn","src_domain_root","src_domain","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","src_host_strict","tpl_host_fuzzy_strict","src_host_port_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","tpl_host_fuzzy_test","tpl_email_fuzzy","tpl_link_fuzzy","tpl_link_no_ip_fuzzy","_class","isObject","isRegExp","isFunction","defaultOptions","fuzzyLink","fuzzyEmail","fuzzyIP","isOptionsObj","reduce","acc","defaultSchemas","validate","tail","no_http","mailto","tlds_2ch_src_re","tlds_default","resetScanCache","__index__","__text_cache__","createValidator","createNormalizer","compile","re$1","__opts__","tlds","__tlds__","onCompile","__tlds_replaced__","src_tlds","untpl","tpl","email_fuzzy","link_fuzzy","link_no_ip_fuzzy","host_fuzzy_test","aliases","__compiled__","schemaError","val","__schemas__","compiled","alias","slist","schema_test","schema_search","Match","__last_index__","__schema__","raw","createMatch","LinkifyIt","schemas","add","definition","ml","me","next","tld_pos","at_pos","testSchemaAt","keepOld","sort","reverse","linkifyIt","defaultPreset","highSecurity","components","core","zero","rules2","commonmark","config","default","BAD_PROTO_RE","GOOD_DATA_RE","RECODE_HOSTNAME_FOR","parsed","punycode","toASCII","er","toUnicode","MarkdownIt","presetName","renderer","configure","presets","rules0","missed","use","plugin","args","apply","parseInline","DEFAULTS","plugins","init","defaultLanguageForUnknown","undefined","defaultLanguageForUnspecified","defaultLanguage","noKnownLanguageCallback","loadPrismLang","langObject","Prism","languages","loadLanguages","loadPrismPlugin","require","e","selectLanguage","langToUse","prismLang","markdownit","getSupportedLanguages","classAttribute","checkLanguageOption","optionName","language","markdownItPrism","useroptions","read","path","fs","readFileSync","ASSERT","equalIgnoreSpaces","a","b","aa","bb","assert","strictEqual","describe","throws","called","prism","msg","xit"],"mappings":"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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAAK,SAASsqB,UAAT,CAAoBC,UAApB,EAAgCje,OAAhC,EAAyC;AAC5C,MAAI,EAAE,gBAAgBge,UAAlB,CAAJ,EAAmC;AACjC,WAAO,IAAIA,UAAJ,CAAeC,UAAf,EAA2Bje,OAA3B,CAAP;AACD;;AACD,MAAI,CAACA,OAAL,EAAc;AACZ,QAAI,CAACtG,UAAU,CAACukB,UAAD,CAAf,EAA6B;AAC3Bje,MAAAA,OAAO,GAAGie,UAAU,IAAI,EAAxB;AACAA,MAAAA,UAAU,GAAG,SAAb;AACD;AACF;AACD;AACF;AACA;AACA;AACA;AACA;AACA;;;AAAQ,OAAK3e,MAAL,GAAc,IAAIqX,YAAJ,EAAd;AACN;AACF;AACA;AACA;AACA;AACA;AACA;;AAAQ,OAAKjhF,KAAL,GAAa,IAAIw7E,WAAJ,EAAb;AACN;AACF;AACA;AACA;AACA;AACA;AACA;;AAAQ,OAAKgM,IAAL,GAAY,IAAIzU,IAAJ,EAAZ;AACN;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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"}