From 7b5e5371576c8c57196828745e4d28adceb8417e Mon Sep 17 00:00:00 2001 From: Hakim El Hattab Date: Sat, 10 Aug 2013 12:52:28 -0400 Subject: [PATCH] much improved distance measuring logic, improves performance on mobile and fixes some crashes --- js/reveal.js | 84 +++++++++++++++++++++++++++++++++++++++++------- js/reveal.min.js | 4 +-- 2 files changed, 74 insertions(+), 14 deletions(-) diff --git a/js/reveal.js b/js/reveal.js index 31639fa..d86c22c 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -14,6 +14,8 @@ var Reveal = (function(){ VERTICAL_SLIDES_SELECTOR = '.reveal .slides>section.present>section', HOME_SLIDE_SELECTOR = '.reveal .slides>section:first-child', + IS_MOBILE = navigator.userAgent.match( /(iphone|ipod|android)/gi ), + // Configurations defaults, can be overridden at initialization time config = { @@ -1029,7 +1031,6 @@ var Reveal = (function(){ htransform = 'translateZ(-2500px) translate(' + ( ( i - indexh ) * hoffset ) + '%, 0%)'; hslide.setAttribute( 'data-index-h', i ); - hslide.style.display = 'block'; hslide.style.WebkitTransform = htransform; hslide.style.MozTransform = htransform; hslide.style.msTransform = htransform; @@ -1048,7 +1049,6 @@ var Reveal = (function(){ vslide.setAttribute( 'data-index-h', i ); vslide.setAttribute( 'data-index-v', j ); - vslide.style.display = 'block'; vslide.style.WebkitTransform = vtransform; vslide.style.MozTransform = vtransform; vslide.style.msTransform = vtransform; @@ -1068,6 +1068,8 @@ var Reveal = (function(){ } } + updateSlidesVisibility(); + layout(); if( !wasActive ) { @@ -1309,6 +1311,9 @@ var Reveal = (function(){ indexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, h === undefined ? indexh : h ); indexv = updateSlides( VERTICAL_SLIDES_SELECTOR, v === undefined ? indexv : v ); + // Update the visibility of slides now that the indices have changed + updateSlidesVisibility(); + layout(); // Apply the new state @@ -1480,16 +1485,6 @@ var Reveal = (function(){ for( var i = 0; i < slidesLength; i++ ) { var element = slides[i]; - // Optimization; hide all slides that are three or more steps - // away from the present slide - if( isOverview() === false ) { - // The distance loops so that it measures 1 between the first - // and last slides - var distance = Math.abs( ( index - i ) % ( slidesLength - 3 ) ) || 0; - - element.style.display = distance > 3 ? 'none' : 'block'; - } - var reverse = config.rtl && !isVerticalSlide( element ); element.classList.remove( 'past' ); @@ -1555,6 +1550,71 @@ var Reveal = (function(){ } + /** + * Optimization method; hide all slides that are far away + * from the present slide. + */ + function updateSlidesVisibility() { + + // Select all slides and convert the NodeList result to + // an array + var horizontalSlides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ), + horizontalSlidesLength = horizontalSlides.length, + distance; + + if( horizontalSlidesLength ) { + + // The number of steps away from the present slide that will + // be visible + var threshold = 3; + + // Heavily limited on weaker devices + if( IS_MOBILE ) { + threshold = 1; + } + + if( isOverview() ) { + threshold = 6; + } + + for( var x = 0; x < horizontalSlidesLength; x++ ) { + var horizontalSlide = horizontalSlides[x]; + + var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) ), + verticalSlidesLength = verticalSlides.length; + + if( verticalSlidesLength ) { + + // Always show the vertical stack itself, even if its child + // slides are invisible + horizontalSlide.style.display = 'block'; + + for( var y = 0; y < verticalSlidesLength; y++ ) { + var verticalSlide = verticalSlides[y]; + + var dx = x - indexh, + dy = y - indexv; + + distance = Math.sqrt( dx*dx + dy*dy ); + + verticalSlide.style.display = distance > threshold ? 'none' : 'block'; + } + + } + else { + + // Loops so that it measures 1 between the first and last slides + distance = Math.abs( ( indexh - x ) % ( horizontalSlidesLength - threshold ) ) || 0; + + horizontalSlide.style.display = distance > threshold ? 'none' : 'block'; + + } + } + + } + + } + /** * Updates the progress bar to reflect the current slide. */ diff --git a/js/reveal.min.js b/js/reveal.min.js index aab8f26..8752c35 100644 --- a/js/reveal.min.js +++ b/js/reveal.min.js @@ -1,8 +1,8 @@ /*! - * reveal.js 2.5.0 (2013-08-08, 10:21) + * reveal.js 2.5.0 (2013-08-10, 12:49) * http://lab.hakim.se/reveal-js * MIT licensed * * Copyright (C) 2013 Hakim El Hattab, http://hakim.se */ -var Reveal=function(){"use strict";function e(e){return zt||Yt?(window.addEventListener("load",k,!1),l(Ct,e),r(),o(),void 0):(document.body.setAttribute("class","no-transforms"),void 0)}function t(){if(Ot.theme=document.querySelector("#theme"),Ot.wrapper=document.querySelector(".reveal"),Ot.slides=document.querySelector(".reveal .slides"),document.querySelector(".reveal .backgrounds")||(Ot.background=document.createElement("div"),Ot.background.classList.add("backgrounds"),Ot.wrapper.appendChild(Ot.background)),!Ot.wrapper.querySelector(".progress")){var e=document.createElement("div");e.classList.add("progress"),e.innerHTML="",Ot.wrapper.appendChild(e)}if(!Ot.wrapper.querySelector(".controls")){var t=document.createElement("aside");t.classList.add("controls"),t.innerHTML='',Ot.wrapper.appendChild(t)}if(!Ot.wrapper.querySelector(".state-background")){var n=document.createElement("div");n.classList.add("state-background"),Ot.wrapper.appendChild(n)}if(!Ot.wrapper.querySelector(".pause-overlay")){var r=document.createElement("div");r.classList.add("pause-overlay"),Ot.wrapper.appendChild(r)}Ot.progress=document.querySelector(".reveal .progress"),Ot.progressbar=document.querySelector(".reveal .progress span"),Ct.controls&&(Ot.controls=document.querySelector(".reveal .controls"),Ot.controlsLeft=d(document.querySelectorAll(".navigate-left")),Ot.controlsRight=d(document.querySelectorAll(".navigate-right")),Ot.controlsUp=d(document.querySelectorAll(".navigate-up")),Ot.controlsDown=d(document.querySelectorAll(".navigate-down")),Ot.controlsPrev=d(document.querySelectorAll(".navigate-prev")),Ot.controlsNext=d(document.querySelectorAll(".navigate-next")))}function n(){function e(e,t){var n={background:e.getAttribute("data-background"),backgroundSize:e.getAttribute("data-background-size"),backgroundImage:e.getAttribute("data-background-image"),backgroundColor:e.getAttribute("data-background-color"),backgroundRepeat:e.getAttribute("data-background-repeat"),backgroundPosition:e.getAttribute("data-background-position"),backgroundTransition:e.getAttribute("data-background-transition")},r=document.createElement("div");return r.className="slide-background",n.background&&(/^(http|file|\/\/)/gi.test(n.background)||/\.(png|jpg|jpeg|gif|bmp)$/gi.test(n.background)?r.style.backgroundImage="url("+n.background+")":r.style.background=n.background),n.backgroundSize&&(r.style.backgroundSize=n.backgroundSize),n.backgroundImage&&(r.style.backgroundImage='url("'+n.backgroundImage+'")'),n.backgroundColor&&(r.style.backgroundColor=n.backgroundColor),n.backgroundRepeat&&(r.style.backgroundRepeat=n.backgroundRepeat),n.backgroundPosition&&(r.style.backgroundPosition=n.backgroundPosition),n.backgroundTransition&&r.setAttribute("data-background-transition",n.backgroundTransition),t.appendChild(r),r}v()&&document.body.classList.add("print-pdf"),Ot.background.innerHTML="",Ot.background.classList.add("no-transition"),d(document.querySelectorAll(Mt)).forEach(function(t){var n;n=v()?e(t,t):e(t,Ot.background),d(t.querySelectorAll("section")).forEach(function(t){v()?e(t,t):e(t,n)})})}function r(){/iphone|ipod|android/gi.test(navigator.userAgent)&&!/crios/gi.test(navigator.userAgent)&&(window.addEventListener("load",p,!1),window.addEventListener("orientationchange",p,!1))}function o(){function e(){n.length&&head.js.apply(null,n),a()}for(var t=[],n=[],r=0,o=Ct.dependencies.length;o>r;r++){var i=Ct.dependencies[r];(!i.condition||i.condition())&&(i.async?n.push(i.src):t.push(i.src),"function"==typeof i.callback&&head.ready(i.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],i.callback))}t.length?(head.ready(e),head.js.apply(null,t)):e()}function a(){t(),i(),K(),setTimeout(function(){m("ready",{indexh:St,indexv:At,currentSlide:xt})},1)}function i(e){if(Ot.wrapper.classList.remove(Ct.transition),"object"==typeof e&&l(Ct,e),Yt===!1&&(Ct.transition="linear"),Ot.wrapper.classList.add(Ct.transition),Ot.wrapper.setAttribute("data-transition-speed",Ct.transitionSpeed),Ot.wrapper.setAttribute("data-background-transition",Ct.backgroundTransition),Ot.controls&&(Ot.controls.style.display=Ct.controls&&Ot.controls?"block":"none"),Ot.progress&&(Ot.progress.style.display=Ct.progress&&Ot.progress?"block":"none"),Ct.rtl?Ot.wrapper.classList.add("rtl"):Ot.wrapper.classList.remove("rtl"),Ct.center?Ot.wrapper.classList.add("center"):Ot.wrapper.classList.remove("center"),Ct.mouseWheel?(document.addEventListener("DOMMouseScroll",ft,!1),document.addEventListener("mousewheel",ft,!1)):(document.removeEventListener("DOMMouseScroll",ft,!1),document.removeEventListener("mousewheel",ft,!1)),Ct.rollingLinks?g():h(),Ct.previewLinks?y():(b(),y("[data-preview-link]")),Ct.theme&&Ot.theme){var t=Ot.theme.getAttribute("href"),n=/[^\/]*?(?=\.css)/,r=t.match(n)[0];Ct.theme!==r&&(t=t.replace(n,Ct.theme),Ot.theme.setAttribute("href",t))}Y()}function s(){Ft=!0,window.addEventListener("hashchange",wt,!1),window.addEventListener("resize",Lt,!1),Ct.touch&&(Ot.wrapper.addEventListener("touchstart",it,!1),Ot.wrapper.addEventListener("touchmove",st,!1),Ot.wrapper.addEventListener("touchend",ct,!1),window.navigator.msPointerEnabled&&(Ot.wrapper.addEventListener("MSPointerDown",lt,!1),Ot.wrapper.addEventListener("MSPointerMove",dt,!1),Ot.wrapper.addEventListener("MSPointerUp",ut,!1))),Ct.keyboard&&document.addEventListener("keydown",at,!1),Ct.progress&&Ot.progress&&Ot.progress.addEventListener("click",vt,!1),Ct.controls&&Ot.controls&&["touchstart","click"].forEach(function(e){Ot.controlsLeft.forEach(function(t){t.addEventListener(e,pt,!1)}),Ot.controlsRight.forEach(function(t){t.addEventListener(e,mt,!1)}),Ot.controlsUp.forEach(function(t){t.addEventListener(e,gt,!1)}),Ot.controlsDown.forEach(function(t){t.addEventListener(e,ht,!1)}),Ot.controlsPrev.forEach(function(t){t.addEventListener(e,yt,!1)}),Ot.controlsNext.forEach(function(t){t.addEventListener(e,bt,!1)})})}function c(){Ft=!1,document.removeEventListener("keydown",at,!1),window.removeEventListener("hashchange",wt,!1),window.removeEventListener("resize",Lt,!1),Ot.wrapper.removeEventListener("touchstart",it,!1),Ot.wrapper.removeEventListener("touchmove",st,!1),Ot.wrapper.removeEventListener("touchend",ct,!1),window.navigator.msPointerEnabled&&(Ot.wrapper.removeEventListener("MSPointerDown",lt,!1),Ot.wrapper.removeEventListener("MSPointerMove",dt,!1),Ot.wrapper.removeEventListener("MSPointerUp",ut,!1)),Ct.progress&&Ot.progress&&Ot.progress.removeEventListener("click",vt,!1),Ct.controls&&Ot.controls&&["touchstart","click"].forEach(function(e){Ot.controlsLeft.forEach(function(t){t.removeEventListener(e,pt,!1)}),Ot.controlsRight.forEach(function(t){t.removeEventListener(e,mt,!1)}),Ot.controlsUp.forEach(function(t){t.removeEventListener(e,gt,!1)}),Ot.controlsDown.forEach(function(t){t.removeEventListener(e,ht,!1)}),Ot.controlsPrev.forEach(function(t){t.removeEventListener(e,yt,!1)}),Ot.controlsNext.forEach(function(t){t.removeEventListener(e,bt,!1)})})}function l(e,t){for(var n in t)e[n]=t[n]}function d(e){return Array.prototype.slice.call(e)}function u(e,t){var n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)}function f(e){var t=0;if(e){var n=0;d(e.childNodes).forEach(function(e){"number"==typeof e.offsetTop&&e.style&&("absolute"===e.style.position&&(n+=1),t=Math.max(t,e.offsetTop+e.offsetHeight))}),0===n&&(t=e.offsetHeight)}return t}function v(){return/print-pdf/gi.test(window.location.search)}function p(){0===window.orientation?(document.documentElement.style.overflow="scroll",document.body.style.height="120%"):(document.documentElement.style.overflow="",document.body.style.height="100%"),setTimeout(function(){window.scrollTo(0,1)},10)}function m(e,t){var n=document.createEvent("HTMLEvents",1,2);n.initEvent(e,!0,!0),l(n,t),Ot.wrapper.dispatchEvent(n)}function g(){if(Yt&&!("msPerspective"in document.body.style))for(var e=document.querySelectorAll(Tt+" a:not(.image)"),t=0,n=e.length;n>t;t++){var r=e[t];if(!(!r.textContent||r.querySelector("*")||r.className&&r.classList.contains(r,"roll"))){var o=document.createElement("span");o.setAttribute("data-title",r.text),o.innerHTML=r.innerHTML,r.classList.add("roll"),r.innerHTML="",r.appendChild(o)}}}function h(){for(var e=document.querySelectorAll(Tt+" a.roll"),t=0,n=e.length;n>t;t++){var r=e[t],o=r.querySelector("span");o&&(r.classList.remove("roll"),r.innerHTML=o.innerHTML)}}function y(e){var t=d(document.querySelectorAll(e?e:"a"));t.forEach(function(e){/^(http|www)/gi.test(e.getAttribute("href"))&&e.addEventListener("click",kt,!1)})}function b(){var e=d(document.querySelectorAll("a"));e.forEach(function(e){/^(http|www)/gi.test(e.getAttribute("href"))&&e.removeEventListener("click",kt,!1)})}function w(e){L(),Ot.preview=document.createElement("div"),Ot.preview.classList.add("preview-link-overlay"),Ot.wrapper.appendChild(Ot.preview),Ot.preview.innerHTML=["
",'','',"
",'
','
','',"
"].join(""),Ot.preview.querySelector("iframe").addEventListener("load",function(){Ot.preview.classList.add("loaded")},!1),Ot.preview.querySelector(".close").addEventListener("click",function(e){L(),e.preventDefault()},!1),Ot.preview.querySelector(".external").addEventListener("click",function(){L()},!1),setTimeout(function(){Ot.preview.classList.add("visible")},1)}function L(){Ot.preview&&(Ot.preview.setAttribute("src",""),Ot.preview.parentNode.removeChild(Ot.preview),Ot.preview=null)}function E(e){var t=d(e);return t.forEach(function(e,t){e.hasAttribute("data-fragment-index")||e.setAttribute("data-fragment-index",t)}),t.sort(function(e,t){return e.getAttribute("data-fragment-index")-t.getAttribute("data-fragment-index")}),t}function k(){if(Ot.wrapper&&!v()){var e=Ot.wrapper.offsetWidth,t=Ot.wrapper.offsetHeight;e-=t*Ct.margin,t-=t*Ct.margin;var n=Ct.width,r=Ct.height;if("string"==typeof n&&/%$/.test(n)&&(n=parseInt(n,10)/100*e),"string"==typeof r&&/%$/.test(r)&&(r=parseInt(r,10)/100*t),Ot.slides.style.width=n+"px",Ot.slides.style.height=r+"px",It=Math.min(e/n,t/r),It=Math.max(It,Ct.minScale),It=Math.min(It,Ct.maxScale),void 0===Ot.slides.style.zoom||navigator.userAgent.match(/(iphone|ipod|ipad|android)/gi)){var o="translate(-50%, -50%) scale("+It+") translate(50%, 50%)";Ot.slides.style.WebkitTransform=o,Ot.slides.style.MozTransform=o,Ot.slides.style.msTransform=o,Ot.slides.style.OTransform=o,Ot.slides.style.transform=o}else Ot.slides.style.zoom=It;for(var a=d(document.querySelectorAll(Tt)),i=0,s=a.length;s>i;i++){var c=a[i];"none"!==c.style.display&&(c.style.top=Ct.center?c.classList.contains("stack")?0:Math.max(-(f(c)/2)-20,-r/2)+"px":"")}H()}}function S(e,t){"object"==typeof e&&"function"==typeof e.setAttribute&&e.setAttribute("data-previous-indexv",t||0)}function A(e){if("object"==typeof e&&"function"==typeof e.setAttribute&&e.classList.contains("stack")){var t=e.hasAttribute("data-start-indexv")?"data-start-indexv":"data-previous-indexv";return parseInt(e.getAttribute(t)||0,10)}return 0}function q(){if(Ct.overview){G();var e=Ot.wrapper.classList.contains("overview");Ot.wrapper.classList.add("overview"),Ot.wrapper.classList.remove("exit-overview"),clearTimeout(Ut),clearTimeout(jt),Ut=setTimeout(function(){for(var t=document.querySelectorAll(Mt),n=0,r=t.length;r>n;n++){var o=t[n],a=Ct.rtl?-105:105,i="translateZ(-2500px) translate("+(n-St)*a+"%, 0%)";if(o.setAttribute("data-index-h",n),o.style.display="block",o.style.WebkitTransform=i,o.style.MozTransform=i,o.style.msTransform=i,o.style.OTransform=i,o.style.transform=i,o.classList.contains("stack"))for(var s=o.querySelectorAll("section"),c=0,l=s.length;l>c;c++){var d=n===St?At:A(o),u=s[c],f="translate(0%, "+105*(c-d)+"%)";u.setAttribute("data-index-h",n),u.setAttribute("data-index-v",c),u.style.display="block",u.style.WebkitTransform=f,u.style.MozTransform=f,u.style.msTransform=f,u.style.OTransform=f,u.style.transform=f,u.addEventListener("click",Et,!0)}else o.addEventListener("click",Et,!0)}k(),e||m("overviewshown",{indexh:St,indexv:At,currentSlide:xt})},10)}}function x(){if(Ct.overview){clearTimeout(Ut),clearTimeout(jt),Ot.wrapper.classList.remove("overview"),Ot.wrapper.classList.add("exit-overview"),jt=setTimeout(function(){Ot.wrapper.classList.remove("exit-overview")},10);for(var e=d(document.querySelectorAll(Tt)),t=0,n=e.length;n>t;t++){var r=e[t];r.style.display="",r.style.WebkitTransform="",r.style.MozTransform="",r.style.msTransform="",r.style.OTransform="",r.style.transform="",r.removeEventListener("click",Et,!0)}O(St,At),B(),m("overviewhidden",{indexh:St,indexv:At,currentSlide:xt})}}function T(e){"boolean"==typeof e?e?q():x():M()?x():q()}function M(){return Ot.wrapper.classList.contains("overview")}function P(e){return e=e?e:xt,e&&!!e.parentNode.nodeName.match(/section/i)}function N(){var e=document.body,t=e.requestFullScreen||e.webkitRequestFullscreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullScreen;t&&t.apply(e)}function C(){var e=Ot.wrapper.classList.contains("paused");G(),Ot.wrapper.classList.add("paused"),e===!1&&m("paused")}function D(){var e=Ot.wrapper.classList.contains("paused");Ot.wrapper.classList.remove("paused"),B(),e&&m("resumed")}function R(){I()?D():C()}function I(){return Ot.wrapper.classList.contains("paused")}function O(e,t,n,r){qt=xt;var o=document.querySelectorAll(Mt);void 0===t&&(t=A(o[e])),qt&&qt.parentNode&&qt.parentNode.classList.contains("stack")&&S(qt.parentNode,At);var a=Rt.concat();Rt.length=0;var i=St,s=At;St=z(Mt,void 0===e?St:e),At=z(Pt,void 0===t?At:t),k();e:for(var c=0,l=Rt.length;l>c;c++){for(var u=0;a.length>u;u++)if(a[u]===Rt[c]){a.splice(u,1);continue e}document.documentElement.classList.add(Rt[c]),m(Rt[c])}for(;a.length;)document.documentElement.classList.remove(a.pop());M()&&q();var f=o[St],v=f.querySelectorAll("section");if(xt=v[At]||f,n!==void 0){var p=E(xt.querySelectorAll(".fragment"));d(p).forEach(function(e,t){n>t?e.classList.add("visible"):e.classList.remove("visible")})}var g=St!==i||At!==s;g?m("slidechanged",{indexh:St,indexv:At,previousSlide:qt,currentSlide:xt,origin:r}):qt=null,qt&&(qt.classList.remove("present"),document.querySelector(Nt).classList.contains("present")&&setTimeout(function(){var e,t=d(document.querySelectorAll(Mt+".stack"));for(e in t)t[e]&&S(t[e],0)},0)),g&&(_(qt),F(xt)),X(),H(),W(),$()}function Y(){c(),s(),k(),Dt=Ct.autoSlide,B(),n(),X(),H(),W()}function z(e,t){var n=d(document.querySelectorAll(e)),r=n.length;if(r){Ct.loop&&(t%=r,0>t&&(t=r+t)),t=Math.max(Math.min(t,r-1),0);for(var o=0;r>o;o++){var a=n[o];if(M()===!1){var i=Math.abs((t-o)%(r-3))||0;a.style.display=i>3?"none":"block"}var s=Ct.rtl&&!P(a);if(a.classList.remove("past"),a.classList.remove("present"),a.classList.remove("future"),a.setAttribute("hidden",""),t>o)a.classList.add(s?"future":"past");else if(o>t){a.classList.add(s?"past":"future");for(var c=d(a.querySelectorAll(".fragment.visible"));c.length;)c.pop().classList.remove("visible")}a.querySelector("section")&&a.classList.add("stack")}n[t].classList.add("present"),n[t].removeAttribute("hidden");var l=n[t].getAttribute("data-state");l&&(Rt=Rt.concat(l.split(" ")));var u=n[t].getAttribute("data-autoslide");Dt=u?parseInt(u,10):Ct.autoSlide,B()}else t=0;return t}function H(){if(Ct.progress&&Ot.progress){var e=d(document.querySelectorAll(Mt)),t=document.querySelectorAll(Tt+":not(.stack)").length,n=0;e:for(var r=0;e.length>r;r++){for(var o=e[r],a=d(o.querySelectorAll("section")),i=0;a.length>i;i++){if(a[i].classList.contains("present"))break e;n++}if(o.classList.contains("present"))break;o.classList.contains("stack")===!1&&n++}Ot.progressbar.style.width=n/(t-1)*window.innerWidth+"px"}}function X(){if(Ct.controls&&Ot.controls){var e=U(),t=j();Ot.controlsLeft.concat(Ot.controlsRight).concat(Ot.controlsUp).concat(Ot.controlsDown).concat(Ot.controlsPrev).concat(Ot.controlsNext).forEach(function(e){e.classList.remove("enabled"),e.classList.remove("fragmented")}),e.left&&Ot.controlsLeft.forEach(function(e){e.classList.add("enabled")}),e.right&&Ot.controlsRight.forEach(function(e){e.classList.add("enabled")}),e.up&&Ot.controlsUp.forEach(function(e){e.classList.add("enabled")}),e.down&&Ot.controlsDown.forEach(function(e){e.classList.add("enabled")}),(e.left||e.up)&&Ot.controlsPrev.forEach(function(e){e.classList.add("enabled")}),(e.right||e.down)&&Ot.controlsNext.forEach(function(e){e.classList.add("enabled")}),xt&&(t.prev&&Ot.controlsPrev.forEach(function(e){e.classList.add("fragmented","enabled")}),t.next&&Ot.controlsNext.forEach(function(e){e.classList.add("fragmented","enabled")}),P(xt)?(t.prev&&Ot.controlsUp.forEach(function(e){e.classList.add("fragmented","enabled")}),t.next&&Ot.controlsDown.forEach(function(e){e.classList.add("fragmented","enabled")})):(t.prev&&Ot.controlsLeft.forEach(function(e){e.classList.add("fragmented","enabled")}),t.next&&Ot.controlsRight.forEach(function(e){e.classList.add("fragmented","enabled")})))}}function W(){d(Ot.background.childNodes).forEach(function(e,t){var n=Ct.rtl?"future":"past",r=Ct.rtl?"past":"future";e.className="slide-background "+(St>t?n:t>St?r:"present"),d(e.childNodes).forEach(function(e,t){e.className="slide-background "+(At>t?"past":t>At?"future":"present")})}),setTimeout(function(){Ot.background.classList.remove("no-transition")},1)}function U(){var e=document.querySelectorAll(Mt),t=document.querySelectorAll(Pt),n={left:St>0||Ct.loop,right:e.length-1>St||Ct.loop,up:At>0,down:t.length-1>At};if(Ct.rtl){var r=n.left;n.left=n.right,n.right=r}return n}function j(){if(xt&&Ct.fragments){var e=xt.querySelectorAll(".fragment"),t=xt.querySelectorAll(".fragment:not(.visible)");return{prev:e.length-t.length>0,next:!!t.length}}return{prev:!1,next:!1}}function F(e){e&&(d(e.querySelectorAll("video, audio")).forEach(function(e){e.hasAttribute("data-autoplay")&&e.play()}),d(e.querySelectorAll('iframe[src*="youtube.com/embed/"]')).forEach(function(e){e.hasAttribute("data-autoplay")&&e.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}',"*")}))}function _(e){e&&(d(e.querySelectorAll("video, audio")).forEach(function(e){e.hasAttribute("data-ignore")||e.pause()}),d(e.querySelectorAll('iframe[src*="youtube.com/embed/"]')).forEach(function(e){e.hasAttribute("data-ignore")||"function"!=typeof e.contentWindow.postMessage||e.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*")}))}function K(){var e=window.location.hash,t=e.slice(2).split("/"),n=e.replace(/#|\//gi,"");if(isNaN(parseInt(t[0],10))&&n.length){var r=document.querySelector("#"+n);if(r){var o=Reveal.getIndices(r);O(o.h,o.v)}else O(St,At)}else{var a=parseInt(t[0],10)||0,i=parseInt(t[1],10)||0;(a!==St||i!==At)&&O(a,i)}}function $(e){if(Ct.history)if(clearTimeout(Wt),"number"==typeof e)Wt=setTimeout($,e);else{var t="/";xt&&"string"==typeof xt.getAttribute("id")?t="/"+xt.getAttribute("id"):((St>0||At>0)&&(t+=St),At>0&&(t+="/"+At)),window.location.hash=t}}function V(e){var t,n=St,r=At;if(e){var o=P(e),a=o?e.parentNode:e,i=d(document.querySelectorAll(Mt));n=Math.max(i.indexOf(a),0),o&&(r=Math.max(d(e.parentNode.querySelectorAll("section")).indexOf(e),0))}if(!e&&xt){var s=xt.querySelectorAll(".fragment").length>0;if(s){var c=xt.querySelectorAll(".fragment.visible");t=c.length}}return{h:n,v:r,f:t}}function Z(){if(xt&&Ct.fragments){var e=E(xt.querySelectorAll(".fragment:not(.visible)"));if(e.length){var t=e[0].getAttribute("data-fragment-index");return e=xt.querySelectorAll('.fragment[data-fragment-index="'+t+'"]'),d(e).forEach(function(e){e.classList.add("visible")}),m("fragmentshown",{fragment:e[0],fragments:e}),X(),!0}}return!1}function Q(){if(xt&&Ct.fragments){var e=E(xt.querySelectorAll(".fragment.visible"));if(e.length){var t=e[e.length-1].getAttribute("data-fragment-index");return e=xt.querySelectorAll('.fragment[data-fragment-index="'+t+'"]'),d(e).forEach(function(e){e.classList.remove("visible")}),m("fragmenthidden",{fragment:e[0],fragments:e}),X(),!0}}return!1}function B(){clearTimeout(Xt),!Dt||I()||M()||(Xt=setTimeout(ot,Dt))}function G(){clearTimeout(Xt)}function J(){Ct.rtl?(M()||Z()===!1)&&U().left&&O(St+1):(M()||Q()===!1)&&U().left&&O(St-1)}function et(){Ct.rtl?(M()||Q()===!1)&&U().right&&O(St-1):(M()||Z()===!1)&&U().right&&O(St+1)}function tt(){(M()||Q()===!1)&&U().up&&O(St,At-1)}function nt(){(M()||Z()===!1)&&U().down&&O(St,At+1)}function rt(){if(Q()===!1)if(U().up)tt();else{var e=document.querySelector(Mt+".past:nth-child("+St+")");if(e){var t=e.querySelectorAll("section").length-1||void 0,n=St-1;O(n,t)}}}function ot(){Z()===!1&&(U().down?nt():et()),B()}function at(e){document.activeElement;var t=!(!document.activeElement||!document.activeElement.type&&!document.activeElement.href&&"inherit"===document.activeElement.contentEditable);if(!(t||e.shiftKey&&32!==e.keyCode||e.altKey||e.ctrlKey||e.metaKey)){if(I()&&-1===[66,190,191].indexOf(e.keyCode))return!1;var n=!1;if("object"==typeof Ct.keyboard)for(var r in Ct.keyboard)if(parseInt(r,10)===e.keyCode){var o=Ct.keyboard[r];"function"==typeof o?o.apply(null,[e]):"string"==typeof o&&"function"==typeof Reveal[o]&&Reveal[o].call(),n=!0}if(n===!1)switch(n=!0,e.keyCode){case 80:case 33:rt();break;case 78:case 34:ot();break;case 72:case 37:J();break;case 76:case 39:et();break;case 75:case 38:tt();break;case 74:case 40:nt();break;case 36:O(0);break;case 35:O(Number.MAX_VALUE);break;case 32:M()?x():e.shiftKey?rt():ot();break;case 13:M()?x():n=!1;break;case 66:case 190:case 191:R();break;case 70:N();break;default:n=!1}n?e.preventDefault():27!==e.keyCode&&79!==e.keyCode||!Yt||(T(),e.preventDefault()),B()}}function it(e){_t.startX=e.touches[0].clientX,_t.startY=e.touches[0].clientY,_t.startCount=e.touches.length,2===e.touches.length&&Ct.overview&&(_t.startSpan=u({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:_t.startX,y:_t.startY}))}function st(e){if(_t.handled)navigator.userAgent.match(/android/gi)&&e.preventDefault();else{var t=e.touches[0].clientX,n=e.touches[0].clientY;if(2===e.touches.length&&2===_t.startCount&&Ct.overview){var r=u({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:_t.startX,y:_t.startY});Math.abs(_t.startSpan-r)>_t.threshold&&(_t.handled=!0,_t.startSpan>r?q():x()),e.preventDefault()}else if(1===e.touches.length&&2!==_t.startCount){var o=t-_t.startX,a=n-_t.startY;o>_t.threshold&&Math.abs(o)>Math.abs(a)?(_t.handled=!0,J()):-_t.threshold>o&&Math.abs(o)>Math.abs(a)?(_t.handled=!0,et()):a>_t.threshold?(_t.handled=!0,tt()):-_t.threshold>a&&(_t.handled=!0,nt()),e.preventDefault()}}}function ct(){_t.handled=!1}function lt(e){e.pointerType===e.MSPOINTER_TYPE_TOUCH&&(e.touches=[{clientX:e.clientX,clientY:e.clientY}],it(e))}function dt(e){e.pointerType===e.MSPOINTER_TYPE_TOUCH&&(e.touches=[{clientX:e.clientX,clientY:e.clientY}],st(e))}function ut(e){e.pointerType===e.MSPOINTER_TYPE_TOUCH&&(e.touches=[{clientX:e.clientX,clientY:e.clientY}],ct(e))}function ft(e){if(Date.now()-Ht>600){Ht=Date.now();var t=e.detail||-e.wheelDelta;t>0?ot():rt()}}function vt(e){e.preventDefault();var t=d(document.querySelectorAll(Mt)).length,n=Math.floor(e.clientX/Ot.wrapper.offsetWidth*t);O(n)}function pt(e){e.preventDefault(),J()}function mt(e){e.preventDefault(),et()}function gt(e){e.preventDefault(),tt()}function ht(e){e.preventDefault(),nt()}function yt(e){e.preventDefault(),rt()}function bt(e){e.preventDefault(),ot()}function wt(){K()}function Lt(){k()}function Et(e){if(Ft&&M()){e.preventDefault();for(var t=e.target;t&&!t.nodeName.match(/section/gi);)t=t.parentNode;if(t&&!t.classList.contains("disabled")&&(x(),t.nodeName.match(/section/gi))){var n=parseInt(t.getAttribute("data-index-h"),10),r=parseInt(t.getAttribute("data-index-v"),10);O(n,r)}}}function kt(e){var t=e.target.getAttribute("href");t&&(w(t),e.preventDefault())}var St,At,qt,xt,Tt=".reveal .slides section",Mt=".reveal .slides>section",Pt=".reveal .slides>section.present>section",Nt=".reveal .slides>section:first-child",Ct={width:960,height:700,margin:.1,minScale:.2,maxScale:1,controls:!0,progress:!0,history:!1,keyboard:!0,overview:!0,center:!0,touch:!0,loop:!1,rtl:!1,fragments:!0,autoSlide:0,mouseWheel:!1,rollingLinks:!1,previewLinks:!1,theme:null,transition:"default",transitionSpeed:"default",backgroundTransition:"default",dependencies:[]},Dt=0,Rt=[],It=1,Ot={},Yt="WebkitPerspective"in document.body.style||"MozPerspective"in document.body.style||"msPerspective"in document.body.style||"OPerspective"in document.body.style||"perspective"in document.body.style,zt="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,Ht=0,Xt=0,Wt=0,Ut=0,jt=0,Ft=!1,_t={startX:0,startY:0,startSpan:0,startCount:0,handled:!1,threshold:80};return{initialize:e,configure:i,sync:Y,slide:O,left:J,right:et,up:tt,down:nt,prev:rt,next:ot,prevFragment:Q,nextFragment:Z,navigateTo:O,navigateLeft:J,navigateRight:et,navigateUp:tt,navigateDown:nt,navigatePrev:rt,navigateNext:ot,layout:k,availableRoutes:U,availableFragments:j,toggleOverview:T,togglePause:R,isOverview:M,isPaused:I,addEventListeners:s,removeEventListeners:c,getIndices:V,getSlide:function(e,t){var n=document.querySelectorAll(Mt)[e],r=n&&n.querySelectorAll("section");return t!==void 0?r?r[t]:void 0:n},getPreviousSlide:function(){return qt},getCurrentSlide:function(){return xt},getScale:function(){return It},getConfig:function(){return Ct},getQueryHash:function(){var e={};return location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(t){e[t.split("=").shift()]=t.split("=").pop()}),e},isFirstSlide:function(){return null==document.querySelector(Tt+".past")?!0:!1},isLastSlide:function(){return xt&&xt.classList.contains(".stack")?null==xt.querySelector(Tt+".future")?!0:!1:null==document.querySelector(Tt+".future")?!0:!1},addEventListener:function(e,t,n){"addEventListener"in window&&(Ot.wrapper||document.querySelector(".reveal")).addEventListener(e,t,n)},removeEventListener:function(e,t,n){"addEventListener"in window&&(Ot.wrapper||document.querySelector(".reveal")).removeEventListener(e,t,n)}}}(); \ No newline at end of file +var Reveal=function(){"use strict";function e(e){return Xt||Ht?(window.addEventListener("load",k,!1),l(Rt,e),r(),o(),void 0):(document.body.setAttribute("class","no-transforms"),void 0)}function t(){if(zt.theme=document.querySelector("#theme"),zt.wrapper=document.querySelector(".reveal"),zt.slides=document.querySelector(".reveal .slides"),document.querySelector(".reveal .backgrounds")||(zt.background=document.createElement("div"),zt.background.classList.add("backgrounds"),zt.wrapper.appendChild(zt.background)),!zt.wrapper.querySelector(".progress")){var e=document.createElement("div");e.classList.add("progress"),e.innerHTML="",zt.wrapper.appendChild(e)}if(!zt.wrapper.querySelector(".controls")){var t=document.createElement("aside");t.classList.add("controls"),t.innerHTML='',zt.wrapper.appendChild(t)}if(!zt.wrapper.querySelector(".state-background")){var n=document.createElement("div");n.classList.add("state-background"),zt.wrapper.appendChild(n)}if(!zt.wrapper.querySelector(".pause-overlay")){var r=document.createElement("div");r.classList.add("pause-overlay"),zt.wrapper.appendChild(r)}zt.progress=document.querySelector(".reveal .progress"),zt.progressbar=document.querySelector(".reveal .progress span"),Rt.controls&&(zt.controls=document.querySelector(".reveal .controls"),zt.controlsLeft=d(document.querySelectorAll(".navigate-left")),zt.controlsRight=d(document.querySelectorAll(".navigate-right")),zt.controlsUp=d(document.querySelectorAll(".navigate-up")),zt.controlsDown=d(document.querySelectorAll(".navigate-down")),zt.controlsPrev=d(document.querySelectorAll(".navigate-prev")),zt.controlsNext=d(document.querySelectorAll(".navigate-next")))}function n(){function e(e,t){var n={background:e.getAttribute("data-background"),backgroundSize:e.getAttribute("data-background-size"),backgroundImage:e.getAttribute("data-background-image"),backgroundColor:e.getAttribute("data-background-color"),backgroundRepeat:e.getAttribute("data-background-repeat"),backgroundPosition:e.getAttribute("data-background-position"),backgroundTransition:e.getAttribute("data-background-transition")},r=document.createElement("div");return r.className="slide-background",n.background&&(/^(http|file|\/\/)/gi.test(n.background)||/\.(png|jpg|jpeg|gif|bmp)$/gi.test(n.background)?r.style.backgroundImage="url("+n.background+")":r.style.background=n.background),n.backgroundSize&&(r.style.backgroundSize=n.backgroundSize),n.backgroundImage&&(r.style.backgroundImage='url("'+n.backgroundImage+'")'),n.backgroundColor&&(r.style.backgroundColor=n.backgroundColor),n.backgroundRepeat&&(r.style.backgroundRepeat=n.backgroundRepeat),n.backgroundPosition&&(r.style.backgroundPosition=n.backgroundPosition),n.backgroundTransition&&r.setAttribute("data-background-transition",n.backgroundTransition),t.appendChild(r),r}v()&&document.body.classList.add("print-pdf"),zt.background.innerHTML="",zt.background.classList.add("no-transition"),d(document.querySelectorAll(Pt)).forEach(function(t){var n;n=v()?e(t,t):e(t,zt.background),d(t.querySelectorAll("section")).forEach(function(t){v()?e(t,t):e(t,n)})})}function r(){/iphone|ipod|android/gi.test(navigator.userAgent)&&!/crios/gi.test(navigator.userAgent)&&(window.addEventListener("load",p,!1),window.addEventListener("orientationchange",p,!1))}function o(){function e(){n.length&&head.js.apply(null,n),a()}for(var t=[],n=[],r=0,o=Rt.dependencies.length;o>r;r++){var i=Rt.dependencies[r];(!i.condition||i.condition())&&(i.async?n.push(i.src):t.push(i.src),"function"==typeof i.callback&&head.ready(i.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],i.callback))}t.length?(head.ready(e),head.js.apply(null,t)):e()}function a(){t(),i(),$(),setTimeout(function(){m("ready",{indexh:At,indexv:qt,currentSlide:Tt})},1)}function i(e){if(zt.wrapper.classList.remove(Rt.transition),"object"==typeof e&&l(Rt,e),Ht===!1&&(Rt.transition="linear"),zt.wrapper.classList.add(Rt.transition),zt.wrapper.setAttribute("data-transition-speed",Rt.transitionSpeed),zt.wrapper.setAttribute("data-background-transition",Rt.backgroundTransition),zt.controls&&(zt.controls.style.display=Rt.controls&&zt.controls?"block":"none"),zt.progress&&(zt.progress.style.display=Rt.progress&&zt.progress?"block":"none"),Rt.rtl?zt.wrapper.classList.add("rtl"):zt.wrapper.classList.remove("rtl"),Rt.center?zt.wrapper.classList.add("center"):zt.wrapper.classList.remove("center"),Rt.mouseWheel?(document.addEventListener("DOMMouseScroll",vt,!1),document.addEventListener("mousewheel",vt,!1)):(document.removeEventListener("DOMMouseScroll",vt,!1),document.removeEventListener("mousewheel",vt,!1)),Rt.rollingLinks?g():h(),Rt.previewLinks?y():(b(),y("[data-preview-link]")),Rt.theme&&zt.theme){var t=zt.theme.getAttribute("href"),n=/[^\/]*?(?=\.css)/,r=t.match(n)[0];Rt.theme!==r&&(t=t.replace(n,Rt.theme),zt.theme.setAttribute("href",t))}Y()}function s(){Kt=!0,window.addEventListener("hashchange",Lt,!1),window.addEventListener("resize",Et,!1),Rt.touch&&(zt.wrapper.addEventListener("touchstart",st,!1),zt.wrapper.addEventListener("touchmove",ct,!1),zt.wrapper.addEventListener("touchend",lt,!1),window.navigator.msPointerEnabled&&(zt.wrapper.addEventListener("MSPointerDown",dt,!1),zt.wrapper.addEventListener("MSPointerMove",ut,!1),zt.wrapper.addEventListener("MSPointerUp",ft,!1))),Rt.keyboard&&document.addEventListener("keydown",it,!1),Rt.progress&&zt.progress&&zt.progress.addEventListener("click",pt,!1),Rt.controls&&zt.controls&&["touchstart","click"].forEach(function(e){zt.controlsLeft.forEach(function(t){t.addEventListener(e,mt,!1)}),zt.controlsRight.forEach(function(t){t.addEventListener(e,gt,!1)}),zt.controlsUp.forEach(function(t){t.addEventListener(e,ht,!1)}),zt.controlsDown.forEach(function(t){t.addEventListener(e,yt,!1)}),zt.controlsPrev.forEach(function(t){t.addEventListener(e,bt,!1)}),zt.controlsNext.forEach(function(t){t.addEventListener(e,wt,!1)})})}function c(){Kt=!1,document.removeEventListener("keydown",it,!1),window.removeEventListener("hashchange",Lt,!1),window.removeEventListener("resize",Et,!1),zt.wrapper.removeEventListener("touchstart",st,!1),zt.wrapper.removeEventListener("touchmove",ct,!1),zt.wrapper.removeEventListener("touchend",lt,!1),window.navigator.msPointerEnabled&&(zt.wrapper.removeEventListener("MSPointerDown",dt,!1),zt.wrapper.removeEventListener("MSPointerMove",ut,!1),zt.wrapper.removeEventListener("MSPointerUp",ft,!1)),Rt.progress&&zt.progress&&zt.progress.removeEventListener("click",pt,!1),Rt.controls&&zt.controls&&["touchstart","click"].forEach(function(e){zt.controlsLeft.forEach(function(t){t.removeEventListener(e,mt,!1)}),zt.controlsRight.forEach(function(t){t.removeEventListener(e,gt,!1)}),zt.controlsUp.forEach(function(t){t.removeEventListener(e,ht,!1)}),zt.controlsDown.forEach(function(t){t.removeEventListener(e,yt,!1)}),zt.controlsPrev.forEach(function(t){t.removeEventListener(e,bt,!1)}),zt.controlsNext.forEach(function(t){t.removeEventListener(e,wt,!1)})})}function l(e,t){for(var n in t)e[n]=t[n]}function d(e){return Array.prototype.slice.call(e)}function u(e,t){var n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)}function f(e){var t=0;if(e){var n=0;d(e.childNodes).forEach(function(e){"number"==typeof e.offsetTop&&e.style&&("absolute"===e.style.position&&(n+=1),t=Math.max(t,e.offsetTop+e.offsetHeight))}),0===n&&(t=e.offsetHeight)}return t}function v(){return/print-pdf/gi.test(window.location.search)}function p(){0===window.orientation?(document.documentElement.style.overflow="scroll",document.body.style.height="120%"):(document.documentElement.style.overflow="",document.body.style.height="100%"),setTimeout(function(){window.scrollTo(0,1)},10)}function m(e,t){var n=document.createEvent("HTMLEvents",1,2);n.initEvent(e,!0,!0),l(n,t),zt.wrapper.dispatchEvent(n)}function g(){if(Ht&&!("msPerspective"in document.body.style))for(var e=document.querySelectorAll(Mt+" a:not(.image)"),t=0,n=e.length;n>t;t++){var r=e[t];if(!(!r.textContent||r.querySelector("*")||r.className&&r.classList.contains(r,"roll"))){var o=document.createElement("span");o.setAttribute("data-title",r.text),o.innerHTML=r.innerHTML,r.classList.add("roll"),r.innerHTML="",r.appendChild(o)}}}function h(){for(var e=document.querySelectorAll(Mt+" a.roll"),t=0,n=e.length;n>t;t++){var r=e[t],o=r.querySelector("span");o&&(r.classList.remove("roll"),r.innerHTML=o.innerHTML)}}function y(e){var t=d(document.querySelectorAll(e?e:"a"));t.forEach(function(e){/^(http|www)/gi.test(e.getAttribute("href"))&&e.addEventListener("click",St,!1)})}function b(){var e=d(document.querySelectorAll("a"));e.forEach(function(e){/^(http|www)/gi.test(e.getAttribute("href"))&&e.removeEventListener("click",St,!1)})}function w(e){L(),zt.preview=document.createElement("div"),zt.preview.classList.add("preview-link-overlay"),zt.wrapper.appendChild(zt.preview),zt.preview.innerHTML=["
",'','',"
",'
','
','',"
"].join(""),zt.preview.querySelector("iframe").addEventListener("load",function(){zt.preview.classList.add("loaded")},!1),zt.preview.querySelector(".close").addEventListener("click",function(e){L(),e.preventDefault()},!1),zt.preview.querySelector(".external").addEventListener("click",function(){L()},!1),setTimeout(function(){zt.preview.classList.add("visible")},1)}function L(){zt.preview&&(zt.preview.setAttribute("src",""),zt.preview.parentNode.removeChild(zt.preview),zt.preview=null)}function E(e){var t=d(e);return t.forEach(function(e,t){e.hasAttribute("data-fragment-index")||e.setAttribute("data-fragment-index",t)}),t.sort(function(e,t){return e.getAttribute("data-fragment-index")-t.getAttribute("data-fragment-index")}),t}function k(){if(zt.wrapper&&!v()){var e=zt.wrapper.offsetWidth,t=zt.wrapper.offsetHeight;e-=t*Rt.margin,t-=t*Rt.margin;var n=Rt.width,r=Rt.height;if("string"==typeof n&&/%$/.test(n)&&(n=parseInt(n,10)/100*e),"string"==typeof r&&/%$/.test(r)&&(r=parseInt(r,10)/100*t),zt.slides.style.width=n+"px",zt.slides.style.height=r+"px",Yt=Math.min(e/n,t/r),Yt=Math.max(Yt,Rt.minScale),Yt=Math.min(Yt,Rt.maxScale),void 0===zt.slides.style.zoom||navigator.userAgent.match(/(iphone|ipod|ipad|android)/gi)){var o="translate(-50%, -50%) scale("+Yt+") translate(50%, 50%)";zt.slides.style.WebkitTransform=o,zt.slides.style.MozTransform=o,zt.slides.style.msTransform=o,zt.slides.style.OTransform=o,zt.slides.style.transform=o}else zt.slides.style.zoom=Yt;for(var a=d(document.querySelectorAll(Mt)),i=0,s=a.length;s>i;i++){var c=a[i];"none"!==c.style.display&&(c.style.top=Rt.center?c.classList.contains("stack")?0:Math.max(-(f(c)/2)-20,-r/2)+"px":"")}X()}}function S(e,t){"object"==typeof e&&"function"==typeof e.setAttribute&&e.setAttribute("data-previous-indexv",t||0)}function A(e){if("object"==typeof e&&"function"==typeof e.setAttribute&&e.classList.contains("stack")){var t=e.hasAttribute("data-start-indexv")?"data-start-indexv":"data-previous-indexv";return parseInt(e.getAttribute(t)||0,10)}return 0}function q(){if(Rt.overview){J();var e=zt.wrapper.classList.contains("overview");zt.wrapper.classList.add("overview"),zt.wrapper.classList.remove("exit-overview"),clearTimeout(Ft),clearTimeout(_t),Ft=setTimeout(function(){for(var t=document.querySelectorAll(Pt),n=0,r=t.length;r>n;n++){var o=t[n],a=Rt.rtl?-105:105,i="translateZ(-2500px) translate("+(n-At)*a+"%, 0%)";if(o.setAttribute("data-index-h",n),o.style.WebkitTransform=i,o.style.MozTransform=i,o.style.msTransform=i,o.style.OTransform=i,o.style.transform=i,o.classList.contains("stack"))for(var s=o.querySelectorAll("section"),c=0,l=s.length;l>c;c++){var d=n===At?qt:A(o),u=s[c],f="translate(0%, "+105*(c-d)+"%)";u.setAttribute("data-index-h",n),u.setAttribute("data-index-v",c),u.style.WebkitTransform=f,u.style.MozTransform=f,u.style.msTransform=f,u.style.OTransform=f,u.style.transform=f,u.addEventListener("click",kt,!0)}else o.addEventListener("click",kt,!0)}H(),k(),e||m("overviewshown",{indexh:At,indexv:qt,currentSlide:Tt})},10)}}function x(){if(Rt.overview){clearTimeout(Ft),clearTimeout(_t),zt.wrapper.classList.remove("overview"),zt.wrapper.classList.add("exit-overview"),_t=setTimeout(function(){zt.wrapper.classList.remove("exit-overview")},10);for(var e=d(document.querySelectorAll(Mt)),t=0,n=e.length;n>t;t++){var r=e[t];r.style.display="",r.style.WebkitTransform="",r.style.MozTransform="",r.style.msTransform="",r.style.OTransform="",r.style.transform="",r.removeEventListener("click",kt,!0)}O(At,qt),G(),m("overviewhidden",{indexh:At,indexv:qt,currentSlide:Tt})}}function T(e){"boolean"==typeof e?e?q():x():M()?x():q()}function M(){return zt.wrapper.classList.contains("overview")}function P(e){return e=e?e:Tt,e&&!!e.parentNode.nodeName.match(/section/i)}function N(){var e=document.body,t=e.requestFullScreen||e.webkitRequestFullscreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullScreen;t&&t.apply(e)}function C(){var e=zt.wrapper.classList.contains("paused");J(),zt.wrapper.classList.add("paused"),e===!1&&m("paused")}function D(){var e=zt.wrapper.classList.contains("paused");zt.wrapper.classList.remove("paused"),G(),e&&m("resumed")}function R(){I()?D():C()}function I(){return zt.wrapper.classList.contains("paused")}function O(e,t,n,r){xt=Tt;var o=document.querySelectorAll(Pt);void 0===t&&(t=A(o[e])),xt&&xt.parentNode&&xt.parentNode.classList.contains("stack")&&S(xt.parentNode,qt);var a=Ot.concat();Ot.length=0;var i=At,s=qt;At=z(Pt,void 0===e?At:e),qt=z(Nt,void 0===t?qt:t),H(),k();e:for(var c=0,l=Ot.length;l>c;c++){for(var u=0;a.length>u;u++)if(a[u]===Ot[c]){a.splice(u,1);continue e}document.documentElement.classList.add(Ot[c]),m(Ot[c])}for(;a.length;)document.documentElement.classList.remove(a.pop());M()&&q();var f=o[At],v=f.querySelectorAll("section");if(Tt=v[qt]||f,n!==void 0){var p=E(Tt.querySelectorAll(".fragment"));d(p).forEach(function(e,t){n>t?e.classList.add("visible"):e.classList.remove("visible")})}var g=At!==i||qt!==s;g?m("slidechanged",{indexh:At,indexv:qt,previousSlide:xt,currentSlide:Tt,origin:r}):xt=null,xt&&(xt.classList.remove("present"),document.querySelector(Ct).classList.contains("present")&&setTimeout(function(){var e,t=d(document.querySelectorAll(Pt+".stack"));for(e in t)t[e]&&S(t[e],0)},0)),g&&(K(xt),_(Tt)),W(),X(),U(),V()}function Y(){c(),s(),k(),It=Rt.autoSlide,G(),n(),W(),X(),U()}function z(e,t){var n=d(document.querySelectorAll(e)),r=n.length;if(r){Rt.loop&&(t%=r,0>t&&(t=r+t)),t=Math.max(Math.min(t,r-1),0);for(var o=0;r>o;o++){var a=n[o],i=Rt.rtl&&!P(a);if(a.classList.remove("past"),a.classList.remove("present"),a.classList.remove("future"),a.setAttribute("hidden",""),t>o)a.classList.add(i?"future":"past");else if(o>t){a.classList.add(i?"past":"future");for(var s=d(a.querySelectorAll(".fragment.visible"));s.length;)s.pop().classList.remove("visible")}a.querySelector("section")&&a.classList.add("stack")}n[t].classList.add("present"),n[t].removeAttribute("hidden");var c=n[t].getAttribute("data-state");c&&(Ot=Ot.concat(c.split(" ")));var l=n[t].getAttribute("data-autoslide");It=l?parseInt(l,10):Rt.autoSlide,G()}else t=0;return t}function H(){var e,t=d(document.querySelectorAll(Pt)),n=t.length;if(n){var r=3;Dt&&(r=1),M()&&(r=6);for(var o=0;n>o;o++){var a=t[o],i=d(a.querySelectorAll("section")),s=i.length;if(s){a.style.display="block";for(var c=0;s>c;c++){var l=i[c],u=o-At,f=c-qt;e=Math.sqrt(u*u+f*f),l.style.display=e>r?"none":"block"}}else e=Math.abs((At-o)%(n-r))||0,a.style.display=e>r?"none":"block"}}}function X(){if(Rt.progress&&zt.progress){var e=d(document.querySelectorAll(Pt)),t=document.querySelectorAll(Mt+":not(.stack)").length,n=0;e:for(var r=0;e.length>r;r++){for(var o=e[r],a=d(o.querySelectorAll("section")),i=0;a.length>i;i++){if(a[i].classList.contains("present"))break e;n++}if(o.classList.contains("present"))break;o.classList.contains("stack")===!1&&n++}zt.progressbar.style.width=n/(t-1)*window.innerWidth+"px"}}function W(){if(Rt.controls&&zt.controls){var e=j(),t=F();zt.controlsLeft.concat(zt.controlsRight).concat(zt.controlsUp).concat(zt.controlsDown).concat(zt.controlsPrev).concat(zt.controlsNext).forEach(function(e){e.classList.remove("enabled"),e.classList.remove("fragmented")}),e.left&&zt.controlsLeft.forEach(function(e){e.classList.add("enabled")}),e.right&&zt.controlsRight.forEach(function(e){e.classList.add("enabled")}),e.up&&zt.controlsUp.forEach(function(e){e.classList.add("enabled")}),e.down&&zt.controlsDown.forEach(function(e){e.classList.add("enabled")}),(e.left||e.up)&&zt.controlsPrev.forEach(function(e){e.classList.add("enabled")}),(e.right||e.down)&&zt.controlsNext.forEach(function(e){e.classList.add("enabled")}),Tt&&(t.prev&&zt.controlsPrev.forEach(function(e){e.classList.add("fragmented","enabled")}),t.next&&zt.controlsNext.forEach(function(e){e.classList.add("fragmented","enabled")}),P(Tt)?(t.prev&&zt.controlsUp.forEach(function(e){e.classList.add("fragmented","enabled")}),t.next&&zt.controlsDown.forEach(function(e){e.classList.add("fragmented","enabled")})):(t.prev&&zt.controlsLeft.forEach(function(e){e.classList.add("fragmented","enabled")}),t.next&&zt.controlsRight.forEach(function(e){e.classList.add("fragmented","enabled")})))}}function U(){d(zt.background.childNodes).forEach(function(e,t){var n=Rt.rtl?"future":"past",r=Rt.rtl?"past":"future";e.className="slide-background "+(At>t?n:t>At?r:"present"),d(e.childNodes).forEach(function(e,t){e.className="slide-background "+(qt>t?"past":t>qt?"future":"present")})}),setTimeout(function(){zt.background.classList.remove("no-transition")},1)}function j(){var e=document.querySelectorAll(Pt),t=document.querySelectorAll(Nt),n={left:At>0||Rt.loop,right:e.length-1>At||Rt.loop,up:qt>0,down:t.length-1>qt};if(Rt.rtl){var r=n.left;n.left=n.right,n.right=r}return n}function F(){if(Tt&&Rt.fragments){var e=Tt.querySelectorAll(".fragment"),t=Tt.querySelectorAll(".fragment:not(.visible)");return{prev:e.length-t.length>0,next:!!t.length}}return{prev:!1,next:!1}}function _(e){e&&(d(e.querySelectorAll("video, audio")).forEach(function(e){e.hasAttribute("data-autoplay")&&e.play()}),d(e.querySelectorAll('iframe[src*="youtube.com/embed/"]')).forEach(function(e){e.hasAttribute("data-autoplay")&&e.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}',"*")}))}function K(e){e&&(d(e.querySelectorAll("video, audio")).forEach(function(e){e.hasAttribute("data-ignore")||e.pause()}),d(e.querySelectorAll('iframe[src*="youtube.com/embed/"]')).forEach(function(e){e.hasAttribute("data-ignore")||"function"!=typeof e.contentWindow.postMessage||e.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*")}))}function $(){var e=window.location.hash,t=e.slice(2).split("/"),n=e.replace(/#|\//gi,"");if(isNaN(parseInt(t[0],10))&&n.length){var r=document.querySelector("#"+n);if(r){var o=Reveal.getIndices(r);O(o.h,o.v)}else O(At,qt)}else{var a=parseInt(t[0],10)||0,i=parseInt(t[1],10)||0;(a!==At||i!==qt)&&O(a,i)}}function V(e){if(Rt.history)if(clearTimeout(jt),"number"==typeof e)jt=setTimeout(V,e);else{var t="/";Tt&&"string"==typeof Tt.getAttribute("id")?t="/"+Tt.getAttribute("id"):((At>0||qt>0)&&(t+=At),qt>0&&(t+="/"+qt)),window.location.hash=t}}function Z(e){var t,n=At,r=qt;if(e){var o=P(e),a=o?e.parentNode:e,i=d(document.querySelectorAll(Pt));n=Math.max(i.indexOf(a),0),o&&(r=Math.max(d(e.parentNode.querySelectorAll("section")).indexOf(e),0))}if(!e&&Tt){var s=Tt.querySelectorAll(".fragment").length>0;if(s){var c=Tt.querySelectorAll(".fragment.visible");t=c.length}}return{h:n,v:r,f:t}}function Q(){if(Tt&&Rt.fragments){var e=E(Tt.querySelectorAll(".fragment:not(.visible)"));if(e.length){var t=e[0].getAttribute("data-fragment-index");return e=Tt.querySelectorAll('.fragment[data-fragment-index="'+t+'"]'),d(e).forEach(function(e){e.classList.add("visible")}),m("fragmentshown",{fragment:e[0],fragments:e}),W(),!0}}return!1}function B(){if(Tt&&Rt.fragments){var e=E(Tt.querySelectorAll(".fragment.visible"));if(e.length){var t=e[e.length-1].getAttribute("data-fragment-index");return e=Tt.querySelectorAll('.fragment[data-fragment-index="'+t+'"]'),d(e).forEach(function(e){e.classList.remove("visible")}),m("fragmenthidden",{fragment:e[0],fragments:e}),W(),!0}}return!1}function G(){clearTimeout(Ut),!It||I()||M()||(Ut=setTimeout(at,It))}function J(){clearTimeout(Ut)}function et(){Rt.rtl?(M()||Q()===!1)&&j().left&&O(At+1):(M()||B()===!1)&&j().left&&O(At-1)}function tt(){Rt.rtl?(M()||B()===!1)&&j().right&&O(At-1):(M()||Q()===!1)&&j().right&&O(At+1)}function nt(){(M()||B()===!1)&&j().up&&O(At,qt-1)}function rt(){(M()||Q()===!1)&&j().down&&O(At,qt+1)}function ot(){if(B()===!1)if(j().up)nt();else{var e=document.querySelector(Pt+".past:nth-child("+At+")");if(e){var t=e.querySelectorAll("section").length-1||void 0,n=At-1;O(n,t)}}}function at(){Q()===!1&&(j().down?rt():tt()),G()}function it(e){document.activeElement;var t=!(!document.activeElement||!document.activeElement.type&&!document.activeElement.href&&"inherit"===document.activeElement.contentEditable);if(!(t||e.shiftKey&&32!==e.keyCode||e.altKey||e.ctrlKey||e.metaKey)){if(I()&&-1===[66,190,191].indexOf(e.keyCode))return!1;var n=!1;if("object"==typeof Rt.keyboard)for(var r in Rt.keyboard)if(parseInt(r,10)===e.keyCode){var o=Rt.keyboard[r];"function"==typeof o?o.apply(null,[e]):"string"==typeof o&&"function"==typeof Reveal[o]&&Reveal[o].call(),n=!0}if(n===!1)switch(n=!0,e.keyCode){case 80:case 33:ot();break;case 78:case 34:at();break;case 72:case 37:et();break;case 76:case 39:tt();break;case 75:case 38:nt();break;case 74:case 40:rt();break;case 36:O(0);break;case 35:O(Number.MAX_VALUE);break;case 32:M()?x():e.shiftKey?ot():at();break;case 13:M()?x():n=!1;break;case 66:case 190:case 191:R();break;case 70:N();break;default:n=!1}n?e.preventDefault():27!==e.keyCode&&79!==e.keyCode||!Ht||(T(),e.preventDefault()),G()}}function st(e){$t.startX=e.touches[0].clientX,$t.startY=e.touches[0].clientY,$t.startCount=e.touches.length,2===e.touches.length&&Rt.overview&&($t.startSpan=u({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:$t.startX,y:$t.startY}))}function ct(e){if($t.handled)navigator.userAgent.match(/android/gi)&&e.preventDefault();else{var t=e.touches[0].clientX,n=e.touches[0].clientY;if(2===e.touches.length&&2===$t.startCount&&Rt.overview){var r=u({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:$t.startX,y:$t.startY});Math.abs($t.startSpan-r)>$t.threshold&&($t.handled=!0,$t.startSpan>r?q():x()),e.preventDefault()}else if(1===e.touches.length&&2!==$t.startCount){var o=t-$t.startX,a=n-$t.startY;o>$t.threshold&&Math.abs(o)>Math.abs(a)?($t.handled=!0,et()):-$t.threshold>o&&Math.abs(o)>Math.abs(a)?($t.handled=!0,tt()):a>$t.threshold?($t.handled=!0,nt()):-$t.threshold>a&&($t.handled=!0,rt()),e.preventDefault()}}}function lt(){$t.handled=!1}function dt(e){e.pointerType===e.MSPOINTER_TYPE_TOUCH&&(e.touches=[{clientX:e.clientX,clientY:e.clientY}],st(e))}function ut(e){e.pointerType===e.MSPOINTER_TYPE_TOUCH&&(e.touches=[{clientX:e.clientX,clientY:e.clientY}],ct(e))}function ft(e){e.pointerType===e.MSPOINTER_TYPE_TOUCH&&(e.touches=[{clientX:e.clientX,clientY:e.clientY}],lt(e))}function vt(e){if(Date.now()-Wt>600){Wt=Date.now();var t=e.detail||-e.wheelDelta;t>0?at():ot()}}function pt(e){e.preventDefault();var t=d(document.querySelectorAll(Pt)).length,n=Math.floor(e.clientX/zt.wrapper.offsetWidth*t);O(n)}function mt(e){e.preventDefault(),et()}function gt(e){e.preventDefault(),tt()}function ht(e){e.preventDefault(),nt()}function yt(e){e.preventDefault(),rt()}function bt(e){e.preventDefault(),ot()}function wt(e){e.preventDefault(),at()}function Lt(){$()}function Et(){k()}function kt(e){if(Kt&&M()){e.preventDefault();for(var t=e.target;t&&!t.nodeName.match(/section/gi);)t=t.parentNode;if(t&&!t.classList.contains("disabled")&&(x(),t.nodeName.match(/section/gi))){var n=parseInt(t.getAttribute("data-index-h"),10),r=parseInt(t.getAttribute("data-index-v"),10);O(n,r)}}}function St(e){var t=e.target.getAttribute("href");t&&(w(t),e.preventDefault())}var At,qt,xt,Tt,Mt=".reveal .slides section",Pt=".reveal .slides>section",Nt=".reveal .slides>section.present>section",Ct=".reveal .slides>section:first-child",Dt=navigator.userAgent.match(/(iphone|ipod|android)/gi),Rt={width:960,height:700,margin:.1,minScale:.2,maxScale:1,controls:!0,progress:!0,history:!1,keyboard:!0,overview:!0,center:!0,touch:!0,loop:!1,rtl:!1,fragments:!0,autoSlide:0,mouseWheel:!1,rollingLinks:!1,previewLinks:!1,theme:null,transition:"default",transitionSpeed:"default",backgroundTransition:"default",dependencies:[]},It=0,Ot=[],Yt=1,zt={},Ht="WebkitPerspective"in document.body.style||"MozPerspective"in document.body.style||"msPerspective"in document.body.style||"OPerspective"in document.body.style||"perspective"in document.body.style,Xt="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,Wt=0,Ut=0,jt=0,Ft=0,_t=0,Kt=!1,$t={startX:0,startY:0,startSpan:0,startCount:0,handled:!1,threshold:80};return{initialize:e,configure:i,sync:Y,slide:O,left:et,right:tt,up:nt,down:rt,prev:ot,next:at,prevFragment:B,nextFragment:Q,navigateTo:O,navigateLeft:et,navigateRight:tt,navigateUp:nt,navigateDown:rt,navigatePrev:ot,navigateNext:at,layout:k,availableRoutes:j,availableFragments:F,toggleOverview:T,togglePause:R,isOverview:M,isPaused:I,addEventListeners:s,removeEventListeners:c,getIndices:Z,getSlide:function(e,t){var n=document.querySelectorAll(Pt)[e],r=n&&n.querySelectorAll("section");return t!==void 0?r?r[t]:void 0:n},getPreviousSlide:function(){return xt},getCurrentSlide:function(){return Tt},getScale:function(){return Yt},getConfig:function(){return Rt},getQueryHash:function(){var e={};return location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(t){e[t.split("=").shift()]=t.split("=").pop()}),e},isFirstSlide:function(){return null==document.querySelector(Mt+".past")?!0:!1},isLastSlide:function(){return Tt&&Tt.classList.contains(".stack")?null==Tt.querySelector(Mt+".future")?!0:!1:null==document.querySelector(Mt+".future")?!0:!1},addEventListener:function(e,t,n){"addEventListener"in window&&(zt.wrapper||document.querySelector(".reveal")).addEventListener(e,t,n)},removeEventListener:function(e,t,n){"addEventListener"in window&&(zt.wrapper||document.querySelector(".reveal")).removeEventListener(e,t,n)}}}(); \ No newline at end of file -- 2.26.2