summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules3
-rw-r--r--Makefile9
m---------Modernizr0
-rw-r--r--config-all.json129
l---------www/js/lib/Modernizr1
-rw-r--r--www/js/lib/modernizr-build.min.js2
l---------www/js/lib/spin.js2
7 files changed, 140 insertions, 6 deletions
diff --git a/.gitmodules b/.gitmodules
index 7a6f1c8..644e7f3 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,3 +7,6 @@
[submodule "spin.js"]
path = spin.js
url = https://github.com/fgnass/spin.js.git
+[submodule "Modernizr"]
+ path = Modernizr
+ url = https://github.com/Modernizr/Modernizr.git
diff --git a/Makefile b/Makefile
index fe52e4d..011a004 100644
--- a/Makefile
+++ b/Makefile
@@ -21,6 +21,8 @@ all: .modules video audio images js
# === GIT SUBMODULES ===
.modules: .gitmodules
git submodule update --init
+ ln -fs ../../config-all.json Modernizr/lib/config-all.json
+ cd Modernizr && npm update && grunt build
touch .modules
# === VIDEO ===
@@ -123,14 +125,15 @@ $(DUMP)/ui/ctc_anim.webp: $(CTC_ANIM_TMP_WEBP)
# === JS ===
MYJS := www/js/html5ks.js www/js/menu.js www/js/api.js www/js/characters.js www/js/imachine.js www/js/i18n.js
-JSLIBS := www/js/lib/when/when.js www/js/lib/fastclick/lib/fastclick.js www/js/lib/modernizr-build.min.js www/js/lib/spin.js/spin.js
+JSLIBS := www/js/lib/when/when.js www/js/lib/fastclick/lib/fastclick.js \
+ www/js/lib/Modernizr/dist/modernizr-build.js www/js/lib/spin.js/spin.js
JSDATA := www/js/play.js www/js/images.js
JS := $(JSLIBS) $(MYJS) $(JSDATA)
js: www/js/all.min.js
-www/js/all.min.js: $(JS)
- $(UGLIFYJS) $^ -o "$@" --source-map "$@".map --source-map-url ./all.min.js.map -p 2 -m -c drop_debugger=false
+www/js/all.min.js: $(JS) .modules
+ $(UGLIFYJS) $(JS) -o "$@" --source-map "$@".map --source-map-url ./all.min.js.map -p 2 -m -c drop_debugger=false
# === MISC ===
diff --git a/Modernizr b/Modernizr
new file mode 160000
+Subproject 218adcaddb5ea496e49263dd1911193a8cfa938
diff --git a/config-all.json b/config-all.json
new file mode 100644
index 0000000..77947b9
--- /dev/null
+++ b/config-all.json
@@ -0,0 +1,129 @@
+{
+ "classPrefix": "",
+ "options": [
+ "setClasses",
+ "testProp",
+ "fnBind"
+ ],
+ "feature-detects": [
+ "test/applicationcache",
+ "test/audio/loop",
+ "test/audio",
+ "test/canvas/todataurl",
+ "test/canvas",
+ "test/canvastext",
+ "test/contextmenu",
+ "test/cookies",
+ "test/css/animations",
+ "test/css/backgroundposition-shorthand",
+ "test/css/backgroundposition-xy",
+ "test/css/backgroundrepeat",
+ "test/css/backgroundsize",
+ "test/css/backgroundsizecover",
+ "test/css/borderimage",
+ "test/css/borderradius",
+ "test/css/boxshadow",
+ "test/css/boxsizing",
+ "test/css/calc",
+ "test/css/checked",
+ "test/css/columns",
+ "test/css/cubicbezierrange",
+ "test/css/ellipsis",
+ "test/css/filters",
+ "test/css/fontface",
+ "test/css/gradients",
+ "test/css/hsla",
+ "test/css/hyphens",
+ "test/css/lastchild",
+ "test/css/mask",
+ "test/css/mediaqueries",
+ "test/css/multiplebgs",
+ "test/css/nthchild",
+ "test/css/objectfit",
+ "test/css/opacity",
+ "test/css/overflow-scrolling",
+ "test/css/pointerevents",
+ "test/css/positionsticky",
+ "test/css/pseudoanimations",
+ "test/css/pseudotransitions",
+ "test/css/reflections",
+ "test/css/resize",
+ "test/css/rgba",
+ "test/css/scrollbars",
+ "test/css/subpixelfont",
+ "test/css/textshadow",
+ "test/css/transforms",
+ "test/css/transforms3d",
+ "test/css/transformstylepreserve3d",
+ "test/css/transitions",
+ "test/css/userselect",
+ "test/dom/classlist",
+ "test/dom/createElement-attrs",
+ "test/dom/dataset",
+ "test/dom/documentfragment",
+ "test/elem/output",
+ "test/elem/progress-meter",
+ "test/elem/time",
+ "test/es5/array",
+ "test/es5/date",
+ "test/es5/function",
+ "test/es5/object",
+ "test/es5/strictmode",
+ "test/es5/string",
+ "test/es6/contains",
+ "test/es6/promises",
+ "test/es6/generators",
+ "test/event/oninput",
+ "test/flash",
+ "test/fullscreen-api",
+ "test/hashchange",
+ "test/history",
+ "test/ie8compat",
+ "test/img/apng",
+ "test/img/webp-lossless",
+ "test/img/webp-alpha",
+ "test/img/webp-animation",
+ "test/img/webp",
+ "test/input",
+ "test/inputtypes",
+ "test/json",
+ "test/network/xhr-responsetype-json",
+ "test/network/xhr-responsetype-text",
+ "test/network/xhr-responsetype",
+ "test/notification",
+ "test/pagevisibility-api",
+ "test/performance",
+ "test/pointerevents",
+ "test/pointerlock-api",
+ "test/postmessage",
+ "test/quota-management-api",
+ "test/requestanimationframe",
+ "test/script/async",
+ "test/script/defer",
+ "test/storage/localstorage",
+ "test/storage/sessionstorage",
+ "test/style/scoped",
+ "test/svg/asimg",
+ "test/svg/clippaths",
+ "test/svg/filters",
+ "test/svg/inline",
+ "test/svg",
+ "test/touchevents",
+ "test/typed-arrays",
+ "test/unicode",
+ "test/unicode-range",
+ "test/url/data-uri",
+ "test/userdata",
+ "test/video/autoplay",
+ "test/video/loop",
+ "test/video/preload",
+ "test/video",
+ "test/webanimations",
+ "test/webgl/extensions",
+ "test/webgl",
+ "test/window/framed",
+ "test/workers/dataworkers",
+ "test/workers/sharedworkers",
+ "test/workers/webworkers"
+ ]
+}
diff --git a/www/js/lib/Modernizr b/www/js/lib/Modernizr
new file mode 120000
index 0000000..06b5670
--- /dev/null
+++ b/www/js/lib/Modernizr
@@ -0,0 +1 @@
+../../../Modernizr \ No newline at end of file
diff --git a/www/js/lib/modernizr-build.min.js b/www/js/lib/modernizr-build.min.js
deleted file mode 100644
index 19f042d..0000000
--- a/www/js/lib/modernizr-build.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! modernizr 3.0.0pre (Custom Build) | MIT */!function(a,b,c){function d(a,b){return typeof a===b}function e(){var a,b,c,e,f,g,h;for(var i in q){if(a=[],b=q[i],b.name&&(a.push(b.name.toLowerCase()),b.options&&b.options.aliases&&b.options.aliases.length))for(c=0;c<b.options.aliases.length;c++)a.push(b.options.aliases[c].toLowerCase());for(e=d(b.fn,"function")?b.fn():b.fn,f=0;f<a.length;f++)g=a[f],h=g.split("."),1===h.length?Modernizr[h[0]]=e:2===h.length&&(Modernizr[h[0]][h[1]]=e),s.push((e?"":"no-")+h.join("-"))}}function f(a){var b=t.className,c=Modernizr._config.classPrefix||"",d=new RegExp("(^|\\s)"+c+"no-js(\\s|$)");b=b.replace(d,"$1"+c+"js$2"),Modernizr._config.enableClasses&&(b+=" "+c+a.join(" "+c),t.className=b)}function g(a,b){return!!~(""+a).indexOf(b)}function h(){var a=b.body;return a||(a=u("body"),a.fake=!0),a}function i(a,b,c,d){var e,f,g,i,j="modernizr",k=u("div"),l=h();if(parseInt(c,10))for(;c--;)g=u("div"),g.id=d?d[c]:j+(c+1),k.appendChild(g);return e=["&#173;",'<style id="s',j,'">',a,"</style>"].join(""),k.id=j,(l.fake?l:k).innerHTML+=e,l.appendChild(k),l.fake&&(l.style.background="",l.style.overflow="hidden",i=t.style.overflow,t.style.overflow="hidden",t.appendChild(l)),f=b(k,a),l.fake?(l.parentNode.removeChild(l),t.style.overflow=i,t.offsetHeight):k.parentNode.removeChild(k),!!f}function j(a){return a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()}).replace(/^ms-/,"-ms-")}function k(b,d){var e=b.length;if("CSS"in a&&"supports"in a.CSS){for(;e--;)if(a.CSS.supports(j(b[e]),d))return!0;return!1}if("CSSSupportsRule"in a){for(var f=[];e--;)f.push("("+j(b[e])+":"+d+")");return f=f.join(" or "),i("@supports ("+f+") { #modernizr { position: absolute; } }",function(b){return"absolute"==(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position})}return c}function l(a,b,e,f){function h(){j&&(delete w.style,delete w.modElem)}if(f=d(f,"undefined")?!1:f,!d(e,"undefined")){var i=k(a,e);if(!d(i,"undefined"))return i}var j,l,m,n;w.style||(j=!0,w.modElem=u("modernizr"),w.style=w.modElem.style);for(l in a)if(m=a[l],n=w.style[m],!g(m,"-")&&w.style[m]!==c){if(f||d(e,"undefined"))return h(),"pfx"==b?m:!0;try{w.style[m]=e}catch(o){}if(w.style[m]!=n)return h(),"pfx"==b?m:!0}return h(),!1}function m(a,b,c){var e;for(var f in a)if(a[f]in b)return c===!1?a[f]:(e=b[a[f]],d(e,"function")&&"bind"in e?e.bind(c||b):e);return!1}function n(a,b,c,e,f){var g=a.charAt(0).toUpperCase()+a.slice(1),h=(a+" "+B.join(g+" ")+g).split(" ");return d(b,"string")||d(b,"undefined")?l(h,b,e,f):(h=(a+" "+C.join(g+" ")+g).split(" "),m(h,b,c))}function o(a,b,d){return n(a,c,c,b,d)}function p(a,b){if("object"==typeof a)for(var c in a)G(a,c)&&p(c,a[c]);else{a=a.toLowerCase();var d=a.split("."),e=Modernizr[d[0]];if(2==d.length&&(e=e[d[1]]),"undefined"!=typeof e)return Modernizr;b="function"==typeof b?b():b,1==d.length?Modernizr[d[0]]=b:2==d.length&&(Modernizr[d[0]][d[1]]=b),f([(b?"":"no-")+d.join("-")]),Modernizr._trigger(a,b)}return Modernizr}var q=[],r={_version:"v3.0.0pre",_config:{classPrefix:"",enableClasses:!0,usePrefixes:!0},_q:[],on:function(a,b){setTimeout(function(){b(this[a])},0)},addTest:function(a,b,c){q.push({name:a,fn:b,options:c})},addAsyncTest:function(a){q.push({name:null,fn:a})}},Modernizr=function(){};Modernizr.prototype=r,Modernizr=new Modernizr;var s=[],t=b.documentElement,u=function(){return b.createElement.apply(b,arguments)},v={elem:u("modernizr")};Modernizr._q.push(function(){delete v.elem});var w={style:v.elem.style};Modernizr._q.unshift(function(){delete w.style});var x=r.testProp=function(a,b,d){return l([a],c,b,d)},y=s.slice;Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if("function"!=typeof b)throw new TypeError;var c=y.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(y.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(y.call(arguments)))};return d}),Modernizr.addTest("applicationcache","applicationCache"in a),Modernizr.addTest("audioloop","loop"in u("audio")),Modernizr.addTest("audio",function(){var a=u("audio"),b=!1;try{(b=!!a.canPlayType)&&(b=new Boolean(b),b.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),b.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),b.opus=a.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),b.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),b.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(c){}return b}),Modernizr.addTest("canvas",function(){var a=u("canvas");return!(!a.getContext||!a.getContext("2d"))});var z=u("canvas");Modernizr.addTest("todataurljpeg",function(){return!!Modernizr.canvas&&0===z.toDataURL("image/jpeg").indexOf("data:image/jpeg")}),Modernizr.addTest("todataurlpng",function(){return!!Modernizr.canvas&&0===z.toDataURL("image/png").indexOf("data:image/png")}),Modernizr.addTest("todataurlwebp",function(){return!!Modernizr.canvas&&0===z.toDataURL("image/webp").indexOf("data:image/webp")}),Modernizr.addTest("canvastext",function(){return Modernizr.canvas===!1?!1:"function"==typeof u("canvas").getContext("2d").fillText}),Modernizr.addTest("contextmenu","contextMenu"in t&&"HTMLMenuItemElement"in a),Modernizr.addTest("cookies",function(){try{b.cookie="cookietest=1";var a=-1!=b.cookie.indexOf("cookietest=");return b.cookie="cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT",a}catch(c){return!1}});var A="Webkit Moz O ms",B=r._config.usePrefixes?A.split(" "):[];r._cssomPrefixes=B;var C=r._config.usePrefixes?A.toLowerCase().split(" "):[];r._domPrefixes=C,r.testAllProps=n,r.testAllProps=o,Modernizr.addTest("cssanimations",o("animationName","a",!0)),Modernizr.addTest("bgpositionshorthand",function(){var a=u("a"),b=a.style,c="right 10px bottom 10px";return b.cssText="background-position: "+c+";",b.backgroundPosition===c}),Modernizr.addTest("bgpositionxy",function(){return o("backgroundPositionX","3px",!0)&&o("backgroundPositionY","5px",!0)}),Modernizr.addTest("bgrepeatround",o("backgroundRepeat","round")),Modernizr.addTest("bgrepeatspace",o("backgroundRepeat","space")),Modernizr.addTest("backgroundsize",o("backgroundSize","100%",!0)),Modernizr.addTest("bgsizecover",o("backgroundSize","cover")),Modernizr.addTest("borderimage",o("borderImage","url() 1",!0)),Modernizr.addTest("borderradius",o("borderRadius","0px",!0)),Modernizr.addTest("boxshadow",o("boxShadow","1px 1px",!0)),Modernizr.addTest("boxsizing",o("boxSizing","border-box",!0)&&(b.documentMode===c||b.documentMode>7));var D=r._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):[];r._prefixes=D,Modernizr.addTest("csscalc",function(){var a="width:",b="calc(10px);",c=u("div");return c.style.cssText=a+D.join(b+a),!!c.style.length});var E=r.testStyles=i;Modernizr.addTest("checked",function(){return E("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(a){var b=u("input");return b.setAttribute("type","checkbox"),b.setAttribute("checked","checked"),a.appendChild(b),20===b.offsetLeft})}),function(){Modernizr.addTest("csscolumns",function(){var a=!1,b=o("columnCount");try{(a=!!b)&&(a=new Boolean(a))}catch(c){}return a});for(var a,b,c=["Width","Span","Fill","Gap","Rule","RuleColor","RuleStyle","RuleWidth","BreakBefore","BreakAfter","BreakInside"],d=0;d<c.length;d++)a=c[d].toLowerCase(),b=o("column"+c[d]),("breakbefore"===a||"breakafter"===a||"breakinside"==a)&&(b=b||o(c[d])),Modernizr.addTest("csscolumns."+a,b)}(),Modernizr.addTest("cubicbezierrange",function(){var a=u("div");return a.style.cssText=D.join("transition-timing-function:cubic-bezier(1,0,0,1.1); "),!!a.style.length}),Modernizr.addTest("ellipsis",o("textOverflow","ellipsis")),Modernizr.addTest("cssfilters",function(){var a=u("div");return a.style.cssText=D.join("filter:blur(2px); "),!!a.style.length&&(b.documentMode===c||b.documentMode>9)});var F=function(){var a=navigator.userAgent,b=a.match(/applewebkit\/([0-9]+)/gi)&&parseFloat(RegExp.$1),c=a.match(/w(eb)?osbrowser/gi),d=a.match(/windows phone/gi)&&a.match(/iemobile\/([0-9])+/gi)&&parseFloat(RegExp.$1)>=9,e=533>b&&a.match(/android/gi);return c||e||d}();F?Modernizr.addTest("fontface",!1):E('@font-face {font-family:"font";src:url("https://")}',function(a,c){var d=b.getElementById("smodernizr"),e=d.sheet||d.styleSheet,f=e?e.cssRules&&e.cssRules[0]?e.cssRules[0].cssText:e.cssText||"":"",g=/src/i.test(f)&&0===f.indexOf(c.split(" ")[0]);Modernizr.addTest("fontface",g)}),Modernizr.addTest("cssgradients",function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);",d=(a+"-webkit- ".split(" ").join(b+a)+D.join(c+a)).slice(0,-a.length),e=u("div"),f=e.style;return f.cssText=d,(""+f.backgroundImage).indexOf("gradient")>-1}),Modernizr.addTest("hsla",function(){var a=u("div"),b=a.style;return b.cssText="background-color:hsla(120,40%,100%,.5)",g(b.backgroundColor,"rgba")||g(b.backgroundColor,"hsla")});var G;!function(){var a={}.hasOwnProperty;G=d(a,"undefined")||d(a.call,"undefined")?function(a,b){return b in a&&d(a.constructor.prototype[b],"undefined")}:function(b,c){return a.call(b,c)}}(),r._l={},r.on=function(a,b){this._l[a]||(this._l[a]=[]),this._l[a].push(b),Modernizr.hasOwnProperty(a)&&setTimeout(function(){Modernizr._trigger(a,Modernizr[a])},0)},r._trigger=function(a,b){if(this._l[a]){var c=this._l[a];setTimeout(function(){var a,d;for(a=0;a<c.length;a++)(d=c[a])(b)},0),delete this._l[a]}},Modernizr._q.push(function(){r.addTest=p}),Modernizr.addAsyncTest(function(){function c(){function e(){try{var a=u("div"),c=u("span"),d=a.style,e=0,f=0,g=!1,h=b.body.firstElementChild||b.body.firstChild;return a.appendChild(c),c.innerHTML="Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.",b.body.insertBefore(a,h),d.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;",e=c.offsetHeight,f=c.offsetWidth,d.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;"+D.join("hyphens:auto; "),g=c.offsetHeight!=e||c.offsetWidth!=f,b.body.removeChild(a),a.removeChild(c),g}catch(i){return!1}}function f(a,c){try{var d=u("div"),e=u("span"),f=d.style,g=0,h=!1,i=!1,j=!1,k=b.body.firstElementChild||b.body.firstChild;return f.cssText="position:absolute;top:0;left:0;overflow:visible;width:1.25em;",d.appendChild(e),b.body.insertBefore(d,k),e.innerHTML="mm",g=e.offsetHeight,e.innerHTML="m"+a+"m",i=e.offsetHeight>g,c?(e.innerHTML="m<br />m",g=e.offsetWidth,e.innerHTML="m"+a+"m",j=e.offsetWidth>g):j=!0,i===!0&&j===!0&&(h=!0),b.body.removeChild(d),d.removeChild(e),h}catch(l){return!1}}function g(c){try{var d,e=u("input"),f=u("div"),g="lebowski",h=!1,i=b.body.firstElementChild||b.body.firstChild;if(f.innerHTML=g+c+g,b.body.insertBefore(f,i),b.body.insertBefore(e,f),e.setSelectionRange?(e.focus(),e.setSelectionRange(0,0)):e.createTextRange&&(d=e.createTextRange(),d.collapse(!0),d.moveEnd("character",0),d.moveStart("character",0),d.select()),a.find)h=a.find(g+g);else try{d=a.self.document.body.createTextRange(),h=d.findText(g+g)}catch(j){h=!1}return b.body.removeChild(f),b.body.removeChild(e),h}catch(j){return!1}}return b.body||b.getElementsByTagName("body")[0]?(p("csshyphens",function(){if(!o("hyphens","auto",!0))return!1;try{return e()}catch(a){return!1}}),p("softhyphens",function(){try{return f("&#173;",!0)&&f("&#8203;",!1)}catch(a){return!1}}),void p("softhyphensfind",function(){try{return g("&#173;")&&g("&#8203;")}catch(a){return!1}})):void setTimeout(c,d)}var d=300;setTimeout(c,d)}),E("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}",function(a){Modernizr.addTest("lastchild",a.lastChild.offsetWidth>a.firstChild.offsetWidth)},2),Modernizr.addTest("cssmask",o("maskRepeat","repeat-x",!0));var H=function(){var b=a.matchMedia||a.msMatchMedia;return b?function(a){var c=b(a);return c&&c.matches||!1}:function(b){var c=!1;return i("@media "+b+" { #modernizr { position: absolute; } }",function(b){c="absolute"==(a.getComputedStyle?a.getComputedStyle(b,null):b.currentStyle).position}),c}}(),I=r.mq=H;Modernizr.addTest("mediaqueries",I("only all")),Modernizr.addTest("multiplebgs",function(){var a=u("div"),b=a.style;return b.cssText="background:url(https://),url(https://),red url(https://)",/(url\s*\(.*?){3}/.test(b.background)}),E("#modernizr div {width:1px} #modernizr div:nth-child(2n) {width:2px;}",function(a){Modernizr.addTest("nthchild",function(){for(var b=a.getElementsByTagName("div"),c=!0,d=0;5>d;d++)c=c&&b[d].offsetWidth===d%2+1;return c})},5);var J=r.prefixed=function(a,b,c){return b?n(a,b,c):n(a,"pfx")};Modernizr.addTest("objectfit",!!J("objectFit"),{aliases:["object-fit"]}),Modernizr.addTest("opacity",function(){var a=u("div"),b=a.style;return b.cssText=D.join("opacity:.55;"),/^0.55$/.test(b.opacity)}),Modernizr.addTest("overflowscrolling",o("overflowScrolling","touch",!0)),Modernizr.addTest("csspointerevents",function(){var a=u("x");return a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}),Modernizr.addTest("csspositionsticky",function(){var a="position:",b="sticky",c=u("modernizr"),d=c.style;return d.cssText=a+D.join(b+";"+a).slice(0,-a.length),-1!==d.position.indexOf(b)}),Modernizr.addTest("csspseudoanimations",function(){var b=!1;if(!Modernizr.cssanimations||!a.getComputedStyle)return b;var c=["@",Modernizr._prefixes.join("keyframes csspseudoanimations { from { font-size: 10px; } }@").replace(/\@$/,""),'#modernizr:before { content:" "; font-size:5px;',Modernizr._prefixes.join("animation:csspseudoanimations 1ms infinite;"),"}"].join("");return Modernizr.testStyles(c,function(c){b="10px"===a.getComputedStyle(c,":before").getPropertyValue("font-size")}),b}),Modernizr.addTest("csstransitions",o("transition","all",!0)),Modernizr.addTest("csspseudotransitions",function(){var b=!1;if(!Modernizr.csstransitions||!a.getComputedStyle)return b;var c='#modernizr:before { content:" "; font-size:5px;'+Modernizr._prefixes.join("transition:0s 100s;")+"}#modernizr.trigger:before { font-size:10px; }";return Modernizr.testStyles(c,function(c){a.getComputedStyle(c,":before").getPropertyValue("font-size"),c.className+="trigger",b="5px"===a.getComputedStyle(c,":before").getPropertyValue("font-size")}),b}),Modernizr.addTest("cssreflections",o("boxReflect","above",!0)),Modernizr.addTest("cssresize",o("resize","both",!0)),Modernizr.addTest("rgba",function(){var a=u("div"),b=a.style;return b.cssText="background-color:rgba(150,255,150,.5)",(""+b.backgroundColor).indexOf("rgba")>-1}),E("#modernizr{overflow: scroll; width: 40px; height: 40px; }#"+D.join("scrollbar{width:0px} #modernizr::").split("#").slice(1).join("#")+"scrollbar{width:0px}",function(a){Modernizr.addTest("cssscrollbar",40==a.scrollWidth)}),E("#modernizr{position: absolute; top: -10em; visibility:hidden; font: normal 10px arial;}#subpixel{float: left; font-size: 33.3333%;}",function(b){var c=b.firstChild;c.innerHTML="This is a text written in Arial",Modernizr.addTest("subpixelfont",a.getComputedStyle?"44px"!==a.getComputedStyle(c,null).getPropertyValue("width"):!1)},1,["subpixel"]),Modernizr.addTest("textshadow",x("textShadow","1px 1px")),Modernizr.addTest("csstransforms",o("transform","scale(1)",!0)),Modernizr.addTest("csstransforms3d",function(){var a=!!o("perspective","1px",!0);return a&&"webkitPerspective"in t.style&&E("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0}}",function(b){a=9===b.offsetLeft&&5===b.offsetHeight}),a}),Modernizr.addTest("preserve3d",o("transformStyle","preserve-3d")),Modernizr.addTest("userselect",o("userSelect","none",!0)),Modernizr.addTest("classlist","classList"in t),Modernizr.addTest("createelementattrs",function(){try{return"test"==u('<input name="test" />').getAttribute("name")}catch(a){return!1}},{aliases:["createelement-attrs"]}),Modernizr.addTest("dataset",function(){var a=u("div");return a.setAttribute("data-a-b","c"),!(!a.dataset||"c"!==a.dataset.aB)}),Modernizr.addTest("documentfragment",function(){return"createDocumentFragment"in b&&"appendChild"in t}),Modernizr.addTest("outputelem","value"in u("output")),Modernizr.addTest("progressbar",u("progress").max!==c),Modernizr.addTest("meter",u("meter").max!==c),Modernizr.addTest("time","valueAsDate"in u("time")),Modernizr.addTest("es5array",function(){return!!(Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray)}),Modernizr.addTest("es5date",function(){var a="2013-04-12T06:06:37.307Z",b=!1;try{b=!!Date.parse(a)}catch(c){}return!!(Date.now&&Date.prototype&&Date.prototype.toISOString&&Date.prototype.toJSON&&b)}),Modernizr.addTest("es5function",function(){return!(!Function.prototype||!Function.prototype.bind)}),Modernizr.addTest("es5object",function(){return!!(Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions)}),Modernizr.addTest("strictmode",function(){return!this}()),Modernizr.addTest("es5string",function(){return!(!String.prototype||!String.prototype.trim)}),Modernizr.addTest("contains",d(String.prototype.contains,"function")),Modernizr.addTest("promises",function(){return"Promise"in a&&"cast"in a.Promise&&"resolve"in a.Promise&&"reject"in a.Promise&&"all"in a.Promise&&"race"in a.Promise&&function(){var b;return new a.Promise(function(a){b=a}),"function"==typeof b}()}),Modernizr.addAsyncTest(function(){var b,c,d=function(a,b){var c=!!a;c&&(c=new Boolean(c),c.blocked="blocked"===a),p("flash",function(){return c}),b&&t.removeChild(b)};try{c="Pan"in new a.ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(e){}if(b=!("plugins"in navigator&&"Shockwave Flash"in navigator.plugins||c))d(!1);else{var f,g=u("embed");if(g.type="application/x-shockwave-flash",t.appendChild(g),!("Pan"in g||c))return void d("blocked",g);setTimeout(function(){return t.contains(g)?(f=g.style.cssText,""!==f?void d("blocked",g):void d(!0,g)):void d("blocked")},10)}}),Modernizr.addTest("fullscreen",!(!J("exitFullscreen",b,!1)&&!J("cancelFullScreen",b,!1)));var K=function(a){function c(b,c){var e;return b?(c&&"string"!=typeof c||(c=u(c||"div")),b="on"+b,e=b in c,!e&&d&&(c.setAttribute||(c=u("div")),c.setAttribute&&c.removeAttribute&&(c.setAttribute(b,""),e="function"==typeof c[b],c[b]!==a&&(c[b]=a),c.removeAttribute(b))),e):!1}var d=!("onblur"in b.documentElement);return c}(),L=r.hasEvent=K;Modernizr.addTest("hashchange",function(){return L("hashchange",a)===!1?!1:b.documentMode===c||b.documentMode>7}),Modernizr.addTest("history",function(){var b=navigator.userAgent;return-1!==b.indexOf("Android 2.")&&-1!==b.indexOf("Mobile Safari")&&-1===b.indexOf("Chrome")?!1:a.history&&"pushState"in a.history}),Modernizr.addTest("ie8compat",!a.addEventListener&&!!b.documentMode&&7===b.documentMode),Modernizr.addAsyncTest(function(){if(!Modernizr.canvas)return!1;var a=new Image,b=u("canvas"),c=b.getContext("2d");a.onload=function(){p("apng",function(){return"undefined"==typeof b.getContext?!1:(c.drawImage(a,0,0),0===c.getImageData(0,0,1,1).data[3])})},a.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){p("webplossless",!1,{aliases:["webp-lossless"]})},a.onload=function(){p("webplossless",1==a.width,{aliases:["webp-lossless"]})},a.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){p("webpalpha",!1,{aliases:["webp-alpha"]})},a.onload=function(){p("webpalpha",1==a.width,{aliases:["webp-alpha"]})},a.src="data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA=="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){p("webpanimation",!1,{aliases:["webp-animation"]})},a.onload=function(){p("webpanimation",1==a.width,{aliases:["webp-animation"]})},a.src="data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA"}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){p("webp",!1)},a.onload=function(){p("webp",1==a.width)},a.src="data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA="});var M={},N="autocomplete autofocus list placeholder max min multiple pattern required step".split(" "),O=u("input");Modernizr.input=function(b){for(var c=0,d=b.length;d>c;c++)M[b[c]]=!!(b[c]in O);return M.list&&(M.list=!(!u("datalist")||!a.HTMLDataListElement)),M}(N);var P="search tel url email datetime date month week time datetime-local number range color".split(" "),Q={},R=":)";Modernizr.inputtypes=function(a){for(var d,e,f,g=a.length,h=0;g>h;h++)O.setAttribute("type",e=a[h]),d="text"!==O.type,d&&(O.value=R,O.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&O.style.WebkitAppearance!==c?(t.appendChild(O),f=b.defaultView,d=f.getComputedStyle&&"textfield"!==f.getComputedStyle(O,null).WebkitAppearance&&0!==O.offsetHeight,t.removeChild(O)):/^(search|tel)$/.test(e)||(d=/^(url|email)$/.test(e)?O.checkValidity&&O.checkValidity()===!1:O.value!=R)),Q[a[h]]=!!d;return Q}(P),Modernizr.addTest("json","JSON"in a&&"parse"in JSON);var S=function(a){if("undefined"==typeof XMLHttpRequest)return!1;var b=new XMLHttpRequest;b.open("get","/",!0);try{b.responseType=a}catch(c){return!1}return"response"in b&&b.responseType==a};Modernizr.addTest("xhrresponsetypejson",S("json")),Modernizr.addTest("xhrresponsetypetext",S("text")),Modernizr.addTest("xhrresponsetype",function(){if("undefined"==typeof XMLHttpRequest)return!1;var a=new XMLHttpRequest;return a.open("get","/",!0),"response"in a}()),Modernizr.addTest("notification","Notification"in a&&"permission"in a.Notification&&"requestPermission"in a.Notification),Modernizr.addTest("pagevisibility",!!J("hidden",b,!1)),Modernizr.addTest("performance",!!J("performance",a)),Modernizr.addTest("pointerevents",function(){var a=!1,b=C.length;for(a=Modernizr.hasEvent("pointerdown");b--&&!a;)L(C[b]+"pointerdown")&&(a=!0);return a}),Modernizr.addTest("pointerlock",!!J("exitPointerLock",b)),Modernizr.addTest("postmessage","postMessage"in a),Modernizr.addTest("quotamanagement",function(){var a=J("temporaryStorage",navigator),b=J("persistentStorage",navigator);return!(!a||!b)}),Modernizr.addTest("requestanimationframe",!!J("requestAnimationFrame",a),{aliases:["raf"]}),Modernizr.addTest("scriptasync","async"in u("script")),Modernizr.addTest("scriptdefer","defer"in u("script")),Modernizr.addTest("localstorage",function(){var a="modernizr";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(b){return!1}}),Modernizr.addTest("sessionstorage",function(){var a="modernizr";try{return sessionStorage.setItem(a,a),sessionStorage.removeItem(a),!0}catch(b){return!1}}),Modernizr.addTest("stylescoped","scoped"in u("style")),Modernizr.addTest("svgasimg",b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1"));var T={}.toString;Modernizr.addTest("svgclippaths",function(){return!!b.createElementNS&&/SVGClipPath/.test(T.call(b.createElementNS("http://www.w3.org/2000/svg","clipPath")))}),Modernizr.addTest("svgfilters",function(){var b=!1;try{b="SVGFEColorMatrixElement"in a&&2==SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE}catch(c){}return b}),Modernizr.addTest("inlinesvg",function(){var a=u("div");return a.innerHTML="<svg/>","http://www.w3.org/2000/svg"==(a.firstChild&&a.firstChild.namespaceURI)}),Modernizr.addTest("svg",!!b.createElementNS&&!!b.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect),Modernizr.addTest("touchevents",function(){var c;if("ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch)c=!0;else{var d=["@media (",D.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");E(d,function(a){c=9===a.offsetTop})}return c}),Modernizr.addTest("typedarrays","ArrayBuffer"in a),Modernizr.addTest("unicode",function(){var a,c=u("span"),d=b.createElement("span");return E("#modernizr{font-family:Arial,sans;font-size:300em;}",function(b){c.innerHTML="&#5987",d.innerHTML="&#9734",b.appendChild(c),b.appendChild(d),a="offsetWidth"in c&&c.offsetWidth!==d.offsetWidth}),a}),Modernizr.addTest("unicoderange",function(){return Modernizr.testStyles('@font-face{font-family:"unicodeRange";src:local("Arial");unicode-range:U+002E}#modernizr span{font-size:10px;display:inline-block;font-family:"unicodeRange",monospace}#modernizr .mono{font-family:monospace}',function(a){for(var b=[".",".","m","m"],c=0;c<b.length;c++){var d=u("span");d.innerHTML=b[c],d.className=c%2?"mono":"",a.appendChild(d),b[c]=d.clientWidth}return b[0]!==b[1]&&b[2]===b[3]})}),Modernizr.addAsyncTest(function(){function a(){var a=new Image;a.onerror=function(){p("datauri",!0),Modernizr.datauri=new Boolean(!0),Modernizr.datauri.over32kb=!1},a.onload=function(){p("datauri",!0),Modernizr.datauri=new Boolean(!0),Modernizr.datauri.over32kb=1==a.width&&1==a.height};for(var b="R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";b.length<33e3;)b="\r\n"+b;a.src="data:image/gif;base64,"+b}-1!==navigator.userAgent.indexOf("MSIE 7.")&&setTimeout(function(){p("datauri",!1)},10);var b=new Image;b.onerror=function(){p("datauri",!1)},b.onload=function(){1==b.width&&1==b.height?a():p("datauri",!1)},b.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="}),Modernizr.addTest("userdata",!!u("div").addBehavior),Modernizr.addTest("video",function(){var a=u("video"),b=!1;try{(b=!!a.canPlayType)&&(b=new Boolean(b),b.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),b.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),b.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""),b.vp9=a.canPlayType('video/webm; codecs="vp9"').replace(/^no$/,""))}catch(c){}return b}),Modernizr.addAsyncTest(function(){var a,b=300,c=u("video"),d=c.style,e=function(b){clearTimeout(a),c.removeEventListener("playing",e),p("videoautoplay",b||0!==c.currentTime),c.parentNode.removeChild(c)};if(!(Modernizr.video&&"autoplay"in c))return void p("videoautoplay",!1);d.height=0,d.width=0;try{if(Modernizr.video.h264)c.src="data:video/mp4;base64,AAAAHGZ0eXBtcDQyAAAAAG1wNDJpc29tYXZjMQAAAz5tb292AAAAbG12aGQAAAAAzaNacc2jWnEAAV+QAAFfkAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAGGlvZHMAAAAAEICAgAcAT////3//AAACQ3RyYWsAAABcdGtoZAAAAAHNo1pxzaNacQAAAAEAAAAAAAFfkAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAEAAAABAAAAAAAd9tZGlhAAAAIG1kaGQAAAAAzaNacc2jWnEAAV+QAAFfkFXEAAAAAAAhaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAAAAAAGWbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABVnN0YmwAAACpc3RzZAAAAAAAAAABAAAAmWF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAEAAQAEgAAABIAAAAAAAAAAEOSlZUL0FWQyBDb2RpbmcAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwH0AAr/4QAZZ/QACq609NQYBBkAAAMAAQAAAwAKjxImoAEABWjOAa8gAAAAEmNvbHJuY2xjAAYAAQAGAAAAGHN0dHMAAAAAAAAAAQAAAAUAAEZQAAAAKHN0c3oAAAAAAAAAAAAAAAUAAAIqAAAACAAAAAgAAAAIAAAACAAAAChzdHNjAAAAAAAAAAIAAAABAAAABAAAAAEAAAACAAAAAQAAAAEAAAAYc3RjbwAAAAAAAAACAAADYgAABaQAAAAUc3RzcwAAAAAAAAABAAAAAQAAABFzZHRwAAAAAAREREREAAAAb3VkdGEAAABnbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAA6aWxzdAAAADKpdG9vAAAAKmRhdGEAAAABAAAAAEhhbmRCcmFrZSAwLjkuOCAyMDEyMDcxODAwAAACUm1kYXQAAAHkBgX/4NxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxMjAgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDExIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9MSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjAgbWU9ZXNhIHN1Ym1lPTkgcHN5PTAgbWl4ZWRfcmVmPTAgbWVfcmFuZ2U9NCBjaHJvbWFfbWU9MSB0cmVsbGlzPTAgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0wIGNocm9tYV9xcF9vZmZzZXQ9MCB0aHJlYWRzPTYgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTUwIGtleWludF9taW49NSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmM9Y3FwIG1idHJlZT0wIHFwPTAAgAAAAD5liISscR8A+E4ACAACFoAAITAAAgsAAPgYCoKgoC+L4vi+KAvi+L4YfAEAACMzgABF9AAEUGUgABDJiXnf4AAAAARBmiKUAAAABEGaQpQAAAAEQZpilAAAAARBmoKU";else{if(!Modernizr.video.ogg)return void p("videoautoplay",!1);c.src="data:video/ogg;base64,T2dnUwACAAAAAAAAAABmnCATAAAAAHDEixYBKoB0aGVvcmEDAgEAAQABAAAQAAAQAAAAAAAFAAAAAQAAAAAAAAAAAGIAYE9nZ1MAAAAAAAAAAAAAZpwgEwEAAAACrA7TDlj///////////////+QgXRoZW9yYSsAAABYaXBoLk9yZyBsaWJ0aGVvcmEgMS4xIDIwMDkwODIyIChUaHVzbmVsZGEpAQAAABoAAABFTkNPREVSPWZmbXBlZzJ0aGVvcmEtMC4yOYJ0aGVvcmG+zSj3uc1rGLWpSUoQc5zmMYxSlKQhCDGMYhCEIQhAAAAAAAAAAAAAEW2uU2eSyPxWEvx4OVts5ir1aKtUKBMpJFoQ/nk5m41mUwl4slUpk4kkghkIfDwdjgajQYC8VioUCQRiIQh8PBwMhgLBQIg4FRba5TZ5LI/FYS/Hg5W2zmKvVoq1QoEykkWhD+eTmbjWZTCXiyVSmTiSSCGQh8PB2OBqNBgLxWKhQJBGIhCHw8HAyGAsFAiDgUCw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDAwPEhQUFQ0NDhESFRUUDg4PEhQVFRUOEBETFBUVFRARFBUVFRUVEhMUFRUVFRUUFRUVFRUVFRUVFRUVFRUVEAwLEBQZGxwNDQ4SFRwcGw4NEBQZHBwcDhATFhsdHRwRExkcHB4eHRQYGxwdHh4dGxwdHR4eHh4dHR0dHh4eHRALChAYKDM9DAwOExo6PDcODRAYKDlFOA4RFh0zV1A+EhYlOkRtZ00YIzdAUWhxXDFATldneXhlSFxfYnBkZ2MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEhIVGRoaGhoSFBYaGhoaGhUWGRoaGhoaGRoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhESFh8kJCQkEhQYIiQkJCQWGCEkJCQkJB8iJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQREhgvY2NjYxIVGkJjY2NjGBo4Y2NjY2MvQmNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRISEhUXGBkbEhIVFxgZGxwSFRcYGRscHRUXGBkbHB0dFxgZGxwdHR0YGRscHR0dHhkbHB0dHR4eGxwdHR0eHh4REREUFxocIBERFBcaHCAiERQXGhwgIiUUFxocICIlJRcaHCAiJSUlGhwgIiUlJSkcICIlJSUpKiAiJSUlKSoqEBAQFBgcICgQEBQYHCAoMBAUGBwgKDBAFBgcICgwQEAYHCAoMEBAQBwgKDBAQEBgICgwQEBAYIAoMEBAQGCAgAfF5cdH1e3Ow/L66wGmYnfIUbwdUTe3LMRbqON8B+5RJEvcGxkvrVUjTMrsXYhAnIwe0dTJfOYbWrDYyqUrz7dw/JO4hpmV2LsQQvkUeGq1BsZLx+cu5iV0e0eScJ91VIQYrmqfdVSK7GgjOU0oPaPOu5IcDK1mNvnD+K8LwS87f8Jx2mHtHnUkTGAurWZlNQa74ZLSFH9oF6FPGxzLsjQO5Qe0edcpttd7BXBSqMCL4k/4tFrHIPuEQ7m1/uIWkbDMWVoDdOSuRQ9286kvVUlQjzOE6VrNguN4oRXYGkgcnih7t13/9kxvLYKQezwLTrO44sVmMPgMqORo1E0sm1/9SludkcWHwfJwTSybR4LeAz6ugWVgRaY8mV/9SluQmtHrzsBtRF/wPY+X0JuYTs+ltgrXAmlk10xQHmTu9VSIAk1+vcvU4ml2oNzrNhEtQ3CysNP8UeR35wqpKUBdGdZMSjX4WVi8nJpdpHnbhzEIdx7mwf6W1FKAiucMXrWUWVjyRf23chNtR9mIzDoT/6ZLYailAjhFlZuvPtSeZ+2oREubDoWmT3TguY+JHPdRVSLKxfKH3vgNqJ/9emeEYikGXDFNzaLjvTeGAL61mogOoeG3y6oU4rW55ydoj0lUTSR/mmRhPmF86uwIfzp3FtiufQCmppaHDlGE0r2iTzXIw3zBq5hvaTldjG4CPb9wdxAme0SyedVKczJ9AtYbgPOzYKJvZZImsN7ecrxWZg5dR6ZLj/j4qpWsIA+vYwE+Tca9ounMIsrXMB4Stiib2SPQtZv+FVIpfEbzv8ncZoLBXc3YBqTG1HsskTTotZOYTG+oVUjLk6zhP8bg4RhMUNtfZdO7FdpBuXzhJ5Fh8IKlJG7wtD9ik8rWOJxy6iQ3NwzBpQ219mlyv+FLicYs2iJGSE0u2txzed++D61ZWCiHD/cZdQVCqkO2gJpdpNaObhnDfAPrT89RxdWFZ5hO3MseBSIlANppdZNIV/Rwe5eLTDvkfWKzFnH+QJ7m9QWV1KdwnuIwTNtZdJMoXBf74OhRnh2t+OTGL+AVUnIkyYY+QG7g9itHXyF3OIygG2s2kud679ZWKqSFa9n3IHD6MeLv1lZ0XyduRhiDRtrNnKoyiFVLcBm0ba5Yy3fQkDh4XsFE34isVpOzpa9nR8iCpS4HoxG2rJpnRhf3YboVa1PcRouh5LIJv/uQcPNd095ickTaiGBnWLKVWRc0OnYTSyex/n2FofEPnDG8y3PztHrzOLK1xo6RAml2k9owKajOC0Wr4D5x+3nA0UEhK2m198wuBHF3zlWWVKWLN1CHzLClUfuoYBcx4b1llpeBKmbayaR58njtE9onD66lUcsg0Spm2snsb+8HaJRn4dYcLbCuBuYwziB8/5U1C1DOOz2gZjSZtrLJk6vrLF3hwY4Io9xuT/ruUFRSBkNtUzTOWhjh26irLEPx4jPZL3Fo3QrReoGTTM21xYTT9oFdhTUIvjqTkfkvt0bzgVUjq/hOYY8j60IaO/0AzRBtqkTS6R5ellZd5uKdzzhb8BFlDdAcrwkE0rbXTOPB+7Y0FlZO96qFL4Ykg21StJs8qIW7h16H5hGiv8V2Cflau7QVDepTAHa6Lgt6feiEvJDM21StJsmOH/hynURrKxvUpQ8BH0JF7BiyG2qZpnL/7AOU66gt+reLEXY8pVOCQvSsBtqZTNM8bk9ohRcwD18o/WVkbvrceVKRb9I59IEKysjBeTMmmbA21xu/6iHadLRxuIzkLpi8wZYmmbbWi32RVAUjruxWlJ//iFxE38FI9hNKOoCdhwf5fDe4xZ81lgREhK2m1j78vW1CqkuMu/AjBNK210kzRUX/B+69cMMUG5bYrIeZxVSEZISmkzbXOi9yxwIfPgdsov7R71xuJ7rFcACjG/9PzApqFq7wEgzNJm2suWESPuwrQvejj7cbnQxMkxpm21lUYJL0fKmogPPqywn7e3FvB/FCNxPJ85iVUkCE9/tLKx31G4CgNtWTTPFhMvlu8G4/TrgaZttTChljfNJGgOT2X6EqpETy2tYd9cCBI4lIXJ1/3uVUllZEJz4baqGF64yxaZ+zPLYwde8Uqn1oKANtUrSaTOPHkhvuQP3bBlEJ/LFe4pqQOHUI8T8q7AXx3fLVBgSCVpMba55YxN3rv8U1Dv51bAPSOLlZWebkL8vSMGI21lJmmeVxPRwFlZF1CpqCN8uLwymaZyjbXHCRytogPN3o/n74CNykfT+qqRv5AQlHcRxYrC5KvGmbbUwmZY/29BvF6C1/93x4WVglXDLFpmbapmF89HKTogRwqqSlGbu+oiAkcWFbklC6Zhf+NtTLFpn8oWz+HsNRVSgIxZWON+yVyJlE5tq/+GWLTMutYX9ekTySEQPLVNQQ3OfycwJBM0zNtZcse7CvcKI0V/zh16Dr9OSA21MpmmcrHC+6pTAPHPwoit3LHHqs7jhFNRD6W8+EBGoSEoaZttTCZljfduH/fFisn+dRBGAZYtMzbVMwvul/T/crK1NQh8gN0SRRa9cOux6clC0/mDLFpmbarmF8/e6CopeOLCNW6S/IUUg3jJIYiAcDoMcGeRbOvuTPjXR/tyo79LK3kqqkbxkkMRAOB0GODPItnX3Jnxro/25Ud+llbyVVSN4ySGIgHA6DHBnkWzr7kz410f7cqO/Syt5KqpFVJwn6gBEvBM0zNtZcpGOEPiysW8vvRd2R0f7gtjhqUvXL+gWVwHm4XJDBiMpmmZtrLfPwd/IugP5+fKVSysH1EXreFAcEhelGmbbUmZY4Xdo1vQWVnK19P4RuEnbf0gQnR+lDCZlivNM22t1ESmopPIgfT0duOfQrsjgG4tPxli0zJmF5trdL1JDUIUT1ZXSqQDeR4B8mX3TrRro/2McGeUvLtwo6jIEKMkCUXWsLyZROd9P/rFYNtXPBli0z398iVUlVKAjFlY437JXImUTm2r/4ZYtMy61hf16RPJIU9nZ1MABAwAAAAAAAAAZpwgEwIAAABhp658BScAAAAAAADnUFBQXIDGXLhwtttNHDhw5OcpQRMETBEwRPduylKVB0HRdF0A"
-}}catch(f){return void p("videoautoplay",!1)}c.setAttribute("autoplay",""),c.style="display:none",t.appendChild(c),setTimeout(function(){c.addEventListener("playing",function(){e(!0)}),a=setTimeout(e,b)},0)}),Modernizr.addTest("videoloop","loop"in u("video")),Modernizr.addTest("videopreload","preload"in u("video")),Modernizr.addTest("webanimations","Animation"in a),Modernizr.addTest("webgl","WebGLRenderingContext"in a),Modernizr.addAsyncTest(function(){if(Modernizr.webglextensions=new Boolean(!1),Modernizr.webgl){var a,b,d;try{a=u("canvas"),b=a.getContext("webgl")||a.getContext("experimental-webgl"),d=b.getSupportedExtensions()}catch(e){return}b!==c&&(Modernizr.webglextensions=new Boolean(!0));for(var f=-1,g=d.length;++f<g;)Modernizr.webglextensions[d[f]]=!0;a=c}}),Modernizr.addTest("framed",a.location!=top.location),Modernizr.addAsyncTest(function(){try{var a="Modernizr",b=new Worker("data:text/javascript;base64,dGhpcy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cG9zdE1lc3NhZ2UoZS5kYXRhKX0=");b.onmessage=function(c){b.terminate(),p("dataworkers",a===c.data),b=null},b.onerror=function(){p("dataworkers",!1),b=null},setTimeout(function(){p("dataworkers",!1)},200),b.postMessage(a)}catch(c){setTimeout(function(){p("dataworkers",!1)},0)}}),Modernizr.addTest("sharedworkers","SharedWorker"in a),Modernizr.addTest("webworkers","Worker"in a),e(),f(s),delete r.addTest,delete r.addAsyncTest;for(var U=0;U<Modernizr._q.length;U++)Modernizr._q[U]();a.Modernizr=Modernizr}(this,document); \ No newline at end of file
diff --git a/www/js/lib/spin.js b/www/js/lib/spin.js
index e381b49..90c2d0f 120000
--- a/www/js/lib/spin.js
+++ b/www/js/lib/spin.js
@@ -1 +1 @@
-../../../spin.js/ \ No newline at end of file
+../../../spin.js \ No newline at end of file