diff --git a/README.md b/README.md index cc145c3..51a96a7 100644 --- a/README.md +++ b/README.md @@ -24,14 +24,20 @@ Likewise, the example rendered as a revealjs presentation (`presentation.qmd`) i ## Limitations -- No self-contained htmls: Molstar viewers for local files are empty when the file is **not** served by a webserver such as `quarto preview` or GitHub pages. -This means it will not display your molecule when you simply open the rendered html with a browser, -even if you set the html to be self-contained. -The reason for this is the [Same-origin Policy](https://developer.mozilla.org/en-US/docs/Glossary/Same-origin_policy), a security measure in web browsers. -It and similar policies prevent that one document can access resources it is not supposed to access. -For example, an html document you downloaded is not allowed to execute code that reads personal files on your computer. -This also prevents it from loading your molecules from local paths. -- revealjs presentations now use iframes instead of a normal div to work around https://github.com/jmbuhr/quarto-molstar/issues/1, which is why you might have to address those differently for custom styling if you plan to use the same source for html and reveal output. +- Self-contained htmls: + Molstar viewers for local files are empty when the file is **not** served by a webserver such as `quarto preview` or GitHub pages. + This means it will not display your molecule when you simply open the rendered html with a browser, + even if you set the html to be self-contained. + The reason for this is the [Same-origin Policy](https://developer.mozilla.org/en-US/docs/Glossary/Same-origin_policy), a security measure in web browsers. + It and similar policies prevent that one document can access resources it is not supposed to access. + For example, an html document you downloaded is not allowed to execute code that reads personal files on your computer. + This also prevents it from loading your molecules from local paths. + + For plain text formats in the `mol-url` shortcode, such as `pdb` and `xyz`, you can enable a custom option that circumvents this limitation + by embedding them straight into the html as a string. + Add `molstar: embed` to your yml frontmatter to use this. +- revealjs presentations now use iframes instead of a normal div to work around https://github.com/jmbuhr/quarto-molstar/issues/1, + which is why you might have to address those differently for custom styling if you plan to use the same source for html and revealjs output. ## Update Mol* (extension developement) diff --git a/_extensions/molstar/assets/app-container.css b/_extensions/molstar/assets/app-container.css index 0529fb0..d51a20d 100644 --- a/_extensions/molstar/assets/app-container.css +++ b/_extensions/molstar/assets/app-container.css @@ -5,3 +5,6 @@ div .molstar-app { margin-bottom: 1rem; } +.msp-plugin .msp-layout-expanded { + z-index: 1; +} diff --git a/_extensions/molstar/molstar.lua b/_extensions/molstar/molstar.lua index a06f3f0..68da28f 100644 --- a/_extensions/molstar/molstar.lua +++ b/_extensions/molstar/molstar.lua @@ -1,12 +1,42 @@ +-- for development: +local p = quarto.utils.dump + +---@type boolean +local useIframes = false +if quarto.doc.isFormat("revealjs") then + useIframes = true +end + +---@param path string Path to the file +---@return string|nil The file content +local function readFile(path) + local file = io.open(path, "r") + if not file then return nil end + local content = file:read "*a" + file:close() + return content +end + +---Format string like in bash or python, +---e.g. f('Hello ${one}', {one = 'world'}) +---@param s string The string to format +---@param kwargs {[string]: string} A table with key-value replacemen pairs +---@return string local function f(s, kwargs) return (s:gsub('($%b{})', function(w) return kwargs[w:sub(3, -2)] or w end)) end +---Get the file extension +---@param path string +---@return string local function fileExt(path) return path:match("[^.]+$") end -local function addDependencies(useIframes) +---Add molstar css and js dependencies. +---Can be linked / embedded for regular html documents, +---but have to be copied for revealjs to be used in iframes +local function addDependencies() quarto.doc.addHtmlDependency { name = 'molstar', version = 'v3.13.0', @@ -19,6 +49,9 @@ local function addDependencies(useIframes) end end +---Merge user provided molstar options with defaults +---@param userOptions table +---@return string JSON string to pass to molstar local function mergeMolstarOptions(userOptions) local defaultOptions = { layoutIsExpanded = false, @@ -38,7 +71,7 @@ local function mergeMolstarOptions(userOptions) end for k, v in pairs(userOptions) do - value = pandoc.utils.stringify(v) + local value = pandoc.utils.stringify(v) if value == 'true' then value = true end if value == 'false' then value = false end defaultOptions[k] = value @@ -47,151 +80,89 @@ local function mergeMolstarOptions(userOptions) return quarto.json.encode(defaultOptions) end -local function rcsbViewer(appId, pdbId, userOptions) - local subs = { appId = appId, pdb = pdbId, height = height, options = mergeMolstarOptions(userOptions) } - return f([[ - - ]], subs) +---@param viewerFunctionString string +---@return string +local function wrapInlineIframe(viewerFunctionString) + return [[ + + ]] end -local function rcsbViewerIframe(appId, pdbId, userOptions) - local frameId = 'frame' .. appId - local subs = { frameId = frameId, appId = appId, pdb = pdbId, options = mergeMolstarOptions(userOptions) } - return f([[ - - ]], subs) +---@param viewerFunctionString string +---@return string +local function wrapInlineDiv(viewerFunctionString) + return [[ +
+ + ]] end -local function urlViewer(appId, topPath, userOptions) +---@param args table +---@return string +local function createViewer(args) local subs = { - appId = appId, - top = topPath, - topExt = fileExt(topPath), - options = mergeMolstarOptions(userOptions) + appId = args.appId, + url = args.url, + pdb = args.pdbId, + trajUrl = args.trajUrl, + trajExtension = args.trajExtension, + data = args.data, + fileExtension = args.fileExtension, + options = mergeMolstarOptions(args.userOptions) } - return f([[ - - ]], subs) -end -local function urlViewerIframe(appId, topPath, userOptions) - local frameId = 'frame' .. appId - local subs = { - appId = appId, - top = topPath, - frameId = frameId, - topExt = fileExt(topPath), - options = mergeMolstarOptions(userOptions) - } - return f([[ - - ]], subs) -end + local wrapper + local viewerFunction -local function trajViewer(appId, topPath, trajPath, userOptions) - local subs = { - appId = appId, - top = topPath, - topExt = fileExt(topPath), - traj = trajPath, - trajExt = fileExt(trajPath), - options = mergeMolstarOptions(userOptions) - } - return f([[ - - ]], subs) -end + if useIframes then + wrapper = wrapInlineIframe + else + wrapper = wrapInlineDiv + end -local function trajViewerIframe(appId, topPath, trajPath, userOptions) - local frameId = 'frame' .. appId - local subs = { - appId = appId, - frameId = frameId, - top = topPath, - topExt = fileExt(topPath), - traj = trajPath, - trajExt = fileExt(trajPath), - options = mergeMolstarOptions(userOptions) - } - return f([[ - - ]], subs) + if args.data then -- if we have embedded data, use it + viewerFunction = 'viewer.loadStructureFromData(`${data}`, format="${fileExtension}");' + elseif args.pdbId then -- fetch from rcsb pdbb if an ID is given + viewerFunction = 'viewer.loadPdb("${pdb}");' + elseif args.url and args.trajUrl then -- load topology + trajectory if both are given + viewerFunction = [[ + viewer.loadTrajectory( + { + model: { + kind: "model-url", url: "${url}", format: "${fileExtension}" + }, + coordinates: { + kind: "coordinates-url", url: "${trajUrl}", + format: "${trajExtension}", isBinary: true + } + } + ); + ]] + else -- otherwise read from url (local or remote) + viewerFunction = 'viewer.loadStructureFromUrl("${url}", format="${fileExtension}");' + end + + return f(wrapper(viewerFunction), subs) end return { @@ -201,53 +172,42 @@ return { return pandoc.Null() end - if quarto.doc.isFormat("revealjs") then - useIframes = true - end - - addDependencies(useIframes) + addDependencies() local pdbId = pandoc.utils.stringify(args[1]) local appId = 'app-' .. pdbId - if useIframes then - return pandoc.RawBlock('html', rcsbViewerIframe(appId, pdbId, kwargs)) - else - return { - pandoc.Div( - {}, - { id = appId, class = 'molstar-app' } - ), - pandoc.RawBlock('html', rcsbViewer(appId, pdbId, kwargs)), - } - end + return pandoc.RawBlock('html', createViewer { + appId = appId, + pdbId = pdbId, + userOptions = kwargs + }) end, - ['mol-url'] = function(args, kwargs) + ['mol-url'] = function(args, kwargs, meta) if not quarto.doc.isFormat("html:js") then return pandoc.Null() end - if quarto.doc.isFormat("revealjs") then - useIframes = true - end - - addDependencies(useIframes) + addDependencies() - local pdbPath = pandoc.utils.stringify(args[1]) - local appId = 'app-' .. pdbPath + local url = pandoc.utils.stringify(args[1]) + local appId = 'app-' .. url + local fileExtension = fileExt(url) - if useIframes then - return pandoc.RawBlock('html', urlViewerIframe(appId, pdbPath, kwargs)) - else - return { - pandoc.Div( - {}, - { id = appId, class = 'molstar-app' } - ), - pandoc.RawBlock('html', urlViewer(appId, pdbPath, kwargs)), - } + local molstarMeta = pandoc.utils.stringify(meta['molstar']) + local pdbContent + if molstarMeta == 'embed' and not useIframes then + ---@type string|nil + pdbContent = readFile(url) end + return pandoc.RawBlock('html', createViewer { + appId = appId, + url = url, + data = pdbContent, + fileExtension = fileExtension, + userOptions = kwargs + }) end, ['mol-traj'] = function(args, kwargs) @@ -255,26 +215,19 @@ return { return pandoc.Null() end - if quarto.doc.isFormat("revealjs") then - useIframes = true - end - addDependencies() - local topPath = pandoc.utils.stringify(args[1]) - local trajPath = pandoc.utils.stringify(args[2]) - local appId = 'app-' .. topPath .. trajPath - - if useIframes then - return pandoc.RawBlock('html', trajViewerIframe(appId, topPath, trajPath, kwargs)) - else - return { - pandoc.Div( - {}, - { id = appId, class = 'molstar-app' } - ), - pandoc.RawBlock('html', trajViewer(appId, topPath, trajPath, kwargs)) - } - end + local url = pandoc.utils.stringify(args[1]) + local trajUrl = pandoc.utils.stringify(args[2]) + local appId = 'app-' .. url .. trajUrl + + return pandoc.RawBlock('html', createViewer { + appId = appId, + url = url, + trajUrl = trajUrl, + fileExtension = fileExt(url), + trajExtension = fileExt(trajUrl), + userOptions = kwargs + }) end, } diff --git a/index.html b/index.html index 84e5694..dbd8396 100644 --- a/index.html +++ b/index.html @@ -11,10 +11,15 @@ \n\t\n\n\t\n\n\t\t
Loading speaker view...
\n\n\t\t
\n\t\t
Upcoming
\n\t\t
\n\t\t\t
\n\t\t\t\t

Time Click to Reset

\n\t\t\t\t
\n\t\t\t\t\t0:00 AM\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t00:00:00\n\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t

Pacing – Time to finish current slide

\n\t\t\t\t
\n\t\t\t\t\t00:00:00\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

Notes

\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t
\n\n\t\t - - \ No newline at end of file diff --git a/index_files/libs/revealjs/plugin/pdf-export/pdfexport.js b/index_files/libs/revealjs/plugin/pdf-export/pdfexport.js deleted file mode 100644 index c399fa9..0000000 --- a/index_files/libs/revealjs/plugin/pdf-export/pdfexport.js +++ /dev/null @@ -1,108 +0,0 @@ -var PdfExport = ( function( _Reveal ){ - - var Reveal = _Reveal; - var setStylesheet = null; - var installAltKeyBindings = null; - - function getRevealJsPath(){ - var regex = /\b[^/]+\/reveal.css$/i; - var script = Array.from( document.querySelectorAll( 'link' ) ).find( function( e ){ - return e.attributes.href && e.attributes.href.value.search( regex ) >= 0; - }); - if( !script ){ - console.error( 'reveal.css could not be found in included elements. Did you rename this file?' ); - return ''; - } - return script.attributes.href.value.replace( regex, '' ); - } - - function setStylesheet3( pdfExport ){ - var link = document.querySelector( '#print' ); - if( !link ){ - link = document.createElement( 'link' ); - link.rel = 'stylesheet'; - link.id = 'print'; - document.querySelector( 'head' ).appendChild( link ); - } - var style = 'paper'; - if( pdfExport ){ - style = 'pdf'; - } - link.href = getRevealJsPath() + 'css/print/' + style + '.css'; - } - - function setStylesheet4( pdfExport ){ - } - - function installAltKeyBindings3(){ - } - - function installAltKeyBindings4(){ - if( isPrintingPDF() ){ - var config = Reveal.getConfig(); - var shortcut = config.pdfExportShortcut || 'E'; - window.addEventListener( 'keydown', function( e ){ - if( e.target.nodeName.toUpperCase() == 'BODY' - && ( e.key.toUpperCase() == shortcut.toUpperCase() || e.keyCode == shortcut.toUpperCase().charCodeAt( 0 ) ) ){ - e.preventDefault(); - togglePdfExport(); - return false; - } - }, true ); - } - } - - function isPrintingPDF(){ - return ( /print-pdf/gi ).test( window.location.search ); - } - - function togglePdfExport(){ - var url_doc = new URL( document.URL ); - var query_doc = new URLSearchParams( url_doc.searchParams ); - if( isPrintingPDF() ){ - query_doc.delete( 'print-pdf' ); - }else{ - query_doc.set( 'print-pdf', '' ); - } - url_doc.search = ( query_doc.toString() ? '?' + query_doc.toString() : '' ); - window.location.href = url_doc.toString(); - } - - function installKeyBindings(){ - var config = Reveal.getConfig(); - var shortcut = config.pdfExportShortcut || 'E'; - Reveal.addKeyBinding({ - keyCode: shortcut.toUpperCase().charCodeAt( 0 ), - key: shortcut.toUpperCase(), - description: 'PDF export mode' - }, togglePdfExport ); - installAltKeyBindings(); - } - - function install(){ - installKeyBindings(); - setStylesheet( isPrintingPDF() ); - } - - var Plugin = { - } - - if( Reveal && Reveal.VERSION && Reveal.VERSION.length && Reveal.VERSION[ 0 ] == '3' ){ - // reveal 3.x - setStylesheet = setStylesheet3; - installAltKeyBindings = installAltKeyBindings3; - install(); - }else{ - // must be reveal 4.x - setStylesheet = setStylesheet4; - installAltKeyBindings = installAltKeyBindings4; - Plugin.id = 'pdf-export'; - Plugin.init = function( _Reveal ){ - Reveal = _Reveal; - install(); - }; - } - - return Plugin; - -})( Reveal ); diff --git a/index_files/libs/revealjs/plugin/pdf-export/plugin.yml b/index_files/libs/revealjs/plugin/pdf-export/plugin.yml deleted file mode 100644 index f6db9d0..0000000 --- a/index_files/libs/revealjs/plugin/pdf-export/plugin.yml +++ /dev/null @@ -1,2 +0,0 @@ -name: PdfExport -script: pdfexport.js diff --git a/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css b/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css deleted file mode 100644 index e8410fe..0000000 --- a/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css +++ /dev/null @@ -1,31 +0,0 @@ -.reveal - div.sourceCode - pre - code.has-line-highlights - > span:not(.highlight-line) { - opacity: 0.4; -} - -.reveal pre.numberSource { - padding-left: 0; -} - -.reveal pre.numberSource code > span { - left: -2.1em; -} - -pre.numberSource code > span > a:first-child::before { - left: -0.7em; -} - -.reveal pre > code:not(:first-child).fragment { - position: absolute; - top: 0; - left: 0; - width: 100%; - box-sizing: border-box; -} - -.reveal div.sourceCode pre code { - min-height: 100%; -} diff --git a/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js b/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js deleted file mode 100644 index 5bffdc7..0000000 --- a/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js +++ /dev/null @@ -1,351 +0,0 @@ -window.QuartoLineHighlight = function () { - function isPrintView() { - return /print-pdf/gi.test(window.location.search); - } - - const delimiters = { - step: "|", - line: ",", - lineRange: "-", - }; - - const regex = new RegExp( - "^[\\d" + Object.values(delimiters).join("") + "]+$" - ); - - function handleLinesSelector(deck, attr) { - // if we are in printview with pdfSeparateFragments: false - // then we'll also want to supress - if (regex.test(attr)) { - if (isPrintView() && deck.getConfig().pdfSeparateFragments !== true) { - return false; - } else { - return true; - } - } else { - return false; - } - } - - const kCodeLineNumbersAttr = "data-code-line-numbers"; - const kFragmentIndex = "data-fragment-index"; - - function initQuartoLineHighlight(deck) { - const divSourceCode = deck - .getRevealElement() - .querySelectorAll("div.sourceCode"); - // Process each div created by Pandoc highlighting - numbered line are already included. - divSourceCode.forEach((el) => { - if (el.hasAttribute(kCodeLineNumbersAttr)) { - const codeLineAttr = el.getAttribute(kCodeLineNumbersAttr); - el.removeAttribute("data-code-line-numbers"); - if (handleLinesSelector(deck, codeLineAttr)) { - // Only process if attr is a string to select lines to highlights - // e.g "1|3,6|8-11" - const codeBlock = el.querySelectorAll("pre code"); - codeBlock.forEach((code) => { - // move attributes on code block - code.setAttribute(kCodeLineNumbersAttr, codeLineAttr); - - const scrollState = { currentBlock: code }; - - // Check if there are steps and duplicate code block accordingly - const highlightSteps = splitLineNumbers(codeLineAttr); - if (highlightSteps.length > 1) { - // If the original code block has a fragment-index, - // each clone should follow in an incremental sequence - let fragmentIndex = parseInt( - code.getAttribute(kFragmentIndex), - 10 - ); - fragmentIndex = - typeof fragmentIndex !== "number" || isNaN(fragmentIndex) - ? null - : fragmentIndex; - - let stepN = 1; - highlightSteps.slice(1).forEach( - // Generate fragments for all steps except the original block - (step) => { - var fragmentBlock = code.cloneNode(true); - fragmentBlock.setAttribute( - "data-code-line-numbers", - joinLineNumbers([step]) - ); - fragmentBlock.classList.add("fragment"); - - // Pandoc sets id on spans we need to keep unique - fragmentBlock - .querySelectorAll(":scope > span") - .forEach((span) => { - if (span.hasAttribute("id")) { - span.setAttribute( - "id", - span.getAttribute("id").concat("-" + stepN) - ); - } - }); - stepN = ++stepN; - - // Add duplicated element after existing one - code.parentNode.appendChild(fragmentBlock); - - // Each new element is highlighted based on the new attributes value - highlightCodeBlock(fragmentBlock); - - if (typeof fragmentIndex === "number") { - fragmentBlock.setAttribute(kFragmentIndex, fragmentIndex); - fragmentIndex += 1; - } else { - fragmentBlock.removeAttribute(kFragmentIndex); - } - - // Scroll highlights into view as we step through them - fragmentBlock.addEventListener( - "visible", - scrollHighlightedLineIntoView.bind( - this, - fragmentBlock, - scrollState - ) - ); - fragmentBlock.addEventListener( - "hidden", - scrollHighlightedLineIntoView.bind( - this, - fragmentBlock.previousSibling, - scrollState - ) - ); - } - ); - code.removeAttribute(kFragmentIndex); - code.setAttribute( - kCodeLineNumbersAttr, - joinLineNumbers([highlightSteps[0]]) - ); - } - - // Scroll the first highlight into view when the slide becomes visible. - const slide = - typeof code.closest === "function" - ? code.closest("section:not(.stack)") - : null; - if (slide) { - const scrollFirstHighlightIntoView = function () { - scrollHighlightedLineIntoView(code, scrollState, true); - slide.removeEventListener( - "visible", - scrollFirstHighlightIntoView - ); - }; - slide.addEventListener("visible", scrollFirstHighlightIntoView); - } - - highlightCodeBlock(code); - }); - } - } - }); - } - - function highlightCodeBlock(codeBlock) { - const highlightSteps = splitLineNumbers( - codeBlock.getAttribute(kCodeLineNumbersAttr) - ); - - if (highlightSteps.length) { - // If we have at least one step, we generate fragments - highlightSteps[0].forEach((highlight) => { - // Add expected class on
 for reveal CSS
-        codeBlock.parentNode.classList.add("code-wrapper");
-
-        // Select lines to highlight
-        spanToHighlight = [];
-        if (typeof highlight.last === "number") {
-          spanToHighlight = [].slice.call(
-            codeBlock.querySelectorAll(
-              ":scope > span:nth-child(n+" +
-                highlight.first +
-                "):nth-child(-n+" +
-                highlight.last +
-                ")"
-            )
-          );
-        } else if (typeof highlight.first === "number") {
-          spanToHighlight = [].slice.call(
-            codeBlock.querySelectorAll(
-              ":scope > span:nth-child(" + highlight.first + ")"
-            )
-          );
-        }
-        if (spanToHighlight.length) {
-          // Add a class on  and  to select line to highlight
-          spanToHighlight.forEach((span) =>
-            span.classList.add("highlight-line")
-          );
-          codeBlock.classList.add("has-line-highlights");
-        }
-      });
-    }
-  }
-
-  /**
-   * Animates scrolling to the first highlighted line
-   * in the given code block.
-   */
-  function scrollHighlightedLineIntoView(block, scrollState, skipAnimation) {
-    window.cancelAnimationFrame(scrollState.animationFrameID);
-
-    // Match the scroll position of the currently visible
-    // code block
-    if (scrollState.currentBlock) {
-      block.scrollTop = scrollState.currentBlock.scrollTop;
-    }
-
-    // Remember the current code block so that we can match
-    // its scroll position when showing/hiding fragments
-    scrollState.currentBlock = block;
-
-    const highlightBounds = getHighlightedLineBounds(block);
-    let viewportHeight = block.offsetHeight;
-
-    // Subtract padding from the viewport height
-    const blockStyles = window.getComputedStyle(block);
-    viewportHeight -=
-      parseInt(blockStyles.paddingTop) + parseInt(blockStyles.paddingBottom);
-
-    // Scroll position which centers all highlights
-    const startTop = block.scrollTop;
-    let targetTop =
-      highlightBounds.top +
-      (Math.min(highlightBounds.bottom - highlightBounds.top, viewportHeight) -
-        viewportHeight) /
-        2;
-
-    // Make sure the scroll target is within bounds
-    targetTop = Math.max(
-      Math.min(targetTop, block.scrollHeight - viewportHeight),
-      0
-    );
-
-    if (skipAnimation === true || startTop === targetTop) {
-      block.scrollTop = targetTop;
-    } else {
-      // Don't attempt to scroll if there is no overflow
-      if (block.scrollHeight <= viewportHeight) return;
-
-      let time = 0;
-
-      const animate = function () {
-        time = Math.min(time + 0.02, 1);
-
-        // Update our eased scroll position
-        block.scrollTop =
-          startTop + (targetTop - startTop) * easeInOutQuart(time);
-
-        // Keep animating unless we've reached the end
-        if (time < 1) {
-          scrollState.animationFrameID = requestAnimationFrame(animate);
-        }
-      };
-
-      animate();
-    }
-  }
-
-  function getHighlightedLineBounds(block) {
-    const highlightedLines = block.querySelectorAll(".highlight-line");
-    if (highlightedLines.length === 0) {
-      return { top: 0, bottom: 0 };
-    } else {
-      const firstHighlight = highlightedLines[0];
-      const lastHighlight = highlightedLines[highlightedLines.length - 1];
-
-      return {
-        top: firstHighlight.offsetTop,
-        bottom: lastHighlight.offsetTop + lastHighlight.offsetHeight,
-      };
-    }
-  }
-
-  /**
-   * The easing function used when scrolling.
-   */
-  function easeInOutQuart(t) {
-    // easeInOutQuart
-    return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;
-  }
-
-  function splitLineNumbers(lineNumbersAttr) {
-    // remove space
-    lineNumbersAttr = lineNumbersAttr.replace("/s/g", "");
-    // seperate steps (for fragment)
-    lineNumbersAttr = lineNumbersAttr.split(delimiters.step);
-
-    // for each step, calculate first and last line, if any
-    return lineNumbersAttr.map((highlights) => {
-      // detect lines
-      const lines = highlights.split(delimiters.line);
-      return lines.map((range) => {
-        if (/^[\d-]+$/.test(range)) {
-          range = range.split(delimiters.lineRange);
-          const firstLine = parseInt(range[0], 10);
-          const lastLine = range[1] ? parseInt(range[1], 10) : undefined;
-          return {
-            first: firstLine,
-            last: lastLine,
-          };
-        } else {
-          return {};
-        }
-      });
-    });
-  }
-
-  function joinLineNumbers(splittedLineNumbers) {
-    return splittedLineNumbers
-      .map(function (highlights) {
-        return highlights
-          .map(function (highlight) {
-            // Line range
-            if (typeof highlight.last === "number") {
-              return highlight.first + delimiters.lineRange + highlight.last;
-            }
-            // Single line
-            else if (typeof highlight.first === "number") {
-              return highlight.first;
-            }
-            // All lines
-            else {
-              return "";
-            }
-          })
-          .join(delimiters.line);
-      })
-      .join(delimiters.step);
-  }
-
-  return {
-    id: "quarto-line-highlight",
-    init: function (deck) {
-      initQuartoLineHighlight(deck);
-
-      // If we're printing to PDF, scroll the code highlights of
-      // all blocks in the deck into view at once
-      deck.on("pdf-ready", function () {
-        [].slice
-          .call(
-            deck
-              .getRevealElement()
-              .querySelectorAll(
-                "pre code[data-code-line-numbers].current-fragment"
-              )
-          )
-          .forEach(function (block) {
-            scrollHighlightedLineIntoView(block, {}, true);
-          });
-      });
-    },
-  };
-};
diff --git a/index_files/libs/revealjs/plugin/quarto-line-highlight/plugin.yml b/index_files/libs/revealjs/plugin/quarto-line-highlight/plugin.yml
deleted file mode 100644
index ca20686..0000000
--- a/index_files/libs/revealjs/plugin/quarto-line-highlight/plugin.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-# adapted from https://github.com/hakimel/reveal.js/tree/master/plugin/highlight
-name: QuartoLineHighlight
-script: line-highlight.js
-stylesheet: line-highlight.css
diff --git a/index_files/libs/revealjs/plugin/quarto-support/footer.css b/index_files/libs/revealjs/plugin/quarto-support/footer.css
deleted file mode 100644
index 385473d..0000000
--- a/index_files/libs/revealjs/plugin/quarto-support/footer.css
+++ /dev/null
@@ -1,109 +0,0 @@
-.reveal .slide-logo {
-  display: block;
-  position: fixed;
-  bottom: 0;
-  right: 12px;
-  max-height: 2.2rem;
-  height: 100%;
-  width: auto;
-}
-
-.reveal .footer {
-  display: block;
-  position: fixed;
-  bottom: 18px;
-  width: 100%;
-  margin: 0 auto;
-  text-align: center;
-  font-size: 18px;
-  z-index: 2;
-}
-
-.reveal .footer > * {
-  margin-top: 0;
-  margin-bottom: 0;
-}
-
-.reveal .slide .footer {
-  display: none;
-}
-
-.reveal .slide-number {
-  bottom: 10px;
-  right: 10px;
-  font-size: 16px;
-  background-color: transparent;
-}
-
-.reveal.has-logo .slide-number {
-  bottom: initial;
-  top: 8px;
-  right: 8px;
-}
-
-.reveal .slide-number .slide-number-delimiter {
-  margin: 0;
-}
-
-.reveal .slide-menu-button {
-  left: 8px;
-  bottom: 8px;
-}
-
-.reveal .slide-chalkboard-buttons {
-  position: fixed;
-  left: 12px;
-  bottom: 8px;
-  z-index: 30;
-  font-size: 24px;
-}
-
-.reveal .slide-chalkboard-buttons.slide-menu-offset {
-  left: 54px;
-}
-
-.reveal .slide-chalkboard-buttons > span {
-  margin-right: 14px;
-  cursor: pointer;
-}
-
-@media screen and (max-width: 800px) {
-  .reveal .slide-logo {
-    max-height: 1.1rem;
-    bottom: -2px;
-    right: 10px;
-  }
-  .reveal .footer {
-    font-size: 14px;
-    bottom: 12px;
-  }
-  .reveal .slide-number {
-    font-size: 12px;
-    bottom: 7px;
-  }
-  .reveal .slide-menu-button .fas::before {
-    height: 1.3rem;
-    width: 1.3rem;
-    vertical-align: -0.125em;
-    background-size: 1.3rem 1.3rem;
-  }
-
-  .reveal .slide-chalkboard-buttons .fas::before {
-    height: 0.95rem;
-    width: 0.95rem;
-    background-size: 0.95rem 0.95rem;
-    vertical-align: -0em;
-  }
-
-  .reveal .slide-chalkboard-buttons.slide-menu-offset {
-    left: 36px;
-  }
-  .reveal .slide-chalkboard-buttons > span {
-    margin-right: 9px;
-  }
-}
-
-html.print-pdf .reveal .slide-menu-button,
-html.print-pdf .reveal .slide-chalkboard-buttons {
-  display: none;
-}
diff --git a/index_files/libs/revealjs/plugin/quarto-support/plugin.yml b/index_files/libs/revealjs/plugin/quarto-support/plugin.yml
deleted file mode 100644
index 546956e..0000000
--- a/index_files/libs/revealjs/plugin/quarto-support/plugin.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-name: QuartoSupport
-script: support.js
-stylesheet: footer.css
-config:
-  smaller: false
diff --git a/index_files/libs/revealjs/plugin/quarto-support/support.js b/index_files/libs/revealjs/plugin/quarto-support/support.js
deleted file mode 100644
index ab97ded..0000000
--- a/index_files/libs/revealjs/plugin/quarto-support/support.js
+++ /dev/null
@@ -1,243 +0,0 @@
-// catch all plugin for various quarto features
-window.QuartoSupport = function () {
-  function isPrintView() {
-    return /print-pdf/gi.test(window.location.search);
-  }
-
-  // implement controlsAudo
-  function controlsAuto(deck) {
-    const config = deck.getConfig();
-    if (config.controlsAuto === true) {
-      const iframe = window.location !== window.parent.location;
-      const localhost =
-        window.location.hostname === "localhost" ||
-        window.location.hostname === "127.0.0.1";
-      deck.configure({
-        controls:
-          (iframe && !localhost) ||
-          (deck.hasVerticalSlides() && config.navigationMode !== "linear"),
-      });
-    }
-  }
-
-  // helper to provide event handlers for all links in a container
-  function handleLinkClickEvents(deck, container) {
-    Array.from(container.querySelectorAll("a")).forEach((el) => {
-      const url = el.getAttribute("href");
-      if (/^(http|www)/gi.test(url)) {
-        el.addEventListener(
-          "click",
-          (ev) => {
-            const fullscreen = !!window.document.fullscreen;
-            const dataPreviewLink = el.getAttribute("data-preview-link");
-
-            // if there is a local specifcation then use that
-            if (dataPreviewLink) {
-              if (
-                dataPreviewLink === "true" ||
-                (dataPreviewLink === "auto" && fullscreen)
-              ) {
-                ev.preventDefault();
-                deck.showPreview(url);
-                return false;
-              }
-            } else {
-              const previewLinks = !!deck.getConfig().previewLinks;
-              const previewLinksAuto =
-                deck.getConfig().previewLinksAuto === true;
-              if (previewLinks == true || (previewLinksAuto && fullscreen)) {
-                ev.preventDefault();
-                deck.showPreview(url);
-                return false;
-              }
-            }
-
-            // if the deck is in an iframe we want to open it externally
-            const iframe = window.location !== window.parent.location;
-            if (iframe) {
-              ev.preventDefault();
-              ev.stopImmediatePropagation();
-              window.open(url, "_blank");
-              return false;
-            }
-
-            // if the user has set data-preview-link to "auto" we need to handle the event
-            // (because reveal will interpret "auto" as true)
-            if (dataPreviewLink === "auto") {
-              ev.preventDefault();
-              ev.stopImmediatePropagation();
-              const target =
-                el.getAttribute("target") ||
-                (ev.ctrlKey || ev.metaKey ? "_blank" : "");
-              if (target) {
-                window.open(url, target);
-              } else {
-                window.location.href = url;
-              }
-              return false;
-            }
-          },
-          false
-        );
-      }
-    });
-  }
-
-  // implement previewLinksAuto
-  function previewLinksAuto(deck) {
-    handleLinkClickEvents(deck, deck.getRevealElement());
-  }
-
-  // apply styles
-  function applyGlobalStyles(deck) {
-    if (deck.getConfig()["smaller"] === true) {
-      const revealParent = deck.getRevealElement();
-      revealParent.classList.add("smaller");
-    }
-  }
-
-  // add logo image
-  function addLogoImage(deck) {
-    const revealParent = deck.getRevealElement();
-    const logoImg = document.querySelector(".slide-logo");
-    if (logoImg) {
-      revealParent.appendChild(logoImg);
-      revealParent.classList.add("has-logo");
-    }
-  }
-
-  // add footer text
-  function addFooter(deck) {
-    const revealParent = deck.getRevealElement();
-    const defaultFooterDiv = document.querySelector(".footer-default");
-    if (defaultFooterDiv) {
-      revealParent.appendChild(defaultFooterDiv);
-      handleLinkClickEvents(deck, defaultFooterDiv);
-      if (!isPrintView()) {
-        deck.on("slidechanged", function (ev) {
-          const prevSlideFooter = document.querySelector(
-            ".reveal > .footer:not(.footer-default)"
-          );
-          if (prevSlideFooter) {
-            prevSlideFooter.remove();
-          }
-          const currentSlideFooter = ev.currentSlide.querySelector(".footer");
-          if (currentSlideFooter) {
-            defaultFooterDiv.style.display = "none";
-            const slideFooter = currentSlideFooter.cloneNode(true);
-            handleLinkClickEvents(deck, slideFooter);
-            deck.getRevealElement().appendChild(slideFooter);
-          } else {
-            defaultFooterDiv.style.display = "block";
-          }
-        });
-      }
-    }
-  }
-
-  // add chalkboard buttons
-  function addChalkboardButtons(deck) {
-    const chalkboard = deck.getPlugin("RevealChalkboard");
-    if (chalkboard && !isPrintView()) {
-      const revealParent = deck.getRevealElement();
-      const chalkboardDiv = document.createElement("div");
-      chalkboardDiv.classList.add("slide-chalkboard-buttons");
-      if (document.querySelector(".slide-menu-button")) {
-        chalkboardDiv.classList.add("slide-menu-offset");
-      }
-      // add buttons
-      const buttons = [
-        {
-          icon: "easel2",
-          title: "Toggle Chalkboard (b)",
-          onclick: chalkboard.toggleChalkboard,
-        },
-        {
-          icon: "brush",
-          title: "Toggle Notes Canvas (c)",
-          onclick: chalkboard.toggleNotesCanvas,
-        },
-      ];
-      buttons.forEach(function (button) {
-        const span = document.createElement("span");
-        span.title = button.title;
-        const icon = document.createElement("i");
-        icon.classList.add("fas");
-        icon.classList.add("fa-" + button.icon);
-        span.appendChild(icon);
-        span.onclick = function (event) {
-          event.preventDefault();
-          button.onclick();
-        };
-        chalkboardDiv.appendChild(span);
-      });
-      revealParent.appendChild(chalkboardDiv);
-      const config = deck.getConfig();
-      if (!config.chalkboard.buttons) {
-        chalkboardDiv.classList.add("hidden");
-      }
-
-      // show and hide chalkboard buttons on slidechange
-      deck.on("slidechanged", function (ev) {
-        const config = deck.getConfig();
-        let buttons = !!config.chalkboard.buttons;
-        const slideButtons = ev.currentSlide.getAttribute(
-          "data-chalkboard-buttons"
-        );
-        if (slideButtons) {
-          if (slideButtons === "true" || slideButtons === "1") {
-            buttons = true;
-          } else if (slideButtons === "false" || slideButtons === "0") {
-            buttons = false;
-          }
-        }
-        if (buttons) {
-          chalkboardDiv.classList.remove("hidden");
-        } else {
-          chalkboardDiv.classList.add("hidden");
-        }
-      });
-    }
-  }
-
-  function handleTabbyClicks() {
-    const tabs = document.querySelectorAll(".panel-tabset-tabby > li > a");
-    for (let i = 0; i < tabs.length; i++) {
-      const tab = tabs[i];
-      tab.onclick = function (ev) {
-        ev.preventDefault();
-        ev.stopPropagation();
-        return false;
-      };
-    }
-  }
-
-  function fixupForPrint(deck) {
-    if (isPrintView()) {
-      const slides = deck.getSlides();
-      slides.forEach(function (slide) {
-        slide.removeAttribute("data-auto-animate");
-      });
-      window.document.querySelectorAll(".hljs").forEach(function (el) {
-        el.classList.remove("hljs");
-      });
-      window.document.querySelectorAll(".hljs-ln-code").forEach(function (el) {
-        el.classList.remove("hljs-ln-code");
-      });
-    }
-  }
-
-  return {
-    id: "quarto-support",
-    init: function (deck) {
-      controlsAuto(deck);
-      previewLinksAuto(deck);
-      fixupForPrint(deck);
-      applyGlobalStyles(deck);
-      addLogoImage(deck);
-      addFooter(deck);
-      addChalkboardButtons(deck);
-      handleTabbyClicks();
-    },
-  };
-};
diff --git a/index_files/libs/revealjs/plugin/reveal-menu/menu.css b/index_files/libs/revealjs/plugin/reveal-menu/menu.css
deleted file mode 100644
index 5a300fd..0000000
--- a/index_files/libs/revealjs/plugin/reveal-menu/menu.css
+++ /dev/null
@@ -1,346 +0,0 @@
-.slide-menu-wrapper {
-  font-family: 'Source Sans Pro', Helvetica, sans-serif;
-}
-
-.slide-menu-wrapper .slide-menu {
-  background-color: #333;
-  z-index: 200;
-  position: fixed;
-  top: 0;
-  width: 300px;
-  height: 100%;
-  /*overflow-y: scroll;*/
-  transition: transform 0.3s;
-  font-size: 16px;
-  font-weight: normal;
-}
-
-.slide-menu-wrapper .slide-menu.slide-menu--wide {
-  width: 500px;
-}
-
-.slide-menu-wrapper .slide-menu.slide-menu--third {
-  width: 33%;
-}
-
-.slide-menu-wrapper .slide-menu.slide-menu--half {
-  width: 50%;
-}
-
-.slide-menu-wrapper .slide-menu.slide-menu--full {
-  width: 95%;
-}
-
-/*
- * Slides menu
- */
-
-.slide-menu-wrapper .slide-menu-items {
-  margin: 0;
-  padding: 0;
-  width: 100%;
-  border-bottom: solid 1px #555;
-}
-
-.slide-menu-wrapper .slide-menu-item,
-.slide-menu-wrapper .slide-menu-item-vertical {
-  display: block;
-  text-align: left;
-  padding: 10px 18px;
-  color: #aaa;
-  cursor: pointer;
-}
-
-.slide-menu-wrapper .slide-menu-item-vertical {
-  padding-left: 30px;
-}
-
-.slide-menu-wrapper .slide-menu--wide .slide-menu-item-vertical,
-.slide-menu-wrapper .slide-menu--third .slide-menu-item-vertical,
-.slide-menu-wrapper .slide-menu--half .slide-menu-item-vertical,
-.slide-menu-wrapper .slide-menu--full .slide-menu-item-vertical,
-.slide-menu-wrapper .slide-menu--custom .slide-menu-item-vertical {
-  padding-left: 50px;
-}
-
-.slide-menu-wrapper .slide-menu-item {
-  border-top: solid 1px #555;
-}
-
-.slide-menu-wrapper .active-menu-panel li.selected {
-  background-color: #222;
-  color: white;
-}
-
-.slide-menu-wrapper .active-menu-panel li.active {
-  color: #eee;
-}
-
-.slide-menu-wrapper .slide-menu-item.no-title .slide-menu-item-title,
-.slide-menu-wrapper .slide-menu-item-vertical.no-title .slide-menu-item-title {
-  font-style: italic;
-}
-
-.slide-menu-wrapper .slide-menu-item-number {
-  color: #999;
-  padding-right: 6px;
-}
-
-.slide-menu-wrapper .slide-menu-item i.far,
-.slide-menu-wrapper .slide-menu-item i.fas,
-.slide-menu-wrapper .slide-menu-item-vertical i.far,
-.slide-menu-wrapper .slide-menu-item-vertical i.fas,
-.slide-menu-wrapper .slide-menu-item svg.svg-inline--fa,
-.slide-menu-wrapper .slide-menu-item-vertical svg.svg-inline--fa {
-  padding-right: 12px;
-  display: none;
-}
-
-.slide-menu-wrapper .slide-menu-item.past i.fas.past,
-.slide-menu-wrapper .slide-menu-item-vertical.past i.fas.past,
-.slide-menu-wrapper .slide-menu-item.active i.fas.active,
-.slide-menu-wrapper .slide-menu-item-vertical.active i.fas.active,
-.slide-menu-wrapper .slide-menu-item.future i.far.future,
-.slide-menu-wrapper .slide-menu-item-vertical.future i.far.future,
-.slide-menu-wrapper .slide-menu-item.past svg.svg-inline--fa.past,
-.slide-menu-wrapper .slide-menu-item-vertical.past svg.svg-inline--fa.past,
-.slide-menu-wrapper .slide-menu-item.active svg.svg-inline--fa.active,
-.slide-menu-wrapper .slide-menu-item-vertical.active svg.svg-inline--fa.active,
-.slide-menu-wrapper .slide-menu-item.future svg.svg-inline--fa.future,
-.slide-menu-wrapper .slide-menu-item-vertical.future svg.svg-inline--fa.future {
-  display: inline-block;
-}
-
-.slide-menu-wrapper .slide-menu-item.past i.fas.past,
-.slide-menu-wrapper .slide-menu-item-vertical.past i.fas.past,
-.slide-menu-wrapper .slide-menu-item.future i.far.future,
-.slide-menu-wrapper .slide-menu-item-vertical.future i.far.future,
-.slide-menu-wrapper .slide-menu-item.past svg.svg-inline--fa.past,
-.slide-menu-wrapper .slide-menu-item-vertical.past svg.svg-inline--fa.past,
-.slide-menu-wrapper .slide-menu-item.future svg.svg-inline--fa.future,
-.slide-menu-wrapper .slide-menu-item-vertical.future svg.svg-inline--fa.future {
-  opacity: 0.4;
-}
-
-.slide-menu-wrapper .slide-menu-item.active i.fas.active,
-.slide-menu-wrapper .slide-menu-item-vertical.active i.fas.active,
-.slide-menu-wrapper .slide-menu-item.active svg.svg-inline--fa.active,
-.slide-menu-wrapper .slide-menu-item-vertical.active svg.svg-inline--fa.active {
-  opacity: 0.8;
-}
-
-.slide-menu-wrapper .slide-menu--left {
-  left: 0;
-  -webkit-transform: translateX(-100%);
-  -ms-transform: translateX(-100%);
-  transform: translateX(-100%);
-}
-
-.slide-menu-wrapper .slide-menu--left.active {
-  -webkit-transform: translateX(0);
-  -ms-transform: translateX(0);
-  transform: translateX(0);
-}
-
-.slide-menu-wrapper .slide-menu--right {
-  right: 0;
-  -webkit-transform: translateX(100%);
-  -ms-transform: translateX(100%);
-  transform: translateX(100%);
-}
-
-.slide-menu-wrapper .slide-menu--right.active {
-  -webkit-transform: translateX(0);
-  -ms-transform: translateX(0);
-  transform: translateX(0);
-}
-
-.slide-menu-wrapper {
-  transition: transform 0.3s;
-}
-
-/*
- * Toolbar
- */
-.slide-menu-wrapper .slide-menu-toolbar {
-  height: 60px;
-  width: 100%;
-  font-size: 12px;
-  display: table;
-  table-layout: fixed; /* ensures equal width */
-  margin: 0;
-  padding: 0;
-  border-bottom: solid 2px #666;
-}
-
-.slide-menu-wrapper .slide-menu-toolbar > li {
-  display: table-cell;
-  line-height: 150%;
-  text-align: center;
-  vertical-align: middle;
-  cursor: pointer;
-  color: #aaa;
-  border-radius: 3px;
-}
-
-.slide-menu-wrapper .slide-menu-toolbar > li.toolbar-panel-button i,
-.slide-menu-wrapper
-  .slide-menu-toolbar
-  > li.toolbar-panel-button
-  svg.svg-inline--fa {
-  font-size: 1.7em;
-}
-
-.slide-menu-wrapper .slide-menu-toolbar > li.active-toolbar-button {
-  color: white;
-  text-shadow: 0 1px black;
-  text-decoration: underline;
-}
-
-.slide-menu-toolbar > li.toolbar-panel-button:hover {
-  color: white;
-}
-
-.slide-menu-toolbar
-  > li.toolbar-panel-button:hover
-  span.slide-menu-toolbar-label,
-.slide-menu-wrapper
-  .slide-menu-toolbar
-  > li.active-toolbar-button
-  span.slide-menu-toolbar-label {
-  visibility: visible;
-}
-
-/*
- * Panels
- */
-.slide-menu-wrapper .slide-menu-panel {
-  position: absolute;
-  width: 100%;
-  visibility: hidden;
-  height: calc(100% - 60px);
-  overflow-x: hidden;
-  overflow-y: auto;
-  color: #aaa;
-}
-
-.slide-menu-wrapper .slide-menu-panel.active-menu-panel {
-  visibility: visible;
-}
-
-.slide-menu-wrapper .slide-menu-panel h1,
-.slide-menu-wrapper .slide-menu-panel h2,
-.slide-menu-wrapper .slide-menu-panel h3,
-.slide-menu-wrapper .slide-menu-panel h4,
-.slide-menu-wrapper .slide-menu-panel h5,
-.slide-menu-wrapper .slide-menu-panel h6 {
-  margin: 20px 0 10px 0;
-  color: #fff;
-  line-height: 1.2;
-  letter-spacing: normal;
-  text-shadow: none;
-}
-
-.slide-menu-wrapper .slide-menu-panel h1 {
-  font-size: 1.6em;
-}
-.slide-menu-wrapper .slide-menu-panel h2 {
-  font-size: 1.4em;
-}
-.slide-menu-wrapper .slide-menu-panel h3 {
-  font-size: 1.3em;
-}
-.slide-menu-wrapper .slide-menu-panel h4 {
-  font-size: 1.1em;
-}
-.slide-menu-wrapper .slide-menu-panel h5 {
-  font-size: 1em;
-}
-.slide-menu-wrapper .slide-menu-panel h6 {
-  font-size: 0.9em;
-}
-
-.slide-menu-wrapper .slide-menu-panel p {
-  margin: 10px 0 5px 0;
-}
-
-.slide-menu-wrapper .slide-menu-panel a {
-  color: #ccc;
-  text-decoration: underline;
-}
-
-.slide-menu-wrapper .slide-menu-panel a:hover {
-  color: white;
-}
-
-.slide-menu-wrapper .slide-menu-item a {
-  text-decoration: none;
-}
-
-.slide-menu-wrapper .slide-menu-custom-panel {
-  width: calc(100% - 20px);
-  padding-left: 10px;
-  padding-right: 10px;
-}
-
-.slide-menu-wrapper .slide-menu-custom-panel .slide-menu-items {
-  width: calc(100% + 20px);
-  margin-left: -10px;
-  margin-right: 10px;
-}
-
-/*
- * Theme and Transitions buttons
- */
-
-.slide-menu-wrapper div[data-panel='Themes'] li,
-.slide-menu-wrapper div[data-panel='Transitions'] li {
-  display: block;
-  text-align: left;
-  cursor: pointer;
-  color: #848484;
-}
-
-/*
- * Menu controls
- */
-.reveal .slide-menu-button {
-  position: fixed;
-  left: 30px;
-  bottom: 30px;
-  z-index: 30;
-  font-size: 24px;
-}
-
-/*
- * Menu overlay
- */
-
-.slide-menu-wrapper .slide-menu-overlay {
-  position: fixed;
-  z-index: 199;
-  top: 0;
-  left: 0;
-  overflow: hidden;
-  width: 0;
-  height: 0;
-  background-color: #000;
-  opacity: 0;
-  transition: opacity 0.3s, width 0s 0.3s, height 0s 0.3s;
-}
-
-.slide-menu-wrapper .slide-menu-overlay.active {
-  width: 100%;
-  height: 100%;
-  opacity: 0.7;
-  transition: opacity 0.3s;
-}
-
-/*
- * Hide menu for pdf printing
- */
-body.print-pdf .slide-menu-wrapper .slide-menu,
-body.print-pdf .reveal .slide-menu-button,
-body.print-pdf .slide-menu-wrapper .slide-menu-overlay {
-  display: none;
-}
diff --git a/index_files/libs/revealjs/plugin/reveal-menu/menu.js b/index_files/libs/revealjs/plugin/reveal-menu/menu.js
deleted file mode 100644
index 5369df3..0000000
--- a/index_files/libs/revealjs/plugin/reveal-menu/menu.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).RevealMenu=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&n.path)}},n.exports),n.exports}var n=function(e){return e&&e.Math==Math&&e},r=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")(),i=function(e){try{return!!e()}catch(e){return!0}},a=!i((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),o={}.propertyIsEnumerable,s=Object.getOwnPropertyDescriptor,l={f:s&&!o.call({1:2},1)?function(e){var t=s(this,e);return!!t&&t.enumerable}:o},c=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},u={}.toString,f=function(e){return u.call(e).slice(8,-1)},d="".split,p=i((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==f(e)?d.call(e,""):Object(e)}:Object,h=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},m=function(e){return p(h(e))},v=function(e){return"object"==typeof e?null!==e:"function"==typeof e},g=function(e,t){if(!v(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!v(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!v(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!v(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")},y={}.hasOwnProperty,b=function(e,t){return y.call(e,t)},S=r.document,E=v(S)&&v(S.createElement),x=!a&&!i((function(){return 7!=Object.defineProperty((e="div",E?S.createElement(e):{}),"a",{get:function(){return 7}}).a;var e})),w=Object.getOwnPropertyDescriptor,L={f:a?w:function(e,t){if(e=m(e),t=g(t,!0),x)try{return w(e,t)}catch(e){}if(b(e,t))return c(!l.f.call(e,t),e[t])}},T=function(e){if(!v(e))throw TypeError(String(e)+" is not an object");return e},C=Object.defineProperty,O={f:a?C:function(e,t,n){if(T(e),t=g(t,!0),T(n),x)try{return C(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},A=a?function(e,t,n){return O.f(e,t,c(1,n))}:function(e,t,n){return e[t]=n,e},k=function(e,t){try{A(r,e,t)}catch(n){r[e]=t}return t},I=r["__core-js_shared__"]||k("__core-js_shared__",{}),P=Function.toString;"function"!=typeof I.inspectSource&&(I.inspectSource=function(e){return P.call(e)});var M,R,j,N,_=I.inspectSource,F=r.WeakMap,W="function"==typeof F&&/native code/.test(_(F)),H=t((function(e){(e.exports=function(e,t){return I[e]||(I[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.5",mode:"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})})),U=0,$=Math.random(),D=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++U+$).toString(36)},q=H("keys"),B={},G=r.WeakMap;if(W){var V=new G,K=V.get,z=V.has,X=V.set;M=function(e,t){return X.call(V,e,t),t},R=function(e){return K.call(V,e)||{}},j=function(e){return z.call(V,e)}}else{var Y=q[N="state"]||(q[N]=D(N));B[Y]=!0,M=function(e,t){return A(e,Y,t),t},R=function(e){return b(e,Y)?e[Y]:{}},j=function(e){return b(e,Y)}}var J={set:M,get:R,has:j,enforce:function(e){return j(e)?R(e):M(e,{})},getterFor:function(e){return function(t){var n;if(!v(t)||(n=R(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},Z=t((function(e){var t=J.get,n=J.enforce,i=String(String).split("String");(e.exports=function(e,t,a,o){var s=!!o&&!!o.unsafe,l=!!o&&!!o.enumerable,c=!!o&&!!o.noTargetGet;"function"==typeof a&&("string"!=typeof t||b(a,"name")||A(a,"name",t),n(a).source=i.join("string"==typeof t?t:"")),e!==r?(s?!c&&e[t]&&(l=!0):delete e[t],l?e[t]=a:A(e,t,a)):l?e[t]=a:k(t,a)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||_(this)}))})),Q=r,ee=function(e){return"function"==typeof e?e:void 0},te=function(e,t){return arguments.length<2?ee(Q[e])||ee(r[e]):Q[e]&&Q[e][t]||r[e]&&r[e][t]},ne=Math.ceil,re=Math.floor,ie=function(e){return isNaN(e=+e)?0:(e>0?re:ne)(e)},ae=Math.min,oe=function(e){return e>0?ae(ie(e),9007199254740991):0},se=Math.max,le=Math.min,ce=function(e,t){var n=ie(e);return n<0?se(n+t,0):le(n,t)},ue=function(e){return function(t,n,r){var i,a=m(t),o=oe(a.length),s=ce(r,o);if(e&&n!=n){for(;o>s;)if((i=a[s++])!=i)return!0}else for(;o>s;s++)if((e||s in a)&&a[s]===n)return e||s||0;return!e&&-1}},fe={includes:ue(!0),indexOf:ue(!1)},de=fe.indexOf,pe=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),he={f:Object.getOwnPropertyNames||function(e){return function(e,t){var n,r=m(e),i=0,a=[];for(n in r)!b(B,n)&&b(r,n)&&a.push(n);for(;t.length>i;)b(r,n=t[i++])&&(~de(a,n)||a.push(n));return a}(e,pe)}},me={f:Object.getOwnPropertySymbols},ve=te("Reflect","ownKeys")||function(e){var t=he.f(T(e)),n=me.f;return n?t.concat(n(e)):t},ge=function(e,t){for(var n=ve(t),r=O.f,i=L.f,a=0;ay;y++)if((o||y in m)&&(d=v(f=m[y],y,h),e))if(t)S[y]=d;else if(d)switch(e){case 3:return!0;case 5:return f;case 6:return y;case 2:We.call(S,f)}else if(i)return!1;return a?-1:r||i?i:S}},Ue={forEach:He(0),map:He(1),filter:He(2),some:He(3),every:He(4),find:He(5),findIndex:He(6)},$e=function(e,t){var n=[][e];return!!n&&i((function(){n.call(null,t||function(){throw 1},1)}))},De=Object.defineProperty,qe={},Be=function(e){throw e},Ge=function(e,t){if(b(qe,e))return qe[e];t||(t={});var n=[][e],r=!!b(t,"ACCESSORS")&&t.ACCESSORS,o=b(t,0)?t[0]:Be,s=b(t,1)?t[1]:void 0;return qe[e]=!!n&&!i((function(){if(r&&!a)return!0;var e={length:-1};r?De(e,1,{enumerable:!0,get:Be}):e[1]=1,n.call(e,o,s)}))},Ve=Ue.every,Ke=$e("every"),ze=Ge("every");Ce({target:"Array",proto:!0,forced:!Ke||!ze},{every:function(e){return Ve(this,e,arguments.length>1?arguments[1]:void 0)}});var Xe,Ye,Je=te("navigator","userAgent")||"",Ze=r.process,Qe=Ze&&Ze.versions,et=Qe&&Qe.v8;et?Ye=(Xe=et.split("."))[0]+Xe[1]:Je&&(!(Xe=Je.match(/Edge\/(\d+)/))||Xe[1]>=74)&&(Xe=Je.match(/Chrome\/(\d+)/))&&(Ye=Xe[1]);var tt=Ye&&+Ye,nt=Ne("species"),rt=function(e){return tt>=51||!i((function(){var t=[];return(t.constructor={})[nt]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},it=Ue.filter,at=rt("filter"),ot=Ge("filter");Ce({target:"Array",proto:!0,forced:!at||!ot},{filter:function(e){return it(this,e,arguments.length>1?arguments[1]:void 0)}});var st=Ue.forEach,lt=$e("forEach"),ct=Ge("forEach"),ut=lt&&ct?[].forEach:function(e){return st(this,e,arguments.length>1?arguments[1]:void 0)};Ce({target:"Array",proto:!0,forced:[].forEach!=ut},{forEach:ut});var ft=fe.indexOf,dt=[].indexOf,pt=!!dt&&1/[1].indexOf(1,-0)<0,ht=$e("indexOf"),mt=Ge("indexOf",{ACCESSORS:!0,1:0});Ce({target:"Array",proto:!0,forced:pt||!ht||!mt},{indexOf:function(e){return pt?dt.apply(this,arguments)||0:ft(this,e,arguments.length>1?arguments[1]:void 0)}}),Ce({target:"Array",stat:!0},{isArray:ke});var vt=[].join,gt=p!=Object,yt=$e("join",",");Ce({target:"Array",proto:!0,forced:gt||!yt},{join:function(e){return vt.call(m(this),void 0===e?",":e)}});var bt=Math.min,St=[].lastIndexOf,Et=!!St&&1/[1].lastIndexOf(1,-0)<0,xt=$e("lastIndexOf"),wt=Ge("indexOf",{ACCESSORS:!0,1:0}),Lt=Et||!xt||!wt?function(e){if(Et)return St.apply(this,arguments)||0;var t=m(this),n=oe(t.length),r=n-1;for(arguments.length>1&&(r=bt(r,ie(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:St;Ce({target:"Array",proto:!0,forced:Lt!==[].lastIndexOf},{lastIndexOf:Lt});var Tt=Ue.map,Ct=rt("map"),Ot=Ge("map");Ce({target:"Array",proto:!0,forced:!Ct||!Ot},{map:function(e){return Tt(this,e,arguments.length>1?arguments[1]:void 0)}});var At=function(e,t,n){var r=g(t);r in e?O.f(e,r,c(0,n)):e[r]=n},kt=rt("slice"),It=Ge("slice",{ACCESSORS:!0,0:0,1:2}),Pt=Ne("species"),Mt=[].slice,Rt=Math.max;Ce({target:"Array",proto:!0,forced:!kt||!It},{slice:function(e,t){var n,r,i,a=m(this),o=oe(a.length),s=ce(e,o),l=ce(void 0===t?o:t,o);if(ke(a)&&("function"!=typeof(n=a.constructor)||n!==Array&&!ke(n.prototype)?v(n)&&null===(n=n[Pt])&&(n=void 0):n=void 0,n===Array||void 0===n))return Mt.call(a,s,l);for(r=new(void 0===n?Array:n)(Rt(l-s,0)),i=0;s>>0||(Qt.test(n)?16:10))}:Zt;Ce({global:!0,forced:parseInt!=en},{parseInt:en});var tn=function(){var e=T(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t};function nn(e,t){return RegExp(e,t)}var rn,an,on={UNSUPPORTED_Y:i((function(){var e=nn("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),BROKEN_CARET:i((function(){var e=nn("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},sn=RegExp.prototype.exec,ln=String.prototype.replace,cn=sn,un=(rn=/a/,an=/b*/g,sn.call(rn,"a"),sn.call(an,"a"),0!==rn.lastIndex||0!==an.lastIndex),fn=on.UNSUPPORTED_Y||on.BROKEN_CARET,dn=void 0!==/()??/.exec("")[1];(un||dn||fn)&&(cn=function(e){var t,n,r,i,a=this,o=fn&&a.sticky,s=tn.call(a),l=a.source,c=0,u=e;return o&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),u=String(e).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==e[a.lastIndex-1])&&(l="(?: "+l+")",u=" "+u,c++),n=new RegExp("^(?:"+l+")",s)),dn&&(n=new RegExp("^"+l+"$(?!\\s)",s)),un&&(t=a.lastIndex),r=sn.call(o?n:a,u),o?r?(r.input=r.input.slice(c),r[0]=r[0].slice(c),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:un&&r&&(a.lastIndex=a.global?r.index+r[0].length:t),dn&&r&&r.length>1&&ln.call(r[0],n,(function(){for(i=1;i1?arguments[1]:void 0,r=oe(t.length),i=void 0===n?r:xn(oe(n),r),a=String(e);return En?En.call(t,a,i):t.slice(i-a.length,i)===a}});var Ln=Ne("species"),Tn=!i((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")})),Cn="$0"==="a".replace(/./,"$0"),On=Ne("replace"),An=!!/./[On]&&""===/./[On]("a","$0"),kn=!i((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),In=function(e,t,n,r){var a=Ne(e),o=!i((function(){var t={};return t[a]=function(){return 7},7!=""[e](t)})),s=o&&!i((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[Ln]=function(){return n},n.flags="",n[a]=/./[a]),n.exec=function(){return t=!0,null},n[a](""),!t}));if(!o||!s||"replace"===e&&(!Tn||!Cn||An)||"split"===e&&!kn){var l=/./[a],c=n(a,""[e],(function(e,t,n,r,i){return t.exec===pn?o&&!i?{done:!0,value:l.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:Cn,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:An}),u=c[0],f=c[1];Z(String.prototype,e,u),Z(RegExp.prototype,a,2==t?function(e,t){return f.call(e,this,t)}:function(e){return f.call(e,this)})}r&&A(RegExp.prototype[a],"sham",!0)},Pn=function(e){return function(t,n){var r,i,a=String(h(t)),o=ie(n),s=a.length;return o<0||o>=s?e?"":void 0:(r=a.charCodeAt(o))<55296||r>56319||o+1===s||(i=a.charCodeAt(o+1))<56320||i>57343?e?a.charAt(o):r:e?a.slice(o,o+2):i-56320+(r-55296<<10)+65536}},Mn={codeAt:Pn(!1),charAt:Pn(!0)}.charAt,Rn=function(e,t,n){return t+(n?Mn(e,t).length:1)},jn=function(e,t){var n=e.exec;if("function"==typeof n){var r=n.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==f(e))throw TypeError("RegExp#exec called on incompatible receiver");return pn.call(e,t)},Nn=Math.max,_n=Math.min,Fn=Math.floor,Wn=/\$([$&'`]|\d\d?|<[^>]*>)/g,Hn=/\$([$&'`]|\d\d?)/g;In("replace",2,(function(e,t,n,r){var i=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,a=r.REPLACE_KEEPS_$0,o=i?"$":"$0";return[function(n,r){var i=h(this),a=null==n?void 0:n[e];return void 0!==a?a.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!i&&a||"string"==typeof r&&-1===r.indexOf(o)){var l=n(t,e,this,r);if(l.done)return l.value}var c=T(e),u=String(this),f="function"==typeof r;f||(r=String(r));var d=c.global;if(d){var p=c.unicode;c.lastIndex=0}for(var h=[];;){var m=jn(c,u);if(null===m)break;if(h.push(m),!d)break;""===String(m[0])&&(c.lastIndex=Rn(u,oe(c.lastIndex),p))}for(var v,g="",y=0,b=0;b=y&&(g+=u.slice(y,E)+O,y=E+S.length)}return g+u.slice(y)}];function s(e,n,r,i,a,o){var s=r+e.length,l=i.length,c=Hn;return void 0!==a&&(a=Ae(a),c=Wn),t.call(o,c,(function(t,o){var c;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,r);case"'":return n.slice(s);case"<":c=a[o.slice(1,-1)];break;default:var u=+o;if(0===u)return t;if(u>l){var f=Fn(u/10);return 0===f?t:f<=l?void 0===i[f-1]?o.charAt(1):i[f-1]+o.charAt(1):t}c=i[u-1]}return void 0===c?"":c}))}}));var Un=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};In("search",1,(function(e,t,n){return[function(t){var n=h(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=T(e),a=String(this),o=i.lastIndex;Un(o,0)||(i.lastIndex=0);var s=jn(i,a);return Un(i.lastIndex,o)||(i.lastIndex=o),null===s?-1:s.index}]}));var $n=Ne("species"),Dn=[].push,qn=Math.min,Bn=!i((function(){return!RegExp(4294967295,"y")}));In("split",2,(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(h(this)),i=void 0===n?4294967295:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!vn(e))return t.call(r,e,i);for(var a,o,s,l=[],c=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),u=0,f=new RegExp(e.source,c+"g");(a=pn.call(f,r))&&!((o=f.lastIndex)>u&&(l.push(r.slice(u,a.index)),a.length>1&&a.index=i));)f.lastIndex===a.index&&f.lastIndex++;return u===r.length?!s&&f.test("")||l.push(""):l.push(r.slice(u)),l.length>i?l.slice(0,i):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=h(this),a=null==t?void 0:t[e];return void 0!==a?a.call(t,i,n):r.call(String(i),t,n)},function(e,i){var a=n(r,e,this,i,r!==t);if(a.done)return a.value;var o=T(e),s=String(this),l=function(e,t){var n,r=T(e).constructor;return void 0===r||null==(n=T(r)[$n])?t:Oe(n)}(o,RegExp),c=o.unicode,u=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(Bn?"y":"g"),f=new l(Bn?o:"^(?:"+o.source+")",u),d=void 0===i?4294967295:i>>>0;if(0===d)return[];if(0===s.length)return null===jn(f,s)?[s]:[];for(var p=0,h=0,m=[];h1?arguments[1]:void 0,t.length)),r=String(e);return Vn?Vn.call(t,r,n):t.slice(n,n+r.length)===r}});var Xn,Yn=Kt.trim;Ce({target:"String",proto:!0,forced:(Xn="trim",i((function(){return!!Dt[Xn]()||"​…᠎"!="​…᠎"[Xn]()||Dt[Xn].name!==Xn})))},{trim:function(){return Yn(this)}});for(var Jn in{CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}){var Zn=r[Jn],Qn=Zn&&Zn.prototype;if(Qn&&Qn.forEach!==ut)try{A(Qn,"forEach",ut)}catch(e){Qn.forEach=ut}}var er=[].slice,tr=function(e){return function(t,n){var r=arguments.length>2,i=r?er.call(arguments,2):void 0;return e(r?function(){("function"==typeof t?t:Function(t)).apply(this,i)}:t,n)}};Ce({global:!0,bind:!0,forced:/MSIE .\./.test(Je)},{setTimeout:tr(r.setTimeout),setInterval:tr(r.setInterval)});return String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return this.substr(t||0,e.length)===e}),String.prototype.endsWith||(String.prototype.endsWith=function(e,t){return(void 0===t||t>this.length)&&(t=this.length),this.substring(t-e.length,t)===e}),function(){var e,t,n,r,i=(e=/(msie) ([\w.]+)/.exec(window.navigator.userAgent.toLowerCase()))&&"msie"===e[1]?parseFloat(e[2]):null,a=!1;function o(e){(r=e.menu||{}).path=r.path||function(){var e;if(document.querySelector('script[src$="menu.js"]')){var t=document.querySelector('script[src$="menu.js"]');t&&(e=t.src.slice(0,-7))}else e=("undefined"==typeof document?new(require("url").URL)("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("menu.js",document.baseURI).href).slice(0,("undefined"==typeof document?new(require("url").URL)("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("menu.js",document.baseURI).href).lastIndexOf("/")+1);return e}()||"plugin/menu/",r.path.endsWith("/")||(r.path+="/"),void 0===r.side&&(r.side="left"),void 0===r.numbers&&(r.numbers=!1),"string"!=typeof r.titleSelector&&(r.titleSelector="h1, h2, h3, h4, h5"),void 0===r.hideMissingTitles&&(r.hideMissingTitles=!1),void 0===r.useTextContentForMissingTitles&&(r.useTextContentForMissingTitles=!1),void 0===r.markers&&(r.markers=!0),"string"!=typeof r.themesPath&&(r.themesPath="dist/theme/"),r.themesPath.endsWith("/")||(r.themesPath+="/"),O("link#theme")||(r.themes=!1),!0===r.themes?r.themes=[{name:"Black",theme:r.themesPath+"black.css"},{name:"White",theme:r.themesPath+"white.css"},{name:"League",theme:r.themesPath+"league.css"},{name:"Sky",theme:r.themesPath+"sky.css"},{name:"Beige",theme:r.themesPath+"beige.css"},{name:"Simple",theme:r.themesPath+"simple.css"},{name:"Serif",theme:r.themesPath+"serif.css"},{name:"Blood",theme:r.themesPath+"blood.css"},{name:"Night",theme:r.themesPath+"night.css"},{name:"Moon",theme:r.themesPath+"moon.css"},{name:"Solarized",theme:r.themesPath+"solarized.css"}]:Array.isArray(r.themes)||(r.themes=!1),void 0===r.transitions&&(r.transitions=!1),!0===r.transitions?r.transitions=["None","Fade","Slide","Convex","Concave","Zoom"]:!1===r.transitions||Array.isArray(r.transitions)&&r.transitions.every((function(e){return"string"==typeof e}))||(console.error("reveal.js-menu error: transitions config value must be 'true' or an array of strings, eg ['None', 'Fade', 'Slide')"),r.transitions=!1),i&&i<=9&&(r.transitions=!1),void 0===r.openButton&&(r.openButton=!0),void 0===r.openSlideNumber&&(r.openSlideNumber=!1),void 0===r.keyboard&&(r.keyboard=!0),void 0===r.sticky&&(r.sticky=!1),void 0===r.autoOpen&&(r.autoOpen=!0),void 0===r.delayInit&&(r.delayInit=!1),void 0===r.openOnInit&&(r.openOnInit=!1)}var s=!0;function l(){s=!1}function c(){O("nav.slide-menu").addEventListener("mousemove",(function e(t){O("nav.slide-menu").removeEventListener("mousemove",e),s=!0}))}function u(e){var t=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-e.scrollLeft,n+=e.offsetTop-e.scrollTop,e=e.offsetParent;return{top:n,left:t}}(e).top-e.offsetParent.offsetTop;if(t<0)return-t;var n=e.offsetParent.offsetHeight-(e.offsetTop-e.offsetParent.scrollTop+e.offsetHeight);return n<0?n:0}function f(e){var t=u(e);t&&(l(),e.scrollIntoView(t>0),c())}function d(e){l(),e.offsetParent.scrollTop=e.offsetTop,c()}function p(e){l(),e.offsetParent.scrollTop=e.offsetTop-e.offsetParent.offsetHeight+e.offsetHeight,c()}function h(e){e.classList.add("selected"),f(e),r.sticky&&r.autoOpen&&E(e)}function m(e){if(b())switch(e.stopImmediatePropagation(),e.keyCode){case 72:case 37:!function(){var e=parseInt(O(".active-toolbar-button").getAttribute("data-button"))-1;e<0&&(e=T-1);S(null,O('.toolbar-panel-button[data-button="'+e+'"]').getAttribute("data-panel"))}();break;case 76:case 39:l=(parseInt(O(".active-toolbar-button").getAttribute("data-button"))+1)%T,S(null,O('.toolbar-panel-button[data-button="'+l+'"]').getAttribute("data-panel"));break;case 75:case 38:if(s=O(".active-menu-panel .slide-menu-items li.selected")||O(".active-menu-panel .slide-menu-items li.active"))A(".active-menu-panel .slide-menu-items li").forEach((function(e){e.classList.remove("selected")})),h(O('.active-menu-panel .slide-menu-items li[data-item="'+(parseInt(s.getAttribute("data-item"))-1)+'"]')||s);else(o=O(".active-menu-panel .slide-menu-items li.slide-menu-item"))&&h(o);break;case 74:case 40:if(s=O(".active-menu-panel .slide-menu-items li.selected")||O(".active-menu-panel .slide-menu-items li.active"))A(".active-menu-panel .slide-menu-items li").forEach((function(e){e.classList.remove("selected")})),h(O('.active-menu-panel .slide-menu-items li[data-item="'+(parseInt(s.getAttribute("data-item"))+1)+'"]')||s);else(o=O(".active-menu-panel .slide-menu-items li.slide-menu-item"))&&h(o);break;case 33:case 85:var t=A(".active-menu-panel .slide-menu-items li").filter((function(e){return u(e)>0})),n=A(".active-menu-panel .slide-menu-items li").filter((function(e){return 0==u(e)})),r=t.length>0&&Math.abs(u(t[t.length-1]))0&&(p(r),r=(n=A(".active-menu-panel .slide-menu-items li").filter((function(e){return 0==u(e)})))[0]==r?t[t.length-1]:n[0]),A(".active-menu-panel .slide-menu-items li").forEach((function(e){e.classList.remove("selected")})),h(r),d(r));break;case 34:case 68:n=A(".active-menu-panel .slide-menu-items li").filter((function(e){return 0==u(e)}));var i=A(".active-menu-panel .slide-menu-items li").filter((function(e){return u(e)<0})),a=i.length>0&&Math.abs(u(i[0]))0&&(d(a),a=(n=A(".active-menu-panel .slide-menu-items li").filter((function(e){return 0==u(e)})))[n.length-1]==a?i[0]:n[n.length-1]),A(".active-menu-panel .slide-menu-items li").forEach((function(e){e.classList.remove("selected")})),h(a),p(a));break;case 36:A(".active-menu-panel .slide-menu-items li").forEach((function(e){e.classList.remove("selected")})),(o=O(".active-menu-panel .slide-menu-items li:first-of-type"))&&(o.classList.add("selected"),f(o));break;case 35:var o;A(".active-menu-panel .slide-menu-items li").forEach((function(e){e.classList.remove("selected")})),(o=O(".active-menu-panel .slide-menu-items:last-of-type li:last-of-type"))&&(o.classList.add("selected"),f(o));break;case 32:case 13:var s;(s=O(".active-menu-panel .slide-menu-items li.selected"))&&E(s,!0);break;case 27:g(null,!0)}var l}function v(e){(e&&e.preventDefault(),b())||(O("body").classList.add("slide-menu-active"),O(".reveal").classList.add("has-"+r.effect+"-"+r.side),O(".slide-menu").classList.add("active"),O(".slide-menu-overlay").classList.add("active"),r.themes&&(A('div[data-panel="Themes"] li').forEach((function(e){e.classList.remove("active")})),A('li[data-theme="'+O("link#theme").getAttribute("href")+'"]').forEach((function(e){e.classList.add("active")}))),r.transitions&&(A('div[data-panel="Transitions"] li').forEach((function(e){e.classList.remove("active")})),A('li[data-transition="'+n.transition+'"]').forEach((function(e){e.classList.add("active")}))),A(".slide-menu-panel li.active").forEach((function(e){e.classList.add("selected"),f(e)})))}function g(e,t){e&&e.preventDefault(),r.sticky&&!t||(O("body").classList.remove("slide-menu-active"),O(".reveal").classList.remove("has-"+r.effect+"-"+r.side),O(".slide-menu").classList.remove("active"),O(".slide-menu-overlay").classList.remove("active"),A(".slide-menu-panel li.selected").forEach((function(e){e.classList.remove("selected")})))}function y(e){b()?g(e,!0):v(e)}function b(){return O("body").classList.contains("slide-menu-active")}function S(e,t){v(e);var n=t;"string"!=typeof t&&(n=e.currentTarget.getAttribute("data-panel")),O(".slide-menu-toolbar > li.active-toolbar-button").classList.remove("active-toolbar-button"),O('li[data-panel="'+n+'"]').classList.add("active-toolbar-button"),O(".slide-menu-panel.active-menu-panel").classList.remove("active-menu-panel"),O('div[data-panel="'+n+'"]').classList.add("active-menu-panel")}function E(e,n){var i=parseInt(e.getAttribute("data-slide-h")),a=parseInt(e.getAttribute("data-slide-v")),o=e.getAttribute("data-theme"),s=e.getAttribute("data-highlight-theme"),l=e.getAttribute("data-transition");isNaN(i)||isNaN(a)||t.slide(i,a),o&&I("theme",o),s&&I("highlight-theme",s),l&&t.configure({transition:l});var c=O("a",e);c&&(n||!r.sticky||r.autoOpen&&c.href.startsWith("#")||c.href.startsWith(window.location.origin+window.location.pathname+"#"))&&c.click(),g()}function x(e){"A"!==e.target.nodeName&&e.preventDefault(),E(e.currentTarget)}function w(){var e=t.getState();A("li.slide-menu-item, li.slide-menu-item-vertical").forEach((function(t){t.classList.remove("past"),t.classList.remove("active"),t.classList.remove("future");var n=parseInt(t.getAttribute("data-slide-h")),r=parseInt(t.getAttribute("data-slide-v"));n",s.appendChild(k("br"),O("i",s)),s.appendChild(k("span",{class:"slide-menu-toolbar-label"},e),O("i",s)),s.onclick=i,d.appendChild(s),s},i=function(e,i,a,o,s){function l(e,t){if(""===e)return null;var n=t?O(e,i):O(e);return n?n.textContent:null}var c=i.getAttribute("data-menu-title")||l(".menu-title",i)||l(r.titleSelector,i);if(!c&&r.useTextContentForMissingTitles&&(c=i.textContent.trim())&&(c=c.split("\n").map((function(e){return e.trim()})).join(" ").trim().replace(/^(.{16}[^\s]*).*/,"$1").replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")+"..."),!c){if(r.hideMissingTitles)return"";e+=" no-title",c="Slide "+(a+1)}var u=k("li",{class:e,"data-item":a,"data-slide-h":o,"data-slide-v":void 0===s?0:s});if(r.markers&&(u.appendChild(k("i",{class:"fas fa-check-circle fa-fw past"})),u.appendChild(k("i",{class:"fas fa-arrow-alt-circle-right fa-fw active"})),u.appendChild(k("i",{class:"far fa-circle fa-fw future"}))),r.numbers){var f=[],d="h.v";switch("string"==typeof r.numbers?d=r.numbers:"string"==typeof n.slideNumber&&(d=n.slideNumber),d){case"c":f.push(a+1);break;case"c/t":f.push(a+1,"/",t.getTotalSlides());break;case"h/v":f.push(o+1),"number"!=typeof s||isNaN(s)||f.push("/",s+1);break;default:f.push(o+1),"number"!=typeof s||isNaN(s)||f.push(".",s+1)}u.appendChild(k("span",{class:"slide-menu-item-number"},f.join("")+". "))}return u.appendChild(k("span",{class:"slide-menu-item-title"},c)),u},o=function(e){s&&(A(".active-menu-panel .slide-menu-items li.selected").forEach((function(e){e.classList.remove("selected")})),e.currentTarget.classList.add("selected"))},l=O(".reveal").parentElement,c=k("div",{class:"slide-menu-wrapper"});l.appendChild(c);var u=k("nav",{class:"slide-menu slide-menu--"+r.side});"string"==typeof r.width&&(-1!=["normal","wide","third","half","full"].indexOf(r.width)?u.classList.add("slide-menu--"+r.width):(u.classList.add("slide-menu--custom"),u.style.width=r.width)),c.appendChild(u),L();var f=k("div",{class:"slide-menu-overlay"});c.appendChild(f),f.onclick=function(){g(null,!0)};var d=k("ol",{class:"slide-menu-toolbar"});O(".slide-menu").appendChild(d),e("Slides","Slides","fa-images","fas",S,!0),r.custom&&r.custom.forEach((function(t,n,r){e(t.title,"Custom"+n,t.icon,null,S)})),r.themes&&e("Themes","Themes","fa-adjust","fas",S),r.transitions&&e("Transitions","Transitions","fa-sticky-note","fas",S);var p=k("li",{id:"close",class:"toolbar-panel-button"});if(p.appendChild(k("i",{class:"fas fa-times"})),p.appendChild(k("br")),p.appendChild(k("span",{class:"slide-menu-toolbar-label"},"Close")),p.onclick=function(){g(null,!0)},d.appendChild(p),function e(){if(document.querySelector("section[data-markdown]:not([data-markdown-parsed])"))setTimeout(e,100);else{var t=k("div",{"data-panel":"Slides",class:"slide-menu-panel active-menu-panel"});t.appendChild(k("ul",{class:"slide-menu-items"})),u.appendChild(t);var n=O('.slide-menu-panel[data-panel="Slides"] > .slide-menu-items'),r=0;A(".slides > section").forEach((function(e,t){var a=A("section",e);if(a.length>0)a.forEach((function(e,a){var o=i(0===a?"slide-menu-item":"slide-menu-item-vertical",e,r,t,a);o&&n.appendChild(o),r++}));else{var o=i("slide-menu-item",e,r,t);o&&n.appendChild(o),r++}})),A(".slide-menu-item, .slide-menu-item-vertical").forEach((function(e){e.onclick=x})),w()}}(),t.addEventListener("slidechanged",w),r.custom){var h=function(){this.status>=200&&this.status<300?(this.panel.innerHTML=this.responseText,C(this.panel)):I(this)},E=function(){I(this)},C=function(e){A("ul.slide-menu-items li.slide-menu-item",e).forEach((function(e,t){e.setAttribute("data-item",t+1),e.onclick=x,e.addEventListener("mouseenter",o)}))},I=function(e){var t="

ERROR: The attempt to fetch "+e.responseURL+" failed with HTTP status "+e.status+" ("+e.statusText+").

Remember that you need to serve the presentation HTML from a HTTP server.

";e.panel.innerHTML=t};r.custom.forEach((function(e,t,n){var r=k("div",{"data-panel":"Custom"+t,class:"slide-menu-panel slide-menu-custom-panel"});e.content?(r.innerHTML=e.content,C(r)):e.src&&function(e,t){var n=new XMLHttpRequest;n.panel=e,n.arguments=Array.prototype.slice.call(arguments,2),n.onload=h,n.onerror=E,n.open("get",t,!0),n.send(null)}(r,e.src),u.appendChild(r)}))}if(r.themes){var P=k("div",{class:"slide-menu-panel","data-panel":"Themes"});u.appendChild(P);var M=k("ul",{class:"slide-menu-items"});P.appendChild(M),r.themes.forEach((function(e,t){var n={class:"slide-menu-item","data-item":""+(t+1)};e.theme&&(n["data-theme"]=e.theme),e.highlightTheme&&(n["data-highlight-theme"]=e.highlightTheme);var r=k("li",n,e.name);M.appendChild(r),r.onclick=x}))}if(r.transitions){P=k("div",{class:"slide-menu-panel","data-panel":"Transitions"});u.appendChild(P);M=k("ul",{class:"slide-menu-items"});P.appendChild(M),r.transitions.forEach((function(e,t){var n=k("li",{class:"slide-menu-item","data-transition":e.toLowerCase(),"data-item":""+(t+1)},e);M.appendChild(n),n.onclick=x}))}if(r.openButton){var R=k("div",{class:"slide-menu-button"}),j=k("a",{href:"#"});j.appendChild(k("i",{class:"fas fa-bars"})),R.appendChild(j),O(".reveal").appendChild(R),R.onclick=v}if(r.openSlideNumber)O("div.slide-number").onclick=v;A(".slide-menu-panel .slide-menu-items li").forEach((function(e){e.addEventListener("mouseenter",o)}))}if(r.keyboard){if(document.addEventListener("keydown",m,!1),window.addEventListener("message",(function(e){var t;try{t=JSON.parse(e.data)}catch(e){}t&&"triggerKey"===t.method&&m({keyCode:t.args[0],stopImmediatePropagation:function(){}})})),n.keyboardCondition&&"function"==typeof n.keyboardCondition){var N=n.keyboardCondition;n.keyboardCondition=function(e){return N(e)&&(!b()||77==e.keyCode)}}else n.keyboardCondition=function(e){return!b()||77==e.keyCode};t.addKeyBinding({keyCode:77,key:"M",description:"Toggle menu"},y)}r.openOnInit&&v(),a=!0}function O(e,t){return t||(t=document),t.querySelector(e)}function A(e,t){return t||(t=document),Array.prototype.slice.call(t.querySelectorAll(e))}function k(e,t,n){var r=document.createElement(e);return t&&Object.getOwnPropertyNames(t).forEach((function(e){r.setAttribute(e,t[e])})),n&&(r.innerHTML=n),r}function I(e,t){var n=O("link#"+e),r=n.parentElement,i=n.nextElementSibling;n.remove();var a=n.cloneNode();a.setAttribute("href",t),a.onload=function(){L()},r.insertBefore(a,i)}function P(e,t,n){n.call()}function M(){var e,a,o,s=!i||i>=9;t.isSpeakerNotes()&&window.location.search.endsWith("controls=false")&&(s=!1),s&&(r.delayInit||C(),e="menu-ready",(o=document.createEvent("HTMLEvents",1,2)).initEvent(e,!0,!0),function(e,t){for(var n in t)e[n]=t[n]}(o,a),document.querySelector(".reveal").dispatchEvent(o),n.postMessageEvents&&window.parent!==window.self&&window.parent.postMessage(JSON.stringify({namespace:"reveal",eventName:e,state:t.getState()}),"*"))}return{id:"menu",init:function(e){o(n=(t=e).getConfig()),P(r.path+"menu.css","stylesheet",(function(){void 0===r.loadIcons||r.loadIcons?P(r.path+"font-awesome/css/all.css","stylesheet",M):M()}))},toggle:y,openMenu:v,closeMenu:g,openPanel:S,isOpen:b,initialiseMenu:C,isMenuInitialised:function(){return a}}}})); diff --git a/index_files/libs/revealjs/plugin/reveal-menu/plugin.yml b/index_files/libs/revealjs/plugin/reveal-menu/plugin.yml deleted file mode 100644 index 3f4b90a..0000000 --- a/index_files/libs/revealjs/plugin/reveal-menu/plugin.yml +++ /dev/null @@ -1,9 +0,0 @@ -name: RevealMenu -script: [menu.js, quarto-menu.js] -stylesheet: [menu.css, quarto-menu.css] -config: - menu: - side: "left" - useTextContentForMissingTitles: true - markers: false - loadIcons: false diff --git a/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css b/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css deleted file mode 100644 index eec145c..0000000 --- a/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css +++ /dev/null @@ -1,68 +0,0 @@ -.slide-menu-wrapper .slide-tool-item { - display: block; - text-align: left; - padding: 10px 18px; - color: #aaa; - cursor: pointer; - border-top: solid 1px #555; -} - -.slide-menu-wrapper .slide-tool-item a { - text-decoration: none; -} - -.slide-menu-wrapper .slide-tool-item kbd { - font-family: monospace; - margin-right: 10px; - padding: 3px 8px; - color: inherit; - border: 1px solid; - border-radius: 5px; - border-color: #555; -} - -.slide-menu-wrapper .slide-menu-toolbar > li.active-toolbar-button { - text-decoration: none; -} - -.reveal .slide-menu-button { - left: 8px; - bottom: 8px; -} - -.reveal .slide-menu-button .fas::before, -.reveal .slide-chalkboard-buttons .fas::before, -.slide-menu-wrapper .slide-menu-toolbar .fas::before { - display: inline-block; - height: 2.2rem; - width: 2.2rem; - content: ""; - vertical-align: -0.125em; - background-repeat: no-repeat; - background-size: 2.2rem 2.2rem; -} - -.reveal .slide-chalkboard-buttons .fas::before { - height: 1.45rem; - width: 1.45rem; - background-size: 1.45rem 1.45rem; - vertical-align: 0.1em; -} - -.slide-menu-wrapper .slide-menu-toolbar .fas::before { - height: 1.8rem; - width: 1.8rem; - background-size: 1.8rem 1.8rem; -} - -.slide-menu-wrapper .slide-menu-toolbar .fa-images::before { - background-image: url('data:image/svg+xml,'); -} - -.slide-menu-wrapper .slide-menu-toolbar .fa-gear::before { - background-image: url('data:image/svg+xml,'); -} - -.slide-menu-wrapper .slide-menu-toolbar .fa-times::before { - background-image: url('data:image/svg+xml,'); -} diff --git a/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js b/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js deleted file mode 100644 index 1245b0d..0000000 --- a/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js +++ /dev/null @@ -1,40 +0,0 @@ -window.revealMenuToolHandler = function (handler) { - return function (event) { - event.preventDefault(); - handler(); - Reveal.getPlugin("menu").closeMenu(); - }; -}; - -window.RevealMenuToolHandlers = { - fullscreen: revealMenuToolHandler(function () { - const element = document.documentElement; - const requestMethod = - element.requestFullscreen || - element.webkitRequestFullscreen || - element.webkitRequestFullScreen || - element.mozRequestFullScreen || - element.msRequestFullscreen; - if (requestMethod) { - requestMethod.apply(element); - } - }), - speakerMode: revealMenuToolHandler(function () { - Reveal.getPlugin("notes").open(); - }), - keyboardHelp: revealMenuToolHandler(function () { - Reveal.toggleHelp(true); - }), - overview: revealMenuToolHandler(function () { - Reveal.toggleOverview(true); - }), - toggleChalkboard: revealMenuToolHandler(function () { - RevealChalkboard.toggleChalkboard(); - }), - toggleNotesCanvas: revealMenuToolHandler(function () { - RevealChalkboard.toggleNotesCanvas(); - }), - downloadDrawings: revealMenuToolHandler(function () { - RevealChalkboard.download(); - }), -}; diff --git a/index_files/libs/revealjs/plugin/search/plugin.js b/index_files/libs/revealjs/plugin/search/plugin.js deleted file mode 100644 index 5d09ce6..0000000 --- a/index_files/libs/revealjs/plugin/search/plugin.js +++ /dev/null @@ -1,243 +0,0 @@ -/*! - * Handles finding a text string anywhere in the slides and showing the next occurrence to the user - * by navigatating to that slide and highlighting it. - * - * @author Jon Snyder , February 2013 - */ - -const Plugin = () => { - - // The reveal.js instance this plugin is attached to - let deck; - - let searchElement; - let searchButton; - let searchInput; - - let matchedSlides; - let currentMatchedIndex; - let searchboxDirty; - let hilitor; - - function render() { - - searchElement = document.createElement( 'div' ); - searchElement.classList.add( 'searchbox' ); - searchElement.style.position = 'absolute'; - searchElement.style.top = '10px'; - searchElement.style.right = '10px'; - searchElement.style.zIndex = 10; - - //embedded base64 search icon Designed by Sketchdock - http://www.sketchdock.com/: - searchElement.innerHTML = ` -
`; - - searchInput = searchElement.querySelector( '.searchinput' ); - searchInput.style.width = '240px'; - searchInput.style.fontSize = '14px'; - searchInput.style.padding = '4px 6px'; - searchInput.style.color = '#000'; - searchInput.style.background = '#fff'; - searchInput.style.borderRadius = '2px'; - searchInput.style.border = '0'; - searchInput.style.outline = '0'; - searchInput.style.boxShadow = '0 2px 18px rgba(0, 0, 0, 0.2)'; - searchInput.style['-webkit-appearance'] = 'none'; - - deck.getRevealElement().appendChild( searchElement ); - - // searchButton.addEventListener( 'click', function(event) { - // doSearch(); - // }, false ); - - searchInput.addEventListener( 'keyup', function( event ) { - switch (event.keyCode) { - case 13: - event.preventDefault(); - doSearch(); - searchboxDirty = false; - break; - default: - searchboxDirty = true; - } - }, false ); - - closeSearch(); - - } - - function openSearch() { - if( !searchElement ) render(); - - searchElement.style.display = 'inline'; - searchInput.focus(); - searchInput.select(); - } - - function closeSearch() { - if( !searchElement ) render(); - - searchElement.style.display = 'none'; - if(hilitor) hilitor.remove(); - } - - function toggleSearch() { - if( !searchElement ) render(); - - if (searchElement.style.display !== 'inline') { - openSearch(); - } - else { - closeSearch(); - } - } - - function doSearch() { - //if there's been a change in the search term, perform a new search: - if (searchboxDirty) { - var searchstring = searchInput.value; - - if (searchstring === '') { - if(hilitor) hilitor.remove(); - matchedSlides = null; - } - else { - //find the keyword amongst the slides - hilitor = new Hilitor("slidecontent"); - matchedSlides = hilitor.apply(searchstring); - currentMatchedIndex = 0; - } - } - - if (matchedSlides) { - //navigate to the next slide that has the keyword, wrapping to the first if necessary - if (matchedSlides.length && (matchedSlides.length <= currentMatchedIndex)) { - currentMatchedIndex = 0; - } - if (matchedSlides.length > currentMatchedIndex) { - deck.slide(matchedSlides[currentMatchedIndex].h, matchedSlides[currentMatchedIndex].v); - currentMatchedIndex++; - } - } - } - - // Original JavaScript code by Chirp Internet: www.chirp.com.au - // Please acknowledge use of this code by including this header. - // 2/2013 jon: modified regex to display any match, not restricted to word boundaries. - function Hilitor(id, tag) { - - var targetNode = document.getElementById(id) || document.body; - var hiliteTag = tag || "EM"; - var skipTags = new RegExp("^(?:" + hiliteTag + "|SCRIPT|FORM)$"); - var colors = ["#ff6", "#a0ffff", "#9f9", "#f99", "#f6f"]; - var wordColor = []; - var colorIdx = 0; - var matchRegex = ""; - var matchingSlides = []; - - this.setRegex = function(input) - { - input = input.replace(/^[^\w]+|[^\w]+$/g, "").replace(/[^\w'-]+/g, "|"); - matchRegex = new RegExp("(" + input + ")","i"); - } - - this.getRegex = function() - { - return matchRegex.toString().replace(/^\/\\b\(|\)\\b\/i$/g, "").replace(/\|/g, " "); - } - - // recursively apply word highlighting - this.hiliteWords = function(node) - { - if(node == undefined || !node) return; - if(!matchRegex) return; - if(skipTags.test(node.nodeName)) return; - - if(node.hasChildNodes()) { - for(var i=0; i < node.childNodes.length; i++) - this.hiliteWords(node.childNodes[i]); - } - if(node.nodeType == 3) { // NODE_TEXT - var nv, regs; - if((nv = node.nodeValue) && (regs = matchRegex.exec(nv))) { - //find the slide's section element and save it in our list of matching slides - var secnode = node; - while (secnode != null && secnode.nodeName != 'SECTION') { - secnode = secnode.parentNode; - } - - var slideIndex = deck.getIndices(secnode); - var slidelen = matchingSlides.length; - var alreadyAdded = false; - for (var i=0; i < slidelen; i++) { - if ( (matchingSlides[i].h === slideIndex.h) && (matchingSlides[i].v === slideIndex.v) ) { - alreadyAdded = true; - } - } - if (! alreadyAdded) { - matchingSlides.push(slideIndex); - } - - if(!wordColor[regs[0].toLowerCase()]) { - wordColor[regs[0].toLowerCase()] = colors[colorIdx++ % colors.length]; - } - - var match = document.createElement(hiliteTag); - match.appendChild(document.createTextNode(regs[0])); - match.style.backgroundColor = wordColor[regs[0].toLowerCase()]; - match.style.fontStyle = "inherit"; - match.style.color = "#000"; - - var after = node.splitText(regs.index); - after.nodeValue = after.nodeValue.substring(regs[0].length); - node.parentNode.insertBefore(match, after); - } - } - }; - - // remove highlighting - this.remove = function() - { - var arr = document.getElementsByTagName(hiliteTag); - var el; - while(arr.length && (el = arr[0])) { - el.parentNode.replaceChild(el.firstChild, el); - } - }; - - // start highlighting at target node - this.apply = function(input) - { - if(input == undefined || !input) return; - this.remove(); - this.setRegex(input); - this.hiliteWords(targetNode); - return matchingSlides; - }; - - } - - return { - - id: 'search', - - init: reveal => { - - deck = reveal; - deck.registerKeyboardShortcut( 'CTRL + Shift + F', 'Search' ); - - document.addEventListener( 'keydown', function( event ) { - if( event.key == "F" && (event.ctrlKey || event.metaKey) ) { //Control+Shift+f - event.preventDefault(); - toggleSearch(); - } - }, false ); - - }, - - open: openSearch - - } -}; - -export default Plugin; \ No newline at end of file diff --git a/index_files/libs/revealjs/plugin/search/search.esm.js b/index_files/libs/revealjs/plugin/search/search.esm.js deleted file mode 100644 index b401a70..0000000 --- a/index_files/libs/revealjs/plugin/search/search.esm.js +++ /dev/null @@ -1,7 +0,0 @@ -var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=function(e){try{return!!e()}catch(e){return!0}},n=!t((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),r=function(e){return e&&e.Math==Math&&e},o=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof e&&e)||function(){return this}()||Function("return this")(),i=t,c=/#|\.prototype\./,a=function(e,t){var n=l[u(e)];return n==s||n!=f&&("function"==typeof t?i(t):!!t)},u=a.normalize=function(e){return String(e).replace(c,".").toLowerCase()},l=a.data={},f=a.NATIVE="N",s=a.POLYFILL="P",p=a,g=function(e){return"object"==typeof e?null!==e:"function"==typeof e},d=g,h=function(e){if(!d(e))throw TypeError(String(e)+" is not an object");return e},y=g,v=h,x=function(e){if(!y(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e},b=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return v(n),x(r),t?e.call(n,r):n.__proto__=r,n}}():void 0),E=g,m=b,S={},w=g,O=o.document,R=w(O)&&w(O.createElement),T=function(e){return R?O.createElement(e):{}},_=!n&&!t((function(){return 7!=Object.defineProperty(T("div"),"a",{get:function(){return 7}}).a})),j=g,P=function(e,t){if(!j(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!j(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!j(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!j(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")},I=n,C=_,N=h,A=P,k=Object.defineProperty;S.f=I?k:function(e,t,n){if(N(e),t=A(t,!0),N(n),C)try{return k(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var $={},L=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},M=L,U=function(e){return Object(M(e))},D=U,F={}.hasOwnProperty,z=function(e,t){return F.call(D(e),t)},K={}.toString,B=function(e){return K.call(e).slice(8,-1)},W=B,G="".split,V=t((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==W(e)?G.call(e,""):Object(e)}:Object,Y=L,q=function(e){return V(Y(e))},X=Math.ceil,H=Math.floor,J=function(e){return isNaN(e=+e)?0:(e>0?H:X)(e)},Q=J,Z=Math.min,ee=function(e){return e>0?Z(Q(e),9007199254740991):0},te=J,ne=Math.max,re=Math.min,oe=q,ie=ee,ce=function(e,t){var n=te(e);return n<0?ne(n+t,0):re(n,t)},ae=function(e){return function(t,n,r){var o,i=oe(t),c=ie(i.length),a=ce(r,c);if(e&&n!=n){for(;c>a;)if((o=i[a++])!=o)return!0}else for(;c>a;a++)if((e||a in i)&&i[a]===n)return e||a||0;return!e&&-1}},ue={includes:ae(!0),indexOf:ae(!1)},le={},fe=z,se=q,pe=ue.indexOf,ge=le,de=function(e,t){var n,r=se(e),o=0,i=[];for(n in r)!fe(ge,n)&&fe(r,n)&&i.push(n);for(;t.length>o;)fe(r,n=t[o++])&&(~pe(i,n)||i.push(n));return i},he=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype");$.f=Object.getOwnPropertyNames||function(e){return de(e,he)};var ye={exports:{}},ve=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},xe=S,be=ve,Ee=n?function(e,t,n){return xe.f(e,t,be(1,n))}:function(e,t,n){return e[t]=n,e},me=o,Se=Ee,we=function(e,t){try{Se(me,e,t)}catch(n){me[e]=t}return t},Oe=we,Re=o["__core-js_shared__"]||Oe("__core-js_shared__",{}),Te=Re;(ye.exports=function(e,t){return Te[e]||(Te[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.12.1",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"});var _e,je,Pe=0,Ie=Math.random(),Ce=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++Pe+Ie).toString(36)},Ne=o,Ae=o,ke=function(e){return"function"==typeof e?e:void 0},$e=function(e,t){return arguments.length<2?ke(Ne[e])||ke(Ae[e]):Ne[e]&&Ne[e][t]||Ae[e]&&Ae[e][t]},Le=$e("navigator","userAgent")||"",Me=o.process,Ue=Me&&Me.versions,De=Ue&&Ue.v8;De?je=(_e=De.split("."))[0]<4?1:_e[0]+_e[1]:Le&&(!(_e=Le.match(/Edge\/(\d+)/))||_e[1]>=74)&&(_e=Le.match(/Chrome\/(\d+)/))&&(je=_e[1]);var Fe=je&&+je,ze=t,Ke=!!Object.getOwnPropertySymbols&&!ze((function(){return!String(Symbol())||!Symbol.sham&&Fe&&Fe<41})),Be=Ke&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,We=o,Ge=ye.exports,Ve=z,Ye=Ce,qe=Ke,Xe=Be,He=Ge("wks"),Je=We.Symbol,Qe=Xe?Je:Je&&Je.withoutSetter||Ye,Ze=function(e){return Ve(He,e)&&(qe||"string"==typeof He[e])||(qe&&Ve(Je,e)?He[e]=Je[e]:He[e]=Qe("Symbol."+e)),He[e]},et=g,tt=B,nt=Ze("match"),rt=h,ot=function(){var e=rt(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},it={},ct=t;function at(e,t){return RegExp(e,t)}it.UNSUPPORTED_Y=ct((function(){var e=at("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),it.BROKEN_CARET=ct((function(){var e=at("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));var ut={exports:{}},lt=Re,ft=Function.toString;"function"!=typeof lt.inspectSource&&(lt.inspectSource=function(e){return ft.call(e)});var st,pt,gt,dt=lt.inspectSource,ht=dt,yt=o.WeakMap,vt="function"==typeof yt&&/native code/.test(ht(yt)),xt=ye.exports,bt=Ce,Et=xt("keys"),mt=vt,St=g,wt=Ee,Ot=z,Rt=Re,Tt=function(e){return Et[e]||(Et[e]=bt(e))},_t=le,jt=o.WeakMap;if(mt||Rt.state){var Pt=Rt.state||(Rt.state=new jt),It=Pt.get,Ct=Pt.has,Nt=Pt.set;st=function(e,t){if(Ct.call(Pt,e))throw new TypeError("Object already initialized");return t.facade=e,Nt.call(Pt,e,t),t},pt=function(e){return It.call(Pt,e)||{}},gt=function(e){return Ct.call(Pt,e)}}else{var At=Tt("state");_t[At]=!0,st=function(e,t){if(Ot(e,At))throw new TypeError("Object already initialized");return t.facade=e,wt(e,At,t),t},pt=function(e){return Ot(e,At)?e[At]:{}},gt=function(e){return Ot(e,At)}}var kt={set:st,get:pt,has:gt,enforce:function(e){return gt(e)?pt(e):st(e,{})},getterFor:function(e){return function(t){var n;if(!St(t)||(n=pt(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},$t=o,Lt=Ee,Mt=z,Ut=we,Dt=dt,Ft=kt.get,zt=kt.enforce,Kt=String(String).split("String");(ut.exports=function(e,t,n,r){var o,i=!!r&&!!r.unsafe,c=!!r&&!!r.enumerable,a=!!r&&!!r.noTargetGet;"function"==typeof n&&("string"!=typeof t||Mt(n,"name")||Lt(n,"name",t),(o=zt(n)).source||(o.source=Kt.join("string"==typeof t?t:""))),e!==$t?(i?!a&&e[t]&&(c=!0):delete e[t],c?e[t]=n:Lt(e,t,n)):c?e[t]=n:Ut(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&Ft(this).source||Dt(this)}));var Bt=$e,Wt=S,Gt=n,Vt=Ze("species"),Yt=n,qt=o,Xt=p,Ht=function(e,t,n){var r,o;return m&&"function"==typeof(r=t.constructor)&&r!==n&&E(o=r.prototype)&&o!==n.prototype&&m(e,o),e},Jt=S.f,Qt=$.f,Zt=function(e){var t;return et(e)&&(void 0!==(t=e[nt])?!!t:"RegExp"==tt(e))},en=ot,tn=it,nn=ut.exports,rn=t,on=kt.enforce,cn=function(e){var t=Bt(e),n=Wt.f;Gt&&t&&!t[Vt]&&n(t,Vt,{configurable:!0,get:function(){return this}})},an=Ze("match"),un=qt.RegExp,ln=un.prototype,fn=/a/g,sn=/a/g,pn=new un(fn)!==fn,gn=tn.UNSUPPORTED_Y;if(Yt&&Xt("RegExp",!pn||gn||rn((function(){return sn[an]=!1,un(fn)!=fn||un(sn)==sn||"/a/i"!=un(fn,"i")})))){for(var dn=function(e,t){var n,r=this instanceof dn,o=Zt(e),i=void 0===t;if(!r&&o&&e.constructor===dn&&i)return e;pn?o&&!i&&(e=e.source):e instanceof dn&&(i&&(t=en.call(e)),e=e.source),gn&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var c=Ht(pn?new un(e,t):un(e,t),r?this:ln,dn);gn&&n&&(on(c).sticky=!0);return c},hn=function(e){e in dn||Jt(dn,e,{configurable:!0,get:function(){return un[e]},set:function(t){un[e]=t}})},yn=Qt(un),vn=0;yn.length>vn;)hn(yn[vn++]);ln.constructor=dn,dn.prototype=ln,nn(qt,"RegExp",dn)}cn("RegExp");var xn={},bn={},En={}.propertyIsEnumerable,mn=Object.getOwnPropertyDescriptor,Sn=mn&&!En.call({1:2},1);bn.f=Sn?function(e){var t=mn(this,e);return!!t&&t.enumerable}:En;var wn=n,On=bn,Rn=ve,Tn=q,_n=P,jn=z,Pn=_,In=Object.getOwnPropertyDescriptor;xn.f=wn?In:function(e,t){if(e=Tn(e),t=_n(t,!0),Pn)try{return In(e,t)}catch(e){}if(jn(e,t))return Rn(!On.f.call(e,t),e[t])};var Cn={};Cn.f=Object.getOwnPropertySymbols;var Nn=$,An=Cn,kn=h,$n=$e("Reflect","ownKeys")||function(e){var t=Nn.f(kn(e)),n=An.f;return n?t.concat(n(e)):t},Ln=z,Mn=$n,Un=xn,Dn=S,Fn=o,zn=xn.f,Kn=Ee,Bn=ut.exports,Wn=we,Gn=function(e,t){for(var n=Mn(t),r=Dn.f,o=Un.f,i=0;i0&&(!i.multiline||i.multiline&&"\n"!==e[i.lastIndex-1])&&(u="(?: "+u+")",f=" "+f,l++),n=new RegExp("^(?:"+u+")",a)),tr&&(n=new RegExp("^"+u+"$(?!\\s)",a)),Zn&&(t=i.lastIndex),r=Hn.call(c?n:i,f),c?r?(r.input=r.input.slice(l),r[0]=r[0].slice(l),r.index=i.lastIndex,i.lastIndex+=r[0].length):i.lastIndex=0:Zn&&r&&(i.lastIndex=i.global?r.index+r[0].length:t),tr&&r&&r.length>1&&Jn.call(r[0],n,(function(){for(o=1;o")})),br="$0"==="a".replace(/./,"$0"),Er=dr("replace"),mr=!!/./[Er]&&""===/./[Er]("a","$0"),Sr=!gr((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),wr=J,Or=L,Rr=function(e){return function(t,n){var r,o,i=String(Or(t)),c=wr(n),a=i.length;return c<0||c>=a?e?"":void 0:(r=i.charCodeAt(c))<55296||r>56319||c+1===a||(o=i.charCodeAt(c+1))<56320||o>57343?e?i.charAt(c):r:e?i.slice(c,c+2):o-56320+(r-55296<<10)+65536}},Tr={codeAt:Rr(!1),charAt:Rr(!0)}.charAt,_r=U,jr=Math.floor,Pr="".replace,Ir=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,Cr=/\$([$&'`]|\d{1,2})/g,Nr=B,Ar=nr,kr=function(e,t,n,r){var o=dr(e),i=!gr((function(){var t={};return t[o]=function(){return 7},7!=""[e](t)})),c=i&&!gr((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[yr]=function(){return n},n.flags="",n[o]=/./[o]),n.exec=function(){return t=!0,null},n[o](""),!t}));if(!i||!c||"replace"===e&&(!xr||!br||mr)||"split"===e&&!Sr){var a=/./[o],u=n(o,""[e],(function(e,t,n,r,o){var c=t.exec;return c===pr||c===vr.exec?i&&!o?{done:!0,value:a.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:br,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:mr}),l=u[0],f=u[1];sr(String.prototype,e,l),sr(vr,o,2==t?function(e,t){return f.call(e,this,t)}:function(e){return f.call(e,this)})}r&&hr(vr[o],"sham",!0)},$r=h,Lr=ee,Mr=J,Ur=L,Dr=function(e,t,n){return t+(n?Tr(e,t).length:1)},Fr=function(e,t,n,r,o,i){var c=n+e.length,a=r.length,u=Cr;return void 0!==o&&(o=_r(o),u=Ir),Pr.call(i,u,(function(i,u){var l;switch(u.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(c);case"<":l=o[u.slice(1,-1)];break;default:var f=+u;if(0===f)return i;if(f>a){var s=jr(f/10);return 0===s?i:s<=a?void 0===r[s-1]?u.charAt(1):r[s-1]+u.charAt(1):i}l=r[f-1]}return void 0===l?"":l}))},zr=function(e,t){var n=e.exec;if("function"==typeof n){var r=n.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==Nr(e))throw TypeError("RegExp#exec called on incompatible receiver");return Ar.call(e,t)},Kr=Math.max,Br=Math.min;kr("replace",2,(function(e,t,n,r){var o=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,i=r.REPLACE_KEEPS_$0,c=o?"$":"$0";return[function(n,r){var o=Ur(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,o,r):t.call(String(o),n,r)},function(e,r){if(!o&&i||"string"==typeof r&&-1===r.indexOf(c)){var a=n(t,e,this,r);if(a.done)return a.value}var u=$r(e),l=String(this),f="function"==typeof r;f||(r=String(r));var s=u.global;if(s){var p=u.unicode;u.lastIndex=0}for(var g=[];;){var d=zr(u,l);if(null===d)break;if(g.push(d),!s)break;""===String(d[0])&&(u.lastIndex=Dr(l,Lr(u.lastIndex),p))}for(var h,y="",v=0,x=0;x=v&&(y+=l.slice(v,E)+R,v=E+b.length)}return y+l.slice(v)}]}));var Wr={};Wr[Ze("toStringTag")]="z";var Gr="[object z]"===String(Wr),Vr=Gr,Yr=B,qr=Ze("toStringTag"),Xr="Arguments"==Yr(function(){return arguments}()),Hr=Vr?Yr:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),qr))?n:Xr?Yr(t):"Object"==(r=Yr(t))&&"function"==typeof t.callee?"Arguments":r},Jr=Gr?{}.toString:function(){return"[object "+Hr(this)+"]"},Qr=Gr,Zr=ut.exports,eo=Jr;Qr||Zr(Object.prototype,"toString",eo,{unsafe:!0}) -/*! - * Handles finding a text string anywhere in the slides and showing the next occurrence to the user - * by navigatating to that slide and highlighting it. - * - * @author Jon Snyder , February 2013 - */;export default function(){var e,t,n,r,o,i,c;function a(){(t=document.createElement("div")).classList.add("searchbox"),t.style.position="absolute",t.style.top="10px",t.style.right="10px",t.style.zIndex=10,t.innerHTML='\n\t\t',(n=t.querySelector(".searchinput")).style.width="240px",n.style.fontSize="14px",n.style.padding="4px 6px",n.style.color="#000",n.style.background="#fff",n.style.borderRadius="2px",n.style.border="0",n.style.outline="0",n.style.boxShadow="0 2px 18px rgba(0, 0, 0, 0.2)",n.style["-webkit-appearance"]="none",e.getRevealElement().appendChild(t),n.addEventListener("keyup",(function(t){switch(t.keyCode){case 13:t.preventDefault(),function(){if(i){var t=n.value;""===t?(c&&c.remove(),r=null):(c=new f("slidecontent"),r=c.apply(t),o=0)}r&&(r.length&&r.length<=o&&(o=0),r.length>o&&(e.slide(r[o].h,r[o].v),o++))}(),i=!1;break;default:i=!0}}),!1),l()}function u(){t||a(),t.style.display="inline",n.focus(),n.select()}function l(){t||a(),t.style.display="none",c&&c.remove()}function f(t,n){var r=document.getElementById(t)||document.body,o=n||"EM",i=new RegExp("^(?:"+o+"|SCRIPT|FORM)$"),c=["#ff6","#a0ffff","#9f9","#f99","#f6f"],a=[],u=0,l="",f=[];this.setRegex=function(e){e=e.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w'-]+/g,"|"),l=new RegExp("("+e+")","i")},this.getRegex=function(){return l.toString().replace(/^\/\\b\(|\)\\b\/i$/g,"").replace(/\|/g," ")},this.hiliteWords=function(t){if(null!=t&&t&&l&&!i.test(t.nodeName)){if(t.hasChildNodes())for(var n=0;n0?H:X)(e)},Q=J,Z=Math.min,ee=function(e){return e>0?Z(Q(e),9007199254740991):0},te=J,ne=Math.max,re=Math.min,oe=q,ie=ee,ce=function(e,t){var n=te(e);return n<0?ne(n+t,0):re(n,t)},ae=function(e){return function(t,n,r){var o,i=oe(t),c=ie(i.length),a=ce(r,c);if(e&&n!=n){for(;c>a;)if((o=i[a++])!=o)return!0}else for(;c>a;a++)if((e||a in i)&&i[a]===n)return e||a||0;return!e&&-1}},ue={includes:ae(!0),indexOf:ae(!1)},le={},fe=z,se=q,pe=ue.indexOf,de=le,ge=function(e,t){var n,r=se(e),o=0,i=[];for(n in r)!fe(de,n)&&fe(r,n)&&i.push(n);for(;t.length>o;)fe(r,n=t[o++])&&(~pe(i,n)||i.push(n));return i},he=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype");$.f=Object.getOwnPropertyNames||function(e){return ge(e,he)};var ye={exports:{}},ve=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},xe=S,be=ve,me=n?function(e,t,n){return xe.f(e,t,be(1,n))}:function(e,t,n){return e[t]=n,e},Ee=o,Se=me,we=function(e,t){try{Se(Ee,e,t)}catch(n){Ee[e]=t}return t},Oe=we,Re="__core-js_shared__",Te=o[Re]||Oe(Re,{}),_e=Te;(ye.exports=function(e,t){return _e[e]||(_e[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.12.1",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"});var je,Pe,Ie=0,Ce=Math.random(),Ne=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++Ie+Ce).toString(36)},Ae=o,ke=o,$e=function(e){return"function"==typeof e?e:void 0},Le=function(e,t){return arguments.length<2?$e(Ae[e])||$e(ke[e]):Ae[e]&&Ae[e][t]||ke[e]&&ke[e][t]},Me=Le("navigator","userAgent")||"",Ue=o.process,De=Ue&&Ue.versions,Fe=De&&De.v8;Fe?Pe=(je=Fe.split("."))[0]<4?1:je[0]+je[1]:Me&&(!(je=Me.match(/Edge\/(\d+)/))||je[1]>=74)&&(je=Me.match(/Chrome\/(\d+)/))&&(Pe=je[1]);var ze=Pe&&+Pe,Ke=t,Be=!!Object.getOwnPropertySymbols&&!Ke((function(){return!String(Symbol())||!Symbol.sham&&ze&&ze<41})),We=Be&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Ge=o,Ve=ye.exports,Ye=z,qe=Ne,Xe=Be,He=We,Je=Ve("wks"),Qe=Ge.Symbol,Ze=He?Qe:Qe&&Qe.withoutSetter||qe,et=function(e){return Ye(Je,e)&&(Xe||"string"==typeof Je[e])||(Xe&&Ye(Qe,e)?Je[e]=Qe[e]:Je[e]=Ze("Symbol."+e)),Je[e]},tt=d,nt=B,rt=et("match"),ot=h,it=function(){var e=ot(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},ct={},at=t;function ut(e,t){return RegExp(e,t)}ct.UNSUPPORTED_Y=at((function(){var e=ut("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),ct.BROKEN_CARET=at((function(){var e=ut("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));var lt={exports:{}},ft=Te,st=Function.toString;"function"!=typeof ft.inspectSource&&(ft.inspectSource=function(e){return st.call(e)});var pt,dt,gt,ht=ft.inspectSource,yt=ht,vt=o.WeakMap,xt="function"==typeof vt&&/native code/.test(yt(vt)),bt=ye.exports,mt=Ne,Et=bt("keys"),St=xt,wt=d,Ot=me,Rt=z,Tt=Te,_t=function(e){return Et[e]||(Et[e]=mt(e))},jt=le,Pt="Object already initialized",It=o.WeakMap;if(St||Tt.state){var Ct=Tt.state||(Tt.state=new It),Nt=Ct.get,At=Ct.has,kt=Ct.set;pt=function(e,t){if(At.call(Ct,e))throw new TypeError(Pt);return t.facade=e,kt.call(Ct,e,t),t},dt=function(e){return Nt.call(Ct,e)||{}},gt=function(e){return At.call(Ct,e)}}else{var $t=_t("state");jt[$t]=!0,pt=function(e,t){if(Rt(e,$t))throw new TypeError(Pt);return t.facade=e,Ot(e,$t,t),t},dt=function(e){return Rt(e,$t)?e[$t]:{}},gt=function(e){return Rt(e,$t)}}var Lt={set:pt,get:dt,has:gt,enforce:function(e){return gt(e)?dt(e):pt(e,{})},getterFor:function(e){return function(t){var n;if(!wt(t)||(n=dt(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},Mt=o,Ut=me,Dt=z,Ft=we,zt=ht,Kt=Lt.get,Bt=Lt.enforce,Wt=String(String).split("String");(lt.exports=function(e,t,n,r){var o,i=!!r&&!!r.unsafe,c=!!r&&!!r.enumerable,a=!!r&&!!r.noTargetGet;"function"==typeof n&&("string"!=typeof t||Dt(n,"name")||Ut(n,"name",t),(o=Bt(n)).source||(o.source=Wt.join("string"==typeof t?t:""))),e!==Mt?(i?!a&&e[t]&&(c=!0):delete e[t],c?e[t]=n:Ut(e,t,n)):c?e[t]=n:Ft(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&Kt(this).source||zt(this)}));var Gt=Le,Vt=S,Yt=n,qt=et("species"),Xt=n,Ht=o,Jt=p,Qt=function(e,t,n){var r,o;return E&&"function"==typeof(r=t.constructor)&&r!==n&&m(o=r.prototype)&&o!==n.prototype&&E(e,o),e},Zt=S.f,en=$.f,tn=function(e){var t;return tt(e)&&(void 0!==(t=e[rt])?!!t:"RegExp"==nt(e))},nn=it,rn=ct,on=lt.exports,cn=t,an=Lt.enforce,un=function(e){var t=Gt(e),n=Vt.f;Yt&&t&&!t[qt]&&n(t,qt,{configurable:!0,get:function(){return this}})},ln=et("match"),fn=Ht.RegExp,sn=fn.prototype,pn=/a/g,dn=/a/g,gn=new fn(pn)!==pn,hn=rn.UNSUPPORTED_Y;if(Xt&&Jt("RegExp",!gn||hn||cn((function(){return dn[ln]=!1,fn(pn)!=pn||fn(dn)==dn||"/a/i"!=fn(pn,"i")})))){for(var yn=function(e,t){var n,r=this instanceof yn,o=tn(e),i=void 0===t;if(!r&&o&&e.constructor===yn&&i)return e;gn?o&&!i&&(e=e.source):e instanceof yn&&(i&&(t=nn.call(e)),e=e.source),hn&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var c=Qt(gn?new fn(e,t):fn(e,t),r?this:sn,yn);hn&&n&&(an(c).sticky=!0);return c},vn=function(e){e in yn||Zt(yn,e,{configurable:!0,get:function(){return fn[e]},set:function(t){fn[e]=t}})},xn=en(fn),bn=0;xn.length>bn;)vn(xn[bn++]);sn.constructor=yn,yn.prototype=sn,on(Ht,"RegExp",yn)}un("RegExp");var mn={},En={},Sn={}.propertyIsEnumerable,wn=Object.getOwnPropertyDescriptor,On=wn&&!Sn.call({1:2},1);En.f=On?function(e){var t=wn(this,e);return!!t&&t.enumerable}:Sn;var Rn=n,Tn=En,_n=ve,jn=q,Pn=P,In=z,Cn=_,Nn=Object.getOwnPropertyDescriptor;mn.f=Rn?Nn:function(e,t){if(e=jn(e),t=Pn(t,!0),Cn)try{return Nn(e,t)}catch(e){}if(In(e,t))return _n(!Tn.f.call(e,t),e[t])};var An={};An.f=Object.getOwnPropertySymbols;var kn=$,$n=An,Ln=h,Mn=Le("Reflect","ownKeys")||function(e){var t=kn.f(Ln(e)),n=$n.f;return n?t.concat(n(e)):t},Un=z,Dn=Mn,Fn=mn,zn=S,Kn=o,Bn=mn.f,Wn=me,Gn=lt.exports,Vn=we,Yn=function(e,t){for(var n=Dn(t),r=zn.f,o=Fn.f,i=0;i0&&(!i.multiline||i.multiline&&"\n"!==e[i.lastIndex-1])&&(u="(?: "+u+")",f=" "+f,l++),n=new RegExp("^(?:"+u+")",a)),rr&&(n=new RegExp("^"+u+"$(?!\\s)",a)),tr&&(t=i.lastIndex),r=Qn.call(c?n:i,f),c?r?(r.input=r.input.slice(l),r[0]=r[0].slice(l),r.index=i.lastIndex,i.lastIndex+=r[0].length):i.lastIndex=0:tr&&r&&(i.lastIndex=i.global?r.index+r[0].length:t),rr&&r&&r.length>1&&Zn.call(r[0],n,(function(){for(o=1;o")})),Sr="$0"==="a".replace(/./,"$0"),wr=vr("replace"),Or=!!/./[wr]&&""===/./[wr]("a","$0"),Rr=!yr((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),Tr=J,_r=L,jr=function(e){return function(t,n){var r,o,i=String(_r(t)),c=Tr(n),a=i.length;return c<0||c>=a?e?"":void 0:(r=i.charCodeAt(c))<55296||r>56319||c+1===a||(o=i.charCodeAt(c+1))<56320||o>57343?e?i.charAt(c):r:e?i.slice(c,c+2):o-56320+(r-55296<<10)+65536}},Pr={codeAt:jr(!1),charAt:jr(!0)}.charAt,Ir=U,Cr=Math.floor,Nr="".replace,Ar=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,kr=/\$([$&'`]|\d{1,2})/g,$r=B,Lr=or,Mr=function(e,t,n,r){var o=vr(e),i=!yr((function(){var t={};return t[o]=function(){return 7},7!=""[e](t)})),c=i&&!yr((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[br]=function(){return n},n.flags="",n[o]=/./[o]),n.exec=function(){return t=!0,null},n[o](""),!t}));if(!i||!c||"replace"===e&&(!Er||!Sr||Or)||"split"===e&&!Rr){var a=/./[o],u=n(o,""[e],(function(e,t,n,r,o){var c=t.exec;return c===hr||c===mr.exec?i&&!o?{done:!0,value:a.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:Sr,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:Or}),l=u[0],f=u[1];gr(String.prototype,e,l),gr(mr,o,2==t?function(e,t){return f.call(e,this,t)}:function(e){return f.call(e,this)})}r&&xr(mr[o],"sham",!0)},Ur=h,Dr=ee,Fr=J,zr=L,Kr=function(e,t,n){return t+(n?Pr(e,t).length:1)},Br=function(e,t,n,r,o,i){var c=n+e.length,a=r.length,u=kr;return void 0!==o&&(o=Ir(o),u=Ar),Nr.call(i,u,(function(i,u){var l;switch(u.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(c);case"<":l=o[u.slice(1,-1)];break;default:var f=+u;if(0===f)return i;if(f>a){var s=Cr(f/10);return 0===s?i:s<=a?void 0===r[s-1]?u.charAt(1):r[s-1]+u.charAt(1):i}l=r[f-1]}return void 0===l?"":l}))},Wr=function(e,t){var n=e.exec;if("function"==typeof n){var r=n.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==$r(e))throw TypeError("RegExp#exec called on incompatible receiver");return Lr.call(e,t)},Gr=Math.max,Vr=Math.min;Mr("replace",2,(function(e,t,n,r){var o=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,i=r.REPLACE_KEEPS_$0,c=o?"$":"$0";return[function(n,r){var o=zr(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,o,r):t.call(String(o),n,r)},function(e,r){if(!o&&i||"string"==typeof r&&-1===r.indexOf(c)){var a=n(t,e,this,r);if(a.done)return a.value}var u=Ur(e),l=String(this),f="function"==typeof r;f||(r=String(r));var s=u.global;if(s){var p=u.unicode;u.lastIndex=0}for(var d=[];;){var g=Wr(u,l);if(null===g)break;if(d.push(g),!s)break;""===String(g[0])&&(u.lastIndex=Kr(l,Dr(u.lastIndex),p))}for(var h,y="",v=0,x=0;x=v&&(y+=l.slice(v,m)+R,v=m+b.length)}return y+l.slice(v)}]}));var Yr={};Yr[et("toStringTag")]="z";var qr="[object z]"===String(Yr),Xr=qr,Hr=B,Jr=et("toStringTag"),Qr="Arguments"==Hr(function(){return arguments}()),Zr=Xr?Hr:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),Jr))?n:Qr?Hr(t):"Object"==(r=Hr(t))&&"function"==typeof t.callee?"Arguments":r},eo=qr?{}.toString:function(){return"[object "+Zr(this)+"]"},to=qr,no=lt.exports,ro=eo;to||no(Object.prototype,"toString",ro,{unsafe:!0}) -/*! - * Handles finding a text string anywhere in the slides and showing the next occurrence to the user - * by navigatating to that slide and highlighting it. - * - * @author Jon Snyder , February 2013 - */;return function(){var e,t,n,r,o,i,c;function a(){(t=document.createElement("div")).classList.add("searchbox"),t.style.position="absolute",t.style.top="10px",t.style.right="10px",t.style.zIndex=10,t.innerHTML='\n\t\t',(n=t.querySelector(".searchinput")).style.width="240px",n.style.fontSize="14px",n.style.padding="4px 6px",n.style.color="#000",n.style.background="#fff",n.style.borderRadius="2px",n.style.border="0",n.style.outline="0",n.style.boxShadow="0 2px 18px rgba(0, 0, 0, 0.2)",n.style["-webkit-appearance"]="none",e.getRevealElement().appendChild(t),n.addEventListener("keyup",(function(t){switch(t.keyCode){case 13:t.preventDefault(),function(){if(i){var t=n.value;""===t?(c&&c.remove(),r=null):(c=new f("slidecontent"),r=c.apply(t),o=0)}r&&(r.length&&r.length<=o&&(o=0),r.length>o&&(e.slide(r[o].h,r[o].v),o++))}(),i=!1;break;default:i=!0}}),!1),l()}function u(){t||a(),t.style.display="inline",n.focus(),n.select()}function l(){t||a(),t.style.display="none",c&&c.remove()}function f(t,n){var r=document.getElementById(t)||document.body,o=n||"EM",i=new RegExp("^(?:"+o+"|SCRIPT|FORM)$"),c=["#ff6","#a0ffff","#9f9","#f99","#f6f"],a=[],u=0,l="",f=[];this.setRegex=function(e){e=e.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w'-]+/g,"|"),l=new RegExp("("+e+")","i")},this.getRegex=function(){return l.toString().replace(/^\/\\b\(|\)\\b\/i$/g,"").replace(/\|/g," ")},this.hiliteWords=function(t){if(null!=t&&t&&l&&!i.test(t.nodeName)){if(t.hasChildNodes())for(var n=0;n Plugin; - -/*! - * zoom.js 0.3 (modified for use with reveal.js) - * http://lab.hakim.se/zoom-js - * MIT licensed - * - * Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se - */ -var zoom = (function(){ - - // The current zoom level (scale) - var level = 1; - - // The current mouse position, used for panning - var mouseX = 0, - mouseY = 0; - - // Timeout before pan is activated - var panEngageTimeout = -1, - panUpdateInterval = -1; - - // Check for transform support so that we can fallback otherwise - var supportsTransforms = 'WebkitTransform' in document.body.style || - 'MozTransform' in document.body.style || - 'msTransform' in document.body.style || - 'OTransform' in document.body.style || - 'transform' in document.body.style; - - if( supportsTransforms ) { - // The easing that will be applied when we zoom in/out - document.body.style.transition = 'transform 0.8s ease'; - document.body.style.OTransition = '-o-transform 0.8s ease'; - document.body.style.msTransition = '-ms-transform 0.8s ease'; - document.body.style.MozTransition = '-moz-transform 0.8s ease'; - document.body.style.WebkitTransition = '-webkit-transform 0.8s ease'; - } - - // Zoom out if the user hits escape - document.addEventListener( 'keyup', function( event ) { - if( level !== 1 && event.keyCode === 27 ) { - zoom.out(); - } - } ); - - // Monitor mouse movement for panning - document.addEventListener( 'mousemove', function( event ) { - if( level !== 1 ) { - mouseX = event.clientX; - mouseY = event.clientY; - } - } ); - - /** - * Applies the CSS required to zoom in, prefers the use of CSS3 - * transforms but falls back on zoom for IE. - * - * @param {Object} rect - * @param {Number} scale - */ - function magnify( rect, scale ) { - - var scrollOffset = getScrollOffset(); - - // Ensure a width/height is set - rect.width = rect.width || 1; - rect.height = rect.height || 1; - - // Center the rect within the zoomed viewport - rect.x -= ( window.innerWidth - ( rect.width * scale ) ) / 2; - rect.y -= ( window.innerHeight - ( rect.height * scale ) ) / 2; - - if( supportsTransforms ) { - // Reset - if( scale === 1 ) { - document.body.style.transform = ''; - document.body.style.OTransform = ''; - document.body.style.msTransform = ''; - document.body.style.MozTransform = ''; - document.body.style.WebkitTransform = ''; - } - // Scale - else { - var origin = scrollOffset.x +'px '+ scrollOffset.y +'px', - transform = 'translate('+ -rect.x +'px,'+ -rect.y +'px) scale('+ scale +')'; - - document.body.style.transformOrigin = origin; - document.body.style.OTransformOrigin = origin; - document.body.style.msTransformOrigin = origin; - document.body.style.MozTransformOrigin = origin; - document.body.style.WebkitTransformOrigin = origin; - - document.body.style.transform = transform; - document.body.style.OTransform = transform; - document.body.style.msTransform = transform; - document.body.style.MozTransform = transform; - document.body.style.WebkitTransform = transform; - } - } - else { - // Reset - if( scale === 1 ) { - document.body.style.position = ''; - document.body.style.left = ''; - document.body.style.top = ''; - document.body.style.width = ''; - document.body.style.height = ''; - document.body.style.zoom = ''; - } - // Scale - else { - document.body.style.position = 'relative'; - document.body.style.left = ( - ( scrollOffset.x + rect.x ) / scale ) + 'px'; - document.body.style.top = ( - ( scrollOffset.y + rect.y ) / scale ) + 'px'; - document.body.style.width = ( scale * 100 ) + '%'; - document.body.style.height = ( scale * 100 ) + '%'; - document.body.style.zoom = scale; - } - } - - level = scale; - - if( document.documentElement.classList ) { - if( level !== 1 ) { - document.documentElement.classList.add( 'zoomed' ); - } - else { - document.documentElement.classList.remove( 'zoomed' ); - } - } - } - - /** - * Pan the document when the mosue cursor approaches the edges - * of the window. - */ - function pan() { - var range = 0.12, - rangeX = window.innerWidth * range, - rangeY = window.innerHeight * range, - scrollOffset = getScrollOffset(); - - // Up - if( mouseY < rangeY ) { - window.scroll( scrollOffset.x, scrollOffset.y - ( 1 - ( mouseY / rangeY ) ) * ( 14 / level ) ); - } - // Down - else if( mouseY > window.innerHeight - rangeY ) { - window.scroll( scrollOffset.x, scrollOffset.y + ( 1 - ( window.innerHeight - mouseY ) / rangeY ) * ( 14 / level ) ); - } - - // Left - if( mouseX < rangeX ) { - window.scroll( scrollOffset.x - ( 1 - ( mouseX / rangeX ) ) * ( 14 / level ), scrollOffset.y ); - } - // Right - else if( mouseX > window.innerWidth - rangeX ) { - window.scroll( scrollOffset.x + ( 1 - ( window.innerWidth - mouseX ) / rangeX ) * ( 14 / level ), scrollOffset.y ); - } - } - - function getScrollOffset() { - return { - x: window.scrollX !== undefined ? window.scrollX : window.pageXOffset, - y: window.scrollY !== undefined ? window.scrollY : window.pageYOffset - } - } - - return { - /** - * Zooms in on either a rectangle or HTML element. - * - * @param {Object} options - * - element: HTML element to zoom in on - * OR - * - x/y: coordinates in non-transformed space to zoom in on - * - width/height: the portion of the screen to zoom in on - * - scale: can be used instead of width/height to explicitly set scale - */ - to: function( options ) { - - // Due to an implementation limitation we can't zoom in - // to another element without zooming out first - if( level !== 1 ) { - zoom.out(); - } - else { - options.x = options.x || 0; - options.y = options.y || 0; - - // If an element is set, that takes precedence - if( !!options.element ) { - // Space around the zoomed in element to leave on screen - var padding = 20; - var bounds = options.element.getBoundingClientRect(); - - options.x = bounds.left - padding; - options.y = bounds.top - padding; - options.width = bounds.width + ( padding * 2 ); - options.height = bounds.height + ( padding * 2 ); - } - - // If width/height values are set, calculate scale from those values - if( options.width !== undefined && options.height !== undefined ) { - options.scale = Math.max( Math.min( window.innerWidth / options.width, window.innerHeight / options.height ), 1 ); - } - - if( options.scale > 1 ) { - options.x *= options.scale; - options.y *= options.scale; - - magnify( options, options.scale ); - - if( options.pan !== false ) { - - // Wait with engaging panning as it may conflict with the - // zoom transition - panEngageTimeout = setTimeout( function() { - panUpdateInterval = setInterval( pan, 1000 / 60 ); - }, 800 ); - - } - } - } - }, - - /** - * Resets the document zoom state to its default. - */ - out: function() { - clearTimeout( panEngageTimeout ); - clearInterval( panUpdateInterval ); - - magnify( { x: 0, y: 0 }, 1 ); - - level = 1; - }, - - // Alias - magnify: function( options ) { this.to( options ) }, - reset: function() { this.out() }, - - zoomLevel: function() { - return level; - } - } - -})(); diff --git a/index_files/libs/revealjs/plugin/zoom/zoom.esm.js b/index_files/libs/revealjs/plugin/zoom/zoom.esm.js deleted file mode 100644 index 27c0921..0000000 --- a/index_files/libs/revealjs/plugin/zoom/zoom.esm.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * reveal.js Zoom plugin - */ -var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(o){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;o[i]&&!e.isOverview()&&(o.preventDefault(),t.to({x:o.clientX,y:o.clientY,scale:d,pan:!1}))}))}},t=function(){var e=1,o=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(t,o){var n=y();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*o)/2,t.y-=(window.innerHeight-t.height*o)/2,s)if(1===o)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+o+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===o?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+t.x)/o+"px",document.body.style.top=-(n.y+t.y)/o+"px",document.body.style.width=100*o+"%",document.body.style.height=100*o+"%",document.body.style.zoom=o);e=o,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=y();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),owindow.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-o)/t)*(14/e),d.y)}function y(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(o){1!==e&&27===o.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(o=t.clientX,n=t.clientY)})),{to:function(o){if(1!==e)t.out();else{if(o.x=o.x||0,o.y=o.y||0,o.element){var n=o.element.getBoundingClientRect();o.x=n.left-20,o.y=n.top-20,o.width=n.width+40,o.height=n.height+40}void 0!==o.width&&void 0!==o.height&&(o.scale=Math.max(Math.min(window.innerWidth/o.width,window.innerHeight/o.height),1)),o.scale>1&&(o.x*=o.scale,o.y*=o.scale,r(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();export default function(){return e} diff --git a/index_files/libs/revealjs/plugin/zoom/zoom.js b/index_files/libs/revealjs/plugin/zoom/zoom.js deleted file mode 100644 index 686a548..0000000 --- a/index_files/libs/revealjs/plugin/zoom/zoom.js +++ /dev/null @@ -1,4 +0,0 @@ -!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealZoom=o()}(this,(function(){"use strict"; -/*! - * reveal.js Zoom plugin - */var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(t){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;t[i]&&!e.isOverview()&&(t.preventDefault(),o.to({x:t.clientX,y:t.clientY,scale:d,pan:!1}))}))}},o=function(){var e=1,t=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(o,t){var n=l();if(o.width=o.width||1,o.height=o.height||1,o.x-=(window.innerWidth-o.width*t)/2,o.y-=(window.innerHeight-o.height*t)/2,s)if(1===t)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-o.x+"px,"+-o.y+"px) scale("+t+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===t?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+o.x)/t+"px",document.body.style.top=-(n.y+o.y)/t+"px",document.body.style.width=100*t+"%",document.body.style.height=100*t+"%",document.body.style.zoom=t);e=t,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var o=.12*window.innerWidth,i=.12*window.innerHeight,d=l();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),twindow.innerWidth-o&&window.scroll(d.x+(1-(window.innerWidth-t)/o)*(14/e),d.y)}function l(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(t){1!==e&&27===t.keyCode&&o.out()})),document.addEventListener("mousemove",(function(o){1!==e&&(t=o.clientX,n=o.clientY)})),{to:function(t){if(1!==e)o.out();else{if(t.x=t.x||0,t.y=t.y||0,t.element){var n=t.element.getBoundingClientRect();t.x=n.left-20,t.y=n.top-20,t.width=n.width+40,t.height=n.height+40}void 0!==t.width&&void 0!==t.height&&(t.scale=Math.max(Math.min(window.innerWidth/t.width,window.innerHeight/t.height),1)),t.scale>1&&(t.x*=t.scale,t.y*=t.scale,r(t,t.scale),!1!==t.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();return function(){return e}})); diff --git a/presentation.html b/presentation.html index 15bf7fd..217e611 100644 --- a/presentation.html +++ b/presentation.html @@ -21,10 +21,15 @@ @@ -329,118 +334,122 @@

Molstar example

RCSB PDB

Get a protein from the RCSB PDB with:

{{< mol-rcsb 7sgl >}}

- - + +

Local pdb file

Get a local pdb file with:

{{< mol-url ./www/7sgl.pdb >}}

- - + +

pdb file from url

Get a pdb file from a url:

{{< mol-url https://files.rcsb.org/download/7sgl.pdb >}}

- - + +

local xyz file

Get a local xyz file with:

{{< mol-url ./www/example.xyz >} }

- - + +

local pdb and trajectory

Load a topology and a trajectory with:

{{< mol-traj ./www/example.pdb ./www/example.xtc >}}

- - + + @@ -724,7 +733,8 @@

local pdb and trajectory

for (var i=0; i}}}` diff --git a/presentation_files/libs/quarto-contrib/molstar-v3.13.0/app-container.css b/presentation_files/libs/quarto-contrib/molstar-v3.13.0/app-container.css index 0529fb0..d51a20d 100644 --- a/presentation_files/libs/quarto-contrib/molstar-v3.13.0/app-container.css +++ b/presentation_files/libs/quarto-contrib/molstar-v3.13.0/app-container.css @@ -5,3 +5,6 @@ div .molstar-app { margin-bottom: 1rem; } +.msp-plugin .msp-layout-expanded { + z-index: 1; +} diff --git a/presentation_files/libs/revealjs/dist/theme/quarto.css b/presentation_files/libs/revealjs/dist/theme/quarto.css index 5e3dc12..601d6b7 100644 --- a/presentation_files/libs/revealjs/dist/theme/quarto.css +++ b/presentation_files/libs/revealjs/dist/theme/quarto.css @@ -1,5 +1,5 @@ -@import"./fonts/source-sans-pro/source-sans-pro.css";:root{--r-background-color: #fff;--r-main-font: Source Sans Pro, Helvetica, sans-serif;--r-main-font-size: 40px;--r-main-color: #222;--r-block-margin: 12px;--r-heading-margin: 0 0 12px 0;--r-heading-font: Source Sans Pro, Helvetica, sans-serif;--r-heading-color: #222;--r-heading-line-height: 1.2;--r-heading-letter-spacing: normal;--r-heading-text-transform: none;--r-heading-text-shadow: none;--r-heading-font-weight: 600;--r-heading1-text-shadow: none;--r-heading1-size: 2.5em;--r-heading2-size: 1.6em;--r-heading3-size: 1.3em;--r-heading4-size: 1em;--r-code-font: SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;--r-link-color: #2a76dd;--r-link-color-dark: #1a53a1;--r-link-color-hover: #5692e4;--r-selection-background-color: #98bdef;--r-selection-color: #fff}.reveal-viewport{background:#fff;background-color:var(--r-background-color)}.reveal{font-family:var(--r-main-font);font-size:var(--r-main-font-size);font-weight:normal;color:var(--r-main-color)}.reveal ::selection{color:var(--r-selection-color);background:var(--r-selection-background-color);text-shadow:none}.reveal ::-moz-selection{color:var(--r-selection-color);background:var(--r-selection-background-color);text-shadow:none}.reveal .slides section,.reveal .slides section>section{line-height:1.3;font-weight:inherit}.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6{margin:var(--r-heading-margin);color:var(--r-heading-color);font-family:var(--r-heading-font);font-weight:var(--r-heading-font-weight);line-height:var(--r-heading-line-height);letter-spacing:var(--r-heading-letter-spacing);text-transform:var(--r-heading-text-transform);text-shadow:var(--r-heading-text-shadow);word-wrap:break-word}.reveal h1{font-size:var(--r-heading1-size)}.reveal h2{font-size:var(--r-heading2-size)}.reveal h3{font-size:var(--r-heading3-size)}.reveal h4{font-size:var(--r-heading4-size)}.reveal h1{text-shadow:var(--r-heading1-text-shadow)}.reveal p{margin:var(--r-block-margin) 0;line-height:1.3}.reveal h1:last-child,.reveal h2:last-child,.reveal h3:last-child,.reveal h4:last-child,.reveal h5:last-child,.reveal h6:last-child{margin-bottom:0}.reveal img,.reveal video,.reveal iframe{max-width:95%;max-height:95%}.reveal strong,.reveal b{font-weight:bold}.reveal em{font-style:italic}.reveal ol,.reveal dl,.reveal ul{display:inline-block;text-align:left;margin:0 0 0 1em}.reveal ol{list-style-type:decimal}.reveal ul{list-style-type:disc}.reveal ul ul{list-style-type:square}.reveal ul ul ul{list-style-type:circle}.reveal ul ul,.reveal ul ol,.reveal ol ol,.reveal ol ul{display:block;margin-left:40px}.reveal dt{font-weight:bold}.reveal dd{margin-left:40px}.reveal blockquote{display:block;position:relative;width:70%;margin:var(--r-block-margin) auto;padding:5px;font-style:italic;background:rgba(255,255,255,.05);box-shadow:0px 0px 2px rgba(0,0,0,.2)}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:inline-block}.reveal q{font-style:italic}.reveal pre{display:block;position:relative;width:90%;margin:var(--r-block-margin) auto;text-align:left;font-size:.55em;font-family:var(--r-code-font);line-height:1.2em;word-wrap:break-word;box-shadow:0px 5px 15px rgba(0,0,0,.15)}.reveal code{font-family:var(--r-code-font);text-transform:none;tab-size:2}.reveal pre code{display:block;padding:5px;overflow:auto;max-height:400px;word-wrap:normal}.reveal .code-wrapper{white-space:normal}.reveal .code-wrapper code{white-space:pre}.reveal table{margin:auto;border-collapse:collapse;border-spacing:0}.reveal table th{font-weight:bold}.reveal table th,.reveal table td{text-align:left;padding:.2em .5em .2em .5em;border-bottom:1px solid}.reveal table th[align=center],.reveal table td[align=center]{text-align:center}.reveal table th[align=right],.reveal table td[align=right]{text-align:right}.reveal table tbody tr:last-child th,.reveal table tbody tr:last-child td{border-bottom:none}.reveal sup{vertical-align:super;font-size:smaller}.reveal sub{vertical-align:sub;font-size:smaller}.reveal small{display:inline-block;font-size:.6em;line-height:1.2em;vertical-align:top}.reveal small *{vertical-align:top}.reveal img{margin:var(--r-block-margin) 0}.reveal a{color:var(--r-link-color);text-decoration:none;transition:color .15s ease}.reveal a:hover{color:var(--r-link-color-hover);text-shadow:none;border:none}.reveal .roll span:after{color:#fff;background:var(--r-link-color-dark)}.reveal .r-frame{border:4px solid var(--r-main-color);box-shadow:0 0 10px rgba(0,0,0,.15)}.reveal a .r-frame{transition:all .15s linear}.reveal a:hover .r-frame{border-color:var(--r-link-color);box-shadow:0 0 20px rgba(0,0,0,.55)}.reveal .controls{color:var(--r-link-color)}.reveal .progress{background:rgba(0,0,0,.2);color:var(--r-link-color)}@media print{.backgrounds{background-color:var(--r-background-color)}}.top-right{position:absolute;top:1em;right:1em}.hidden{display:none !important}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:inline-block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p{text-align:left}.quarto-figure-center>figure>p{text-align:center}.quarto-figure-right>figure>p{text-align:right}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link,div[id^=tbl-]>.anchorjs-link{position:absolute;top:0;right:0}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}tr.header>th>p:last-of-type{margin-bottom:0px}table,.table{caption-side:top;margin-bottom:1.5rem}caption,.table-caption{text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6f6f6f}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}div.ansi-escaped-output{font-family:monospace;display:block}/*! +@import"./fonts/source-sans-pro/source-sans-pro.css";:root{--r-background-color: #fff;--r-main-font: Source Sans Pro, Helvetica, sans-serif;--r-main-font-size: 40px;--r-main-color: #222;--r-block-margin: 12px;--r-heading-margin: 0 0 12px 0;--r-heading-font: Source Sans Pro, Helvetica, sans-serif;--r-heading-color: #222;--r-heading-line-height: 1.2;--r-heading-letter-spacing: normal;--r-heading-text-transform: none;--r-heading-text-shadow: none;--r-heading-font-weight: 600;--r-heading1-text-shadow: none;--r-heading1-size: 2.5em;--r-heading2-size: 1.6em;--r-heading3-size: 1.3em;--r-heading4-size: 1em;--r-code-font: SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;--r-link-color: #2a76dd;--r-link-color-dark: #1a53a1;--r-link-color-hover: #5692e4;--r-selection-background-color: #98bdef;--r-selection-color: #fff}.reveal-viewport{background:#fff;background-color:var(--r-background-color)}.reveal{font-family:var(--r-main-font);font-size:var(--r-main-font-size);font-weight:normal;color:var(--r-main-color)}.reveal ::selection{color:var(--r-selection-color);background:var(--r-selection-background-color);text-shadow:none}.reveal ::-moz-selection{color:var(--r-selection-color);background:var(--r-selection-background-color);text-shadow:none}.reveal .slides section,.reveal .slides section>section{line-height:1.3;font-weight:inherit}.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6{margin:var(--r-heading-margin);color:var(--r-heading-color);font-family:var(--r-heading-font);font-weight:var(--r-heading-font-weight);line-height:var(--r-heading-line-height);letter-spacing:var(--r-heading-letter-spacing);text-transform:var(--r-heading-text-transform);text-shadow:var(--r-heading-text-shadow);word-wrap:break-word}.reveal h1{font-size:var(--r-heading1-size)}.reveal h2{font-size:var(--r-heading2-size)}.reveal h3{font-size:var(--r-heading3-size)}.reveal h4{font-size:var(--r-heading4-size)}.reveal h1{text-shadow:var(--r-heading1-text-shadow)}.reveal p{margin:var(--r-block-margin) 0;line-height:1.3}.reveal h1:last-child,.reveal h2:last-child,.reveal h3:last-child,.reveal h4:last-child,.reveal h5:last-child,.reveal h6:last-child{margin-bottom:0}.reveal img,.reveal video,.reveal iframe{max-width:95%;max-height:95%}.reveal strong,.reveal b{font-weight:bold}.reveal em{font-style:italic}.reveal ol,.reveal dl,.reveal ul{display:inline-block;text-align:left;margin:0 0 0 1em}.reveal ol{list-style-type:decimal}.reveal ul{list-style-type:disc}.reveal ul ul{list-style-type:square}.reveal ul ul ul{list-style-type:circle}.reveal ul ul,.reveal ul ol,.reveal ol ol,.reveal ol ul{display:block;margin-left:40px}.reveal dt{font-weight:bold}.reveal dd{margin-left:40px}.reveal blockquote{display:block;position:relative;width:70%;margin:var(--r-block-margin) auto;padding:5px;font-style:italic;background:rgba(255,255,255,.05);box-shadow:0px 0px 2px rgba(0,0,0,.2)}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:inline-block}.reveal q{font-style:italic}.reveal pre{display:block;position:relative;width:90%;margin:var(--r-block-margin) auto;text-align:left;font-size:.55em;font-family:var(--r-code-font);line-height:1.2em;word-wrap:break-word;box-shadow:0px 5px 15px rgba(0,0,0,.15)}.reveal code{font-family:var(--r-code-font);text-transform:none;tab-size:2}.reveal pre code{display:block;padding:5px;overflow:auto;max-height:400px;word-wrap:normal}.reveal .code-wrapper{white-space:normal}.reveal .code-wrapper code{white-space:pre}.reveal table{margin:auto;border-collapse:collapse;border-spacing:0}.reveal table th{font-weight:bold}.reveal table th,.reveal table td{text-align:left;padding:.2em .5em .2em .5em;border-bottom:1px solid}.reveal table th[align=center],.reveal table td[align=center]{text-align:center}.reveal table th[align=right],.reveal table td[align=right]{text-align:right}.reveal table tbody tr:last-child th,.reveal table tbody tr:last-child td{border-bottom:none}.reveal sup{vertical-align:super;font-size:smaller}.reveal sub{vertical-align:sub;font-size:smaller}.reveal small{display:inline-block;font-size:.6em;line-height:1.2em;vertical-align:top}.reveal small *{vertical-align:top}.reveal img{margin:var(--r-block-margin) 0}.reveal a{color:var(--r-link-color);text-decoration:none;transition:color .15s ease}.reveal a:hover{color:var(--r-link-color-hover);text-shadow:none;border:none}.reveal .roll span:after{color:#fff;background:var(--r-link-color-dark)}.reveal .r-frame{border:4px solid var(--r-main-color);box-shadow:0 0 10px rgba(0,0,0,.15)}.reveal a .r-frame{transition:all .15s linear}.reveal a:hover .r-frame{border-color:var(--r-link-color);box-shadow:0 0 20px rgba(0,0,0,.55)}.reveal .controls{color:var(--r-link-color)}.reveal .progress{background:rgba(0,0,0,.2);color:var(--r-link-color)}@media print{.backgrounds{background-color:var(--r-background-color)}}.top-right{position:absolute;top:1em;right:1em}.hidden{display:none !important}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:inline-block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p{text-align:left}.quarto-figure-center>figure>p{text-align:center}.quarto-figure-right>figure>p{text-align:right}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link,div[id^=tbl-]>.anchorjs-link{position:absolute;top:0;right:0}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}tr.header>th>p:last-of-type{margin-bottom:0px}table,.table{caption-side:top;margin-bottom:1.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6f6f6f}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}div.ansi-escaped-output{font-family:monospace;display:block}/*! * * ansi colors from IPython notebook's * -*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #222;--quarto-text-muted: #6f6f6f;--quarto-border-color: #bbbbbb;--quarto-border-width: 1px;--quarto-border-radius: 4px}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:transparent}.code-copy-button:focus{outline:none}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}.panel-tabset [role=tablist]{border-bottom:1px solid #bbb;list-style:none;margin:0;padding:0;width:100%}.panel-tabset [role=tablist] *{-webkit-box-sizing:border-box;box-sizing:border-box}@media(min-width: 30em){.panel-tabset [role=tablist] li{display:inline-block}}.panel-tabset [role=tab]{border:1px solid transparent;border-top-color:#bbb;display:block;padding:.5em 1em;text-decoration:none}@media(min-width: 30em){.panel-tabset [role=tab]{border-top-color:transparent;display:inline-block;margin-bottom:-1px}}.panel-tabset [role=tab][aria-selected=true]{background-color:#bbb}@media(min-width: 30em){.panel-tabset [role=tab][aria-selected=true]{background-color:transparent;border:1px solid #bbb;border-bottom-color:#fff}}@media(min-width: 30em){.panel-tabset [role=tab]:hover:not([aria-selected=true]){border:1px solid #bbb}}section.has-light-background,section.has-light-background h1,section.has-light-background h2,section.has-light-background h3,section.has-light-background h4,section.has-light-background h5,section.has-light-background h6{color:#222}section.has-light-background a,section.has-light-background a:hover{color:#2a76dd}section.has-light-background code{color:#4758ab}section.has-dark-background,section.has-dark-background h1,section.has-dark-background h2,section.has-dark-background h3,section.has-dark-background h4,section.has-dark-background h5,section.has-dark-background h6{color:#fff}section.has-dark-background a,section.has-dark-background a:hover{color:#42affa}section.has-dark-background code{color:#ffa07a}#title-slide{text-align:center}#title-slide .subtitle{margin-bottom:2.5rem}.reveal .slides{text-align:left}.reveal .title-slide h1{font-size:1.6em}.reveal[data-navigation-mode=linear] .title-slide h1{font-size:2.5em}.reveal div.sourceCode{border:1px solid #bbb;border-radius:4px}.reveal pre{width:100%;box-shadow:none;background-color:#fff;border:none;margin:0;font-size:.55em}.reveal code{color:var(--quarto-hl-fu-color);background-color:transparent;white-space:pre-wrap}.reveal pre.sourceCode code{background-color:#fff;padding:6px 9px;max-height:500px;white-space:pre}.reveal pre code{background-color:#fff;color:#222}.reveal .column-output-location{display:flex;align-items:stretch}.reveal .column-output-location .column:first-of-type div.sourceCode{height:100%;background-color:#fff}.reveal blockquote{display:block;position:relative;color:#6f6f6f;width:unset;margin:var(--r-block-margin) auto;padding:.625rem 1.75rem;border-left:.25rem solid #6f6f6f;font-style:normal;background:none;box-shadow:none}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:block}.reveal .slide aside,.reveal .slide div.aside{position:absolute;bottom:20px;font-size:0.7em;color:#6f6f6f}.reveal .slide sup{font-size:0.7em}.reveal .slide.scrollable aside,.reveal .slide.scrollable div.aside{position:relative;margin-top:1em}.reveal .slide aside .aside-footnotes{margin-bottom:0}.reveal .slide aside .aside-footnotes li:first-of-type{margin-top:0}.reveal .layout-sidebar{display:flex;width:100%;margin-top:.8em}.reveal .layout-sidebar .panel-sidebar{width:270px}.reveal .layout-sidebar-left .panel-sidebar{margin-right:calc(0.5em * 2)}.reveal .layout-sidebar-right .panel-sidebar{margin-left:calc(0.5em * 2)}.reveal .layout-sidebar .panel-fill,.reveal .layout-sidebar .panel-center,.reveal .layout-sidebar .panel-tabset{flex:1}.reveal .panel-input,.reveal .panel-sidebar{font-size:.5em;padding:.5em;border-style:solid;border-color:#bbb;border-width:1px;border-radius:4px;background-color:#f8f9fa}.reveal .panel-sidebar :first-child,.reveal .panel-fill :first-child{margin-top:0}.reveal .panel-sidebar :last-child,.reveal .panel-fill :last-child{margin-bottom:0}.panel-input>div,.panel-input>div>div{vertical-align:middle;padding-right:1em}.reveal p,.reveal .slides section,.reveal .slides section>section{line-height:1.3}.reveal.smaller .slides section,.reveal .slides section.smaller,.reveal .slides section .callout{font-size:0.7em}.reveal.smaller .slides h1,.reveal .slides section.smaller h1{font-size:calc(2.5em / 0.7)}.reveal.smaller .slides h2,.reveal .slides section.smaller h2{font-size:calc(1.6em / 0.7)}.reveal.smaller .slides h3,.reveal .slides section.smaller h3{font-size:calc(1.3em / 0.7)}.reveal .columns>.column>:not(ul,ol){margin-left:.25em;margin-right:.25em}.reveal .columns>.column:first-child>:not(ul,ol){margin-right:.5em;margin-left:0}.reveal .columns>.column:last-child>:not(ul,ol){margin-right:0;margin-left:.5em}.reveal .slide-number{color:#2a76dd;background-color:#fff}.reveal .footer{color:#6f6f6f}.reveal .footer a{color:#5692e4}.reveal .slide-number{color:#6f6f6f}.reveal .slide figure>figcaption,.reveal .slide img.stretch+p.caption,.reveal .slide img.r-stretch+p.caption{font-size:0.7em}@media screen and (min-width: 500px){.reveal .controls[data-controls-layout=edges] .navigate-left{left:.2em}.reveal .controls[data-controls-layout=edges] .navigate-right{right:.2em}.reveal .controls[data-controls-layout=edges] .navigate-up{top:.4em}.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:2.3em}}.tippy-box[data-theme~=quarto-reveal]{background-color:#fff;color:#222;border-radius:4px;border:solid 1px #6f6f6f;font-size:.6em}.tippy-box[data-theme~=quarto-reveal] .tippy-arrow{color:#6f6f6f}.tippy-box[data-placement^=bottom]>.tippy-content{padding:7px 10px;z-index:1}.reveal .callout.callout-style-simple .callout-body,.reveal .callout.callout-style-default .callout-body,.reveal .callout.callout-style-simple div.callout-caption,.reveal .callout.callout-style-default div.callout-caption{font-size:inherit}.reveal .callout.callout-style-default .callout-icon::before,.reveal .callout.callout-style-simple .callout-icon::before{height:2rem;width:2rem;background-size:2rem 2rem}.reveal .callout.callout-captioned .callout-caption p{margin-top:.5em}.reveal .callout.callout-captioned .callout-icon::before{margin-top:1rem}.reveal .callout.callout-captioned .callout-body>.callout-content>:last-child{margin-bottom:1rem}.reveal .panel-tabset [role=tab]{padding:.25em .7em}.reveal .slide-menu-button .fa-bars::before{background-image:url('data:image/svg+xml,')}.reveal .slide-chalkboard-buttons .fa-easel2::before{background-image:url('data:image/svg+xml,')}.reveal .slide-chalkboard-buttons .fa-brush::before{background-image:url('data:image/svg+xml,')}/*! light *//*# sourceMappingURL=f95d2bded9c28492b788fe14c3e9f347.css.map */ +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #222;--quarto-text-muted: #6f6f6f;--quarto-border-color: #bbbbbb;--quarto-border-width: 1px;--quarto-border-radius: 4px}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:transparent;border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:transparent}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:transparent}.code-copy-button:focus{outline:none}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}.panel-tabset [role=tablist]{border-bottom:1px solid #bbb;list-style:none;margin:0;padding:0;width:100%}.panel-tabset [role=tablist] *{-webkit-box-sizing:border-box;box-sizing:border-box}@media(min-width: 30em){.panel-tabset [role=tablist] li{display:inline-block}}.panel-tabset [role=tab]{border:1px solid transparent;border-top-color:#bbb;display:block;padding:.5em 1em;text-decoration:none}@media(min-width: 30em){.panel-tabset [role=tab]{border-top-color:transparent;display:inline-block;margin-bottom:-1px}}.panel-tabset [role=tab][aria-selected=true]{background-color:#bbb}@media(min-width: 30em){.panel-tabset [role=tab][aria-selected=true]{background-color:transparent;border:1px solid #bbb;border-bottom-color:#fff}}@media(min-width: 30em){.panel-tabset [role=tab]:hover:not([aria-selected=true]){border:1px solid #bbb}}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file,.code-with-filename .code-with-filename-file pre{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file,.quarto-dark .code-with-filename .code-with-filename-file pre{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}section.has-light-background,section.has-light-background h1,section.has-light-background h2,section.has-light-background h3,section.has-light-background h4,section.has-light-background h5,section.has-light-background h6{color:#222}section.has-light-background a,section.has-light-background a:hover{color:#2a76dd}section.has-light-background code{color:#4758ab}section.has-dark-background,section.has-dark-background h1,section.has-dark-background h2,section.has-dark-background h3,section.has-dark-background h4,section.has-dark-background h5,section.has-dark-background h6{color:#fff}section.has-dark-background a,section.has-dark-background a:hover{color:#42affa}section.has-dark-background code{color:#ffa07a}#title-slide{text-align:center}#title-slide .subtitle{margin-bottom:2.5rem}.reveal .slides{text-align:left}.reveal .title-slide h1{font-size:1.6em}.reveal[data-navigation-mode=linear] .title-slide h1{font-size:2.5em}.reveal div.sourceCode{border:1px solid #bbb;border-radius:4px}.reveal pre{width:100%;box-shadow:none;background-color:#fff;border:none;margin:0;font-size:.55em}.reveal code{color:var(--quarto-hl-fu-color);background-color:transparent;white-space:pre-wrap}.reveal pre.sourceCode code{background-color:#fff;padding:6px 9px;max-height:500px;white-space:pre}.reveal pre code{background-color:#fff;color:#222}.reveal .column-output-location{display:flex;align-items:stretch}.reveal .column-output-location .column:first-of-type div.sourceCode{height:100%;background-color:#fff}.reveal blockquote{display:block;position:relative;color:#6f6f6f;width:unset;margin:var(--r-block-margin) auto;padding:.625rem 1.75rem;border-left:.25rem solid #6f6f6f;font-style:normal;background:none;box-shadow:none}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:block}.reveal .slide aside,.reveal .slide div.aside{position:absolute;bottom:20px;font-size:0.7em;color:#6f6f6f}.reveal .slide sup{font-size:0.7em}.reveal .slide.scrollable aside,.reveal .slide.scrollable div.aside{position:relative;margin-top:1em}.reveal .slide aside .aside-footnotes{margin-bottom:0}.reveal .slide aside .aside-footnotes li:first-of-type{margin-top:0}.reveal .layout-sidebar{display:flex;width:100%;margin-top:.8em}.reveal .layout-sidebar .panel-sidebar{width:270px}.reveal .layout-sidebar-left .panel-sidebar{margin-right:calc(0.5em * 2)}.reveal .layout-sidebar-right .panel-sidebar{margin-left:calc(0.5em * 2)}.reveal .layout-sidebar .panel-fill,.reveal .layout-sidebar .panel-center,.reveal .layout-sidebar .panel-tabset{flex:1}.reveal .panel-input,.reveal .panel-sidebar{font-size:.5em;padding:.5em;border-style:solid;border-color:#bbb;border-width:1px;border-radius:4px;background-color:#f8f9fa}.reveal .panel-sidebar :first-child,.reveal .panel-fill :first-child{margin-top:0}.reveal .panel-sidebar :last-child,.reveal .panel-fill :last-child{margin-bottom:0}.panel-input>div,.panel-input>div>div{vertical-align:middle;padding-right:1em}.reveal p,.reveal .slides section,.reveal .slides section>section{line-height:1.3}.reveal.smaller .slides section,.reveal .slides section.smaller,.reveal .slides section .callout{font-size:0.7em}.reveal.smaller .slides h1,.reveal .slides section.smaller h1{font-size:calc(2.5em / 0.7)}.reveal.smaller .slides h2,.reveal .slides section.smaller h2{font-size:calc(1.6em / 0.7)}.reveal.smaller .slides h3,.reveal .slides section.smaller h3{font-size:calc(1.3em / 0.7)}.reveal .columns>.column>:not(ul,ol){margin-left:.25em;margin-right:.25em}.reveal .columns>.column:first-child>:not(ul,ol){margin-right:.5em;margin-left:0}.reveal .columns>.column:last-child>:not(ul,ol){margin-right:0;margin-left:.5em}.reveal .slide-number{color:#2a76dd;background-color:#fff}.reveal .footer{color:#6f6f6f}.reveal .footer a{color:#5692e4}.reveal .slide-number{color:#6f6f6f}.reveal .slide figure>figcaption,.reveal .slide img.stretch+p.caption,.reveal .slide img.r-stretch+p.caption{font-size:0.7em}@media screen and (min-width: 500px){.reveal .controls[data-controls-layout=edges] .navigate-left{left:.2em}.reveal .controls[data-controls-layout=edges] .navigate-right{right:.2em}.reveal .controls[data-controls-layout=edges] .navigate-up{top:.4em}.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:2.3em}}.tippy-box[data-theme~=quarto-reveal]{background-color:#fff;color:#222;border-radius:4px;border:solid 1px #6f6f6f;font-size:.6em}.tippy-box[data-theme~=quarto-reveal] .tippy-arrow{color:#6f6f6f}.tippy-box[data-placement^=bottom]>.tippy-content{padding:7px 10px;z-index:1}.reveal .callout.callout-style-simple .callout-body,.reveal .callout.callout-style-default .callout-body,.reveal .callout.callout-style-simple div.callout-caption,.reveal .callout.callout-style-default div.callout-caption{font-size:inherit}.reveal .callout.callout-style-default .callout-icon::before,.reveal .callout.callout-style-simple .callout-icon::before{height:2rem;width:2rem;background-size:2rem 2rem}.reveal .callout.callout-captioned .callout-caption p{margin-top:.5em}.reveal .callout.callout-captioned .callout-icon::before{margin-top:1rem}.reveal .callout.callout-captioned .callout-body>.callout-content>:last-child{margin-bottom:1rem}.reveal .panel-tabset [role=tab]{padding:.25em .7em}.reveal .slide-menu-button .fa-bars::before{background-image:url('data:image/svg+xml,')}.reveal .slide-chalkboard-buttons .fa-easel2::before{background-image:url('data:image/svg+xml,')}.reveal .slide-chalkboard-buttons .fa-brush::before{background-image:url('data:image/svg+xml,')}/*! light *//*# sourceMappingURL=f95d2bded9c28492b788fe14c3e9f347.css.map */