trphoenix
2025-11-27 671e8fe727be08651992bb5f49b2680731543fc6
vault backup: 2025-11-27 16:05:13
3个文件已修改
14个文件已添加
2350 ■■■■■ 已修改文件
.obsidian/app.json 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/community-plugins.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/data.json 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/lua/citefilter.lua 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/lua/markdown+hugo.lua 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/lua/markdown.lua 237 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/lua/math_block.lua 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/lua/pdf.lua 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/lua/polyfill.lua 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/lua/url.lua 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/main.js 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/manifest.json 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/styles.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/textemplate/dissertation.tex 1210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/textemplate/neurips.sty 373 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/plugins/obsidian-enhancing-export/textemplate/neurips.tex 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/workspace.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.obsidian/app.json
@@ -1,3 +1,9 @@
{
  "useMarkdownLinks": true
  "useMarkdownLinks": true,
  "pdfExportSettings": {
    "pageSize": "A4",
    "landscape": false,
    "margin": "0",
    "downscalePercent": 100
  }
}
.obsidian/community-plugins.json
@@ -1,4 +1,5 @@
[
  "obsidian-git",
  "obsidian-custom-attachment-location"
  "obsidian-custom-attachment-location",
  "obsidian-enhancing-export"
]
.obsidian/plugins/obsidian-enhancing-export/data.json
New file
@@ -0,0 +1,59 @@
{
  "items": [
    {
      "name": "Markdown"
    },
    {
      "name": "Markdown (Hugo)"
    },
    {
      "name": "Html"
    },
    {
      "name": "TextBundle"
    },
    {
      "name": "Typst"
    },
    {
      "name": "PDF"
    },
    {
      "name": "Word (.docx)"
    },
    {
      "name": "OpenOffice"
    },
    {
      "name": "RTF"
    },
    {
      "name": "Epub"
    },
    {
      "name": "Latex"
    },
    {
      "name": "Media Wiki"
    },
    {
      "name": "reStructuredText"
    },
    {
      "name": "Textile"
    },
    {
      "name": "OPML"
    },
    {
      "name": "Bibliography"
    },
    {
      "name": "PowerPoint (.pptx)"
    }
  ],
  "defaultExportDirectoryMode": "Auto",
  "openExportedFile": true,
  "env": {},
  "showExportProgressBar": true
}
.obsidian/plugins/obsidian-enhancing-export/lua/citefilter.lua
New file
@@ -0,0 +1,6 @@
-- credits to tarleb — StackExchange: https://tex.stackexchange.com/questions/392070/pandoc-markdown-create-self-contained-bib-file-from-cited-references
function Pandoc(d)
  d.meta.references = pandoc.utils.references(d)
  d.meta.bibliography = nil
  return d
end
.obsidian/plugins/obsidian-enhancing-export/lua/markdown+hugo.lua
New file
@@ -0,0 +1,5 @@
package.path=package.path..";" ..debug.getinfo(1).source:match("(.*[/\\])"):sub(2) .. "?.lua"
Mode='hugo'
require('markdown')
.obsidian/plugins/obsidian-enhancing-export/lua/markdown.lua
New file
@@ -0,0 +1,237 @@
package.path=debug.getinfo(1).source:gsub('@',''):sub(0):match('(.*[/\\])'):sub(0) .. '?.lua' .. ';' .. package.path
require("polyfill")
local url = require('url')
local pandoc=pandoc
local PANDOC_STATE=PANDOC_STATE
PANDOC_VERSION:must_be_at_least '3.1.7'
os.text = pandoc.text
local PATH = pandoc.path
local doc_dir = nil
local media_dir = nil
if Mode == nil then
  Mode = 'default'
end
-- print("Mode: "..Mode)
if PANDOC_STATE.output_file then
  local output_file = PANDOC_STATE.output_file
  doc_dir = PATH.directory(output_file)
  if PANDOC_WRITER_OPTIONS.variables["media_dir"] then
    media_dir = tostring(PANDOC_WRITER_OPTIONS.variables["media_dir"])
  else
    media_dir = PATH.split_extension(output_file)
    if Mode ~= 'hugo' then
      media_dir = media_dir .. '-media'
    end
  end
end
assert(doc_dir, "doc_dir is nil")
assert(media_dir, "media_dir is nil")
local function get_absolute_path(file_path)
  if PATH.is_absolute(file_path) then
    return file_path
  end
  for _, dir in pairs(PANDOC_STATE.resource_path) do
    local full_path = PATH.join({dir, file_path})
    if os.exists(full_path) then
      return full_path
    end
  end
  for _, file in pairs(PANDOC_STATE.input_files) do
    if not PATH.is_absolute(file) then
      file = PATH.join({pandoc.system.get_working_directory(), file_path})
    end
    local dir = PATH.directory(file)
    local full_path = PATH.join({dir, file_path})
    if os.exists(full_path) then
      return full_path
    end
  end
  return nil
end
local function get_output_file(file_path)
  if media_dir then
    local new_file_name = pandoc.utils.sha1(file_path)
    local _, new_file_ext = PATH.split_extension(file_path)
    file_path = new_file_name .. new_file_ext
    local full_path = PATH.join({media_dir, file_path})
    return full_path
  else
    return nil
  end
end
local function extract_media(file_path)
  os.mkdir(media_dir)
  file_path = url.decode(file_path)
  local abs_path = get_absolute_path(file_path)
  local file = get_output_file(file_path)
  if abs_path and file then
    if not os.exists(file) then
      os.copy(abs_path, file)
    end
    local rel_path = PATH.make_relative(file, doc_dir, false)
    local parts = PATH.split(rel_path)
    for i,v in ipairs(parts) do
      parts[i] = url.encode(v)
    end
    local encoded_rel_path = table.concat(parts, "/")
    if Mode == 'hugo' then
      encoded_rel_path = '../' .. encoded_rel_path
    end
    return encoded_rel_path
  end
end
local function raw(s)
  return pandoc.RawInline('markdown', s)
end
function Image(el)
  local src = extract_media(el.src)
  if src then
    el.src = src
  end
  return el
end
function Space()
  return raw(' ')
end
function SoftBreak()
  return raw('\n')
end
function RawInline(el)
  if el.format == "html" then
    el.format = 'markdown'
    el.text = string.gsub(el.text, '<img[^>]+>', function(img)
      return string.gsub(img, 'src="([^"]+)"', function(url)
        if string.find(url, '^[Hh][Tt][Tt][Pp][Ss]?://') == nil  then
          local extract_media_url = extract_media(url)
          if extract_media_url then
            return 'src="' .. extract_media_url .. '"'
          end
          return '123'
        end
        return 'src="' .. url .. '"'
      end)
    end)
  end
  return el
end
function RawBlock(el)
  if el.format == "html" then
    el.format = 'markdown'
  end
  return el
end
function Math(el)
  if Mode == 'hugo' then
    if el.mathtype == 'DisplayMath' then
      return raw('{{< mathjax >}}\n$$'  .. el.text .. '$$\n{{</mathjax >}}')
    else
      el.text = string.gsub(el.text, '\\[\\{\\}]', function (v)
        return '\\' .. v
      end)
      el.text = string.gsub(el.text, '_', function (v)
        return '\\' .. v
      end)
    end
  end
  return el
end
local function headerLink(input)
  -- github style section link
  return "#"..input:gsub(' ', '-')
end
local function insertLink(content, linkDescription)
  local descriptionText = table.concat(linkDescription, "")
  if string.find(descriptionText, '|') then
    local target, desc = descriptionText:match("(.*)|(.*)")
    table.insert(content, pandoc.Link(desc, headerLink(target)))
  else
    table.insert(content, pandoc.Link(descriptionText, headerLink(descriptionText)))
  end
end
function Para(el)
  local content = el.content
  content = ProcessMath(content)
  content = ProcessInternalLinks(content)
  el.content = content
  return el
end
function ProcessMath(elements)
  local content = {}
  local in_display_math = false
  for _, item in pairs(elements) do
    if item.t == 'Str'and item.text == "$$" then
      in_display_math = not in_display_math
    else
      if in_display_math then
        if item.t == 'RawInline' and item.format == 'tex' then
          local n = pandoc.Math('DisplayMath', '\n' .. item.text .. '\n')
          table.insert(content, Math(n))
        else
          table.insert(content, item)
        end
      else
        table.insert(content, item)
      end
    end
  end
  return content
end
function ProcessInternalLinks(elements)
  local content = {}
  local in_section_link = false
  local linkDescription = {}
  for _, item in pairs(elements) do
    if item.t == 'Str' and string.starts_with(item.text, '[[#') then
      in_section_link = true
      table.insert(linkDescription, string.sub(item.text, 4))
    elseif in_section_link then
      if string.ends_with(item.text, ']]') then
        table.insert(linkDescription, string.sub(item.text, 1, -3))
        insertLink(content, linkDescription)
        in_section_link = false
        linkDescription = {}
      else
        table.insert(linkDescription, item.text)
      end
    else
      table.insert(content, item)
    end
  end
  return content
end
function Plain(el)
  el.content = ProcessInternalLinks(el.content)
  return el
end
function Pandoc(el)
  return el
end
.obsidian/plugins/obsidian-enhancing-export/lua/math_block.lua
New file
@@ -0,0 +1,68 @@
traverse = 'topdown'
math_block_text = nil
function process(el)
   -- MathBlock start or end
   if el.t == 'Str' and el.text == '$$' then
     if math_block_text == nil then            -- start
       math_block_text = ''
     else                                      -- end
       local math_block = pandoc.Math('DisplayMath', '\n' .. math_block_text .. '\n')
       math_block_text = nil
       return math_block
     end
     return {}
   end
  if math_block_text then
    if (el.t == 'RawInline' or el.t == 'RawBlock') and el.format == 'tex' then
      math_block_text = math_block_text .. el.text
      return {}
    elseif el.t == 'Str' then
      math_block_text = math_block_text .. el.text
      return {}
    elseif el.t == 'SoftBreak' or el.t == 'BulletList' then
      return {}
    end
  end
  return el
end
function RawInline(el)
  return process(el)
end
function RawBlock(el)
  return process(el)
end
function Str(el)
  return process(el)
end
function SoftBreak(el)
  return process(el)
end
function Header(el)
  return process(el)
end
function Para(el)
  return process(el)
end
function Plain(el)
  return process(el)
end
function BulletList(el)
  return process(el)
end
.obsidian/plugins/obsidian-enhancing-export/lua/pdf.lua
New file
@@ -0,0 +1,50 @@
-- minimum supported version for full environment
-- support is 3.8.unkown yet to be released but probably 3
local environment_fully_supported_version = pandoc.types.Version('3.8.3')
local environment_partially_supported_version = pandoc.types.Version('3.8.0')
local is_partially_supported = PANDOC_VERSION >= environment_partially_supported_version
local problamatic_environments = {
    displaymath = true,
    math = true,
    equation = true,
    ["equation*"] = true,
    gather = true,
    ["gather*"] = true,
    multline = true,
    ["multline*"] = true,
    eqnarray = true,
    ["eqnarray*"] = true,
    align = true,
    ["align*"] = true,
    alignat = true,
    ["alignat*"] = true,
    flalign = true,
    ["flalign*"] = true,
}
if is_partially_supported then
    return {
        {
            Math = function(elem)
                if elem.text:find("^%s*\\begin{") ~= nil then
                    local replacement = pandoc.text:gsub(elem.text, "^%s*\\begin{(.-)}", "\\begin{%1}"):gsub("\\end{(.-)}%s*$", "\\end{%1}")
                    return pandoc.Math(replacement, elem.mathtype)
                else
                    return elem
                end
            end,
        }
    }
elseif not environment_fully_supported_version then
    return {
        {
            Math = function(elem)
                local result = elem.text:match("^%s*\\begin{(%a+%*?)}")
                if result ~= nil and problamatic_environments[result] ~= nil then
                    return pandoc.RawInline('tex', elem.text)
                else
                    return elem
                end
            end,
        }
    }
end
.obsidian/plugins/obsidian-enhancing-export/lua/polyfill.lua
New file
@@ -0,0 +1,61 @@
os.platform = nil
if os.platform == nil then
  local libExt = package.cpath:match("%p[\\|/]?\\.%p(%a+)")
  if libExt == 'dll' then
    os.platform = "Windows"
  elseif libExt == 'so' then
    os.platform = "Linux"
  elseif libExt == 'dylib' then
    os.platform = "MacOS"
  end
end
os.copy = function(src, dest)
  if os.platform == "Windows" then
    src = string.gsub(src, "/", "\\")
    src = os.text.toencoding(src)
    dest = os.text.toencoding(dest)
    os.execute('copy "' .. src .. '" "' .. dest .. '" >NUL')
  else
    os.execute('cp "' .. src .. '" "' .. dest .. '"')
  end
end
os.mkdir = function(dir)
  if os.exists(dir) then
    return
  end
  if os.platform == "Windows" then
    dir = os.text.toencoding(dir)
    os.execute('mkdir "' .. dir .. '"')
  else
    os.execute('mkdir -p "' .. dir .. '"')
  end
end
os.exists = function(path)
  if os.platform == "Windows" then
    path = string.gsub(path, "/", "\\")
    path = os.text.toencoding(path)
    local _, _, code = os.execute('if exist "' .. path .. '" (exit 0) else (exit 1)')
    return code == 0
  else
    local _, _, code = os.execute('test -e "' .. path .. '"')
    return code == 0
  end
end
string.starts_with = function(str, start)
   return str:sub(1, #start) == start
end
string.ends_with = function(str, ending)
   return ending == "" or str:sub(-#ending) == ending
end
return {
  os = os,
  string = string
}
.obsidian/plugins/obsidian-enhancing-export/lua/url.lua
New file
@@ -0,0 +1,18 @@
local function encode (str)
  str = string.gsub (str, "([^0-9a-zA-Z !'()*._~-])", -- locale independent
    function (c) return string.format ("%%%02X", string.byte(c)) end)
  str = string.gsub (str, " ", "%%20")
  return str
 end
local function decode (str)
  str = string.gsub (str, "%%20", " ")
  str = string.gsub (str, "%%(%x%x)", function(h) return string.char(tonumber(h,16)) end)
  return str
end
return {
  encode = encode,
  decode = decode
}
.obsidian/plugins/obsidian-enhancing-export/main.js
New file
@@ -0,0 +1,32 @@
"use strict";var Zl=e=>{throw TypeError(e)};var bl=(e,l,t)=>l.has(e)||Zl("Cannot "+t);var ml=(e,l,t)=>(bl(e,l,"read from private field"),t?t.call(e):l.get(e)),ul=(e,l,t)=>l.has(e)?Zl("Cannot add the same private member more than once"):l instanceof WeakSet?l.add(e):l.set(e,t),Gl=(e,l,t,n)=>(bl(e,l,"write to private field"),n?n.call(e,t):l.set(e,t),t);/*!
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository https://github.com/mokeyish/obsidian-enhancing-export .
*/Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const ue=require("obsidian"),wn=require("child_process"),Xt=require("process"),_l=require("electron"),ql=require("fs"),ce=require("path"),Sn=require("util");function qt(e){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(l,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return l.default=e,Object.freeze(l)}const Kn=qt(ue),ye=qt(_l),Ft=qt(ql),gt={Markdown:{name:"Markdown",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/markdown.lua" -s -o "${outputPath}" -t commonmark_x-attributes',extension:".md"},"Markdown (Hugo)":{name:"Markdown (Hugo)",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/markdown+hugo.lua" -s -o "${outputPath}" -t commonmark_x-attributes',extension:".md"},Html:{name:"Html",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/math_block.lua" --embed-resources --standalone --metadata title="${currentFileName}" -s -o "${outputPath}" -t html',customArguments:'--mathjax="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg-full.js"',extension:".html"},TextBundle:{name:"TextBundle",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/markdown.lua" -V media_dir="${outputDir}/${outputFileName}.textbundle/assets" -s -o "${outputDir}/${outputFileName}.textbundle/text.md" -t commonmark_x-attributes',extension:".md"},Typst:{name:"Typst",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/markdown.lua" -s -o "${outputPath}" -t typst',extension:".typ"},PDF:{name:"PDF",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/pdf.lua" ${ options.textemplate ? `--resource-path="${pluginDir}/textemplate" --template="${options.textemplate}"` : ` ` } -o "${outputPath}" -t pdf',customArguments:"--pdf-engine=pdflatex",optionsMeta:{textemplate:"preset:textemplate"},extension:".pdf"},"Word (.docx)":{name:"Word (.docx)",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -o "${outputPath}" -t docx',extension:".docx"},OpenOffice:{name:"OpenOffice",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -o "${outputPath}" -t odt',extension:".odt"},RTF:{name:"RTF",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -s -o "${outputPath}" -t rtf',extension:".rtf"},Epub:{name:"Epub",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -o "${outputPath}" -t epub',extension:".epub"},Latex:{name:"Latex",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" ${ options.textemplate ? `--resource-path="${pluginDir}/textemplate" --template="${options.textemplate}"` : ` ` } --extract-media="${outputDir}" -s -o "${outputPath}" -t latex',optionsMeta:{textemplate:"preset:textemplate"},extension:".tex"},"Media Wiki":{name:"Media Wiki",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -s -o "${outputPath}" -t mediawiki',extension:".mediawiki"},reStructuredText:{name:"reStructuredText",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -s -o "${outputPath}" -t rst',extension:".rst"},Textile:{name:"Textile",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -s -o "${outputPath}" -t textile',extension:".textile"},OPML:{name:"OPML",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -s -o "${outputPath}" -t opml',extension:".opml"},"Bibliography (.bib)":{name:"Bibliography",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/citefilter.lua" -o "${outputPath}" --to=bibtex "${currentPath}"',extension:".bib"},"PowerPoint (.pptx)":{name:"PowerPoint (.pptx)",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -o "${outputPath}" -t pptx',extension:".pptx"},Custom:{name:"Custom",type:"custom",command:"your command",targetFileExtensions:".ext"}};function Ae(e,l,t){return typeof l=="string"&&l.trim()===""&&(l=void 0),t instanceof Array?t.reduce((n,c)=>Ae(n,l,c),e):(t??(t=Xt.platform),{...e??{},[t]:l})}function Ze(e,l){e??(e={});const t=e[l??Xt.platform],n=e["*"];return n&&typeof n=="object"?Object.assign({},n,t):t??n}function M(e,...l){return function(...t){const n=t[t.length-1]||{},c=[e[0]];return l.forEach(function(i,o){const s=Number.isInteger(i)?t[i]:n[i];c.push(s,e[o+1])}),c.join("")}}function jt(e,l){return l=l??{},new Promise((t,n)=>{wn.exec(e,l,(c,i,o)=>{if(c){n(c),console.error(i,c);return}if(o&&o!==""){n(o),console.error(i,c);return}(i==null?void 0:i.trim().length)===0&&localStorage.getItem("debug-plugin")==="1"&&console.log(i),t(i)})})}function En(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.substring(1,e.length-1):e}function Lt(e,l={}){for(;;)try{const t=Object.keys(l).filter(Qn),n=t.map(c=>l[c]);return new Function(...t,`{ return \`${e.replaceAll("\\","\\\\")}\` }`).bind(l)(...n)}catch(t){if(t instanceof ReferenceError&&t.message.endsWith("is not defined")){const n=t.message.substring(0,t.message.indexOf(" ")),c=Object.keys(l).filter(i=>i.toLowerCase()===n.toLowerCase()).map(i=>l[i])[0]??`\${${n}}`;l[n]=c}else throw t}}const Qn=e=>{if(typeof e!="string"||e.trim()!==e)return!1;try{new Function(e,"var "+e)}catch{return!1}return!0},zn={textemplate:{title:"Latex Template",type:"dropdown",options:[{name:"None",value:null},{name:"Dissertation",value:"dissertation.tex"},{name:"Academic Paper",value:"neurips.tex"}]}},_e=(()=>{let e={};return e=Ae(e,{HOME:"${HOME}",PATH:"${PATH}",TEXINPUTS:"${pluginDir}/textemplate/:"},"*"),e=Ae(e,{TEXINPUTS:"${pluginDir}/textemplate/;",PATH:"${HOME}\\AppData\\Local\\Pandoc;${PATH}"},"win32"),e=Ae(e,{PATH:"/opt/homebrew/bin:/usr/local/bin:/Library/TeX/texbin:${PATH}"},"darwin"),e})(),Me={items:Object.values(gt).filter(e=>e.type!=="custom"),pandocPath:void 0,defaultExportDirectoryMode:"Auto",openExportedFile:!0,env:_e,showExportProgressBar:!0};function en(e){var l;return e.type==="pandoc"?e.extension:e.type==="custom"?(l=e.targetFileExtensions)==null?void 0:l.split(",")[0]:""}function tn(e,l){return e=Object.assign({},Ze(_e),e),l=Object.assign({HOME:process.env.HOME??process.env.USERPROFILE},process.env,l??{}),Object.fromEntries(Object.entries(e).map(([t,n])=>[t,Lt(n,l)]))}function Un(e){return e?Object.fromEntries(Object.entries(e).map(([l,t])=>[l,typeof t=="string"?zn[t.startsWith("preset:")?t.substring(7):""]:t])):{}}const jn=(e,l)=>e===l,Xe=Symbol("solid-proxy"),Mt=Symbol("solid-track"),ut={equals:jn};let ln=rn;const Fe=1,Gt=2,nn={owned:null,cleanups:null,context:null,owner:null};var $=null;let Ht=null,Ln=null,O=null,ie=null,Je=null,ft=0;function we(e,l){const t=O,n=$,c=e.length===0,i=n,o=c?nn:{owned:null,cleanups:null,context:i?i.context:null,owner:i},s=c?e:()=>e(()=>P(()=>Rt(o)));$=o,O=null;try{return Ue(s,!0)}finally{O=t,$=n}}function de(e,l){l=l?Object.assign({},ut,l):ut;const t={value:e,observers:null,observerSlots:null,comparator:l.equals||void 0},n=c=>(typeof c=="function"&&(c=c(t.value)),an(t,c));return[on.bind(t),n]}function ne(e,l,t){const n=el(e,l,!1,Fe);lt(n)}function Ye(e,l,t){ln=Pn;const n=el(e,l,!1,Fe);n.user=!0,Je?Je.push(n):lt(n)}function le(e,l,t){t=t?Object.assign({},ut,t):ut;const n=el(e,l,!0,0);return n.observers=null,n.observerSlots=null,n.comparator=t.equals||void 0,lt(n),on.bind(n)}function Zt(e){return Ue(e,!1)}function P(e){if(O===null)return e();const l=O;O=null;try{return e()}finally{O=l}}function cn(e){Ye(()=>P(e))}function ze(e){return $===null||($.cleanups===null?$.cleanups=[e]:$.cleanups.push(e)),e}function Tt(){return O}function Mn(e,l){const t=Symbol("context");return{id:t,Provider:_n(t),defaultValue:e}}function Tn(e){let l;return $&&$.context&&(l=$.context[e.id])!==void 0?l:e.defaultValue}function sn(e){const l=le(e),t=le(()=>$t(l()));return t.toArray=()=>{const n=t();return Array.isArray(n)?n:n!=null?[n]:[]},t}function on(){if(this.sources&&this.state)if(this.state===Fe)lt(this);else{const e=ie;ie=null,Ue(()=>Ct(this),!1),ie=e}if(O){const e=this.observers?this.observers.length:0;O.sources?(O.sources.push(this),O.sourceSlots.push(e)):(O.sources=[this],O.sourceSlots=[e]),this.observers?(this.observers.push(O),this.observerSlots.push(O.sources.length-1)):(this.observers=[O],this.observerSlots=[O.sources.length-1])}return this.value}function an(e,l,t){let n=e.value;return(!e.comparator||!e.comparator(n,l))&&(e.value=l,e.observers&&e.observers.length&&Ue(()=>{for(let c=0;c<e.observers.length;c+=1){const i=e.observers[c],o=Ht&&Ht.running;o&&Ht.disposed.has(i),(o?!i.tState:!i.state)&&(i.pure?ie.push(i):Je.push(i),i.observers&&dn(i)),o||(i.state=Fe)}if(ie.length>1e6)throw ie=[],new Error},!1)),l}function lt(e){if(!e.fn)return;Rt(e);const l=ft;$n(e,e.value,l)}function $n(e,l,t){let n;const c=$,i=O;O=$=e;try{n=e.fn(l)}catch(o){return e.pure&&(e.state=Fe,e.owned&&e.owned.forEach(Rt),e.owned=null),e.updatedAt=t+1,gn(o)}finally{O=i,$=c}(!e.updatedAt||e.updatedAt<=t)&&(e.updatedAt!=null&&"observers"in e?an(e,n):e.value=n,e.updatedAt=t)}function el(e,l,t,n=Fe,c){const i={fn:e,state:n,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:l,owner:$,context:$?$.context:null,pure:t};return $===null||$!==nn&&($.owned?$.owned.push(i):$.owned=[i]),i}function It(e){if(e.state===0)return;if(e.state===Gt)return Ct(e);if(e.suspense&&P(e.suspense.inFallback))return e.suspense.effects.push(e);const l=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<ft);)e.state&&l.push(e);for(let t=l.length-1;t>=0;t--)if(e=l[t],e.state===Fe)lt(e);else if(e.state===Gt){const n=ie;ie=null,Ue(()=>Ct(e,l[0]),!1),ie=n}}function Ue(e,l){if(ie)return e();let t=!1;l||(ie=[]),Je?t=!0:Je=[],ft++;try{const n=e();return On(t),n}catch(n){t||(Je=null),ie=null,gn(n)}}function On(e){if(ie&&(rn(ie),ie=null),e)return;const l=Je;Je=null,l.length&&Ue(()=>ln(l),!1)}function rn(e){for(let l=0;l<e.length;l++)It(e[l])}function Pn(e){let l,t=0;for(l=0;l<e.length;l++){const n=e[l];n.user?e[t++]=n:It(n)}for(l=0;l<t;l++)It(e[l])}function Ct(e,l){e.state=0;for(let t=0;t<e.sources.length;t+=1){const n=e.sources[t];if(n.sources){const c=n.state;c===Fe?n!==l&&(!n.updatedAt||n.updatedAt<ft)&&It(n):c===Gt&&Ct(n,l)}}}function dn(e){for(let l=0;l<e.observers.length;l+=1){const t=e.observers[l];t.state||(t.state=Gt,t.pure?ie.push(t):Je.push(t),t.observers&&dn(t))}}function Rt(e){let l;if(e.sources)for(;e.sources.length;){const t=e.sources.pop(),n=e.sourceSlots.pop(),c=t.observers;if(c&&c.length){const i=c.pop(),o=t.observerSlots.pop();n<c.length&&(i.sourceSlots[o]=n,c[n]=i,t.observerSlots[n]=o)}}if(e.owned){for(l=e.owned.length-1;l>=0;l--)Rt(e.owned[l]);e.owned=null}if(e.cleanups){for(l=e.cleanups.length-1;l>=0;l--)e.cleanups[l]();e.cleanups=null}e.state=0}function Dn(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function gn(e,l=$){throw Dn(e)}function $t(e){if(typeof e=="function"&&!e.length)return $t(e());if(Array.isArray(e)){const l=[];for(let t=0;t<e.length;t++){const n=$t(e[t]);Array.isArray(n)?l.push.apply(l,n):l.push(n)}return l}return e}function _n(e,l){return function(n){let c;return ne(()=>c=P(()=>($.context={...$.context,[e]:n.value},sn(()=>n.children))),void 0),c}}const qn=Symbol("fallback");function Il(e){for(let l=0;l<e.length;l++)e[l]()}function ec(e,l,t={}){let n=[],c=[],i=[],o=0,s=l.length>1?[]:null;return ze(()=>Il(i)),()=>{let a=e()||[],Z=a.length,u,b;return a[Mt],P(()=>{let f,J,U,m,E,S,K,T,Q;if(Z===0)o!==0&&(Il(i),i=[],n=[],c=[],o=0,s&&(s=[])),t.fallback&&(n=[qn],c[0]=we(be=>(i[0]=be,t.fallback())),o=1);else if(o===0){for(c=new Array(Z),b=0;b<Z;b++)n[b]=a[b],c[b]=we(N);o=Z}else{for(U=new Array(Z),m=new Array(Z),s&&(E=new Array(Z)),S=0,K=Math.min(o,Z);S<K&&n[S]===a[S];S++);for(K=o-1,T=Z-1;K>=S&&T>=S&&n[K]===a[T];K--,T--)U[T]=c[K],m[T]=i[K],s&&(E[T]=s[K]);for(f=new Map,J=new Array(T+1),b=T;b>=S;b--)Q=a[b],u=f.get(Q),J[b]=u===void 0?-1:u,f.set(Q,b);for(u=S;u<=K;u++)Q=n[u],b=f.get(Q),b!==void 0&&b!==-1?(U[b]=c[u],m[b]=i[u],s&&(E[b]=s[u]),b=J[b],f.set(Q,b)):i[u]();for(b=S;b<Z;b++)b in U?(c[b]=U[b],i[b]=m[b],s&&(s[b]=E[b],s[b](b))):c[b]=we(N);c=c.slice(0,o=Z),n=a.slice(0)}return c});function N(f){if(i[b]=f,s){const[J,U]=de(b);return s[b]=U,l(a[b],J)}return l(a[b])}}}function I(e,l){return P(()=>e(l||{}))}function it(){return!0}const Cl={get(e,l,t){return l===Xe?t:e.get(l)},has(e,l){return l===Xe?!0:e.has(l)},set:it,deleteProperty:it,getOwnPropertyDescriptor(e,l){return{configurable:!0,enumerable:!0,get(){return e.get(l)},set:it,deleteProperty:it}},ownKeys(e){return e.keys()}};function tc(e,...l){if(Xe in e){const c=new Set(l.length>1?l.flat():l[0]),i=l.map(o=>new Proxy({get(s){return o.includes(s)?e[s]:void 0},has(s){return o.includes(s)&&s in e},keys(){return o.filter(s=>s in e)}},Cl));return i.push(new Proxy({get(o){return c.has(o)?void 0:e[o]},has(o){return c.has(o)?!1:o in e},keys(){return Object.keys(e).filter(o=>!c.has(o))}},Cl)),i}const t={},n=l.map(()=>({}));for(const c of Object.getOwnPropertyNames(e)){const i=Object.getOwnPropertyDescriptor(e,c),o=!i.get&&!i.set&&i.enumerable&&i.writable&&i.configurable;let s=!1,a=0;for(const Z of l)Z.includes(c)&&(s=!0,o?n[a][c]=i.value:Object.defineProperty(n[a],c,i)),++a;s||(o?t[c]=i.value:Object.defineProperty(t,c,i))}return[...n,t]}const Zn=e=>`Stale read from <${e}>.`;function bn(e){const l="fallback"in e&&{fallback:()=>e.fallback};return le(ec(()=>e.each,e.children,l||void 0))}function bt(e){const l=e.keyed,t=le(()=>e.when,void 0,{equals:(n,c)=>l?n===c:!n==!c});return le(()=>{const n=t();if(n){const c=e.children;return typeof c=="function"&&c.length>0?P(()=>c(l?n:()=>{if(!P(t))throw Zn("Show");return e.when})):c}return e.fallback},void 0,void 0)}function lc(e){let l=!1;const t=(i,o)=>(l?i[1]===o[1]:!i[1]==!o[1])&&i[2]===o[2],n=sn(()=>e.children),c=le(()=>{let i=n();Array.isArray(i)||(i=[i]);for(let o=0;o<i.length;o++){const s=i[o].when;if(s)return l=!!i[o].keyed,[o,s,i[o]]}return[-1]},void 0,{equals:t});return le(()=>{const[i,o,s]=c();if(i<0)return e.fallback;const a=s.children;return typeof a=="function"&&a.length>0?P(()=>a(l?o:()=>{if(P(c)[0]!==i)throw Zn("Match");return s.when})):a},void 0,void 0)}function Wl(e){return e}const nc=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected"],cc=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...nc]),ic=new Set(["innerHTML","textContent","innerText","children"]),sc=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),oc=Object.assign(Object.create(null),{class:"className",formnovalidate:{$:"formNoValidate",BUTTON:1,INPUT:1},ismap:{$:"isMap",IMG:1},nomodule:{$:"noModule",SCRIPT:1},playsinline:{$:"playsInline",VIDEO:1},readonly:{$:"readOnly",INPUT:1,TEXTAREA:1}});function ac(e,l){const t=oc[e];return typeof t=="object"?t[l]?t.$:void 0:t}const rc=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]),dc=new Set(["altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignObject","g","glyph","glyphRef","hkern","image","line","linearGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","svg","switch","symbol","text","textPath","tref","tspan","use","view","vkern"]),gc={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"};function Zc(e,l,t){let n=t.length,c=l.length,i=n,o=0,s=0,a=l[c-1].nextSibling,Z=null;for(;o<c||s<i;){if(l[o]===t[s]){o++,s++;continue}for(;l[c-1]===t[i-1];)c--,i--;if(c===o){const u=i<n?s?t[s-1].nextSibling:t[i-s]:a;for(;s<i;)e.insertBefore(t[s++],u)}else if(i===s)for(;o<c;)(!Z||!Z.has(l[o]))&&l[o].remove(),o++;else if(l[o]===t[i-1]&&t[s]===l[c-1]){const u=l[--c].nextSibling;e.insertBefore(t[s++],l[o++].nextSibling),e.insertBefore(t[--i],u),l[c]=t[i]}else{if(!Z){Z=new Map;let b=s;for(;b<i;)Z.set(t[b],b++)}const u=Z.get(l[o]);if(u!=null)if(s<u&&u<i){let b=o,N=1,f;for(;++b<c&&b<i&&!((f=Z.get(l[b]))==null||f!==u+N);)N++;if(N>u-s){const J=l[o];for(;s<u;)e.insertBefore(t[s++],J)}else e.replaceChild(t[s++],l[o++])}else o++;else l[o++].remove()}}}const hl="_$DX_DELEGATE";function Ge(e,l,t){let n;const c=()=>{const o=document.createElement("template");return o.innerHTML=e,o.content.firstChild},i=()=>(n||(n=c())).cloneNode(!0);return i.cloneNode=i,i}function tl(e,l=window.document){const t=l[hl]||(l[hl]=new Set);for(let n=0,c=e.length;n<c;n++){const i=e[n];t.has(i)||(t.add(i),l.addEventListener(i,Cc))}}function xe(e,l,t){t==null?e.removeAttribute(l):e.setAttribute(l,t)}function bc(e,l,t,n){n==null?e.removeAttributeNS(l,t):e.setAttributeNS(l,t,n)}function mn(e,l){l==null?e.removeAttribute("class"):e.className=l}function ll(e,l,t,n){if(n)Array.isArray(t)?(e[`$$${l}`]=t[0],e[`$$${l}Data`]=t[1]):e[`$$${l}`]=t;else if(Array.isArray(t)){const c=t[0];e.addEventListener(l,t[0]=i=>c.call(e,t[1],i))}else e.addEventListener(l,t)}function mc(e,l,t={}){const n=Object.keys(l||{}),c=Object.keys(t);let i,o;for(i=0,o=c.length;i<o;i++){const s=c[i];!s||s==="undefined"||l[s]||(pl(e,s,!1),delete t[s])}for(i=0,o=n.length;i<o;i++){const s=n[i],a=!!l[s];!s||s==="undefined"||t[s]===a||!a||(pl(e,s,!0),t[s]=a)}return t}function nl(e,l,t){if(!l)return t?xe(e,"style"):l;const n=e.style;if(typeof l=="string")return n.cssText=l;typeof t=="string"&&(n.cssText=t=void 0),t||(t={}),l||(l={});let c,i;for(i in t)l[i]==null&&n.removeProperty(i),delete t[i];for(i in l)c=l[i],c!==t[i]&&(n.setProperty(i,c),t[i]=c);return t}function uc(e,l={},t,n){const c={};return ne(()=>c.children=qe(e,l.children,c.children)),ne(()=>typeof l.ref=="function"&&Vt(l.ref,e)),ne(()=>Gc(e,l,t,!0,c,!0)),c}function Vt(e,l,t){return P(()=>e(l,t))}function se(e,l,t,n){if(t!==void 0&&!n&&(n=[]),typeof l!="function")return qe(e,l,n,t);ne(c=>qe(e,l(),c,t),n)}function Gc(e,l,t,n,c={},i=!1){l||(l={});for(const o in c)if(!(o in l)){if(o==="children")continue;c[o]=Xl(e,o,null,c[o],t,i)}for(const o in l){if(o==="children")continue;const s=l[o];c[o]=Xl(e,o,s,c[o],t,i)}}function Ic(e){return e.toLowerCase().replace(/-([a-z])/g,(l,t)=>t.toUpperCase())}function pl(e,l,t){const n=l.trim().split(/\s+/);for(let c=0,i=n.length;c<i;c++)e.classList.toggle(n[c],t)}function Xl(e,l,t,n,c,i){let o,s,a,Z,u;if(l==="style")return nl(e,t,n);if(l==="classList")return mc(e,t,n);if(t===n)return n;if(l==="ref")i||t(e);else if(l.slice(0,3)==="on:"){const b=l.slice(3);n&&e.removeEventListener(b,n),t&&e.addEventListener(b,t)}else if(l.slice(0,10)==="oncapture:"){const b=l.slice(10);n&&e.removeEventListener(b,n,!0),t&&e.addEventListener(b,t,!0)}else if(l.slice(0,2)==="on"){const b=l.slice(2).toLowerCase(),N=rc.has(b);if(!N&&n){const f=Array.isArray(n)?n[0]:n;e.removeEventListener(b,f)}(N||t)&&(ll(e,b,t,N),N&&tl([b]))}else if(l.slice(0,5)==="attr:")xe(e,l.slice(5),t);else if((u=l.slice(0,5)==="prop:")||(a=ic.has(l))||!c&&((Z=ac(l,e.tagName))||(s=cc.has(l)))||(o=e.nodeName.includes("-")))u&&(l=l.slice(5),s=!0),l==="class"||l==="className"?mn(e,t):o&&!s&&!a?e[Ic(l)]=t:e[Z||l]=t;else{const b=c&&l.indexOf(":")>-1&&gc[l.split(":")[0]];b?bc(e,b,l,t):xe(e,sc[l]||l,t)}return t}function Cc(e){const l=`$$${e.type}`;let t=e.composedPath&&e.composedPath()[0]||e.target;for(e.target!==t&&Object.defineProperty(e,"target",{configurable:!0,value:t}),Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}});t;){const n=t[l];if(n&&!t.disabled){const c=t[`${l}Data`];if(c!==void 0?n.call(t,c,e):n.call(t,e),e.cancelBubble)return}t=t._$host||t.parentNode||t.host}}function qe(e,l,t,n,c){for(;typeof t=="function";)t=t();if(l===t)return t;const i=typeof l,o=n!==void 0;if(e=o&&t[0]&&t[0].parentNode||e,i==="string"||i==="number"){if(i==="number"&&(l=l.toString(),l===t))return t;if(o){let s=t[0];s&&s.nodeType===3?s.data!==l&&(s.data=l):s=document.createTextNode(l),t=ve(e,t,n,s)}else t!==""&&typeof t=="string"?t=e.firstChild.data=l:t=e.textContent=l}else if(l==null||i==="boolean")t=ve(e,t,n);else{if(i==="function")return ne(()=>{let s=l();for(;typeof s=="function";)s=s();t=qe(e,s,t,n)}),()=>t;if(Array.isArray(l)){const s=[],a=t&&Array.isArray(t);if(Ot(s,l,t,c))return ne(()=>t=qe(e,s,t,n,!0)),()=>t;if(s.length===0){if(t=ve(e,t,n),o)return t}else a?t.length===0?fl(e,s,n):Zc(e,t,s):(t&&ve(e),fl(e,s));t=s}else if(l.nodeType){if(Array.isArray(t)){if(o)return t=ve(e,t,n,l);ve(e,t,null,l)}else t==null||t===""||!e.firstChild?e.appendChild(l):e.replaceChild(l,e.firstChild);t=l}}return t}function Ot(e,l,t,n){let c=!1;for(let i=0,o=l.length;i<o;i++){let s=l[i],a=t&&t[e.length],Z;if(!(s==null||s===!0||s===!1))if((Z=typeof s)=="object"&&s.nodeType)e.push(s);else if(Array.isArray(s))c=Ot(e,s,a)||c;else if(Z==="function")if(n){for(;typeof s=="function";)s=s();c=Ot(e,Array.isArray(s)?s:[s],Array.isArray(a)?a:[a])||c}else e.push(s),c=!0;else{const u=String(s);a&&a.nodeType===3&&a.data===u?e.push(a):e.push(document.createTextNode(u))}}return c}function fl(e,l,t=null){for(let n=0,c=l.length;n<c;n++)e.insertBefore(l[n],t)}function ve(e,l,t,n){if(t===void 0)return e.textContent="";const c=n||document.createTextNode("");if(l.length){let i=!1;for(let o=l.length-1;o>=0;o--){const s=l[o];if(c!==s){const a=s.parentNode===e;!i&&!o?a?e.replaceChild(c,s):e.insertBefore(c,t):a&&s.remove()}else i=!0}}else e.insertBefore(c,t);return[c]}const Wc="http://www.w3.org/2000/svg";function hc(e,l=!1){return l?document.createElementNS(Wc,e):document.createElement(e)}function pc(e){const[l,t]=tc(e,["component"]),n=le(()=>l.component);return le(()=>{const c=n();switch(typeof c){case"function":return P(()=>c(t));case"string":const i=dc.has(c),o=hc(c,i);return uc(o,t,i),o}})}/**
 * @license
 * Copyright (c) 2016, Contributors
 * SPDX-License-Identifier: ISC
 */function $e(e){if(e!==e.toLowerCase()&&e!==e.toUpperCase()||(e=e.toLowerCase()),e.indexOf("-")===-1&&e.indexOf("_")===-1)return e;{let t="",n=!1;const c=e.match(/^-+/);for(let i=c?c[0].length:0;i<e.length;i++){let o=e.charAt(i);n&&(n=!1,o=o.toUpperCase()),i!==0&&(o==="-"||o==="_")?n=!0:o!=="-"&&o!=="_"&&(t+=o)}return t}}function un(e,l){const t=e.toLowerCase();l=l||"-";let n="";for(let c=0;c<e.length;c++){const i=t.charAt(c),o=e.charAt(c);i!==o&&c>0?n+=`${l}${t.charAt(c)}`:n+=o}return n}function Gn(e){return e==null?!1:typeof e=="number"||/^0x[0-9a-f]+$/i.test(e)?!0:/^0[^.]/.test(e)?!1:/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e)}/**
 * @license
 * Copyright (c) 2016, Contributors
 * SPDX-License-Identifier: ISC
 */function Xc(e){if(Array.isArray(e))return e.map(o=>typeof o!="string"?o+"":o);e=e.trim();let l=0,t=null,n=null,c=null;const i=[];for(let o=0;o<e.length;o++){if(t=n,n=e.charAt(o),n===" "&&!c){t!==" "&&l++;continue}n===c?c=null:(n==="'"||n==='"')&&!c&&(c=n),i[l]||(i[l]=""),i[l]+=n}return i}/**
 * @license
 * Copyright (c) 2016, Contributors
 * SPDX-License-Identifier: ISC
 */var Ie;(function(e){e.BOOLEAN="boolean",e.STRING="string",e.NUMBER="number",e.ARRAY="array"})(Ie||(Ie={}));/**
 * @license
 * Copyright (c) 2016, Contributors
 * SPDX-License-Identifier: ISC
 */let Re;class fc{constructor(l){Re=l}parse(l,t){const n=Object.assign({alias:void 0,array:void 0,boolean:void 0,config:void 0,configObjects:void 0,configuration:void 0,coerce:void 0,count:void 0,default:void 0,envPrefix:void 0,narg:void 0,normalize:void 0,string:void 0,number:void 0,__:void 0,key:void 0},t),c=Xc(l),i=typeof l=="string",o=Rc(Object.assign(Object.create(null),n.alias)),s=Object.assign({"boolean-negation":!0,"camel-case-expansion":!0,"combine-arrays":!1,"dot-notation":!0,"duplicate-arguments-array":!0,"flatten-duplicate-arrays":!0,"greedy-arrays":!0,"halt-at-non-option":!1,"nargs-eats-options":!1,"negation-prefix":"no-","parse-numbers":!0,"parse-positional-numbers":!0,"populate--":!1,"set-placeholder-key":!1,"short-option-groups":!0,"strip-aliased":!1,"strip-dashed":!1,"unknown-options-as-args":!1},n.configuration),a=Object.assign(Object.create(null),n.default),Z=n.configObjects||[],u=n.envPrefix,b=s["populate--"],N=b?"--":"_",f=Object.create(null),J=Object.create(null),U=n.__||Re.format,m={aliases:Object.create(null),arrays:Object.create(null),bools:Object.create(null),strings:Object.create(null),numbers:Object.create(null),counts:Object.create(null),normalize:Object.create(null),configs:Object.create(null),nargs:Object.create(null),coercions:Object.create(null),keys:[]},E=/^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/,S=new RegExp("^--"+s["negation-prefix"]+"(.+)");[].concat(n.array||[]).filter(Boolean).forEach(function(r){const g=typeof r=="object"?r.key:r,X=Object.keys(r).map(function(G){return{boolean:"bools",string:"strings",number:"numbers"}[G]}).filter(Boolean).pop();X&&(m[X][g]=!0),m.arrays[g]=!0,m.keys.push(g)}),[].concat(n.boolean||[]).filter(Boolean).forEach(function(r){m.bools[r]=!0,m.keys.push(r)}),[].concat(n.string||[]).filter(Boolean).forEach(function(r){m.strings[r]=!0,m.keys.push(r)}),[].concat(n.number||[]).filter(Boolean).forEach(function(r){m.numbers[r]=!0,m.keys.push(r)}),[].concat(n.count||[]).filter(Boolean).forEach(function(r){m.counts[r]=!0,m.keys.push(r)}),[].concat(n.normalize||[]).filter(Boolean).forEach(function(r){m.normalize[r]=!0,m.keys.push(r)}),typeof n.narg=="object"&&Object.entries(n.narg).forEach(([r,g])=>{typeof g=="number"&&(m.nargs[r]=g,m.keys.push(r))}),typeof n.coerce=="object"&&Object.entries(n.coerce).forEach(([r,g])=>{typeof g=="function"&&(m.coercions[r]=g,m.keys.push(r))}),typeof n.config<"u"&&(Array.isArray(n.config)||typeof n.config=="string"?[].concat(n.config).filter(Boolean).forEach(function(r){m.configs[r]=!0}):typeof n.config=="object"&&Object.entries(n.config).forEach(([r,g])=>{(typeof g=="boolean"||typeof g=="function")&&(m.configs[r]=g)})),D(n.key,o,n.default,m.arrays),Object.keys(a).forEach(function(r){(m.aliases[r]||[]).forEach(function(g){a[g]=a[r]})});let K=null;kn();let T=[];const Q=Object.assign(Object.create(null),{_:[]}),be={};for(let r=0;r<c.length;r++){const g=c[r],X=g.replace(/^-{3,}/,"---");let G,d,x,A,y,ee;if(g!=="--"&&/^-/.test(g)&&He(g))me(g);else if(X.match(/^---+(=|$)/)){me(g);continue}else if(g.match(/^--.+=/)||!s["short-option-groups"]&&g.match(/^-.+=/))A=g.match(/^--?([^=]+)=([\s\S]*)$/),A!==null&&Array.isArray(A)&&A.length>=3&&(Y(A[1],m.arrays)?r=W(r,A[1],c,A[2]):Y(A[1],m.nargs)!==!1?r=h(r,A[1],c,A[2]):R(A[1],A[2],!0));else if(g.match(S)&&s["boolean-negation"])A=g.match(S),A!==null&&Array.isArray(A)&&A.length>=2&&(d=A[1],R(d,Y(d,m.arrays)?[!1]:!1));else if(g.match(/^--.+/)||!s["short-option-groups"]&&g.match(/^-[^-]+/))A=g.match(/^--?(.+)/),A!==null&&Array.isArray(A)&&A.length>=2&&(d=A[1],Y(d,m.arrays)?r=W(r,d,c):Y(d,m.nargs)!==!1?r=h(r,d,c):(y=c[r+1],y!==void 0&&(!y.match(/^-/)||y.match(E))&&!Y(d,m.bools)&&!Y(d,m.counts)||/^(true|false)$/.test(y)?(R(d,y),r++):R(d,te(d))));else if(g.match(/^-.\..+=/))A=g.match(/^-([^=]+)=([\s\S]*)$/),A!==null&&Array.isArray(A)&&A.length>=3&&R(A[1],A[2]);else if(g.match(/^-.\..+/)&&!g.match(E))y=c[r+1],A=g.match(/^-(.\..+)/),A!==null&&Array.isArray(A)&&A.length>=2&&(d=A[1],y!==void 0&&!y.match(/^-/)&&!Y(d,m.bools)&&!Y(d,m.counts)?(R(d,y),r++):R(d,te(d)));else if(g.match(/^-[^-]+/)&&!g.match(E)){x=g.slice(1,-1).split(""),G=!1;for(let oe=0;oe<x.length;oe++){if(y=g.slice(oe+2),x[oe+1]&&x[oe+1]==="="){ee=g.slice(oe+3),d=x[oe],Y(d,m.arrays)?r=W(r,d,c,ee):Y(d,m.nargs)!==!1?r=h(r,d,c,ee):R(d,ee),G=!0;break}if(y==="-"){R(x[oe],y);continue}if(/[A-Za-z]/.test(x[oe])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(y)&&Y(y,m.bools)===!1){R(x[oe],y),G=!0;break}if(x[oe+1]&&x[oe+1].match(/\W/)){R(x[oe],y),G=!0;break}else R(x[oe],te(x[oe]))}d=g.slice(-1)[0],!G&&d!=="-"&&(Y(d,m.arrays)?r=W(r,d,c):Y(d,m.nargs)!==!1?r=h(r,d,c):(y=c[r+1],y!==void 0&&(!/^(-|--)[^-]/.test(y)||y.match(E))&&!Y(d,m.bools)&&!Y(d,m.counts)||/^(true|false)$/.test(y)?(R(d,y),r++):R(d,te(d))))}else if(g.match(/^-[0-9]$/)&&g.match(E)&&Y(g.slice(1),m.bools))d=g.slice(1),R(d,te(d));else if(g==="--"){T=c.slice(r+1);break}else if(s["halt-at-non-option"]){T=c.slice(r);break}else me(g)}V(Q,!0),V(Q,!1),p(Q),H(),j(Q,m.aliases,a,!0),B(Q),s["set-placeholder-key"]&&w(Q),Object.keys(m.counts).forEach(function(r){k(Q,r.split("."))||R(r,0)}),b&&T.length&&(Q[N]=[]),T.forEach(function(r){Q[N].push(r)}),s["camel-case-expansion"]&&s["strip-dashed"]&&Object.keys(Q).filter(r=>r!=="--"&&r.includes("-")).forEach(r=>{delete Q[r]}),s["strip-aliased"]&&[].concat(...Object.keys(o).map(r=>o[r])).forEach(r=>{s["camel-case-expansion"]&&r.includes("-")&&delete Q[r.split(".").map(g=>$e(g)).join(".")],delete Q[r]});function me(r){const g=C("_",r);(typeof g=="string"||typeof g=="number")&&Q._.push(g)}function h(r,g,X,G){let d,x=Y(g,m.nargs);if(x=typeof x!="number"||isNaN(x)?1:x,x===0)return fe(G)||(K=Error(U("Argument unexpected for: %s",g))),R(g,te(g)),r;let A=fe(G)?0:1;if(s["nargs-eats-options"])X.length-(r+1)+A<x&&(K=Error(U("Not enough arguments following: %s",g))),A=x;else{for(d=r+1;d<X.length&&(!X[d].match(/^-[^0-9]/)||X[d].match(E)||He(X[d]));d++)A++;A<x&&(K=Error(U("Not enough arguments following: %s",g)))}let y=Math.min(A,x);for(!fe(G)&&y>0&&(R(g,G),y--),d=r+1;d<y+r+1;d++)R(g,X[d]);return r+y}function W(r,g,X,G){let d=[],x=G||X[r+1];const A=Y(g,m.nargs);if(Y(g,m.bools)&&!/^(true|false)$/.test(x))d.push(!0);else if(fe(x)||fe(G)&&/^-/.test(x)&&!E.test(x)&&!He(x)){if(a[g]!==void 0){const y=a[g];d=Array.isArray(y)?y:[y]}}else{fe(G)||d.push(q(g,G,!0));for(let y=r+1;y<X.length&&!(!s["greedy-arrays"]&&d.length>0||A&&typeof A=="number"&&d.length>=A||(x=X[y],/^-/.test(x)&&!E.test(x)&&!He(x)));y++)r=y,d.push(q(g,x,i))}return typeof A=="number"&&(A&&d.length<A||isNaN(A)&&d.length===0)&&(K=Error(U("Not enough arguments following: %s",g))),R(g,d),r}function R(r,g,X=i){if(/-/.test(r)&&s["camel-case-expansion"]){const x=r.split(".").map(function(A){return $e(A)}).join(".");v(r,x)}const G=q(r,g,X),d=r.split(".");L(Q,d,G),m.aliases[r]&&m.aliases[r].forEach(function(x){const A=x.split(".");L(Q,A,G)}),d.length>1&&s["dot-notation"]&&(m.aliases[d[0]]||[]).forEach(function(x){let A=x.split(".");const y=[].concat(d);y.shift(),A=A.concat(y),(m.aliases[r]||[]).includes(A.join("."))||L(Q,A,G)}),Y(r,m.normalize)&&!Y(r,m.arrays)&&[r].concat(m.aliases[r]||[]).forEach(function(A){Object.defineProperty(be,A,{enumerable:!0,get(){return g},set(y){g=typeof y=="string"?Re.normalize(y):y}})})}function v(r,g){m.aliases[r]&&m.aliases[r].length||(m.aliases[r]=[g],f[g]=!0),m.aliases[g]&&m.aliases[g].length||v(g,r)}function q(r,g,X){X&&(g=Vc(g)),(Y(r,m.bools)||Y(r,m.counts))&&typeof g=="string"&&(g=g==="true");let G=Array.isArray(g)?g.map(function(d){return C(r,d)}):C(r,g);return Y(r,m.counts)&&(fe(G)||typeof G=="boolean")&&(G=Nt()),Y(r,m.normalize)&&Y(r,m.arrays)&&(Array.isArray(g)?G=g.map(d=>Re.normalize(d)):G=Re.normalize(g)),G}function C(r,g){return!s["parse-positional-numbers"]&&r==="_"||!Y(r,m.strings)&&!Y(r,m.bools)&&!Array.isArray(g)&&(Gn(g)&&s["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${g}`)))||!fe(g)&&Y(r,m.numbers))&&(g=Number(g)),g}function p(r){const g=Object.create(null);j(g,m.aliases,a),Object.keys(m.configs).forEach(function(X){const G=r[X]||g[X];if(G)try{let d=null;const x=Re.resolve(Re.cwd(),G),A=m.configs[X];if(typeof A=="function"){try{d=A(x)}catch(y){d=y}if(d instanceof Error){K=d;return}}else d=Re.require(x);F(d)}catch(d){d.name==="PermissionDenied"?K=d:r[X]&&(K=Error(U("Invalid JSON config file: %s",G)))}})}function F(r,g){Object.keys(r).forEach(function(X){const G=r[X],d=g?g+"."+X:X;typeof G=="object"&&G!==null&&!Array.isArray(G)&&s["dot-notation"]?F(G,d):(!k(Q,d.split("."))||Y(d,m.arrays)&&s["combine-arrays"])&&R(d,G)})}function H(){typeof Z<"u"&&Z.forEach(function(r){F(r)})}function V(r,g){if(typeof u>"u")return;const X=typeof u=="string"?u:"",G=Re.env();Object.keys(G).forEach(function(d){if(X===""||d.lastIndexOf(X,0)===0){const x=d.split("__").map(function(A,y){return y===0&&(A=A.substring(X.length)),$e(A)});(g&&m.configs[x.join(".")]||!g)&&!k(r,x)&&R(x.join("."),G[d])}})}function B(r){let g;const X=new Set;Object.keys(r).forEach(function(G){if(!X.has(G)&&(g=Y(G,m.coercions),typeof g=="function"))try{const d=C(G,g(r[G]));[].concat(m.aliases[G]||[],G).forEach(x=>{X.add(x),r[x]=d})}catch(d){K=d}})}function w(r){return m.keys.forEach(g=>{~g.indexOf(".")||typeof r[g]>"u"&&(r[g]=void 0)}),r}function j(r,g,X,G=!1){Object.keys(X).forEach(function(d){k(r,d.split("."))||(L(r,d.split("."),X[d]),G&&(J[d]=!0),(g[d]||[]).forEach(function(x){k(r,x.split("."))||L(r,x.split("."),X[d])}))})}function k(r,g){let X=r;s["dot-notation"]||(g=[g.join(".")]),g.slice(0,-1).forEach(function(d){X=X[d]||{}});const G=g[g.length-1];return typeof X!="object"?!1:G in X}function L(r,g,X){let G=r;s["dot-notation"]||(g=[g.join(".")]),g.slice(0,-1).forEach(function(ee){ee=Rl(ee),typeof G=="object"&&G[ee]===void 0&&(G[ee]={}),typeof G[ee]!="object"||Array.isArray(G[ee])?(Array.isArray(G[ee])?G[ee].push({}):G[ee]=[G[ee],{}],G=G[ee][G[ee].length-1]):G=G[ee]});const d=Rl(g[g.length-1]),x=Y(g.join("."),m.arrays),A=Array.isArray(X);let y=s["duplicate-arguments-array"];!y&&Y(d,m.nargs)&&(y=!0,(!fe(G[d])&&m.nargs[d]===1||Array.isArray(G[d])&&G[d].length===m.nargs[d])&&(G[d]=void 0)),X===Nt()?G[d]=Nt(G[d]):Array.isArray(G[d])?y&&x&&A?G[d]=s["flatten-duplicate-arrays"]?G[d].concat(X):(Array.isArray(G[d][0])?G[d]:[G[d]]).concat([X]):!y&&!!x==!!A?G[d]=X:G[d]=G[d].concat([X]):G[d]===void 0&&x?G[d]=A?X:[X]:y&&!(G[d]===void 0||Y(d,m.counts)||Y(d,m.bools))?G[d]=[G[d],X]:G[d]=X}function D(...r){r.forEach(function(g){Object.keys(g||{}).forEach(function(X){m.aliases[X]||(m.aliases[X]=[].concat(o[X]||[]),m.aliases[X].concat(X).forEach(function(G){if(/-/.test(G)&&s["camel-case-expansion"]){const d=$e(G);d!==X&&m.aliases[X].indexOf(d)===-1&&(m.aliases[X].push(d),f[d]=!0)}}),m.aliases[X].concat(X).forEach(function(G){if(G.length>1&&/[A-Z]/.test(G)&&s["camel-case-expansion"]){const d=un(G,"-");d!==X&&m.aliases[X].indexOf(d)===-1&&(m.aliases[X].push(d),f[d]=!0)}}),m.aliases[X].forEach(function(G){m.aliases[G]=[X].concat(m.aliases[X].filter(function(d){return G!==d}))}))})})}function Y(r,g){const X=[].concat(m.aliases[r]||[],r),G=Object.keys(g),d=X.find(x=>G.includes(x));return d?g[d]:!1}function re(r){const g=Object.keys(m);return[].concat(g.map(G=>m[G])).some(function(G){return Array.isArray(G)?G.includes(r):G[r]})}function yt(r,...g){return[].concat(...g).some(function(G){const d=r.match(G);return d&&re(d[1])})}function Le(r){if(r.match(E)||!r.match(/^-[^-]+/))return!1;let g=!0,X;const G=r.slice(1).split("");for(let d=0;d<G.length;d++){if(X=r.slice(d+2),!re(G[d])){g=!1;break}if(G[d+1]&&G[d+1]==="="||X==="-"||/[A-Za-z]/.test(G[d])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(X)||G[d+1]&&G[d+1].match(/\W/))break}return g}function He(r){return s["unknown-options-as-args"]&&_(r)}function _(r){return r=r.replace(/^-{3,}/,"--"),r.match(E)||Le(r)?!1:!yt(r,/^-+([^=]+?)=[\s\S]*$/,S,/^-+([^=]+?)$/,/^-+([^=]+?)-$/,/^-+([^=]+?\d+)$/,/^-+([^=]+?)\W+.*$/)}function te(r){return!Y(r,m.bools)&&!Y(r,m.counts)&&`${r}`in a?a[r]:Ne(vn(r))}function Ne(r){return{[Ie.BOOLEAN]:!0,[Ie.STRING]:"",[Ie.NUMBER]:void 0,[Ie.ARRAY]:[]}[r]}function vn(r){let g=Ie.BOOLEAN;return Y(r,m.strings)?g=Ie.STRING:Y(r,m.numbers)?g=Ie.NUMBER:Y(r,m.bools)?g=Ie.BOOLEAN:Y(r,m.arrays)&&(g=Ie.ARRAY),g}function fe(r){return r===void 0}function kn(){Object.keys(m.counts).find(r=>Y(r,m.arrays)?(K=Error(U("Invalid configuration: %s, opts.count excludes opts.array.",r)),!0):Y(r,m.nargs)?(K=Error(U("Invalid configuration: %s, opts.count excludes opts.narg.",r)),!0):!1)}return{aliases:Object.assign({},m.aliases),argv:Object.assign(be,Q),configuration:s,defaulted:Object.assign({},J),error:K,newAliases:Object.assign({},f)}}}function Rc(e){const l=[],t=Object.create(null);let n=!0;for(Object.keys(e).forEach(function(c){l.push([].concat(e[c],c))});n;){n=!1;for(let c=0;c<l.length;c++)for(let i=c+1;i<l.length;i++)if(l[c].filter(function(s){return l[i].indexOf(s)!==-1}).length){l[c]=l[c].concat(l[i]),l.splice(i,1),n=!0;break}}return l.forEach(function(c){c=c.filter(function(o,s,a){return a.indexOf(o)===s});const i=c.pop();i!==void 0&&typeof i=="string"&&(t[i]=c)}),t}function Nt(e){return e!==void 0?e+1:1}function Rl(e){return e==="__proto__"?"___proto___":e}function Vc(e){return typeof e=="string"&&(e[0]==="'"||e[0]==='"')&&e[e.length-1]===e[0]?e.substring(1,e.length-1):e}/**
 * @fileoverview Main entrypoint for libraries using yargs-parser in Node.js
 * CJS and ESM environments.
 *
 * @license
 * Copyright (c) 2016, Contributors
 * SPDX-License-Identifier: ISC
 */var vt,kt,wt;const Vl=process&&process.env&&process.env.YARGS_MIN_NODE_VERSION?Number(process.env.YARGS_MIN_NODE_VERSION):12,Al=(kt=(vt=process==null?void 0:process.versions)===null||vt===void 0?void 0:vt.node)!==null&&kt!==void 0?kt:(wt=process==null?void 0:process.version)===null||wt===void 0?void 0:wt.slice(1);if(Al&&Number(Al.match(/^([^.]+)/)[1])<Vl)throw Error(`yargs parser supports a minimum Node.js version of ${Vl}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);const Ac=process?process.env:{},In=new fc({cwd:process.cwd,env:()=>Ac,format:Sn.format,normalize:ce.normalize,resolve:ce.resolve,require:e=>{if(typeof require<"u")return require(e);if(e.match(/\.json$/))return JSON.parse(ql.readFileSync(e,"utf8"));throw Error("only .json config files are supported in ESM")}}),nt=function(l,t){return In.parse(l.slice(),t).argv};nt.detailed=function(e,l){return In.parse(e.slice(),l)};nt.camelCase=$e;nt.decamelize=un;nt.looksLikeNumber=Gn;const Yc={exportToOo:"导出为......",exportWithPrevious:"使用上一次设置导出",exportSuccessNotice:M`导出文件 ${0} 成功!`,exportCommandOutputMessage:M`命令:${0}`,exportErrorOutputMessage:M`命令 ${0},错误:${1}`,pleaseOpenFile:"请打开一个文件先。",preparing:M`正在生成 "${0}" ......`,exportDialog:{fileName:"文件名",type:"类型",exportTo:"导出到",title:M`导出为 ${0}`,export:"导出",selectExportFolder:"请选择导出文件夹",overwriteConfirmation:"覆盖提示"},messageBox:{yes:"是",no:"否",ok:"确认",cancel:"取消"},overwriteConfirmationDialog:{replace:"替换",title:M`"${0}" 已经存在。您要替换它吗?`,message:M`"${0}" 文件夹中已有相同的文件或文件夹,若替换,则会覆盖其当前内容。`},settingTab:{title:"导出设置",general:"通用",name:"名称",customLocation:"自定义",pandocVersion:M`版本: ${0}`,pandocVersionWithWarning:M`Version: ${0}, 请升级版本到 ${1}`,pandocNotFound:"找不到 Pandoc,请填写 Pandoc 文件路径,或者将其添加到系统环境变量中。",pandocPath:"Pandoc 路径",defaultFolderForExportedFile:"默认的导出文件夹",openExportedFileLocation:"打开导出文件所在目录",sameFolderWithCurrentFile:"与原文件同一目录下",openExportedFile:"打开导出文件",pandocPathPlaceholder:"(自动检测)",editCommandTemplate:"编辑命令模板",chooseCommandTemplate:"选择模板",afterExport:"导出后",command:"命令",arguments:"参数",auto:"自动",reset:"重置",add:"添加",remove:"移除",rename:"重命名",targetFileExtensions:"目标文件扩展名",targetFileExtensionsTip:"(用空格分开)",showCommandOutput:"显示命令行输出",runCommand:"运行自定义命令",extraArguments:"自定义参数",save:"保存",new:"新建",template:"模板",advanced:"高级",environmentVariables:"环境变量",environmentVariablesDesc:"定义导出的环境变量.",ShowExportProgressBar:"显示导出进度条"}},Jc={exportToOo:"Export to...",exportSuccessNotice:M`Export file ${0} success!`,exportCommandOutputMessage:M`Command: ${0}`,exportErrorOutputMessage:M`Command: ${0},Error:${1}`,exportWithPrevious:"Export with Previous",pleaseOpenFile:"Please open a file first.",preparing:M`generating "${0}"...`,exportDialog:{exportTo:"Export to",fileName:"File Name",title:M`Export to ${0}`,export:"Export",selectExportFolder:"Please select an export folder.",overwriteConfirmation:"Overwrite confirmation",type:"Type"},messageBox:{yes:"Yes",no:"No",ok:"Ok",cancel:"Cancel"},overwriteConfirmationDialog:{replace:"Replace",title:M`"${0}" already exists. Do you want to replace it?`,message:M`A file or folder with the same name already exists in the folder "${0}". Replacing it will overwrite its current contents.`},settingTab:{general:"General",name:"Name",title:"Export Settings",pandocVersion:M`Version: ${0}`,pandocVersionWithWarning:M`Version: ${0}, please upgrade version to ${1}`,pandocNotFound:"Pandoc not found, please fill in the Pandoc file path, or add it to the system environment variables.",defaultFolderForExportedFile:"Default Folder for Exported File",openExportedFileLocation:"Open exported file location",ShowExportProgressBar:"Show export progress bar",openExportedFile:"Open exported file",pandocPath:"Pandoc path",pandocPathPlaceholder:"(Auto Detect)",editCommandTemplate:"Edit Command Template",chooseCommandTemplate:"Choose template",customLocation:"Custom location",template:"Template",command:"Command",reset:"Reset",auto:"Auto",add:"Add",remove:"Remove",rename:"Rename",sameFolderWithCurrentFile:"Same folder with current file",afterExport:"After Export",targetFileExtensions:"Target file extensions",targetFileExtensionsTip:"(Separated by whitespace)",showCommandOutput:"Show command output",runCommand:"Run command",extraArguments:"Extra arguments",save:"Save",new:"New",arguments:"Arguments",advanced:"Advanced",environmentVariables:"Environment Variables",environmentVariablesDesc:"Define the Environment Variables for exporting."}},xc={exportToOo:"Export to...",exportSuccessNotice:M`Export der Datei ${0} erfolgreich!`,exportCommandOutputMessage:M`Command: ${0}`,exportErrorOutputMessage:M`Command: ${0},Fehler:${1}`,exportWithPrevious:"Exportiere mit Vorherigem",pleaseOpenFile:"Bitte öffne zunächst eine Datei.",preparing:M`generating "${0}"...`,exportDialog:{exportTo:"Exportiere nach",fileName:"Dateiname",title:M`Export to ${0}`,export:"Export",selectExportFolder:"Zielordner auswählen",overwriteConfirmation:"Überschreibe den Zielordner",type:"Typ"},messageBox:{yes:"Ja",no:"Nein",ok:"Ok",cancel:"Abbrechen"},overwriteConfirmationDialog:{replace:"Ersetze",title:M`"${0}" existiert bereits. Soll er ersetzt werden?`,message:M`Eine Datei oder ein Ordner mit dem gleichen Namen existiert bereits im Ordner "${0}". Das Ersetzen wird die jetzigen Inhalte überschreiben.`},settingTab:{general:"Allgemein",name:"Name",title:"Export-Einstellungen",pandocVersion:M`Version: ${0}`,pandocVersionWithWarning:M`Version: ${0}, please upgrade version to ${1}`,pandocNotFound:"Pandoc.exe wurde nicht gefunden. Bitte geben Sie den Pfad zur Pandoc.exe ein oder fügen Sie ihn den Window Systemumgebungsvariablen hinzu.",defaultFolderForExportedFile:"Standardordner für exportierte Dateien",openExportedFileLocation:"Speicherort der exportierten Datei öffnen",openExportedFile:"Exportierte Datei öffnen",pandocPath:"Pfad zur Datei Pandoc.exe",pandocPathPlaceholder:"(Automatische Erkennung)",editCommandTemplate:"‘Befehlsvorlage bearbeiten",chooseCommandTemplate:"Vorlage auswählen",customLocation:"Benutzerdefinierter Speicherort",template:"Vorlage",command:"Befehl",reset:"Zurücksetzen",auto:"Auto",add:"Hinzufügen",remove:"Entfernen",rename:"Umbenennen",sameFolderWithCurrentFile:"Der gleiche Ordner mit der aktuellen Datei",afterExport:"Nach dem Export",targetFileExtensions:"Dateinamenserweiterung der Zieldatei",targetFileExtensionsTip:"(Mit Leerzeichen getrennt)",showCommandOutput:"Zeige die Ausgabe des Befehls",runCommand:"Starte den Befehl",extraArguments:"Zusätzliche Parameter",save:"Speichern",new:"Neu",arguments:"Parameter",advanced:"Advanced",environmentVariables:"Environment Variables",environmentVariablesDesc:"Define the Environment Variables for exporting.",ShowExportProgressBar:"Show export progressBar"}},Cn={"de-DE":xc,"en-US":Jc,"zh-CN":Yc,get current(){const e=Object.keys(this),l=ue.moment.locale().toLowerCase();let t=e.find(c=>c.toLowerCase()===l.toLowerCase());if(t)return this[t];const n=l.split("-")[0];return t=e.find(c=>c.toLowerCase().startsWith(n)),t?this[t]:this["en-US"]}};class Yl extends ue.Modal{constructor(l,t,n){super(l),this.options=typeof t=="string"?{message:t,buttons:"Ok",title:n}:t,this.lang=Cn.current}onOpen(){const{titleEl:l,contentEl:t,lang:n,options:{message:c,title:i,buttons:o,callback:s,buttonsLabel:a,buttonsClass:Z}}=this;switch(i&&l.setText(i),t.createDiv({text:c}),o){case"Yes":t.createEl("div",{cls:["modal-button-container"],parent:t},u=>{u.createEl("button",{text:(a==null?void 0:a.yes)??n.messageBox.yes,cls:["mod-cta",Z==null?void 0:Z.yes],parent:u}).onclick=()=>this.call(s==null?void 0:s.yes)});break;case"YesNo":t.createEl("div",{cls:["modal-button-container"],parent:t},u=>{u.createEl("button",{text:(a==null?void 0:a.yes)??n.messageBox.yes,cls:["mod-cta",Z==null?void 0:Z.yes],parent:u}).onclick=()=>this.call(s==null?void 0:s.yes),u.createEl("button",{text:(a==null?void 0:a.no)??n.messageBox.no,cls:["mod-cta",Z==null?void 0:Z.no],parent:u}).onclick=()=>this.call(s==null?void 0:s.no)});break;case"Ok":t.createEl("div",{cls:["modal-button-container"],parent:t},u=>{u.createEl("button",{text:(a==null?void 0:a.ok)??n.messageBox.ok,cls:["mod-cta",Z==null?void 0:Z.no],parent:u}).onclick=()=>this.call(s==null?void 0:s.ok)});break;case"OkCancel":t.createEl("div",{cls:["modal-button-container"],parent:t},u=>{u.createEl("button",{text:(a==null?void 0:a.ok)??n.messageBox.ok,cls:["mod-cta",Z==null?void 0:Z.ok],parent:u}).onclick=()=>this.call(s==null?void 0:s.ok),u.createEl("button",{text:(a==null?void 0:a.cancel)??n.messageBox.cancel,cls:["mod-cta",Z==null?void 0:Z.cancel],parent:u}).onclick=()=>this.call(s==null?void 0:s.cancel)});break}}call(l){l&&l(),this.close()}onClose(){const{contentEl:l}=this;l.empty()}}var Bc=Ge('<div class=progress-bar><div class="progress-bar-message u-center-text"></div><div class=progress-bar-indicator><div class=progress-bar-line></div><div class=progress-bar-subline style=display:none;></div><div class="progress-bar-subline mod-increase"></div><div class="progress-bar-subline mod-decrease">');const yc=e=>(()=>{var l=Bc(),t=l.firstChild,n=e.ref;return typeof n=="function"?Vt(n,l):e.ref=l,se(t,()=>e.message),l})(),Fc=e=>we(l=>{let t=!1;const n=()=>{t||(t=!0,l())};let c;return se(document.body,()=>I(yc,{ref(i){var o=c;typeof o=="function"?o(i):c=i},message:e})),ze(()=>{c instanceof Node&&document.body.contains(c)&&document.body.removeChild(c)}),n}),Hc={show:Fc};function Nc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Pt={exports:{}};const vc="2.0.0",Wn=256,kc=Number.MAX_SAFE_INTEGER||9007199254740991,wc=16,Sc=Wn-6,Kc=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var At={MAX_LENGTH:Wn,MAX_SAFE_COMPONENT_LENGTH:wc,MAX_SAFE_BUILD_LENGTH:Sc,MAX_SAFE_INTEGER:kc,RELEASE_TYPES:Kc,SEMVER_SPEC_VERSION:vc,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const Ec=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};var Yt=Ec;(function(e,l){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:c}=At,i=Yt;l=e.exports={};const o=l.re=[],s=l.safeRe=[],a=l.src=[],Z=l.t={};let u=0;const b="[a-zA-Z0-9-]",N=[["\\s",1],["\\d",c],[b,n]],f=U=>{for(const[m,E]of N)U=U.split(`${m}*`).join(`${m}{0,${E}}`).split(`${m}+`).join(`${m}{1,${E}}`);return U},J=(U,m,E)=>{const S=f(m),K=u++;i(U,K,m),Z[U]=K,a[K]=m,o[K]=new RegExp(m,E?"g":void 0),s[K]=new RegExp(S,E?"g":void 0)};J("NUMERICIDENTIFIER","0|[1-9]\\d*"),J("NUMERICIDENTIFIERLOOSE","\\d+"),J("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${b}*`),J("MAINVERSION",`(${a[Z.NUMERICIDENTIFIER]})\\.(${a[Z.NUMERICIDENTIFIER]})\\.(${a[Z.NUMERICIDENTIFIER]})`),J("MAINVERSIONLOOSE",`(${a[Z.NUMERICIDENTIFIERLOOSE]})\\.(${a[Z.NUMERICIDENTIFIERLOOSE]})\\.(${a[Z.NUMERICIDENTIFIERLOOSE]})`),J("PRERELEASEIDENTIFIER",`(?:${a[Z.NUMERICIDENTIFIER]}|${a[Z.NONNUMERICIDENTIFIER]})`),J("PRERELEASEIDENTIFIERLOOSE",`(?:${a[Z.NUMERICIDENTIFIERLOOSE]}|${a[Z.NONNUMERICIDENTIFIER]})`),J("PRERELEASE",`(?:-(${a[Z.PRERELEASEIDENTIFIER]}(?:\\.${a[Z.PRERELEASEIDENTIFIER]})*))`),J("PRERELEASELOOSE",`(?:-?(${a[Z.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${a[Z.PRERELEASEIDENTIFIERLOOSE]})*))`),J("BUILDIDENTIFIER",`${b}+`),J("BUILD",`(?:\\+(${a[Z.BUILDIDENTIFIER]}(?:\\.${a[Z.BUILDIDENTIFIER]})*))`),J("FULLPLAIN",`v?${a[Z.MAINVERSION]}${a[Z.PRERELEASE]}?${a[Z.BUILD]}?`),J("FULL",`^${a[Z.FULLPLAIN]}$`),J("LOOSEPLAIN",`[v=\\s]*${a[Z.MAINVERSIONLOOSE]}${a[Z.PRERELEASELOOSE]}?${a[Z.BUILD]}?`),J("LOOSE",`^${a[Z.LOOSEPLAIN]}$`),J("GTLT","((?:<|>)?=?)"),J("XRANGEIDENTIFIERLOOSE",`${a[Z.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),J("XRANGEIDENTIFIER",`${a[Z.NUMERICIDENTIFIER]}|x|X|\\*`),J("XRANGEPLAIN",`[v=\\s]*(${a[Z.XRANGEIDENTIFIER]})(?:\\.(${a[Z.XRANGEIDENTIFIER]})(?:\\.(${a[Z.XRANGEIDENTIFIER]})(?:${a[Z.PRERELEASE]})?${a[Z.BUILD]}?)?)?`),J("XRANGEPLAINLOOSE",`[v=\\s]*(${a[Z.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[Z.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[Z.XRANGEIDENTIFIERLOOSE]})(?:${a[Z.PRERELEASELOOSE]})?${a[Z.BUILD]}?)?)?`),J("XRANGE",`^${a[Z.GTLT]}\\s*${a[Z.XRANGEPLAIN]}$`),J("XRANGELOOSE",`^${a[Z.GTLT]}\\s*${a[Z.XRANGEPLAINLOOSE]}$`),J("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),J("COERCE",`${a[Z.COERCEPLAIN]}(?:$|[^\\d])`),J("COERCEFULL",a[Z.COERCEPLAIN]+`(?:${a[Z.PRERELEASE]})?(?:${a[Z.BUILD]})?(?:$|[^\\d])`),J("COERCERTL",a[Z.COERCE],!0),J("COERCERTLFULL",a[Z.COERCEFULL],!0),J("LONETILDE","(?:~>?)"),J("TILDETRIM",`(\\s*)${a[Z.LONETILDE]}\\s+`,!0),l.tildeTrimReplace="$1~",J("TILDE",`^${a[Z.LONETILDE]}${a[Z.XRANGEPLAIN]}$`),J("TILDELOOSE",`^${a[Z.LONETILDE]}${a[Z.XRANGEPLAINLOOSE]}$`),J("LONECARET","(?:\\^)"),J("CARETTRIM",`(\\s*)${a[Z.LONECARET]}\\s+`,!0),l.caretTrimReplace="$1^",J("CARET",`^${a[Z.LONECARET]}${a[Z.XRANGEPLAIN]}$`),J("CARETLOOSE",`^${a[Z.LONECARET]}${a[Z.XRANGEPLAINLOOSE]}$`),J("COMPARATORLOOSE",`^${a[Z.GTLT]}\\s*(${a[Z.LOOSEPLAIN]})$|^$`),J("COMPARATOR",`^${a[Z.GTLT]}\\s*(${a[Z.FULLPLAIN]})$|^$`),J("COMPARATORTRIM",`(\\s*)${a[Z.GTLT]}\\s*(${a[Z.LOOSEPLAIN]}|${a[Z.XRANGEPLAIN]})`,!0),l.comparatorTrimReplace="$1$2$3",J("HYPHENRANGE",`^\\s*(${a[Z.XRANGEPLAIN]})\\s+-\\s+(${a[Z.XRANGEPLAIN]})\\s*$`),J("HYPHENRANGELOOSE",`^\\s*(${a[Z.XRANGEPLAINLOOSE]})\\s+-\\s+(${a[Z.XRANGEPLAINLOOSE]})\\s*$`),J("STAR","(<|>)?=?\\s*\\*"),J("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),J("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(Pt,Pt.exports);var ct=Pt.exports;const Qc=Object.freeze({loose:!0}),zc=Object.freeze({}),Uc=e=>e?typeof e!="object"?Qc:e:zc;var cl=Uc;const Jl=/^[0-9]+$/,hn=(e,l)=>{const t=Jl.test(e),n=Jl.test(l);return t&&n&&(e=+e,l=+l),e===l?0:t&&!n?-1:n&&!t?1:e<l?-1:1},jc=(e,l)=>hn(l,e);var pn={compareIdentifiers:hn,rcompareIdentifiers:jc};const st=Yt,{MAX_LENGTH:xl,MAX_SAFE_INTEGER:ot}=At,{safeRe:Bl,t:yl}=ct,Lc=cl,{compareIdentifiers:ke}=pn;let Mc=class pe{constructor(l,t){if(t=Lc(t),l instanceof pe){if(l.loose===!!t.loose&&l.includePrerelease===!!t.includePrerelease)return l;l=l.version}else if(typeof l!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof l}".`);if(l.length>xl)throw new TypeError(`version is longer than ${xl} characters`);st("SemVer",l,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const n=l.trim().match(t.loose?Bl[yl.LOOSE]:Bl[yl.FULL]);if(!n)throw new TypeError(`Invalid Version: ${l}`);if(this.raw=l,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>ot||this.major<0)throw new TypeError("Invalid major version");if(this.minor>ot||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>ot||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(c=>{if(/^[0-9]+$/.test(c)){const i=+c;if(i>=0&&i<ot)return i}return c}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(l){if(st("SemVer.compare",this.version,this.options,l),!(l instanceof pe)){if(typeof l=="string"&&l===this.version)return 0;l=new pe(l,this.options)}return l.version===this.version?0:this.compareMain(l)||this.comparePre(l)}compareMain(l){return l instanceof pe||(l=new pe(l,this.options)),ke(this.major,l.major)||ke(this.minor,l.minor)||ke(this.patch,l.patch)}comparePre(l){if(l instanceof pe||(l=new pe(l,this.options)),this.prerelease.length&&!l.prerelease.length)return-1;if(!this.prerelease.length&&l.prerelease.length)return 1;if(!this.prerelease.length&&!l.prerelease.length)return 0;let t=0;do{const n=this.prerelease[t],c=l.prerelease[t];if(st("prerelease compare",t,n,c),n===void 0&&c===void 0)return 0;if(c===void 0)return 1;if(n===void 0)return-1;if(n===c)continue;return ke(n,c)}while(++t)}compareBuild(l){l instanceof pe||(l=new pe(l,this.options));let t=0;do{const n=this.build[t],c=l.build[t];if(st("build compare",t,n,c),n===void 0&&c===void 0)return 0;if(c===void 0)return 1;if(n===void 0)return-1;if(n===c)continue;return ke(n,c)}while(++t)}inc(l,t,n){switch(l){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,n),this.inc("pre",t,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,n),this.inc("pre",t,n);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const c=Number(n)?1:0;if(!t&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(this.prerelease.length===0)this.prerelease=[c];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);if(i===-1){if(t===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(c)}}if(t){let i=[t,c];n===!1&&(i=[t]),ke(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=i):this.prerelease=i}break}default:throw new Error(`invalid increment argument: ${l}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};var ae=Mc;const Fl=ae,Tc=(e,l,t=!1)=>{if(e instanceof Fl)return e;try{return new Fl(e,l)}catch(n){if(!t)return null;throw n}};var je=Tc;const $c=je,Oc=(e,l)=>{const t=$c(e,l);return t?t.version:null};var Pc=Oc;const Dc=je,_c=(e,l)=>{const t=Dc(e.trim().replace(/^[=v]+/,""),l);return t?t.version:null};var qc=_c;const Hl=ae,ei=(e,l,t,n,c)=>{typeof t=="string"&&(c=n,n=t,t=void 0);try{return new Hl(e instanceof Hl?e.version:e,t).inc(l,n,c).version}catch{return null}};var ti=ei;const Nl=je,li=(e,l)=>{const t=Nl(e,null,!0),n=Nl(l,null,!0),c=t.compare(n);if(c===0)return null;const i=c>0,o=i?t:n,s=i?n:t,a=!!o.prerelease.length;if(!!s.prerelease.length&&!a)return!s.patch&&!s.minor?"major":o.patch?"patch":o.minor?"minor":"major";const u=a?"pre":"";return t.major!==n.major?u+"major":t.minor!==n.minor?u+"minor":t.patch!==n.patch?u+"patch":"prerelease"};var ni=li;const ci=ae,ii=(e,l)=>new ci(e,l).major;var si=ii;const oi=ae,ai=(e,l)=>new oi(e,l).minor;var ri=ai;const di=ae,gi=(e,l)=>new di(e,l).patch;var Zi=gi;const bi=je,mi=(e,l)=>{const t=bi(e,l);return t&&t.prerelease.length?t.prerelease:null};var ui=mi;const vl=ae,Gi=(e,l,t)=>new vl(e,t).compare(new vl(l,t));var We=Gi;const Ii=We,Ci=(e,l,t)=>Ii(l,e,t);var Wi=Ci;const hi=We,pi=(e,l)=>hi(e,l,!0);var Xi=pi;const kl=ae,fi=(e,l,t)=>{const n=new kl(e,t),c=new kl(l,t);return n.compare(c)||n.compareBuild(c)};var il=fi;const Ri=il,Vi=(e,l)=>e.sort((t,n)=>Ri(t,n,l));var Ai=Vi;const Yi=il,Ji=(e,l)=>e.sort((t,n)=>Yi(n,t,l));var xi=Ji;const Bi=We,yi=(e,l,t)=>Bi(e,l,t)>0;var Jt=yi;const Fi=We,Hi=(e,l,t)=>Fi(e,l,t)<0;var sl=Hi;const Ni=We,vi=(e,l,t)=>Ni(e,l,t)===0;var Xn=vi;const ki=We,wi=(e,l,t)=>ki(e,l,t)!==0;var fn=wi;const Si=We,Ki=(e,l,t)=>Si(e,l,t)>=0;var ol=Ki;const Ei=We,Qi=(e,l,t)=>Ei(e,l,t)<=0;var al=Qi;const zi=Xn,Ui=fn,ji=Jt,Li=ol,Mi=sl,Ti=al,$i=(e,l,t,n)=>{switch(l){case"===":return typeof e=="object"&&(e=e.version),typeof t=="object"&&(t=t.version),e===t;case"!==":return typeof e=="object"&&(e=e.version),typeof t=="object"&&(t=t.version),e!==t;case"":case"=":case"==":return zi(e,t,n);case"!=":return Ui(e,t,n);case">":return ji(e,t,n);case">=":return Li(e,t,n);case"<":return Mi(e,t,n);case"<=":return Ti(e,t,n);default:throw new TypeError(`Invalid operator: ${l}`)}};var Rn=$i;const Oi=ae,Pi=je,{safeRe:at,t:rt}=ct,Di=(e,l)=>{if(e instanceof Oi)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;l=l||{};let t=null;if(!l.rtl)t=e.match(l.includePrerelease?at[rt.COERCEFULL]:at[rt.COERCE]);else{const a=l.includePrerelease?at[rt.COERCERTLFULL]:at[rt.COERCERTL];let Z;for(;(Z=a.exec(e))&&(!t||t.index+t[0].length!==e.length);)(!t||Z.index+Z[0].length!==t.index+t[0].length)&&(t=Z),a.lastIndex=Z.index+Z[1].length+Z[2].length;a.lastIndex=-1}if(t===null)return null;const n=t[2],c=t[3]||"0",i=t[4]||"0",o=l.includePrerelease&&t[5]?`-${t[5]}`:"",s=l.includePrerelease&&t[6]?`+${t[6]}`:"";return Pi(`${n}.${c}.${i}${o}${s}`,l)};var _i=Di;class qi{constructor(){this.max=1e3,this.map=new Map}get(l){const t=this.map.get(l);if(t!==void 0)return this.map.delete(l),this.map.set(l,t),t}delete(l){return this.map.delete(l)}set(l,t){if(!this.delete(l)&&t!==void 0){if(this.map.size>=this.max){const c=this.map.keys().next().value;this.delete(c)}this.map.set(l,t)}return this}}var es=qi,St,wl;function he(){if(wl)return St;wl=1;class e{constructor(p,F){if(F=n(F),p instanceof e)return p.loose===!!F.loose&&p.includePrerelease===!!F.includePrerelease?p:new e(p.raw,F);if(p instanceof c)return this.raw=p.value,this.set=[[p]],this.format(),this;if(this.options=F,this.loose=!!F.loose,this.includePrerelease=!!F.includePrerelease,this.raw=p.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(H=>this.parseRange(H.trim())).filter(H=>H.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const H=this.set[0];if(this.set=this.set.filter(V=>!J(V[0])),this.set.length===0)this.set=[H];else if(this.set.length>1){for(const V of this.set)if(V.length===1&&U(V[0])){this.set=[V];break}}}this.format()}format(){return this.range=this.set.map(p=>p.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(p){const H=((this.options.includePrerelease&&N)|(this.options.loose&&f))+":"+p,V=t.get(H);if(V)return V;const B=this.options.loose,w=B?s[a.HYPHENRANGELOOSE]:s[a.HYPHENRANGE];p=p.replace(w,v(this.options.includePrerelease)),i("hyphen replace",p),p=p.replace(s[a.COMPARATORTRIM],Z),i("comparator trim",p),p=p.replace(s[a.TILDETRIM],u),i("tilde trim",p),p=p.replace(s[a.CARETTRIM],b),i("caret trim",p);let j=p.split(" ").map(Y=>E(Y,this.options)).join(" ").split(/\s+/).map(Y=>R(Y,this.options));B&&(j=j.filter(Y=>(i("loose invalid filter",Y,this.options),!!Y.match(s[a.COMPARATORLOOSE])))),i("range list",j);const k=new Map,L=j.map(Y=>new c(Y,this.options));for(const Y of L){if(J(Y))return[Y];k.set(Y.value,Y)}k.size>1&&k.has("")&&k.delete("");const D=[...k.values()];return t.set(H,D),D}intersects(p,F){if(!(p instanceof e))throw new TypeError("a Range is required");return this.set.some(H=>m(H,F)&&p.set.some(V=>m(V,F)&&H.every(B=>V.every(w=>B.intersects(w,F)))))}test(p){if(!p)return!1;if(typeof p=="string")try{p=new o(p,this.options)}catch{return!1}for(let F=0;F<this.set.length;F++)if(q(this.set[F],p,this.options))return!0;return!1}}St=e;const l=es,t=new l,n=cl,c=xt(),i=Yt,o=ae,{safeRe:s,t:a,comparatorTrimReplace:Z,tildeTrimReplace:u,caretTrimReplace:b}=ct,{FLAG_INCLUDE_PRERELEASE:N,FLAG_LOOSE:f}=At,J=C=>C.value==="<0.0.0-0",U=C=>C.value==="",m=(C,p)=>{let F=!0;const H=C.slice();let V=H.pop();for(;F&&H.length;)F=H.every(B=>V.intersects(B,p)),V=H.pop();return F},E=(C,p)=>(i("comp",C,p),C=Q(C,p),i("caret",C),C=K(C,p),i("tildes",C),C=me(C,p),i("xrange",C),C=W(C,p),i("stars",C),C),S=C=>!C||C.toLowerCase()==="x"||C==="*",K=(C,p)=>C.trim().split(/\s+/).map(F=>T(F,p)).join(" "),T=(C,p)=>{const F=p.loose?s[a.TILDELOOSE]:s[a.TILDE];return C.replace(F,(H,V,B,w,j)=>{i("tilde",C,H,V,B,w,j);let k;return S(V)?k="":S(B)?k=`>=${V}.0.0 <${+V+1}.0.0-0`:S(w)?k=`>=${V}.${B}.0 <${V}.${+B+1}.0-0`:j?(i("replaceTilde pr",j),k=`>=${V}.${B}.${w}-${j} <${V}.${+B+1}.0-0`):k=`>=${V}.${B}.${w} <${V}.${+B+1}.0-0`,i("tilde return",k),k})},Q=(C,p)=>C.trim().split(/\s+/).map(F=>be(F,p)).join(" "),be=(C,p)=>{i("caret",C,p);const F=p.loose?s[a.CARETLOOSE]:s[a.CARET],H=p.includePrerelease?"-0":"";return C.replace(F,(V,B,w,j,k)=>{i("caret",C,V,B,w,j,k);let L;return S(B)?L="":S(w)?L=`>=${B}.0.0${H} <${+B+1}.0.0-0`:S(j)?B==="0"?L=`>=${B}.${w}.0${H} <${B}.${+w+1}.0-0`:L=`>=${B}.${w}.0${H} <${+B+1}.0.0-0`:k?(i("replaceCaret pr",k),B==="0"?w==="0"?L=`>=${B}.${w}.${j}-${k} <${B}.${w}.${+j+1}-0`:L=`>=${B}.${w}.${j}-${k} <${B}.${+w+1}.0-0`:L=`>=${B}.${w}.${j}-${k} <${+B+1}.0.0-0`):(i("no pr"),B==="0"?w==="0"?L=`>=${B}.${w}.${j}${H} <${B}.${w}.${+j+1}-0`:L=`>=${B}.${w}.${j}${H} <${B}.${+w+1}.0-0`:L=`>=${B}.${w}.${j} <${+B+1}.0.0-0`),i("caret return",L),L})},me=(C,p)=>(i("replaceXRanges",C,p),C.split(/\s+/).map(F=>h(F,p)).join(" ")),h=(C,p)=>{C=C.trim();const F=p.loose?s[a.XRANGELOOSE]:s[a.XRANGE];return C.replace(F,(H,V,B,w,j,k)=>{i("xRange",C,H,V,B,w,j,k);const L=S(B),D=L||S(w),Y=D||S(j),re=Y;return V==="="&&re&&(V=""),k=p.includePrerelease?"-0":"",L?V===">"||V==="<"?H="<0.0.0-0":H="*":V&&re?(D&&(w=0),j=0,V===">"?(V=">=",D?(B=+B+1,w=0,j=0):(w=+w+1,j=0)):V==="<="&&(V="<",D?B=+B+1:w=+w+1),V==="<"&&(k="-0"),H=`${V+B}.${w}.${j}${k}`):D?H=`>=${B}.0.0${k} <${+B+1}.0.0-0`:Y&&(H=`>=${B}.${w}.0${k} <${B}.${+w+1}.0-0`),i("xRange return",H),H})},W=(C,p)=>(i("replaceStars",C,p),C.trim().replace(s[a.STAR],"")),R=(C,p)=>(i("replaceGTE0",C,p),C.trim().replace(s[p.includePrerelease?a.GTE0PRE:a.GTE0],"")),v=C=>(p,F,H,V,B,w,j,k,L,D,Y,re)=>(S(H)?F="":S(V)?F=`>=${H}.0.0${C?"-0":""}`:S(B)?F=`>=${H}.${V}.0${C?"-0":""}`:w?F=`>=${F}`:F=`>=${F}${C?"-0":""}`,S(L)?k="":S(D)?k=`<${+L+1}.0.0-0`:S(Y)?k=`<${L}.${+D+1}.0-0`:re?k=`<=${L}.${D}.${Y}-${re}`:C?k=`<${L}.${D}.${+Y+1}-0`:k=`<=${k}`,`${F} ${k}`.trim()),q=(C,p,F)=>{for(let H=0;H<C.length;H++)if(!C[H].test(p))return!1;if(p.prerelease.length&&!F.includePrerelease){for(let H=0;H<C.length;H++)if(i(C[H].semver),C[H].semver!==c.ANY&&C[H].semver.prerelease.length>0){const V=C[H].semver;if(V.major===p.major&&V.minor===p.minor&&V.patch===p.patch)return!0}return!1}return!0};return St}var Kt,Sl;function xt(){if(Sl)return Kt;Sl=1;const e=Symbol("SemVer ANY");class l{static get ANY(){return e}constructor(u,b){if(b=t(b),u instanceof l){if(u.loose===!!b.loose)return u;u=u.value}u=u.trim().split(/\s+/).join(" "),o("comparator",u,b),this.options=b,this.loose=!!b.loose,this.parse(u),this.semver===e?this.value="":this.value=this.operator+this.semver.version,o("comp",this)}parse(u){const b=this.options.loose?n[c.COMPARATORLOOSE]:n[c.COMPARATOR],N=u.match(b);if(!N)throw new TypeError(`Invalid comparator: ${u}`);this.operator=N[1]!==void 0?N[1]:"",this.operator==="="&&(this.operator=""),N[2]?this.semver=new s(N[2],this.options.loose):this.semver=e}toString(){return this.value}test(u){if(o("Comparator.test",u,this.options.loose),this.semver===e||u===e)return!0;if(typeof u=="string")try{u=new s(u,this.options)}catch{return!1}return i(u,this.operator,this.semver,this.options)}intersects(u,b){if(!(u instanceof l))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new a(u.value,b).test(this.value):u.operator===""?u.value===""?!0:new a(this.value,b).test(u.semver):(b=t(b),b.includePrerelease&&(this.value==="<0.0.0-0"||u.value==="<0.0.0-0")||!b.includePrerelease&&(this.value.startsWith("<0.0.0")||u.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&u.operator.startsWith(">")||this.operator.startsWith("<")&&u.operator.startsWith("<")||this.semver.version===u.semver.version&&this.operator.includes("=")&&u.operator.includes("=")||i(this.semver,"<",u.semver,b)&&this.operator.startsWith(">")&&u.operator.startsWith("<")||i(this.semver,">",u.semver,b)&&this.operator.startsWith("<")&&u.operator.startsWith(">")))}}Kt=l;const t=cl,{safeRe:n,t:c}=ct,i=Rn,o=Yt,s=ae,a=he();return Kt}const ts=he(),ls=(e,l,t)=>{try{l=new ts(l,t)}catch{return!1}return l.test(e)};var Bt=ls;const ns=he(),cs=(e,l)=>new ns(e,l).set.map(t=>t.map(n=>n.value).join(" ").trim().split(" "));var is=cs;const ss=ae,os=he(),as=(e,l,t)=>{let n=null,c=null,i=null;try{i=new os(l,t)}catch{return null}return e.forEach(o=>{i.test(o)&&(!n||c.compare(o)===-1)&&(n=o,c=new ss(n,t))}),n};var rs=as;const ds=ae,gs=he(),Zs=(e,l,t)=>{let n=null,c=null,i=null;try{i=new gs(l,t)}catch{return null}return e.forEach(o=>{i.test(o)&&(!n||c.compare(o)===1)&&(n=o,c=new ds(n,t))}),n};var bs=Zs;const Et=ae,ms=he(),Kl=Jt,us=(e,l)=>{e=new ms(e,l);let t=new Et("0.0.0");if(e.test(t)||(t=new Et("0.0.0-0"),e.test(t)))return t;t=null;for(let n=0;n<e.set.length;++n){const c=e.set[n];let i=null;c.forEach(o=>{const s=new Et(o.semver.version);switch(o.operator){case">":s.prerelease.length===0?s.patch++:s.prerelease.push(0),s.raw=s.format();case"":case">=":(!i||Kl(s,i))&&(i=s);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),i&&(!t||Kl(t,i))&&(t=i)}return t&&e.test(t)?t:null};var Gs=us;const Is=he(),Cs=(e,l)=>{try{return new Is(e,l).range||"*"}catch{return null}};var Ws=Cs;const hs=ae,Vn=xt(),{ANY:ps}=Vn,Xs=he(),fs=Bt,El=Jt,Ql=sl,Rs=al,Vs=ol,As=(e,l,t,n)=>{e=new hs(e,n),l=new Xs(l,n);let c,i,o,s,a;switch(t){case">":c=El,i=Rs,o=Ql,s=">",a=">=";break;case"<":c=Ql,i=Vs,o=El,s="<",a="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(fs(e,l,n))return!1;for(let Z=0;Z<l.set.length;++Z){const u=l.set[Z];let b=null,N=null;if(u.forEach(f=>{f.semver===ps&&(f=new Vn(">=0.0.0")),b=b||f,N=N||f,c(f.semver,b.semver,n)?b=f:o(f.semver,N.semver,n)&&(N=f)}),b.operator===s||b.operator===a||(!N.operator||N.operator===s)&&i(e,N.semver))return!1;if(N.operator===a&&o(e,N.semver))return!1}return!0};var rl=As;const Ys=rl,Js=(e,l,t)=>Ys(e,l,">",t);var xs=Js;const Bs=rl,ys=(e,l,t)=>Bs(e,l,"<",t);var Fs=ys;const zl=he(),Hs=(e,l,t)=>(e=new zl(e,t),l=new zl(l,t),e.intersects(l,t));var Ns=Hs;const vs=Bt,ks=We;var ws=(e,l,t)=>{const n=[];let c=null,i=null;const o=e.sort((u,b)=>ks(u,b,t));for(const u of o)vs(u,l,t)?(i=u,c||(c=u)):(i&&n.push([c,i]),i=null,c=null);c&&n.push([c,null]);const s=[];for(const[u,b]of n)u===b?s.push(u):!b&&u===o[0]?s.push("*"):b?u===o[0]?s.push(`<=${b}`):s.push(`${u} - ${b}`):s.push(`>=${u}`);const a=s.join(" || "),Z=typeof l.raw=="string"?l.raw:String(l);return a.length<Z.length?a:l};const Ul=he(),dl=xt(),{ANY:Qt}=dl,Te=Bt,gl=We,Ss=(e,l,t={})=>{if(e===l)return!0;e=new Ul(e,t),l=new Ul(l,t);let n=!1;e:for(const c of e.set){for(const i of l.set){const o=Es(c,i,t);if(n=n||o!==null,o)continue e}if(n)return!1}return!0},Ks=[new dl(">=0.0.0-0")],jl=[new dl(">=0.0.0")],Es=(e,l,t)=>{if(e===l)return!0;if(e.length===1&&e[0].semver===Qt){if(l.length===1&&l[0].semver===Qt)return!0;t.includePrerelease?e=Ks:e=jl}if(l.length===1&&l[0].semver===Qt){if(t.includePrerelease)return!0;l=jl}const n=new Set;let c,i;for(const f of e)f.operator===">"||f.operator===">="?c=Ll(c,f,t):f.operator==="<"||f.operator==="<="?i=Ml(i,f,t):n.add(f.semver);if(n.size>1)return null;let o;if(c&&i){if(o=gl(c.semver,i.semver,t),o>0)return null;if(o===0&&(c.operator!==">="||i.operator!=="<="))return null}for(const f of n){if(c&&!Te(f,String(c),t)||i&&!Te(f,String(i),t))return null;for(const J of l)if(!Te(f,String(J),t))return!1;return!0}let s,a,Z,u,b=i&&!t.includePrerelease&&i.semver.prerelease.length?i.semver:!1,N=c&&!t.includePrerelease&&c.semver.prerelease.length?c.semver:!1;b&&b.prerelease.length===1&&i.operator==="<"&&b.prerelease[0]===0&&(b=!1);for(const f of l){if(u=u||f.operator===">"||f.operator===">=",Z=Z||f.operator==="<"||f.operator==="<=",c){if(N&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===N.major&&f.semver.minor===N.minor&&f.semver.patch===N.patch&&(N=!1),f.operator===">"||f.operator===">="){if(s=Ll(c,f,t),s===f&&s!==c)return!1}else if(c.operator===">="&&!Te(c.semver,String(f),t))return!1}if(i){if(b&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===b.major&&f.semver.minor===b.minor&&f.semver.patch===b.patch&&(b=!1),f.operator==="<"||f.operator==="<="){if(a=Ml(i,f,t),a===f&&a!==i)return!1}else if(i.operator==="<="&&!Te(i.semver,String(f),t))return!1}if(!f.operator&&(i||c)&&o!==0)return!1}return!(c&&Z&&!i&&o!==0||i&&u&&!c&&o!==0||N||b)},Ll=(e,l,t)=>{if(!e)return l;const n=gl(e.semver,l.semver,t);return n>0?e:n<0||l.operator===">"&&e.operator===">="?l:e},Ml=(e,l,t)=>{if(!e)return l;const n=gl(e.semver,l.semver,t);return n<0?e:n>0||l.operator==="<"&&e.operator==="<="?l:e};var Qs=Ss;const zt=ct,Tl=At,zs=ae,$l=pn,Us=je,js=Pc,Ls=qc,Ms=ti,Ts=ni,$s=si,Os=ri,Ps=Zi,Ds=ui,_s=We,qs=Wi,eo=Xi,to=il,lo=Ai,no=xi,co=Jt,io=sl,so=Xn,oo=fn,ao=ol,ro=al,go=Rn,Zo=_i,bo=xt(),mo=he(),uo=Bt,Go=is,Io=rs,Co=bs,Wo=Gs,ho=Ws,po=rl,Xo=xs,fo=Fs,Ro=Ns,Vo=ws,Ao=Qs;var Yo={parse:Us,valid:js,clean:Ls,inc:Ms,diff:Ts,major:$s,minor:Os,patch:Ps,prerelease:Ds,compare:_s,rcompare:qs,compareLoose:eo,compareBuild:to,sort:lo,rsort:no,gt:co,lt:io,eq:so,neq:oo,gte:ao,lte:ro,cmp:go,coerce:Zo,Comparator:bo,Range:mo,satisfies:uo,toComparators:Go,maxSatisfying:Io,minSatisfying:Co,minVersion:Wo,validRange:ho,outside:po,gtr:Xo,ltr:fo,intersects:Ro,simplifyRange:Vo,subset:Ao,SemVer:zs,re:zt.re,src:zt.src,tokens:zt.t,SEMVER_SPEC_VERSION:Tl.SEMVER_SPEC_VERSION,RELEASE_TYPES:Tl.RELEASE_TYPES,compareIdentifiers:$l.compareIdentifiers,rcompareIdentifiers:$l.rcompareIdentifiers},Jo=Yo;const xo=Nc(Jo),An=e=>e!=null&&e.includes(" ")?`"${e}"`:`${e??"pandoc"}`;async function Bo(e,l){e=An(e);let t=await jt(`${e} --version`,{env:l});t=t.substring(0,t.indexOf(`
`)).replace("pandoc.exe","").replace("pandoc","").trim();let n=[...t].filter(c=>c===".").length;if(n===1)t=`${t}.0`;else for(;n>2;)t=t.substring(0,t.lastIndexOf(".")),n-=1;return xo.parse(t,!0)}const yo="3.1.7",mt={normalizePath:An,getVersion:Bo,requiredVersion:yo};async function Yn(e,l,t,n,c,i,o,s,a,Z){const{settings:u,lang:b,manifest:N,app:{vault:{adapter:f,config:J},metadataCache:U}}=e;if(!n){const _=en(c);n=`${l.basename}${_}`}i==null&&(i=u.showOverwriteConfirmation);const m=u.showExportProgressBar,E=f.getBasePath(),S=`${E}/${N.dir}`,K=`${S}/lua`,T=t,Q=`${T}/${n}`,be=n.substring(0,n.lastIndexOf(".")),me=n,h=f.getFullPath(l.path),W=ce.dirname(h),R=l.basename,v=l.name;let q=J.attachmentFolderPath??"/";q==="/"?q=E:q.startsWith(".")?q=ce.join(W,q.substring(1)):q=ce.join(E,q);let C=null;try{C=U.getCache(l.path).frontmatter}catch(_){console.error(_)}let p=null;try{p=U.getCache(l.path).embeds}catch(_){console.error(_)}let F=[];for(const _ of p){const te=_.link,Ne=U.getFirstLinkpathDest(te,l.path);Ne instanceof ue.TFile?F.push(ce.join(E,ce.dirname(Ne.path))):Ne===null&&console.warn(`Could not resolve embedded file: ${te}`)}F=[...new Set(F)];const H=F.join(ce.delimiter),V={pluginDir:S,luaDir:K,outputDir:T,outputPath:Q,outputFileName:be,outputFileFullName:me,currentDir:W,currentPath:h,currentFileName:R,currentFileFullName:v,attachmentFolderPath:q,vaultDir:E,metadata:C,embedDirs:H,options:o,fromFormat:app.vault.config.useMarkdownLinks?"markdown":"markdown+wikilinks_title_after_pipe"},B=c.type==="custom"&&c.showCommandOutput,w=c.openExportedFileLocation??u.openExportedFileLocation,j=c.openExportedFile??u.openExportedFile;if(i&&Ft.existsSync(Q)){const _=await ye.remote.dialog.showSaveDialog({title:b.overwriteConfirmationDialog.title(me),defaultPath:Q,properties:["showOverwriteConfirmation","createDirectory"]});if(_.canceled)return;V.outputPath=_.filePath,V.outputDir=ce.dirname(V.outputPath),V.outputFileFullName=ce.basename(V.outputPath),V.outputFileName=ce.basename(V.outputFileFullName,ce.extname(V.outputFileFullName))}let k;m&&(k=Hc.show(b.preparing(V.outputFileFullName)));const L=V.env=tn(Ze(u.env)??{},V);let D=mt.normalizePath(Ze(u.pandocPath));if(Xt.platform==="win32"){D=D.replaceAll("\\","/");const _=["pluginDir","luaDir","outputDir","outputPath","currentDir","currentPath","attachmentFolderPath","vaultDir","embedDirs"];for(const te of _){const Ne=V[te];V[te]=Ne.replaceAll("\\","/")}}const Y=c.type==="pandoc"?`${D} "\${currentPath}" ${c.arguments??""} ${c.customArguments??""}`:c.command,re=Lt(Y,V),yt=nt(re.match(/(?:[^\s"]+|"[^"]*")+/g),{alias:{output:["o"]}}),Le=ce.normalize(En(yt.output)),He=ce.dirname(Le);Ft.existsSync(He)||Ft.mkdirSync(He);try{console.log(`[${e.manifest.name}]: export command and options:`,{cmd:re,options:{cwd:V.currentDir,env:L}}),await jt(re,{cwd:V.currentDir,env:L}),k==null||k();const _=async()=>{if(w&&setTimeout(()=>{ye.remote.shell.showItemInFolder(Le)},1e3),j&&await ye.remote.shell.openPath(Le),c.type==="pandoc"&&c.runCommand===!0&&c.command){const te=Lt(c.command,V);await jt(te,{cwd:V.currentDir,env:L})}s&&s()};if(B){const te=new Yl(app,b.exportCommandOutputMessage(re));te.onClose=_,te.open()}else new ue.Notice(b.exportSuccessNotice(V.outputFileFullName),1500),await _()}catch(_){k==null||k(),new Yl(app,b.exportErrorOutputMessage(re,_)).open(),a&&a()}}const Dt=e=>{const l=new ue.Modal(e.app);let t=[],n=!1;return Ye(()=>{se(l.titleEl,()=>e.title)}),Ye(()=>{se(l.contentEl,()=>e.children)}),Ye(()=>{const c=Object.entries(e.classList??{}).filter(([,i])=>i).map(([i])=>i);t.length>0&&l.containerEl.removeClasses(t),c.length>0&&l.containerEl.addClasses(c),t=c}),Ye(()=>{l.containerEl.style.display=e.hidden?"None":""}),l.onClose=()=>{n||(n=!0,e.onClose())},cn(()=>l.open()),ze(()=>{n||l.close()}),document.createTextNode("")};var Fo=Ge("<button>");const _t=e=>(()=>{var l=Fo();return ll(l,"click",e.onClick,!0),se(l,()=>e.children),ne(()=>l.classList.toggle("mod-cta",!!e.cta)),l})();tl(["click"]);var Ho=Ge("<div><div class=setting-item-info><div class=setting-item-name></div><div class=setting-item-description></div></div><div class=setting-item-control>"),No=Ge("<div class=checkbox-container><input type=checkbox>"),vo=Ge("<div class=setting-editor-extra-setting-button>"),ko=Ge("<input type=text>"),wo=Ge("<textarea>"),So=Ge("<select class=dropdown>"),Ko=Ge("<option>");const Jn=Mn(),Eo=()=>Tn(Jn),z=e=>{const l={settingEl:null};return I(Jn.Provider,{value:l,get children(){var t=Ho(),n=t.firstChild,c=n.firstChild,i=c.nextSibling,o=n.nextSibling;return Vt(s=>l.settingEl=s,t),se(c,()=>e.name),se(i,()=>e.description),se(o,()=>e.children),ne(s=>{var a=`setting-item ${e.class??""}`.trimEnd(),Z=!!e.heading,u=!!e.disabled;return a!==s.e&&mn(t,s.e=a),Z!==s.t&&t.classList.toggle("setting-item-heading",s.t=Z),u!==s.a&&t.classList.toggle("is-disable",s.a=u),s},{e:void 0,t:void 0,a:void 0}),t}})},Ce=e=>{const l=Eo();return cn(()=>{l.settingEl.addClass("mod-toggle")}),ze(()=>{l.settingEl.removeClass("mod-toggle")}),(()=>{var t=No();return t.$$click=()=>e.onChange&&e.onChange(!e.checked),ne(()=>t.classList.toggle("is-enabled",!!e.checked)),t})()},Be=e=>(()=>{var l=vo();return ll(l,"click",e.onClick,!0),Vt(t=>e.icon&&Kn.setIcon(t,e.icon),l),ne(t=>{var n=!!(e.icon&&e.onClick),c=e.tooltip;return n!==t.e&&l.classList.toggle("clickable-icon",t.e=n),c!==t.t&&xe(l,"aria-label",t.t=c),t},{e:void 0,t:void 0}),l})(),ge=e=>(()=>{var l=ko();return l.addEventListener("change",t=>{var n;return(n=e.onChange)==null?void 0:n.call(e,t.target.value)}),ne(t=>{var n=e.title,c=e.readOnly,i=e.placeholder,o=e.spellcheck??!1,s=e.style,a=e.disabled;return n!==t.e&&xe(l,"title",t.e=n),c!==t.t&&(l.readOnly=t.t=c),i!==t.a&&xe(l,"placeholder",t.a=i),o!==t.o&&xe(l,"spellcheck",t.o=o),t.i=nl(l,s,t.i),a!==t.n&&(l.disabled=t.n=a),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),ne(()=>l.value=e.value),l})(),Qo=e=>(()=>{var l=wo();return l.addEventListener("change",t=>{var n;return(n=e.onChange)==null?void 0:n.call(e,t.target.value)}),ne(t=>{var n=e.placeholder,c=e.spellcheck??!1,i=e.style,o=e.disabled;return n!==t.e&&xe(l,"placeholder",t.e=n),c!==t.t&&xe(l,"spellcheck",t.t=c),t.a=nl(l,i,t.a),o!==t.o&&(l.disabled=t.o=o),t},{e:void 0,t:void 0,a:void 0,o:void 0}),ne(()=>l.value=e.value),l})(),De=e=>(()=>{var l=So();return l.addEventListener("change",t=>{var n;return(n=e.onChange)==null?void 0:n.call(e,t.target.value,t.target.selectedIndex)}),l.autofocus=!0,se(l,I(bn,{get each(){return e.options},children:t=>(()=>{var n=Ko();return se(n,()=>t.name??t.value),ne(()=>n.selected=t.value===e.selected),ne(()=>n.value=t.value),n})()})),l})();tl(["click"]);var zo=Ge("<div>Unsupported <!> ");const dt={checkbox:e=>I(z,{get name(){return e.meta.title},get description(){return e.meta.description},get children(){return I(Ce,{get checked(){return Oe(e.meta)},get onChange(){return e.onChange}})}}),textInput:e=>I(z,{get name(){return e.meta.title},get description(){return e.meta.description},get children(){return I(ge,{get value(){return Oe(e.meta)},get onChange(){return e.onChange}})}}),dropdown:e=>I(z,{get name(){return e.meta.title},get description(){return e.meta.description},get children(){return I(De,{get selected(){return Oe(e.meta)},get options(){return e.meta.options},onChange:l=>e.onChange(l)})}}),fileSelectDialog:e=>{const[l,t]=de(Oe(e.meta)),n=async()=>{const c=await _l.remote.dialog.showOpenDialog({properties:["openFile"],filters:e.meta.filters});!c.canceled&&c.filePaths.length>0&&(t(c.filePaths[0]),e.onChange&&e.onChange(P(l)))};return I(z,{get name(){return e.meta.title},get description(){return e.meta.description},get children(){return[I(ge,{get value(){return l()??""},readOnly:!0}),I(Be,{icon:"folder",onClick:n})]}})}},Uo=(e,l)=>{switch(e.type){case"checkbox":{const t=dt[e.type];return I(t,{meta:e,onChange:l})}case"dropdown":{const t=dt[e.type];return I(t,{meta:e,onChange:l})}case"textInput":{const t=dt[e.type];return I(t,{meta:e,onChange:l})}case"fileSelectDialog":{const t=dt[e.type];return I(t,{meta:e,onChange:l})}default:return(()=>{var t=zo(),n=t.firstChild,c=n.nextSibling;return c.nextSibling,se(t,()=>JSON.stringify(e),c),t})()}},jo=e=>{let l={};Ye(()=>l=e.value??xn(e.meta));const t=(c,i)=>{l[c]=i,e.onChange&&e.onChange(l,c)},n=(c,i)=>{const o=a=>t(c,a);let s;return e.customEditor&&(s=e.customEditor(i,o),s)?s:Uo(i,o)};return I(bn,{get each(){return Object.entries(e.meta)},children:([c,i])=>n(c,i)})},xn=e=>Object.fromEntries(Object.entries(e).map(([l,t])=>[l,Oe(t)])),Oe=e=>{if(e.default)return e.default instanceof Function?e.default():e.default};var Lo=Ge("<div class=modal-button-container>");const Mo=e=>{var h;const{plugin:{app:l,settings:t,lang:n},currentFile:c}=e,[i,o]=de(!1),[s,a]=de(t.showOverwriteConfirmation),[Z,u]=de(t.lastExportType??((h=t.items.first())==null?void 0:h.name)),[b,N]=de({}),f=le(()=>t.items.find(W=>W.name===Z())),J=le(()=>en(f())),U=le(()=>n.exportDialog.title(f().name)),m=le(()=>Un(f().optionsMeta)),[E,S]=de(`${Ze(t.lastExportDirectory)??ye.remote.app.getPath("documents")}`),[K,T]=de(`${c.basename}${J()}`);Ye(()=>{const W=m();N(W?xn(W):{})}),Ye(()=>{let W=P(K);W=W.includes(".")?W.substring(0,W.lastIndexOf(".")):W,T(`${W}${J()}`)});const Q=t.items.map(W=>({name:W.name,value:W.name})).sort((W,R)=>W.name.localeCompare(R.name));if(t.defaultExportDirectoryMode==="Same"){const W=c.vault.adapter.getBasePath()+"/"+c.parent.path;S(W)}else t.defaultExportDirectoryMode==="Custom"&&S(Ze(t.customDefaultExportDirectory));const be=async()=>{var R;const W=await ye.remote.dialog.showOpenDialog({title:n.exportDialog.selectExportFolder,defaultPath:E(),properties:["createDirectory","openDirectory"]});!W.canceled&&((R=W.filePaths)==null?void 0:R.length)>0&&S(W.filePaths[0])},me=async()=>{const W=e.plugin;o(!0),await Yn(W,c,P(E),P(K),P(f),P(s),b(),async()=>{t.showOverwriteConfirmation=P(s),t.lastExportDirectory=Ae(t.lastExportDirectory,P(E)),t.lastExportType=P(f).name,await W.saveSettings(),e.onClose&&e.onClose()},()=>{o(!1)})};return I(Dt,{app:l,get title(){return U()},get hidden(){return i()},get onClose(){return e.onClose},get children(){return[I(z,{get name(){return n.exportDialog.type},get children(){return I(De,{options:Q,onChange:W=>u(W),get selected(){return Z()}})}}),I(z,{get name(){return n.exportDialog.fileName},get children(){return I(ge,{get title(){return K()},get value(){return K()},onChange:W=>T(W)})}}),I(bt,{get when(){return m()},get children(){return I(jo,{get meta(){return m()},get value(){return b()},onChange:W=>N(W)})}}),I(z,{get name(){return n.exportDialog.exportTo},get children(){return[I(ge,{get title(){return E()},get value(){return E()},disabled:!0}),I(Be,{icon:"folder",onClick:be})]}}),I(z,{get name(){return n.exportDialog.overwriteConfirmation},class:"mod-toggle",get children(){return I(Ce,{get checked(){return s()},onChange:a})}}),(()=>{var W=Lo();return se(W,I(_t,{cta:!0,onClick:me,get children(){return n.exportDialog.export}})),W})()]}})},To=(e,l)=>we(t=>{let n=!1;const c=()=>{n||(n=!0,t())},i=se(document.body,()=>I(Mo,{onClose:c,plugin:e,currentFile:l}));return ze(()=>{i instanceof Node&&document.body.contains(i)&&document.body.removeChild(i)}),c}),Ut={show:To},Wt=Symbol("store-raw"),Se=Symbol("store-node"),Ve=Symbol("store-has"),Bn=Symbol("store-self");function yn(e){let l=e[Xe];if(!l&&(Object.defineProperty(e,Xe,{value:l=new Proxy(e,Po)}),!Array.isArray(e))){const t=Object.keys(e),n=Object.getOwnPropertyDescriptors(e);for(let c=0,i=t.length;c<i;c++){const o=t[c];n[o].get&&Object.defineProperty(e,o,{enumerable:n[o].enumerable,get:n[o].get.bind(l)})}}return l}function Ke(e){let l;return e!=null&&typeof e=="object"&&(e[Xe]||!(l=Object.getPrototypeOf(e))||l===Object.prototype||Array.isArray(e))}function Ee(e,l=new Set){let t,n,c,i;if(t=e!=null&&e[Wt])return t;if(!Ke(e)||l.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):l.add(e);for(let o=0,s=e.length;o<s;o++)c=e[o],(n=Ee(c,l))!==c&&(e[o]=n)}else{Object.isFrozen(e)?e=Object.assign({},e):l.add(e);const o=Object.keys(e),s=Object.getOwnPropertyDescriptors(e);for(let a=0,Z=o.length;a<Z;a++)i=o[a],!s[i].get&&(c=e[i],(n=Ee(c,l))!==c&&(e[i]=n))}return e}function ht(e,l){let t=e[l];return t||Object.defineProperty(e,l,{value:t=Object.create(null)}),t}function et(e,l,t){if(e[l])return e[l];const[n,c]=de(t,{equals:!1,internal:!0});return n.$=c,e[l]=n}function $o(e,l){const t=Reflect.getOwnPropertyDescriptor(e,l);return!t||t.get||!t.configurable||l===Xe||l===Se||(delete t.value,delete t.writable,t.get=()=>e[Xe][l]),t}function Fn(e){Tt()&&et(ht(e,Se),Bn)()}function Oo(e){return Fn(e),Reflect.ownKeys(e)}const Po={get(e,l,t){if(l===Wt)return e;if(l===Xe)return t;if(l===Mt)return Fn(e),t;const n=ht(e,Se),c=n[l];let i=c?c():e[l];if(l===Se||l===Ve||l==="__proto__")return i;if(!c){const o=Object.getOwnPropertyDescriptor(e,l);Tt()&&(typeof i!="function"||e.hasOwnProperty(l))&&!(o&&o.get)&&(i=et(n,l,i)())}return Ke(i)?yn(i):i},has(e,l){return l===Wt||l===Xe||l===Mt||l===Se||l===Ve||l==="__proto__"?!0:(Tt()&&et(ht(e,Ve),l)(),l in e)},set(){return!0},deleteProperty(){return!0},ownKeys:Oo,getOwnPropertyDescriptor:$o};function Qe(e,l,t,n=!1){if(!n&&e[l]===t)return;const c=e[l],i=e.length;t===void 0?(delete e[l],e[Ve]&&e[Ve][l]&&c!==void 0&&e[Ve][l].$()):(e[l]=t,e[Ve]&&e[Ve][l]&&c===void 0&&e[Ve][l].$());let o=ht(e,Se),s;if((s=et(o,l,c))&&s.$(()=>t),Array.isArray(e)&&e.length!==i){for(let a=e.length;a<i;a++)(s=o[a])&&s.$();(s=et(o,"length",i))&&s.$(e.length)}(s=o[Bn])&&s.$()}function Hn(e,l){const t=Object.keys(l);for(let n=0;n<t.length;n+=1){const c=t[n];Qe(e,c,l[c])}}function Do(e,l){if(typeof l=="function"&&(l=l(e)),l=Ee(l),Array.isArray(l)){if(e===l)return;let t=0,n=l.length;for(;t<n;t++){const c=l[t];e[t]!==c&&Qe(e,t,c)}Qe(e,"length",n)}else Hn(e,l)}function Pe(e,l,t=[]){let n,c=e;if(l.length>1){n=l.shift();const o=typeof n,s=Array.isArray(e);if(Array.isArray(n)){for(let a=0;a<n.length;a++)Pe(e,[n[a]].concat(l),t);return}else if(s&&o==="function"){for(let a=0;a<e.length;a++)n(e[a],a)&&Pe(e,[a].concat(l),t);return}else if(s&&o==="object"){const{from:a=0,to:Z=e.length-1,by:u=1}=n;for(let b=a;b<=Z;b+=u)Pe(e,[b].concat(l),t);return}else if(l.length>1){Pe(e[n],l,[n].concat(t));return}c=e[n],t=[n].concat(t)}let i=l[0];typeof i=="function"&&(i=i(c,t),i===c)||n===void 0&&i==null||(i=Ee(i),n===void 0||Ke(c)&&Ke(i)&&!Array.isArray(i)?Hn(c,i):Qe(e,n,i))}function _o(...[e,l]){const t=Ee(e||{}),n=Array.isArray(t),c=yn(t);function i(...o){Zt(()=>{n&&o.length===1?Do(t,o[0]):Pe(t,o)})}return[c,i]}const pt=new WeakMap,Nn={get(e,l){if(l===Wt)return e;const t=e[l];let n;return Ke(t)?pt.get(t)||(pt.set(t,n=new Proxy(t,Nn)),n):t},set(e,l,t){return Qe(e,l,Ee(t)),!0},deleteProperty(e,l){return Qe(e,l,void 0,!0),!0}};function qo(e){return l=>{if(Ke(l)){let t;(t=pt.get(l))||pt.set(l,t=new Proxy(l,Nn)),e(t)}return l}}var Ol=Ge("<div class=modal-button-container>");const ea=e=>{const{plugin:l,lang:t}=e,[n,c]=_o(l.settings),[i,o]=de(),s=le(()=>Object.entries(Object.assign({},Ze(_e),Ze(n.env)??{})).map(([h,W])=>`${h}="${W}"`).join(`
`)),a=(...h)=>{c(...h),l.saveSettings()},Z=h=>{try{const W={};for(let R of h.split(`
`)){R=R.trim();const v=R.indexOf("=");if(v>0){const q=R.substring(0,v);let C=R.substring(v+1).trim();C.startsWith('"')&&C.endsWith('"')&&(C=C.substring(1,C.length-1)),W[q]=C}}a("env",Ae(n.env??{},W))}catch(W){alert(W)}},u=le(()=>n.items.find(h=>h.name===n.lastEditName)??n.items.first()),b=h=>{const W=u();return h===void 0||h===W.type?W:void 0},N=le(()=>Ze(n.customDefaultExportDirectory)),f=h=>{const W=n.items.findIndex(R=>R.name===n.lastEditName);a("items",W===-1?0:W,qo(R=>(h(R),R)))},J=le(()=>{const h=i();return h?app.vault.config.useMarkdownLinks&&h.compare(mt.requiredVersion)===-1?t.settingTab.pandocVersionWithWarning(mt.requiredVersion):t.settingTab.pandocVersion(h):t.settingTab.pandocNotFound}),[U,m]=de(),E=()=>{const[h,W]=de(Object.keys(gt)[0]),[R,v]=de(),q=()=>{const C=JSON.parse(JSON.stringify(gt[h()]));C.name=R(),Zt(()=>{a("items",p=>[...p,C]),a("lastEditName",C.name)}),m(void 0)};return I(Dt,{app,get title(){return t.settingTab.new},onClose:()=>m(void 0),get children(){return[I(z,{get name(){return t.settingTab.template},get children(){return I(De,{get options(){return Object.entries(gt).map(([C,p])=>({name:p.name,value:C})).sort((C,p)=>C.name.localeCompare(p.name))},get selected(){return R()??h()},onChange:C=>W(C)})}}),I(z,{get name(){return t.settingTab.name},get children(){return I(ge,{get value(){return R()??""},onChange:C=>v(C)})}}),(()=>{var C=Ol();return se(C,I(_t,{cta:!0,onClick:q,get children(){return t.settingTab.save}})),C})()]}})},S=()=>{const[h,W]=de(b().name),R=()=>{Zt(()=>{f(v=>v.name=h()),a("lastEditName",h())}),m(void 0)};return I(Dt,{app,get title(){return t.settingTab.rename},onClose:()=>m(void 0),get children(){return[I(z,{get name(){return t.settingTab.name},get children(){return I(ge,{get value(){return h()??""},onChange:v=>W(v)})}}),(()=>{var v=Ol();return se(v,I(_t,{cta:!0,onClick:R,get children(){return t.settingTab.add}})),v})()]}})},K=()=>{const h=()=>b("pandoc"),W=R=>{f(v=>v.type==="pandoc"?R(v):void 0)};return[I(z,{get name(){return t.settingTab.arguments},get children(){return I(ge,{style:"width: 100%",get value(){return h().arguments??""},onChange:R=>W(v=>v.arguments=R)})}}),I(z,{get name(){return t.settingTab.extraArguments},get children(){return I(ge,{style:"width: 100%",get value(){return h().customArguments??""},get title(){return h().customArguments},onChange:R=>W(v=>v.customArguments=R)})}}),I(z,{get name(){return t.settingTab.afterExport},heading:!0}),I(z,{get name(){return t.settingTab.openExportedFileLocation},get children(){return I(Ce,{get checked(){return h().openExportedFileLocation??!1},onChange:R=>W(v=>v.openExportedFileLocation=R)})}}),I(z,{get name(){return t.settingTab.openExportedFile},get children(){return I(Ce,{get checked(){return h().openExportedFile??!1},onChange:R=>W(v=>v.openExportedFile=R)})}}),I(z,{get name(){return t.settingTab.runCommand},get children(){return I(Ce,{get checked(){return h().runCommand},onChange:R=>W(v=>v.runCommand=R)})}}),I(bt,{get when(){return h().runCommand},get children(){return I(z,{get children(){return I(ge,{style:"width: 100%",get value(){return h().command??""},onChange:R=>W(v=>v.command=R)})}})}})]},T=()=>{const h=()=>b("custom"),W=R=>{f(v=>v.type==="custom"?R(v):void 0)};return[I(z,{get name(){return t.settingTab.command},get children(){return I(ge,{style:"width: 100%",get value(){return h().command},onChange:R=>W(v=>v.command=R)})}}),I(z,{get name(){return t.settingTab.targetFileExtensions},get children(){return I(ge,{get value(){return h().targetFileExtensions??""},onChange:R=>W(v=>v.targetFileExtensions=R)})}}),I(z,{get name(){return t.settingTab.afterExport},heading:!0}),I(z,{get name(){return t.settingTab.showCommandOutput},get children(){return I(Ce,{get checked(){return h().showCommandOutput??!1},onChange:R=>W(v=>v.showCommandOutput=R)})}}),I(z,{get name(){return t.settingTab.openExportedFileLocation},get children(){return I(Ce,{get checked(){return h().openExportedFileLocation??!1},onChange:R=>W(v=>v.openExportedFileLocation=R)})}}),I(z,{get name(){return t.settingTab.openExportedFile},get children(){return I(Ce,{get checked(){return h().openExportedFile??!1},onChange:R=>W(v=>v.openExportedFile=R)})}})]},Q=async()=>{await l.resetSettings(),a(l.settings)},be=async()=>{const h=await ye.remote.dialog.showOpenDialog({defaultPath:N()??ye.remote.app.getPath("documents"),properties:["createDirectory","openDirectory"]});!h.canceled&&h.filePaths.length>0&&a("customDefaultExportDirectory",W=>Ae(W,h.filePaths[0]))},me=async()=>{const h=await ye.remote.dialog.showOpenDialog({filters:Xt.platform=="win32"?[{extensions:["exe"],name:"pandoc"}]:void 0,properties:["openFile"]});!h.canceled&&h.filePaths.length>0&&a("pandocPath",W=>Ae(W,h.filePaths[0]))};return Ye(async()=>{try{const h=tn(Ze(n.env)??{});o(await mt.getVersion(Ze(n.pandocPath),h))}catch{o(void 0)}}),[I(z,{get name(){return t.settingTab.general},heading:!0,get children(){return I(Be,{icon:"reset",onClick:Q})}}),I(z,{get name(){return t.settingTab.pandocPath},get description(){return J()},get children(){return[I(ge,{get placeholder(){return t.settingTab.pandocPathPlaceholder},get value(){return Ze(n.pandocPath)??""},onChange:h=>a("pandocPath",W=>Ae(W,h))}),I(Be,{icon:"folder",onClick:me})]}}),I(z,{get name(){return t.settingTab.defaultFolderForExportedFile},get children(){return I(De,{get options(){return[{name:t.settingTab.auto,value:"Auto"},{name:t.settingTab.sameFolderWithCurrentFile,value:"Same"},{name:t.settingTab.customLocation,value:"Custom"}]},get selected(){return n.defaultExportDirectoryMode},onChange:h=>a("defaultExportDirectoryMode",h)})}}),I(bt,{get when(){return n.defaultExportDirectoryMode==="Custom"},get children(){return I(z,{get children(){return[I(ge,{get value(){return N()??""},get title(){return N()}}),I(Be,{icon:"folder",onClick:be})]}})}}),I(z,{get name(){return t.settingTab.openExportedFileLocation},get children(){return I(Ce,{get checked(){return n.openExportedFileLocation},onChange:h=>a("openExportedFileLocation",h)})}}),I(z,{get name(){return t.settingTab.openExportedFile},get children(){return I(Ce,{get checked(){return n.openExportedFile},onChange:h=>a("openExportedFile",h)})}}),I(z,{get name(){return t.settingTab.ShowExportProgressBar},get children(){return I(Ce,{get checked(){return n.showExportProgressBar},onChange:h=>a("showExportProgressBar",h)})}}),I(z,{get name(){return t.settingTab.editCommandTemplate},heading:!0}),I(z,{get name(){return t.settingTab.chooseCommandTemplate},get children(){return[I(De,{get options(){return n.items.map(h=>({name:h.name,value:h.name})).sort((h,W)=>h.name.localeCompare(W.name))},get selected(){return n.lastEditName},onChange:h=>a("lastEditName",h)}),I(Be,{icon:"plus",get tooltip(){return t.settingTab.add},onClick:()=>m(()=>E)}),I(Be,{icon:"pencil",get tooltip(){return t.settingTab.rename},onClick:()=>m(()=>S)}),I(Be,{icon:"trash",get tooltip(){return t.settingTab.remove},onClick:()=>Zt(()=>{var h;a("items",W=>W.filter(R=>{var v;return R.name!==((v=b())==null?void 0:v.name)})),a("lastEditName",(h=n.items.first())==null?void 0:h.name)})})]}}),I(lc,{get children(){return[I(Wl,{get when(){return b("pandoc")},get children(){return I(K,{})}}),I(Wl,{get when(){return b("custom")},get children(){return I(T,{})}})]}}),I(z,{get name(){return t.settingTab.advanced},heading:!0}),I(z,{get name(){return t.settingTab.environmentVariables},get description(){return t.settingTab.environmentVariablesDesc},get children(){return I(Qo,{style:"width: 100%;height: 5em",get value(){return s()},onChange:Z})}}),I(bt,{get when(){return U()},get children(){return I(pc,{get component(){return U()},ref:h=>document.body.appendChild(h)})}})]};var tt;class ta extends ue.PluginSettingTab{constructor(t){super(t.app,t);ul(this,tt);this.plugin=t,this.name=this.plugin.lang.settingTab.title}get lang(){return this.plugin.lang}display(){Gl(this,tt,we(t=>{const n=this;return se(this.containerEl,I(ea,{get plugin(){return n.plugin},get lang(){return n.lang}})),ze(()=>{this.containerEl.empty()}),t}))}hide(){ml(this,tt).call(this)}}tt=new WeakMap;const la=Uint8Array.from(atob("LS0gY3JlZGl0cyB0byB0YXJsZWIg4oCUIFN0YWNrRXhjaGFuZ2U6IGh0dHBzOi8vdGV4LnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8zOTIwNzAvcGFuZG9jLW1hcmtkb3duLWNyZWF0ZS1zZWxmLWNvbnRhaW5lZC1iaWItZmlsZS1mcm9tLWNpdGVkLXJlZmVyZW5jZXMKZnVuY3Rpb24gUGFuZG9jKGQpCiAgZC5tZXRhLnJlZmVyZW5jZXMgPSBwYW5kb2MudXRpbHMucmVmZXJlbmNlcyhkKQogIGQubWV0YS5iaWJsaW9ncmFwaHkgPSBuaWwKICByZXR1cm4gZAplbmQK"),e=>e.charCodeAt(0)),na=Object.freeze(Object.defineProperty({__proto__:null,default:la},Symbol.toStringTag,{value:"Module"})),ca=Uint8Array.from(atob("cGFja2FnZS5wYXRoPXBhY2thZ2UucGF0aC4uIjsiIC4uZGVidWcuZ2V0aW5mbygxKS5zb3VyY2U6bWF0Y2goIiguKlsvXFxdKSIpOnN1YigyKSAuLiAiPy5sdWEiCgpNb2RlPSdodWdvJwoKcmVxdWlyZSgnbWFya2Rvd24nKQ=="),e=>e.charCodeAt(0)),ia=Object.freeze(Object.defineProperty({__proto__:null,default:ca},Symbol.toStringTag,{value:"Module"})),sa=Uint8Array.from(atob("cGFja2FnZS5wYXRoPWRlYnVnLmdldGluZm8oMSkuc291cmNlOmdzdWIoJ0AnLCcnKTpzdWIoMCk6bWF0Y2goJyguKlsvXFxdKScpOnN1YigwKSAuLiAnPy5sdWEnIC4uICc7JyAuLiBwYWNrYWdlLnBhdGgKCnJlcXVpcmUoInBvbHlmaWxsIikKbG9jYWwgdXJsID0gcmVxdWlyZSgndXJsJykKCmxvY2FsIHBhbmRvYz1wYW5kb2MKbG9jYWwgUEFORE9DX1NUQVRFPVBBTkRPQ19TVEFURQoKUEFORE9DX1ZFUlNJT046bXVzdF9iZV9hdF9sZWFzdCAnMy4xLjcnCgpvcy50ZXh0ID0gcGFuZG9jLnRleHQKCmxvY2FsIFBBVEggPSBwYW5kb2MucGF0aApsb2NhbCBkb2NfZGlyID0gbmlsCmxvY2FsIG1lZGlhX2RpciA9IG5pbAoKaWYgTW9kZSA9PSBuaWwgdGhlbgogIE1vZGUgPSAnZGVmYXVsdCcKZW5kCgotLSBwcmludCgiTW9kZTogIi4uTW9kZSkKCmlmIFBBTkRPQ19TVEFURS5vdXRwdXRfZmlsZSB0aGVuCiAgbG9jYWwgb3V0cHV0X2ZpbGUgPSBQQU5ET0NfU1RBVEUub3V0cHV0X2ZpbGUKICBkb2NfZGlyID0gUEFUSC5kaXJlY3Rvcnkob3V0cHV0X2ZpbGUpCiAgaWYgUEFORE9DX1dSSVRFUl9PUFRJT05TLnZhcmlhYmxlc1sibWVkaWFfZGlyIl0gdGhlbgogICAgbWVkaWFfZGlyID0gdG9zdHJpbmcoUEFORE9DX1dSSVRFUl9PUFRJT05TLnZhcmlhYmxlc1sibWVkaWFfZGlyIl0pCiAgZWxzZQogICAgbWVkaWFfZGlyID0gUEFUSC5zcGxpdF9leHRlbnNpb24ob3V0cHV0X2ZpbGUpCiAgICBpZiBNb2RlIH49ICdodWdvJyB0aGVuCiAgICAgIG1lZGlhX2RpciA9IG1lZGlhX2RpciAuLiAnLW1lZGlhJwogICAgZW5kCiAgZW5kCmVuZAphc3NlcnQoZG9jX2RpciwgImRvY19kaXIgaXMgbmlsIikKYXNzZXJ0KG1lZGlhX2RpciwgIm1lZGlhX2RpciBpcyBuaWwiKQoKCmxvY2FsIGZ1bmN0aW9uIGdldF9hYnNvbHV0ZV9wYXRoKGZpbGVfcGF0aCkKICBpZiBQQVRILmlzX2Fic29sdXRlKGZpbGVfcGF0aCkgdGhlbgogICAgcmV0dXJuIGZpbGVfcGF0aAogIGVuZAogIGZvciBfLCBkaXIgaW4gcGFpcnMoUEFORE9DX1NUQVRFLnJlc291cmNlX3BhdGgpIGRvCiAgICBsb2NhbCBmdWxsX3BhdGggPSBQQVRILmpvaW4oe2RpciwgZmlsZV9wYXRofSkKICAgIGlmIG9zLmV4aXN0cyhmdWxsX3BhdGgpIHRoZW4KICAgICAgcmV0dXJuIGZ1bGxfcGF0aAogICAgZW5kCiAgZW5kCiAgZm9yIF8sIGZpbGUgaW4gcGFpcnMoUEFORE9DX1NUQVRFLmlucHV0X2ZpbGVzKSBkbwogICAgaWYgbm90IFBBVEguaXNfYWJzb2x1dGUoZmlsZSkgdGhlbgogICAgICBmaWxlID0gUEFUSC5qb2luKHtwYW5kb2Muc3lzdGVtLmdldF93b3JraW5nX2RpcmVjdG9yeSgpLCBmaWxlX3BhdGh9KQogICAgZW5kCiAgICBsb2NhbCBkaXIgPSBQQVRILmRpcmVjdG9yeShmaWxlKQogICAgbG9jYWwgZnVsbF9wYXRoID0gUEFUSC5qb2luKHtkaXIsIGZpbGVfcGF0aH0pCiAgICBpZiBvcy5leGlzdHMoZnVsbF9wYXRoKSB0aGVuCiAgICAgIHJldHVybiBmdWxsX3BhdGgKICAgIGVuZAogIGVuZAogIHJldHVybiBuaWwKZW5kCgpsb2NhbCBmdW5jdGlvbiBnZXRfb3V0cHV0X2ZpbGUoZmlsZV9wYXRoKQogIGlmIG1lZGlhX2RpciB0aGVuCiAgICBsb2NhbCBuZXdfZmlsZV9uYW1lID0gcGFuZG9jLnV0aWxzLnNoYTEoZmlsZV9wYXRoKQogICAgbG9jYWwgXywgbmV3X2ZpbGVfZXh0ID0gUEFUSC5zcGxpdF9leHRlbnNpb24oZmlsZV9wYXRoKQogICAgZmlsZV9wYXRoID0gbmV3X2ZpbGVfbmFtZSAuLiBuZXdfZmlsZV9leHQKICAgIGxvY2FsIGZ1bGxfcGF0aCA9IFBBVEguam9pbih7bWVkaWFfZGlyLCBmaWxlX3BhdGh9KQogICAgcmV0dXJuIGZ1bGxfcGF0aAogIGVsc2UKICAgIHJldHVybiBuaWwKICBlbmQKZW5kCgpsb2NhbCBmdW5jdGlvbiBleHRyYWN0X21lZGlhKGZpbGVfcGF0aCkKICBvcy5ta2RpcihtZWRpYV9kaXIpCiAgZmlsZV9wYXRoID0gdXJsLmRlY29kZShmaWxlX3BhdGgpCiAgbG9jYWwgYWJzX3BhdGggPSBnZXRfYWJzb2x1dGVfcGF0aChmaWxlX3BhdGgpCiAgbG9jYWwgZmlsZSA9IGdldF9vdXRwdXRfZmlsZShmaWxlX3BhdGgpCiAgaWYgYWJzX3BhdGggYW5kIGZpbGUgdGhlbgogICAgaWYgbm90IG9zLmV4aXN0cyhmaWxlKSB0aGVuCiAgICAgIG9zLmNvcHkoYWJzX3BhdGgsIGZpbGUpCiAgICBlbmQKICAgIGxvY2FsIHJlbF9wYXRoID0gUEFUSC5tYWtlX3JlbGF0aXZlKGZpbGUsIGRvY19kaXIsIGZhbHNlKQogICAgbG9jYWwgcGFydHMgPSBQQVRILnNwbGl0KHJlbF9wYXRoKQogICAgZm9yIGksdiBpbiBpcGFpcnMocGFydHMpIGRvCiAgICAgIHBhcnRzW2ldID0gdXJsLmVuY29kZSh2KQogICAgZW5kCiAgICBsb2NhbCBlbmNvZGVkX3JlbF9wYXRoID0gdGFibGUuY29uY2F0KHBhcnRzLCAiLyIpCiAgICBpZiBNb2RlID09ICdodWdvJyB0aGVuCiAgICAgIGVuY29kZWRfcmVsX3BhdGggPSAnLi4vJyAuLiBlbmNvZGVkX3JlbF9wYXRoCiAgICBlbmQKICAgIHJldHVybiBlbmNvZGVkX3JlbF9wYXRoCiAgZW5kCmVuZAoKbG9jYWwgZnVuY3Rpb24gcmF3KHMpCiAgcmV0dXJuIHBhbmRvYy5SYXdJbmxpbmUoJ21hcmtkb3duJywgcykKZW5kCgpmdW5jdGlvbiBJbWFnZShlbCkKICBsb2NhbCBzcmMgPSBleHRyYWN0X21lZGlhKGVsLnNyYykKICBpZiBzcmMgdGhlbgogICAgZWwuc3JjID0gc3JjCiAgZW5kCiAgcmV0dXJuIGVsCmVuZAoKZnVuY3Rpb24gU3BhY2UoKQogIHJldHVybiByYXcoJyAnKQplbmQKCmZ1bmN0aW9uIFNvZnRCcmVhaygpCiAgcmV0dXJuIHJhdygnXG4nKQplbmQKCmZ1bmN0aW9uIFJhd0lubGluZShlbCkKICBpZiBlbC5mb3JtYXQgPT0gImh0bWwiIHRoZW4KICAgIGVsLmZvcm1hdCA9ICdtYXJrZG93bicKICAgIGVsLnRleHQgPSBzdHJpbmcuZ3N1YihlbC50ZXh0LCAnPGltZ1tePl0rPicsIGZ1bmN0aW9uKGltZykKICAgICAgcmV0dXJuIHN0cmluZy5nc3ViKGltZywgJ3NyYz0iKFteIl0rKSInLCBmdW5jdGlvbih1cmwpCiAgICAgICAgaWYgc3RyaW5nLmZpbmQodXJsLCAnXltIaF1bVHRdW1R0XVtQcF1bU3NdPzovLycpID09IG5pbCAgdGhlbgogICAgICAgICAgbG9jYWwgZXh0cmFjdF9tZWRpYV91cmwgPSBleHRyYWN0X21lZGlhKHVybCkKICAgICAgICAgIGlmIGV4dHJhY3RfbWVkaWFfdXJsIHRoZW4KICAgICAgICAgICAgcmV0dXJuICdzcmM9IicgLi4gZXh0cmFjdF9tZWRpYV91cmwgLi4gJyInCiAgICAgICAgICBlbmQKICAgICAgICAgIHJldHVybiAnMTIzJwogICAgICAgIGVuZAogICAgICAgIHJldHVybiAnc3JjPSInIC4uIHVybCAuLiAnIicKICAgICAgZW5kKQogICAgZW5kKQogIGVuZAogIHJldHVybiBlbAplbmQKCmZ1bmN0aW9uIFJhd0Jsb2NrKGVsKQogIGlmIGVsLmZvcm1hdCA9PSAiaHRtbCIgdGhlbgogICAgZWwuZm9ybWF0ID0gJ21hcmtkb3duJwogIGVuZAogIHJldHVybiBlbAplbmQKCmZ1bmN0aW9uIE1hdGgoZWwpCiAgaWYgTW9kZSA9PSAnaHVnbycgdGhlbgogICAgaWYgZWwubWF0aHR5cGUgPT0gJ0Rpc3BsYXlNYXRoJyB0aGVuCiAgICAgIHJldHVybiByYXcoJ3t7PCBtYXRoamF4ID59fVxuJCQnICAuLiBlbC50ZXh0IC4uICckJFxue3s8L21hdGhqYXggPn19JykKICAgIGVsc2UKICAgICAgZWwudGV4dCA9IHN0cmluZy5nc3ViKGVsLnRleHQsICdcXFtcXHtcXH1dJywgZnVuY3Rpb24gKHYpCiAgICAgICAgcmV0dXJuICdcXCcgLi4gdgogICAgICBlbmQpCiAgICAgIGVsLnRleHQgPSBzdHJpbmcuZ3N1YihlbC50ZXh0LCAnXycsIGZ1bmN0aW9uICh2KQogICAgICAgIHJldHVybiAnXFwnIC4uIHYKICAgICAgZW5kKQogICAgZW5kCiAgZW5kCiAgcmV0dXJuIGVsCmVuZAoKbG9jYWwgZnVuY3Rpb24gaGVhZGVyTGluayhpbnB1dCkKICAtLSBnaXRodWIgc3R5bGUgc2VjdGlvbiBsaW5rCiAgcmV0dXJuICIjIi4uaW5wdXQ6Z3N1YignICcsICctJykKZW5kCgoKbG9jYWwgZnVuY3Rpb24gaW5zZXJ0TGluayhjb250ZW50LCBsaW5rRGVzY3JpcHRpb24pCiAgbG9jYWwgZGVzY3JpcHRpb25UZXh0ID0gdGFibGUuY29uY2F0KGxpbmtEZXNjcmlwdGlvbiwgIiIpCgogIGlmIHN0cmluZy5maW5kKGRlc2NyaXB0aW9uVGV4dCwgJ3wnKSB0aGVuCiAgICBsb2NhbCB0YXJnZXQsIGRlc2MgPSBkZXNjcmlwdGlvblRleHQ6bWF0Y2goIiguKil8KC4qKSIpCiAgICB0YWJsZS5pbnNlcnQoY29udGVudCwgcGFuZG9jLkxpbmsoZGVzYywgaGVhZGVyTGluayh0YXJnZXQpKSkKICBlbHNlCiAgICB0YWJsZS5pbnNlcnQoY29udGVudCwgcGFuZG9jLkxpbmsoZGVzY3JpcHRpb25UZXh0LCBoZWFkZXJMaW5rKGRlc2NyaXB0aW9uVGV4dCkpKQogIGVuZAplbmQKCmZ1bmN0aW9uIFBhcmEoZWwpCiAgbG9jYWwgY29udGVudCA9IGVsLmNvbnRlbnQKICBjb250ZW50ID0gUHJvY2Vzc01hdGgoY29udGVudCkKICBjb250ZW50ID0gUHJvY2Vzc0ludGVybmFsTGlua3MoY29udGVudCkKICBlbC5jb250ZW50ID0gY29udGVudAogIHJldHVybiBlbAplbmQKCmZ1bmN0aW9uIFByb2Nlc3NNYXRoKGVsZW1lbnRzKQogIGxvY2FsIGNvbnRlbnQgPSB7fQogIGxvY2FsIGluX2Rpc3BsYXlfbWF0aCA9IGZhbHNlCiAgZm9yIF8sIGl0ZW0gaW4gcGFpcnMoZWxlbWVudHMpIGRvCiAgICBpZiBpdGVtLnQgPT0gJ1N0cidhbmQgaXRlbS50ZXh0ID09ICIkJCIgdGhlbgogICAgICBpbl9kaXNwbGF5X21hdGggPSBub3QgaW5fZGlzcGxheV9tYXRoCiAgICBlbHNlCiAgICAgIGlmIGluX2Rpc3BsYXlfbWF0aCB0aGVuCiAgICAgICAgaWYgaXRlbS50ID09ICdSYXdJbmxpbmUnIGFuZCBpdGVtLmZvcm1hdCA9PSAndGV4JyB0aGVuCiAgICAgICAgICBsb2NhbCBuID0gcGFuZG9jLk1hdGgoJ0Rpc3BsYXlNYXRoJywgJ1xuJyAuLiBpdGVtLnRleHQgLi4gJ1xuJykKICAgICAgICAgIHRhYmxlLmluc2VydChjb250ZW50LCBNYXRoKG4pKQogICAgICAgIGVsc2UKICAgICAgICAgIHRhYmxlLmluc2VydChjb250ZW50LCBpdGVtKQogICAgICAgIGVuZAogICAgICBlbHNlCiAgICAgICAgdGFibGUuaW5zZXJ0KGNvbnRlbnQsIGl0ZW0pCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCiAgcmV0dXJuIGNvbnRlbnQKZW5kCgpmdW5jdGlvbiBQcm9jZXNzSW50ZXJuYWxMaW5rcyhlbGVtZW50cykKICBsb2NhbCBjb250ZW50ID0ge30KICBsb2NhbCBpbl9zZWN0aW9uX2xpbmsgPSBmYWxzZQogIGxvY2FsIGxpbmtEZXNjcmlwdGlvbiA9IHt9CgogIGZvciBfLCBpdGVtIGluIHBhaXJzKGVsZW1lbnRzKSBkbwogICAgaWYgaXRlbS50ID09ICdTdHInIGFuZCBzdHJpbmcuc3RhcnRzX3dpdGgoaXRlbS50ZXh0LCAnW1sjJykgdGhlbgogICAgICBpbl9zZWN0aW9uX2xpbmsgPSB0cnVlCiAgICAgIHRhYmxlLmluc2VydChsaW5rRGVzY3JpcHRpb24sIHN0cmluZy5zdWIoaXRlbS50ZXh0LCA0KSkKICAgIGVsc2VpZiBpbl9zZWN0aW9uX2xpbmsgdGhlbgogICAgICBpZiBzdHJpbmcuZW5kc193aXRoKGl0ZW0udGV4dCwgJ11dJykgdGhlbgogICAgICAgIHRhYmxlLmluc2VydChsaW5rRGVzY3JpcHRpb24sIHN0cmluZy5zdWIoaXRlbS50ZXh0LCAxLCAtMykpCiAgICAgICAgaW5zZXJ0TGluayhjb250ZW50LCBsaW5rRGVzY3JpcHRpb24pCiAgICAgICAgaW5fc2VjdGlvbl9saW5rID0gZmFsc2UKICAgICAgICBsaW5rRGVzY3JpcHRpb24gPSB7fQogICAgICBlbHNlCiAgICAgICAgdGFibGUuaW5zZXJ0KGxpbmtEZXNjcmlwdGlvbiwgaXRlbS50ZXh0KQogICAgICBlbmQKICAgIGVsc2UKICAgICAgdGFibGUuaW5zZXJ0KGNvbnRlbnQsIGl0ZW0pCiAgICBlbmQKICBlbmQKICByZXR1cm4gY29udGVudAplbmQKCmZ1bmN0aW9uIFBsYWluKGVsKQogIGVsLmNvbnRlbnQgPSBQcm9jZXNzSW50ZXJuYWxMaW5rcyhlbC5jb250ZW50KQogIHJldHVybiBlbAplbmQKCmZ1bmN0aW9uIFBhbmRvYyhlbCkKICByZXR1cm4gZWwKZW5kCg=="),e=>e.charCodeAt(0)),oa=Object.freeze(Object.defineProperty({__proto__:null,default:sa},Symbol.toStringTag,{value:"Module"})),aa=Uint8Array.from(atob("dHJhdmVyc2UgPSAndG9wZG93bicKCm1hdGhfYmxvY2tfdGV4dCA9IG5pbApmdW5jdGlvbiBwcm9jZXNzKGVsKQoKICAgLS0gTWF0aEJsb2NrIHN0YXJ0IG9yIGVuZAogICBpZiBlbC50ID09ICdTdHInIGFuZCBlbC50ZXh0ID09ICckJCcgdGhlbgogICAgIGlmIG1hdGhfYmxvY2tfdGV4dCA9PSBuaWwgdGhlbiAgICAgICAgICAgIC0tIHN0YXJ0CiAgICAgICBtYXRoX2Jsb2NrX3RleHQgPSAnJwogICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGVuZAogICAgICAgbG9jYWwgbWF0aF9ibG9jayA9IHBhbmRvYy5NYXRoKCdEaXNwbGF5TWF0aCcsICdcbicgLi4gbWF0aF9ibG9ja190ZXh0IC4uICdcbicpCiAgICAgICBtYXRoX2Jsb2NrX3RleHQgPSBuaWwKICAgICAgIHJldHVybiBtYXRoX2Jsb2NrCiAgICAgZW5kCiAgICAgcmV0dXJuIHt9CiAgIGVuZAoKICBpZiBtYXRoX2Jsb2NrX3RleHQgdGhlbgogICAgaWYgKGVsLnQgPT0gJ1Jhd0lubGluZScgb3IgZWwudCA9PSAnUmF3QmxvY2snKSBhbmQgZWwuZm9ybWF0ID09ICd0ZXgnIHRoZW4KICAgICAgbWF0aF9ibG9ja190ZXh0ID0gbWF0aF9ibG9ja190ZXh0IC4uIGVsLnRleHQKICAgICAgcmV0dXJuIHt9CiAgICBlbHNlaWYgZWwudCA9PSAnU3RyJyB0aGVuCiAgICAgIG1hdGhfYmxvY2tfdGV4dCA9IG1hdGhfYmxvY2tfdGV4dCAuLiBlbC50ZXh0CiAgICAgIHJldHVybiB7fQogICAgZWxzZWlmIGVsLnQgPT0gJ1NvZnRCcmVhaycgb3IgZWwudCA9PSAnQnVsbGV0TGlzdCcgdGhlbgogICAgICByZXR1cm4ge30KICAgIGVuZAogIGVuZAogIHJldHVybiBlbAplbmQKCmZ1bmN0aW9uIFJhd0lubGluZShlbCkgCiAgcmV0dXJuIHByb2Nlc3MoZWwpCmVuZAoKZnVuY3Rpb24gUmF3QmxvY2soZWwpIAogIHJldHVybiBwcm9jZXNzKGVsKQplbmQKCmZ1bmN0aW9uIFN0cihlbCkKICByZXR1cm4gcHJvY2VzcyhlbCkKZW5kCgpmdW5jdGlvbiBTb2Z0QnJlYWsoZWwpCiAgcmV0dXJuIHByb2Nlc3MoZWwpCmVuZAoKZnVuY3Rpb24gSGVhZGVyKGVsKQogIHJldHVybiBwcm9jZXNzKGVsKQplbmQKCmZ1bmN0aW9uIFBhcmEoZWwpCiAgcmV0dXJuIHByb2Nlc3MoZWwpCmVuZAoKZnVuY3Rpb24gUGxhaW4oZWwpCiAgcmV0dXJuIHByb2Nlc3MoZWwpCmVuZAoKZnVuY3Rpb24gQnVsbGV0TGlzdChlbCkKICByZXR1cm4gcHJvY2VzcyhlbCkKZW5kCgoKCgoKCg=="),e=>e.charCodeAt(0)),ra=Object.freeze(Object.defineProperty({__proto__:null,default:aa},Symbol.toStringTag,{value:"Module"})),da=Uint8Array.from(atob("LS0gbWluaW11bSBzdXBwb3J0ZWQgdmVyc2lvbiBmb3IgZnVsbCBlbnZpcm9ubWVudAotLSBzdXBwb3J0IGlzIDMuOC51bmtvd24geWV0IHRvIGJlIHJlbGVhc2VkIGJ1dCBwcm9iYWJseSAzCmxvY2FsIGVudmlyb25tZW50X2Z1bGx5X3N1cHBvcnRlZF92ZXJzaW9uID0gcGFuZG9jLnR5cGVzLlZlcnNpb24oJzMuOC4zJykKbG9jYWwgZW52aXJvbm1lbnRfcGFydGlhbGx5X3N1cHBvcnRlZF92ZXJzaW9uID0gcGFuZG9jLnR5cGVzLlZlcnNpb24oJzMuOC4wJykKbG9jYWwgaXNfcGFydGlhbGx5X3N1cHBvcnRlZCA9IFBBTkRPQ19WRVJTSU9OID49IGVudmlyb25tZW50X3BhcnRpYWxseV9zdXBwb3J0ZWRfdmVyc2lvbgpsb2NhbCBwcm9ibGFtYXRpY19lbnZpcm9ubWVudHMgPSB7CiAgICBkaXNwbGF5bWF0aCA9IHRydWUsCiAgICBtYXRoID0gdHJ1ZSwKICAgIGVxdWF0aW9uID0gdHJ1ZSwKICAgIFsiZXF1YXRpb24qIl0gPSB0cnVlLAogICAgZ2F0aGVyID0gdHJ1ZSwKICAgIFsiZ2F0aGVyKiJdID0gdHJ1ZSwKICAgIG11bHRsaW5lID0gdHJ1ZSwKICAgIFsibXVsdGxpbmUqIl0gPSB0cnVlLAogICAgZXFuYXJyYXkgPSB0cnVlLAogICAgWyJlcW5hcnJheSoiXSA9IHRydWUsCiAgICBhbGlnbiA9IHRydWUsCiAgICBbImFsaWduKiJdID0gdHJ1ZSwKICAgIGFsaWduYXQgPSB0cnVlLAogICAgWyJhbGlnbmF0KiJdID0gdHJ1ZSwKICAgIGZsYWxpZ24gPSB0cnVlLAogICAgWyJmbGFsaWduKiJdID0gdHJ1ZSwKfQppZiBpc19wYXJ0aWFsbHlfc3VwcG9ydGVkIHRoZW4KICAgIHJldHVybiB7CiAgICAgICAgewogICAgICAgICAgICBNYXRoID0gZnVuY3Rpb24oZWxlbSkKICAgICAgICAgICAgICAgIGlmIGVsZW0udGV4dDpmaW5kKCJeJXMqXFxiZWdpbnsiKSB+PSBuaWwgdGhlbgogICAgICAgICAgICAgICAgICAgIGxvY2FsIHJlcGxhY2VtZW50ID0gcGFuZG9jLnRleHQ6Z3N1YihlbGVtLnRleHQsICJeJXMqXFxiZWdpbnsoLi0pfSIsICJcXGJlZ2lueyUxfSIpOmdzdWIoIlxcZW5keyguLSl9JXMqJCIsICJcXGVuZHslMX0iKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBwYW5kb2MuTWF0aChyZXBsYWNlbWVudCwgZWxlbS5tYXRodHlwZSkKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbQogICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIGVuZCwKICAgICAgICB9CiAgICB9CmVsc2VpZiBub3QgZW52aXJvbm1lbnRfZnVsbHlfc3VwcG9ydGVkX3ZlcnNpb24gdGhlbgogICAgcmV0dXJuIHsKICAgICAgICB7CiAgICAgICAgICAgIE1hdGggPSBmdW5jdGlvbihlbGVtKQogICAgICAgICAgICAgICAgbG9jYWwgcmVzdWx0ID0gZWxlbS50ZXh0Om1hdGNoKCJeJXMqXFxiZWdpbnsoJWErJSo/KX0iKQogICAgICAgICAgICAgICAgaWYgcmVzdWx0IH49IG5pbCBhbmQgcHJvYmxhbWF0aWNfZW52aXJvbm1lbnRzW3Jlc3VsdF0gfj0gbmlsIHRoZW4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFuZG9jLlJhd0lubGluZSgndGV4JywgZWxlbS50ZXh0KQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZW5kLAogICAgICAgIH0KICAgIH0KZW5kCg=="),e=>e.charCodeAt(0)),ga=Object.freeze(Object.defineProperty({__proto__:null,default:da},Symbol.toStringTag,{value:"Module"})),Za=Uint8Array.from(atob("b3MucGxhdGZvcm0gPSBuaWwKaWYgb3MucGxhdGZvcm0gPT0gbmlsIHRoZW4KICBsb2NhbCBsaWJFeHQgPSBwYWNrYWdlLmNwYXRoOm1hdGNoKCIlcFtcXHwvXT9cXC4lcCglYSspIikKICBpZiBsaWJFeHQgPT0gJ2RsbCcgdGhlbgogICAgb3MucGxhdGZvcm0gPSAiV2luZG93cyIKICBlbHNlaWYgbGliRXh0ID09ICdzbycgdGhlbgogICAgb3MucGxhdGZvcm0gPSAiTGludXgiCiAgZWxzZWlmIGxpYkV4dCA9PSAnZHlsaWInIHRoZW4KICAgIG9zLnBsYXRmb3JtID0gIk1hY09TIgogIGVuZAplbmQKCgpvcy5jb3B5ID0gZnVuY3Rpb24oc3JjLCBkZXN0KQogIGlmIG9zLnBsYXRmb3JtID09ICJXaW5kb3dzIiB0aGVuCiAgICBzcmMgPSBzdHJpbmcuZ3N1YihzcmMsICIvIiwgIlxcIikKICAgIHNyYyA9IG9zLnRleHQudG9lbmNvZGluZyhzcmMpCiAgICBkZXN0ID0gb3MudGV4dC50b2VuY29kaW5nKGRlc3QpCiAgICBvcy5leGVjdXRlKCdjb3B5ICInIC4uIHNyYyAuLiAnIiAiJyAuLiBkZXN0IC4uICciID5OVUwnKQogIGVsc2UKICAgIG9zLmV4ZWN1dGUoJ2NwICInIC4uIHNyYyAuLiAnIiAiJyAuLiBkZXN0IC4uICciJykKICBlbmQKZW5kCgpvcy5ta2RpciA9IGZ1bmN0aW9uKGRpcikKICBpZiBvcy5leGlzdHMoZGlyKSB0aGVuCiAgICByZXR1cm4KICBlbmQKICBpZiBvcy5wbGF0Zm9ybSA9PSAiV2luZG93cyIgdGhlbgogICAgZGlyID0gb3MudGV4dC50b2VuY29kaW5nKGRpcikKICAgIG9zLmV4ZWN1dGUoJ21rZGlyICInIC4uIGRpciAuLiAnIicpCiAgZWxzZQogICAgb3MuZXhlY3V0ZSgnbWtkaXIgLXAgIicgLi4gZGlyIC4uICciJykKICBlbmQKZW5kCgpvcy5leGlzdHMgPSBmdW5jdGlvbihwYXRoKQogIGlmIG9zLnBsYXRmb3JtID09ICJXaW5kb3dzIiB0aGVuCiAgICBwYXRoID0gc3RyaW5nLmdzdWIocGF0aCwgIi8iLCAiXFwiKQogICAgcGF0aCA9IG9zLnRleHQudG9lbmNvZGluZyhwYXRoKQogICAgbG9jYWwgXywgXywgY29kZSA9IG9zLmV4ZWN1dGUoJ2lmIGV4aXN0ICInIC4uIHBhdGggLi4gJyIgKGV4aXQgMCkgZWxzZSAoZXhpdCAxKScpCiAgICByZXR1cm4gY29kZSA9PSAwCiAgZWxzZQogICAgbG9jYWwgXywgXywgY29kZSA9IG9zLmV4ZWN1dGUoJ3Rlc3QgLWUgIicgLi4gcGF0aCAuLiAnIicpCiAgICByZXR1cm4gY29kZSA9PSAwCiAgZW5kCmVuZAoKc3RyaW5nLnN0YXJ0c193aXRoID0gZnVuY3Rpb24oc3RyLCBzdGFydCkKICAgcmV0dXJuIHN0cjpzdWIoMSwgI3N0YXJ0KSA9PSBzdGFydAplbmQKCnN0cmluZy5lbmRzX3dpdGggPSBmdW5jdGlvbihzdHIsIGVuZGluZykKICAgcmV0dXJuIGVuZGluZyA9PSAiIiBvciBzdHI6c3ViKC0jZW5kaW5nKSA9PSBlbmRpbmcKZW5kCgoKcmV0dXJuIHsKICBvcyA9IG9zLAogIHN0cmluZyA9IHN0cmluZwp9"),e=>e.charCodeAt(0)),ba=Object.freeze(Object.defineProperty({__proto__:null,default:Za},Symbol.toStringTag,{value:"Module"})),ma=Uint8Array.from(atob("bG9jYWwgZnVuY3Rpb24gZW5jb2RlIChzdHIpCiAgc3RyID0gc3RyaW5nLmdzdWIgKHN0ciwgIihbXjAtOWEtekEtWiAhJygpKi5ffi1dKSIsIC0tIGxvY2FsZSBpbmRlcGVuZGVudAogICAgZnVuY3Rpb24gKGMpIHJldHVybiBzdHJpbmcuZm9ybWF0ICgiJSUlMDJYIiwgc3RyaW5nLmJ5dGUoYykpIGVuZCkKICBzdHIgPSBzdHJpbmcuZ3N1YiAoc3RyLCAiICIsICIlJTIwIikKICByZXR1cm4gc3RyCiBlbmQKCgpsb2NhbCBmdW5jdGlvbiBkZWNvZGUgKHN0cikKICBzdHIgPSBzdHJpbmcuZ3N1YiAoc3RyLCAiJSUyMCIsICIgIikKICBzdHIgPSBzdHJpbmcuZ3N1YiAoc3RyLCAiJSUoJXgleCkiLCBmdW5jdGlvbihoKSByZXR1cm4gc3RyaW5nLmNoYXIodG9udW1iZXIoaCwxNikpIGVuZCkKICByZXR1cm4gc3RyCmVuZAoKcmV0dXJuIHsKICBlbmNvZGUgPSBlbmNvZGUsCiAgZGVjb2RlID0gZGVjb2RlCn0="),e=>e.charCodeAt(0)),ua=Object.freeze(Object.defineProperty({__proto__:null,default:ma},Symbol.toStringTag,{value:"Module"})),Ga=Uint8Array.from(atob("JSUKJSBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDIzLCBQYXNjYWwgV2FnbGVyOwolIENvcHlyaWdodCAoYykgMjAxNCAtIDIwMjMsIEpvaG4gTWFjRmFybGFuZQolCiUgQWxsIHJpZ2h0cyByZXNlcnZlZC4KJQolIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAolIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwolIGFyZSBtZXQ6CiUKJSAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiUgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgolCiUgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAolIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKJSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgolCiUgLSBOZWl0aGVyIHRoZSBuYW1lIG9mIEpvaG4gTWFjRmFybGFuZSBub3IgdGhlIG5hbWVzIG9mIG90aGVyCiUgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCiUgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgolCiUgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwolICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiUgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKJSBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQolIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKJSBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLAolIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKJSBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCiUgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCiUgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4KJSBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKJSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KJSUKCiUlCiUgVGhpcyBpcyB0aGUgRWlzdm9nZWwgcGFuZG9jIExhVGVYIHRlbXBsYXRlLgolCiUgRm9yIHVzYWdlIGluZm9ybWF0aW9uIGFuZCBleGFtcGxlcyB2aXNpdCB0aGUgb2ZmaWNpYWwgR2l0SHViIHBhZ2U6CiUgaHR0cHM6Ly9naXRodWIuY29tL1dhbmRtYWxmYXJiZS9wYW5kb2MtbGF0ZXgtdGVtcGxhdGUKJSUKCiUgT3B0aW9ucyBmb3IgcGFja2FnZXMgbG9hZGVkIGVsc2V3aGVyZQpcUGFzc09wdGlvbnNUb1BhY2thZ2V7dW5pY29kZSRmb3IoaHlwZXJyZWZvcHRpb25zKSQsJGh5cGVycmVmb3B0aW9ucyQkZW5kZm9yJH17aHlwZXJyZWZ9ClxQYXNzT3B0aW9uc1RvUGFja2FnZXtoeXBoZW5zfXt1cmx9ClxQYXNzT3B0aW9uc1RvUGFja2FnZXtkdmlwc25hbWVzLHN2Z25hbWVzLHgxMW5hbWVzLHRhYmxlfXt4Y29sb3J9CiRpZihDSkttYWluZm9udCkkClxQYXNzT3B0aW9uc1RvUGFja2FnZXtzcGFjZX17eGVDSkt9Clx1c2VwYWNrYWdle2RhdGV0aW1lfQoKJGVuZGlmJAolClxkb2N1bWVudGNsYXNzWwokaWYoZm9udHNpemUpJAogICRmb250c2l6ZSQsCiRlbmRpZiQKJGlmKHBhcGVyc2l6ZSkkCiAgJHBhcGVyc2l6ZSRwYXBlciwKJGVsc2UkCiAgcGFwZXI9YTQsCiRlbmRpZiQKJGlmKGJlYW1lcikkCiAgaWdub3Jlbm9uZnJhbWV0ZXh0LAokaWYoaGFuZG91dCkkCiAgaGFuZG91dCwKJGVuZGlmJAokaWYoYXNwZWN0cmF0aW8pJAogIGFzcGVjdHJhdGlvPSRhc3BlY3RyYXRpbyQsCiRlbmRpZiQKJGVuZGlmJAokZm9yKGNsYXNzb3B0aW9uKSQKICAkY2xhc3NvcHRpb24kJHNlcCQsCiRlbmRmb3IkCiAgLGNhcHRpb25zPXRhYmxlaGVhZGluZwpdeyRpZihiZWFtZXIpJCRkb2N1bWVudGNsYXNzJCRlbHNlJCRpZihib29rKSRzY3Jib29rJGVsc2Ukc2NyYXJ0Y2wkZW5kaWYkJGVuZGlmJH0KJGlmKGJlYW1lcikkCiRpZihiYWNrZ3JvdW5kLWltYWdlKSQKXHVzZWJhY2tncm91bmR0ZW1wbGF0ZXslCiAgXGluY2x1ZGVncmFwaGljc1t3aWR0aD1ccGFwZXJ3aWR0aF17JGJhY2tncm91bmQtaW1hZ2UkfSUKfQolIEluIGJlYW1lciBiYWNrZ3JvdW5kLWltYWdlIGRvZXMgbm90IHdvcmsgd2VsbCB3aGVuIG90aGVyIGltYWdlcyBhcmUgdXNlZCwgc28gdGhpcyBpcyB0aGUgd29ya2Fyb3VuZApccGdmZGVjbGFyZWltYWdlW3dpZHRoPVxwYXBlcndpZHRoLGhlaWdodD1ccGFwZXJoZWlnaHRde2JhY2tncm91bmR9eyRiYWNrZ3JvdW5kLWltYWdlJH0KXHVzZWJhY2tncm91bmR0ZW1wbGF0ZXtccGdmdXNlaW1hZ2V7YmFja2dyb3VuZH19CiRlbmRpZiQKXHVzZXBhY2thZ2V7cGdmcGFnZXN9ClxzZXRiZWFtZXJ0ZW1wbGF0ZXtjYXB0aW9ufVtudW1iZXJlZF0KXHNldGJlYW1lcnRlbXBsYXRle2NhcHRpb24gbGFiZWwgc2VwYXJhdG9yfXs6IH0KXHNldGJlYW1lcmNvbG9ye2NhcHRpb24gbmFtZX17Zmc9bm9ybWFsIHRleHQuZmd9ClxiZWFtZXJ0ZW1wbGF0ZW5hdmlnYXRpb25zeW1ib2xzJGlmKG5hdmlnYXRpb24pJCRuYXZpZ2F0aW9uJCRlbHNlJGVtcHR5JGVuZGlmJAokZm9yKGJlYW1lcm9wdGlvbikkClxzZXRiZWFtZXJvcHRpb257JGJlYW1lcm9wdGlvbiR9CiRlbmRmb3IkCiUgUHJldmVudCBzbGlkZSBicmVha3MgaW4gdGhlIG1pZGRsZSBvZiBhIHBhcmFncmFwaApcd2lkb3dwZW5hbHRpZXMgMSAxMDAwMApccmFnZ2VkYm90dG9tCiRpZihzZWN0aW9uLXRpdGxlcykkClxzZXRiZWFtZXJ0ZW1wbGF0ZXtwYXJ0IHBhZ2V9ewogIFxjZW50ZXJpbmcKICBcYmVnaW57YmVhbWVyY29sb3Jib3h9W3NlcD0xNnB0LGNlbnRlcl17cGFydCB0aXRsZX0KICAgIFx1c2ViZWFtZXJmb250e3BhcnQgdGl0bGV9XGluc2VydHBhcnRccGFyCiAgXGVuZHtiZWFtZXJjb2xvcmJveH0KfQpcc2V0YmVhbWVydGVtcGxhdGV7c2VjdGlvbiBwYWdlfXsKICBcY2VudGVyaW5nCiAgXGJlZ2lue2JlYW1lcmNvbG9yYm94fVtzZXA9MTJwdCxjZW50ZXJde3BhcnQgdGl0bGV9CiAgICBcdXNlYmVhbWVyZm9udHtzZWN0aW9uIHRpdGxlfVxpbnNlcnRzZWN0aW9uXHBhcgogIFxlbmR7YmVhbWVyY29sb3Jib3h9Cn0KXHNldGJlYW1lcnRlbXBsYXRle3N1YnNlY3Rpb24gcGFnZX17CiAgXGNlbnRlcmluZwogIFxiZWdpbntiZWFtZXJjb2xvcmJveH1bc2VwPThwdCxjZW50ZXJde3BhcnQgdGl0bGV9CiAgICBcdXNlYmVhbWVyZm9udHtzdWJzZWN0aW9uIHRpdGxlfVxpbnNlcnRzdWJzZWN0aW9uXHBhcgogIFxlbmR7YmVhbWVyY29sb3Jib3h9Cn0KXEF0QmVnaW5QYXJ0ewogIFxmcmFtZXtccGFydHBhZ2V9Cn0KXEF0QmVnaW5TZWN0aW9uewogIFxpZmJpYmxpb2dyYXBoeQogIFxlbHNlCiAgICBcZnJhbWV7XHNlY3Rpb25wYWdlfQogIFxmaQp9ClxBdEJlZ2luU3Vic2VjdGlvbnsKICBcZnJhbWV7XHN1YnNlY3Rpb25wYWdlfQp9CiRlbmRpZiQKJGVuZGlmJAokaWYoYmVhbWVyYXJ0aWNsZSkkClx1c2VwYWNrYWdle2JlYW1lcmFydGljbGV9ICUgbmVlZHMgdG8gYmUgbG9hZGVkIGZpcnN0CiRlbmRpZiQKXHVzZXBhY2thZ2V7YW1zbWF0aCxhbXNzeW1ifQokaWYobGluZXN0cmV0Y2gpJApcdXNlcGFja2FnZXtzZXRzcGFjZX0KJGVsc2UkCiUgVXNlIHNldHNwYWNlIGFueXdheSBiZWNhdXNlIHdlIGNoYW5nZSB0aGUgZGVmYXVsdCBsaW5lIHNwYWNpbmcuCiUgVGhlIHNwYWNpbmcgaXMgY2hhbmdlZCBlYXJseSB0byBhZmZlY3QgdGhlIHRpdGxlcGFnZSBhbmQgdGhlIFRPQy4KXHVzZXBhY2thZ2V7c2V0c3BhY2V9ClxzZXRzdHJldGNoezEuMn0KJGVuZGlmJApcdXNlcGFja2FnZXtpZnRleH0KXGlmUERGVGVYCiAgXHVzZXBhY2thZ2VbJGlmKGZvbnRlbmMpJCRmb250ZW5jJCRlbHNlJFQxJGVuZGlmJF17Zm9udGVuY30KICBcdXNlcGFja2FnZVt1dGY4XXtpbnB1dGVuY30KICBcdXNlcGFja2FnZXt0ZXh0Y29tcH0gJSBwcm92aWRlIGV1cm8gYW5kIG90aGVyIHN5bWJvbHMKXGVsc2UgJSBpZiBsdWF0ZXggb3IgeGV0ZXgKJGlmKG1hdGhzcGVjKSQKICBcaWZYZVRlWAogICAgXHVzZXBhY2thZ2V7bWF0aHNwZWN9ICUgdGhpcyBhbHNvIGxvYWRzIGZvbnRzcGVjCiAgXGVsc2UKICAgIFx1c2VwYWNrYWdle3VuaWNvZGUtbWF0aH0gJSB0aGlzIGFsc28gbG9hZHMgZm9udHNwZWMKICBcZmkKJGVsc2UkCiAgXHVzZXBhY2thZ2V7dW5pY29kZS1tYXRofSAlIHRoaXMgYWxzbyBsb2FkcyBmb250c3BlYwokZW5kaWYkCiAgXGRlZmF1bHRmb250ZmVhdHVyZXN7U2NhbGU9TWF0Y2hMb3dlcmNhc2V9JC0tIG11c3QgY29tZSBiZWZvcmUgQmVhbWVyIHRoZW1lCiAgXGRlZmF1bHRmb250ZmVhdHVyZXNbXHJtZmFtaWx5XXtMaWdhdHVyZXM9VGVYLFNjYWxlPTF9ClxmaQokaWYoZm9udGZhbWlseSkkCiRlbHNlJAokLS0gU2V0IGRlZmF1bHQgZm9udCBiZWZvcmUgQmVhbWVyIHRoZW1lIHNvIHRoZSB0aGVtZSBjYW4gb3ZlcnJpZGUgaXQKXHVzZXBhY2thZ2V7bG1vZGVybn0KJGVuZGlmJAokLS0gU2V0IEJlYW1lciB0aGVtZSBiZWZvcmUgdXNlciBmb250IHNldHRpbmdzIHNvIHRoZXkgY2FuIG92ZXJyaWRlIHRoZW1lCiRpZihiZWFtZXIpJAokaWYodGhlbWUpJApcdXNldGhlbWVbJGZvcih0aGVtZW9wdGlvbnMpJCR0aGVtZW9wdGlvbnMkJHNlcCQsJGVuZGZvciRdeyR0aGVtZSR9CiRlbmRpZiQKJGlmKGNvbG9ydGhlbWUpJApcdXNlY29sb3J0aGVtZXskY29sb3J0aGVtZSR9CiRlbmRpZiQKJGlmKGZvbnR0aGVtZSkkClx1c2Vmb250dGhlbWV7JGZvbnR0aGVtZSR9CiRlbmRpZiQKJGlmKG1haW5mb250KSQKXHVzZWZvbnR0aGVtZXtzZXJpZn0gJSB1c2UgbWFpbmZvbnQgcmF0aGVyIHRoYW4gc2Fuc2ZvbnQgZm9yIHNsaWRlIHRleHQKJGVuZGlmJAokaWYoaW5uZXJ0aGVtZSkkClx1c2Vpbm5lcnRoZW1leyRpbm5lcnRoZW1lJH0KJGVuZGlmJAokaWYob3V0ZXJ0aGVtZSkkClx1c2VvdXRlcnRoZW1leyRvdXRlcnRoZW1lJH0KJGVuZGlmJAokZW5kaWYkCiQtLSBVc2VyIGZvbnQgc2V0dGluZ3MgKG11c3QgY29tZSBhZnRlciBkZWZhdWx0IGZvbnQgYW5kIEJlYW1lciB0aGVtZSkKJGlmKGZvbnRmYW1pbHkpJApcdXNlcGFja2FnZVskZm9yKGZvbnRmYW1pbHlvcHRpb25zKSQkZm9udGZhbWlseW9wdGlvbnMkJHNlcCQsJGVuZGZvciRdeyRmb250ZmFtaWx5JH0KJGVuZGlmJApcaWZQREZUZVhcZWxzZQogICUgeGV0ZXgvbHVhdGV4IGZvbnQgc2VsZWN0aW9uCiRpZihtYWluZm9udCkkCiAgXHNldG1haW5mb250WyRmb3IobWFpbmZvbnRvcHRpb25zKSQkbWFpbmZvbnRvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXskbWFpbmZvbnQkfQokZW5kaWYkCiRpZihzYW5zZm9udCkkCiAgXHNldHNhbnNmb250WyRmb3Ioc2Fuc2ZvbnRvcHRpb25zKSQkc2Fuc2ZvbnRvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXskc2Fuc2ZvbnQkfQokZW5kaWYkCiRpZihtb25vZm9udCkkCiAgXHNldG1vbm9mb250WyRmb3IobW9ub2ZvbnRvcHRpb25zKSQkbW9ub2ZvbnRvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXskbW9ub2ZvbnQkfQokZW5kaWYkCiRmb3IoZm9udGZhbWlsaWVzKSQKICBcbmV3Zm9udGZhbWlseXskZm9udGZhbWlsaWVzLm5hbWUkfVskZm9yKGZvbnRmYW1pbGllcy5vcHRpb25zKSQkZm9udGZhbWlsaWVzLm9wdGlvbnMkJHNlcCQsJGVuZGZvciRdeyRmb250ZmFtaWxpZXMuZm9udCR9CiRlbmRmb3IkCiRpZihtYXRoZm9udCkkCiRpZihtYXRoc3BlYykkCiAgXGlmWGVUZVgKICAgIFxzZXRtYXRoZm9udChEaWdpdHMsTGF0aW4sR3JlZWspWyRmb3IobWF0aGZvbnRvcHRpb25zKSQkbWF0aGZvbnRvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXskbWF0aGZvbnQkfQogIFxlbHNlCiAgICBcc2V0bWF0aGZvbnRbJGZvcihtYXRoZm9udG9wdGlvbnMpJCRtYXRoZm9udG9wdGlvbnMkJHNlcCQsJGVuZGZvciRdeyRtYXRoZm9udCR9CiAgXGZpCiRlbHNlJAogIFxzZXRtYXRoZm9udFskZm9yKG1hdGhmb250b3B0aW9ucykkJG1hdGhmb250b3B0aW9ucyQkc2VwJCwkZW5kZm9yJF17JG1hdGhmb250JH0KJGVuZGlmJAokZW5kaWYkCiRpZihDSkttYWluZm9udCkkCiAgXGlmWGVUZVgKICAgIFx1c2VwYWNrYWdle3hlQ0pLfQogICAgXHNldENKS21haW5mb250WyRmb3IoQ0pLb3B0aW9ucykkJENKS29wdGlvbnMkJHNlcCQsJGVuZGZvciRdeyRDSkttYWluZm9udCR9CiAgICAkaWYoQ0pLc2Fuc2ZvbnQpJAogICAgICBcc2V0Q0pLc2Fuc2ZvbnRbJGZvcihDSktvcHRpb25zKSQkQ0pLb3B0aW9ucyQkc2VwJCwkZW5kZm9yJF17JENKS3NhbnNmb250JH0KICAgICRlbmRpZiQKICAgICRpZihDSkttb25vZm9udCkkCiAgICAgIFxzZXRDSkttb25vZm9udFskZm9yKENKS29wdGlvbnMpJCRDSktvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXskQ0pLbW9ub2ZvbnQkfQogICAgJGVuZGlmJAogIFxmaQokZW5kaWYkCiRpZihsdWF0ZXhqYXByZXNldG9wdGlvbnMpJAogIFxpZkx1YVRlWAogICAgXHVzZXBhY2thZ2VbJGZvcihsdWF0ZXhqYXByZXNldG9wdGlvbnMpJCRsdWF0ZXhqYXByZXNldG9wdGlvbnMkJHNlcCQsJGVuZGZvciRde2x1YXRleGphLXByZXNldH0KICBcZmkKJGVuZGlmJAokaWYoQ0pLbWFpbmZvbnQpJAogIFxpZkx1YVRlWAogICAgXHVzZXBhY2thZ2VbJGZvcihsdWF0ZXhqYWZvbnRzcGVjb3B0aW9ucykkJGx1YXRleGphZm9udHNwZWNvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXtsdWF0ZXhqYS1mb250c3BlY30KICAgIFxzZXRtYWluamZvbnRbJGZvcihDSktvcHRpb25zKSQkQ0pLb3B0aW9ucyQkc2VwJCwkZW5kZm9yJF17JENKS21haW5mb250JH0KICBcZmkKJGVuZGlmJApcZmkKJGlmKHplcm8td2lkdGgtbm9uLWpvaW5lcikkCiUlIFN1cHBvcnQgZm9yIHplcm8td2lkdGggbm9uLWpvaW5lciBjaGFyYWN0ZXJzLgpcbWFrZWF0bGV0dGVyClxkZWZcemVyb3dpZHRobm9uam9pbmVyeyUKICAlIFByZXZlbnQgbGlnYXR1cmVzIGFuZCBhZGp1c3Qga2VybmluZywgYnV0IHN0aWxsIHN1cHBvcnQgaHlwaGVuYXRpbmcuCiAgXHRleG9ycGRmc3RyaW5neyUKICAgIFxUZXh0T3JNYXRoe1xub2JyZWFrXGRpc2NyZXRpb25hcnl7LX17fXtca2Vybi4wM2VtfSUKICAgICAgXGlmdm1vZGVcZWxzZVxub2JyZWFrXGhza2lwXHpAc2tpcFxmaX17fSUKICB9e30lCn0KXG1ha2VhdG90aGVyClxpZlBERlRlWAogIFxEZWNsYXJlVW5pY29kZUNoYXJhY3RlcnsyMDBDfXtcemVyb3dpZHRobm9uam9pbmVyfQpcZWxzZQogIFxjYXRjb2RlYF5eXl4yMDBjPVxhY3RpdmUKICBccHJvdGVjdGVkXGRlZiBeXl5eMjAwY3tcemVyb3dpZHRobm9uam9pbmVyfQpcZmkKJSUgRW5kIG9mIFpXTkogc3VwcG9ydAokZW5kaWYkCiUgVXNlIHVwcXVvdGUgaWYgYXZhaWxhYmxlLCBmb3Igc3RyYWlnaHQgcXVvdGVzIGluIHZlcmJhdGltIGVudmlyb25tZW50cwpcSWZGaWxlRXhpc3Rze3VwcXVvdGUuc3R5fXtcdXNlcGFja2FnZXt1cHF1b3RlfX17fQpcSWZGaWxlRXhpc3Rze21pY3JvdHlwZS5zdHl9eyUgdXNlIG1pY3JvdHlwZSBpZiBhdmFpbGFibGUKICBcdXNlcGFja2FnZVskZm9yKG1pY3JvdHlwZW9wdGlvbnMpJCRtaWNyb3R5cGVvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXttaWNyb3R5cGV9CiAgXFVzZU1pY3JvdHlwZVNldFtwcm90cnVzaW9uXXtiYXNpY21hdGh9ICUgZGlzYWJsZSBwcm90cnVzaW9uIGZvciB0dCBmb250cwp9e30KJGlmKGluZGVudCkkCiRlbHNlJAoKXHVzZXBhY2thZ2V7cGdmcGFnZXN9IApcdXNlcGFja2FnZVtleHBvcnRde2FkanVzdGJveH0KXHVzZXBhY2thZ2V7Z3JhcGhpY3h9Clx1c2VwYWNrYWdle3JhZ2dlZDJlfQpcbWFrZWF0bGV0dGVyClxAaWZ1bmRlZmluZWR7S09NQUNsYXNzTmFtZX17JSBpZiBub24tS09NQSBjbGFzcwogIFxJZkZpbGVFeGlzdHN7cGFyc2tpcC5zdHl9eyUKICAgIFx1c2VwYWNrYWdle3BhcnNraXB9CiAgfXslIGVsc2UKICAgIFxzZXRsZW5ndGh7XHBhcmluZGVudH17MHB0fQogICAgXHNldGxlbmd0aHtccGFyc2tpcH17NnB0IHBsdXMgMnB0IG1pbnVzIDFwdH19Cn17JSBpZiBLT01BIGNsYXNzCiAgXEtPTUFvcHRpb25ze3BhcnNraXA9aGFsZn19ClxtYWtlYXRvdGhlcgokZW5kaWYkCiRpZih2ZXJiYXRpbS1pbi1ub3RlKSQKXHVzZXBhY2thZ2V7ZmFuY3l2cmJ9CiRlbmRpZiQKXHVzZXBhY2thZ2V7eGNvbG9yfQpcZGVmaW5lY29sb3J7ZGVmYXVsdC1saW5rY29sb3J9e0hUTUx9e0E1MDAwMH0KXGRlZmluZWNvbG9ye2RlZmF1bHQtZmlsZWNvbG9yfXtIVE1MfXtBNTAwMDB9ClxkZWZpbmVjb2xvcntkZWZhdWx0LWNpdGVjb2xvcn17SFRNTH17NDA3N0MwfQpcZGVmaW5lY29sb3J7ZGVmYXVsdC11cmxjb2xvcn17SFRNTH17NDA3N0MwfQokaWYoZm9vdG5vdGVzLXByZXR0eSkkCiUgbG9hZCBmb290bWlzYyBpbiBvcmRlciB0byBjdXN0b21pemUgZm9vdG5vdGVzIChmb290bWlzYyBoYXMgdG8gYmUgbG9hZGVkIGJlZm9yZSBoeXBlcnJlZiwgY2YuIGh0dHBzOi8vdGV4LnN0YWNrZXhjaGFuZ2UuY29tL2EvMTY5MTI0LzE0NDA4NykKXHVzZXBhY2thZ2VbaGFuZyxmbHVzaG1hcmdpbixib3R0b20sbXVsdGlwbGVde2Zvb3RtaXNjfQpcc2V0bGVuZ3Roe1xmb290bm90ZW1hcmdpbn17MC44ZW19ICUgc2V0IHNwYWNlIGJldHdlZW4gZm9vdG5vdGUgbnIgYW5kIHRleHQKXHNldGxlbmd0aHtcZm9vdG5vdGVzZXB9e1xiYXNlbGluZXNraXB9ICUgc2V0IHNwYWNlIGJldHdlZW4gbXVsdGlwbGUgZm9vdG5vdGVzClxzZXRsZW5ndGh7XHNraXBcZm9vdGluc317MC4zY219ICUgc2V0IHNwYWNlIGJldHdlZW4gcGFnZSBjb250ZW50IGFuZCBmb290bm90ZQpcc2V0bGVuZ3Roe1xmb290c2tpcH17MC45Y219ICUgc2V0IHNwYWNlIGJldHdlZW4gZm9vdG5vdGUgYW5kIHBhZ2UgYm90dG9tCiRlbmRpZiQKJGlmKGdlb21ldHJ5KSQKJGlmKGJlYW1lcikkClxnZW9tZXRyeXskZm9yKGdlb21ldHJ5KSQkZ2VvbWV0cnkkJHNlcCQsJGVuZGZvciR9CiRlbHNlJApcdXNlcGFja2FnZVskZm9yKGdlb21ldHJ5KSQkZ2VvbWV0cnkkJHNlcCQsJGVuZGZvciRde2dlb21ldHJ5fQokZW5kaWYkCiRlbHNlJAokaWYoYmVhbWVyKSQKJGVsc2UkClx1c2VwYWNrYWdlW21hcmdpbj0yLjVjbSxpbmNsdWRlaGVhZD10cnVlLGluY2x1ZGVmb290PXRydWUsY2VudGVyaW5nLCRmb3IoZ2VvbWV0cnkpJCRnZW9tZXRyeSQkc2VwJCwkZW5kZm9yJF17Z2VvbWV0cnl9CiRlbmRpZiQKJGVuZGlmJAokaWYodGl0bGVwYWdlLWxvZ28pJApcdXNlcGFja2FnZVtleHBvcnRde2FkanVzdGJveH0KXHVzZXBhY2thZ2V7Z3JhcGhpY3h9CiRlbmRpZiQKJGlmKGJlYW1lcikkClxuZXdpZlxpZmJpYmxpb2dyYXBoeQokZW5kaWYkCiRpZihsaXN0aW5ncykkClx1c2VwYWNrYWdle2xpc3RpbmdzfQpcbmV3Y29tbWFuZHtccGFzc3Rocm91Z2h9WzFdeyMxfQpcbHN0c2V0e2RlZmF1bHRkaWFsZWN0PVs1LjNdTHVhfQpcbHN0c2V0e2RlZmF1bHRkaWFsZWN0PVt4ODZtYXNtXUFzc2VtYmxlcn0KJGVuZGlmJAokaWYobGlzdGluZ3Mtbm8tcGFnZS1icmVhaykkClx1c2VwYWNrYWdle2V0b29sYm94fQpcQmVmb3JlQmVnaW5FbnZpcm9ubWVudHtsc3RsaXN0aW5nfXtccGFyXG5vaW5kZW50XGJlZ2lue21pbmlwYWdlfXtcbGluZXdpZHRofX0KXEFmdGVyRW5kRW52aXJvbm1lbnR7bHN0bGlzdGluZ317XGVuZHttaW5pcGFnZX1ccGFyXGFkZHZzcGFjZXtcdG9wc2tpcH19CiRlbmRpZiQKJGlmKGxocykkClxsc3RuZXdlbnZpcm9ubWVudHtjb2RlfXtcbHN0c2V0e2xhbmd1YWdlPUhhc2tlbGwsYmFzaWNzdHlsZT1cc21hbGxcdHRmYW1pbHl9fXt9CiRlbmRpZiQKJGlmKGhpZ2hsaWdodGluZy1tYWNyb3MpJAokaGlnaGxpZ2h0aW5nLW1hY3JvcyQKCiUgV29ya2Fyb3VuZC9idWdmaXggZnJvbSBqYW5uaWNrMC4KJSBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2pnbS9wYW5kb2MvaXNzdWVzLzQzMDIjaXNzdWVjb21tZW50LTM2MDY2OTAxMykKJSBvciBodHRwczovL2dpdGh1Yi5jb20vV2FuZG1hbGZhcmJlL3BhbmRvYy1sYXRleC10ZW1wbGF0ZS9pc3N1ZXMvMgolCiUgUmVkZWZpbmUgdGhlIHZlcmJhdGltIGVudmlyb25tZW50ICdIaWdobGlnaHRpbmcnIHRvIGJyZWFrIGxvbmcgbGluZXMgKHdpdGgKJSB0aGUgaGVscCBvZiBmdmV4dHJhKS4gUmVkZWZpbml0aW9uIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IGlzIHVubGlrZWx5IHRoYXQKJSBwYW5kb2MgaW5jbHVkZXMgZnZleHRyYSBpbiB0aGUgZGVmYXVsdCB0ZW1wbGF0ZS4KXHVzZXBhY2thZ2V7ZnZleHRyYX0KXERlZmluZVZlcmJhdGltRW52aXJvbm1lbnR7SGlnaGxpZ2h0aW5nfXtWZXJiYXRpbX17YnJlYWtsaW5lcyxmb250c2l6ZT0kaWYoY29kZS1ibG9jay1mb250LXNpemUpJCRjb2RlLWJsb2NrLWZvbnQtc2l6ZSQkZWxzZSRcc21hbGwkZW5kaWYkLGNvbW1hbmRjaGFycz1cXFx7XH19CgokZW5kaWYkCiRpZih0YWJsZXMpJApcdXNlcGFja2FnZXtsb25ndGFibGUsYm9va3RhYnMsYXJyYXl9CiRpZihtdWx0aXJvdykkClx1c2VwYWNrYWdle211bHRpcm93fQokZW5kaWYkClx1c2VwYWNrYWdle2NhbGN9ICUgZm9yIGNhbGN1bGF0aW5nIG1pbmlwYWdlIHdpZHRocwokaWYoYmVhbWVyKSQKXHVzZXBhY2thZ2V7Y2FwdGlvbn0KJSBNYWtlIGNhcHRpb24gcGFja2FnZSB3b3JrIHdpdGggbG9uZ3RhYmxlClxtYWtlYXRsZXR0ZXIKXGRlZlxmbnVtQHRhYmxle1x0YWJsZW5hbWV+XHRoZXRhYmxlfQpcbWFrZWF0b3RoZXIKJGVsc2UkCiUgQ29ycmVjdCBvcmRlciBvZiB0YWJsZXMgYWZ0ZXIgXHBhcmFncmFwaCBvciBcc3VicGFyYWdyYXBoClx1c2VwYWNrYWdle2V0b29sYm94fQpcbWFrZWF0bGV0dGVyClxwYXRjaGNtZFxsb25ndGFibGV7XHBhcn17XGlmQG5vc2tpcHNlY1xtYm94e31cZmlccGFyfXt9e30KXG1ha2VhdG90aGVyCiUgQWxsb3cgZm9vdG5vdGVzIGluIGxvbmd0YWJsZSBoZWFkL2Zvb3QKXElmRmlsZUV4aXN0c3tmb290bm90ZWh5cGVyLnN0eX17XHVzZXBhY2thZ2V7Zm9vdG5vdGVoeXBlcn19e1x1c2VwYWNrYWdle2Zvb3Rub3RlfX0KXG1ha2VzYXZlbm90ZWVudntsb25ndGFibGV9CiRlbmRpZiQKJGVuZGlmJAolIGFkZCBiYWNrbGlua3MgdG8gZm9vdG5vdGUgcmVmZXJlbmNlcywgY2YuIGh0dHBzOi8vdGV4LnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8zMDIyNjYvbWFrZS1mb290bm90ZS1jbGlja2FibGUtYm90aC13YXlzCiRpZihmb290bm90ZXMtZGlzYWJsZS1iYWNrbGlua3MpJAokZWxzZSQKXHVzZXBhY2thZ2V7Zm9vdG5vdGViYWNrcmVmfQokZW5kaWYkCiRpZihncmFwaGljcykkClx1c2VwYWNrYWdle2dyYXBoaWN4fQpcbWFrZWF0bGV0dGVyClxuZXdzYXZlYm94XHBhbmRvY0Bib3gKXG5ld2NvbW1hbmQqXHBhbmRvY2JvdW5kZWRbMV17JSBzY2FsZXMgaW1hZ2UgdG8gZml0IGluIHRleHQgaGVpZ2h0L3dpZHRoCiAgXHNib3hccGFuZG9jQGJveHsjMX0lCiAgXEdzY2FsZUBkaXZcQHRlbXBhe1x0ZXh0aGVpZ2h0fXtcZGltZXhwclxodFxwYW5kb2NAYm94K1xkcFxwYW5kb2NAYm94XHJlbGF4fSUKICBcR3NjYWxlQGRpdlxAdGVtcGJ7XGxpbmV3aWR0aH17XHdkXHBhbmRvY0Bib3h9JQogIFxpZmRpbVxAdGVtcGJccEA8XEB0ZW1wYVxwQFxsZXRcQHRlbXBhXEB0ZW1wYlxmaSUgc2VsZWN0IHRoZSBzbWFsbGVyIG9mIGJvdGgKICBcaWZkaW1cQHRlbXBhXHBAPFxwQFxzY2FsZWJveHtcQHRlbXBhfXtcdXNlYm94XHBhbmRvY0Bib3h9JQogIFxlbHNlXHVzZWJveHtccGFuZG9jQGJveH0lCiAgXGZpJQp9CiUgU2V0IGRlZmF1bHQgZmlndXJlIHBsYWNlbWVudCB0byBodGJwCiUgTWFrZSB1c2Ugb2YgZmxvYXQtcGFja2FnZSBhbmQgc2V0IGRlZmF1bHQgcGxhY2VtZW50IGZvciBmaWd1cmVzIHRvIEguCiUgVGhlIG9wdGlvbiBIIG1lYW5zICdQVVQgSVQgSEVSRScgKGFzICBvcHBvc2VkIHRvIHRoZSBzdGFuZGFyZCBoIG9wdGlvbiB3aGljaCBtZWFucyAnWW91IG1heSBwdXQgaXQgaGVyZSBpZiB5b3UgbGlrZScpLgpcdXNlcGFja2FnZXtmbG9hdH0KXGZsb2F0cGxhY2VtZW50e2ZpZ3VyZX17JGlmKGZsb2F0LXBsYWNlbWVudC1maWd1cmUpJCRmbG9hdC1wbGFjZW1lbnQtZmlndXJlJCRlbHNlJEgkZW5kaWYkfQpcbWFrZWF0b3RoZXIKJGVuZGlmJAokaWYoc3ZnKSQKXHVzZXBhY2thZ2V7c3ZnfQokZW5kaWYkCiRpZihzdHJpa2VvdXQpJAokLS0gYWxzbyB1c2VkIGZvciB1bmRlcmxpbmUKXGlmTHVhVGVYCiAgXHVzZXBhY2thZ2V7bHVhY29sb3J9CiAgXHVzZXBhY2thZ2Vbc291bF17bHVhLXVsfQpcZWxzZQpcdXNlcGFja2FnZXtzb3VsfQokaWYoQ0pLbWFpbmZvbnQpJAogIFxpZlhlVGVYCiAgICAlIHNvdWwncyBcc3QgZG9lc24ndCB3b3JrIGZvciBDSks6CiAgICBcdXNlcGFja2FnZXt4ZUNKS2ZudGVmfQogICAgXHJlbmV3Y29tbWFuZHtcc3R9WzFde1xzb3V0eyMxfX0KICBcZmkKJGVuZGlmJApcZmkKJGVuZGlmJApcc2V0bGVuZ3Roe1xlbWVyZ2VuY3lzdHJldGNofXszZW19ICUgcHJldmVudCBvdmVyZnVsbCBsaW5lcwpccHJvdmlkZWNvbW1hbmR7XHRpZ2h0bGlzdH17JQogIFxzZXRsZW5ndGh7XGl0ZW1zZXB9ezBwdH1cc2V0bGVuZ3Roe1xwYXJza2lwfXswcHR9fQokaWYobnVtYmVyc2VjdGlvbnMpJApcc2V0Y291bnRlcntzZWNudW1kZXB0aH17JGlmKHNlY251bWRlcHRoKSQkc2VjbnVtZGVwdGgkJGVsc2UkNSRlbmRpZiR9CiRlbHNlJApcc2V0Y291bnRlcntzZWNudW1kZXB0aH17LVxtYXhkaW1lbn0gJSByZW1vdmUgc2VjdGlvbiBudW1iZXJpbmcKJGVuZGlmJAokaWYoc3ViZmlndXJlKSQKXHVzZXBhY2thZ2V7c3ViY2FwdGlvbn0KJGVuZGlmJAokaWYoYmVhbWVyKSQKJGVsc2UkCiRpZihibG9jay1oZWFkaW5ncykkCiUgTWFrZSBccGFyYWdyYXBoIGFuZCBcc3VicGFyYWdyYXBoIGZyZWUtc3RhbmRpbmcKXGlmeFxwYXJhZ3JhcGhcdW5kZWZpbmVkXGVsc2UKICBcbGV0XG9sZHBhcmFncmFwaFxwYXJhZ3JhcGgKICBccmVuZXdjb21tYW5ke1xwYXJhZ3JhcGh9WzFde1xvbGRwYXJhZ3JhcGh7IzF9XG1ib3h7fX0KXGZpClxpZnhcc3VicGFyYWdyYXBoXHVuZGVmaW5lZFxlbHNlCiAgXGxldFxvbGRzdWJwYXJhZ3JhcGhcc3VicGFyYWdyYXBoCiAgXHJlbmV3Y29tbWFuZHtcc3VicGFyYWdyYXBofVsxXXtcb2xkc3VicGFyYWdyYXBoeyMxfVxtYm94e319ClxmaQokZW5kaWYkCiRlbmRpZiQKJGlmKHBhZ2VzdHlsZSkkClxwYWdlc3R5bGV7JHBhZ2VzdHlsZSR9CiRlbmRpZiQKJGlmKGNzbC1yZWZzKSQKJSBkZWZpbml0aW9ucyBmb3IgY2l0ZXByb2MgY2l0YXRpb25zClxOZXdEb2N1bWVudENvbW1hbmRcY2l0ZXByb2N0ZXh0e317fQpcTmV3RG9jdW1lbnRDb21tYW5kXGNpdGVwcm9je21tfXslCiAgXGJlZ2luZ3JvdXBcZGVmXGNpdGVwcm9jdGV4dHsjMn1cY2l0ZXsjMX1cZW5kZ3JvdXB9ClxtYWtlYXRsZXR0ZXIKICUgYWxsb3cgY2l0YXRpb25zIHRvIGJyZWFrIGFjcm9zcyBsaW5lcwogXGxldFxAY2l0ZUBvZm10XEBmaXJzdG9mb25lCiAlIGF2b2lkIGJyYWNrZXRzIGFyb3VuZCB0ZXh0IGZvciBcY2l0ZToKIFxkZWZcQGJpYmxhYmVsIzF7fQogXGRlZlxAY2l0ZSMxIzJ7eyMxXGlmQHRlbXBzd2EgLCAjMlxmaX19ClxtYWtlYXRvdGhlcgpcbmV3bGVuZ3Roe1xjc2xoYW5naW5kZW50fQpcc2V0bGVuZ3Roe1xjc2xoYW5naW5kZW50fXsxLjVlbX0KXG5ld2xlbmd0aHtcY3NsbGFiZWx3aWR0aH0KXHNldGxlbmd0aHtcY3NsbGFiZWx3aWR0aH17M2VtfQpcbmV3ZW52aXJvbm1lbnR7Q1NMUmVmZXJlbmNlc31bMl0gJSAjMSBoYW5naW5nLWluZGVudCwgIzIgZW50cnktc3BhY2luZwogIHtcYmVnaW57bGlzdH17fXslCiAgIFxzZXRsZW5ndGh7XGl0ZW1pbmRlbnR9ezBwdH0KICAgXHNldGxlbmd0aHtcbGVmdG1hcmdpbn17MHB0fQogICBcc2V0bGVuZ3Roe1xwYXJzZXB9ezBwdH0KICAgJSB0dXJuIG9uIGhhbmdpbmcgaW5kZW50IGlmIHBhcmFtIDEgaXMgMQogICBcaWZvZGQgIzEKICAgIFxzZXRsZW5ndGh7XGxlZnRtYXJnaW59e1xjc2xoYW5naW5kZW50fQogICAgXHNldGxlbmd0aHtcaXRlbWluZGVudH17LTFcY3NsaGFuZ2luZGVudH0KICAgXGZpCiAgICUgc2V0IGVudHJ5IHNwYWNpbmcKICAgXHNldGxlbmd0aHtcaXRlbXNlcH17IzJcYmFzZWxpbmVza2lwfX19CiAge1xlbmR7bGlzdH19Clx1c2VwYWNrYWdle2NhbGN9ClxuZXdjb21tYW5ke1xDU0xCbG9ja31bMV17XGhmaWxsXGJyZWFrXHBhcmJveFt0XXtcbGluZXdpZHRofXtcc3RydXRcaWdub3Jlc3BhY2VzIzFcc3RydXR9fQpcbmV3Y29tbWFuZHtcQ1NMTGVmdE1hcmdpbn1bMV17XHBhcmJveFt0XXtcY3NsbGFiZWx3aWR0aH17XHN0cnV0IzFcc3RydXR9fQpcbmV3Y29tbWFuZHtcQ1NMUmlnaHRJbmxpbmV9WzFde1xwYXJib3hbdF17XGxpbmV3aWR0aCAtIFxjc2xsYWJlbHdpZHRofXtcc3RydXQjMVxzdHJ1dH19ClxuZXdjb21tYW5ke1xDU0xJbmRlbnR9WzFde1xoc3BhY2V7XGNzbGhhbmdpbmRlbnR9IzF9CiRlbmRpZiQKJGlmKGxhbmcpJApcaWZMdWFUZVgKXHVzZXBhY2thZ2VbYmlkaT1iYXNpY117YmFiZWx9ClxlbHNlClx1c2VwYWNrYWdlW2JpZGk9ZGVmYXVsdF17YmFiZWx9ClxmaQokaWYoYmFiZWwtbGFuZykkClxiYWJlbHByb3ZpZGVbbWFpbixpbXBvcnRdeyRiYWJlbC1sYW5nJH0KJGlmKG1haW5mb250KSQKXGlmUERGVGVYClxlbHNlClxiYWJlbGZvbnR7cm19WyRmb3IobWFpbmZvbnRvcHRpb25zKSQkbWFpbmZvbnRvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXskbWFpbmZvbnQkfQpcZmkKJGVuZGlmJAokZW5kaWYkCiRmb3IoYmFiZWwtb3RoZXJsYW5ncykkClxiYWJlbHByb3ZpZGVbaW1wb3J0XXskYmFiZWwtb3RoZXJsYW5ncyR9CiRlbmRmb3IkCiRmb3IoYmFiZWxmb250cy9wYWlycykkClxiYWJlbGZvbnRbJGJhYmVsZm9udHMua2V5JF17cm19eyRiYWJlbGZvbnRzLnZhbHVlJH0KJGVuZGZvciQKJSBnZXQgcmlkIG9mIGxhbmd1YWdlLXNwZWNpZmljIHNob3J0aGFuZHMgKHNlZSAjNjgxNyk6ClxsZXRcTGFuZ3VhZ2VTaG9ydEhhbmRzXGxhbmd1YWdlc2hvcnRoYW5kcwpcZGVmXGxhbmd1YWdlc2hvcnRoYW5kcyMxe30KJGVuZGlmJAokZm9yKGhlYWRlci1pbmNsdWRlcykkCiRoZWFkZXItaW5jbHVkZXMkCiRlbmRmb3IkClxpZkx1YVRlWAogIFx1c2VwYWNrYWdle3NlbG5vbGlnfSAgJSBkaXNhYmxlIGlsbGVnYWwgbGlnYXR1cmVzClxmaQokaWYoZGlyKSQKXGlmUERGVGVYCiAgXFRlWFhlVHN0YXRlPTEKICBcbmV3Y29tbWFuZHtcUkx9WzFde1xiZWdpblIgIzFcZW5kUn0KICBcbmV3Y29tbWFuZHtcTFJ9WzFde1xiZWdpbkwgIzFcZW5kTH0KICBcbmV3ZW52aXJvbm1lbnR7UlRMfXtcYmVnaW5SfXtcZW5kUn0KICBcbmV3ZW52aXJvbm1lbnR7TFRSfXtcYmVnaW5MfXtcZW5kTH0KXGZpCiRlbmRpZiQKJGlmKG5hdGJpYikkClx1c2VwYWNrYWdlWyRuYXRiaWJvcHRpb25zJF17bmF0YmlifQpcYmlibGlvZ3JhcGh5c3R5bGV7JGlmKGJpYmxpby1zdHlsZSkkJGJpYmxpby1zdHlsZSQkZWxzZSRwbGFpbm5hdCRlbmRpZiR9CiRlbmRpZiQKJGlmKGJpYmxhdGV4KSQKXHVzZXBhY2thZ2VbJGlmKGJpYmxpby1zdHlsZSkkc3R5bGU9JGJpYmxpby1zdHlsZSQsJGVuZGlmJCRmb3IoYmlibGF0ZXhvcHRpb25zKSQkYmlibGF0ZXhvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXtiaWJsYXRleH0KJGZvcihiaWJsaW9ncmFwaHkpJApcYWRkYmlicmVzb3VyY2V7JGJpYmxpb2dyYXBoeSR9CiRlbmRmb3IkCiRlbmRpZiQKJGlmKG5vY2l0ZS1pZHMpJApcbm9jaXRleyRmb3Iobm9jaXRlLWlkcykkJGl0JCRzZXAkLCAkZW5kZm9yJH0KJGVuZGlmJAokaWYoY3NxdW90ZXMpJApcdXNlcGFja2FnZXtjc3F1b3Rlc30KJGVuZGlmJApcSWZGaWxlRXhpc3Rze2Jvb2ttYXJrLnN0eX17XHVzZXBhY2thZ2V7Ym9va21hcmt9fXtcdXNlcGFja2FnZXtoeXBlcnJlZn19ClxJZkZpbGVFeGlzdHN7eHVybC5zdHl9e1x1c2VwYWNrYWdle3h1cmx9fXt9ICUgYWRkIFVSTCBsaW5lIGJyZWFrcyBpZiBhdmFpbGFibGUKXHVybHN0eWxleyRpZih1cmxzdHlsZSkkJHVybHN0eWxlJCRlbHNlJHNhbWUkZW5kaWYkfQokaWYobGlua3MtYXMtbm90ZXMpJAolIE1ha2UgbGlua3MgZm9vdG5vdGVzIGluc3RlYWQgb2YgaG90bGlua3M6ClxEZWNsYXJlUm9idXN0Q29tbWFuZHtcaHJlZn1bMl17IzJcZm9vdG5vdGV7XHVybHsjMX19fQokZW5kaWYkCiRpZih2ZXJiYXRpbS1pbi1ub3RlKSQKXFZlcmJhdGltRm9vdG5vdGVzICUgYWxsb3cgdmVyYmF0aW0gdGV4dCBpbiBmb290bm90ZXMKJGVuZGlmJApcaHlwZXJzZXR1cHsKJGlmKHRpdGxlLW1ldGEpJAogIHBkZnRpdGxlPXskdGl0bGUtbWV0YSR9LAokZW5kaWYkCiRpZihhdXRob3ItbWV0YSkkCiAgcGRmYXV0aG9yPXskYXV0aG9yLW1ldGEkfSwKJGVuZGlmJAokaWYobGFuZykkCiAgcGRmbGFuZz17JGxhbmckfSwKJGVuZGlmJAokaWYoc3ViamVjdCkkCiAgcGRmc3ViamVjdD17JHN1YmplY3QkfSwKJGVuZGlmJAokaWYoa2V5d29yZHMpJAogIHBkZmtleXdvcmRzPXskZm9yKGtleXdvcmRzKSQka2V5d29yZHMkJHNlcCQsICRlbmRmb3IkfSwKJGVuZGlmJAokaWYoY29sb3JsaW5rcykkCiAgY29sb3JsaW5rcz10cnVlLAogIGxpbmtjb2xvcj17JGlmKGxpbmtjb2xvcikkJGxpbmtjb2xvciQkZWxzZSRkZWZhdWx0LWxpbmtjb2xvciRlbmRpZiR9LAogIGZpbGVjb2xvcj17JGlmKGZpbGVjb2xvcikkJGZpbGVjb2xvciQkZWxzZSRkZWZhdWx0LWZpbGVjb2xvciRlbmRpZiR9LAogIGNpdGVjb2xvcj17JGlmKGNpdGVjb2xvcikkJGNpdGVjb2xvciQkZWxzZSRkZWZhdWx0LWNpdGVjb2xvciRlbmRpZiR9LAogIHVybGNvbG9yPXskaWYodXJsY29sb3IpJCR1cmxjb2xvciQkZWxzZSRkZWZhdWx0LXVybGNvbG9yJGVuZGlmJH0sCiRlbHNlJAogIGhpZGVsaW5rcywKJGVuZGlmJAogIGJyZWFrbGlua3M9dHJ1ZSwKICBwZGZjcmVhdG9yPXtMYVRlWCB2aWEgcGFuZG9jIHdpdGggdGhlIEVpc3ZvZ2VsIHRlbXBsYXRlfX0KJGlmKHRpdGxlKSQKXHRpdGxleyRpZih0aXRsZSkkJHRpdGxlJCRlbHNlJFNldCB1cCBUaXRsZSBpbiBGcm9udG1hdHRlciAoc2VlIGFic3RyYWN0KSRlbmRpZiR9CiRlbmRpZiQKJGlmKHN1YnRpdGxlKSQKJGlmKGJlYW1lcikkCiRlbHNlJApcdXNlcGFja2FnZXtldG9vbGJveH0KXG1ha2VhdGxldHRlcgpccHJvdmlkZWNvbW1hbmR7XHN1YnRpdGxlfVsxXXslIGFkZCBzdWJ0aXRsZSB0byBcbWFrZXRpdGxlCiAgXGFwcHRvY21ke1xAdGl0bGV9e1xwYXIge1xsYXJnZSAjMSBccGFyfX17fXt9Cn0KXG1ha2VhdG90aGVyCiRlbmRpZiQKXHN1YnRpdGxleyRzdWJ0aXRsZSR9CiRlbmRpZiQKXGF1dGhvcnskZm9yKGF1dGhvcikkJGF1dGhvciQkc2VwJCBcYW5kICRlbmRmb3IkfQokaWYoZGF0ZSkkCiAgXGRhdGV7JGRhdGUkfQokZWxzZSQKICBcZGF0ZXtcdG9kYXl9CiRlbmRpZiQKCiRpZihiZWFtZXIpJAokaWYoaW5zdGl0dXRlKSQKXGluc3RpdHV0ZXskZm9yKGluc3RpdHV0ZSkkJGluc3RpdHV0ZSQkc2VwJCBcYW5kICRlbmRmb3IkfQokZW5kaWYkCiRpZih0aXRsZWdyYXBoaWMpJApcdGl0bGVncmFwaGlje1xpbmNsdWRlZ3JhcGhpY3N7JHRpdGxlZ3JhcGhpYyR9fQokZW5kaWYkCiRpZihsb2dvKSQKXGxvZ297XGluY2x1ZGVncmFwaGljc3skbG9nbyR9fQokZW5kaWYkCiRlbmRpZiQKCgoKJSUKJSUgYWRkZWQKJSUKCiRpZihwYWdlLWJhY2tncm91bmQpJApcdXNlcGFja2FnZVtwYWdlcz1hbGxde2JhY2tncm91bmR9CiRlbmRpZiQKCiUKJSBmb3IgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHRpdGxlIHBhZ2UKJQokaWYobm90aXRsZXBhZ2UpJAoKJGVsc2UkClx1c2VwYWNrYWdle3BhZ2Vjb2xvcn0KXHVzZXBhY2thZ2V7YWZ0ZXJwYWdlfQokaWYodGl0bGVwYWdlLWJhY2tncm91bmQpJApcdXNlcGFja2FnZXt0aWt6fQokZW5kaWYkCiRpZihnZW9tZXRyeSkkCiRlbHNlJApcdXNlcGFja2FnZVttYXJnaW49Mi41Y20saW5jbHVkZWhlYWQ9dHJ1ZSxpbmNsdWRlZm9vdD10cnVlLGNlbnRlcmluZ117Z2VvbWV0cnl9CiRlbmRpZiQKJGVuZGlmJAoKJQolIGJyZWFrIHVybHMKJQpcUGFzc09wdGlvbnNUb1BhY2thZ2V7aHlwaGVuc317dXJsfQoKJQolIFdoZW4gdXNpbmcgYmFiZWwgb3IgcG9seWdsb3NzaWEgd2l0aCBiaWJsYXRleCwgbG9hZGluZyBjc3F1b3RlcyBpcyByZWNvbW1lbmRlZAolIHRvIGVuc3VyZSB0aGF0IHF1b3RlZCB0ZXh0cyBhcmUgdHlwZXNldCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHlvdXIgbWFpbiBsYW5ndWFnZS4KJQpcdXNlcGFja2FnZXtjc3F1b3Rlc30KCiUKJSBjYXB0aW9ucwolClxkZWZpbmVjb2xvcntjYXB0aW9uLWNvbG9yfXtIVE1MfXs3Nzc3Nzd9CiRpZihiZWFtZXIpJAokZWxzZSQKXHVzZXBhY2thZ2VbZm9udD17c3RyZXRjaD0xLjJ9LCB0ZXh0Zm9udD17Y29sb3I9Y2FwdGlvbi1jb2xvcn0sIHBvc2l0aW9uPXRvcCwgc2tpcD00bW0sIGxhYmVsZm9udD1iZiwgc2luZ2xlbGluZWNoZWNrPWZhbHNlLCBqdXN0aWZpY2F0aW9uPSRpZihjYXB0aW9uLWp1c3RpZmljYXRpb24pJCRjYXB0aW9uLWp1c3RpZmljYXRpb24kJGVsc2UkanVzdGlmaWVkJGVuZGlmJF17Y2FwdGlvbn0KXHNldGNhcGluZGVudHswZW19CiRlbmRpZiQKCiUKJSBibG9ja3F1b3RlCiUKXGRlZmluZWNvbG9ye2Jsb2NrcXVvdGUtYm9yZGVyfXtSR0J9ezIyMSwyMjEsMjIxfQpcZGVmaW5lY29sb3J7YmxvY2txdW90ZS10ZXh0fXtSR0J9ezExOSwxMTksMTE5fQpcdXNlcGFja2FnZXttZGZyYW1lZH0KXG5ld21kZW52W3JpZ2h0bGluZT1mYWxzZSxib3R0b21saW5lPWZhbHNlLHRvcGxpbmU9ZmFsc2UsbGluZXdpZHRoPTNwdCxsaW5lY29sb3I9YmxvY2txdW90ZS1ib3JkZXIsc2tpcGFib3ZlPVxwYXJza2lwXXtjdXN0b21ibG9ja3F1b3RlfQpccmVuZXdlbnZpcm9ubWVudHtxdW90ZX17XGJlZ2lue2N1c3RvbWJsb2NrcXVvdGV9XGxpc3R7fXtccmlnaHRtYXJnaW49MGVtXGxlZnRtYXJnaW49MGVtfSUKXGl0ZW1ccmVsYXhcY29sb3J7YmxvY2txdW90ZS10ZXh0fVxpZ25vcmVzcGFjZXN9e1x1bnNraXBcdW5za2lwXGVuZGxpc3RcZW5ke2N1c3RvbWJsb2NrcXVvdGV9fQoKJQolIFNvdXJjZSBTYW5zIFBybyBhcyB0aGUgZGXCrWZhdWx0IGZvbnQgZmFtwq1pbHkKJSBTb3VyY2UgQ29kZSBQcm8gZm9yIG1vbm9zcGFjZSB0ZXh0CiUKJSAnZGVmYXVsdCcgb3B0aW9uIHNldHMgdGhlIGRlZmF1bHQKJSBmb250IGZhbWlseSB0byBTb3VyY2UgU2FucyBQcm8sIG5vdCBcc2ZkZWZhdWx0LgolClxpZm51bSAwXGlmeGV0ZXggMVxmaVxpZmx1YXRleCAxXGZpPTAgJSBpZiBwZGZ0ZXgKICAkaWYoZm9udGZhbWlseSkkCiAgJGVsc2UkCiAgXHVzZXBhY2thZ2VbZGVmYXVsdF17c291cmNlc2Fuc3Byb30KICBcdXNlcGFja2FnZXtzb3VyY2Vjb2RlcHJvfQogICRlbmRpZiQKXGVsc2UgJSBpZiBub3QgcGRmdGV4CiAgJGlmKG1haW5mb250KSQKICAkZWxzZSQKICBcdXNlcGFja2FnZVtkZWZhdWx0XXtzb3VyY2VzYW5zcHJvfQogIFx1c2VwYWNrYWdle3NvdXJjZWNvZGVwcm99CgogICUgWGVMYVRlWCBzcGVjaWZpYyBhZGp1c3RtZW50cyBmb3Igc3RyYWlnaHQgcXVvdGVzOiBodHRwczovL3RleC5zdGFja2V4Y2hhbmdlLmNvbS9hLzM1NDg4NwogICUgVGhpcyBpc3N1ZSBpcyBhbHJlYWR5IGZpeGVkIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3NpbGtlaC9sYXRleC1zb3VyY2Vjb2RlcHJvL3B1bGwvNSkgYnV0IHRoZQogICUgZml4IGlzIHN0aWxsIHVucmVsZWFzZWQuCiAgJSBUT0RPOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIHdoZW4gdGhlIG5ldyB2ZXJzaW9uIG9mIHNvdXJjZWNvZGVwcm8gaXMgcmVsZWFzZWQgb24gQ1RBTi4KICBcaWZ4ZXRleAogICAgXG1ha2VhdGxldHRlcgogICAgXGRlZmF1bHRmb250ZmVhdHVyZXNbXHR0ZmFtaWx5XQogICAgICB7IE51bWJlcnMgICA9IFxzb3VyY2Vjb2RlcHJvQGZpZ3VyZXN0eWxlLAogICAgICAgIFNjYWxlICAgICA9IFxTb3VyY2VDb2RlUHJvQHNjYWxlLAogICAgICAgIEV4dGVuc2lvbiA9IC5vdGYgfQogICAgXHNldG1vbm9mb250CiAgICAgIFsgVXByaWdodEZvbnQgICAgPSAqLVxzb3VyY2Vjb2RlcHJvQHJlZ3N0eWxlLAogICAgICAgIEl0YWxpY0ZvbnQgICAgID0gKi1cc291cmNlY29kZXByb0ByZWdzdHlsZSBJdCwKICAgICAgICBCb2xkRm9udCAgICAgICA9ICotXHNvdXJjZWNvZGVwcm9AYm9sZHN0eWxlLAogICAgICAgIEJvbGRJdGFsaWNGb250ID0gKi1cc291cmNlY29kZXByb0Bib2xkc3R5bGUgSXQgXQogICAgICB7U291cmNlQ29kZVByb30KICAgIFxtYWtlYXRvdGhlcgogIFxmaQogICRlbmRpZiQKXGZpCgolCiUgaGVhZGluZyBjb2xvcgolClxkZWZpbmVjb2xvcntoZWFkaW5nLWNvbG9yfXtSR0J9ezQwLDQwLDQwfQokaWYoYmVhbWVyKSQKJGVsc2UkClxhZGR0b2tvbWFmb250e3NlY3Rpb259e1xjb2xvcntoZWFkaW5nLWNvbG9yfX0KJGVuZGlmJAolIFdoZW4gdXNpbmcgdGhlIGNsYXNzZXMgcmVwb3J0LCBzY3JyZXBydCwgYm9vaywKJSBzY3Jib29rIG9yIG1lbW9pciwgdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZS4KJVxhZGR0b2tvbWFmb250e2NoYXB0ZXJ9e1xjb2xvcntoZWFkaW5nLWNvbG9yfX0KCiUKJSB2YXJpYWJsZXMgZm9yIHRpdGxlLCBhdXRob3IgYW5kIGRhdGUKJQokaWYoYmVhbWVyKSQKJGVsc2UkClx1c2VwYWNrYWdle3RpdGxpbmd9Clx0aXRsZXskdGl0bGUkfQpcYXV0aG9yeyRmb3IoYXV0aG9yKSQkYXV0aG9yJCRzZXAkLCAkZW5kZm9yJH0KXGRhdGV7JGRhdGUkfQokZW5kaWYkCgolCiUgdGFibGVzCiUKJGlmKHRhYmxlcykkCgpcZGVmaW5lY29sb3J7dGFibGUtcm93LWNvbG9yfXtIVE1MfXtGNUY1RjV9ClxkZWZpbmVjb2xvcnt0YWJsZS1ydWxlLWNvbG9yfXtIVE1MfXs5OTk5OTl9CgolXGFycmF5cnVsZWNvbG9ye2JsYWNrITQwfQpcYXJyYXlydWxlY29sb3J7dGFibGUtcnVsZS1jb2xvcn0gICAgICUgY29sb3Igb2YgXHRvcHJ1bGUsIFxtaWRydWxlLCBcYm90dG9tcnVsZQpcc2V0bGVuZ3RoXGhlYXZ5cnVsZXdpZHRoezAuM2V4fSAgICAgICUgdGhpY2tuZXNzIG9mIFx0b3BydWxlLCBcYm90dG9tcnVsZQpccmVuZXdjb21tYW5ke1xhcnJheXN0cmV0Y2h9ezEuM30gICAgICUgc3BhY2luZyAocGFkZGluZykKCiRpZih0YWJsZS11c2Utcm93LWNvbG9ycykkCiUgVE9ETzogVGhpcyBkb2Vzbid0IHdvcmsgYW55bW9yZS4gSSBkb24ndCBrbm93IHdoeS4KJSBSZXNldCByb3dudW0gY291bnRlciBzbyB0aGF0IGVhY2ggdGFibGUKJSBzdGFydHMgd2l0aCB0aGUgc2FtZSByb3cgY29sb3JzLgolIGh0dHBzOi8vdGV4LnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8xNzA2MzcvcmVzdGFydGluZy1yb3djb2xvcnMKJQolIFVuZm9ydHVuYXRlbHkgdGhlIGNvbG9yZWQgY2VsbHMgZXh0ZW5kIGJleW9uZCB0aGUgZWRnZSBvZiB0aGUKJSB0YWJsZSBiZWNhdXNlIHBhbmRvYyB1c2VzIEAtZXhwcmVzc2lvbnMgKEB7fSkgbGlrZSBzbzoKJQolIFxiZWdpbntsb25ndGFibGV9W117QHt9bGxAe319CiUgXGVuZHtsb25ndGFibGV9CiUKJSBodHRwczovL2VuLndpa2lib29rcy5vcmcvd2lraS9MYVRlWC9UYWJsZXMjLjQwLWV4cHJlc3Npb25zClx1c2VwYWNrYWdle2V0b29sYm94fQpcQXRCZWdpbkVudmlyb25tZW50e2xvbmd0YWJsZX17XHJvd2NvbG9yc3syfXt9e3RhYmxlLXJvdy1jb2xvciExMDB9fQpccHJldG97XHRvcHJ1bGV9e1xoaWRlcm93Y29sb3JzfXt9e30KXGFwcHRve1xlbmRoZWFkfXtcc2hvd3Jvd2NvbG9yc317fXt9ClxhcHB0b3tcZW5kZmlyc3RoZWFkfXtcc2hvd3Jvd2NvbG9yc317fXt9CiRlbmRpZiQKJGVuZGlmJAoKJQolIHJlbW92ZSBwYXJhZ3JhcGggaW5kZW50YXRpb24KJQpcc2V0bGVuZ3Roe1xwYXJpbmRlbnR9ezBwdH0KXHNldGxlbmd0aHtccGFyc2tpcH17NnB0IHBsdXMgMnB0IG1pbnVzIDFwdH0KXHNldGxlbmd0aHtcZW1lcmdlbmN5c3RyZXRjaH17M2VtfSAgJSBwcmV2ZW50IG92ZXJmdWxsIGxpbmVzCgolCiUKJSBMaXN0aW5ncwolCiUKCiRpZihsaXN0aW5ncykkCgolCiUgZ2VuZXJhbCBsaXN0aW5nIGNvbG9ycwolClxkZWZpbmVjb2xvcntsaXN0aW5nLWJhY2tncm91bmR9e0hUTUx9e0Y3RjdGN30KXGRlZmluZWNvbG9ye2xpc3RpbmctcnVsZX17SFRNTH17QjNCMkIzfQpcZGVmaW5lY29sb3J7bGlzdGluZy1udW1iZXJzfXtIVE1MfXtCM0IyQjN9ClxkZWZpbmVjb2xvcntsaXN0aW5nLXRleHQtY29sb3J9e0hUTUx9ezAwMDAwMH0KXGRlZmluZWNvbG9ye2xpc3Rpbmcta2V5d29yZH17SFRNTH17NDM1NDg5fQpcZGVmaW5lY29sb3J7bGlzdGluZy1rZXl3b3JkLTJ9e0hUTUx9ezEyODRDQX0gJSBhZGRpdGlvbmFsIGtleXdvcmRzClxkZWZpbmVjb2xvcntsaXN0aW5nLWtleXdvcmQtM317SFRNTH17OTEzN0NCfSAlIGFkZGl0aW9uYWwga2V5d29yZHMKXGRlZmluZWNvbG9ye2xpc3RpbmctaWRlbnRpZmllcn17SFRNTH17NDM1NDg5fQpcZGVmaW5lY29sb3J7bGlzdGluZy1zdHJpbmd9e0hUTUx9ezAwOTk5QX0KXGRlZmluZWNvbG9ye2xpc3RpbmctY29tbWVudH17SFRNTH17OEU4RThFfQoKXGxzdGRlZmluZXN0eWxle2Vpc3ZvZ2VsX2xpc3Rpbmdfc3R5bGV9ewogIGxhbmd1YWdlICAgICAgICAgPSBqYXZhLAokaWYobGlzdGluZ3MtZGlzYWJsZS1saW5lLW51bWJlcnMpJAogIHhsZWZ0bWFyZ2luICAgICAgPSAwLjZlbSwKICBmcmFtZXhsZWZ0bWFyZ2luID0gMC40ZW0sCiRlbHNlJAogIG51bWJlcnMgICAgICAgICAgPSBsZWZ0LAogIHhsZWZ0bWFyZ2luICAgICAgPSAyLjdlbSwKICBmcmFtZXhsZWZ0bWFyZ2luID0gMi41ZW0sCiRlbmRpZiQKICBiYWNrZ3JvdW5kY29sb3IgID0gXGNvbG9ye2xpc3RpbmctYmFja2dyb3VuZH0sCiAgYmFzaWNzdHlsZSAgICAgICA9IFxjb2xvcntsaXN0aW5nLXRleHQtY29sb3J9XGxpbmVzcHJlYWR7MS4wfSUKICAgICAgICAgICAgICAgICAgICAgIFxsc3RAaWZkaXNwbGF5c3R5bGUlCiAgICAgICAgICAgICAgICAgICAgICAkaWYoY29kZS1ibG9jay1mb250LXNpemUpJCRjb2RlLWJsb2NrLWZvbnQtc2l6ZSQkZWxzZSRcc21hbGwkZW5kaWYkJQogICAgICAgICAgICAgICAgICAgICAgXGZpXHR0ZmFtaWx5e30sCiAgYnJlYWtsaW5lcyAgICAgICA9IHRydWUsCiAgZnJhbWUgICAgICAgICAgICA9IHNpbmdsZSwKICBmcmFtZXNlcCAgICAgICAgID0gMC4xOWVtLAogIHJ1bGVjb2xvciAgICAgICAgPSBcY29sb3J7bGlzdGluZy1ydWxlfSwKICBmcmFtZXJvdW5kICAgICAgID0gZmZmZiwKICB0YWJzaXplICAgICAgICAgID0gNCwKICBudW1iZXJzdHlsZSAgICAgID0gXGNvbG9ye2xpc3RpbmctbnVtYmVyc30sCiAgYWJvdmVza2lwICAgICAgICA9IDEuMGVtLAogIGJlbG93c2tpcCAgICAgICAgPSAwLjFlbSwKICBhYm92ZWNhcHRpb25za2lwID0gMGVtLAogIGJlbG93Y2FwdGlvbnNraXAgPSAxLjBlbSwKICBrZXl3b3Jkc3R5bGUgICAgID0ge1xjb2xvcntsaXN0aW5nLWtleXdvcmR9XGJmc2VyaWVzfSwKICBrZXl3b3Jkc3R5bGUgICAgID0ge1syXVxjb2xvcntsaXN0aW5nLWtleXdvcmQtMn1cYmZzZXJpZXN9LAogIGtleXdvcmRzdHlsZSAgICAgPSB7WzNdXGNvbG9ye2xpc3Rpbmcta2V5d29yZC0zfVxiZnNlcmllc1xpdHNoYXBlfSwKICBzZW5zaXRpdmUgICAgICAgID0gdHJ1ZSwKICBpZGVudGlmaWVyc3R5bGUgID0gXGNvbG9ye2xpc3RpbmctaWRlbnRpZmllcn0sCiAgY29tbWVudHN0eWxlICAgICA9IFxjb2xvcntsaXN0aW5nLWNvbW1lbnR9LAogIHN0cmluZ3N0eWxlICAgICAgPSBcY29sb3J7bGlzdGluZy1zdHJpbmd9LAogIHNob3dzdHJpbmdzcGFjZXMgPSBmYWxzZSwKICBlc2NhcGVpbnNpZGUgICAgID0gey8qQH17QCovfSwgJSBBbGxvdyBMYVRlWCBpbnNpZGUgdGhlc2Ugc3BlY2lhbCBjb21tZW50cwogIGxpdGVyYXRlICAgICAgICAgPQogIHvDoX17e1wnYX19MSB7w6l9e3tcJ2V9fTEge8OtfXt7XCdpfX0xIHvDs317e1wnb319MSB7w7p9e3tcJ3V9fTEKICB7w4F9e3tcJ0F9fTEge8OJfXt7XCdFfX0xIHvDjX17e1wnSX19MSB7w5N9e3tcJ099fTEge8OafXt7XCdVfX0xCiAge8OgfXt7XGBhfX0xIHvDqH17e1xgZX19MSB7w6x9e3tcYGl9fTEge8OyfXt7XGBvfX0xIHvDuX17e1xgdX19MQogIHvDgH17e1xgQX19MSB7w4h9e3tcYEV9fTEge8OMfXt7XGBJfX0xIHvDkn17e1xgT319MSB7w5l9e3tcYFV9fTEKICB7w6R9e3tcImF9fTEge8OrfXt7XCJlfX0xIHvDr317e1wiaX19MSB7w7Z9e3tcIm99fTEge8O8fXt7XCJ1fX0xCiAge8OEfXt7XCJBfX0xIHvDi317e1wiRX19MSB7w499e3tcIkl9fTEge8OWfXt7XCJPfX0xIHvDnH17e1wiVX19MQogIHvDon17e1xeYX19MSB7w6p9e3tcXmV9fTEge8OufXt7XF5pfX0xIHvDtH17e1xeb319MSB7w7t9e3tcXnV9fTEKICB7w4J9e3tcXkF9fTEge8OKfXt7XF5FfX0xIHvDjn17e1xeSX19MSB7w5R9e3tcXk99fTEge8ObfXt7XF5VfX0xCiAge8WTfXt7XG9lfX0xIHvFkn17e1xPRX19MSB7w6Z9e3tcYWV9fTEge8OGfXt7XEFFfX0xIHvDn317e1xzc319MQogIHvDp317e1xjIGN9fTEge8OHfXt7XGMgQ319MSB7w7h9e3tcb319MSB7w6V9e3tcciBhfX0xIHvDhX17e1xyIEF9fTEKICB74oKsfXt7XEVVUn19MSB7wqN9e3tccG91bmRzfX0xIHvCq317e1xndWlsbGVtb3RsZWZ0fX0xCiAge8K7fXt7XGd1aWxsZW1vdHJpZ2h0fX0xIHvDsX17e1x+bn19MSB7w5F9e3tcfk59fTEge8K/fXt7P2B9fTEKICB74oCmfXt7XGxkb3RzfX0xIHviiaV9e3s+PX19MSB74omkfXt7PD19fTEge+KAnn17e1xnbHFxfX0xIHvigJx9e3tcZ3JxcX19MQogIHvigJ19e3snJ319MQp9Clxsc3RzZXR7c3R5bGU9ZWlzdm9nZWxfbGlzdGluZ19zdHlsZX0KCiUKJSBKYXZhIChKYXZhIFNFIDEyLCAyMDE5LTA2LTIyKQolClxsc3RkZWZpbmVsYW5ndWFnZXtKYXZhfXsKICBtb3Jla2V5d29yZHM9ewogICAgJSBub3JtYWwga2V5d29yZHMgKHdpdGhvdXQgZGF0YSB0eXBlcykKICAgIGFic3RyYWN0LGFzc2VydCxicmVhayxjYXNlLGNhdGNoLGNsYXNzLGNvbnRpbnVlLGRlZmF1bHQsCiAgICBkbyxlbHNlLGVudW0sZXhwb3J0cyxleHRlbmRzLGZpbmFsLGZpbmFsbHksZm9yLGlmLGltcGxlbWVudHMsCiAgICBpbXBvcnQsaW5zdGFuY2VvZixpbnRlcmZhY2UsbW9kdWxlLG5hdGl2ZSxuZXcscGFja2FnZSxwcml2YXRlLAogICAgcHJvdGVjdGVkLHB1YmxpYyxyZXF1aXJlcyxyZXR1cm4sc3RhdGljLHN0cmljdGZwLHN1cGVyLHN3aXRjaCwKICAgIHN5bmNocm9uaXplZCx0aGlzLHRocm93LHRocm93cyx0cmFuc2llbnQsdHJ5LHZvbGF0aWxlLHdoaWxlLAogICAgJSB2YXIgaXMgYW4gaWRlbnRpZmllcgogICAgdmFyCiAgfSwKICBtb3Jla2V5d29yZHM9e1syXSAlIGRhdGEgdHlwZXMKICAgICUgcHJpbWl0aXZlIGRhdGEgdHlwZXMKICAgIGJvb2xlYW4sYnl0ZSxjaGFyLGRvdWJsZSxmbG9hdCxpbnQsbG9uZyxzaG9ydCwKICAgICUgU3RyaW5nCiAgICBTdHJpbmcsCiAgICAlIHByaW1pdGl2ZSB3cmFwcGVyIHR5cGVzCiAgICBCb29sZWFuLEJ5dGUsQ2hhcmFjdGVyLERvdWJsZSxGbG9hdCxJbnRlZ2VyLExvbmcsU2hvcnQKICAgICUgbnVtYmVyIHR5cGVzCiAgICBOdW1iZXIsQXRvbWljSW50ZWdlcixBdG9taWNMb25nLEJpZ0RlY2ltYWwsQmlnSW50ZWdlcixEb3VibGVBY2N1bXVsYXRvcixEb3VibGVBZGRlcixMb25nQWNjdW11bGF0b3IsTG9uZ0FkZGVyLFNob3J0LAogICAgJSBvdGhlcgogICAgT2JqZWN0LFZvaWQsdm9pZAogIH0sCiAgbW9yZWtleXdvcmRzPXtbM10gJSBsaXRlcmFscwogICAgJSByZXNlcnZlZCB3b3JkcyBmb3IgbGl0ZXJhbCB2YWx1ZXMKICAgIG51bGwsdHJ1ZSxmYWxzZSwKICB9LAogIHNlbnNpdGl2ZSwKICBtb3JlY29tbWVudCAgPSBbbF0vLywKICBtb3JlY29tbWVudCAgPSBbc117Lyp9eyovfSwKICBtb3JlY29tbWVudCAgPSBbc117LyoqfXsqL30sCiAgbW9yZXN0cmluZyAgID0gW2JdIiwKICBtb3Jlc3RyaW5nICAgPSBbYl0nLAp9CgpcbHN0ZGVmaW5lbGFuZ3VhZ2V7WE1MfXsKICBtb3Jlc3RyaW5nICAgICAgPSBbYl0iLAogIG1vcmVkZWxpbSAgICAgICA9IFtzXVtcYmZzZXJpZXNcY29sb3J7bGlzdGluZy1rZXl3b3JkfV17PH17XCB9LAogIG1vcmVkZWxpbSAgICAgICA9IFtzXVtcYmZzZXJpZXNcY29sb3J7bGlzdGluZy1rZXl3b3JkfV17PC99ez59LAogIG1vcmVkZWxpbSAgICAgICA9IFtsXVtcYmZzZXJpZXNcY29sb3J7bGlzdGluZy1rZXl3b3JkfV17Lz59LAogIG1vcmVkZWxpbSAgICAgICA9IFtsXVtcYmZzZXJpZXNcY29sb3J7bGlzdGluZy1rZXl3b3JkfV17Pn0sCiAgbW9yZWNvbW1lbnQgICAgID0gW3Ndezw/fXs/Pn0sCiAgbW9yZWNvbW1lbnQgICAgID0gW3NdezwhLS19ey0tPn0sCiAgY29tbWVudHN0eWxlICAgID0gXGNvbG9ye2xpc3RpbmctY29tbWVudH0sCiAgc3RyaW5nc3R5bGUgICAgID0gXGNvbG9ye2xpc3Rpbmctc3RyaW5nfSwKICBpZGVudGlmaWVyc3R5bGUgPSBcY29sb3J7bGlzdGluZy1pZGVudGlmaWVyfQp9CiRlbmRpZiQKCiUKJSBoZWFkZXIgYW5kIGZvb3RlcgolCiRpZihiZWFtZXIpJAokZWxzZSQKJGlmKGRpc2FibGUtaGVhZGVyLWFuZC1mb290ZXIpJAokZWxzZSQKXHVzZXBhY2thZ2VbaGVhZHNlcGxpbmUsZm9vdHNlcGxpbmVde3NjcmxheWVyLXNjcnBhZ2V9CgpcbmV3cGFpcm9mcGFnZXN0eWxlc3tlaXN2b2dlbC1oZWFkZXItZm9vdGVyfXsKICBcY2xlYXJwYWlyb2ZwYWdlc3R5bGVzCiAgXGloZWFkKnskaWYoaGVhZGVyLWxlZnQpJCRoZWFkZXItbGVmdCQkZWxzZSQkdGl0bGUkJGVuZGlmJH0KICBcY2hlYWQqeyRpZihoZWFkZXItY2VudGVyKSQkaGVhZGVyLWNlbnRlciQkZWxzZSQkZW5kaWYkfQogIFxvaGVhZCp7JGlmKGhlYWRlci1yaWdodCkkJGhlYWRlci1yaWdodCQkZWxzZSQkZGF0ZSQkZW5kaWYkfQogIFxpZm9vdCp7JGlmKGZvb3Rlci1sZWZ0KSQkZm9vdGVyLWxlZnQkJGVsc2UkJGZvcihhdXRob3IpJCRhdXRob3IkJHNlcCQsICRlbmRmb3IkJGVuZGlmJH0KICBcY2Zvb3QqeyRpZihmb290ZXItY2VudGVyKSQkZm9vdGVyLWNlbnRlciQkZWxzZSQkZW5kaWYkfQogIFxvZm9vdCp7JGlmKGZvb3Rlci1yaWdodCkkJGZvb3Rlci1yaWdodCQkZWxzZSRcdGhlcGFnZSRlbmRpZiR9CiAgXGFkZHRva29tYWZvbnR7cGFnZWhlYWRmb290fXtcdXBzaGFwZX0KfQpccGFnZXN0eWxle2Vpc3ZvZ2VsLWhlYWRlci1mb290ZXJ9CgokaWYoYm9vaykkClxkZWZ0cmlwc3R5bGV7Q2hhcHRlclN0eWxlfXt9e317fXt9e1xwYWdlbWFya317fQpccmVuZXdjb21tYW5kKntcY2hhcHRlcnBhZ2VzdHlsZX17Q2hhcHRlclN0eWxlfQokZW5kaWYkCgokaWYocGFnZS1iYWNrZ3JvdW5kKSQKXGJhY2tncm91bmRzZXR1cHsKc2NhbGU9MSwKY29sb3I9YmxhY2ssCm9wYWNpdHk9JGlmKHBhZ2UtYmFja2dyb3VuZC1vcGFjaXR5KSQkcGFnZS1iYWNrZ3JvdW5kLW9wYWNpdHkkJGVsc2UkMC4yJGVuZGlmJCwKYW5nbGU9MCwKY29udGVudHM9eyUKICBcaW5jbHVkZWdyYXBoaWNzW3dpZHRoPVxwYXBlcndpZHRoLGhlaWdodD1ccGFwZXJoZWlnaHRdeyRwYWdlLWJhY2tncm91bmQkfQogIH0lCn0KJGVuZGlmJAokZW5kaWYkCiRlbmRpZiQKCiUlCiUlIGVuZCBhZGRlZAolJQpcdXNlcGFja2FnZXtwZ2ZwYWdlc30KXHVzZXBhY2thZ2VbZXhwb3J0XXthZGp1c3Rib3h9Clx1c2VwYWNrYWdle2dyYXBoaWN4fQpcdXNlcGFja2FnZXtyYWdnZWQyZX0KCgpcYmVnaW57ZG9jdW1lbnR9CgolJQolJSBiZWdpbiB0aXRsZXBhZ2UKJSUKJGlmKGJlYW1lcikkCiRlbHNlJAokaWYobm90aXRsZXBhZ2UpJAokZWxzZSQKXGJlZ2lue3RpdGxlcGFnZX0KJGlmKHRpdGxlcGFnZS1iYWNrZ3JvdW5kKSQKXG5ld2dlb21ldHJ5e3RvcD0yY20sIHJpZ2h0PTRjbSwgYm90dG9tPTNjbSwgbGVmdD00Y219CiRlbHNlJAokZW5kaWYkCiRpZih0aXRsZXBhZ2UtY29sb3IpJApcZGVmaW5lY29sb3J7dGl0bGVwYWdlLWNvbG9yfXtIVE1MfXskdGl0bGVwYWdlLWNvbG9yJH0KXG5ld3BhZ2Vjb2xvcnt0aXRsZXBhZ2UtY29sb3J9XGFmdGVycGFnZXtccmVzdG9yZXBhZ2Vjb2xvcn0KJGVuZGlmJAokaWYodGl0bGVwYWdlLWJhY2tncm91bmQpJApcdGlreltyZW1lbWJlciBwaWN0dXJlLG92ZXJsYXldIFxub2RlW2lubmVyIHNlcD0wcHRdIGF0IChjdXJyZW50IHBhZ2UuY2VudGVyKXtcaW5jbHVkZWdyYXBoaWNzW3dpZHRoPVxwYXBlcndpZHRoLGhlaWdodD1ccGFwZXJoZWlnaHRdeyR0aXRsZXBhZ2UtYmFja2dyb3VuZCR9fTsKJGVuZGlmJApcbmV3Y29tbWFuZHtcY29sb3JSdWxlfVszXVtibGFja117XHRleHRjb2xvcltIVE1MXXsjMX17XHJ1bGV7IzJ9eyMzfX19ClxiZWdpbntmbHVzaGxlZnR9Clxub2luZGVudApcXFstMWVtXQpcY29sb3JbSFRNTF17JGlmKHRpdGxlcGFnZS10ZXh0LWNvbG9yKSQkdGl0bGVwYWdlLXRleHQtY29sb3IkJGVsc2UkMDAwMDAwJGVuZGlmJH0KXG1ha2Vib3hbMHB0XVtsXXtcY29sb3JSdWxlWyRpZih0aXRsZXBhZ2UtcnVsZS1jb2xvcikkJHRpdGxlcGFnZS1ydWxlLWNvbG9yJCRlbHNlJEZGRkZGRiRlbmRpZiRdezEuM1x0ZXh0d2lkdGh9eyRpZih0aXRsZXBhZ2UtcnVsZS1oZWlnaHQpJCR0aXRsZXBhZ2UtcnVsZS1oZWlnaHQkJGVsc2UkMCRlbmRpZiRwdH19ClxwYXIKXG5vaW5kZW50CgokaWYodGl0bGVwYWdlLWJhY2tncm91bmQpJAolIFRoZSB0aXRsZXBhZ2Ugd2l0aCBhIGJhY2tncm91bmQgaW1hZ2UgaGFzIG90aGVyIHRleHQgc3BhY2luZyBhbmQgdGV4dCBzaXplCnsKICBcc2V0c3RyZXRjaHsyfQogIFx2ZmlsbAogIFx2c2tpcCAtOGVtCiAgXG5vaW5kZW50IHtcaHVnZSBcdGV4dGJme1x0ZXh0c2Z7CiAgJGlmKHRpdGxlKSQKICAgICR0aXRsZSQKICAkZWxzZSQKICAgIFNldCB1cCBUaXRsZSBpbiBGcm9udG1hdHRlciAoc2VlIEFic3RyYWN0KQogICRlbmRpZiQKfX19CiAgJGlmKHN1YnRpdGxlKSQKICBcdnNraXAgMWVtCiAge1xMYXJnZSBcdGV4dHNmeyRzdWJ0aXRsZSR9fQogICRlbmRpZiQKICBcdnNraXAgMmVtCiAgXG5vaW5kZW50IHtcTGFyZ2UgXHRleHRpdHskZm9yKGF1dGhvcikkJGF1dGhvciQkc2VwJCwgJGVuZGZvciR9IFx2c2tpcCAwLjZlbSBcdGV4dHNmeyRkYXRlJH19CiAgXHZmaWxsCn0KJGVsc2UkCnsKICBcYmVnaW57Y2VudGVyfQogIFxzZXRzdHJldGNoezEuNH0KICBcdmZpbGwKICBcbm9pbmRlbnQge1xodWdlIFx0ZXh0YmZ7XHRleHRzZnsKICAkaWYodGl0bGUpJAogICAgJHRpdGxlJAogICRlbHNlJAogICAgU2V0IHVwIFRpdGxlIGluIEZyb250bWF0dGVyIChzZWUgQWJzdHJhY3QpCiAgJGVuZGlmJAp9fX0KICAkaWYoc3VidGl0bGUpJAogIFx2c2tpcCAxZW0KICB7XExhcmdlIFx0ZXh0c2Z7JHN1YnRpdGxlJH19CiAgJGVuZGlmJAogIFx2c2tpcCAyZW0KICBcbm9pbmRlbnQge1xMYXJnZSBcdGV4dGl0eyRmb3IoYXV0aG9yKSQkYXV0aG9yJCRzZXAkLCAkZW5kZm9yJH19CiAgXHZmaWxsCiAgXGVuZHtjZW50ZXJ9Cn0KJGVuZGlmJAoKJGlmKHRpdGxlcGFnZS1sb2dvKSQKXG5vaW5kZW50ClxiZWdpbntjZW50ZXJ9ClxpbmNsdWRlZ3JhcGhpY3Nbd2lkdGg9JGlmKGxvZ28td2lkdGgpJCRsb2dvLXdpZHRoJCRlbHNlJDM1bW0kZW5kaWYkXXskdGl0bGVwYWdlLWxvZ28kfQpcZW5ke2NlbnRlcn0KJGVuZGlmJAokaWYodGV4dDEpJApcYmVnaW57Y2VudGVyfQp7XGxhcmdlIFx0ZXh0c2Z7JHRleHQxJH19ClxlbmR7Y2VudGVyfQokZW5kaWYkCiRpZih0ZXh0MikkClxiZWdpbntjZW50ZXJ9CntcbGFyZ2UgXHRleHRzZnskdGV4dDIkfX0KXGVuZHtjZW50ZXJ9CiRlbmRpZiQKJGlmKHRleHQzKSQKXGJlZ2lue2NlbnRlcn0Ke1xsYXJnZSBcdGV4dHNmeyR0ZXh0MyR9fQpcZW5ke2NlbnRlcn0KJGVuZGlmJAokaWYodGV4dDQpJApcYmVnaW57Y2VudGVyfQp7XGxhcmdlIFx0ZXh0c2Z7JHRleHQ0JH19ClxlbmR7Y2VudGVyfQokZW5kaWYkCiRpZih0aXRsZXBhZ2UtYmFja2dyb3VuZCkkCiRlbHNlJAokZW5kaWYkClxlbmR7Zmx1c2hsZWZ0fQpcZW5ke3RpdGxlcGFnZX0KXHJlc3RvcmVnZW9tZXRyeQpccGFnZW51bWJlcmluZ3thcmFiaWN9IAokZW5kaWYkCiRlbmRpZiQKCiUlCiUlIGVuZCB0aXRsZXBhZ2UKJSUKCiRpZihoYXMtZnJvbnRtYXR0ZXIpJApcZnJvbnRtYXR0ZXIKXGZyYW1le1x0aXRsZXBhZ2V9CiUgZG9uJ3QgZ2VuZXJhdGUgdGhlIGRlZmF1bHQgdGl0bGUKJSAkZWxzZSQKJSBcbWFrZXRpdGxlClxwYWdlbnVtYmVyaW5ne1JvbWFufSAlIHNldCB0aGUgbnVtYmVyaW5nIHN0eWxlIHRvIGxvd2VyY2FzZSBsZXR0ZXIKClxiZWdpbntjZW50ZXJ9CiB7XExBUkdFIFx0ZXh0YmZ7XHRleHRzZntBYnN0cmFjdH19fQpcZW5ke2NlbnRlcn0KClxiZWdpbnthYnN0cmFjdH0KXGJlZ2lue2p1c3RpZnl9CiAgJGlmKGFic3RyYWN0KSQKICAkYWJzdHJhY3QkCiAgJGVsc2UkCiAgQWRkIHlvdXIgYWJzdHJhY3QgYXQgdGhlIGJlZ2lubmluZyBvZiB5b3VyIG1hcmtkb3duIGZpbGUgbGlrZSB0aGlzIAogIFxiZWdpbnt2ZXJiYXRpbX0KICAtLS0KICB0aXRsZTogIllvdXIgVGl0bGUiIAogIGFic3RyYWN0OiAieW91ciBhYnN0cmFjdCBoZXJlIgogIGF1dGhvcjogTGVvbmFyZG8gVi4gQ2FzdG9yaW5hLCBBbm90aGVyIDEsIEFub3RoZXIgMgogIHRpdGxlcGFnZS1sb2dvOiAvYWJzb2x1dGUvcGF0aC90by9sb2dvLnBkZgogIGFja25vd2xlZGdlbWVudHM6ICJJIHdvdWxkIGxpa2UgdG8gdGhhbmsgbXkgZG9nIERhdGEuIgogIGRlY2xhcmF0aW9uOiAiSSBkZWNsYXJlIHRoYXQgdGhpcyB0aGVzaXMgd2FzIGNvbXBvc2VkIGJ5IG15c2VsZi4iCiAgLS0tCiAgXGVuZHt2ZXJiYXRpbX0KICBUaGlzIGlzIGNhbGxlZCBZQU1MIGZyb250bWF0dGVyLiAgTWFrZSBzdXJlIHRvIHNldCB1cCBhIHRpdGxlISBJZiB5b3Ugc2V0IHlvdXIgYWJzdHJhY3QgY29ycmVjdGx5IHlvdSBzaG91bGQgbm90IHNlZSB0aGlzIG1lc3NhZ2UuCgogIE9wdGlvbmFsbHkgeW91IGNhbiBzZXQgdXAgXHRleHR0dHt0aXRsZXBhZ2UtbG9nb30gZm9yIGEgbG9nbyBpbiB0aGUgY292ZXIgcGFnZSwgXHRleHR0dHthY2tub3dsZWRnZW1lbnRzfSBzZWN0aW9uLCBhbmQgIFx0ZXh0dHR7ZGVjbGFyYXRpb259IHNlY3Rpb24uCgogICRlbmRpZiQKXGVuZHtqdXN0aWZ5fQpcZW5ke2Fic3RyYWN0fQpccGFnZWJyZWFrCgoKJGlmKGFja25vd2xlZGdlbWVudHMpJApcYmVnaW57Y2VudGVyfQoge1xMQVJHRSBcdGV4dGJme1x0ZXh0c2Z7QWNrbm93bGVkZ2VtZW50c319fQpcZW5ke2NlbnRlcn0KClxiZWdpbnthYnN0cmFjdH0KXGJlZ2lue2p1c3RpZnl9CiRhY2tub3dsZWRnZW1lbnRzJApcZW5ke2p1c3RpZnl9ClxlbmR7YWJzdHJhY3R9ClxwYWdlYnJlYWsKCiRlbmRpZiQKCiRpZihkZWNsYXJhdGlvbikkClxiZWdpbntjZW50ZXJ9CiB7XExBUkdFIFx0ZXh0YmZ7XHRleHRzZntEZWNsYXJhdGlvbn19fQpcZW5ke2NlbnRlcn0KClxiZWdpbnthYnN0cmFjdH0KXGJlZ2lue2p1c3RpZnl9CiAgJGRlY2xhcmF0aW9uJCBccGFyCiAgIFx2c3BhY2V7MWlufVxyYWdnZWRsZWZ0KHtcZW0gJGF1dGhvciRcL30pClxlbmR7anVzdGlmeX0KXGVuZHthYnN0cmFjdH0KXHBhZ2VicmVhawoKCgokZW5kaWYkClxwYWdlbnVtYmVyaW5ne2FyYWJpY30gJSBzZXQgdGhlIG51bWJlcmluZyBzdHlsZSB0byBsb3dlcmNhc2UgbGV0dGVyClxzZXRjb3VudGVye3BhZ2V9ezB9ICUgU2V0IHRoZSBwYWdlIGNvdW50ZXIgdG8gMwoKCiRpZihmaXJzdC1jaGFwdGVyKSQKXHNldGNvdW50ZXJ7Y2hhcHRlcn17JGZpcnN0LWNoYXB0ZXIkfQpcYWRkdG9jb3VudGVye2NoYXB0ZXJ9ey0xfQokZW5kaWYkCgokZm9yKGluY2x1ZGUtYmVmb3JlKSQKJGluY2x1ZGUtYmVmb3JlJAoKJGVuZGZvciQKJGlmKG5vLXRvYykkCiRlbHNlJApccmVuZXdjb21tYW5kKlxjb250ZW50c25hbWV7JHRvYy10aXRsZSR9ClxyZW5ld2NvbW1hbmQqXGNvbnRlbnRzbmFtZXtUYWJsZSBvZiBDb250ZW50c30KJGVuZGlmJAokaWYoYmVhbWVyKSQKXGJlZ2lue2ZyYW1lfVthbGxvd2ZyYW1lYnJlYWtzXQokaWYodG9jLXRpdGxlKSQKICBcZnJhbWV0aXRsZXskdG9jLXRpdGxlJH0KJGVuZGlmJAogIFx0YWJsZW9mY29udGVudHNbaGlkZWFsbHN1YnNlY3Rpb25zXQpcZW5ke2ZyYW1lfQpcbmV3cGFnZQokZWxzZSQKewokaWYoY29sb3JsaW5rcykkClxoeXBlcnNldHVwe2xpbmtjb2xvcj0kaWYodG9jY29sb3IpJCR0b2Njb2xvciQkZWxzZSQkZW5kaWYkfQokZW5kaWYkClxzZXRjb3VudGVye3RvY2RlcHRofXskdG9jLWRlcHRoJH0KXHRhYmxlb2Zjb250ZW50cwpcbmV3cGFnZQp9CiRlbmRpZiQKJGVuZGlmJAokaWYobG9mKSQKXGxpc3RvZmZpZ3VyZXMKJGVuZGlmJAokaWYobG90KSQKXGxpc3RvZnRhYmxlcwokZW5kaWYkCiRpZihsaW5lc3RyZXRjaCkkClxzZXRzdHJldGNoeyRsaW5lc3RyZXRjaCR9CiRlbmRpZiQKJGlmKGhhcy1mcm9udG1hdHRlcikkClxtYWlubWF0dGVyCiRlbmRpZiQKJGJvZHkkCgokaWYoaGFzLWZyb250bWF0dGVyKSQKXGJhY2ttYXR0ZXIKJGVuZGlmJAokaWYobmF0YmliKSQKJGlmKGJpYmxpb2dyYXBoeSkkCiRpZihiaWJsaW8tdGl0bGUpJAokaWYoaGFzLWNoYXB0ZXJzKSQKXHJlbmV3Y29tbWFuZFxiaWJuYW1leyRiaWJsaW8tdGl0bGUkfQokZWxzZSQKXHJlbmV3Y29tbWFuZFxyZWZuYW1leyRiaWJsaW8tdGl0bGUkfQokZW5kaWYkCiRlbmRpZiQKJGlmKGJlYW1lcikkClxiZWdpbntmcmFtZX1bYWxsb3dmcmFtZWJyZWFrc117JGJpYmxpby10aXRsZSR9CiAgXGJpYmxpb2dyYXBoeXRydWUKJGVuZGlmJAogIFxiaWJsaW9ncmFwaHl7JGZvcihiaWJsaW9ncmFwaHkpJCRiaWJsaW9ncmFwaHkkJHNlcCQsJGVuZGZvciR9CiRpZihiZWFtZXIpJApcZW5ke2ZyYW1lfQokZW5kaWYkCgokZW5kaWYkCiRlbmRpZiQKJGlmKGJpYmxhdGV4KSQKJGlmKGJlYW1lcikkClxiZWdpbntmcmFtZX1bYWxsb3dmcmFtZWJyZWFrc117JGJpYmxpby10aXRsZSR9CiAgXGJpYmxpb2dyYXBoeXRydWUKICBccHJpbnRiaWJsaW9ncmFwaHlbaGVhZGluZz1ub25lXQpcZW5ke2ZyYW1lfQokZWxzZSQKXHByaW50YmlibGlvZ3JhcGh5JGlmKGJpYmxpby10aXRsZSkkW3RpdGxlPSRiaWJsaW8tdGl0bGUkXSRlbmRpZiQKJGVuZGlmJAoKJGVuZGlmJAokZm9yKGluY2x1ZGUtYWZ0ZXIpJAokaW5jbHVkZS1hZnRlciQKCiRlbmRmb3IkClxlbmR7ZG9jdW1lbnR9"),e=>e.charCodeAt(0)),Ia=Object.freeze(Object.defineProperty({__proto__:null,default:Ga},Symbol.toStringTag,{value:"Module"})),Ca=Uint8Array.from(atob("JSBwYXJ0aWFsIHJld3JpdGUgb2YgdGhlIExhVGVYMmUgcGFja2FnZSBmb3Igc3VibWlzc2lvbnMgdG8gdGhlCiUgQ29uZmVyZW5jZSBvbiBOZXVyYWwgSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBTeXN0ZW1zIChOZXVySVBTKToKJQolIC0gdXNlcyBtb3JlIExhVGVYIGNvbnZlbnRpb25zCiUgLSBsaW5lIG51bWJlcnMgYXQgc3VibWlzc2lvbiB0aW1lIHJlcGxhY2VkIHdpdGggYWxpZ25lZCBudW1iZXJzIGZyb20KJSAgIGxpbmVubyBwYWNrYWdlCiUgLSBcbmlwc2ZpbmFsY29weSByZXBsYWNlZCB3aXRoIFtmaW5hbF0gcGFja2FnZSBvcHRpb24KJSAtIGF1dG9tYXRpY2FsbHkgbG9hZHMgdGltZXMgcGFja2FnZSBmb3IgYXV0aG9ycwolIC0gbG9hZHMgbmF0YmliIGF1dG9tYXRpY2FsbHk7IHRoaXMgY2FuIGJlIHN1cHByZXNzZWQgd2l0aCB0aGUKJSAgIFtub25hdGJpYl0gcGFja2FnZSBvcHRpb24KJSAtIGFkZHMgZm9vdCBsaW5lIHRvIGZpcnN0IHBhZ2UgaWRlbnRpZnlpbmcgdGhlIGNvbmZlcmVuY2UKJSAtIGFkZHMgcHJlcHJpbnQgb3B0aW9uIGZvciBzdWJtaXNzaW9uIHRvIGUuZy4gYXJYaXYKJSAtIGNvbmZlcmVuY2UgYWNyb255bSBtb2RpZmllZAolCiUgUm9tYW4gR2FybmV0dCAoZ2FybmV0dEB3dXN0bC5lZHUpIGFuZCB0aGUgbWFueSBhdXRob3JzIG9mCiUgbmlwczE1c3VibWl0X2Uuc3R5LCBpbmNsdWRpbmcgTUsgYW5kIGRyc3RyaXBAc2FuZGlhCiUKJSBsYXN0IHJldmlzaW9uOiBNYXJjaCAyMDIzCgpcTmVlZHNUZVhGb3JtYXR7TGFUZVgyZX0KXFByb3ZpZGVzUGFja2FnZXtuZXVyaXBzfVsyMDIzLzAzLzMxIE5ldXJJUFMgMjAyMyBzdWJtaXNzaW9uL2NhbWVyYS1yZWFkeSBzdHlsZSBmaWxlXQoKJSBkZWNsYXJlIGZpbmFsIG9wdGlvbiwgd2hpY2ggY3JlYXRlcyBjYW1lcmEtcmVhZHkgY29weQpcbmV3aWZcaWZAbmV1cmlwc2ZpbmFsXEBuZXVyaXBzZmluYWxmYWxzZQpcRGVjbGFyZU9wdGlvbntmaW5hbH17CiAgXEBuZXVyaXBzZmluYWx0cnVlCn0KCiUgZGVjbGFyZSBub25hdGJpYiBvcHRpb24sIHdoaWNoIGRvZXMgbm90IGxvYWQgbmF0YmliIGluIGNhc2Ugb2YKJSBwYWNrYWdlIGNsYXNoICh1c2VycyBjYW4gcGFzcyBvcHRpb25zIHRvIG5hdGJpYiB2aWEKJSBcUGFzc09wdGlvbnNUb1BhY2thZ2UpClxuZXdpZlxpZkBuYXRiaWJcQG5hdGJpYnRydWUKXERlY2xhcmVPcHRpb257bm9uYXRiaWJ9ewogIFxAbmF0YmliZmFsc2UKfQoKJSBkZWNsYXJlIHByZXByaW50IG9wdGlvbiwgd2hpY2ggY3JlYXRlcyBhIHByZXByaW50IHZlcnNpb24gcmVhZHkgZm9yCiUgdXBsb2FkIHRvLCBlLmcuLCBhclhpdgpcbmV3aWZcaWZAcHJlcHJpbnRcQHByZXByaW50ZmFsc2UKXERlY2xhcmVPcHRpb257cHJlcHJpbnR9ewogIFxAcHJlcHJpbnR0cnVlCn0KClxQcm9jZXNzT3B0aW9uc1xyZWxheAoKJSBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGFuIGFub255bWl6ZWQgc3VibWlzc2lvbgpcbmV3aWZcaWZAc3VibWlzc2lvblxAc3VibWlzc2lvbnRydWUKXGlmQG5ldXJpcHNmaW5hbFxAc3VibWlzc2lvbmZhbHNlXGZpClxpZkBwcmVwcmludFxAc3VibWlzc2lvbmZhbHNlXGZpCgolIGZvbnRzClxyZW5ld2NvbW1hbmR7XHJtZGVmYXVsdH17cHRtfQpccmVuZXdjb21tYW5ke1xzZmRlZmF1bHR9e3Bodn0KCiUgY2hhbmdlIHRoaXMgZXZlcnkgeWVhciBmb3Igbm90aWNlIHN0cmluZyBhdCBib3R0b20KXG5ld2NvbW1hbmR7XEBuZXVyaXBzb3JkaW5hbH17fQpcbmV3Y29tbWFuZHtcQG5ldXJpcHN5ZWFyfXtcdGhlXHllYXJ9ClxuZXdjb21tYW5ke1xAbmV1cmlwc2xvY2F0aW9ufXt9CgolIGFja25vd2xlZGdtZW50cwpcdXNlcGFja2FnZXtlbnZpcm9ufQpcbmV3Y29tbWFuZHtcYWNrc2VjdGlvbn17XHNlY3Rpb24qe0Fja25vd2xlZGdtZW50cyBhbmQgRGlzY2xvc3VyZSBvZiBGdW5kaW5nfX0KXE5ld0Vudmlyb257YWNrfXslCiAgXGFja3NlY3Rpb24KICBcQk9EWQp9CgoKJSBsb2FkIG5hdGJpYiB1bmxlc3MgdG9sZCBvdGhlcndpc2UKXGlmQG5hdGJpYgogIFxSZXF1aXJlUGFja2FnZXtuYXRiaWJ9ClxmaQoKJSBzZXQgcGFnZSBnZW9tZXRyeQpcdXNlcGFja2FnZVt2ZXJib3NlPXRydWUsbGV0dGVycGFwZXJde2dlb21ldHJ5fQpcQXRCZWdpbkRvY3VtZW50ewogIFxuZXdnZW9tZXRyeXsKICAgIHRleHRoZWlnaHQ9OWluLAogICAgdGV4dHdpZHRoPTUuNWluLAogICAgdG9wPTFpbiwKICAgIGhlYWRoZWlnaHQ9MTJwdCwKICAgIGhlYWRzZXA9MjVwdCwKICAgIGZvb3Rza2lwPTMwcHQKICB9CiAgXEBpZnBhY2thZ2Vsb2FkZWR7ZnVsbHBhZ2V9CiAgICB7XFBhY2thZ2VXYXJuaW5ne25ldXJpcHNfMjAyM317ZnVsbHBhZ2UgcGFja2FnZSBub3QgYWxsb3dlZCEgT3ZlcndyaXRpbmcgZm9ybWF0dGluZy59fQogICAge30KfQoKXHdpZG93cGVuYWx0eT0xMDAwMApcY2x1YnBlbmFsdHk9MTAwMDAKXGZsdXNoYm90dG9tClxzbG9wcHkKCgolIGZvbnQgc2l6ZXMgd2l0aCByZWR1Y2VkIGxlYWRpbmcKXHJlbmV3Y29tbWFuZHtcbm9ybWFsc2l6ZX17JQogIFxAc2V0Zm9udHNpemVcbm9ybWFsc2l6ZVxAeHB0XEB4aXB0CiAgXGFib3ZlZGlzcGxheXNraXAgICAgICA3XHBAIFxAcGx1cyAyXHBAIFxAbWludXMgNVxwQAogIFxhYm92ZWRpc3BsYXlzaG9ydHNraXAgXHpAIFxAcGx1cyAzXHBACiAgXGJlbG93ZGlzcGxheXNraXAgICAgICBcYWJvdmVkaXNwbGF5c2tpcAogIFxiZWxvd2Rpc3BsYXlzaG9ydHNraXAgNFxwQCBcQHBsdXMgM1xwQCBcQG1pbnVzIDNccEAKfQpcbm9ybWFsc2l6ZQpccmVuZXdjb21tYW5ke1xzbWFsbH17JQogIFxAc2V0Zm9udHNpemVcc21hbGxcQGl4cHRcQHhwdAogIFxhYm92ZWRpc3BsYXlza2lwICAgICAgNlxwQCBcQHBsdXMgMS41XHBAIFxAbWludXMgNFxwQAogIFxhYm92ZWRpc3BsYXlzaG9ydHNraXAgXHpAICBcQHBsdXMgMlxwQAogIFxiZWxvd2Rpc3BsYXlza2lwICAgICAgXGFib3ZlZGlzcGxheXNraXAKICBcYmVsb3dkaXNwbGF5c2hvcnRza2lwIDNccEAgXEBwbHVzIDJccEAgICBcQG1pbnVzIDJccEAKfQpccmVuZXdjb21tYW5ke1xmb290bm90ZXNpemV9e1xAc2V0Zm9udHNpemVcZm9vdG5vdGVzaXplXEBpeHB0XEB4cHR9ClxyZW5ld2NvbW1hbmR7XHNjcmlwdHNpemV9e1xAc2V0Zm9udHNpemVcc2NyaXB0c2l6ZVxAdmlpcHRcQHZpaWlwdH0KXHJlbmV3Y29tbWFuZHtcdGlueX17XEBzZXRmb250c2l6ZVx0aW55XEB2aXB0XEB2aWlwdH0KXHJlbmV3Y29tbWFuZHtcbGFyZ2V9e1xAc2V0Zm9udHNpemVcbGFyZ2VcQHhpaXB0ezE0fX0KXHJlbmV3Y29tbWFuZHtcTGFyZ2V9e1xAc2V0Zm9udHNpemVcTGFyZ2VcQHhpdnB0ezE2fX0KXHJlbmV3Y29tbWFuZHtcTEFSR0V9e1xAc2V0Zm9udHNpemVcTEFSR0VcQHh2aWlwdHsyMH19ClxyZW5ld2NvbW1hbmR7XGh1Z2V9e1xAc2V0Zm9udHNpemVcaHVnZVxAeHhwdHsyM319ClxyZW5ld2NvbW1hbmR7XEh1Z2V9e1xAc2V0Zm9udHNpemVcSHVnZVxAeHh2cHR7Mjh9fQoKJSBzZWN0aW9ucyB3aXRoIGxlc3Mgc3BhY2UKXHByb3ZpZGVjb21tYW5ke1xzZWN0aW9ufXt9ClxyZW5ld2NvbW1hbmR7XHNlY3Rpb259eyUKICBcQHN0YXJ0c2VjdGlvbntzZWN0aW9ufXsxfXtcekB9JQogICAgICAgICAgICAgICAgey0yLjBleCBcQHBsdXMgLTAuNWV4IFxAbWludXMgLTAuMmV4fSUKICAgICAgICAgICAgICAgIHsgMS41ZXggXEBwbHVzICAwLjNleCBcQG1pbnVzICAwLjJleH0lCiAgICAgICAgICAgICAgICB7XGxhcmdlXGJmXHJhZ2dlZHJpZ2h0fSUKfQpccHJvdmlkZWNvbW1hbmR7XHN1YnNlY3Rpb259e30KXHJlbmV3Y29tbWFuZHtcc3Vic2VjdGlvbn17JQogIFxAc3RhcnRzZWN0aW9ue3N1YnNlY3Rpb259ezJ9e1x6QH0lCiAgICAgICAgICAgICAgICB7LTEuOGV4IFxAcGx1cyAtMC41ZXggXEBtaW51cyAtMC4yZXh9JQogICAgICAgICAgICAgICAgeyAwLjhleCBcQHBsdXMgIDAuMmV4fSUKICAgICAgICAgICAgICAgIHtcbm9ybWFsc2l6ZVxiZlxyYWdnZWRyaWdodH0lCn0KXHByb3ZpZGVjb21tYW5ke1xzdWJzdWJzZWN0aW9ufXt9ClxyZW5ld2NvbW1hbmR7XHN1YnN1YnNlY3Rpb259eyUKICBcQHN0YXJ0c2VjdGlvbntzdWJzdWJzZWN0aW9ufXszfXtcekB9JQogICAgICAgICAgICAgICAgey0xLjVleCBcQHBsdXMgLTAuNWV4IFxAbWludXMgLTAuMmV4fSUKICAgICAgICAgICAgICAgIHsgMC41ZXggXEBwbHVzICAwLjJleH0lCiAgICAgICAgICAgICAgICB7XG5vcm1hbHNpemVcYmZccmFnZ2VkcmlnaHR9JQp9Clxwcm92aWRlY29tbWFuZHtccGFyYWdyYXBofXt9ClxyZW5ld2NvbW1hbmR7XHBhcmFncmFwaH17JQogIFxAc3RhcnRzZWN0aW9ue3BhcmFncmFwaH17NH17XHpAfSUKICAgICAgICAgICAgICAgIHsxLjVleCBcQHBsdXMgMC41ZXggXEBtaW51cyAwLjJleH0lCiAgICAgICAgICAgICAgICB7LTFlbX0lCiAgICAgICAgICAgICAgICB7XG5vcm1hbHNpemVcYmZ9JQp9Clxwcm92aWRlY29tbWFuZHtcc3VicGFyYWdyYXBofXt9ClxyZW5ld2NvbW1hbmR7XHN1YnBhcmFncmFwaH17JQogIFxAc3RhcnRzZWN0aW9ue3N1YnBhcmFncmFwaH17NX17XHpAfSUKICAgICAgICAgICAgICAgIHsxLjVleCBcQHBsdXMgMC41ZXggXEBtaW51cyAwLjJleH0lCiAgICAgICAgICAgICAgICB7LTFlbX0lCiAgICAgICAgICAgICAgICB7XG5vcm1hbHNpemVcYmZ9JQp9Clxwcm92aWRlY29tbWFuZHtcc3Vic3Vic3Vic2VjdGlvbn17fQpccmVuZXdjb21tYW5ke1xzdWJzdWJzdWJzZWN0aW9ufXslCiAgXHZza2lwNXB0e1xub2luZGVudFxub3JtYWxzaXplXHJtXHJhZ2dlZHJpZ2h0fSUKfQoKJSBmbG9hdCBwbGFjZW1lbnQKXHJlbmV3Y29tbWFuZHtcdG9wZnJhY3Rpb24gICAgICB9ezAuODV9ClxyZW5ld2NvbW1hbmR7XGJvdHRvbWZyYWN0aW9uICAgfXswLjR9ClxyZW5ld2NvbW1hbmR7XHRleHRmcmFjdGlvbiAgICAgfXswLjF9ClxyZW5ld2NvbW1hbmR7XGZsb2F0cGFnZWZyYWN0aW9ufXswLjd9CgpcbmV3bGVuZ3Roe1xAbmV1cmlwc2Fib3ZlY2FwdGlvbnNraXB9XHNldGxlbmd0aHtcQG5ldXJpcHNhYm92ZWNhcHRpb25za2lwfXs3XHBAfQpcbmV3bGVuZ3Roe1xAbmV1cmlwc2JlbG93Y2FwdGlvbnNraXB9XHNldGxlbmd0aHtcQG5ldXJpcHNiZWxvd2NhcHRpb25za2lwfXtcekB9Cgpcc2V0bGVuZ3Roe1xhYm92ZWNhcHRpb25za2lwfXtcQG5ldXJpcHNhYm92ZWNhcHRpb25za2lwfQpcc2V0bGVuZ3Roe1xiZWxvd2NhcHRpb25za2lwfXtcQG5ldXJpcHNiZWxvd2NhcHRpb25za2lwfQoKJSBzd2FwIGFib3ZlL2JlbG93Y2FwdGlvbnNraXAgbGVuZ3RocyBmb3IgdGFibGVzClxyZW5ld2Vudmlyb25tZW50e3RhYmxlfQogIHtcc2V0bGVuZ3Roe1xhYm92ZWNhcHRpb25za2lwfXtcQG5ldXJpcHNiZWxvd2NhcHRpb25za2lwfSUKICAgXHNldGxlbmd0aHtcYmVsb3djYXB0aW9uc2tpcH17XEBuZXVyaXBzYWJvdmVjYXB0aW9uc2tpcH0lCiAgIFxAZmxvYXR7dGFibGV9fQogIHtcZW5kQGZsb2F0fQoKJSBmb290bm90ZSBmb3JtYXR0aW5nClxzZXRsZW5ndGh7XGZvb3Rub3Rlc2VwIH17Ni42NVxwQH0KXHNldGxlbmd0aHtcc2tpcFxmb290aW5zfXs5XHBAIFxAcGx1cyA0XHBAIFxAbWludXMgMlxwQH0KXHJlbmV3Y29tbWFuZHtcZm9vdG5vdGVydWxlfXtca2Vybi0zXHBAIFxocnVsZSB3aWR0aCAxMnBjIFxrZXJuIDIuNlxwQH0KXHNldGNvdW50ZXJ7Zm9vdG5vdGV9ezB9CgolIHBhcmFncmFwaCBmb3JtYXR0aW5nClxzZXRsZW5ndGh7XHBhcmluZGVudH17XHpAfQpcc2V0bGVuZ3Roe1xwYXJza2lwICB9ezUuNVxwQH0KCiUgbGlzdCBmb3JtYXR0aW5nClxzZXRsZW5ndGh7XHRvcHNlcCAgICAgICB9ezRccEAgXEBwbHVzIDFccEAgICBcQG1pbnVzIDJccEB9ClxzZXRsZW5ndGh7XHBhcnRvcHNlcCAgICB9ezFccEAgXEBwbHVzIDAuNVxwQCBcQG1pbnVzIDAuNVxwQH0KXHNldGxlbmd0aHtcaXRlbXNlcCAgICAgIH17MlxwQCBcQHBsdXMgMVxwQCAgIFxAbWludXMgMC41XHBAfQpcc2V0bGVuZ3Roe1xwYXJzZXAgICAgICAgfXsyXHBAIFxAcGx1cyAxXHBAICAgXEBtaW51cyAwLjVccEB9ClxzZXRsZW5ndGh7XGxlZnRtYXJnaW4gICB9ezNwY30KXHNldGxlbmd0aHtcbGVmdG1hcmdpbmkgIH17XGxlZnRtYXJnaW59ClxzZXRsZW5ndGh7XGxlZnRtYXJnaW5paSB9ezJlbX0KXHNldGxlbmd0aHtcbGVmdG1hcmdpbmlpaX17MS41ZW19ClxzZXRsZW5ndGh7XGxlZnRtYXJnaW5pdiB9ezEuMGVtfQpcc2V0bGVuZ3Roe1xsZWZ0bWFyZ2ludiAgfXswLjVlbX0KXGRlZlxAbGlzdGkgIHtcbGVmdG1hcmdpblxsZWZ0bWFyZ2luaX0KXGRlZlxAbGlzdGlpIHtcbGVmdG1hcmdpblxsZWZ0bWFyZ2luaWkKICAgICAgICAgICAgICBcbGFiZWx3aWR0aFxsZWZ0bWFyZ2luaWkKICAgICAgICAgICAgICBcYWR2YW5jZVxsYWJlbHdpZHRoLVxsYWJlbHNlcAogICAgICAgICAgICAgIFx0b3BzZXAgIDJccEAgXEBwbHVzIDFccEAgICAgXEBtaW51cyAwLjVccEAKICAgICAgICAgICAgICBccGFyc2VwICAxXHBAIFxAcGx1cyAwLjVccEAgXEBtaW51cyAwLjVccEAKICAgICAgICAgICAgICBcaXRlbXNlcCBccGFyc2VwfQpcZGVmXEBsaXN0aWlpe1xsZWZ0bWFyZ2luXGxlZnRtYXJnaW5paWkKICAgICAgICAgICAgICBcbGFiZWx3aWR0aFxsZWZ0bWFyZ2luaWlpCiAgICAgICAgICAgICAgXGFkdmFuY2VcbGFiZWx3aWR0aC1cbGFiZWxzZXAKICAgICAgICAgICAgICBcdG9wc2VwICAgIDFccEAgXEBwbHVzIDAuNVxwQCBcQG1pbnVzIDAuNVxwQAogICAgICAgICAgICAgIFxwYXJzZXAgICAgXHpACiAgICAgICAgICAgICAgXHBhcnRvcHNlcCAwLjVccEAgXEBwbHVzIDBccEAgXEBtaW51cyAwLjVccEAKICAgICAgICAgICAgICBcaXRlbXNlcCBcdG9wc2VwfQpcZGVmXEBsaXN0aXYge1xsZWZ0bWFyZ2luXGxlZnRtYXJnaW5pdgogICAgICAgICAgICAgIFxsYWJlbHdpZHRoXGxlZnRtYXJnaW5pdgogICAgICAgICAgICAgIFxhZHZhbmNlXGxhYmVsd2lkdGgtXGxhYmVsc2VwfQpcZGVmXEBsaXN0diAge1xsZWZ0bWFyZ2luXGxlZnRtYXJnaW52CiAgICAgICAgICAgICAgXGxhYmVsd2lkdGhcbGVmdG1hcmdpbnYKICAgICAgICAgICAgICBcYWR2YW5jZVxsYWJlbHdpZHRoLVxsYWJlbHNlcH0KXGRlZlxAbGlzdHZpIHtcbGVmdG1hcmdpblxsZWZ0bWFyZ2ludmkKICAgICAgICAgICAgICBcbGFiZWx3aWR0aFxsZWZ0bWFyZ2ludmkKICAgICAgICAgICAgICBcYWR2YW5jZVxsYWJlbHdpZHRoLVxsYWJlbHNlcH0KCiUgY3JlYXRlIHRpdGxlClxwcm92aWRlY29tbWFuZHtcbWFrZXRpdGxlfXt9ClxyZW5ld2NvbW1hbmR7XG1ha2V0aXRsZX17JQogIFxwYXIKICBcYmVnaW5ncm91cAogICAgXHJlbmV3Y29tbWFuZHtcdGhlZm9vdG5vdGV9e1xmbnN5bWJvbHtmb290bm90ZX19CiAgICAlIGZvciBwZXJmZWN0IGF1dGhvciBuYW1lIGNlbnRlcmluZwogICAgXHJlbmV3Y29tbWFuZHtcQG1ha2Vmbm1hcmt9e1xoYm94IHRvIFx6QHskXntcQHRoZWZubWFya30kXGhzc319CiAgICAlIFRoZSBmb290bm90ZS1tYXJrIHdhcyBvdmVybGFwcGluZyB0aGUgZm9vdG5vdGUtdGV4dCwKICAgICUgYWRkZWQgdGhlIGZvbGxvd2luZyB0byBmaXggdGhpcyBwcm9ibGVtICAgICAgICAgICAgICAgKE1LKQogICAgXGxvbmdcZGVmXEBtYWtlZm50ZXh0IyMxeyUKICAgICAgXHBhcmluZGVudCAxZW1cbm9pbmRlbnQKICAgICAgXGhib3ggdG8gMS44ZW17XGhzcyAkXG1AdGggXntcQHRoZWZubWFya30kfSMjMQogICAgfQogICAgXHRoaXNwYWdlc3R5bGV7ZW1wdHl9CiAgICBcQG1ha2V0aXRsZQogICAgXEB0aGFua3MKICAgIFxAbm90aWNlCiAgXGVuZGdyb3VwCiAgXGxldFxtYWtldGl0bGVccmVsYXgKICBcbGV0XHRoYW5rc1xyZWxheAp9CgolIHJ1bGVzIGZvciB0aXRsZSBib3ggYXQgdG9wIG9mIGZpcnN0IHBhZ2UKXG5ld2NvbW1hbmR7XEB0b3B0aXRsZWJhcn17CiAgXGhydWxlIGhlaWdodCA0XHBACiAgXHZza2lwIDAuMjVpbgogIFx2c2tpcCAtXHBhcnNraXAlCn0KXG5ld2NvbW1hbmR7XEBib3R0b210aXRsZWJhcn17CiAgXHZza2lwIDAuMjlpbgogIFx2c2tpcCAtXHBhcnNraXAKICBcaHJ1bGUgaGVpZ2h0IDFccEAKICBcdnNraXAgMC4wOWluJQp9CgolIGNyZWF0ZSB0aXRsZSAoaW5jbHVkZXMgYm90aCBhbm9ueW1pemVkIGFuZCBub24tYW5vbnltaXplZCB2ZXJzaW9ucykKXHByb3ZpZGVjb21tYW5ke1xAbWFrZXRpdGxlfXt9ClxyZW5ld2NvbW1hbmR7XEBtYWtldGl0bGV9eyUKICBcdmJveHslCiAgICBcaHNpemVcdGV4dHdpZHRoCiAgICBcbGluZXdpZHRoXGhzaXplCiAgICBcdnNraXAgMC4xaW4KICAgIFxAdG9wdGl0bGViYXIKICAgIFxjZW50ZXJpbmcKICAgIHtcTEFSR0VcYmYgXEB0aXRsZVxwYXJ9CiAgICBcQGJvdHRvbXRpdGxlYmFyCiAgICBcaWZAc3VibWlzc2lvbgogICAgICBcYmVnaW57dGFidWxhcn1bdF17Y31cYmZccnVsZXtcekB9ezI0XHBAfQogICAgICAgIEFub255bW91cyBBdXRob3IocykgXFwKICAgICAgICBBZmZpbGlhdGlvbiBcXAogICAgICAgIEFkZHJlc3MgXFwKICAgICAgICBcdGV4dHR0e2VtYWlsfSBcXAogICAgICBcZW5ke3RhYnVsYXJ9JQogICAgXGVsc2UKICAgICAgXGRlZlxBbmR7JQogICAgICAgIFxlbmR7dGFidWxhcn1caGZpbFxsaW5lYnJlYWtbMF1caGZpbCUKICAgICAgICBcYmVnaW57dGFidWxhcn1bdF17Y31cYmZccnVsZXtcekB9ezI0XHBAfVxpZ25vcmVzcGFjZXMlCiAgICAgIH0KICAgICAgXGRlZlxBTkR7JQogICAgICAgIFxlbmR7dGFidWxhcn1caGZpbFxsaW5lYnJlYWtbNF1caGZpbCUKICAgICAgICBcYmVnaW57dGFidWxhcn1bdF17Y31cYmZccnVsZXtcekB9ezI0XHBAfVxpZ25vcmVzcGFjZXMlCiAgICAgIH0KICAgICAgXGJlZ2lue3RhYnVsYXJ9W3Rde2N9XGJmXHJ1bGV7XHpAfXsyNFxwQH1cQGF1dGhvclxlbmR7dGFidWxhcn0lCiAgICBcZmkKICAgIFx2c2tpcCAwLjNpbiBcQG1pbnVzIDAuMWluCiAgfQp9CgolIGFkZCBjb25mZXJlbmNlIG5vdGljZSB0byBib3R0b20gb2YgZmlyc3QgcGFnZQpcbmV3Y29tbWFuZHtcZnR5cGVAbm90aWNlYm94fXs4fQpcbmV3Y29tbWFuZHtcQG5vdGljZX17JQogICUgZ2l2ZSBhIGJpdCBvZiBleHRyYSByb29tIGJhY2sgdG8gYXV0aG9ycyBvbiBmaXJzdCBwYWdlCiAgXGVubGFyZ2V0aGlzcGFnZXsyXGJhc2VsaW5lc2tpcH0lCiAgXEBmbG9hdHtub3RpY2Vib3h9W2JdJQogICAgXGZvb3Rub3Rlc2l6ZVxAbm90aWNlc3RyaW5nJQogIFxlbmRAZmxvYXQlCn0KCiUgYWJzdHJhY3Qgc3R5bGluZwpccmVuZXdlbnZpcm9ubWVudHthYnN0cmFjdH0lCnslCiAgXHZza2lwIDAuMDc1aW4lCiAgXGNlbnRlcmxpbmUlCiAge1xsYXJnZVxiZiBBYnN0cmFjdH0lCiAgXHZzcGFjZXswLjVleH0lCiAgXGJlZ2lue3F1b3RlfSUKfQp7CiAgXHBhciUKICBcZW5ke3F1b3RlfSUKICBcdnNraXAgMWV4JQp9CgolIGhhbmRsZSB0d2Vha3MgZm9yIGNhbWVyYS1yZWFkeSBjb3B5IHZzLiBzdWJtaXNzaW9uIGNvcHkKXGlmQHByZXByaW50CiAgXG5ld2NvbW1hbmR7XEBub3RpY2VzdHJpbmd9eyUKICAgIFByZXByaW50LiBVbmRlciByZXZpZXcuJQogIH0KXGVsc2UKICBcaWZAbmV1cmlwc2ZpbmFsCiAgICBcbmV3Y29tbWFuZHtcQG5vdGljZXN0cmluZ317JQogICAgICAoXEBuZXVyaXBzeWVhcikgXEB0aXRsZSAKICAgIH0KICBcZWxzZQogICAgXG5ld2NvbW1hbmR7XEBub3RpY2VzdHJpbmd9eyUKICAgICAoXEBuZXVyaXBzeWVhcikgXEB0aXRsZSAlCiAgICB9CgogICAgJSBoaWRlIHRoZSBhY2tub3dsZWRnZW1lbnRzCiAgICBcTmV3RW52aXJvbntoaWRlfXt9CiAgICBcbGV0XGFja1xoaWRlCiAgICBcbGV0XGVuZGFja1xlbmRoaWRlCgogICAgJSBsaW5lIG51bWJlcnMgZm9yIHN1Ym1pc3Npb24KICAgIFxSZXF1aXJlUGFja2FnZXtsaW5lbm99CiAgICBcbGluZW51bWJlcnMKCiAgICAlIGZpeCBpbmNvbXBhdGliaWxpdGllcyBiZXR3ZWVuIGxpbmVubyBhbmQgYW1zbWF0aCwgaWYgcmVxdWlyZWQsIGJ5CiAgICAlIHRyYW5zcGFyZW50bHkgd3JhcHBpbmcgbGluZW5vbWF0aCBlbnZpcm9ubWVudHMgYXJvdW5kIGFtc21hdGgKICAgICUgZW52aXJvbm1lbnRzCiAgICBcQXRCZWdpbkRvY3VtZW50eyUKICAgICAgXEBpZnBhY2thZ2Vsb2FkZWR7YW1zbWF0aH17JQogICAgICAgIFxuZXdjb21tYW5kKlxwYXRjaEFtc01hdGhFbnZpcm9ubWVudEZvckxpbmVub1sxXXslCiAgICAgICAgICBcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSBvbGQjMVxleHBhbmRhZnRlclxlbmRjc25hbWVcY3NuYW1lICMxXGVuZGNzbmFtZQogICAgICAgICAgXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgb2xkZW5kIzFcZXhwYW5kYWZ0ZXJcZW5kY3NuYW1lXGNzbmFtZSBlbmQjMVxlbmRjc25hbWUKICAgICAgICAgIFxyZW5ld2Vudmlyb25tZW50eyMxfSUKICAgICAgICAgICAgICAgICAgICAgICAgICB7XGxpbmVub21hdGhcY3NuYW1lIG9sZCMxXGVuZGNzbmFtZX0lCiAgICAgICAgICAgICAgICAgICAgICAgICAge1xjc25hbWUgb2xkZW5kIzFcZW5kY3NuYW1lXGVuZGxpbmVub21hdGh9JQogICAgICAgIH0lCiAgICAgICAgXG5ld2NvbW1hbmQqXHBhdGNoQm90aEFtc01hdGhFbnZpcm9ubWVudHNGb3JMaW5lbm9bMV17JQogICAgICAgICAgXHBhdGNoQW1zTWF0aEVudmlyb25tZW50Rm9yTGluZW5veyMxfSUKICAgICAgICAgIFxwYXRjaEFtc01hdGhFbnZpcm9ubWVudEZvckxpbmVub3sjMSp9JQogICAgICAgIH0lCiAgICAgICAgXHBhdGNoQm90aEFtc01hdGhFbnZpcm9ubWVudHNGb3JMaW5lbm97ZXF1YXRpb259JQogICAgICAgIFxwYXRjaEJvdGhBbXNNYXRoRW52aXJvbm1lbnRzRm9yTGluZW5ve2FsaWdufSUKICAgICAgICBccGF0Y2hCb3RoQW1zTWF0aEVudmlyb25tZW50c0ZvckxpbmVub3tmbGFsaWdufSUKICAgICAgICBccGF0Y2hCb3RoQW1zTWF0aEVudmlyb25tZW50c0ZvckxpbmVub3thbGlnbmF0fSUKICAgICAgICBccGF0Y2hCb3RoQW1zTWF0aEVudmlyb25tZW50c0ZvckxpbmVub3tnYXRoZXJ9JQogICAgICAgIFxwYXRjaEJvdGhBbXNNYXRoRW52aXJvbm1lbnRzRm9yTGluZW5ve211bHRsaW5lfSUKICAgICAgfQogICAgICB7fQogICAgfQogIFxmaQpcZmkKCgpcZW5kaW5wdXQK"),e=>e.charCodeAt(0)),Wa=Object.freeze(Object.defineProperty({__proto__:null,default:Ca},Symbol.toStringTag,{value:"Module"})),ha=Uint8Array.from(atob("JSBUaGlzIHRlbXBsYXRlIHdhcyB0ZXN0ZWQgd2l0aCBQYW5kb2MgMy40IGFuZCBwYW5kb2MtY3Jvc3NyZWYgdjAuMy4xOC4wLiBJdCBzaG91bGQgYmUgYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aCBvbGRlciB2ZXJzaW9uIG9mIHBhbmRvYy4uClxkb2N1bWVudGNsYXNze2FydGljbGV9CgoKJSBpZiB5b3UgbmVlZCB0byBwYXNzIG9wdGlvbnMgdG8gbmF0YmliLCB1c2UsIGUuZy46CiUgICAgIFxQYXNzT3B0aW9uc1RvUGFja2FnZXtudW1iZXJzLCBjb21wcmVzc317bmF0YmlifQolIGJlZm9yZSBsb2FkaW5nIG5ldXJpcHNfMjAyMwoKCiUgcmVhZHkgZm9yIHN1Ym1pc3Npb24KXHVzZXBhY2thZ2VbZmluYWwsbm9uYXRiaWJde25ldXJpcHN9CgoKJSB0byBjb21waWxlIGEgcHJlcHJpbnQgdmVyc2lvbiwgZS5nLiwgZm9yIHN1Ym1pc3Npb24gdG8gYXJYaXYsIGFkZCBhZGQgdGhlCiUgW3ByZXByaW50XSBvcHRpb246CiUgICAgIFx1c2VwYWNrYWdlW3ByZXByaW50XXtuZXVyaXBzXzIwMjN9CgoKJSB0byBjb21waWxlIGEgY2FtZXJhLXJlYWR5IHZlcnNpb24sIGFkZCB0aGUgW2ZpbmFsXSBvcHRpb24sIGUuZy46CiUgICAgIFx1c2VwYWNrYWdlW2ZpbmFsXXtuZXVyaXBzXzIwMjN9CgoKJSB0byBhdm9pZCBsb2FkaW5nIHRoZSBuYXRiaWIgcGFja2FnZSwgYWRkIG9wdGlvbiBub25hdGJpYjoKJSAgICBcdXNlcGFja2FnZVtub25hdGJpYl17bmV1cmlwc18yMDIzfQoKClx1c2VwYWNrYWdlW3V0Zjhde2lucHV0ZW5jfSAlIGFsbG93IHV0Zi04IGlucHV0Clx1c2VwYWNrYWdlW1QxXXtmb250ZW5jfSAgICAlIHVzZSA4LWJpdCBUMSBmb250cwpcdXNlcGFja2FnZXtoeXBlcnJlZn0gICAgICAgJSBoeXBlcmxpbmtzClx1c2VwYWNrYWdle3VybH0gICAgICAgICAgICAlIHNpbXBsZSBVUkwgdHlwZXNldHRpbmcKXHVzZXBhY2thZ2V7Ym9va3RhYnN9ICAgICAgICUgcHJvZmVzc2lvbmFsLXF1YWxpdHkgdGFibGVzClx1c2VwYWNrYWdle2Ftc2ZvbnRzfSAgICAgICAlIGJsYWNrYm9hcmQgbWF0aCBzeW1ib2xzClx1c2VwYWNrYWdle25pY2VmcmFjfSAgICAgICAlIGNvbXBhY3Qgc3ltYm9scyBmb3IgMS8yLCBldGMuClx1c2VwYWNrYWdle21pY3JvdHlwZX0gICAgICAlIG1pY3JvdHlwb2dyYXBoeQpcdXNlcGFja2FnZXt4Y29sb3J9ICAgICAgICAgJSBjb2xvcnMKXHVzZXBhY2thZ2V7Z3JhcGhpY3h9Clx1c2VwYWNrYWdle2xvbmd0YWJsZX0gJSBBZGQgc3VwcG9ydCBmb3IgUGFuZG9jJ3MgbG9uZ3RhYmxlIGlmIG5lZWRlZApcdXNlcGFja2FnZXthcnJheX0gICAgICUgRm9yIHRhYmxlIGFsaWdubWVudCBpbXByb3ZlbWVudHMKXHVzZXBhY2thZ2V7YW1zbWF0aH0KXHVzZXBhY2thZ2V7dGV4dGNvbXB9ClxzZXRsZW5ndGh7XExUY2Fwd2lkdGh9e1x0ZXh0d2lkdGh9ICUgVG8gbWFrZSBjYXB0aW9ucyBmaXQgd2l0aGluIHBhZ2Ugd2lkdGgKClxtYWtlYXRsZXR0ZXIKXG5ld3NhdmVib3hccGFuZG9jQGJveApcbmV3Y29tbWFuZCpccGFuZG9jYm91bmRlZFsxXXslIHNjYWxlcyBpbWFnZSB0byBmaXQgaW4gdGV4dCBoZWlnaHQvd2lkdGgKICBcc2JveFxwYW5kb2NAYm94eyMxfSUKICBcR3NjYWxlQGRpdlxAdGVtcGF7XHRleHRoZWlnaHR9e1xkaW1leHByXGh0XHBhbmRvY0Bib3grXGRwXHBhbmRvY0Bib3hccmVsYXh9JQogIFxHc2NhbGVAZGl2XEB0ZW1wYntcbGluZXdpZHRofXtcd2RccGFuZG9jQGJveH0lCiAgXGlmZGltXEB0ZW1wYlxwQDxcQHRlbXBhXHBAXGxldFxAdGVtcGFcQHRlbXBiXGZpJSBzZWxlY3QgdGhlIHNtYWxsZXIgb2YgYm90aAogIFxpZmRpbVxAdGVtcGFccEA8XHBAXHNjYWxlYm94e1xAdGVtcGF9e1x1c2Vib3hccGFuZG9jQGJveH0lCiAgXGVsc2VcdXNlYm94e1xwYW5kb2NAYm94fSUKICBcZmklCn0KXG1ha2VhdG90aGVyClxtYWtlYXRsZXR0ZXIKXGRlZlxtYXh3aWR0aHtcaWZkaW1cR2luQG5hdEB3aWR0aD5cbGluZXdpZHRoXGxpbmV3aWR0aFxlbHNlXEdpbkBuYXRAd2lkdGhcZml9ClxkZWZcbWF4aGVpZ2h0e1xpZmRpbVxHaW5AbmF0QGhlaWdodD5cdGV4dGhlaWdodFx0ZXh0aGVpZ2h0XGVsc2VcR2luQG5hdEBoZWlnaHRcZml9ClxtYWtlYXRvdGhlcgolIFNjYWxlIGltYWdlcyBpZiBuZWNlc3NhcnksIHNvIHRoYXQgdGhleSB3aWxsIG5vdCBvdmVyZmxvdyB0aGUgcGFnZQolIG1hcmdpbnMgYnkgZGVmYXVsdCwgYW5kIGl0IGlzIHN0aWxsIHBvc3NpYmxlIHRvIG92ZXJ3cml0ZSB0aGUgZGVmYXVsdHMKJSB1c2luZyBleHBsaWNpdCBvcHRpb25zIGluIFxpbmNsdWRlZ3JhcGhpY3Nbd2lkdGgsIGhlaWdodCwgLi4uXXt9ClxzZXRrZXlze0dpbn17d2lkdGg9XG1heHdpZHRoLGhlaWdodD1cbWF4aGVpZ2h0LGtlZXBhc3BlY3RyYXRpb30KJSBTZXQgZGVmYXVsdCBmaWd1cmUgcGxhY2VtZW50IHRvIGh0YnAKXG1ha2VhdGxldHRlcgpcZGVmXGZwc0BmaWd1cmV7aHRicH0KXG1ha2VhdG90aGVyCgokaWYoY3NsLXJlZnMpJAolIGRlZmluaXRpb25zIGZvciBjaXRlcHJvYyBjaXRhdGlvbnMKXE5ld0RvY3VtZW50Q29tbWFuZFxjaXRlcHJvY3RleHR7fXt9ClxOZXdEb2N1bWVudENvbW1hbmRcY2l0ZXByb2N7bW19eyUKXGJlZ2luZ3JvdXBcZGVmXGNpdGVwcm9jdGV4dHsjMn1cY2l0ZXsjMX1cZW5kZ3JvdXB9ClxtYWtlYXRsZXR0ZXIKJSBhbGxvdyBjaXRhdGlvbnMgdG8gYnJlYWsgYWNyb3NzIGxpbmVzClxsZXRcQGNpdGVAb2ZtdFxAZmlyc3RvZm9uZQolIGF2b2lkIGJyYWNrZXRzIGFyb3VuZCB0ZXh0IGZvciBcY2l0ZToKXGRlZlxAYmlibGFiZWwjMXt9ClxkZWZcQGNpdGUjMSMye3sjMVxpZkB0ZW1wc3dhICwgIzJcZml9fQpcbWFrZWF0b3RoZXIKXG5ld2xlbmd0aHtcY3NsaGFuZ2luZGVudH0KXHNldGxlbmd0aHtcY3NsaGFuZ2luZGVudH17MS41ZW19ClxuZXdsZW5ndGh7XGNzbGxhYmVsd2lkdGh9ClxzZXRsZW5ndGh7XGNzbGxhYmVsd2lkdGh9ezNlbX0KXG5ld2Vudmlyb25tZW50e0NTTFJlZmVyZW5jZXN9WzJdICUgIzEgaGFuZ2luZy1pbmRlbnQsICMyIGVudHJ5LXNwYWNpbmcKe1xiZWdpbntsaXN0fXt9eyUKCVxzZXRsZW5ndGh7XGl0ZW1pbmRlbnR9ezBwdH0KCVxzZXRsZW5ndGh7XGxlZnRtYXJnaW59ezBwdH0KCVxzZXRsZW5ndGh7XHBhcnNlcH17MHB0fQoJJSB0dXJuIG9uIGhhbmdpbmcgaW5kZW50IGlmIHBhcmFtIDEgaXMgMQoJXGlmb2RkICMxCglcc2V0bGVuZ3Roe1xsZWZ0bWFyZ2lufXtcY3NsaGFuZ2luZGVudH0KCVxzZXRsZW5ndGh7XGl0ZW1pbmRlbnR9ey0xXGNzbGhhbmdpbmRlbnR9CglcZmkKCSUgc2V0IGVudHJ5IHNwYWNpbmcKCVxzZXRsZW5ndGh7XGl0ZW1zZXB9eyMyXGJhc2VsaW5lc2tpcH19fQp7XGVuZHtsaXN0fX0KXHVzZXBhY2thZ2V7Y2FsY30KXG5ld2NvbW1hbmR7XENTTEJsb2NrfVsxXXtcaGZpbGxcYnJlYWtccGFyYm94W3Rde1xsaW5ld2lkdGh9e1xzdHJ1dFxpZ25vcmVzcGFjZXMjMVxzdHJ1dH19ClxuZXdjb21tYW5ke1xDU0xMZWZ0TWFyZ2lufVsxXXtccGFyYm94W3Rde1xjc2xsYWJlbHdpZHRofXtcc3RydXQjMVxzdHJ1dH19ClxuZXdjb21tYW5ke1xDU0xSaWdodElubGluZX1bMV17XHBhcmJveFt0XXtcbGluZXdpZHRoIC0gXGNzbGxhYmVsd2lkdGh9e1xzdHJ1dCMxXHN0cnV0fX0KXG5ld2NvbW1hbmR7XENTTEluZGVudH1bMV17XGhzcGFjZXtcY3NsaGFuZ2luZGVudH0jMX0KJGVuZGlmJApccHJvdmlkZWNvbW1hbmR7XHRpZ2h0bGlzdH17JQogIFxzZXRsZW5ndGh7XGl0ZW1zZXB9ezBwdH1cc2V0bGVuZ3Roe1xwYXJza2lwfXswcHR9fQpcdGl0bGV7JHRpdGxlJH0KCgolIEl0ZXJhdGUgdGhyb3VnaCB0aGUgYXV0aG9ycyBleGNlcHQgbGFzdCB0byBhZGQgXEFuZC4gCgpcYXV0aG9yeyUKJGZvcihhdXRob3JzL2FsbGJ1dGxhc3QpJAogICRhdXRob3JzLm5hbWUkXFwkYXV0aG9ycy5hZmZpbGlhdGlvbiRcXCRhdXRob3JzLmluc3RpdHV0aW9uJFxcJGF1dGhvcnMuZW1haWwkXFwkYXV0aG9ycy5hZGRyZXNzJCBcQW5kCiRlbmRmb3IkCiRmb3IoYXV0aG9ycy9sYXN0KSQKICAkYXV0aG9ycy5uYW1lJFxcJGF1dGhvcnMuYWZmaWxpYXRpb24kXFwkYXV0aG9ycy5pbnN0aXR1dGlvbiRcXCRhdXRob3JzLmVtYWlsJFxcJGF1dGhvcnMuYWRkcmVzcyQKJGVuZGZvciQKfQoKJSBcYXV0aG9yeyUKJSAgIERhdmlkIFMufkhpcHBvY2FtcHVzIFxcCiUgICBEZXBhcnRtZW50IG9mIENvbXB1dGVyIFNjaWVuY2VcXAolICAgQ3JhbmJlcnJ5LUxlbW9uIFVuaXZlcnNpdHlcXAolICAgUGl0dHNidXJnaCwgUEEgMTUyMTMgXFwKJSAgIFx0ZXh0dHR7aGlwcG9AY3MuY3JhbmJlcnJ5LWxlbW9uLmVkdX0gXFwKJSAgICUgZXhhbXBsZXMgb2YgbW9yZSBhdXRob3JzCiUgICAlIFxBbmQKJSAgICUgQ29hdXRob3IgXFwKJSAgICUgQWZmaWxpYXRpb24gXFwKJSAgICUgQWRkcmVzcyBcXAolICAgJSBcdGV4dHR0e2VtYWlsfSBcXAolICAgJSBcQU5ECiUgICAlIENvYXV0aG9yIFxcCiUgICAlIEFmZmlsaWF0aW9uIFxcCiUgICAlIEFkZHJlc3MgXFwKJSAgICUgXHRleHR0dHtlbWFpbH0gXFwKJSAgICUgXEFuZAolICAgJSBDb2F1dGhvciBcXAolICAgJSBBZmZpbGlhdGlvbiBcXAolICAgJSBBZGRyZXNzIFxcCiUgICAlIFx0ZXh0dHR7ZW1haWx9IFxcCiUgICAlIFxBbmQKJSAgICUgQ29hdXRob3IgXFwKJSAgICUgQWZmaWxpYXRpb24gXFwKJSAgICUgQWRkcmVzcyBcXAolICAgJSBcdGV4dHR0e2VtYWlsfSBcXAolIH0KCgpcYmVnaW57ZG9jdW1lbnR9CgoKXG1ha2V0aXRsZQoKClxiZWdpbnthYnN0cmFjdH0KICAkaWYoYWJzdHJhY3QpJAogICRhYnN0cmFjdCQKICAkZWxzZSQKICBBZGQgeW91ciBhYnN0cmFjdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHlvdXIgbWFya2Rvd24gZmlsZSBsaWtlIHRoaXMgCiAgXGJlZ2lue3ZlcmJhdGltfQogIC0tLSAKICB0aXRsZTogIllvdXIgVGl0bGUiIAogIGFic3RyYWN0OiAieW91ciBhYnN0cmFjdCBoZXJlIgogIGF1dGhvcnM6CiAgLSBuYW1lOiBMZW9uYXJkbyBWLiBDYXN0b3JpbmEKICAgIGFmZmlsaWF0aW9uOiBTY2hvb2wgb2YgSW5mb3JtYXRpY3MKICAgIGluc3RpdHV0aW9uOiBVbml2ZXJzaXR5IG9mIEVkaW5idXJnaAogICAgZW1haWw6IGp1c3RhbmVtYWlsQGRvbWFpbi5leHQKICAgIGFkZHJlc3M6IEVkaW5idXJnaAogIC0gbmFtZTogQ29hdXRob3IKICAgIGFmZmlsaWF0aW9uOiBBZmZpbGlhdGlvbgogICAgaW5zdGl0dXRpb246IEluc3RpdHV0aW9uCiAgICBlbWFpbDogY29hdXRob3JAZXhhbXBsZS5jb20KICAgIGFkZHJlc3M6IEFkZHJlc3MKICAtLS0KICBcZW5ke3ZlcmJhdGltfQogIFRoaXMgaXMgY2FsbGVkIFlBTUwgZnJvbnRtYXR0ZXIuIElmIHlvdSBzZXQgeW91ciBhYnN0cmFjdCBjb3JyZWN0bHkgeW91IHNob3VsZCBub3Qgc2VlIHRoaXMgbWVzc2FnZS4KICAkZW5kaWYkClxlbmR7YWJzdHJhY3R9CgoKJGJvZHkkCgolJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUKCgpcZW5ke2RvY3VtZW50fQo="),e=>e.charCodeAt(0)),pa=Object.freeze(Object.defineProperty({__proto__:null,default:ha},Symbol.toStringTag,{value:"Module"})),Pl=(e,l)=>[e,Object.entries(l).map(([t,n])=>[t.substring(e.length+3),n.default])],Dl=[Pl("lua",Object.assign({"../lua/citefilter.lua":na,"../lua/markdown+hugo.lua":ia,"../lua/markdown.lua":oa,"../lua/math_block.lua":ra,"../lua/pdf.lua":ga,"../lua/polyfill.lua":ba,"../lua/url.lua":ua})),Pl("textemplate",Object.assign({"../textemplate/dissertation.tex":Ia,"../textemplate/neurips.sty":Wa,"../textemplate/neurips.tex":pa}))];class Xa extends ue.Plugin{constructor(l,t){super(l,t),this.lang=Cn.current,this.saveSettings=ue.debounce(this.saveSettings.bind(this),1e3,!0)}async onload(){await this.releaseResources(),await this.loadSettings();const{lang:l}=this;this.addSettingTab(new ta(this)),this.addCommand({id:"obsidian-enhancing-export:export",name:l.exportToOo,icon:"document",callback:()=>{const t=this.app.workspace.getActiveFile();t?Ut.show(this,t):new ue.Notice(l.pleaseOpenFile,2e3)}}),this.addCommand({id:"obsidian-enhancing-export:export-with-previous",name:l.exportWithPrevious,icon:"document",callback:async()=>{const t=this.app.workspace.getActiveFile();if(t){if(this.settings.lastExportType&&this.settings.lastExportDirectory){const n=this.settings.items.find(c=>c.name===this.settings.lastExportType);if(n){await Yn(this,t,Ze(this.settings.lastExportDirectory),void 0,n);return}}Ut.show(this,t)}else new ue.Notice(l.pleaseOpenFile,2e3)}}),this.registerEvent(this.app.workspace.on("file-menu",(t,n)=>{n instanceof ue.TFile&&t.addItem(c=>{c.setTitle(l.exportToOo).setIcon("document").onClick(()=>{Ut.show(this,n)})}).addSeparator()}))}async resetSettings(){this.settings={...JSON.parse(JSON.stringify(Me)),lastExportDirectory:this.settings.lastExportDirectory},await this.saveSettings()}async loadSettings(){const l=Object.assign({},Me,await this.loadData());l.items.forEach(t=>{Object.assign(t,Object.assign({},Me.items.find(n=>n.name===t.name)??{},t))});for(const t of Me.items)l.items.every(n=>n.name!==t.name)&&l.items.push(t);this.settings=l}async saveSettings(){console.log("[obsidian-enhancing-export] saveSettings",this.settings);const l=JSON.parse(JSON.stringify(this.settings));if(l.items.forEach(t=>{const n=Me.items.find(c=>c.name===t.name);n&&Object.keys(t).forEach(c=>{c!=="name"&&JSON.stringify(t[c])===JSON.stringify(n[c])&&delete t[c]})}),l.env)for(const t of Object.keys(l.env)){const n=l.env[t];if(JSON.stringify(n)===JSON.stringify(_e[t])){delete l.env[t];continue}const c=Ze(_e,t);for(const[i,o]of Object.entries(n))o===c[i]&&delete n[i];Object.keys(n).length===0&&delete l.env[t]}await this.saveData(l)}async releaseResources(){const{adapter:l}=this.app.vault;for(const[t,n]of Dl){const c=ce.join(this.manifest.dir,t);await l.mkdir(c);for(const[i,o]of n){const s=ce.join(c,i);await l.writeBinary(s,o)}}Dl.length=0}}exports.default=Xa;
/* nosourcemap */
.obsidian/plugins/obsidian-enhancing-export/manifest.json
New file
@@ -0,0 +1,10 @@
{
  "id": "obsidian-enhancing-export",
  "name": "Enhancing Export",
  "version": "1.10.11",
  "minAppVersion": "1.6.3",
  "description": "This is a enhancing export plugin for Obsidian. It allows to export to formats like Html, DOCX, ePub and PDF or Markdown(Hugo) etc.",
  "author": "YISH",
  "authorUrl": "https://github.com/mokeyish",
  "isDesktopOnly": true
}
.obsidian/plugins/obsidian-enhancing-export/styles.css
New file
@@ -0,0 +1 @@
.setting-item.ex-setting-item{border-top:unset;padding-top:0}*[hidden]{display:none}
.obsidian/plugins/obsidian-enhancing-export/textemplate/dissertation.tex
New file
@@ -0,0 +1,1210 @@
%%
% Copyright (c) 2017 - 2023, Pascal Wagler;
% Copyright (c) 2014 - 2023, John MacFarlane
%
% All rights reserved.
%
% Redistribution and use in source and binary forms, with or without
% modification, are permitted provided that the following conditions
% are met:
%
% - Redistributions of source code must retain the above copyright
% notice, this list of conditions and the following disclaimer.
%
% - Redistributions in binary form must reproduce the above copyright
% notice, this list of conditions and the following disclaimer in the
% documentation and/or other materials provided with the distribution.
%
% - Neither the name of John MacFarlane nor the names of other
% contributors may be used to endorse or promote products derived
% from this software without specific prior written permission.
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
% "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
% LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
% FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
% COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
% INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
% BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
% LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
% ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
% POSSIBILITY OF SUCH DAMAGE.
%%
%%
% This is the Eisvogel pandoc LaTeX template.
%
% For usage information and examples visit the official GitHub page:
% https://github.com/Wandmalfarbe/pandoc-latex-template
%%
% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref}
\PassOptionsToPackage{hyphens}{url}
\PassOptionsToPackage{dvipsnames,svgnames,x11names,table}{xcolor}
$if(CJKmainfont)$
\PassOptionsToPackage{space}{xeCJK}
\usepackage{datetime}
$endif$
%
\documentclass[
$if(fontsize)$
  $fontsize$,
$endif$
$if(papersize)$
  $papersize$paper,
$else$
  paper=a4,
$endif$
$if(beamer)$
  ignorenonframetext,
$if(handout)$
  handout,
$endif$
$if(aspectratio)$
  aspectratio=$aspectratio$,
$endif$
$endif$
$for(classoption)$
  $classoption$$sep$,
$endfor$
  ,captions=tableheading
]{$if(beamer)$$documentclass$$else$$if(book)$scrbook$else$scrartcl$endif$$endif$}
$if(beamer)$
$if(background-image)$
\usebackgroundtemplate{%
  \includegraphics[width=\paperwidth]{$background-image$}%
}
% In beamer background-image does not work well when other images are used, so this is the workaround
\pgfdeclareimage[width=\paperwidth,height=\paperheight]{background}{$background-image$}
\usebackgroundtemplate{\pgfuseimage{background}}
$endif$
\usepackage{pgfpages}
\setbeamertemplate{caption}[numbered]
\setbeamertemplate{caption label separator}{: }
\setbeamercolor{caption name}{fg=normal text.fg}
\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$
$for(beameroption)$
\setbeameroption{$beameroption$}
$endfor$
% Prevent slide breaks in the middle of a paragraph
\widowpenalties 1 10000
\raggedbottom
$if(section-titles)$
\setbeamertemplate{part page}{
  \centering
  \begin{beamercolorbox}[sep=16pt,center]{part title}
    \usebeamerfont{part title}\insertpart\par
  \end{beamercolorbox}
}
\setbeamertemplate{section page}{
  \centering
  \begin{beamercolorbox}[sep=12pt,center]{part title}
    \usebeamerfont{section title}\insertsection\par
  \end{beamercolorbox}
}
\setbeamertemplate{subsection page}{
  \centering
  \begin{beamercolorbox}[sep=8pt,center]{part title}
    \usebeamerfont{subsection title}\insertsubsection\par
  \end{beamercolorbox}
}
\AtBeginPart{
  \frame{\partpage}
}
\AtBeginSection{
  \ifbibliography
  \else
    \frame{\sectionpage}
  \fi
}
\AtBeginSubsection{
  \frame{\subsectionpage}
}
$endif$
$endif$
$if(beamerarticle)$
\usepackage{beamerarticle} % needs to be loaded first
$endif$
\usepackage{amsmath,amssymb}
$if(linestretch)$
\usepackage{setspace}
$else$
% Use setspace anyway because we change the default line spacing.
% The spacing is changed early to affect the titlepage and the TOC.
\usepackage{setspace}
\setstretch{1.2}
$endif$
\usepackage{iftex}
\ifPDFTeX
  \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
$if(mathspec)$
  \ifXeTeX
    \usepackage{mathspec} % this also loads fontspec
  \else
    \usepackage{unicode-math} % this also loads fontspec
  \fi
$else$
  \usepackage{unicode-math} % this also loads fontspec
$endif$
  \defaultfontfeatures{Scale=MatchLowercase}$-- must come before Beamer theme
  \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
$if(fontfamily)$
$else$
$-- Set default font before Beamer theme so the theme can override it
\usepackage{lmodern}
$endif$
$-- Set Beamer theme before user font settings so they can override theme
$if(beamer)$
$if(theme)$
\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$}
$endif$
$if(colortheme)$
\usecolortheme{$colortheme$}
$endif$
$if(fonttheme)$
\usefonttheme{$fonttheme$}
$endif$
$if(mainfont)$
\usefonttheme{serif} % use mainfont rather than sansfont for slide text
$endif$
$if(innertheme)$
\useinnertheme{$innertheme$}
$endif$
$if(outertheme)$
\useoutertheme{$outertheme$}
$endif$
$endif$
$-- User font settings (must come after default font and Beamer theme)
$if(fontfamily)$
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
$endif$
\ifPDFTeX\else
  % xetex/luatex font selection
$if(mainfont)$
  \setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
$endif$
$if(sansfont)$
  \setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
$endif$
$if(monofont)$
  \setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$}
$endif$
$for(fontfamilies)$
  \newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$}
$endfor$
$if(mathfont)$
$if(mathspec)$
  \ifXeTeX
    \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
  \else
    \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
  \fi
$else$
  \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
$endif$
$endif$
$if(CJKmainfont)$
  \ifXeTeX
    \usepackage{xeCJK}
    \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
    $if(CJKsansfont)$
      \setCJKsansfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKsansfont$}
    $endif$
    $if(CJKmonofont)$
      \setCJKmonofont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmonofont$}
    $endif$
  \fi
$endif$
$if(luatexjapresetoptions)$
  \ifLuaTeX
    \usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
  \fi
$endif$
$if(CJKmainfont)$
  \ifLuaTeX
    \usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
    \setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
  \fi
$endif$
\fi
$if(zero-width-non-joiner)$
%% Support for zero-width non-joiner characters.
\makeatletter
\def\zerowidthnonjoiner{%
  % Prevent ligatures and adjust kerning, but still support hyphenating.
  \texorpdfstring{%
    \TextOrMath{\nobreak\discretionary{-}{}{\kern.03em}%
      \ifvmode\else\nobreak\hskip\z@skip\fi}{}%
  }{}%
}
\makeatother
\ifPDFTeX
  \DeclareUnicodeCharacter{200C}{\zerowidthnonjoiner}
\else
  \catcode`^^^^200c=\active
  \protected\def ^^^^200c{\zerowidthnonjoiner}
\fi
%% End of ZWNJ support
$endif$
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
  \usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
  \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
$if(indent)$
$else$
\usepackage{pgfpages}
\usepackage[export]{adjustbox}
\usepackage{graphicx}
\usepackage{ragged2e}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
  \IfFileExists{parskip.sty}{%
    \usepackage{parskip}
  }{% else
    \setlength{\parindent}{0pt}
    \setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
  \KOMAoptions{parskip=half}}
\makeatother
$endif$
$if(verbatim-in-note)$
\usepackage{fancyvrb}
$endif$
\usepackage{xcolor}
\definecolor{default-linkcolor}{HTML}{A50000}
\definecolor{default-filecolor}{HTML}{A50000}
\definecolor{default-citecolor}{HTML}{4077C0}
\definecolor{default-urlcolor}{HTML}{4077C0}
$if(footnotes-pretty)$
% load footmisc in order to customize footnotes (footmisc has to be loaded before hyperref, cf. https://tex.stackexchange.com/a/169124/144087)
\usepackage[hang,flushmargin,bottom,multiple]{footmisc}
\setlength{\footnotemargin}{0.8em} % set space between footnote nr and text
\setlength{\footnotesep}{\baselineskip} % set space between multiple footnotes
\setlength{\skip\footins}{0.3cm} % set space between page content and footnote
\setlength{\footskip}{0.9cm} % set space between footnote and page bottom
$endif$
$if(geometry)$
$if(beamer)$
\geometry{$for(geometry)$$geometry$$sep$,$endfor$}
$else$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
$else$
$if(beamer)$
$else$
\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering,$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
$endif$
$if(titlepage-logo)$
\usepackage[export]{adjustbox}
\usepackage{graphicx}
$endif$
$if(beamer)$
\newif\ifbibliography
$endif$
$if(listings)$
\usepackage{listings}
\newcommand{\passthrough}[1]{#1}
\lstset{defaultdialect=[5.3]Lua}
\lstset{defaultdialect=[x86masm]Assembler}
$endif$
$if(listings-no-page-break)$
\usepackage{etoolbox}
\BeforeBeginEnvironment{lstlisting}{\par\noindent\begin{minipage}{\linewidth}}
\AfterEndEnvironment{lstlisting}{\end{minipage}\par\addvspace{\topskip}}
$endif$
$if(lhs)$
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
$endif$
$if(highlighting-macros)$
$highlighting-macros$
% Workaround/bugfix from jannick0.
% See https://github.com/jgm/pandoc/issues/4302#issuecomment-360669013)
% or https://github.com/Wandmalfarbe/pandoc-latex-template/issues/2
%
% Redefine the verbatim environment 'Highlighting' to break long lines (with
% the help of fvextra). Redefinition is necessary because it is unlikely that
% pandoc includes fvextra in the default template.
\usepackage{fvextra}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,fontsize=$if(code-block-font-size)$$code-block-font-size$$else$\small$endif$,commandchars=\\\{\}}
$endif$
$if(tables)$
\usepackage{longtable,booktabs,array}
$if(multirow)$
\usepackage{multirow}
$endif$
\usepackage{calc} % for calculating minipage widths
$if(beamer)$
\usepackage{caption}
% Make caption package work with longtable
\makeatletter
\def\fnum@table{\tablename~\thetable}
\makeatother
$else$
% Correct order of tables after \paragraph or \subparagraph
\usepackage{etoolbox}
\makeatletter
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
\makeatother
% Allow footnotes in longtable head/foot
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
\makesavenoteenv{longtable}
$endif$
$endif$
% add backlinks to footnote references, cf. https://tex.stackexchange.com/questions/302266/make-footnote-clickable-both-ways
$if(footnotes-disable-backlinks)$
$else$
\usepackage{footnotebackref}
$endif$
$if(graphics)$
\usepackage{graphicx}
\makeatletter
\newsavebox\pandoc@box
\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
  \sbox\pandoc@box{#1}%
  \Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
  \Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
  \ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
  \ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
  \else\usebox{\pandoc@box}%
  \fi%
}
% Set default figure placement to htbp
% Make use of float-package and set default placement for figures to H.
% The option H means 'PUT IT HERE' (as  opposed to the standard h option which means 'You may put it here if you like').
\usepackage{float}
\floatplacement{figure}{$if(float-placement-figure)$$float-placement-figure$$else$H$endif$}
\makeatother
$endif$
$if(svg)$
\usepackage{svg}
$endif$
$if(strikeout)$
$-- also used for underline
\ifLuaTeX
  \usepackage{luacolor}
  \usepackage[soul]{lua-ul}
\else
\usepackage{soul}
$if(CJKmainfont)$
  \ifXeTeX
    % soul's \st doesn't work for CJK:
    \usepackage{xeCJKfntef}
    \renewcommand{\st}[1]{\sout{#1}}
  \fi
$endif$
\fi
$endif$
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
$if(numbersections)$
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
$else$
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
$endif$
$if(subfigure)$
\usepackage{subcaption}
$endif$
$if(beamer)$
$else$
$if(block-headings)$
% Make \paragraph and \subparagraph free-standing
\ifx\paragraph\undefined\else
  \let\oldparagraph\paragraph
  \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
  \let\oldsubparagraph\subparagraph
  \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
\fi
$endif$
$endif$
$if(pagestyle)$
\pagestyle{$pagestyle$}
$endif$
$if(csl-refs)$
% definitions for citeproc citations
\NewDocumentCommand\citeproctext{}{}
\NewDocumentCommand\citeproc{mm}{%
  \begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
\makeatletter
 % allow citations to break across lines
 \let\@cite@ofmt\@firstofone
 % avoid brackets around text for \cite:
 \def\@biblabel#1{}
 \def\@cite#1#2{{#1\if@tempswa , #2\fi}}
\makeatother
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
  {\begin{list}{}{%
   \setlength{\itemindent}{0pt}
   \setlength{\leftmargin}{0pt}
   \setlength{\parsep}{0pt}
   % turn on hanging indent if param 1 is 1
   \ifodd #1
    \setlength{\leftmargin}{\cslhangindent}
    \setlength{\itemindent}{-1\cslhangindent}
   \fi
   % set entry spacing
   \setlength{\itemsep}{#2\baselineskip}}}
  {\end{list}}
\usepackage{calc}
\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
$endif$
$if(lang)$
\ifLuaTeX
\usepackage[bidi=basic]{babel}
\else
\usepackage[bidi=default]{babel}
\fi
$if(babel-lang)$
\babelprovide[main,import]{$babel-lang$}
$if(mainfont)$
\ifPDFTeX
\else
\babelfont{rm}[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
\fi
$endif$
$endif$
$for(babel-otherlangs)$
\babelprovide[import]{$babel-otherlangs$}
$endfor$
$for(babelfonts/pairs)$
\babelfont[$babelfonts.key$]{rm}{$babelfonts.value$}
$endfor$
% get rid of language-specific shorthands (see #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}
$endif$
$for(header-includes)$
$header-includes$
$endfor$
\ifLuaTeX
  \usepackage{selnolig}  % disable illegal ligatures
\fi
$if(dir)$
\ifPDFTeX
  \TeXXeTstate=1
  \newcommand{\RL}[1]{\beginR #1\endR}
  \newcommand{\LR}[1]{\beginL #1\endL}
  \newenvironment{RTL}{\beginR}{\endR}
  \newenvironment{LTR}{\beginL}{\endL}
\fi
$endif$
$if(natbib)$
\usepackage[$natbiboptions$]{natbib}
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
$endif$
$if(biblatex)$
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
$for(bibliography)$
\addbibresource{$bibliography$}
$endfor$
$endif$
$if(nocite-ids)$
\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
$endif$
$if(csquotes)$
\usepackage{csquotes}
$endif$
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\urlstyle{$if(urlstyle)$$urlstyle$$else$same$endif$}
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$
$if(verbatim-in-note)$
\VerbatimFootnotes % allow verbatim text in footnotes
$endif$
\hypersetup{
$if(title-meta)$
  pdftitle={$title-meta$},
$endif$
$if(author-meta)$
  pdfauthor={$author-meta$},
$endif$
$if(lang)$
  pdflang={$lang$},
$endif$
$if(subject)$
  pdfsubject={$subject$},
$endif$
$if(keywords)$
  pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
$endif$
$if(colorlinks)$
  colorlinks=true,
  linkcolor={$if(linkcolor)$$linkcolor$$else$default-linkcolor$endif$},
  filecolor={$if(filecolor)$$filecolor$$else$default-filecolor$endif$},
  citecolor={$if(citecolor)$$citecolor$$else$default-citecolor$endif$},
  urlcolor={$if(urlcolor)$$urlcolor$$else$default-urlcolor$endif$},
$else$
  hidelinks,
$endif$
  breaklinks=true,
  pdfcreator={LaTeX via pandoc with the Eisvogel template}}
$if(title)$
\title{$if(title)$$title$$else$Set up Title in Frontmatter (see abstract)$endif$}
$endif$
$if(subtitle)$
$if(beamer)$
$else$
\usepackage{etoolbox}
\makeatletter
\providecommand{\subtitle}[1]{% add subtitle to \maketitle
  \apptocmd{\@title}{\par {\large #1 \par}}{}{}
}
\makeatother
$endif$
\subtitle{$subtitle$}
$endif$
\author{$for(author)$$author$$sep$ \and $endfor$}
$if(date)$
  \date{$date$}
$else$
  \date{\today}
$endif$
$if(beamer)$
$if(institute)$
\institute{$for(institute)$$institute$$sep$ \and $endfor$}
$endif$
$if(titlegraphic)$
\titlegraphic{\includegraphics{$titlegraphic$}}
$endif$
$if(logo)$
\logo{\includegraphics{$logo$}}
$endif$
$endif$
%%
%% added
%%
$if(page-background)$
\usepackage[pages=all]{background}
$endif$
%
% for the background color of the title page
%
$if(notitlepage)$
$else$
\usepackage{pagecolor}
\usepackage{afterpage}
$if(titlepage-background)$
\usepackage{tikz}
$endif$
$if(geometry)$
$else$
\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering]{geometry}
$endif$
$endif$
%
% break urls
%
\PassOptionsToPackage{hyphens}{url}
%
% When using babel or polyglossia with biblatex, loading csquotes is recommended
% to ensure that quoted texts are typeset according to the rules of your main language.
%
\usepackage{csquotes}
%
% captions
%
\definecolor{caption-color}{HTML}{777777}
$if(beamer)$
$else$
\usepackage[font={stretch=1.2}, textfont={color=caption-color}, position=top, skip=4mm, labelfont=bf, singlelinecheck=false, justification=$if(caption-justification)$$caption-justification$$else$justified$endif$]{caption}
\setcapindent{0em}
$endif$
%
% blockquote
%
\definecolor{blockquote-border}{RGB}{221,221,221}
\definecolor{blockquote-text}{RGB}{119,119,119}
\usepackage{mdframed}
\newmdenv[rightline=false,bottomline=false,topline=false,linewidth=3pt,linecolor=blockquote-border,skipabove=\parskip]{customblockquote}
\renewenvironment{quote}{\begin{customblockquote}\list{}{\rightmargin=0em\leftmargin=0em}%
\item\relax\color{blockquote-text}\ignorespaces}{\unskip\unskip\endlist\end{customblockquote}}
%
% Source Sans Pro as the de­fault font fam­ily
% Source Code Pro for monospace text
%
% 'default' option sets the default
% font family to Source Sans Pro, not \sfdefault.
%
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  $if(fontfamily)$
  $else$
  \usepackage[default]{sourcesanspro}
  \usepackage{sourcecodepro}
  $endif$
\else % if not pdftex
  $if(mainfont)$
  $else$
  \usepackage[default]{sourcesanspro}
  \usepackage{sourcecodepro}
  % XeLaTeX specific adjustments for straight quotes: https://tex.stackexchange.com/a/354887
  % This issue is already fixed (see https://github.com/silkeh/latex-sourcecodepro/pull/5) but the
  % fix is still unreleased.
  % TODO: Remove this workaround when the new version of sourcecodepro is released on CTAN.
  \ifxetex
    \makeatletter
    \defaultfontfeatures[\ttfamily]
      { Numbers   = \sourcecodepro@figurestyle,
        Scale     = \SourceCodePro@scale,
        Extension = .otf }
    \setmonofont
      [ UprightFont    = *-\sourcecodepro@regstyle,
        ItalicFont     = *-\sourcecodepro@regstyle It,
        BoldFont       = *-\sourcecodepro@boldstyle,
        BoldItalicFont = *-\sourcecodepro@boldstyle It ]
      {SourceCodePro}
    \makeatother
  \fi
  $endif$
\fi
%
% heading color
%
\definecolor{heading-color}{RGB}{40,40,40}
$if(beamer)$
$else$
\addtokomafont{section}{\color{heading-color}}
$endif$
% When using the classes report, scrreprt, book,
% scrbook or memoir, uncomment the following line.
%\addtokomafont{chapter}{\color{heading-color}}
%
% variables for title, author and date
%
$if(beamer)$
$else$
\usepackage{titling}
\title{$title$}
\author{$for(author)$$author$$sep$, $endfor$}
\date{$date$}
$endif$
%
% tables
%
$if(tables)$
\definecolor{table-row-color}{HTML}{F5F5F5}
\definecolor{table-rule-color}{HTML}{999999}
%\arrayrulecolor{black!40}
\arrayrulecolor{table-rule-color}     % color of \toprule, \midrule, \bottomrule
\setlength\heavyrulewidth{0.3ex}      % thickness of \toprule, \bottomrule
\renewcommand{\arraystretch}{1.3}     % spacing (padding)
$if(table-use-row-colors)$
% TODO: This doesn't work anymore. I don't know why.
% Reset rownum counter so that each table
% starts with the same row colors.
% https://tex.stackexchange.com/questions/170637/restarting-rowcolors
%
% Unfortunately the colored cells extend beyond the edge of the
% table because pandoc uses @-expressions (@{}) like so:
%
% \begin{longtable}[]{@{}ll@{}}
% \end{longtable}
%
% https://en.wikibooks.org/wiki/LaTeX/Tables#.40-expressions
\usepackage{etoolbox}
\AtBeginEnvironment{longtable}{\rowcolors{2}{}{table-row-color!100}}
\preto{\toprule}{\hiderowcolors}{}{}
\appto{\endhead}{\showrowcolors}{}{}
\appto{\endfirsthead}{\showrowcolors}{}{}
$endif$
$endif$
%
% remove paragraph indentation
%
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em}  % prevent overfull lines
%
%
% Listings
%
%
$if(listings)$
%
% general listing colors
%
\definecolor{listing-background}{HTML}{F7F7F7}
\definecolor{listing-rule}{HTML}{B3B2B3}
\definecolor{listing-numbers}{HTML}{B3B2B3}
\definecolor{listing-text-color}{HTML}{000000}
\definecolor{listing-keyword}{HTML}{435489}
\definecolor{listing-keyword-2}{HTML}{1284CA} % additional keywords
\definecolor{listing-keyword-3}{HTML}{9137CB} % additional keywords
\definecolor{listing-identifier}{HTML}{435489}
\definecolor{listing-string}{HTML}{00999A}
\definecolor{listing-comment}{HTML}{8E8E8E}
\lstdefinestyle{eisvogel_listing_style}{
  language         = java,
$if(listings-disable-line-numbers)$
  xleftmargin      = 0.6em,
  framexleftmargin = 0.4em,
$else$
  numbers          = left,
  xleftmargin      = 2.7em,
  framexleftmargin = 2.5em,
$endif$
  backgroundcolor  = \color{listing-background},
  basicstyle       = \color{listing-text-color}\linespread{1.0}%
                      \lst@ifdisplaystyle%
                      $if(code-block-font-size)$$code-block-font-size$$else$\small$endif$%
                      \fi\ttfamily{},
  breaklines       = true,
  frame            = single,
  framesep         = 0.19em,
  rulecolor        = \color{listing-rule},
  frameround       = ffff,
  tabsize          = 4,
  numberstyle      = \color{listing-numbers},
  aboveskip        = 1.0em,
  belowskip        = 0.1em,
  abovecaptionskip = 0em,
  belowcaptionskip = 1.0em,
  keywordstyle     = {\color{listing-keyword}\bfseries},
  keywordstyle     = {[2]\color{listing-keyword-2}\bfseries},
  keywordstyle     = {[3]\color{listing-keyword-3}\bfseries\itshape},
  sensitive        = true,
  identifierstyle  = \color{listing-identifier},
  commentstyle     = \color{listing-comment},
  stringstyle      = \color{listing-string},
  showstringspaces = false,
  escapeinside     = {/*@}{@*/}, % Allow LaTeX inside these special comments
  literate         =
  {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
  {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
  {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
  {À}{{\`A}}1 {È}{{\`E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
  {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
  {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
  {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
  {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
  {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
  {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
  {€}{{\EUR}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1
  {»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1
  {…}{{\ldots}}1 {≥}{{>=}}1 {≤}{{<=}}1 {„}{{\glqq}}1 {“}{{\grqq}}1
  {”}{{''}}1
}
\lstset{style=eisvogel_listing_style}
%
% Java (Java SE 12, 2019-06-22)
%
\lstdefinelanguage{Java}{
  morekeywords={
    % normal keywords (without data types)
    abstract,assert,break,case,catch,class,continue,default,
    do,else,enum,exports,extends,final,finally,for,if,implements,
    import,instanceof,interface,module,native,new,package,private,
    protected,public,requires,return,static,strictfp,super,switch,
    synchronized,this,throw,throws,transient,try,volatile,while,
    % var is an identifier
    var
  },
  morekeywords={[2] % data types
    % primitive data types
    boolean,byte,char,double,float,int,long,short,
    % String
    String,
    % primitive wrapper types
    Boolean,Byte,Character,Double,Float,Integer,Long,Short
    % number types
    Number,AtomicInteger,AtomicLong,BigDecimal,BigInteger,DoubleAccumulator,DoubleAdder,LongAccumulator,LongAdder,Short,
    % other
    Object,Void,void
  },
  morekeywords={[3] % literals
    % reserved words for literal values
    null,true,false,
  },
  sensitive,
  morecomment  = [l]//,
  morecomment  = [s]{/*}{*/},
  morecomment  = [s]{/**}{*/},
  morestring   = [b]",
  morestring   = [b]',
}
\lstdefinelanguage{XML}{
  morestring      = [b]",
  moredelim       = [s][\bfseries\color{listing-keyword}]{<}{\ },
  moredelim       = [s][\bfseries\color{listing-keyword}]{</}{>},
  moredelim       = [l][\bfseries\color{listing-keyword}]{/>},
  moredelim       = [l][\bfseries\color{listing-keyword}]{>},
  morecomment     = [s]{<?}{?>},
  morecomment     = [s]{<!--}{-->},
  commentstyle    = \color{listing-comment},
  stringstyle     = \color{listing-string},
  identifierstyle = \color{listing-identifier}
}
$endif$
%
% header and footer
%
$if(beamer)$
$else$
$if(disable-header-and-footer)$
$else$
\usepackage[headsepline,footsepline]{scrlayer-scrpage}
\newpairofpagestyles{eisvogel-header-footer}{
  \clearpairofpagestyles
  \ihead*{$if(header-left)$$header-left$$else$$title$$endif$}
  \chead*{$if(header-center)$$header-center$$else$$endif$}
  \ohead*{$if(header-right)$$header-right$$else$$date$$endif$}
  \ifoot*{$if(footer-left)$$footer-left$$else$$for(author)$$author$$sep$, $endfor$$endif$}
  \cfoot*{$if(footer-center)$$footer-center$$else$$endif$}
  \ofoot*{$if(footer-right)$$footer-right$$else$\thepage$endif$}
  \addtokomafont{pageheadfoot}{\upshape}
}
\pagestyle{eisvogel-header-footer}
$if(book)$
\deftripstyle{ChapterStyle}{}{}{}{}{\pagemark}{}
\renewcommand*{\chapterpagestyle}{ChapterStyle}
$endif$
$if(page-background)$
\backgroundsetup{
scale=1,
color=black,
opacity=$if(page-background-opacity)$$page-background-opacity$$else$0.2$endif$,
angle=0,
contents={%
  \includegraphics[width=\paperwidth,height=\paperheight]{$page-background$}
  }%
}
$endif$
$endif$
$endif$
%%
%% end added
%%
\usepackage{pgfpages}
\usepackage[export]{adjustbox}
\usepackage{graphicx}
\usepackage{ragged2e}
\begin{document}
%%
%% begin titlepage
%%
$if(beamer)$
$else$
$if(notitlepage)$
$else$
\begin{titlepage}
$if(titlepage-background)$
\newgeometry{top=2cm, right=4cm, bottom=3cm, left=4cm}
$else$
$endif$
$if(titlepage-color)$
\definecolor{titlepage-color}{HTML}{$titlepage-color$}
\newpagecolor{titlepage-color}\afterpage{\restorepagecolor}
$endif$
$if(titlepage-background)$
\tikz[remember picture,overlay] \node[inner sep=0pt] at (current page.center){\includegraphics[width=\paperwidth,height=\paperheight]{$titlepage-background$}};
$endif$
\newcommand{\colorRule}[3][black]{\textcolor[HTML]{#1}{\rule{#2}{#3}}}
\begin{flushleft}
\noindent
\\[-1em]
\color[HTML]{$if(titlepage-text-color)$$titlepage-text-color$$else$000000$endif$}
\makebox[0pt][l]{\colorRule[$if(titlepage-rule-color)$$titlepage-rule-color$$else$FFFFFF$endif$]{1.3\textwidth}{$if(titlepage-rule-height)$$titlepage-rule-height$$else$0$endif$pt}}
\par
\noindent
$if(titlepage-background)$
% The titlepage with a background image has other text spacing and text size
{
  \setstretch{2}
  \vfill
  \vskip -8em
  \noindent {\huge \textbf{\textsf{
  $if(title)$
    $title$
  $else$
    Set up Title in Frontmatter (see Abstract)
  $endif$
}}}
  $if(subtitle)$
  \vskip 1em
  {\Large \textsf{$subtitle$}}
  $endif$
  \vskip 2em
  \noindent {\Large \textit{$for(author)$$author$$sep$, $endfor$} \vskip 0.6em \textsf{$date$}}
  \vfill
}
$else$
{
  \begin{center}
  \setstretch{1.4}
  \vfill
  \noindent {\huge \textbf{\textsf{
  $if(title)$
    $title$
  $else$
    Set up Title in Frontmatter (see Abstract)
  $endif$
}}}
  $if(subtitle)$
  \vskip 1em
  {\Large \textsf{$subtitle$}}
  $endif$
  \vskip 2em
  \noindent {\Large \textit{$for(author)$$author$$sep$, $endfor$}}
  \vfill
  \end{center}
}
$endif$
$if(titlepage-logo)$
\noindent
\begin{center}
\includegraphics[width=$if(logo-width)$$logo-width$$else$35mm$endif$]{$titlepage-logo$}
\end{center}
$endif$
$if(text1)$
\begin{center}
{\large \textsf{$text1$}}
\end{center}
$endif$
$if(text2)$
\begin{center}
{\large \textsf{$text2$}}
\end{center}
$endif$
$if(text3)$
\begin{center}
{\large \textsf{$text3$}}
\end{center}
$endif$
$if(text4)$
\begin{center}
{\large \textsf{$text4$}}
\end{center}
$endif$
$if(titlepage-background)$
$else$
$endif$
\end{flushleft}
\end{titlepage}
\restoregeometry
\pagenumbering{arabic}
$endif$
$endif$
%%
%% end titlepage
%%
$if(has-frontmatter)$
\frontmatter
\frame{\titlepage}
% don't generate the default title
% $else$
% \maketitle
\pagenumbering{Roman} % set the numbering style to lowercase letter
\begin{center}
 {\LARGE \textbf{\textsf{Abstract}}}
\end{center}
\begin{abstract}
\begin{justify}
  $if(abstract)$
  $abstract$
  $else$
  Add your abstract at the beginning of your markdown file like this
  \begin{verbatim}
  ---
  title: "Your Title"
  abstract: "your abstract here"
  author: Leonardo V. Castorina, Another 1, Another 2
  titlepage-logo: /absolute/path/to/logo.pdf
  acknowledgements: "I would like to thank my dog Data."
  declaration: "I declare that this thesis was composed by myself."
  ---
  \end{verbatim}
  This is called YAML frontmatter.  Make sure to set up a title! If you set your abstract correctly you should not see this message.
  Optionally you can set up \texttt{titlepage-logo} for a logo in the cover page, \texttt{acknowledgements} section, and  \texttt{declaration} section.
  $endif$
\end{justify}
\end{abstract}
\pagebreak
$if(acknowledgements)$
\begin{center}
 {\LARGE \textbf{\textsf{Acknowledgements}}}
\end{center}
\begin{abstract}
\begin{justify}
$acknowledgements$
\end{justify}
\end{abstract}
\pagebreak
$endif$
$if(declaration)$
\begin{center}
 {\LARGE \textbf{\textsf{Declaration}}}
\end{center}
\begin{abstract}
\begin{justify}
  $declaration$ \par
   \vspace{1in}\raggedleft({\em $author$\/})
\end{justify}
\end{abstract}
\pagebreak
$endif$
\pagenumbering{arabic} % set the numbering style to lowercase letter
\setcounter{page}{0} % Set the page counter to 3
$if(first-chapter)$
\setcounter{chapter}{$first-chapter$}
\addtocounter{chapter}{-1}
$endif$
$for(include-before)$
$include-before$
$endfor$
$if(no-toc)$
$else$
\renewcommand*\contentsname{$toc-title$}
\renewcommand*\contentsname{Table of Contents}
$endif$
$if(beamer)$
\begin{frame}[allowframebreaks]
$if(toc-title)$
  \frametitle{$toc-title$}
$endif$
  \tableofcontents[hideallsubsections]
\end{frame}
\newpage
$else$
{
$if(colorlinks)$
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$}
$endif$
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents
\newpage
}
$endif$
$endif$
$if(lof)$
\listoffigures
$endif$
$if(lot)$
\listoftables
$endif$
$if(linestretch)$
\setstretch{$linestretch$}
$endif$
$if(has-frontmatter)$
\mainmatter
$endif$
$body$
$if(has-frontmatter)$
\backmatter
$endif$
$if(natbib)$
$if(bibliography)$
$if(biblio-title)$
$if(has-chapters)$
\renewcommand\bibname{$biblio-title$}
$else$
\renewcommand\refname{$biblio-title$}
$endif$
$endif$
$if(beamer)$
\begin{frame}[allowframebreaks]{$biblio-title$}
  \bibliographytrue
$endif$
  \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
$if(beamer)$
\end{frame}
$endif$
$endif$
$endif$
$if(biblatex)$
$if(beamer)$
\begin{frame}[allowframebreaks]{$biblio-title$}
  \bibliographytrue
  \printbibliography[heading=none]
\end{frame}
$else$
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
$endif$
$endif$
$for(include-after)$
$include-after$
$endfor$
\end{document}
.obsidian/plugins/obsidian-enhancing-export/textemplate/neurips.sty
New file
@@ -0,0 +1,373 @@
% partial rewrite of the LaTeX2e package for submissions to the
% Conference on Neural Information Processing Systems (NeurIPS):
%
% - uses more LaTeX conventions
% - line numbers at submission time replaced with aligned numbers from
%   lineno package
% - \nipsfinalcopy replaced with [final] package option
% - automatically loads times package for authors
% - loads natbib automatically; this can be suppressed with the
%   [nonatbib] package option
% - adds foot line to first page identifying the conference
% - adds preprint option for submission to e.g. arXiv
% - conference acronym modified
%
% Roman Garnett (garnett@wustl.edu) and the many authors of
% nips15submit_e.sty, including MK and drstrip@sandia
%
% last revision: March 2023
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{neurips}[2023/03/31 NeurIPS 2023 submission/camera-ready style file]
% declare final option, which creates camera-ready copy
\newif\if@neuripsfinal\@neuripsfinalfalse
\DeclareOption{final}{
  \@neuripsfinaltrue
}
% declare nonatbib option, which does not load natbib in case of
% package clash (users can pass options to natbib via
% \PassOptionsToPackage)
\newif\if@natbib\@natbibtrue
\DeclareOption{nonatbib}{
  \@natbibfalse
}
% declare preprint option, which creates a preprint version ready for
% upload to, e.g., arXiv
\newif\if@preprint\@preprintfalse
\DeclareOption{preprint}{
  \@preprinttrue
}
\ProcessOptions\relax
% determine whether this is an anonymized submission
\newif\if@submission\@submissiontrue
\if@neuripsfinal\@submissionfalse\fi
\if@preprint\@submissionfalse\fi
% fonts
\renewcommand{\rmdefault}{ptm}
\renewcommand{\sfdefault}{phv}
% change this every year for notice string at bottom
\newcommand{\@neuripsordinal}{}
\newcommand{\@neuripsyear}{\the\year}
\newcommand{\@neuripslocation}{}
% acknowledgments
\usepackage{environ}
\newcommand{\acksection}{\section*{Acknowledgments and Disclosure of Funding}}
\NewEnviron{ack}{%
  \acksection
  \BODY
}
% load natbib unless told otherwise
\if@natbib
  \RequirePackage{natbib}
\fi
% set page geometry
\usepackage[verbose=true,letterpaper]{geometry}
\AtBeginDocument{
  \newgeometry{
    textheight=9in,
    textwidth=5.5in,
    top=1in,
    headheight=12pt,
    headsep=25pt,
    footskip=30pt
  }
  \@ifpackageloaded{fullpage}
    {\PackageWarning{neurips_2023}{fullpage package not allowed! Overwriting formatting.}}
    {}
}
\widowpenalty=10000
\clubpenalty=10000
\flushbottom
\sloppy
% font sizes with reduced leading
\renewcommand{\normalsize}{%
  \@setfontsize\normalsize\@xpt\@xipt
  \abovedisplayskip      7\p@ \@plus 2\p@ \@minus 5\p@
  \abovedisplayshortskip \z@ \@plus 3\p@
  \belowdisplayskip      \abovedisplayskip
  \belowdisplayshortskip 4\p@ \@plus 3\p@ \@minus 3\p@
}
\normalsize
\renewcommand{\small}{%
  \@setfontsize\small\@ixpt\@xpt
  \abovedisplayskip      6\p@ \@plus 1.5\p@ \@minus 4\p@
  \abovedisplayshortskip \z@  \@plus 2\p@
  \belowdisplayskip      \abovedisplayskip
  \belowdisplayshortskip 3\p@ \@plus 2\p@   \@minus 2\p@
}
\renewcommand{\footnotesize}{\@setfontsize\footnotesize\@ixpt\@xpt}
\renewcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
\renewcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
\renewcommand{\large}{\@setfontsize\large\@xiipt{14}}
\renewcommand{\Large}{\@setfontsize\Large\@xivpt{16}}
\renewcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{20}}
\renewcommand{\huge}{\@setfontsize\huge\@xxpt{23}}
\renewcommand{\Huge}{\@setfontsize\Huge\@xxvpt{28}}
% sections with less space
\providecommand{\section}{}
\renewcommand{\section}{%
  \@startsection{section}{1}{\z@}%
                {-2.0ex \@plus -0.5ex \@minus -0.2ex}%
                { 1.5ex \@plus  0.3ex \@minus  0.2ex}%
                {\large\bf\raggedright}%
}
\providecommand{\subsection}{}
\renewcommand{\subsection}{%
  \@startsection{subsection}{2}{\z@}%
                {-1.8ex \@plus -0.5ex \@minus -0.2ex}%
                { 0.8ex \@plus  0.2ex}%
                {\normalsize\bf\raggedright}%
}
\providecommand{\subsubsection}{}
\renewcommand{\subsubsection}{%
  \@startsection{subsubsection}{3}{\z@}%
                {-1.5ex \@plus -0.5ex \@minus -0.2ex}%
                { 0.5ex \@plus  0.2ex}%
                {\normalsize\bf\raggedright}%
}
\providecommand{\paragraph}{}
\renewcommand{\paragraph}{%
  \@startsection{paragraph}{4}{\z@}%
                {1.5ex \@plus 0.5ex \@minus 0.2ex}%
                {-1em}%
                {\normalsize\bf}%
}
\providecommand{\subparagraph}{}
\renewcommand{\subparagraph}{%
  \@startsection{subparagraph}{5}{\z@}%
                {1.5ex \@plus 0.5ex \@minus 0.2ex}%
                {-1em}%
                {\normalsize\bf}%
}
\providecommand{\subsubsubsection}{}
\renewcommand{\subsubsubsection}{%
  \vskip5pt{\noindent\normalsize\rm\raggedright}%
}
% float placement
\renewcommand{\topfraction      }{0.85}
\renewcommand{\bottomfraction   }{0.4}
\renewcommand{\textfraction     }{0.1}
\renewcommand{\floatpagefraction}{0.7}
\newlength{\@neuripsabovecaptionskip}\setlength{\@neuripsabovecaptionskip}{7\p@}
\newlength{\@neuripsbelowcaptionskip}\setlength{\@neuripsbelowcaptionskip}{\z@}
\setlength{\abovecaptionskip}{\@neuripsabovecaptionskip}
\setlength{\belowcaptionskip}{\@neuripsbelowcaptionskip}
% swap above/belowcaptionskip lengths for tables
\renewenvironment{table}
  {\setlength{\abovecaptionskip}{\@neuripsbelowcaptionskip}%
   \setlength{\belowcaptionskip}{\@neuripsabovecaptionskip}%
   \@float{table}}
  {\end@float}
% footnote formatting
\setlength{\footnotesep }{6.65\p@}
\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
\renewcommand{\footnoterule}{\kern-3\p@ \hrule width 12pc \kern 2.6\p@}
\setcounter{footnote}{0}
% paragraph formatting
\setlength{\parindent}{\z@}
\setlength{\parskip  }{5.5\p@}
% list formatting
\setlength{\topsep       }{4\p@ \@plus 1\p@   \@minus 2\p@}
\setlength{\partopsep    }{1\p@ \@plus 0.5\p@ \@minus 0.5\p@}
\setlength{\itemsep      }{2\p@ \@plus 1\p@   \@minus 0.5\p@}
\setlength{\parsep       }{2\p@ \@plus 1\p@   \@minus 0.5\p@}
\setlength{\leftmargin   }{3pc}
\setlength{\leftmargini  }{\leftmargin}
\setlength{\leftmarginii }{2em}
\setlength{\leftmarginiii}{1.5em}
\setlength{\leftmarginiv }{1.0em}
\setlength{\leftmarginv  }{0.5em}
\def\@listi  {\leftmargin\leftmargini}
\def\@listii {\leftmargin\leftmarginii
              \labelwidth\leftmarginii
              \advance\labelwidth-\labelsep
              \topsep  2\p@ \@plus 1\p@    \@minus 0.5\p@
              \parsep  1\p@ \@plus 0.5\p@ \@minus 0.5\p@
              \itemsep \parsep}
\def\@listiii{\leftmargin\leftmarginiii
              \labelwidth\leftmarginiii
              \advance\labelwidth-\labelsep
              \topsep    1\p@ \@plus 0.5\p@ \@minus 0.5\p@
              \parsep    \z@
              \partopsep 0.5\p@ \@plus 0\p@ \@minus 0.5\p@
              \itemsep \topsep}
\def\@listiv {\leftmargin\leftmarginiv
              \labelwidth\leftmarginiv
              \advance\labelwidth-\labelsep}
\def\@listv  {\leftmargin\leftmarginv
              \labelwidth\leftmarginv
              \advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
              \labelwidth\leftmarginvi
              \advance\labelwidth-\labelsep}
% create title
\providecommand{\maketitle}{}
\renewcommand{\maketitle}{%
  \par
  \begingroup
    \renewcommand{\thefootnote}{\fnsymbol{footnote}}
    % for perfect author name centering
    \renewcommand{\@makefnmark}{\hbox to \z@{$^{\@thefnmark}$\hss}}
    % The footnote-mark was overlapping the footnote-text,
    % added the following to fix this problem               (MK)
    \long\def\@makefntext##1{%
      \parindent 1em\noindent
      \hbox to 1.8em{\hss $\m@th ^{\@thefnmark}$}##1
    }
    \thispagestyle{empty}
    \@maketitle
    \@thanks
    \@notice
  \endgroup
  \let\maketitle\relax
  \let\thanks\relax
}
% rules for title box at top of first page
\newcommand{\@toptitlebar}{
  \hrule height 4\p@
  \vskip 0.25in
  \vskip -\parskip%
}
\newcommand{\@bottomtitlebar}{
  \vskip 0.29in
  \vskip -\parskip
  \hrule height 1\p@
  \vskip 0.09in%
}
% create title (includes both anonymized and non-anonymized versions)
\providecommand{\@maketitle}{}
\renewcommand{\@maketitle}{%
  \vbox{%
    \hsize\textwidth
    \linewidth\hsize
    \vskip 0.1in
    \@toptitlebar
    \centering
    {\LARGE\bf \@title\par}
    \@bottomtitlebar
    \if@submission
      \begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}
        Anonymous Author(s) \\
        Affiliation \\
        Address \\
        \texttt{email} \\
      \end{tabular}%
    \else
      \def\And{%
        \end{tabular}\hfil\linebreak[0]\hfil%
        \begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\ignorespaces%
      }
      \def\AND{%
        \end{tabular}\hfil\linebreak[4]\hfil%
        \begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\ignorespaces%
      }
      \begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\@author\end{tabular}%
    \fi
    \vskip 0.3in \@minus 0.1in
  }
}
% add conference notice to bottom of first page
\newcommand{\ftype@noticebox}{8}
\newcommand{\@notice}{%
  % give a bit of extra room back to authors on first page
  \enlargethispage{2\baselineskip}%
  \@float{noticebox}[b]%
    \footnotesize\@noticestring%
  \end@float%
}
% abstract styling
\renewenvironment{abstract}%
{%
  \vskip 0.075in%
  \centerline%
  {\large\bf Abstract}%
  \vspace{0.5ex}%
  \begin{quote}%
}
{
  \par%
  \end{quote}%
  \vskip 1ex%
}
% handle tweaks for camera-ready copy vs. submission copy
\if@preprint
  \newcommand{\@noticestring}{%
    Preprint. Under review.%
  }
\else
  \if@neuripsfinal
    \newcommand{\@noticestring}{%
      (\@neuripsyear) \@title
    }
  \else
    \newcommand{\@noticestring}{%
     (\@neuripsyear) \@title %
    }
    % hide the acknowledgements
    \NewEnviron{hide}{}
    \let\ack\hide
    \let\endack\endhide
    % line numbers for submission
    \RequirePackage{lineno}
    \linenumbers
    % fix incompatibilities between lineno and amsmath, if required, by
    % transparently wrapping linenomath environments around amsmath
    % environments
    \AtBeginDocument{%
      \@ifpackageloaded{amsmath}{%
        \newcommand*\patchAmsMathEnvironmentForLineno[1]{%
          \expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
          \expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname
          \renewenvironment{#1}%
                          {\linenomath\csname old#1\endcsname}%
                          {\csname oldend#1\endcsname\endlinenomath}%
        }%
        \newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{%
          \patchAmsMathEnvironmentForLineno{#1}%
          \patchAmsMathEnvironmentForLineno{#1*}%
        }%
        \patchBothAmsMathEnvironmentsForLineno{equation}%
        \patchBothAmsMathEnvironmentsForLineno{align}%
        \patchBothAmsMathEnvironmentsForLineno{flalign}%
        \patchBothAmsMathEnvironmentsForLineno{alignat}%
        \patchBothAmsMathEnvironmentsForLineno{gather}%
        \patchBothAmsMathEnvironmentsForLineno{multline}%
      }
      {}
    }
  \fi
\fi
\endinput
.obsidian/plugins/obsidian-enhancing-export/textemplate/neurips.tex
New file
@@ -0,0 +1,187 @@
% This template was tested with Pandoc 3.4 and pandoc-crossref v0.3.18.0. It should be backwards compatible with older version of pandoc..
\documentclass{article}
% if you need to pass options to natbib, use, e.g.:
%     \PassOptionsToPackage{numbers, compress}{natbib}
% before loading neurips_2023
% ready for submission
\usepackage[final,nonatbib]{neurips}
% to compile a preprint version, e.g., for submission to arXiv, add add the
% [preprint] option:
%     \usepackage[preprint]{neurips_2023}
% to compile a camera-ready version, add the [final] option, e.g.:
%     \usepackage[final]{neurips_2023}
% to avoid loading the natbib package, add option nonatbib:
%    \usepackage[nonatbib]{neurips_2023}
\usepackage[utf8]{inputenc} % allow utf-8 input
\usepackage[T1]{fontenc}    % use 8-bit T1 fonts
\usepackage{hyperref}       % hyperlinks
\usepackage{url}            % simple URL typesetting
\usepackage{booktabs}       % professional-quality tables
\usepackage{amsfonts}       % blackboard math symbols
\usepackage{nicefrac}       % compact symbols for 1/2, etc.
\usepackage{microtype}      % microtypography
\usepackage{xcolor}         % colors
\usepackage{graphicx}
\usepackage{longtable} % Add support for Pandoc's longtable if needed
\usepackage{array}     % For table alignment improvements
\usepackage{amsmath}
\usepackage{textcomp}
\setlength{\LTcapwidth}{\textwidth} % To make captions fit within page width
\makeatletter
\newsavebox\pandoc@box
\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
  \sbox\pandoc@box{#1}%
  \Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
  \Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
  \ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
  \ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
  \else\usebox{\pandoc@box}%
  \fi%
}
\makeatother
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
% Set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother
$if(csl-refs)$
% definitions for citeproc citations
\NewDocumentCommand\citeproctext{}{}
\NewDocumentCommand\citeproc{mm}{%
\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
\makeatletter
% allow citations to break across lines
\let\@cite@ofmt\@firstofone
% avoid brackets around text for \cite:
\def\@biblabel#1{}
\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
\makeatother
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
{\begin{list}{}{%
    \setlength{\itemindent}{0pt}
    \setlength{\leftmargin}{0pt}
    \setlength{\parsep}{0pt}
    % turn on hanging indent if param 1 is 1
    \ifodd #1
    \setlength{\leftmargin}{\cslhangindent}
    \setlength{\itemindent}{-1\cslhangindent}
    \fi
    % set entry spacing
    \setlength{\itemsep}{#2\baselineskip}}}
{\end{list}}
\usepackage{calc}
\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
$endif$
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\title{$title$}
% Iterate through the authors except last to add \And.
\author{%
$for(authors/allbutlast)$
  $authors.name$\\$authors.affiliation$\\$authors.institution$\\$authors.email$\\$authors.address$ \And
$endfor$
$for(authors/last)$
  $authors.name$\\$authors.affiliation$\\$authors.institution$\\$authors.email$\\$authors.address$
$endfor$
}
% \author{%
%   David S.~Hippocampus \\
%   Department of Computer Science\\
%   Cranberry-Lemon University\\
%   Pittsburgh, PA 15213 \\
%   \texttt{hippo@cs.cranberry-lemon.edu} \\
%   % examples of more authors
%   % \And
%   % Coauthor \\
%   % Affiliation \\
%   % Address \\
%   % \texttt{email} \\
%   % \AND
%   % Coauthor \\
%   % Affiliation \\
%   % Address \\
%   % \texttt{email} \\
%   % \And
%   % Coauthor \\
%   % Affiliation \\
%   % Address \\
%   % \texttt{email} \\
%   % \And
%   % Coauthor \\
%   % Affiliation \\
%   % Address \\
%   % \texttt{email} \\
% }
\begin{document}
\maketitle
\begin{abstract}
  $if(abstract)$
  $abstract$
  $else$
  Add your abstract at the beginning of your markdown file like this
  \begin{verbatim}
  ---
  title: "Your Title"
  abstract: "your abstract here"
  authors:
  - name: Leonardo V. Castorina
    affiliation: School of Informatics
    institution: University of Edinburgh
    email: justanemail@domain.ext
    address: Edinburgh
  - name: Coauthor
    affiliation: Affiliation
    institution: Institution
    email: coauthor@example.com
    address: Address
  ---
  \end{verbatim}
  This is called YAML frontmatter. If you set your abstract correctly you should not see this message.
  $endif$
\end{abstract}
$body$
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}
.obsidian/workspace.json
@@ -11,10 +11,14 @@
            "id": "aabb9dcadda95569",
            "type": "leaf",
            "state": {
              "type": "graph",
              "state": {},
              "icon": "lucide-git-fork",
              "title": "关系图谱"
              "type": "markdown",
              "state": {
                "file": "Help/docs/README.md",
                "mode": "source",
                "source": false
              },
              "icon": "lucide-file",
              "title": "README"
            }
          }
        ]
@@ -90,6 +94,7 @@
            "state": {
              "type": "backlink",
              "state": {
                "file": "Help/docs/README.md",
                "collapseAll": false,
                "extraContext": false,
                "sortOrder": "alphabetical",
@@ -99,7 +104,7 @@
                "unlinkedCollapsed": true
              },
              "icon": "links-coming-in",
              "title": "反向链接"
              "title": "README 的反向链接列表"
            }
          },
          {
@@ -108,11 +113,12 @@
            "state": {
              "type": "outgoing-link",
              "state": {
                "file": "Help/docs/README.md",
                "linksCollapsed": false,
                "unlinkedCollapsed": true
              },
              "icon": "links-going-out",
              "title": "出链"
              "title": "README 的出链列表"
            }
          },
          {
@@ -150,12 +156,13 @@
            "state": {
              "type": "outline",
              "state": {
                "file": "Help/docs/README.md",
                "followCursor": false,
                "showSearch": false,
                "searchQuery": ""
              },
              "icon": "lucide-list",
              "title": "大纲"
              "title": "README 的大纲"
            }
          }
        ]
@@ -179,6 +186,7 @@
  },
  "active": "aabb9dcadda95569",
  "lastOpenFiles": [
    "README.md",
    "Help/docs/README.md",
    "Help/docs/Usages/netconfig/netconfig.md",
    "Help/docs/about.md"