count vertical slides towards the progress bar (closes #150)
authorHakim El Hattab <hakim.elhattab@gmail.com>
Sat, 10 Nov 2012 18:59:51 +0000 (13:59 -0500)
committerHakim El Hattab <hakim.elhattab@gmail.com>
Sat, 10 Nov 2012 18:59:51 +0000 (13:59 -0500)
js/reveal.js
js/reveal.min.js

index b54536ea5a9adabb62a25f83e3137f2ed6af4718..97ee048a7d48142342e039860eb1cb5e6062de59 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * reveal.js 2.2 r39
+ * reveal.js 2.2 r40
  * http://lab.hakim.se/reveal-js
  * MIT licensed
  *
@@ -9,7 +9,8 @@ var Reveal = (function(){
 
        'use strict';
 
-       var HORIZONTAL_SLIDES_SELECTOR = '.reveal .slides>section',
+       var SLIDES_SELECTOR = '.reveal .slides section',
+               HORIZONTAL_SLIDES_SELECTOR = '.reveal .slides>section',
                VERTICAL_SLIDES_SELECTOR = '.reveal .slides>section.present>section',
 
                // Configurations defaults, can be overridden at initialization time
@@ -469,7 +470,7 @@ var Reveal = (function(){
         */
        function linkify() {
                if( supports3DTransforms && !( 'msPerspective' in document.body.style ) ) {
-                       var nodes = document.querySelectorAll( '.reveal .slides section a:not(.image)' );
+                       var nodes = document.querySelectorAll( SLIDES_SELECTOR + ' a:not(.image)' );
 
                        for( var i = 0, len = nodes.length; i < len; i++ ) {
                                var node = nodes[i];
@@ -491,7 +492,7 @@ var Reveal = (function(){
                if( config.center ) {
 
                        // Select all slides, vertical and horizontal
-                       var slides = Array.prototype.slice.call( document.querySelectorAll( '.reveal .slides section' ) );
+                       var slides = toArray( document.querySelectorAll( SLIDES_SELECTOR ) );
 
                        // Determine the minimum top offset for slides
                        var minTop = -dom.wrapper.offsetHeight / 2;
@@ -583,7 +584,7 @@ var Reveal = (function(){
                        dom.wrapper.classList.remove( 'overview' );
 
                        // Select all slides
-                       var slides = Array.prototype.slice.call( document.querySelectorAll( '.reveal .slides section' ) );
+                       var slides = toArray( document.querySelectorAll( SLIDES_SELECTOR ) );
 
                        for( var i = 0, len = slides.length; i < len; i++ ) {
                                var element = slides[i];
@@ -732,18 +733,11 @@ var Reveal = (function(){
                        document.documentElement.classList.remove( stateBefore.pop() );
                }
 
-               // Update progress if enabled
-               if( config.progress && dom.progress ) {
-                       dom.progressbar.style.width = ( indexh / ( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ).length - 1 ) ) * window.innerWidth + 'px';
-               }
-
                // If the overview is active, re-activate it to update positions
                if( isOverviewActive() ) {
                        activateOverview();
                }
 
-               updateControls();
-
                // Update the URL hash after a delay since updating it mid-transition
                // is likely to cause visual lag
                clearTimeout( writeURLTimeout );
@@ -780,6 +774,9 @@ var Reveal = (function(){
                if( previousSlide ) {
                        previousSlide.classList.remove( 'present' );
                }
+
+               updateControls();
+               updateProgress();
        }
 
        /**
@@ -798,7 +795,7 @@ var Reveal = (function(){
        function updateSlides( selector, index ) {
                // Select all slides and convert the NodeList result to
                // an array
-               var slides = Array.prototype.slice.call( document.querySelectorAll( selector ) ),
+               var slides = toArray( document.querySelectorAll( selector ) ),
                        slidesLength = slides.length;
 
                if( slidesLength ) {
@@ -878,7 +875,48 @@ var Reveal = (function(){
        }
 
        /**
-        * Updates the state and link pointers of the controls.
+        * Updates the progress bar to reflect the current slide.
+        */
+       function updateProgress() {
+               // Update progress if enabled
+               if( config.progress && dom.progress ) {
+
+                       var horizontalSlides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
+
+                       // The number of past and total slides
+                       var totalCount = document.querySelectorAll( SLIDES_SELECTOR + ':not(.stack)' ).length;
+                       var pastCount = 0;
+
+                       // Step through all slides and count the past ones
+                       mainLoop: for( var i = 0; i < horizontalSlides.length; i++ ) {
+
+                               var horizontalSlide = horizontalSlides[i];
+                               var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) );
+
+                               for( var j = 0; j < verticalSlides.length; j++ ) {
+
+                                       // Stop as soon as we arrive at the present
+                                       if( verticalSlides[j].classList.contains( 'present' ) ) break mainLoop;
+
+                                       pastCount++
+
+                               }
+
+                               // Stop as soon as we arrive at the present
+                               if( horizontalSlide.classList.contains( 'present' ) ) break;
+
+                               // Don't count the wrapping section for vertical slides
+                               if( horizontalSlide.classList.contains( 'stack' ) === false ) pastCount++;
+
+                       }
+
+                       dom.progressbar.style.width = ( pastCount / ( totalCount - 1 ) ) * window.innerWidth + 'px';
+
+               }
+       }
+
+       /**
+        * Updates the state of all control/navigation arrows.
         */
        function updateControls() {
                if ( config.controls && dom.controls ) {
@@ -1002,14 +1040,14 @@ var Reveal = (function(){
                        var slideh = isVertical ? slide.parentNode : slide;
 
                        // Select all horizontal slides
-                       var horizontalSlides = Array.prototype.slice.call( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
+                       var horizontalSlides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
 
                        // Now that we know which the horizontal slide is, get its index
                        h = Math.max( horizontalSlides.indexOf( slideh ), 0 );
 
                        // If this is a vertical slide, grab the vertical index
                        if( isVertical ) {
-                               v = Math.max( Array.prototype.slice.call( slide.parentNode.children ).indexOf( slide ), 0 );
+                               v = Math.max( toArray( slide.parentNode.children ).indexOf( slide ), 0 );
                        }
                }
 
@@ -1356,7 +1394,7 @@ var Reveal = (function(){
         * ( clickX / presentationWidth ) * numberOfSlides
         */
        function onProgressClick( event ) {
-               var slidesTotal = Array.prototype.slice.call( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).length;
+               var slidesTotal = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).length;
                var slideIndex = Math.floor( ( event.clientX / dom.wrapper.offsetWidth ) * slidesTotal );
 
                slide( slideIndex );
index 948c41196152b3fc5fe42d7a8795bc07b17d1012..16599e3c8d44689ca436f7c0be5cf57e27812633 100644 (file)
@@ -1,93 +1,95 @@
 /*!
- * reveal.js 2.2 r39
+ * reveal.js 2.2 r40
  * http://lab.hakim.se/reveal-js
  * MIT licensed
  *
  * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
  */
-var Reveal=(function(){var m=".reveal .slides>section",b=".reveal .slides>section.present>section",U={controls:true,progress:true,history:false,keyboard:true,overview:true,center:false,loop:false,autoSlide:0,mouseWheel:true,rollingLinks:true,theme:null,transition:"default",dependencies:[]},ab=U.autoSlide,n=0,e=0,z,I,ao=[],f={},W="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,o="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,A=0,l=0,E=0,ag={startX:0,startY:0,startSpan:0,startCount:0,handled:false,threshold:80};
-function j(ap){if((!o&&!W)){document.body.setAttribute("class","no-transforms");return;}u(U,ap);d();Y();}function R(){f.theme=document.querySelector("#theme");
-f.wrapper=document.querySelector(".reveal");if(!f.wrapper.querySelector(".progress")&&U.progress){var at=document.createElement("div");at.classList.add("progress");
-at.innerHTML="<span></span>";f.wrapper.appendChild(at);}if(!f.wrapper.querySelector(".controls")&&U.controls){var ar=document.createElement("aside");ar.classList.add("controls");
-ar.innerHTML='<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>';f.wrapper.appendChild(ar);
-}if(!f.wrapper.querySelector(".state-background")){var aq=document.createElement("div");aq.classList.add("state-background");f.wrapper.appendChild(aq);
-}if(!f.wrapper.querySelector(".pause-overlay")){var ap=document.createElement("div");ap.classList.add("pause-overlay");f.wrapper.appendChild(ap);}f.progress=document.querySelector(".reveal .progress");
-f.progressbar=document.querySelector(".reveal .progress span");if(U.controls){f.controls=document.querySelector(".reveal .controls");f.controlsLeft=H(document.querySelectorAll(".navigate-left"));
-f.controlsRight=H(document.querySelectorAll(".navigate-right"));f.controlsUp=H(document.querySelectorAll(".navigate-up"));f.controlsDown=H(document.querySelectorAll(".navigate-down"));
-f.controlsPrev=H(document.querySelectorAll(".navigate-prev"));f.controlsNext=H(document.querySelectorAll(".navigate-next"));}}function d(){if(navigator.userAgent.match(/(iphone|ipod|android)/i)){document.documentElement.style.overflow="scroll";
-document.body.style.height="120%";window.addEventListener("load",ah,false);window.addEventListener("orientationchange",ah,false);}}function Y(){var aq=[],av=[];
-for(var ar=0,ap=U.dependencies.length;ar<ap;ar++){var at=U.dependencies[ar];if(!at.condition||at.condition()){if(at.async){av.push(at.src);}else{aq.push(at.src);
-}if(typeof at.callback==="function"){head.ready(at.src.match(/([\w\d_\-]*)\.?[^\\\/]*$/i)[0],at.callback);}}}function au(){if(av.length){head.js.apply(null,av);
-}J();}if(aq.length){head.ready(au);head.js.apply(null,aq);}else{au();}}function J(){R();F();M();S();L();Q();setTimeout(function(){s("ready",{indexh:n,indexv:e,currentSlide:I});
-},1);}function M(){if(W===false){U.transition="linear";}if(U.controls&&f.controls){f.controls.style.display="block";}if(U.progress&&f.progress){f.progress.style.display="block";
-}if(U.transition!=="default"){f.wrapper.classList.add(U.transition);}if(U.center){f.wrapper.classList.add("center");}if(U.mouseWheel){document.addEventListener("DOMMouseScroll",p,false);
-document.addEventListener("mousewheel",p,false);}if(U.rollingLinks){P();}if(U.theme&&f.theme){var ar=f.theme.getAttribute("href");var ap=/[^\/]*?(?=\.css)/;
-var aq=ar.match(ap)[0];if(U.theme!==aq){ar=ar.replace(ap,U.theme);f.theme.setAttribute("href",ar);}}}function F(){document.addEventListener("touchstart",B,false);
-document.addEventListener("touchmove",aj,false);document.addEventListener("touchend",Z,false);window.addEventListener("hashchange",x,false);window.addEventListener("resize",g,false);
-if(U.keyboard){document.addEventListener("keydown",al,false);}if(U.progress&&f.progress){f.progress.addEventListener("click",r(am),false);}if(U.controls&&f.controls){f.controlsLeft.forEach(function(ap){ap.addEventListener("click",r(C),false);
-});f.controlsRight.forEach(function(ap){ap.addEventListener("click",r(k),false);});f.controlsUp.forEach(function(ap){ap.addEventListener("click",r(v),false);
-});f.controlsDown.forEach(function(ap){ap.addEventListener("click",r(G),false);});f.controlsPrev.forEach(function(ap){ap.addEventListener("click",r(ac),false);
-});f.controlsNext.forEach(function(ap){ap.addEventListener("click",r(y),false);});}}function X(){document.removeEventListener("keydown",al,false);document.removeEventListener("touchstart",B,false);
-document.removeEventListener("touchmove",aj,false);document.removeEventListener("touchend",Z,false);window.removeEventListener("hashchange",x,false);window.removeEventListener("resize",g,false);
-if(U.progress&&f.progress){f.progress.removeEventListener("click",r(am),false);}if(U.controls&&f.controls){f.controlsLeft.forEach(function(ap){ap.removeEventListener("click",r(C),false);
-});f.controlsRight.forEach(function(ap){ap.removeEventListener("click",r(k),false);});f.controlsUp.forEach(function(ap){ap.removeEventListener("click",r(v),false);
-});f.controlsDown.forEach(function(ap){ap.removeEventListener("click",r(G),false);});f.controlsPrev.forEach(function(ap){ap.removeEventListener("click",r(ac),false);
-});f.controlsNext.forEach(function(ap){ap.removeEventListener("click",r(y),false);});}}function u(aq,ap){for(var ar in ap){aq[ar]=ap[ar];}}function H(ap){return Array.prototype.slice.call(ap);
-}function ae(ap,ar,aq){ap.forEach(function(at){at[ar].apply(at,aq);});}function V(ar,ap){var at=ar.x-ap.x,aq=ar.y-ap.y;return Math.sqrt(at*at+aq*aq);}function r(ap){return function(aq){aq.preventDefault();
-ap.call(null,aq);};}function ah(){setTimeout(function(){window.scrollTo(0,1);},0);}function s(aq,ap){var ar=document.createEvent("HTMLEvents",1,2);ar.initEvent(aq,true,true);
-u(ar,ap);f.wrapper.dispatchEvent(ar);}function P(){if(W&&!("msPerspective" in document.body.style)){var aq=document.querySelectorAll(".reveal .slides section a:not(.image)");
-for(var ar=0,ap=aq.length;ar<ap;ar++){var at=aq[ar];if(at.textContent&&!at.querySelector("img")&&(!at.className||!at.classList.contains(at,"roll"))){at.classList.add("roll");
-at.innerHTML='<span data-title="'+at.text+'">'+at.innerHTML+"</span>";}}}}function S(){if(U.center){var at=Array.prototype.slice.call(document.querySelectorAll(".reveal .slides section"));
-var au=-f.wrapper.offsetHeight/2;for(var ar=0,aq=at.length;ar<aq;ar++){var ap=at[ar];if(ap.classList.contains("stack")){ap.style.top=0;}else{ap.style.top=Math.max(-(ap.offsetHeight/2)-20,au)+"px";
-}}}}function K(){if(U.overview){f.wrapper.classList.add("overview");var ap=document.querySelectorAll(m);for(var av=0,at=ap.length;av<at;av++){var ar=ap[av],az="translateZ(-2500px) translate("+((av-n)*105)+"%, 0%)";
-ar.setAttribute("data-index-h",av);ar.style.display="block";ar.style.WebkitTransform=az;ar.style.MozTransform=az;ar.style.msTransform=az;ar.style.OTransform=az;
-ar.style.transform=az;if(!ar.classList.contains("stack")){ar.addEventListener("click",D,true);}var ay=ar.querySelectorAll("section");for(var au=0,aq=ay.length;
-au<aq;au++){var ax=ay[au],aw="translate(0%, "+((au-(av===n?e:0))*105)+"%)";ax.setAttribute("data-index-h",av);ax.setAttribute("data-index-v",au);ax.style.display="block";
-ax.style.WebkitTransform=aw;ax.style.MozTransform=aw;ax.style.msTransform=aw;ax.style.OTransform=aw;ax.style.transform=aw;ax.addEventListener("click",D,true);
-}}}}function ai(){if(U.overview){f.wrapper.classList.remove("overview");var at=Array.prototype.slice.call(document.querySelectorAll(".reveal .slides section"));
-for(var ar=0,ap=at.length;ar<ap;ar++){var aq=at[ar];aq.style.WebkitTransform="";aq.style.MozTransform="";aq.style.msTransform="";aq.style.OTransform="";
-aq.style.transform="";aq.removeEventListener("click",D);}a();}}function aa(ap){if(typeof ap==="boolean"){ap?K():ai();}else{N()?ai():K();}}function N(){return f.wrapper.classList.contains("overview");
-}function af(){var ap=document.body;var aq=ap.requestFullScreen||ap.webkitRequestFullScreen||ap.mozRequestFullScreen||ap.msRequestFullScreen;if(aq){aq.apply(ap);
-}}function c(){f.wrapper.classList.add("paused");}function q(){f.wrapper.classList.remove("paused");}function ad(){if(ak()){q();}else{c();}}function ak(){return f.wrapper.classList.contains("paused");
-}function a(aw,aA){z=I;var at=ao.concat();ao.length=0;var az=n,aq=e;n=an(m,aw===undefined?n:aw);e=an(b,aA===undefined?e:aA);S();stateLoop:for(var au=0,ax=ao.length;
-au<ax;au++){for(var ar=0;ar<at.length;ar++){if(at[ar]===ao[au]){at.splice(ar,1);continue stateLoop;}}document.documentElement.classList.add(ao[au]);s(ao[au]);
-}while(at.length){document.documentElement.classList.remove(at.pop());}if(U.progress&&f.progress){f.progressbar.style.width=(n/(document.querySelectorAll(m).length-1))*window.innerWidth+"px";
-}if(N()){K();}t();clearTimeout(E);E=setTimeout(i,1500);var ap=document.querySelectorAll(m);var ay=ap[n],av=ay.querySelectorAll("section");I=av[e]||ay;if(n!==az||e!==aq){s("slidechanged",{indexh:n,indexv:e,previousSlide:z,currentSlide:I});
-}else{z=null;}if(z){z.classList.remove("present");}}function an(at,ay){var aq=Array.prototype.slice.call(document.querySelectorAll(at)),ax=aq.length;if(ax){if(U.loop){ay%=ax;
-if(ay<0){ay=ax+ay;}}ay=Math.max(Math.min(ay,ax-1),0);for(var av=0;av<ax;av++){var aw=aq[av];if(N()===false){var ap=Math.abs((ay-av)%(ax-3))||0;aw.style.display=ap>3?"none":"block";
-}aq[av].classList.remove("past");aq[av].classList.remove("present");aq[av].classList.remove("future");if(av<ay){aq[av].classList.add("past");}else{if(av>ay){aq[av].classList.add("future");
-}}if(aw.querySelector("section")){aq[av].classList.add("stack");}}aq[ay].classList.add("present");var ar=aq[ay].getAttribute("data-state");if(ar){ao=ao.concat(ar.split(" "));
-}var au=aq[ay].getAttribute("data-autoslide");if(au){ab=parseInt(au);}else{ab=U.autoSlide;}}else{ay=0;}return ay;}function t(){if(U.controls&&f.controls){var ap=h();
-f.controlsLeft.concat(f.controlsRight).concat(f.controlsUp).concat(f.controlsDown).concat(f.controlsPrev).concat(f.controlsNext).forEach(function(aq){aq.classList.remove("enabled");
-});if(ap.left){f.controlsLeft.forEach(function(aq){aq.classList.add("enabled");});}if(ap.right){f.controlsRight.forEach(function(aq){aq.classList.add("enabled");
-});}if(ap.up){f.controlsUp.forEach(function(aq){aq.classList.add("enabled");});}if(ap.down){f.controlsDown.forEach(function(aq){aq.classList.add("enabled");
-});}if(ap.left||ap.up){f.controlsPrev.forEach(function(aq){aq.classList.add("enabled");});}if(ap.right||ap.down){f.controlsNext.forEach(function(aq){aq.classList.add("enabled");
-});}}}function h(){var ap=document.querySelectorAll(m),aq=document.querySelectorAll(b);return{left:n>0,right:n<ap.length-1,up:e>0,down:e<aq.length-1};}function L(){var av=window.location.hash;
-var au=av.slice(2).split("/"),aq=av.replace(/#|\//gi,"");if(isNaN(parseInt(au[0],10))&&aq.length){var ar=document.querySelector("#"+aq);if(ar){var aw=Reveal.getIndices(ar);
-a(aw.h,aw.v);}else{a(n,e);}}else{var at=parseInt(au[0],10)||0,ap=parseInt(au[1],10)||0;a(at,ap);}}function i(){if(U.history){var ap="/";if(I&&typeof I.getAttribute("id")==="string"){ap="/"+I.getAttribute("id");
-}else{if(n>0||e>0){ap+=n;}if(e>0){ap+="/"+e;}}window.location.hash=ap;}}function O(ap){var au=n,ar=e;if(ap){var av=!!ap.parentNode.nodeName.match(/section/gi);
-var at=av?ap.parentNode:ap;var aq=Array.prototype.slice.call(document.querySelectorAll(m));au=Math.max(aq.indexOf(at),0);if(av){ar=Math.max(Array.prototype.slice.call(ap.parentNode.children).indexOf(ap),0);
-}}return{h:au,v:ar};}function w(){if(document.querySelector(b+".present")){var aq=document.querySelectorAll(b+".present .fragment:not(.visible)");if(aq.length){aq[0].classList.add("visible");
-s("fragmentshown",{fragment:aq[0]});return true;}}else{var ap=document.querySelectorAll(m+".present .fragment:not(.visible)");if(ap.length){ap[0].classList.add("visible");
-s("fragmentshown",{fragment:ap[0]});return true;}}return false;}function T(){if(document.querySelector(b+".present")){var aq=document.querySelectorAll(b+".present .fragment.visible");
-if(aq.length){aq[aq.length-1].classList.remove("visible");s("fragmenthidden",{fragment:aq[aq.length-1]});return true;}}else{var ap=document.querySelectorAll(m+".present .fragment.visible");
-if(ap.length){ap[ap.length-1].classList.remove("visible");s("fragmenthidden",{fragment:ap[ap.length-1]});return true;}}return false;}function Q(){clearTimeout(l);
-if(ab){l=setTimeout(y,ab);}}function C(){if(h().left&&(N()||T()===false)){a(n-1,0);}}function k(){if(h().right&&(N()||w()===false)){a(n+1,0);}}function v(){if(h().up&&(N()||T()===false)){a(n,e-1);
-}}function G(){if(h().down&&(N()||w()===false)){a(n,e+1);}}function ac(){if(T()===false){if(h().up){v();}else{var ap=document.querySelector(".reveal .slides>section.past:nth-child("+n+")");
-if(ap){e=(ap.querySelectorAll("section").length+1)||0;n--;a();}}}}function y(){if(w()===false){h().down?G():k();}Q();}function al(ar){var aq=document.activeElement;
-var at=!!(document.activeElement&&(document.activeElement.type||document.activeElement.href||document.activeElement.contentEditable!=="inherit"));if(at||ar.shiftKey||ar.altKey||ar.ctrlKey||ar.metaKey){return;
-}var ap=true;switch(ar.keyCode){case 80:case 33:ac();break;case 78:case 34:y();break;case 72:case 37:C();break;case 76:case 39:k();break;case 75:case 38:v();
-break;case 74:case 40:G();break;case 36:a(0);break;case 35:a(Number.MAX_VALUE);break;case 32:N()?ai():y();break;case 13:N()?ai():ap=false;break;case 66:case 190:ad();
-break;case 70:af();break;default:ap=false;}if(ap){ar.preventDefault();}else{if(ar.keyCode===27&&W){aa();ar.preventDefault();}}Q();}function B(ap){ag.startX=ap.touches[0].clientX;
-ag.startY=ap.touches[0].clientY;ag.startCount=ap.touches.length;if(ap.touches.length===2&&U.overview){ag.startSpan=V({x:ap.touches[1].clientX,y:ap.touches[1].clientY},{x:ag.startX,y:ag.startY});
-}}function aj(av){if(!ag.handled){var at=av.touches[0].clientX;var ar=av.touches[0].clientY;if(av.touches.length===2&&ag.startCount===2&&U.overview){var au=V({x:av.touches[1].clientX,y:av.touches[1].clientY},{x:ag.startX,y:ag.startY});
-if(Math.abs(ag.startSpan-au)>ag.threshold){ag.handled=true;if(au<ag.startSpan){K();}else{ai();}}av.preventDefault();}else{if(av.touches.length===1&&ag.startCount!==2){var aq=at-ag.startX,ap=ar-ag.startY;
-if(aq>ag.threshold&&Math.abs(aq)>Math.abs(ap)){ag.handled=true;C();}else{if(aq<-ag.threshold&&Math.abs(aq)>Math.abs(ap)){ag.handled=true;k();}else{if(ap>ag.threshold){ag.handled=true;
-v();}else{if(ap<-ag.threshold){ag.handled=true;G();}}}}av.preventDefault();}}}else{if(navigator.userAgent.match(/android/gi)){av.preventDefault();}}}function Z(ap){ag.handled=false;
-}function p(ap){clearTimeout(A);A=setTimeout(function(){var aq=ap.detail||-ap.wheelDelta;if(aq>0){y();}else{ac();}},100);}function am(aq){var ap=Array.prototype.slice.call(document.querySelectorAll(m)).length;
-var ar=Math.floor((aq.clientX/f.wrapper.offsetWidth)*ap);a(ar);}function x(ap){L();}function g(ap){S();}function D(ap){if(N()){ap.preventDefault();ai();
-n=this.getAttribute("data-index-h");e=this.getAttribute("data-index-v");a();}}return{initialize:j,slide:a,left:C,right:k,up:v,down:G,prev:ac,next:y,prevFragment:T,nextFragment:w,navigateTo:a,navigateLeft:C,navigateRight:k,navigateUp:v,navigateDown:G,navigatePrev:ac,navigateNext:y,toggleOverview:aa,addEventListeners:F,removeEventListeners:X,getIndices:O,getPreviousSlide:function(){return z;
-},getCurrentSlide:function(){return I;},getQueryHash:function(){var ap={};location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(aq){ap[aq.split("=").shift()]=aq.split("=").pop();
-});return ap;},addEventListener:function(aq,ar,ap){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).addEventListener(aq,ar,ap);
-}},removeEventListener:function(aq,ar,ap){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).removeEventListener(aq,ar,ap);
+var Reveal=(function(){var ap=".reveal .slides section",m=".reveal .slides>section",b=".reveal .slides>section.present>section",V={controls:true,progress:true,history:false,keyboard:true,overview:true,center:false,loop:false,autoSlide:0,mouseWheel:true,rollingLinks:true,theme:null,transition:"default",dependencies:[]},ac=V.autoSlide,n=0,e=0,A,J,aq=[],f={},X="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,p="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,B=0,l=0,F=0,ah={startX:0,startY:0,startSpan:0,startCount:0,handled:false,threshold:80};
+function j(ar){if((!p&&!X)){document.body.setAttribute("class","no-transforms");return;}v(V,ar);d();Z();}function S(){f.theme=document.querySelector("#theme");
+f.wrapper=document.querySelector(".reveal");if(!f.wrapper.querySelector(".progress")&&V.progress){var av=document.createElement("div");av.classList.add("progress");
+av.innerHTML="<span></span>";f.wrapper.appendChild(av);}if(!f.wrapper.querySelector(".controls")&&V.controls){var au=document.createElement("aside");au.classList.add("controls");
+au.innerHTML='<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>';f.wrapper.appendChild(au);
+}if(!f.wrapper.querySelector(".state-background")){var at=document.createElement("div");at.classList.add("state-background");f.wrapper.appendChild(at);
+}if(!f.wrapper.querySelector(".pause-overlay")){var ar=document.createElement("div");ar.classList.add("pause-overlay");f.wrapper.appendChild(ar);}f.progress=document.querySelector(".reveal .progress");
+f.progressbar=document.querySelector(".reveal .progress span");if(V.controls){f.controls=document.querySelector(".reveal .controls");f.controlsLeft=I(document.querySelectorAll(".navigate-left"));
+f.controlsRight=I(document.querySelectorAll(".navigate-right"));f.controlsUp=I(document.querySelectorAll(".navigate-up"));f.controlsDown=I(document.querySelectorAll(".navigate-down"));
+f.controlsPrev=I(document.querySelectorAll(".navigate-prev"));f.controlsNext=I(document.querySelectorAll(".navigate-next"));}}function d(){if(navigator.userAgent.match(/(iphone|ipod|android)/i)){document.documentElement.style.overflow="scroll";
+document.body.style.height="120%";window.addEventListener("load",ai,false);window.addEventListener("orientationchange",ai,false);}}function Z(){var at=[],ax=[];
+for(var au=0,ar=V.dependencies.length;au<ar;au++){var av=V.dependencies[au];if(!av.condition||av.condition()){if(av.async){ax.push(av.src);}else{at.push(av.src);
+}if(typeof av.callback==="function"){head.ready(av.src.match(/([\w\d_\-]*)\.?[^\\\/]*$/i)[0],av.callback);}}}function aw(){if(ax.length){head.js.apply(null,ax);
+}K();}if(at.length){head.ready(aw);head.js.apply(null,at);}else{aw();}}function K(){S();G();N();T();M();R();setTimeout(function(){t("ready",{indexh:n,indexv:e,currentSlide:J});
+},1);}function N(){if(X===false){V.transition="linear";}if(V.controls&&f.controls){f.controls.style.display="block";}if(V.progress&&f.progress){f.progress.style.display="block";
+}if(V.transition!=="default"){f.wrapper.classList.add(V.transition);}if(V.center){f.wrapper.classList.add("center");}if(V.mouseWheel){document.addEventListener("DOMMouseScroll",q,false);
+document.addEventListener("mousewheel",q,false);}if(V.rollingLinks){Q();}if(V.theme&&f.theme){var au=f.theme.getAttribute("href");var ar=/[^\/]*?(?=\.css)/;
+var at=au.match(ar)[0];if(V.theme!==at){au=au.replace(ar,V.theme);f.theme.setAttribute("href",au);}}}function G(){document.addEventListener("touchstart",C,false);
+document.addEventListener("touchmove",ak,false);document.addEventListener("touchend",aa,false);window.addEventListener("hashchange",y,false);window.addEventListener("resize",g,false);
+if(V.keyboard){document.addEventListener("keydown",am,false);}if(V.progress&&f.progress){f.progress.addEventListener("click",s(an),false);}if(V.controls&&f.controls){f.controlsLeft.forEach(function(ar){ar.addEventListener("click",s(D),false);
+});f.controlsRight.forEach(function(ar){ar.addEventListener("click",s(k),false);});f.controlsUp.forEach(function(ar){ar.addEventListener("click",s(w),false);
+});f.controlsDown.forEach(function(ar){ar.addEventListener("click",s(H),false);});f.controlsPrev.forEach(function(ar){ar.addEventListener("click",s(ad),false);
+});f.controlsNext.forEach(function(ar){ar.addEventListener("click",s(z),false);});}}function Y(){document.removeEventListener("keydown",am,false);document.removeEventListener("touchstart",C,false);
+document.removeEventListener("touchmove",ak,false);document.removeEventListener("touchend",aa,false);window.removeEventListener("hashchange",y,false);window.removeEventListener("resize",g,false);
+if(V.progress&&f.progress){f.progress.removeEventListener("click",s(an),false);}if(V.controls&&f.controls){f.controlsLeft.forEach(function(ar){ar.removeEventListener("click",s(D),false);
+});f.controlsRight.forEach(function(ar){ar.removeEventListener("click",s(k),false);});f.controlsUp.forEach(function(ar){ar.removeEventListener("click",s(w),false);
+});f.controlsDown.forEach(function(ar){ar.removeEventListener("click",s(H),false);});f.controlsPrev.forEach(function(ar){ar.removeEventListener("click",s(ad),false);
+});f.controlsNext.forEach(function(ar){ar.removeEventListener("click",s(z),false);});}}function v(at,ar){for(var au in ar){at[au]=ar[au];}}function I(ar){return Array.prototype.slice.call(ar);
+}function af(ar,au,at){ar.forEach(function(av){av[au].apply(av,at);});}function W(au,ar){var av=au.x-ar.x,at=au.y-ar.y;return Math.sqrt(av*av+at*at);}function s(ar){return function(at){at.preventDefault();
+ar.call(null,at);};}function ai(){setTimeout(function(){window.scrollTo(0,1);},0);}function t(at,ar){var au=document.createEvent("HTMLEvents",1,2);au.initEvent(at,true,true);
+v(au,ar);f.wrapper.dispatchEvent(au);}function Q(){if(X&&!("msPerspective" in document.body.style)){var at=document.querySelectorAll(ap+" a:not(.image)");
+for(var au=0,ar=at.length;au<ar;au++){var av=at[au];if(av.textContent&&!av.querySelector("img")&&(!av.className||!av.classList.contains(av,"roll"))){av.classList.add("roll");
+av.innerHTML='<span data-title="'+av.text+'">'+av.innerHTML+"</span>";}}}}function T(){if(V.center){var av=I(document.querySelectorAll(ap));var aw=-f.wrapper.offsetHeight/2;
+for(var au=0,at=av.length;au<at;au++){var ar=av[au];if(ar.classList.contains("stack")){ar.style.top=0;}else{ar.style.top=Math.max(-(ar.offsetHeight/2)-20,aw)+"px";
+}}}}function L(){if(V.overview){f.wrapper.classList.add("overview");var ar=document.querySelectorAll(m);for(var ax=0,av=ar.length;ax<av;ax++){var au=ar[ax],aB="translateZ(-2500px) translate("+((ax-n)*105)+"%, 0%)";
+au.setAttribute("data-index-h",ax);au.style.display="block";au.style.WebkitTransform=aB;au.style.MozTransform=aB;au.style.msTransform=aB;au.style.OTransform=aB;
+au.style.transform=aB;if(!au.classList.contains("stack")){au.addEventListener("click",E,true);}var aA=au.querySelectorAll("section");for(var aw=0,at=aA.length;
+aw<at;aw++){var az=aA[aw],ay="translate(0%, "+((aw-(ax===n?e:0))*105)+"%)";az.setAttribute("data-index-h",ax);az.setAttribute("data-index-v",aw);az.style.display="block";
+az.style.WebkitTransform=ay;az.style.MozTransform=ay;az.style.msTransform=ay;az.style.OTransform=ay;az.style.transform=ay;az.addEventListener("click",E,true);
+}}}}function aj(){if(V.overview){f.wrapper.classList.remove("overview");var av=I(document.querySelectorAll(ap));for(var au=0,ar=av.length;au<ar;au++){var at=av[au];
+at.style.WebkitTransform="";at.style.MozTransform="";at.style.msTransform="";at.style.OTransform="";at.style.transform="";at.removeEventListener("click",E);
+}a();}}function ab(ar){if(typeof ar==="boolean"){ar?L():aj();}else{O()?aj():L();}}function O(){return f.wrapper.classList.contains("overview");}function ag(){var ar=document.body;
+var at=ar.requestFullScreen||ar.webkitRequestFullScreen||ar.mozRequestFullScreen||ar.msRequestFullScreen;if(at){at.apply(ar);}}function c(){f.wrapper.classList.add("paused");
+}function r(){f.wrapper.classList.remove("paused");}function ae(){if(al()){r();}else{c();}}function al(){return f.wrapper.classList.contains("paused");
+}function a(ay,aC){A=J;var av=aq.concat();aq.length=0;var aB=n,at=e;n=ao(m,ay===undefined?n:ay);e=ao(b,aC===undefined?e:aC);T();stateLoop:for(var aw=0,az=aq.length;
+aw<az;aw++){for(var au=0;au<av.length;au++){if(av[au]===aq[aw]){av.splice(au,1);continue stateLoop;}}document.documentElement.classList.add(aq[aw]);t(aq[aw]);
+}while(av.length){document.documentElement.classList.remove(av.pop());}if(O()){L();}clearTimeout(F);F=setTimeout(i,1500);var ar=document.querySelectorAll(m);
+var aA=ar[n],ax=aA.querySelectorAll("section");J=ax[e]||aA;if(n!==aB||e!==at){t("slidechanged",{indexh:n,indexv:e,previousSlide:A,currentSlide:J});}else{A=null;
+}if(A){A.classList.remove("present");}u();o();}function ao(av,aA){var at=I(document.querySelectorAll(av)),az=at.length;if(az){if(V.loop){aA%=az;if(aA<0){aA=az+aA;
+}}aA=Math.max(Math.min(aA,az-1),0);for(var ax=0;ax<az;ax++){var ay=at[ax];if(O()===false){var ar=Math.abs((aA-ax)%(az-3))||0;ay.style.display=ar>3?"none":"block";
+}at[ax].classList.remove("past");at[ax].classList.remove("present");at[ax].classList.remove("future");if(ax<aA){at[ax].classList.add("past");}else{if(ax>aA){at[ax].classList.add("future");
+}}if(ay.querySelector("section")){at[ax].classList.add("stack");}}at[aA].classList.add("present");var au=at[aA].getAttribute("data-state");if(au){aq=aq.concat(au.split(" "));
+}var aw=at[aA].getAttribute("data-autoslide");if(aw){ac=parseInt(aw);}else{ac=V.autoSlide;}}else{aA=0;}return aA;}function o(){if(V.progress&&f.progress){var au=I(document.querySelectorAll(m));
+var at=document.querySelectorAll(ap+":not(.stack)").length;var ar=0;mainLoop:for(var aw=0;aw<au.length;aw++){var ax=au[aw];var ay=I(ax.querySelectorAll("section"));
+for(var av=0;av<ay.length;av++){if(ay[av].classList.contains("present")){break mainLoop;}ar++;}if(ax.classList.contains("present")){break;}if(ax.classList.contains("stack")===false){ar++;
+}}f.progressbar.style.width=(ar/(at-1))*window.innerWidth+"px";}}function u(){if(V.controls&&f.controls){var ar=h();f.controlsLeft.concat(f.controlsRight).concat(f.controlsUp).concat(f.controlsDown).concat(f.controlsPrev).concat(f.controlsNext).forEach(function(at){at.classList.remove("enabled");
+});if(ar.left){f.controlsLeft.forEach(function(at){at.classList.add("enabled");});}if(ar.right){f.controlsRight.forEach(function(at){at.classList.add("enabled");
+});}if(ar.up){f.controlsUp.forEach(function(at){at.classList.add("enabled");});}if(ar.down){f.controlsDown.forEach(function(at){at.classList.add("enabled");
+});}if(ar.left||ar.up){f.controlsPrev.forEach(function(at){at.classList.add("enabled");});}if(ar.right||ar.down){f.controlsNext.forEach(function(at){at.classList.add("enabled");
+});}}}function h(){var ar=document.querySelectorAll(m),at=document.querySelectorAll(b);return{left:n>0,right:n<ar.length-1,up:e>0,down:e<at.length-1};}function M(){var ax=window.location.hash;
+var aw=ax.slice(2).split("/"),at=ax.replace(/#|\//gi,"");if(isNaN(parseInt(aw[0],10))&&at.length){var au=document.querySelector("#"+at);if(au){var ay=Reveal.getIndices(au);
+a(ay.h,ay.v);}else{a(n,e);}}else{var av=parseInt(aw[0],10)||0,ar=parseInt(aw[1],10)||0;a(av,ar);}}function i(){if(V.history){var ar="/";if(J&&typeof J.getAttribute("id")==="string"){ar="/"+J.getAttribute("id");
+}else{if(n>0||e>0){ar+=n;}if(e>0){ar+="/"+e;}}window.location.hash=ar;}}function P(ar){var aw=n,au=e;if(ar){var ax=!!ar.parentNode.nodeName.match(/section/gi);
+var av=ax?ar.parentNode:ar;var at=I(document.querySelectorAll(m));aw=Math.max(at.indexOf(av),0);if(ax){au=Math.max(I(ar.parentNode.children).indexOf(ar),0);
+}}return{h:aw,v:au};}function x(){if(document.querySelector(b+".present")){var at=document.querySelectorAll(b+".present .fragment:not(.visible)");if(at.length){at[0].classList.add("visible");
+t("fragmentshown",{fragment:at[0]});return true;}}else{var ar=document.querySelectorAll(m+".present .fragment:not(.visible)");if(ar.length){ar[0].classList.add("visible");
+t("fragmentshown",{fragment:ar[0]});return true;}}return false;}function U(){if(document.querySelector(b+".present")){var at=document.querySelectorAll(b+".present .fragment.visible");
+if(at.length){at[at.length-1].classList.remove("visible");t("fragmenthidden",{fragment:at[at.length-1]});return true;}}else{var ar=document.querySelectorAll(m+".present .fragment.visible");
+if(ar.length){ar[ar.length-1].classList.remove("visible");t("fragmenthidden",{fragment:ar[ar.length-1]});return true;}}return false;}function R(){clearTimeout(l);
+if(ac){l=setTimeout(z,ac);}}function D(){if(h().left&&(O()||U()===false)){a(n-1,0);}}function k(){if(h().right&&(O()||x()===false)){a(n+1,0);}}function w(){if(h().up&&(O()||U()===false)){a(n,e-1);
+}}function H(){if(h().down&&(O()||x()===false)){a(n,e+1);}}function ad(){if(U()===false){if(h().up){w();}else{var ar=document.querySelector(".reveal .slides>section.past:nth-child("+n+")");
+if(ar){e=(ar.querySelectorAll("section").length+1)||0;n--;a();}}}}function z(){if(x()===false){h().down?H():k();}R();}function am(au){var at=document.activeElement;
+var av=!!(document.activeElement&&(document.activeElement.type||document.activeElement.href||document.activeElement.contentEditable!=="inherit"));if(av||au.shiftKey||au.altKey||au.ctrlKey||au.metaKey){return;
+}var ar=true;switch(au.keyCode){case 80:case 33:ad();break;case 78:case 34:z();break;case 72:case 37:D();break;case 76:case 39:k();break;case 75:case 38:w();
+break;case 74:case 40:H();break;case 36:a(0);break;case 35:a(Number.MAX_VALUE);break;case 32:O()?aj():z();break;case 13:O()?aj():ar=false;break;case 66:case 190:ae();
+break;case 70:ag();break;default:ar=false;}if(ar){au.preventDefault();}else{if(au.keyCode===27&&X){ab();au.preventDefault();}}R();}function C(ar){ah.startX=ar.touches[0].clientX;
+ah.startY=ar.touches[0].clientY;ah.startCount=ar.touches.length;if(ar.touches.length===2&&V.overview){ah.startSpan=W({x:ar.touches[1].clientX,y:ar.touches[1].clientY},{x:ah.startX,y:ah.startY});
+}}function ak(ax){if(!ah.handled){var av=ax.touches[0].clientX;var au=ax.touches[0].clientY;if(ax.touches.length===2&&ah.startCount===2&&V.overview){var aw=W({x:ax.touches[1].clientX,y:ax.touches[1].clientY},{x:ah.startX,y:ah.startY});
+if(Math.abs(ah.startSpan-aw)>ah.threshold){ah.handled=true;if(aw<ah.startSpan){L();}else{aj();}}ax.preventDefault();}else{if(ax.touches.length===1&&ah.startCount!==2){var at=av-ah.startX,ar=au-ah.startY;
+if(at>ah.threshold&&Math.abs(at)>Math.abs(ar)){ah.handled=true;D();}else{if(at<-ah.threshold&&Math.abs(at)>Math.abs(ar)){ah.handled=true;k();}else{if(ar>ah.threshold){ah.handled=true;
+w();}else{if(ar<-ah.threshold){ah.handled=true;H();}}}}ax.preventDefault();}}}else{if(navigator.userAgent.match(/android/gi)){ax.preventDefault();}}}function aa(ar){ah.handled=false;
+}function q(ar){clearTimeout(B);B=setTimeout(function(){var at=ar.detail||-ar.wheelDelta;if(at>0){z();}else{ad();}},100);}function an(at){var ar=I(document.querySelectorAll(m)).length;
+var au=Math.floor((at.clientX/f.wrapper.offsetWidth)*ar);a(au);}function y(ar){M();}function g(ar){T();}function E(ar){if(O()){ar.preventDefault();aj();
+n=this.getAttribute("data-index-h");e=this.getAttribute("data-index-v");a();}}return{initialize:j,slide:a,left:D,right:k,up:w,down:H,prev:ad,next:z,prevFragment:U,nextFragment:x,navigateTo:a,navigateLeft:D,navigateRight:k,navigateUp:w,navigateDown:H,navigatePrev:ad,navigateNext:z,toggleOverview:ab,addEventListeners:G,removeEventListeners:Y,getIndices:P,getPreviousSlide:function(){return A;
+},getCurrentSlide:function(){return J;},getQueryHash:function(){var ar={};location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(at){ar[at.split("=").shift()]=at.split("=").pop();
+});return ar;},addEventListener:function(at,au,ar){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).addEventListener(at,au,ar);
+}},removeEventListener:function(at,au,ar){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).removeEventListener(at,au,ar);
 }}};})();
\ No newline at end of file