{"version":3,"sources":["webpack:///./node_modules/prismjs/components/prism-markup.min.js","webpack:///./node_modules/prismjs/components/prism-java.min.js","webpack:///./src/templates/doc.jsx","webpack:///./node_modules/prismjs/prism.js","webpack:///./node_modules/prismjs/components/prism-yaml.min.js"],"names":["Prism","languages","markup","comment","prolog","doctype","cdata","tag","pattern","greedy","inside","punctuation","namespace","lookbehind","entity","hooks","add","a","type","attributes","title","content","replace","Object","defineProperty","value","e","s","n","i","RegExp","insertBefore","xml","extend","html","mathml","svg","t","java","keyword","clike","number","operator","annotation","alias","generics","componentDidMount","window","highlightAll","pageQuery","Doc","data","asciidoc","document","subtitle","__html","langKey","pageContext","useEffect","className","description","lang","dangerouslySetInnerHTML","_self","uniqueId","_","manual","disableWorkerMessageHandler","util","encode","tokens","Token","Array","isArray","map","o","prototype","toString","call","slice","objId","obj","clone","deepClone","visited","id","key","hasOwnProperty","forEach","v","redef","before","insert","root","grammar","ret","token","newToken","old","DFS","this","callback","property","propertyType","plugins","async","highlightAllUnder","container","env","selector","run","element","elements","querySelectorAll","highlightElement","language","parent","test","parentNode","match","toLowerCase","nodeName","code","textContent","insertHighlightedCode","highlightedCode","innerHTML","Worker","worker","filename","onmessage","evt","postMessage","JSON","stringify","immediateClose","highlight","text","tokenize","matchGrammar","strarr","index","startPos","oneshot","target","patterns","j","length","lookbehindLength","global","flags","source","pos","str","lastIndex","exec","from","to","k","p","len","delNum","after","args","push","wrapped","splice","apply","rest","all","name","callbacks","matchedStr","join","classes","aliases","keys","addEventListener","message","parse","close","script","currentScript","getElementsByTagName","pop","src","hasAttribute","readyState","requestAnimationFrame","setTimeout","WorkerGlobalScope","self","module","exports","tagName","includedCdataInside","def","string","css","addInlined","javascript","js","querySelector","fileHighlight","Extensions","pre","getAttribute","extension","createElement","appendChild","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","setAttribute","statusText","send","toolbar","registerButton","href","yaml","scalar","directive","datetime","important","yml"],"mappings":"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","file":"component---src-templates-doc-jsx-99c76e31f8ac279a48c1.js","sourcesContent":["require(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nPrism.languages.markup = {\n  comment: /<!--[\\s\\S]*?-->/,\n  prolog: /<\\?[\\s\\S]+?\\?>/,\n  doctype: /<!DOCTYPE[\\s\\S]+?>/i,\n  cdata: /<!\\[CDATA\\[[\\s\\S]*?]]>/i,\n  tag: {\n    pattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/i,\n    greedy: !0,\n    inside: {\n      tag: {\n        pattern: /^<\\/?[^\\s>\\/]+/i,\n        inside: {\n          punctuation: /^<\\/?/,\n          namespace: /^[^\\s>\\/:]+:/\n        }\n      },\n      \"attr-value\": {\n        pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/i,\n        inside: {\n          punctuation: [/^=/, {\n            pattern: /^(\\s*)[\"']|[\"']$/,\n            lookbehind: !0\n          }]\n        }\n      },\n      punctuation: /\\/?>/,\n      \"attr-name\": {\n        pattern: /[^\\s>\\/]+/,\n        inside: {\n          namespace: /^[^\\s>\\/:]+:/\n        }\n      }\n    }\n  },\n  entity: /&#?[\\da-z]{1,8};/i\n}, Prism.languages.markup.tag.inside[\"attr-value\"].inside.entity = Prism.languages.markup.entity, Prism.hooks.add(\"wrap\", function (a) {\n  \"entity\" === a.type && (a.attributes.title = a.content.replace(/&amp;/, \"&\"));\n}), Object.defineProperty(Prism.languages.markup.tag, \"addInlined\", {\n  value: function value(a, e) {\n    var s = {};\n    s[\"language-\" + e] = {\n      pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n      lookbehind: !0,\n      inside: Prism.languages[e]\n    }, s.cdata = /^<!\\[CDATA\\[|\\]\\]>$/i;\n    var n = {\n      \"included-cdata\": {\n        pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n        inside: s\n      }\n    };\n    n[\"language-\" + e] = {\n      pattern: /[\\s\\S]+/,\n      inside: Prism.languages[e]\n    };\n    var i = {};\n    i[a] = {\n      pattern: RegExp(\"(<__[\\\\s\\\\S]*?>)(?:<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\\\\s*|[\\\\s\\\\S])*?(?=<\\\\/__>)\".replace(/__/g, a), \"i\"),\n      lookbehind: !0,\n      greedy: !0,\n      inside: n\n    }, Prism.languages.insertBefore(\"markup\", \"cdata\", i);\n  }\n}), Prism.languages.xml = Prism.languages.extend(\"markup\", {}), Prism.languages.html = Prism.languages.markup, Prism.languages.mathml = Prism.languages.markup, Prism.languages.svg = Prism.languages.markup;","!function (e) {\n  var t = /\\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|var|null|exports|module|open|opens|provides|requires|to|transitive|uses|with)\\b/,\n      a = /\\b[A-Z](?:\\w*[a-z]\\w*)?\\b/;\n  e.languages.java = e.languages.extend(\"clike\", {\n    \"class-name\": [a, /\\b[A-Z]\\w*(?=\\s+\\w+\\s*[;,=())])/],\n    keyword: t,\n    \"function\": [e.languages.clike[\"function\"], {\n      pattern: /(\\:\\:)[a-z_]\\w*/,\n      lookbehind: !0\n    }],\n    number: /\\b0b[01][01_]*L?\\b|\\b0x[\\da-f_]*\\.?[\\da-f_p+-]+\\b|(?:\\b\\d[\\d_]*\\.?[\\d_]*|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,\n    operator: {\n      pattern: /(^|[^.])(?:<<=?|>>>?=?|->|([-+&|])\\2|[?:~]|[-+*/%&|^!=<>]=?)/m,\n      lookbehind: !0\n    }\n  }), e.languages.insertBefore(\"java\", \"class-name\", {\n    annotation: {\n      alias: \"punctuation\",\n      pattern: /(^|[^.])@\\w+/,\n      lookbehind: !0\n    },\n    namespace: {\n      pattern: /(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)[a-z]\\w*(\\.[a-z]\\w*)+/,\n      lookbehind: !0,\n      inside: {\n        punctuation: /\\./\n      }\n    },\n    generics: {\n      pattern: /<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<[\\w\\s,.&?]*>)*>)*>)*>/,\n      inside: {\n        \"class-name\": a,\n        keyword: t,\n        punctuation: /[<>(),.:]/,\n        operator: /[?&|]/\n      }\n    }\n  });\n}(Prism);","import React, {useEffect} from 'react';\nimport {graphql} from 'gatsby';\nimport Header from '../components/header';\nimport Seo from '../components/seo';\nimport 'prismjs/prism';\nimport 'prismjs/components/prism-java.min'\nimport 'prismjs/components/prism-markup.min'\nimport 'prismjs/components/prism-yaml.min'\nimport 'prismjs/themes/prism-solarizedlight.css'\nimport '../styles/main.scss';\n\nconst componentDidMount = () => {\n  window.Prism.highlightAll()\n};\n\nconst Doc = ({\n  data: {\n    asciidoc: {\n      document: {\n        title,\n        subtitle\n      },\n      html: __html\n    }\n  },\n  pageContext: {langKey}\n}) => {\n  useEffect(componentDidMount, []);\n  return (\n    <div className='eclipse-jkube'>\n      <Seo title={title} description={subtitle} lang={langKey}/>\n      <Header lang={langKey}/>\n      <div className='eclipse-jkube__documentation book toc2 toc-left'>\n        <div\n          className='eclipse-jkube__documentation-content'\n          dangerouslySetInnerHTML={{__html}}\n        />\n      </div>\n    </div>\n  );\n};\n\n\nexport const pageQuery = graphql`\n  query($id: String!) {\n    asciidoc(id: { eq: $id }) {\n      html\n      document {\n        title\n        subtitle\n      }\n    }\n  }\n`;\n\nexport default Doc;\n","require(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/es6.regexp.match\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\n/* **********************************************\n     Begin prism-core.js\n********************************************** */\nvar _self = typeof window !== 'undefined' ? window // if in browser\n: typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope ? self // if in worker\n: {} // if in node js\n;\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\n\nvar Prism = function (_self) {\n  // Private helper vars\n  var lang = /\\blang(?:uage)?-([\\w-]+)\\b/i;\n  var uniqueId = 0;\n  var _ = {\n    manual: _self.Prism && _self.Prism.manual,\n    disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n    util: {\n      encode: function encode(tokens) {\n        if (tokens instanceof Token) {\n          return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n        } else if (Array.isArray(tokens)) {\n          return tokens.map(_.util.encode);\n        } else {\n          return tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n        }\n      },\n      type: function type(o) {\n        return Object.prototype.toString.call(o).slice(8, -1);\n      },\n      objId: function objId(obj) {\n        if (!obj['__id']) {\n          Object.defineProperty(obj, '__id', {\n            value: ++uniqueId\n          });\n        }\n\n        return obj['__id'];\n      },\n      // Deep clone a language definition (e.g. to extend it)\n      clone: function deepClone(o, visited) {\n        var clone,\n            id,\n            type = _.util.type(o);\n\n        visited = visited || {};\n\n        switch (type) {\n          case 'Object':\n            id = _.util.objId(o);\n\n            if (visited[id]) {\n              return visited[id];\n            }\n\n            clone = {};\n            visited[id] = clone;\n\n            for (var key in o) {\n              if (o.hasOwnProperty(key)) {\n                clone[key] = deepClone(o[key], visited);\n              }\n            }\n\n            return clone;\n\n          case 'Array':\n            id = _.util.objId(o);\n\n            if (visited[id]) {\n              return visited[id];\n            }\n\n            clone = [];\n            visited[id] = clone;\n            o.forEach(function (v, i) {\n              clone[i] = deepClone(v, visited);\n            });\n            return clone;\n\n          default:\n            return o;\n        }\n      }\n    },\n    languages: {\n      extend: function extend(id, redef) {\n        var lang = _.util.clone(_.languages[id]);\n\n        for (var key in redef) {\n          lang[key] = redef[key];\n        }\n\n        return lang;\n      },\n\n      /**\n       * Insert a token before another token in a language literal\n       * As this needs to recreate the object (we cannot actually insert before keys in object literals),\n       * we cannot just provide an object, we need an object and a key.\n       * @param inside The key (or language id) of the parent\n       * @param before The key to insert before.\n       * @param insert Object with the key/value pairs to insert\n       * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\n       */\n      insertBefore: function insertBefore(inside, before, insert, root) {\n        root = root || _.languages;\n        var grammar = root[inside];\n        var ret = {};\n\n        for (var token in grammar) {\n          if (grammar.hasOwnProperty(token)) {\n            if (token == before) {\n              for (var newToken in insert) {\n                if (insert.hasOwnProperty(newToken)) {\n                  ret[newToken] = insert[newToken];\n                }\n              }\n            } // Do not insert token which also occur in insert. See #1525\n\n\n            if (!insert.hasOwnProperty(token)) {\n              ret[token] = grammar[token];\n            }\n          }\n        }\n\n        var old = root[inside];\n        root[inside] = ret; // Update references in other language definitions\n\n        _.languages.DFS(_.languages, function (key, value) {\n          if (value === old && key != inside) {\n            this[key] = ret;\n          }\n        });\n\n        return ret;\n      },\n      // Traverse a language definition with Depth First Search\n      DFS: function DFS(o, callback, type, visited) {\n        visited = visited || {};\n        var objId = _.util.objId;\n\n        for (var i in o) {\n          if (o.hasOwnProperty(i)) {\n            callback.call(o, i, o[i], type || i);\n\n            var property = o[i],\n                propertyType = _.util.type(property);\n\n            if (propertyType === 'Object' && !visited[objId(property)]) {\n              visited[objId(property)] = true;\n              DFS(property, callback, null, visited);\n            } else if (propertyType === 'Array' && !visited[objId(property)]) {\n              visited[objId(property)] = true;\n              DFS(property, callback, i, visited);\n            }\n          }\n        }\n      }\n    },\n    plugins: {},\n    highlightAll: function highlightAll(async, callback) {\n      _.highlightAllUnder(document, async, callback);\n    },\n    highlightAllUnder: function highlightAllUnder(container, async, callback) {\n      var env = {\n        callback: callback,\n        selector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n      };\n\n      _.hooks.run('before-highlightall', env);\n\n      var elements = container.querySelectorAll(env.selector);\n\n      for (var i = 0, element; element = elements[i++];) {\n        _.highlightElement(element, async === true, env.callback);\n      }\n    },\n    highlightElement: function highlightElement(element, async, callback) {\n      // Find language\n      var language = 'none',\n          grammar,\n          parent = element;\n\n      while (parent && !lang.test(parent.className)) {\n        parent = parent.parentNode;\n      }\n\n      if (parent) {\n        language = (parent.className.match(lang) || [, 'none'])[1].toLowerCase();\n        grammar = _.languages[language];\n      } // Set language on the element, if not present\n\n\n      element.className = element.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\n      if (element.parentNode) {\n        // Set language on the parent, for styling\n        parent = element.parentNode;\n\n        if (/pre/i.test(parent.nodeName)) {\n          parent.className = parent.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n        }\n      }\n\n      var code = element.textContent;\n      var env = {\n        element: element,\n        language: language,\n        grammar: grammar,\n        code: code\n      };\n\n      var insertHighlightedCode = function insertHighlightedCode(highlightedCode) {\n        env.highlightedCode = highlightedCode;\n\n        _.hooks.run('before-insert', env);\n\n        env.element.innerHTML = env.highlightedCode;\n\n        _.hooks.run('after-highlight', env);\n\n        _.hooks.run('complete', env);\n\n        callback && callback.call(env.element);\n      };\n\n      _.hooks.run('before-sanity-check', env);\n\n      if (!env.code) {\n        _.hooks.run('complete', env);\n\n        return;\n      }\n\n      _.hooks.run('before-highlight', env);\n\n      if (!env.grammar) {\n        insertHighlightedCode(_.util.encode(env.code));\n        return;\n      }\n\n      if (async && _self.Worker) {\n        var worker = new Worker(_.filename);\n\n        worker.onmessage = function (evt) {\n          insertHighlightedCode(evt.data);\n        };\n\n        worker.postMessage(JSON.stringify({\n          language: env.language,\n          code: env.code,\n          immediateClose: true\n        }));\n      } else {\n        insertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n      }\n    },\n    highlight: function highlight(text, grammar, language) {\n      var env = {\n        code: text,\n        grammar: grammar,\n        language: language\n      };\n\n      _.hooks.run('before-tokenize', env);\n\n      env.tokens = _.tokenize(env.code, env.grammar);\n\n      _.hooks.run('after-tokenize', env);\n\n      return Token.stringify(_.util.encode(env.tokens), env.language);\n    },\n    matchGrammar: function matchGrammar(text, strarr, grammar, index, startPos, oneshot, target) {\n      for (var token in grammar) {\n        if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n          continue;\n        }\n\n        if (token == target) {\n          return;\n        }\n\n        var patterns = grammar[token];\n        patterns = _.util.type(patterns) === \"Array\" ? patterns : [patterns];\n\n        for (var j = 0; j < patterns.length; ++j) {\n          var pattern = patterns[j],\n              inside = pattern.inside,\n              lookbehind = !!pattern.lookbehind,\n              greedy = !!pattern.greedy,\n              lookbehindLength = 0,\n              alias = pattern.alias;\n\n          if (greedy && !pattern.pattern.global) {\n            // Without the global flag, lastIndex won't work\n            var flags = pattern.pattern.toString().match(/[imuy]*$/)[0];\n            pattern.pattern = RegExp(pattern.pattern.source, flags + \"g\");\n          }\n\n          pattern = pattern.pattern || pattern; // Don’t cache length as it changes during the loop\n\n          for (var i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) {\n            var str = strarr[i];\n\n            if (strarr.length > text.length) {\n              // Something went terribly wrong, ABORT, ABORT!\n              return;\n            }\n\n            if (str instanceof Token) {\n              continue;\n            }\n\n            if (greedy && i != strarr.length - 1) {\n              pattern.lastIndex = pos;\n              var match = pattern.exec(text);\n\n              if (!match) {\n                break;\n              }\n\n              var from = match.index + (lookbehind ? match[1].length : 0),\n                  to = match.index + match[0].length,\n                  k = i,\n                  p = pos;\n\n              for (var len = strarr.length; k < len && (p < to || !strarr[k].type && !strarr[k - 1].greedy); ++k) {\n                p += strarr[k].length; // Move the index i to the element in strarr that is closest to from\n\n                if (from >= p) {\n                  ++i;\n                  pos = p;\n                }\n              } // If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\n\n              if (strarr[i] instanceof Token) {\n                continue;\n              } // Number of tokens to delete and replace with the new match\n\n\n              delNum = k - i;\n              str = text.slice(pos, p);\n              match.index -= pos;\n            } else {\n              pattern.lastIndex = 0;\n              var match = pattern.exec(str),\n                  delNum = 1;\n            }\n\n            if (!match) {\n              if (oneshot) {\n                break;\n              }\n\n              continue;\n            }\n\n            if (lookbehind) {\n              lookbehindLength = match[1] ? match[1].length : 0;\n            }\n\n            var from = match.index + lookbehindLength,\n                match = match[0].slice(lookbehindLength),\n                to = from + match.length,\n                before = str.slice(0, from),\n                after = str.slice(to);\n            var args = [i, delNum];\n\n            if (before) {\n              ++i;\n              pos += before.length;\n              args.push(before);\n            }\n\n            var wrapped = new Token(token, inside ? _.tokenize(match, inside) : match, alias, match, greedy);\n            args.push(wrapped);\n\n            if (after) {\n              args.push(after);\n            }\n\n            Array.prototype.splice.apply(strarr, args);\n            if (delNum != 1) _.matchGrammar(text, strarr, grammar, i, pos, true, token);\n            if (oneshot) break;\n          }\n        }\n      }\n    },\n    tokenize: function tokenize(text, grammar) {\n      var strarr = [text];\n      var rest = grammar.rest;\n\n      if (rest) {\n        for (var token in rest) {\n          grammar[token] = rest[token];\n        }\n\n        delete grammar.rest;\n      }\n\n      _.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n      return strarr;\n    },\n    hooks: {\n      all: {},\n      add: function add(name, callback) {\n        var hooks = _.hooks.all;\n        hooks[name] = hooks[name] || [];\n        hooks[name].push(callback);\n      },\n      run: function run(name, env) {\n        var callbacks = _.hooks.all[name];\n\n        if (!callbacks || !callbacks.length) {\n          return;\n        }\n\n        for (var i = 0, callback; callback = callbacks[i++];) {\n          callback(env);\n        }\n      }\n    },\n    Token: Token\n  };\n  _self.Prism = _;\n\n  function Token(type, content, alias, matchedStr, greedy) {\n    this.type = type;\n    this.content = content;\n    this.alias = alias; // Copy of the full string this token was created from\n\n    this.length = (matchedStr || \"\").length | 0;\n    this.greedy = !!greedy;\n  }\n\n  Token.stringify = function (o, language) {\n    if (typeof o == 'string') {\n      return o;\n    }\n\n    if (Array.isArray(o)) {\n      return o.map(function (element) {\n        return Token.stringify(element, language);\n      }).join('');\n    }\n\n    var env = {\n      type: o.type,\n      content: Token.stringify(o.content, language),\n      tag: 'span',\n      classes: ['token', o.type],\n      attributes: {},\n      language: language\n    };\n\n    if (o.alias) {\n      var aliases = Array.isArray(o.alias) ? o.alias : [o.alias];\n      Array.prototype.push.apply(env.classes, aliases);\n    }\n\n    _.hooks.run('wrap', env);\n\n    var attributes = Object.keys(env.attributes).map(function (name) {\n      return name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n    }).join(' ');\n    return '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '</' + env.tag + '>';\n  };\n\n  if (!_self.document) {\n    if (!_self.addEventListener) {\n      // in Node.js\n      return _;\n    }\n\n    if (!_.disableWorkerMessageHandler) {\n      // In worker\n      _self.addEventListener('message', function (evt) {\n        var message = JSON.parse(evt.data),\n            lang = message.language,\n            code = message.code,\n            immediateClose = message.immediateClose;\n\n        _self.postMessage(_.highlight(code, _.languages[lang], lang));\n\n        if (immediateClose) {\n          _self.close();\n        }\n      }, false);\n    }\n\n    return _;\n  } //Get current script and highlight\n\n\n  var script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\n  if (script) {\n    _.filename = script.src;\n\n    if (!_.manual && !script.hasAttribute('data-manual')) {\n      if (document.readyState !== \"loading\") {\n        if (window.requestAnimationFrame) {\n          window.requestAnimationFrame(_.highlightAll);\n        } else {\n          window.setTimeout(_.highlightAll, 16);\n        }\n      } else {\n        document.addEventListener('DOMContentLoaded', _.highlightAll);\n      }\n    }\n  }\n\n  return _;\n}(_self);\n\nif (typeof module !== 'undefined' && module.exports) {\n  module.exports = Prism;\n} // hack for components to work correctly in node.js\n\n\nif (typeof global !== 'undefined') {\n  global.Prism = Prism;\n}\n/* **********************************************\n     Begin prism-markup.js\n********************************************** */\n\n\nPrism.languages.markup = {\n  'comment': /<!--[\\s\\S]*?-->/,\n  'prolog': /<\\?[\\s\\S]+?\\?>/,\n  'doctype': /<!DOCTYPE[\\s\\S]+?>/i,\n  'cdata': /<!\\[CDATA\\[[\\s\\S]*?]]>/i,\n  'tag': {\n    pattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/i,\n    greedy: true,\n    inside: {\n      'tag': {\n        pattern: /^<\\/?[^\\s>\\/]+/i,\n        inside: {\n          'punctuation': /^<\\/?/,\n          'namespace': /^[^\\s>\\/:]+:/\n        }\n      },\n      'attr-value': {\n        pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/i,\n        inside: {\n          'punctuation': [/^=/, {\n            pattern: /^(\\s*)[\"']|[\"']$/,\n            lookbehind: true\n          }]\n        }\n      },\n      'punctuation': /\\/?>/,\n      'attr-name': {\n        pattern: /[^\\s>\\/]+/,\n        inside: {\n          'namespace': /^[^\\s>\\/:]+:/\n        }\n      }\n    }\n  },\n  'entity': /&#?[\\da-z]{1,8};/i\n};\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] = Prism.languages.markup['entity']; // Plugin to make entity title show the real entity, idea by Roman Komarov\n\nPrism.hooks.add('wrap', function (env) {\n  if (env.type === 'entity') {\n    env.attributes['title'] = env.content.replace(/&amp;/, '&');\n  }\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n  /**\n   * Adds an inlined language to markup.\n   *\n   * An example of an inlined language is CSS with `<style>` tags.\n   *\n   * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n   * case insensitive.\n   * @param {string} lang The language key.\n   * @example\n   * addInlined('style', 'css');\n   */\n  value: function addInlined(tagName, lang) {\n    var includedCdataInside = {};\n    includedCdataInside['language-' + lang] = {\n      pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n      lookbehind: true,\n      inside: Prism.languages[lang]\n    };\n    includedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n    var inside = {\n      'included-cdata': {\n        pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n        inside: includedCdataInside\n      }\n    };\n    inside['language-' + lang] = {\n      pattern: /[\\s\\S]+/,\n      inside: Prism.languages[lang]\n    };\n    var def = {};\n    def[tagName] = {\n      pattern: RegExp(/(<__[\\s\\S]*?>)(?:<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\s*|[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, tagName), 'i'),\n      lookbehind: true,\n      greedy: true,\n      inside: inside\n    };\n    Prism.languages.insertBefore('markup', 'cdata', def);\n  }\n});\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n/* **********************************************\n     Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n  var string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/;\n  Prism.languages.css = {\n    'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n    'atrule': {\n      pattern: /@[\\w-]+[\\s\\S]*?(?:;|(?=\\s*\\{))/,\n      inside: {\n        'rule': /@[\\w-]+/ // See rest below\n\n      }\n    },\n    'url': {\n      pattern: RegExp('url\\\\((?:' + string.source + '|[^\\n\\r()]*)\\\\)', 'i'),\n      inside: {\n        'function': /^url/i,\n        'punctuation': /^\\(|\\)$/\n      }\n    },\n    'selector': RegExp('[^{}\\\\s](?:[^{};\"\\']|' + string.source + ')*?(?=\\\\s*\\\\{)'),\n    'string': {\n      pattern: string,\n      greedy: true\n    },\n    'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n    'important': /!important\\b/i,\n    'function': /[-a-z0-9]+(?=\\()/i,\n    'punctuation': /[(){};:,]/\n  };\n  Prism.languages.css['atrule'].inside.rest = Prism.languages.css;\n  var markup = Prism.languages.markup;\n\n  if (markup) {\n    markup.tag.addInlined('style', 'css');\n    Prism.languages.insertBefore('inside', 'attr-value', {\n      'style-attr': {\n        pattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n        inside: {\n          'attr-name': {\n            pattern: /^\\s*style/i,\n            inside: markup.tag.inside\n          },\n          'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n          'attr-value': {\n            pattern: /.+/i,\n            inside: Prism.languages.css\n          }\n        },\n        alias: 'language-css'\n      }\n    }, markup.tag);\n  }\n})(Prism);\n/* **********************************************\n     Begin prism-clike.js\n********************************************** */\n\n\nPrism.languages.clike = {\n  'comment': [{\n    pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n    lookbehind: true\n  }, {\n    pattern: /(^|[^\\\\:])\\/\\/.*/,\n    lookbehind: true,\n    greedy: true\n  }],\n  'string': {\n    pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n    greedy: true\n  },\n  'class-name': {\n    pattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n    lookbehind: true,\n    inside: {\n      punctuation: /[.\\\\]/\n    }\n  },\n  'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n  'boolean': /\\b(?:true|false)\\b/,\n  'function': /\\w+(?=\\()/,\n  'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n  'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n  'punctuation': /[{}[\\];(),.:]/\n};\n/* **********************************************\n     Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n  'class-name': [Prism.languages.clike['class-name'], {\n    pattern: /(^|[^$\\w\\xA0-\\uFFFF])[_$A-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\.(?:prototype|constructor))/,\n    lookbehind: true\n  }],\n  'keyword': [{\n    pattern: /((?:^|})\\s*)(?:catch|finally)\\b/,\n    lookbehind: true\n  }, {\n    pattern: /(^|[^.])\\b(?:as|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n    lookbehind: true\n  }],\n  'number': /\\b(?:(?:0[xX](?:[\\dA-Fa-f](?:_[\\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\\d(?:_\\d)?)+n|NaN|Infinity)\\b|(?:\\b(?:\\d(?:_\\d)?)+\\.?(?:\\d(?:_\\d)?)*|\\B\\.(?:\\d(?:_\\d)?)+)(?:[Ee][+-]?(?:\\d(?:_\\d)?)+)?/,\n  // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n  'function': /#?[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n  'operator': /-[-=]?|\\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|interface|extends|implements|instanceof|new)\\s+)[\\w.\\\\]+/;\nPrism.languages.insertBefore('javascript', 'keyword', {\n  'regex': {\n    pattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s])\\s*)\\/(\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyus]{0,6}(?=\\s*($|[\\r\\n,.;})\\]]))/,\n    lookbehind: true,\n    greedy: true\n  },\n  // This must be declared before keyword because we use \"function\" inside the look-forward\n  'function-variable': {\n    pattern: /#?[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/,\n    alias: 'function'\n  },\n  'parameter': [{\n    pattern: /(function(?:\\s+[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)?\\s*\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\))/,\n    lookbehind: true,\n    inside: Prism.languages.javascript\n  }, {\n    pattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=>)/i,\n    inside: Prism.languages.javascript\n  }, {\n    pattern: /(\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*=>)/,\n    lookbehind: true,\n    inside: Prism.languages.javascript\n  }, {\n    pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*\\s*)\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*\\{)/,\n    lookbehind: true,\n    inside: Prism.languages.javascript\n  }],\n  'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\nPrism.languages.insertBefore('javascript', 'string', {\n  'template-string': {\n    pattern: /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\\${)[^\\\\`])*`/,\n    greedy: true,\n    inside: {\n      'template-punctuation': {\n        pattern: /^`|`$/,\n        alias: 'string'\n      },\n      'interpolation': {\n        pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,\n        lookbehind: true,\n        inside: {\n          'interpolation-punctuation': {\n            pattern: /^\\${|}$/,\n            alias: 'punctuation'\n          },\n          rest: Prism.languages.javascript\n        }\n      },\n      'string': /[\\s\\S]+/\n    }\n  }\n});\n\nif (Prism.languages.markup) {\n  Prism.languages.markup.tag.addInlined('script', 'javascript');\n}\n\nPrism.languages.js = Prism.languages.javascript;\n/* **********************************************\n     Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n  if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n    return;\n  }\n  /**\n   * @param {Element} [container=document]\n   */\n\n\n  self.Prism.fileHighlight = function (container) {\n    container = container || document;\n    var Extensions = {\n      'js': 'javascript',\n      'py': 'python',\n      'rb': 'ruby',\n      'ps1': 'powershell',\n      'psm1': 'powershell',\n      'sh': 'bash',\n      'bat': 'batch',\n      'h': 'c',\n      'tex': 'latex'\n    };\n    Array.prototype.slice.call(container.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n      // ignore if already loaded\n      if (pre.hasAttribute('data-src-loaded')) {\n        return;\n      } // load current\n\n\n      var src = pre.getAttribute('data-src');\n      var language,\n          parent = pre;\n      var lang = /\\blang(?:uage)?-([\\w-]+)\\b/i;\n\n      while (parent && !lang.test(parent.className)) {\n        parent = parent.parentNode;\n      }\n\n      if (parent) {\n        language = (pre.className.match(lang) || [, ''])[1];\n      }\n\n      if (!language) {\n        var extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n        language = Extensions[extension] || extension;\n      }\n\n      var code = document.createElement('code');\n      code.className = 'language-' + language;\n      pre.textContent = '';\n      code.textContent = 'Loading…';\n      pre.appendChild(code);\n      var xhr = new XMLHttpRequest();\n      xhr.open('GET', src, true);\n\n      xhr.onreadystatechange = function () {\n        if (xhr.readyState == 4) {\n          if (xhr.status < 400 && xhr.responseText) {\n            code.textContent = xhr.responseText;\n            Prism.highlightElement(code); // mark as loaded\n\n            pre.setAttribute('data-src-loaded', '');\n          } else if (xhr.status >= 400) {\n            code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n          } else {\n            code.textContent = '✖ Error: File does not exist or is empty';\n          }\n        }\n      };\n\n      xhr.send(null);\n    });\n\n    if (Prism.plugins.toolbar) {\n      Prism.plugins.toolbar.registerButton('download-file', function (env) {\n        var pre = env.element.parentNode;\n\n        if (!pre || !/pre/i.test(pre.nodeName) || !pre.hasAttribute('data-src') || !pre.hasAttribute('data-download-link')) {\n          return;\n        }\n\n        var src = pre.getAttribute('data-src');\n        var a = document.createElement('a');\n        a.textContent = pre.getAttribute('data-download-link-label') || 'Download';\n        a.setAttribute('download', '');\n        a.href = src;\n        return a;\n      });\n    }\n  };\n\n  document.addEventListener('DOMContentLoaded', function () {\n    // execute inside handler, for dropping Event as argument\n    self.Prism.fileHighlight();\n  });\n})();","Prism.languages.yaml = {\n  scalar: {\n    pattern: /([\\-:]\\s*(?:![^\\s]+)?[ \\t]*[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)[^\\r\\n]+(?:\\2[^\\r\\n]+)*)/,\n    lookbehind: !0,\n    alias: \"string\"\n  },\n  comment: /#.*/,\n  key: {\n    pattern: /(\\s*(?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:![^\\s]+)?[ \\t]*)[^\\r\\n{[\\]},#\\s]+?(?=\\s*:\\s)/,\n    lookbehind: !0,\n    alias: \"atrule\"\n  },\n  directive: {\n    pattern: /(^[ \\t]*)%.+/m,\n    lookbehind: !0,\n    alias: \"important\"\n  },\n  datetime: {\n    pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?)?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?)(?=[ \\t]*(?:$|,|]|}))/m,\n    lookbehind: !0,\n    alias: \"number\"\n  },\n  \"boolean\": {\n    pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:true|false)[ \\t]*(?=$|,|]|})/im,\n    lookbehind: !0,\n    alias: \"important\"\n  },\n  \"null\": {\n    pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:null|~)[ \\t]*(?=$|,|]|})/im,\n    lookbehind: !0,\n    alias: \"important\"\n  },\n  string: {\n    pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(\"|')(?:(?!\\2)[^\\\\\\r\\n]|\\\\.)*\\2(?=[ \\t]*(?:$|,|]|}|\\s*#))/m,\n    lookbehind: !0,\n    greedy: !0\n  },\n  number: {\n    pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+\\.?\\d*|\\.?\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)[ \\t]*(?=$|,|]|})/im,\n    lookbehind: !0\n  },\n  tag: /![^\\s]+/,\n  important: /[&*][\\w]+/,\n  punctuation: /---|[:[\\]{}\\-,|>?]|\\.\\.\\./\n}, Prism.languages.yml = Prism.languages.yaml;"],"sourceRoot":""}