var mod_pagespeed_cAHiv2cjSf = "/*\n * jQuery Cycle Plugin (with Transition Definitions)\n * Examples and documentation at: http://jquery.malsup.com/cycle/\n * Copyright (c) 2007-2009 M. Alsup\n * Version: 2.72 (09-SEP-2009)\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n * Requires: jQuery v1.2.6 or later\n *\n * Originally based on the work of:\n *	1) Matt Oakes\n *	2) Torsten Baldes (http://medienfreunde.com/lab/innerfade/)\n *	3) Benjamin Sterling (http://www.benjaminsterling.com/experiments/jqShuffle/)\n */\n(function($){var ver=\"2.72\";if($.support==undefined){$.support={opacity:!($.browser.msie)};}function debug(s){if($.fn.cycle.debug){log(s);}}function log(){if(window.console&&window.console.log){window.console.log(\"[cycle] \"+Array.prototype.join.call(arguments,\" \"));}}$.fn.cycle=function(options,arg2){var o={s:this.selector,c:this.context};if(this.length===0&&options!=\"stop\"){if(!$.isReady&&o.s){log(\"DOM not ready, queuing slideshow\");$(function(){$(o.s,o.c).cycle(options,arg2);});return this;}log(\"terminating; zero elements found by selector\"+($.isReady?\"\":\" (DOM not ready)\"));return this;}return this.each(function(){var opts=handleArguments(this,options,arg2);if(opts===false){return;}if(this.cycleTimeout){clearTimeout(this.cycleTimeout);}this.cycleTimeout=this.cyclePause=0;var $cont=$(this);var $slides=opts.slideExpr?$(opts.slideExpr,this):$cont.children();var els=$slides.get();if(els.length<2){log(\"terminating; too few slides: \"+els.length);return;}var opts2=buildOptions($cont,$slides,els,opts,o);if(opts2===false){return;}var startTime=opts2.continuous?10:getTimeout(opts2.currSlide,opts2.nextSlide,opts2,!opts2.rev);if(startTime){startTime+=(opts2.delay||0);if(startTime<10){startTime=10;}debug(\"first timeout: \"+startTime);this.cycleTimeout=setTimeout(function(){go(els,opts2,0,!opts2.rev);},startTime);}});};function handleArguments(cont,options,arg2){if(cont.cycleStop==undefined){cont.cycleStop=0;}if(options===undefined||options===null){options={};}if(options.constructor==String){switch(options){case\"stop\":cont.cycleStop++;if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);}cont.cycleTimeout=0;$(cont).removeData(\"cycle.opts\");return false;case\"pause\":cont.cyclePause=1;return false;case\"resume\":cont.cyclePause=0;if(arg2===true){options=$(cont).data(\"cycle.opts\");if(!options){log(\"options not found, can not resume\");return false;}if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);cont.cycleTimeout=0;}go(options.elements,options,1,1);}return false;case\"prev\":case\"next\":var opts=$(cont).data(\"cycle.opts\");if(!opts){log('options not found, \"prev/next\" ignored');return false;}$.fn.cycle[options](opts);return false;default:options={fx:options};}return options;}else{if(options.constructor==Number){var num=options;options=$(cont).data(\"cycle.opts\");if(!options){log(\"options not found, can not advance slide\");return false;}if(num<0||num>=options.elements.length){log(\"invalid slide index: \"+num);return false;}options.nextSlide=num;if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);cont.cycleTimeout=0;}if(typeof arg2==\"string\"){options.oneTimeFx=arg2;}go(options.elements,options,1,num>=options.currSlide);return false;}}return options;}function removeFilter(el,opts){if(!$.support.opacity&&opts.cleartype&&el.style.filter){try{el.style.removeAttribute(\"filter\");}catch(smother){}}}function buildOptions($cont,$slides,els,options,o){var opts=$.extend({},$.fn.cycle.defaults,options||{},$.metadata?$cont.metadata():$.meta?$cont.data():{});if(opts.autostop){opts.countdown=opts.autostopCount||els.length;}var cont=$cont[0];$cont.data(\"cycle.opts\",opts);opts.$cont=$cont;opts.stopCount=cont.cycleStop;opts.elements=els;opts.before=opts.before?[opts.before]:[];opts.after=opts.after?[opts.after]:[];opts.after.unshift(function(){opts.busy=0;});if(!$.support.opacity&&opts.cleartype){opts.after.push(function(){removeFilter(this,opts);});}if(opts.continuous){opts.after.push(function(){go(els,opts,0,!opts.rev);});}saveOriginalOpts(opts);if(!$.support.opacity&&opts.cleartype&&!opts.cleartypeNoBg){clearTypeFix($slides);}if($cont.css(\"position\")==\"static\"){$cont.css(\"position\",\"relative\");}if(opts.width){$cont.width(opts.width);}if(opts.height&&opts.height!=\"auto\"){$cont.height(opts.height);}if(opts.startingSlide){opts.startingSlide=parseInt(opts.startingSlide);}if(opts.random){opts.randomMap=[];for(var i=0;i<els.length;i++){opts.randomMap.push(i);}opts.randomMap.sort(function(a,b){return Math.random()-0.5;});opts.randomIndex=0;opts.startingSlide=opts.randomMap[0];}else{if(opts.startingSlide>=els.length){opts.startingSlide=0;}}opts.currSlide=opts.startingSlide=opts.startingSlide||0;var first=opts.startingSlide;$slides.css({position:\"absolute\",top:0,left:0}).hide().each(function(i){var z=first?i>=first?els.length-(i-first):first-i:els.length-i;$(this).css(\"z-index\",z);});$(els[first]).css(\"opacity\",1).show();removeFilter(els[first],opts);if(opts.fit&&opts.width){$slides.width(opts.width);}if(opts.fit&&opts.height&&opts.height!=\"auto\"){$slides.height(opts.height);}var reshape=opts.containerResize&&!$cont.innerHeight();if(reshape){var maxw=0,maxh=0;for(var j=0;j<els.length;j++){var $e=$(els[j]),e=$e[0],w=$e.outerWidth(),h=$e.outerHeight();if(!w){w=e.offsetWidth;}if(!h){h=e.offsetHeight;}maxw=w>maxw?w:maxw;maxh=h>maxh?h:maxh;}if(maxw>0&&maxh>0){$cont.css({width:maxw+\"px\",height:maxh+\"px\"});}}if(opts.pause){$cont.hover(function(){this.cyclePause++;},function(){this.cyclePause--;});}if(supportMultiTransitions(opts)===false){return false;}var requeue=false;options.requeueAttempts=options.requeueAttempts||0;$slides.each(function(){var $el=$(this);this.cycleH=(opts.fit&&opts.height)?opts.height:$el.height();this.cycleW=(opts.fit&&opts.width)?opts.width:$el.width();if($el.is(\"img\")){var loadingIE=($.browser.msie&&this.cycleW==28&&this.cycleH==30&&!this.complete);var loadingFF=($.browser.mozilla&&this.cycleW==34&&this.cycleH==19&&!this.complete);var loadingOp=($.browser.opera&&((this.cycleW==42&&this.cycleH==19)||(this.cycleW==37&&this.cycleH==17))&&!this.complete);var loadingOther=(this.cycleH==0&&this.cycleW==0&&!this.complete);if(loadingIE||loadingFF||loadingOp||loadingOther){if(o.s&&opts.requeueOnImageNotLoaded&&++options.requeueAttempts<100){log(options.requeueAttempts,\" - img slide not loaded, requeuing slideshow: \",this.src,this.cycleW,this.cycleH);setTimeout(function(){$(o.s,o.c).cycle(options);},opts.requeueTimeout);requeue=true;return false;}else{log(\"could not determine size of image: \"+this.src,this.cycleW,this.cycleH);}}}return true;});if(requeue){return false;}opts.cssBefore=opts.cssBefore||{};opts.animIn=opts.animIn||{};opts.animOut=opts.animOut||{};$slides.not(\":eq(\"+first+\")\").css(opts.cssBefore);if(opts.cssFirst){$($slides[first]).css(opts.cssFirst);}if(opts.timeout){opts.timeout=parseInt(opts.timeout);if(opts.speed.constructor==String){opts.speed=$.fx.speeds[opts.speed]||parseInt(opts.speed);}if(!opts.sync){opts.speed=opts.speed/2;}while((opts.timeout-opts.speed)<250){opts.timeout+=opts.speed;}}if(opts.easing){opts.easeIn=opts.easeOut=opts.easing;}if(!opts.speedIn){opts.speedIn=opts.speed;}if(!opts.speedOut){opts.speedOut=opts.speed;}opts.slideCount=els.length;opts.currSlide=opts.lastSlide=first;if(opts.random){opts.nextSlide=opts.currSlide;if(++opts.randomIndex==els.length){opts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{opts.nextSlide=opts.startingSlide>=(els.length-1)?0:opts.startingSlide+1;}if(!opts.multiFx){var init=$.fn.cycle.transitions[opts.fx];if($.isFunction(init)){init($cont,$slides,opts);}else{if(opts.fx!=\"custom\"&&!opts.multiFx){log(\"unknown transition: \"+opts.fx,\"; slideshow terminating\");return false;}}}var e0=$slides[first];if(opts.before.length){opts.before[0].apply(e0,[e0,e0,opts,true]);}if(opts.after.length>1){opts.after[1].apply(e0,[e0,e0,opts,true]);}if(opts.next){$(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?-1:1);});}if(opts.prev){$(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?1:-1);});}if(opts.pager){buildPager(els,opts);}exposeAddSlide(opts,els);return opts;}function saveOriginalOpts(opts){opts.original={before:[],after:[]};opts.original.cssBefore=$.extend({},opts.cssBefore);opts.original.cssAfter=$.extend({},opts.cssAfter);opts.original.animIn=$.extend({},opts.animIn);opts.original.animOut=$.extend({},opts.animOut);$.each(opts.before,function(){opts.original.before.push(this);});$.each(opts.after,function(){opts.original.after.push(this);});}function supportMultiTransitions(opts){var i,tx,txs=$.fn.cycle.transitions;if(opts.fx.indexOf(\",\")>0){opts.multiFx=true;opts.fxs=opts.fx.replace(/\\s*/g,\"\").split(\",\");for(i=0;i<opts.fxs.length;i++){var fx=opts.fxs[i];tx=txs[fx];if(!tx||!txs.hasOwnProperty(fx)||!$.isFunction(tx)){log(\"discarding unknown transition: \",fx);opts.fxs.splice(i,1);i--;}}if(!opts.fxs.length){log(\"No valid transitions named; slideshow terminating.\");return false;}}else{if(opts.fx==\"all\"){opts.multiFx=true;opts.fxs=[];for(p in txs){tx=txs[p];if(txs.hasOwnProperty(p)&&$.isFunction(tx)){opts.fxs.push(p);}}}}if(opts.multiFx&&opts.randomizeEffects){var r1=Math.floor(Math.random()*20)+30;for(i=0;i<r1;i++){var r2=Math.floor(Math.random()*opts.fxs.length);opts.fxs.push(opts.fxs.splice(r2,1)[0]);}debug(\"randomized fx sequence: \",opts.fxs);}return true;}function exposeAddSlide(opts,els){opts.addSlide=function(newSlide,prepend){var $s=$(newSlide),s=$s[0];if(!opts.autostopCount){opts.countdown++;}els[prepend?\"unshift\":\"push\"](s);if(opts.els){opts.els[prepend?\"unshift\":\"push\"](s);}opts.slideCount=els.length;$s.css(\"position\",\"absolute\");$s[prepend?\"prependTo\":\"appendTo\"](opts.$cont);if(prepend){opts.currSlide++;opts.nextSlide++;}if(!$.support.opacity&&opts.cleartype&&!opts.cleartypeNoBg){clearTypeFix($s);}if(opts.fit&&opts.width){$s.width(opts.width);}if(opts.fit&&opts.height&&opts.height!=\"auto\"){$slides.height(opts.height);}s.cycleH=(opts.fit&&opts.height)?opts.height:$s.height();s.cycleW=(opts.fit&&opts.width)?opts.width:$s.width();$s.css(opts.cssBefore);if(opts.pager){$.fn.cycle.createPagerAnchor(els.length-1,s,$(opts.pager),els,opts);}if($.isFunction(opts.onAddSlide)){opts.onAddSlide($s);}else{$s.hide();}};}$.fn.cycle.resetState=function(opts,fx){fx=fx||opts.fx;opts.before=[];opts.after=[];opts.cssBefore=$.extend({},opts.original.cssBefore);opts.cssAfter=$.extend({},opts.original.cssAfter);opts.animIn=$.extend({},opts.original.animIn);opts.animOut=$.extend({},opts.original.animOut);opts.fxFn=null;$.each(opts.original.before,function(){opts.before.push(this);});$.each(opts.original.after,function(){opts.after.push(this);});var init=$.fn.cycle.transitions[fx];if($.isFunction(init)){init(opts.$cont,$(opts.elements),opts);}};function go(els,opts,manual,fwd){if(manual&&opts.busy&&opts.manualTrump){$(els).stop(true,true);opts.busy=false;}if(opts.busy){return;}var p=opts.$cont[0],curr=els[opts.currSlide],next=els[opts.nextSlide];if(p.cycleStop!=opts.stopCount||p.cycleTimeout===0&&!manual){return;}if(!manual&&!p.cyclePause&&((opts.autostop&&(--opts.countdown<=0))||(opts.nowrap&&!opts.random&&opts.nextSlide<opts.currSlide))){if(opts.end){opts.end(opts);}return;}if(manual||!p.cyclePause){var fx=opts.fx;curr.cycleH=curr.cycleH||$(curr).height();curr.cycleW=curr.cycleW||$(curr).width();next.cycleH=next.cycleH||$(next).height();next.cycleW=next.cycleW||$(next).width();if(opts.multiFx){if(opts.lastFx==undefined||++opts.lastFx>=opts.fxs.length){opts.lastFx=0;}fx=opts.fxs[opts.lastFx];opts.currFx=fx;}if(opts.oneTimeFx){fx=opts.oneTimeFx;opts.oneTimeFx=null;}$.fn.cycle.resetState(opts,fx);if(opts.before.length){$.each(opts.before,function(i,o){if(p.cycleStop!=opts.stopCount){return;}o.apply(next,[curr,next,opts,fwd]);});}var after=function(){$.each(opts.after,function(i,o){if(p.cycleStop!=opts.stopCount){return;}o.apply(next,[curr,next,opts,fwd]);});};if(opts.nextSlide!=opts.currSlide){opts.busy=1;if(opts.fxFn){opts.fxFn(curr,next,opts,after,fwd);}else{if($.isFunction($.fn.cycle[opts.fx])){$.fn.cycle[opts.fx](curr,next,opts,after);}else{$.fn.cycle.custom(curr,next,opts,after,manual&&opts.fastOnEvent);}}}opts.lastSlide=opts.currSlide;if(opts.random){opts.currSlide=opts.nextSlide;if(++opts.randomIndex==els.length){opts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{var roll=(opts.nextSlide+1)==els.length;opts.nextSlide=roll?0:opts.nextSlide+1;opts.currSlide=roll?els.length-1:opts.nextSlide-1;}if(opts.pager){$.fn.cycle.updateActivePagerLink(opts.pager,opts.currSlide);}}var ms=0;if(opts.timeout&&!opts.continuous){ms=getTimeout(curr,next,opts,fwd);}else{if(opts.continuous&&p.cyclePause){ms=10;}}if(ms>0){p.cycleTimeout=setTimeout(function(){go(els,opts,0,!opts.rev);},ms);}}$.fn.cycle.updateActivePagerLink=function(pager,currSlide){$(pager).find(\"a\").removeClass(\"activeSlide\").filter(\"a:eq(\"+currSlide+\")\").addClass(\"activeSlide\");};function getTimeout(curr,next,opts,fwd){if(opts.timeoutFn){var t=opts.timeoutFn(curr,next,opts,fwd);while((t-opts.speed)<250){t+=opts.speed;}debug(\"calculated timeout: \"+t+\"; speed: \"+opts.speed);if(t!==false){return t;}}return opts.timeout;}$.fn.cycle.next=function(opts){advance(opts,opts.rev?-1:1);};$.fn.cycle.prev=function(opts){advance(opts,opts.rev?1:-1);};function advance(opts,val){var els=opts.elements;var p=opts.$cont[0],timeout=p.cycleTimeout;if(timeout){clearTimeout(timeout);p.cycleTimeout=0;}if(opts.random&&val<0){opts.randomIndex--;if(--opts.randomIndex==-2){opts.randomIndex=els.length-2;}else{if(opts.randomIndex==-1){opts.randomIndex=els.length-1;}}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{if(opts.random){if(++opts.randomIndex==els.length){opts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{opts.nextSlide=opts.currSlide+val;if(opts.nextSlide<0){if(opts.nowrap){return false;}opts.nextSlide=els.length-1;}else{if(opts.nextSlide>=els.length){if(opts.nowrap){return false;}opts.nextSlide=0;}}}}if($.isFunction(opts.prevNextClick)){opts.prevNextClick(val>0,opts.nextSlide,els[opts.nextSlide]);}go(els,opts,1,val>=0);return false;}function buildPager(els,opts){var $p=$(opts.pager);$.each(els,function(i,o){$.fn.cycle.createPagerAnchor(i,o,$p,els,opts);});$.fn.cycle.updateActivePagerLink(opts.pager,opts.startingSlide);}$.fn.cycle.createPagerAnchor=function(i,el,$p,els,opts){var a;if($.isFunction(opts.pagerAnchorBuilder)){a=opts.pagerAnchorBuilder(i,el);}else{a='<a href=\"#\">'+(i+1)+\"</a>\";}if(!a){return;}var $a=$(a);if($a.parents(\"body\").length===0){var arr=[];if($p.length>1){$p.each(function(){var $clone=$a.clone(true);$(this).append($clone);arr.push($clone);});$a=$(arr);}else{$a.appendTo($p);}}$a.bind(opts.pagerEvent,function(e){e.preventDefault();opts.nextSlide=i;var p=opts.$cont[0],timeout=p.cycleTimeout;if(timeout){clearTimeout(timeout);p.cycleTimeout=0;}if($.isFunction(opts.pagerClick)){opts.pagerClick(opts.nextSlide,els[opts.nextSlide]);}go(els,opts,1,opts.currSlide<i);return false;});if(opts.pagerEvent!=\"click\"){$a.click(function(){return false;});}if(opts.pauseOnPagerHover){$a.hover(function(){opts.$cont[0].cyclePause++;},function(){opts.$cont[0].cyclePause--;});}};$.fn.cycle.hopsFromLast=function(opts,fwd){var hops,l=opts.lastSlide,c=opts.currSlide;if(fwd){hops=c>l?c-l:opts.slideCount-l;}else{hops=c<l?l-c:l+opts.slideCount-c;}return hops;};function clearTypeFix($slides){function hex(s){s=parseInt(s).toString(16);return s.length<2?\"0\"+s:s;}function getBg(e){for(;e&&e.nodeName.toLowerCase()!=\"html\";e=e.parentNode){var v=$.css(e,\"background-color\");if(v.indexOf(\"rgb\")>=0){var rgb=v.match(/\\d+/g);return\"#\"+hex(rgb[0])+hex(rgb[1])+hex(rgb[2]);}if(v&&v!=\"transparent\"){return v;}}return\"#ffffff\";}$slides.each(function(){$(this).css(\"background-color\",getBg(this));});}$.fn.cycle.commonReset=function(curr,next,opts,w,h,rev){$(opts.elements).not(curr).hide();opts.cssBefore.opacity=1;opts.cssBefore.display=\"block\";if(w!==false&&next.cycleW>0){opts.cssBefore.width=next.cycleW;}if(h!==false&&next.cycleH>0){opts.cssBefore.height=next.cycleH;}opts.cssAfter=opts.cssAfter||{};opts.cssAfter.display=\"none\";$(curr).css(\"zIndex\",opts.slideCount+(rev===true?1:0));$(next).css(\"zIndex\",opts.slideCount+(rev===true?0:1));};$.fn.cycle.custom=function(curr,next,opts,cb,speedOverride){var $l=$(curr),$n=$(next);var speedIn=opts.speedIn,speedOut=opts.speedOut,easeIn=opts.easeIn,easeOut=opts.easeOut;$n.css(opts.cssBefore);if(speedOverride){if(typeof speedOverride==\"number\"){speedIn=speedOut=speedOverride;}else{speedIn=speedOut=1;}easeIn=easeOut=null;}var fn=function(){$n.animate(opts.animIn,speedIn,easeIn,cb);};$l.animate(opts.animOut,speedOut,easeOut,function(){if(opts.cssAfter){$l.css(opts.cssAfter);}if(!opts.sync){fn();}});if(opts.sync){fn();}};$.fn.cycle.transitions={fade:function($cont,$slides,opts){$slides.not(\":eq(\"+opts.currSlide+\")\").css(\"opacity\",0);opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts);opts.cssBefore.opacity=0;});opts.animIn={opacity:1};opts.animOut={opacity:0};opts.cssBefore={top:0,left:0};}};$.fn.cycle.ver=function(){return ver;};$.fn.cycle.defaults={fx:\"fade\",timeout:4000,timeoutFn:null,continuous:0,speed:1000,speedIn:null,speedOut:null,next:null,prev:null,prevNextClick:null,prevNextEvent:\"click\",pager:null,pagerClick:null,pagerEvent:\"click\",pagerAnchorBuilder:null,before:null,after:null,end:null,easing:null,easeIn:null,easeOut:null,shuffle:null,animIn:null,animOut:null,cssBefore:null,cssAfter:null,fxFn:null,height:\"auto\",startingSlide:0,sync:1,random:0,fit:0,containerResize:1,pause:0,pauseOnPagerHover:0,autostop:0,autostopCount:0,delay:0,slideExpr:null,cleartype:!$.support.opacity,cleartypeNoBg:false,nowrap:0,fastOnEvent:0,randomizeEffects:1,rev:0,manualTrump:true,requeueOnImageNotLoaded:true,requeueTimeout:250};})(jQuery);\n/*\n * jQuery Cycle Plugin Transition Definitions\n * This script is a plugin for the jQuery Cycle Plugin\n * Examples and documentation at: http://malsup.com/jquery/cycle/\n * Copyright (c) 2007-2008 M. Alsup\n * Version:	 2.72\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n */\n(function($){$.fn.cycle.transitions.none=function($cont,$slides,opts){opts.fxFn=function(curr,next,opts,after){$(next).show();$(curr).hide();after();};};$.fn.cycle.transitions.scrollUp=function($cont,$slides,opts){$cont.css(\"overflow\",\"hidden\");opts.before.push($.fn.cycle.commonReset);var h=$cont.height();opts.cssBefore={top:h,left:0};opts.cssFirst={top:0};opts.animIn={top:0};opts.animOut={top:-h};};$.fn.cycle.transitions.scrollDown=function($cont,$slides,opts){$cont.css(\"overflow\",\"hidden\");opts.before.push($.fn.cycle.commonReset);var h=$cont.height();opts.cssFirst={top:0};opts.cssBefore={top:-h,left:0};opts.animIn={top:0};opts.animOut={top:h};};$.fn.cycle.transitions.scrollLeft=function($cont,$slides,opts){$cont.css(\"overflow\",\"hidden\");opts.before.push($.fn.cycle.commonReset);var w=$cont.width();opts.cssFirst={left:0};opts.cssBefore={left:w,top:0};opts.animIn={left:0};opts.animOut={left:0-w};};$.fn.cycle.transitions.scrollRight=function($cont,$slides,opts){$cont.css(\"overflow\",\"hidden\");opts.before.push($.fn.cycle.commonReset);var w=$cont.width();opts.cssFirst={left:0};opts.cssBefore={left:-w,top:0};opts.animIn={left:0};opts.animOut={left:w};};$.fn.cycle.transitions.scrollHorz=function($cont,$slides,opts){$cont.css(\"overflow\",\"hidden\").width();opts.before.push(function(curr,next,opts,fwd){$.fn.cycle.commonReset(curr,next,opts);opts.cssBefore.left=fwd?(next.cycleW-1):(1-next.cycleW);opts.animOut.left=fwd?-curr.cycleW:curr.cycleW;});opts.cssFirst={left:0};opts.cssBefore={top:0};opts.animIn={left:0};opts.animOut={top:0};};$.fn.cycle.transitions.scrollVert=function($cont,$slides,opts){$cont.css(\"overflow\",\"hidden\");opts.before.push(function(curr,next,opts,fwd){$.fn.cycle.commonReset(curr,next,opts);opts.cssBefore.top=fwd?(1-next.cycleH):(next.cycleH-1);opts.animOut.top=fwd?curr.cycleH:-curr.cycleH;});opts.cssFirst={top:0};opts.cssBefore={left:0};opts.animIn={top:0};opts.animOut={left:0};};$.fn.cycle.transitions.slideX=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$(opts.elements).not(curr).hide();$.fn.cycle.commonReset(curr,next,opts,false,true);opts.animIn.width=next.cycleW;});opts.cssBefore={left:0,top:0,width:0};opts.animIn={width:\"show\"};opts.animOut={width:0};};$.fn.cycle.transitions.slideY=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$(opts.elements).not(curr).hide();$.fn.cycle.commonReset(curr,next,opts,true,false);opts.animIn.height=next.cycleH;});opts.cssBefore={left:0,top:0,height:0};opts.animIn={height:\"show\"};opts.animOut={height:0};};$.fn.cycle.transitions.shuffle=function($cont,$slides,opts){var i,w=$cont.css(\"overflow\",\"visible\").width();$slides.css({left:0,top:0});opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,true,true);});if(!opts.speedAdjusted){opts.speed=opts.speed/2;opts.speedAdjusted=true;}opts.random=0;opts.shuffle=opts.shuffle||{left:-w,top:15};opts.els=[];for(i=0;i<$slides.length;i++){opts.els.push($slides[i]);}for(i=0;i<opts.currSlide;i++){opts.els.push(opts.els.shift());}opts.fxFn=function(curr,next,opts,cb,fwd){var $el=fwd?$(curr):$(next);$(next).css(opts.cssBefore);var count=opts.slideCount;$el.animate(opts.shuffle,opts.speedIn,opts.easeIn,function(){var hops=$.fn.cycle.hopsFromLast(opts,fwd);for(var k=0;k<hops;k++){fwd?opts.els.push(opts.els.shift()):opts.els.unshift(opts.els.pop());}if(fwd){for(var i=0,len=opts.els.length;i<len;i++){$(opts.els[i]).css(\"z-index\",len-i+count);}}else{var z=$(curr).css(\"z-index\");$el.css(\"z-index\",parseInt(z)+1+count);}$el.animate({left:0,top:0},opts.speedOut,opts.easeOut,function(){$(fwd?this:curr).hide();if(cb){cb();}});});};opts.cssBefore={display:\"block\",opacity:1,top:0,left:0};};$.fn.cycle.transitions.turnUp=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,false);opts.cssBefore.top=next.cycleH;opts.animIn.height=next.cycleH;});opts.cssFirst={top:0};opts.cssBefore={left:0,height:0};opts.animIn={top:0};opts.animOut={height:0};};$.fn.cycle.transitions.turnDown=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,false);opts.animIn.height=next.cycleH;opts.animOut.top=curr.cycleH;});opts.cssFirst={top:0};opts.cssBefore={left:0,top:0,height:0};opts.animOut={height:0};};$.fn.cycle.transitions.turnLeft=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,false,true);opts.cssBefore.left=next.cycleW;opts.animIn.width=next.cycleW;});opts.cssBefore={top:0,width:0};opts.animIn={left:0};opts.animOut={width:0};};$.fn.cycle.transitions.turnRight=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,false,true);opts.animIn.width=next.cycleW;opts.animOut.left=curr.cycleW;});opts.cssBefore={top:0,left:0,width:0};opts.animIn={left:0};opts.animOut={width:0};};$.fn.cycle.transitions.zoom=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,false,false,true);opts.cssBefore.top=next.cycleH/2;opts.cssBefore.left=next.cycleW/2;opts.animIn={top:0,left:0,width:next.cycleW,height:next.cycleH};opts.animOut={width:0,height:0,top:curr.cycleH/2,left:curr.cycleW/2};});opts.cssFirst={top:0,left:0};opts.cssBefore={width:0,height:0};};$.fn.cycle.transitions.fadeZoom=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,false,false);opts.cssBefore.left=next.cycleW/2;opts.cssBefore.top=next.cycleH/2;opts.animIn={top:0,left:0,width:next.cycleW,height:next.cycleH};});opts.cssBefore={width:0,height:0};opts.animOut={opacity:0};};$.fn.cycle.transitions.blindX=function($cont,$slides,opts){var w=$cont.css(\"overflow\",\"hidden\").width();opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts);opts.animIn.width=next.cycleW;opts.animOut.left=curr.cycleW;});opts.cssBefore={left:w,top:0};opts.animIn={left:0};opts.animOut={left:w};};$.fn.cycle.transitions.blindY=function($cont,$slides,opts){var h=$cont.css(\"overflow\",\"hidden\").height();opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts);opts.animIn.height=next.cycleH;opts.animOut.top=curr.cycleH;});opts.cssBefore={top:h,left:0};opts.animIn={top:0};opts.animOut={top:h};};$.fn.cycle.transitions.blindZ=function($cont,$slides,opts){var h=$cont.css(\"overflow\",\"hidden\").height();var w=$cont.width();opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts);opts.animIn.height=next.cycleH;opts.animOut.top=curr.cycleH;});opts.cssBefore={top:h,left:w};opts.animIn={top:0,left:0};opts.animOut={top:h,left:w};};$.fn.cycle.transitions.growX=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,false,true);opts.cssBefore.left=this.cycleW/2;opts.animIn={left:0,width:this.cycleW};opts.animOut={left:0};});opts.cssBefore={width:0,top:0};};$.fn.cycle.transitions.growY=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,false);opts.cssBefore.top=this.cycleH/2;opts.animIn={top:0,height:this.cycleH};opts.animOut={top:0};});opts.cssBefore={height:0,left:0};};$.fn.cycle.transitions.curtainX=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,false,true,true);opts.cssBefore.left=next.cycleW/2;opts.animIn={left:0,width:this.cycleW};opts.animOut={left:curr.cycleW/2,width:0};});opts.cssBefore={top:0,width:0};};$.fn.cycle.transitions.curtainY=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,false,true);opts.cssBefore.top=next.cycleH/2;opts.animIn={top:0,height:next.cycleH};opts.animOut={top:curr.cycleH/2,height:0};});opts.cssBefore={left:0,height:0};};$.fn.cycle.transitions.cover=function($cont,$slides,opts){var d=opts.direction||\"left\";var w=$cont.css(\"overflow\",\"hidden\").width();var h=$cont.height();opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts);if(d==\"right\"){opts.cssBefore.left=-w;}else{if(d==\"up\"){opts.cssBefore.top=h;}else{if(d==\"down\"){opts.cssBefore.top=-h;}else{opts.cssBefore.left=w;}}}});opts.animIn={left:0,top:0};opts.animOut={opacity:1};opts.cssBefore={top:0,left:0};};$.fn.cycle.transitions.uncover=function($cont,$slides,opts){var d=opts.direction||\"left\";var w=$cont.css(\"overflow\",\"hidden\").width();var h=$cont.height();opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,true,true);if(d==\"right\"){opts.animOut.left=w;}else{if(d==\"up\"){opts.animOut.top=-h;}else{if(d==\"down\"){opts.animOut.top=h;}else{opts.animOut.left=-w;}}}});opts.animIn={left:0,top:0};opts.animOut={opacity:1};opts.cssBefore={top:0,left:0};};$.fn.cycle.transitions.toss=function($cont,$slides,opts){var w=$cont.css(\"overflow\",\"visible\").width();var h=$cont.height();opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,true,true);if(!opts.animOut.left&&!opts.animOut.top){opts.animOut={left:w*2,top:-h/2,opacity:0};}else{opts.animOut.opacity=0;}});opts.cssBefore={left:0,top:0};opts.animIn={left:0};};$.fn.cycle.transitions.wipe=function($cont,$slides,opts){var w=$cont.css(\"overflow\",\"hidden\").width();var h=$cont.height();opts.cssBefore=opts.cssBefore||{};var clip;if(opts.clip){if(/l2r/.test(opts.clip)){clip=\"rect(0px 0px \"+h+\"px 0px)\";}else{if(/r2l/.test(opts.clip)){clip=\"rect(0px \"+w+\"px \"+h+\"px \"+w+\"px)\";}else{if(/t2b/.test(opts.clip)){clip=\"rect(0px \"+w+\"px 0px 0px)\";}else{if(/b2t/.test(opts.clip)){clip=\"rect(\"+h+\"px \"+w+\"px \"+h+\"px 0px)\";}else{if(/zoom/.test(opts.clip)){var top=parseInt(h/2);var left=parseInt(w/2);clip=\"rect(\"+top+\"px \"+left+\"px \"+top+\"px \"+left+\"px)\";}}}}}}opts.cssBefore.clip=opts.cssBefore.clip||clip||\"rect(0px 0px 0px 0px)\";var d=opts.cssBefore.clip.match(/(\\d+)/g);var t=parseInt(d[0]),r=parseInt(d[1]),b=parseInt(d[2]),l=parseInt(d[3]);opts.before.push(function(curr,next,opts){if(curr==next){return;}var $curr=$(curr),$next=$(next);$.fn.cycle.commonReset(curr,next,opts,true,true,false);opts.cssAfter.display=\"block\";var step=1,count=parseInt((opts.speedIn/13))-1;(function f(){var tt=t?t-parseInt(step*(t/count)):0;var ll=l?l-parseInt(step*(l/count)):0;var bb=b<h?b+parseInt(step*((h-b)/count||1)):h;var rr=r<w?r+parseInt(step*((w-r)/count||1)):w;$next.css({clip:\"rect(\"+tt+\"px \"+rr+\"px \"+bb+\"px \"+ll+\"px)\"});(step++<=count)?setTimeout(f,13):$curr.css(\"display\",\"none\");})();});opts.cssBefore={display:\"block\",opacity:1,top:0,left:0};opts.animIn={left:0};opts.animOut={left:0};};})(jQuery);";
var mod_pagespeed_5R3RQFwJzG = "/*!\r\n * Copyright (c) 2010 Simo Kinnunen.\r\n * Licensed under the MIT license.\r\n *\r\n * @version ${Version}\r\n */\r\n\r\nvar Cufon = (function() {\r\n\r\n	var api = function() {\r\n		return api.replace.apply(null, arguments);\r\n	};\r\n\r\n	var DOM = api.DOM = {\r\n\r\n		ready: (function() {\r\n\r\n			var complete = false, readyStatus = { loaded: 1, complete: 1 };\r\n\r\n			var queue = [], perform = function() {\r\n				if (complete) return;\r\n				complete = true;\r\n				for (var fn; fn = queue.shift(); fn());\r\n			};\r\n\r\n			// Gecko, Opera, WebKit r26101+\r\n\r\n			if (document.addEventListener) {\r\n				document.addEventListener('DOMContentLoaded', perform, false);\r\n				window.addEventListener('pageshow', perform, false); // For cached Gecko pages\r\n			}\r\n\r\n			// Old WebKit, Internet Explorer\r\n\r\n			if (!window.opera && document.readyState) (function() {\r\n				readyStatus[document.readyState] ? perform() : setTimeout(arguments.callee, 10);\r\n			})();\r\n\r\n			// Internet Explorer\r\n\r\n			if (document.readyState && document.createStyleSheet) (function() {\r\n				try {\r\n					document.body.doScroll('left');\r\n					perform();\r\n				}\r\n				catch (e) {\r\n					setTimeout(arguments.callee, 1);\r\n				}\r\n			})();\r\n\r\n			addEvent(window, 'load', perform); // Fallback\r\n\r\n			return function(listener) {\r\n				if (!arguments.length) perform();\r\n				else complete ? listener() : queue.push(listener);\r\n			};\r\n\r\n		})(),\r\n\r\n		root: function() {\r\n			return document.documentElement || document.body;\r\n		}\r\n\r\n	};\r\n\r\n	var CSS = api.CSS = {\r\n\r\n		Size: function(value, base) {\r\n\r\n			this.value = parseFloat(value);\r\n			this.unit = String(value).match(/[a-z%]*$/)[0] || 'px';\r\n\r\n			this.convert = function(value) {\r\n				return value / base * this.value;\r\n			};\r\n\r\n			this.convertFrom = function(value) {\r\n				return value / this.value * base;\r\n			};\r\n\r\n			this.toString = function() {\r\n				return this.value + this.unit;\r\n			};\r\n\r\n		},\r\n\r\n		addClass: function(el, className) {\r\n			var current = el.className;\r\n			el.className = current + (current && ' ') + className;\r\n			return el;\r\n		},\r\n\r\n		color: cached(function(value) {\r\n			var parsed = {};\r\n			parsed.color = value.replace(/^rgba\\((.*?),\\s*([\\d.]+)\\)/, function($0, $1, $2) {\r\n				parsed.opacity = parseFloat($2);\r\n				return 'rgb(' + $1 + ')';\r\n			});\r\n			return parsed;\r\n		}),\r\n\r\n		// has no direct CSS equivalent.\r\n		// @see http://msdn.microsoft.com/en-us/library/system.windows.fontstretches.aspx\r\n		fontStretch: cached(function(value) {\r\n			if (typeof value == 'number') return value;\r\n			if (/%$/.test(value)) return parseFloat(value) / 100;\r\n			return {\r\n				'ultra-condensed': 0.5,\r\n				'extra-condensed': 0.625,\r\n				condensed: 0.75,\r\n				'semi-condensed': 0.875,\r\n				'semi-expanded': 1.125,\r\n				expanded: 1.25,\r\n				'extra-expanded': 1.5,\r\n				'ultra-expanded': 2\r\n			}[value] || 1;\r\n		}),\r\n\r\n		getStyle: function(el) {\r\n			var view = document.defaultView;\r\n			if (view && view.getComputedStyle) return new Style(view.getComputedStyle(el, null));\r\n			if (el.currentStyle) return new Style(el.currentStyle);\r\n			return new Style(el.style);\r\n		},\r\n\r\n		gradient: cached(function(value) {\r\n			var gradient = {\r\n				id: value,\r\n				type: value.match(/^-([a-z]+)-gradient\\(/)[1],\r\n				stops: []\r\n			}, colors = value.substr(value.indexOf('(')).match(/([\\d.]+=)?(#[a-f0-9]+|[a-z]+\\(.*?\\)|[a-z]+)/ig);\r\n			for (var i = 0, l = colors.length, stop; i < l; ++i) {\r\n				stop = colors[i].split('=', 2).reverse();\r\n				gradient.stops.push([ stop[1] || i / (l - 1), stop[0] ]);\r\n			}\r\n			return gradient;\r\n		}),\r\n\r\n		quotedList: cached(function(value) {\r\n			// doesn't work properly with empty quoted strings (\"\"), but\r\n			// it's not worth the extra code.\r\n			var list = [], re = /\\s*(([\"'])([\\s\\S]*?[^\\\\])\\2|[^,]+)\\s*/g, match;\r\n			while (match = re.exec(value)) list.push(match[3] || match[1]);\r\n			return list;\r\n		}),\r\n\r\n		recognizesMedia: cached(function(media) {\r\n			var el = document.createElement('style'), sheet, container, supported;\r\n			el.type = 'text/css';\r\n			el.media = media;\r\n			try { // this is cached anyway\r\n				el.appendChild(document.createTextNode('/**/'));\r\n			} catch (e) {}\r\n			container = elementsByTagName('head')[0];\r\n			container.insertBefore(el, container.firstChild);\r\n			sheet = (el.sheet || el.styleSheet);\r\n			supported = sheet && !sheet.disabled;\r\n			container.removeChild(el);\r\n			return supported;\r\n		}),\r\n\r\n		removeClass: function(el, className) {\r\n			var re = RegExp('(?:^|\\\\s+)' + className +  '(?=\\\\s|$)', 'g');\r\n			el.className = el.className.replace(re, '');\r\n			return el;\r\n		},\r\n\r\n		supports: function(property, value) {\r\n			var checker = document.createElement('span').style;\r\n			if (checker[property] === undefined) return false;\r\n			checker[property] = value;\r\n			return checker[property] === value;\r\n		},\r\n\r\n		textAlign: function(word, style, position, wordCount) {\r\n			if (style.get('textAlign') == 'right') {\r\n				if (position > 0) word = ' ' + word;\r\n			}\r\n			else if (position < wordCount - 1) word += ' ';\r\n			return word;\r\n		},\r\n\r\n		textShadow: cached(function(value) {\r\n			if (value == 'none') return null;\r\n			var shadows = [], currentShadow = {}, result, offCount = 0;\r\n			var re = /(#[a-f0-9]+|[a-z]+\\(.*?\\)|[a-z]+)|(-?[\\d.]+[a-z%]*)|,/ig;\r\n			while (result = re.exec(value)) {\r\n				if (result[0] == ',') {\r\n					shadows.push(currentShadow);\r\n					currentShadow = {};\r\n					offCount = 0;\r\n				}\r\n				else if (result[1]) {\r\n					currentShadow.color = result[1];\r\n				}\r\n				else {\r\n					currentShadow[[ 'offX', 'offY', 'blur' ][offCount++]] = result[2];\r\n				}\r\n			}\r\n			shadows.push(currentShadow);\r\n			return shadows;\r\n		}),\r\n\r\n		textTransform: (function() {\r\n			var map = {\r\n				uppercase: function(s) {\r\n					return s.toUpperCase();\r\n				},\r\n				lowercase: function(s) {\r\n					return s.toLowerCase();\r\n				},\r\n				capitalize: function(s) {\r\n					return s.replace(/(?:^|\\s)./g, function($0) {\r\n						return $0.toUpperCase();\r\n					});\r\n				}\r\n			};\r\n			return function(text, style) {\r\n				var transform = map[style.get('textTransform')];\r\n				return transform ? transform(text) : text;\r\n			};\r\n		})(),\r\n\r\n		whiteSpace: (function() {\r\n			var ignore = {\r\n				inline: 1,\r\n				'inline-block': 1,\r\n				'run-in': 1\r\n			};\r\n			var wsStart = /^\\s+/, wsEnd = /\\s+$/;\r\n			return function(text, style, node, previousElement, simple) {\r\n				if (simple) return text.replace(wsStart, '').replace(wsEnd, ''); // @fixme too simple\r\n				if (previousElement) {\r\n					if (previousElement.nodeName.toLowerCase() == 'br') {\r\n						text = text.replace(wsStart, '');\r\n					}\r\n				}\r\n				if (ignore[style.get('display')]) return text;\r\n				if (!node.previousSibling) text = text.replace(wsStart, '');\r\n				if (!node.nextSibling) text = text.replace(wsEnd, '');\r\n				return text;\r\n			};\r\n		})()\r\n\r\n	};\r\n\r\n	CSS.ready = (function() {\r\n\r\n		// don't do anything in Safari 2 (it doesn't recognize any media type)\r\n		var complete = !CSS.recognizesMedia('all'), hasLayout = false;\r\n\r\n		var queue = [], perform = function() {\r\n			complete = true;\r\n			for (var fn; fn = queue.shift(); fn());\r\n		};\r\n\r\n		var links = elementsByTagName('link'), styles = elementsByTagName('style');\r\n\r\n		function isContainerReady(el) {\r\n			return el.disabled || isSheetReady(el.sheet, el.media || 'screen');\r\n		}\r\n\r\n		function isSheetReady(sheet, media) {\r\n			// in Opera sheet.disabled is true when it's still loading,\r\n			// even though link.disabled is false. they stay in sync if\r\n			// set manually.\r\n			if (!CSS.recognizesMedia(media || 'all')) return true;\r\n			if (!sheet || sheet.disabled) return false;\r\n			try {\r\n				var rules = sheet.cssRules, rule;\r\n				if (rules) {\r\n					// needed for Safari 3 and Chrome 1.0.\r\n					// in standards-conforming browsers cssRules contains @-rules.\r\n					// Chrome 1.0 weirdness: rules[<number larger than .length - 1>]\r\n					// returns the last rule, so a for loop is the only option.\r\n					search: for (var i = 0, l = rules.length; rule = rules[i], i < l; ++i) {\r\n						switch (rule.type) {\r\n							case 2: // @charset\r\n								break;\r\n							case 3: // @import\r\n								if (!isSheetReady(rule.styleSheet, rule.media.mediaText)) return false;\r\n								break;\r\n							default:\r\n								// only @charset can precede @import\r\n								break search;\r\n						}\r\n					}\r\n				}\r\n			}\r\n			catch (e) {} // probably a style sheet from another domain\r\n			return true;\r\n		}\r\n\r\n		function allStylesLoaded() {\r\n			// Internet Explorer's style sheet model, there's no need to do anything\r\n			if (document.createStyleSheet) return true;\r\n			// standards-compliant browsers\r\n			var el, i;\r\n			for (i = 0; el = links[i]; ++i) {\r\n				if (el.rel.toLowerCase() == 'stylesheet' && !isContainerReady(el)) return false;\r\n			}\r\n			for (i = 0; el = styles[i]; ++i) {\r\n				if (!isContainerReady(el)) return false;\r\n			}\r\n			return true;\r\n		}\r\n\r\n		DOM.ready(function() {\r\n			// getComputedStyle returns null in Gecko if used in an iframe with display: none\r\n			if (!hasLayout) hasLayout = CSS.getStyle(document.body).isUsable();\r\n			if (complete || (hasLayout && allStylesLoaded())) perform();\r\n			else setTimeout(arguments.callee, 10);\r\n		});\r\n\r\n		return function(listener) {\r\n			if (complete) listener();\r\n			else queue.push(listener);\r\n		};\r\n\r\n	})();\r\n\r\n	function Font(data) {\r\n\r\n		var face = this.face = data.face, wordSeparators = {\r\n			'\\u0020': 1,\r\n			'\\u00a0': 1,\r\n			'\\u3000': 1\r\n		};\r\n\r\n		this.glyphs = (function(glyphs) {\r\n			var key, fallbacks = {\r\n				'\\u2011': '\\u002d',\r\n				'\\u00ad': '\\u2011'\r\n			};\r\n			for (key in fallbacks) {\r\n				if (!hasOwnProperty(fallbacks, key)) continue;\r\n				if (!glyphs[key]) glyphs[key] = glyphs[fallbacks[key]];\r\n			}\r\n			return glyphs;\r\n		})(data.glyphs);\r\n\r\n		this.w = data.w;\r\n		this.baseSize = parseInt(face['units-per-em'], 10);\r\n\r\n		this.family = face['font-family'].toLowerCase();\r\n		this.weight = face['font-weight'];\r\n		this.style = face['font-style'] || 'normal';\r\n\r\n		this.viewBox = (function () {\r\n			var parts = face.bbox.split(/\\s+/);\r\n			var box = {\r\n				minX: parseInt(parts[0], 10),\r\n				minY: parseInt(parts[1], 10),\r\n				maxX: parseInt(parts[2], 10),\r\n				maxY: parseInt(parts[3], 10)\r\n			};\r\n			box.width = box.maxX - box.minX;\r\n			box.height = box.maxY - box.minY;\r\n			box.toString = function() {\r\n				return [ this.minX, this.minY, this.width, this.height ].join(' ');\r\n			};\r\n			return box;\r\n		})();\r\n\r\n		this.ascent = -parseInt(face.ascent, 10);\r\n		this.descent = -parseInt(face.descent, 10);\r\n\r\n		this.height = -this.ascent + this.descent;\r\n\r\n		this.spacing = function(chars, letterSpacing, wordSpacing) {\r\n			var glyphs = this.glyphs, glyph,\r\n				kerning, k,\r\n				jumps = [],\r\n				width = 0, w,\r\n				i = -1, j = -1, chr;\r\n			while (chr = chars[++i]) {\r\n				glyph = glyphs[chr] || this.missingGlyph;\r\n				if (!glyph) continue;\r\n				if (kerning) {\r\n					width -= k = kerning[chr] || 0;\r\n					jumps[j] -= k;\r\n				}\r\n				w = glyph.w;\r\n				if (isNaN(w)) w = +this.w; // may have been a String in old fonts\r\n				if (w > 0) {\r\n					w += letterSpacing;\r\n					if (wordSeparators[chr]) w += wordSpacing;\r\n				}\r\n				width += jumps[++j] = ~~w; // get rid of decimals\r\n				kerning = glyph.k;\r\n			}\r\n			jumps.total = width;\r\n			return jumps;\r\n		};\r\n\r\n	}\r\n\r\n	function FontFamily() {\r\n\r\n		var styles = {}, mapping = {\r\n			oblique: 'italic',\r\n			italic: 'oblique'\r\n		};\r\n\r\n		this.add = function(font) {\r\n			(styles[font.style] || (styles[font.style] = {}))[font.weight] = font;\r\n		};\r\n\r\n		this.get = function(style, weight) {\r\n			var weights = styles[style] || styles[mapping[style]]\r\n				|| styles.normal || styles.italic || styles.oblique;\r\n			if (!weights) return null;\r\n			// we don't have to worry about \"bolder\" and \"lighter\"\r\n			// because IE's currentStyle returns a numeric value for it,\r\n			// and other browsers use the computed value anyway\r\n			weight = {\r\n				normal: 400,\r\n				bold: 700\r\n			}[weight] || parseInt(weight, 10);\r\n			if (weights[weight]) return weights[weight];\r\n			// http://www.w3.org/TR/CSS21/fonts.html#propdef-font-weight\r\n			// Gecko uses x99/x01 for lighter/bolder\r\n			var up = {\r\n				1: 1,\r\n				99: 0\r\n			}[weight % 100], alts = [], min, max;\r\n			if (up === undefined) up = weight > 400;\r\n			if (weight == 500) weight = 400;\r\n			for (var alt in weights) {\r\n				if (!hasOwnProperty(weights, alt)) continue;\r\n				alt = parseInt(alt, 10);\r\n				if (!min || alt < min) min = alt;\r\n				if (!max || alt > max) max = alt;\r\n				alts.push(alt);\r\n			}\r\n			if (weight < min) weight = min;\r\n			if (weight > max) weight = max;\r\n			alts.sort(function(a, b) {\r\n				return (up\r\n					? (a >= weight && b >= weight) ? a < b : a > b\r\n					: (a <= weight && b <= weight) ? a > b : a < b) ? -1 : 1;\r\n			});\r\n			return weights[alts[0]];\r\n		};\r\n\r\n	}\r\n\r\n	function HoverHandler() {\r\n\r\n		function contains(node, anotherNode) {\r\n			try {\r\n				if (node.contains) return node.contains(anotherNode);\r\n				return node.compareDocumentPosition(anotherNode) & 16;\r\n			}\r\n			catch(e) {} // probably a XUL element such as a scrollbar\r\n			return false;\r\n		}\r\n\r\n		function onOverOut(e) {\r\n			var related = e.relatedTarget;\r\n			// there might be no relatedTarget if the element is right next\r\n			// to the window frame\r\n			if (related && contains(this, related)) return;\r\n			trigger(this, e.type == 'mouseover');\r\n		}\r\n\r\n		function onEnterLeave(e) {\r\n			trigger(this, e.type == 'mouseenter');\r\n		}\r\n\r\n		function trigger(el, hoverState) {\r\n			// A timeout is needed so that the event can actually \"happen\"\r\n			// before replace is triggered. This ensures that styles are up\r\n			// to date.\r\n			setTimeout(function() {\r\n				var options = sharedStorage.get(el).options;\r\n				api.replace(el, hoverState ? merge(options, options.hover) : options, true);\r\n			}, 10);\r\n		}\r\n\r\n		this.attach = function(el) {\r\n			if (el.onmouseenter === undefined) {\r\n				addEvent(el, 'mouseover', onOverOut);\r\n				addEvent(el, 'mouseout', onOverOut);\r\n			}\r\n			else {\r\n				addEvent(el, 'mouseenter', onEnterLeave);\r\n				addEvent(el, 'mouseleave', onEnterLeave);\r\n			}\r\n		};\r\n\r\n	}\r\n\r\n	function ReplaceHistory() {\r\n\r\n		var list = [], map = {};\r\n\r\n		function filter(keys) {\r\n			var values = [], key;\r\n			for (var i = 0; key = keys[i]; ++i) values[i] = list[map[key]];\r\n			return values;\r\n		}\r\n\r\n		this.add = function(key, args) {\r\n			map[key] = list.push(args) - 1;\r\n		};\r\n\r\n		this.repeat = function() {\r\n			var snapshot = arguments.length ? filter(arguments) : list, args;\r\n			for (var i = 0; args = snapshot[i++];) api.replace(args[0], args[1], true);\r\n		};\r\n\r\n	}\r\n\r\n	function Storage() {\r\n\r\n		var map = {}, at = 0;\r\n\r\n		function identify(el) {\r\n			return el.cufid || (el.cufid = ++at);\r\n		}\r\n\r\n		this.get = function(el) {\r\n			var id = identify(el);\r\n			return map[id] || (map[id] = {});\r\n		};\r\n\r\n	}\r\n\r\n	function Style(style) {\r\n\r\n		var custom = {}, sizes = {};\r\n\r\n		this.extend = function(styles) {\r\n			for (var property in styles) {\r\n				if (hasOwnProperty(styles, property)) custom[property] = styles[property];\r\n			}\r\n			return this;\r\n		};\r\n\r\n		this.get = function(property) {\r\n			return custom[property] != undefined ? custom[property] : style[property];\r\n		};\r\n\r\n		this.getSize = function(property, base) {\r\n			return sizes[property] || (sizes[property] = new CSS.Size(this.get(property), base));\r\n		};\r\n\r\n		this.isUsable = function() {\r\n			return !!style;\r\n		};\r\n\r\n	}\r\n\r\n	function addEvent(el, type, listener) {\r\n		if (el.addEventListener) {\r\n			el.addEventListener(type, listener, false);\r\n		}\r\n		else if (el.attachEvent) {\r\n			el.attachEvent('on' + type, function() {\r\n				return listener.call(el, window.event);\r\n			});\r\n		}\r\n	}\r\n\r\n	function attach(el, options) {\r\n		var storage = sharedStorage.get(el);\r\n		if (storage.options) return el;\r\n		if (options.hover && options.hoverables[el.nodeName.toLowerCase()]) {\r\n			hoverHandler.attach(el);\r\n		}\r\n		storage.options = options;\r\n		return el;\r\n	}\r\n\r\n	function cached(fun) {\r\n		var cache = {};\r\n		return function(key) {\r\n			if (!hasOwnProperty(cache, key)) cache[key] = fun.apply(null, arguments);\r\n			return cache[key];\r\n		};\r\n	}\r\n\r\n	function getFont(el, style) {\r\n		var families = CSS.quotedList(style.get('fontFamily').toLowerCase()), family;\r\n		for (var i = 0; family = families[i]; ++i) {\r\n			if (fonts[family]) return fonts[family].get(style.get('fontStyle'), style.get('fontWeight'));\r\n		}\r\n		return null;\r\n	}\r\n\r\n	function elementsByTagName(query) {\r\n		return document.getElementsByTagName(query);\r\n	}\r\n\r\n	function hasOwnProperty(obj, property) {\r\n		return obj.hasOwnProperty(property);\r\n	}\r\n\r\n	function merge() {\r\n		var merged = {}, arg, key;\r\n		for (var i = 0, l = arguments.length; arg = arguments[i], i < l; ++i) {\r\n			for (key in arg) {\r\n				if (hasOwnProperty(arg, key)) merged[key] = arg[key];\r\n			}\r\n		}\r\n		return merged;\r\n	}\r\n\r\n	function process(font, text, style, options, node, el) {\r\n		var fragment = document.createDocumentFragment(), processed;\r\n		if (text === '') return fragment;\r\n		var separate = options.separate;\r\n		var parts = text.split(separators[separate]), needsAligning = (separate == 'words');\r\n		if (needsAligning && HAS_BROKEN_REGEXP) {\r\n			// @todo figure out a better way to do this\r\n			if (/^\\s/.test(text)) parts.unshift('');\r\n			if (/\\s$/.test(text)) parts.push('');\r\n		}\r\n		for (var i = 0, l = parts.length; i < l; ++i) {\r\n			processed = engines[options.engine](font,\r\n				needsAligning ? CSS.textAlign(parts[i], style, i, l) : parts[i],\r\n				style, options, node, el, i < l - 1);\r\n			if (processed) fragment.appendChild(processed);\r\n		}\r\n		return fragment;\r\n	}\r\n\r\n	function replaceElement(el, options) {\r\n		var name = el.nodeName.toLowerCase();\r\n		if (options.ignore[name]) return;\r\n		if (options.onBeforeReplace) options.onBeforeReplace(el, options);\r\n		var replace = !options.textless[name], simple = (options.trim === 'simple');\r\n		var style = CSS.getStyle(attach(el, options)).extend(options);\r\n		// may cause issues if the element contains other elements\r\n		// with larger fontSize, however such cases are rare and can\r\n		// be fixed by using a more specific selector\r\n		if (parseFloat(style.get('fontSize')) === 0) return;\r\n		var font = getFont(el, style), node, type, next, anchor, text, lastElement;\r\n		var isShy = options.softHyphens, anyShy = false, pos, shy, reShy = /\\u00ad/g;\r\n		var modifyText = options.modifyText;\r\n		if (!font) return;\r\n		for (node = el.firstChild; node; node = next) {\r\n			type = node.nodeType;\r\n			next = node.nextSibling;\r\n			if (replace && type == 3) {\r\n				if (isShy && el.nodeName.toLowerCase() != TAG_SHY) {\r\n					pos = node.data.indexOf('\\u00ad');\r\n					if (pos >= 0) {\r\n						node.splitText(pos);\r\n						next = node.nextSibling;\r\n						next.deleteData(0, 1);\r\n						shy = document.createElement(TAG_SHY);\r\n						shy.appendChild(document.createTextNode('\\u00ad'));\r\n						el.insertBefore(shy, next);\r\n						next = shy;\r\n						anyShy = true;\r\n					}\r\n				}\r\n				// Node.normalize() is broken in IE 6, 7, 8\r\n				if (anchor) {\r\n					anchor.appendData(node.data);\r\n					el.removeChild(node);\r\n				}\r\n				else anchor = node;\r\n				if (next) continue;\r\n			}\r\n			if (anchor) {\r\n				text = anchor.data;\r\n				if (!isShy) text = text.replace(reShy, '');\r\n				text = CSS.whiteSpace(text, style, anchor, lastElement, simple);\r\n				// modify text only on the first replace\r\n				if (modifyText) text = modifyText(text, anchor, el, options);\r\n				el.replaceChild(process(font, text, style, options, node, el), anchor);\r\n				anchor = null;\r\n			}\r\n			if (type == 1) {\r\n				if (node.firstChild) {\r\n					if (node.nodeName.toLowerCase() == 'cufon') {\r\n						engines[options.engine](font, null, style, options, node, el);\r\n					}\r\n					else arguments.callee(node, options);\r\n				}\r\n				lastElement = node;\r\n			}\r\n		}\r\n		if (isShy && anyShy) {\r\n			updateShy(el);\r\n			if (!trackingShy) addEvent(window, 'resize', updateShyOnResize);\r\n			trackingShy = true;\r\n		}\r\n		if (options.onAfterReplace) options.onAfterReplace(el, options);\r\n	}\r\n\r\n	function updateShy(context) {\r\n		var shys, shy, parent, glue, newGlue, next, prev, i;\r\n		shys = context.getElementsByTagName(TAG_SHY);\r\n		// unfortunately there doesn't seem to be any easy\r\n		// way to avoid having to loop through the shys twice.\r\n		for (i = 0; shy = shys[i]; ++i) {\r\n			shy.className = C_SHY_DISABLED;\r\n			glue = parent = shy.parentNode;\r\n			if (glue.nodeName.toLowerCase() != TAG_GLUE) {\r\n				newGlue = document.createElement(TAG_GLUE);\r\n				newGlue.appendChild(shy.previousSibling);\r\n				parent.insertBefore(newGlue, shy);\r\n				newGlue.appendChild(shy);\r\n			}\r\n			else {\r\n				// get rid of double glue (edge case fix)\r\n				glue = glue.parentNode;\r\n				if (glue.nodeName.toLowerCase() == TAG_GLUE) {\r\n					parent = glue.parentNode;\r\n					while (glue.firstChild) {\r\n						parent.insertBefore(glue.firstChild, glue);\r\n					}\r\n					parent.removeChild(glue);\r\n				}\r\n			}\r\n		}\r\n		for (i = 0; shy = shys[i]; ++i) {\r\n			shy.className = '';\r\n			glue = shy.parentNode;\r\n			parent = glue.parentNode;\r\n			next = glue.nextSibling || parent.nextSibling;\r\n			// make sure we're comparing same types\r\n			prev = (next.nodeName.toLowerCase() == TAG_GLUE) ? glue : shy.previousSibling;\r\n			if (prev.offsetTop >= next.offsetTop) {\r\n				shy.className = C_SHY_DISABLED;\r\n				if (prev.offsetTop < next.offsetTop) {\r\n					// we have an annoying edge case, double the glue\r\n					newGlue = document.createElement(TAG_GLUE);\r\n					parent.insertBefore(newGlue, glue);\r\n					newGlue.appendChild(glue);\r\n					newGlue.appendChild(next);\r\n				}\r\n			}\r\n		}\r\n	}\r\n\r\n	function updateShyOnResize() {\r\n		if (ignoreResize) return; // needed for IE\r\n		CSS.addClass(DOM.root(), C_VIEWPORT_RESIZING);\r\n		clearTimeout(shyTimer);\r\n		shyTimer = setTimeout(function() {\r\n			ignoreResize = true;\r\n			CSS.removeClass(DOM.root(), C_VIEWPORT_RESIZING);\r\n			updateShy(document);\r\n			ignoreResize = false;\r\n		}, 100);\r\n	}\r\n\r\n	var HAS_BROKEN_REGEXP = ' '.split(/\\s+/).length == 0;\r\n	var TAG_GLUE = 'cufonglue';\r\n	var TAG_SHY = 'cufonshy';\r\n	var C_SHY_DISABLED = 'cufon-shy-disabled';\r\n	var C_VIEWPORT_RESIZING = 'cufon-viewport-resizing';\r\n\r\n	var sharedStorage = new Storage();\r\n	var hoverHandler = new HoverHandler();\r\n	var replaceHistory = new ReplaceHistory();\r\n	var initialized = false;\r\n	var trackingShy = false;\r\n	var shyTimer;\r\n	var ignoreResize = false;\r\n\r\n	var engines = {}, fonts = {}, defaultOptions = {\r\n		autoDetect: false,\r\n		engine: null,\r\n		//fontScale: 1,\r\n		//fontScaling: false,\r\n		forceHitArea: false,\r\n		hover: false,\r\n		hoverables: {\r\n			a: true\r\n		},\r\n		ignore: {\r\n			applet: 1,\r\n			canvas: 1,\r\n			col: 1,\r\n			colgroup: 1,\r\n			head: 1,\r\n			iframe: 1,\r\n			map: 1,\r\n			noscript: 1,\r\n			optgroup: 1,\r\n			option: 1,\r\n			script: 1,\r\n			select: 1,\r\n			style: 1,\r\n			textarea: 1,\r\n			title: 1,\r\n			pre: 1\r\n		},\r\n		modifyText: null,\r\n		onAfterReplace: null,\r\n		onBeforeReplace: null,\r\n		printable: true,\r\n		//rotation: 0,\r\n		//selectable: false,\r\n		selector: (\r\n				window.Sizzle\r\n			||	(window.jQuery && function(query) { return jQuery(query); }) // avoid noConflict issues\r\n			||	(window.dojo && dojo.query)\r\n			||	(window.glow && glow.dom && glow.dom.get)\r\n			||	(window.Ext && Ext.query)\r\n			||	(window.YAHOO && YAHOO.util && YAHOO.util.Selector && YAHOO.util.Selector.query)\r\n			||	(window.$$ && function(query) { return $$(query); })\r\n			||	(window.$ && function(query) { return $(query); })\r\n			||	(document.querySelectorAll && function(query) { return document.querySelectorAll(query); })\r\n			||	elementsByTagName\r\n		),\r\n		separate: 'words', // 'none' and 'characters' are also accepted\r\n		softHyphens: true,\r\n		textless: {\r\n			dl: 1,\r\n			html: 1,\r\n			ol: 1,\r\n			table: 1,\r\n			tbody: 1,\r\n			thead: 1,\r\n			tfoot: 1,\r\n			tr: 1,\r\n			ul: 1\r\n		},\r\n		textShadow: 'none',\r\n		trim: 'advanced'\r\n	};\r\n\r\n	var separators = {\r\n		// The first pattern may cause unicode characters above\r\n		// code point 255 to be removed in Safari 3.0. Luckily enough\r\n		// Safari 3.0 does not include non-breaking spaces in \\s, so\r\n		// we can just use a simple alternative pattern.\r\n		words: /\\s/.test('\\u00a0') ? /[^\\S\\u00a0]+/ : /\\s+/,\r\n		characters: '',\r\n		none: /^/\r\n	};\r\n\r\n	api.now = function() {\r\n		DOM.ready();\r\n		return api;\r\n	};\r\n\r\n	api.refresh = function() {\r\n		replaceHistory.repeat.apply(replaceHistory, arguments);\r\n		return api;\r\n	};\r\n\r\n	api.registerEngine = function(id, engine) {\r\n		if (!engine) return api;\r\n		engines[id] = engine;\r\n		return api.set('engine', id);\r\n	};\r\n\r\n	api.registerFont = function(data) {\r\n		if (!data) return api;\r\n		var font = new Font(data), family = font.family;\r\n		if (!fonts[family]) fonts[family] = new FontFamily();\r\n		fonts[family].add(font);\r\n		return api.set('fontFamily', '\"' + family + '\"');\r\n	};\r\n\r\n	api.replace = function(elements, options, ignoreHistory) {\r\n		options = merge(defaultOptions, options);\r\n		if (!options.engine) return api; // there's no browser support so we'll just stop here\r\n		if (!initialized) {\r\n			CSS.addClass(DOM.root(), 'cufon-active cufon-loading');\r\n			CSS.ready(function() {\r\n				// fires before any replace() calls, but it doesn't really matter\r\n				CSS.addClass(CSS.removeClass(DOM.root(), 'cufon-loading'), 'cufon-ready');\r\n			});\r\n			initialized = true;\r\n		}\r\n		if (options.hover) options.forceHitArea = true;\r\n		if (options.autoDetect) delete options.fontFamily;\r\n		if (typeof options.textShadow == 'string') {\r\n			options.textShadow = CSS.textShadow(options.textShadow);\r\n		}\r\n		if (typeof options.color == 'string' && /^-/.test(options.color)) {\r\n			options.textGradient = CSS.gradient(options.color);\r\n		}\r\n		else delete options.textGradient;\r\n		if (!ignoreHistory) replaceHistory.add(elements, arguments);\r\n		if (elements.nodeType || typeof elements == 'string') elements = [ elements ];\r\n		CSS.ready(function() {\r\n			for (var i = 0, l = elements.length; i < l; ++i) {\r\n				var el = elements[i];\r\n				if (typeof el == 'string') api.replace(options.selector(el), options, true);\r\n				else replaceElement(el, options);\r\n			}\r\n		});\r\n		return api;\r\n	};\r\n\r\n	api.set = function(option, value) {\r\n		defaultOptions[option] = value;\r\n		return api;\r\n	};\r\n\r\n	return api;\r\n\r\n})();\r\n\r\nCufon.registerEngine('vml', (function() {\r\n\r\n	var ns = document.namespaces;\r\n	if (!ns) return;\r\n	ns.add('cvml', 'urn:schemas-microsoft-com:vml');\r\n	ns = null;\r\n\r\n	var check = document.createElement('cvml:shape');\r\n	check.style.behavior = 'url(#default#VML)';\r\n	if (!check.coordsize) return; // VML isn't supported\r\n	check = null;\r\n\r\n	var HAS_BROKEN_LINEHEIGHT = (document.documentMode || 0) < 8;\r\n\r\n	document.write(('<style type=\"text/css\">' +\r\n		'cufoncanvas{text-indent:0;}' +\r\n		'@media screen{' +\r\n			'cvml\\\\:shape,cvml\\\\:rect,cvml\\\\:fill,cvml\\\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}' +\r\n			'cufoncanvas{position:absolute;text-align:left;}' +\r\n			'cufon{display:inline-block;position:relative;vertical-align:' +\r\n			(HAS_BROKEN_LINEHEIGHT\r\n				? 'middle'\r\n				: 'text-bottom') +\r\n			';}' +\r\n			'cufon cufontext{position:absolute;left:-10000in;font-size:1px;text-align:left;}' +\r\n			'cufonshy.cufon-shy-disabled,.cufon-viewport-resizing cufonshy{display:none;}' +\r\n			'cufonglue{white-space:nowrap;display:inline-block;}' +\r\n			'.cufon-viewport-resizing cufonglue{white-space:normal;}' +\r\n			'a cufon{cursor:pointer}' + // ignore !important here\r\n		'}' +\r\n		'@media print{' +\r\n			'cufon cufoncanvas{display:none;}' +\r\n		'}' +\r\n	'</style>').replace(/;/g, '!important;'));\r\n\r\n	function getFontSizeInPixels(el, value) {\r\n		return getSizeInPixels(el, /(?:em|ex|%)$|^[a-z-]+$/i.test(value) ? '1em' : value);\r\n	}\r\n\r\n	// Original by Dead Edwards.\r\n	// Combined with getFontSizeInPixels it also works with relative units.\r\n	function getSizeInPixels(el, value) {\r\n		if (!isNaN(value) || /px$/i.test(value)) return parseFloat(value);\r\n		var style = el.style.left, runtimeStyle = el.runtimeStyle.left;\r\n		el.runtimeStyle.left = el.currentStyle.left;\r\n		el.style.left = value.replace('%', 'em');\r\n		var result = el.style.pixelLeft;\r\n		el.style.left = style;\r\n		el.runtimeStyle.left = runtimeStyle;\r\n		return result;\r\n	}\r\n\r\n	function getSpacingValue(el, style, size, property) {\r\n		var key = 'computed' + property, value = style[key];\r\n		if (isNaN(value)) {\r\n			value = style.get(property);\r\n			style[key] = value = (value == 'normal') ? 0 : ~~size.convertFrom(getSizeInPixels(el, value));\r\n		}\r\n		return value;\r\n	}\r\n\r\n	var fills = {};\r\n\r\n	function gradientFill(gradient) {\r\n		var id = gradient.id;\r\n		if (!fills[id]) {\r\n			var stops = gradient.stops, fill = document.createElement('cvml:fill'), colors = [];\r\n			fill.type = 'gradient';\r\n			fill.angle = 180;\r\n			fill.focus = '0';\r\n			fill.method = 'none';\r\n			fill.color = stops[0][1];\r\n			for (var j = 1, k = stops.length - 1; j < k; ++j) {\r\n				colors.push(stops[j][0] * 100 + '% ' + stops[j][1]);\r\n			}\r\n			fill.colors = colors.join(',');\r\n			fill.color2 = stops[k][1];\r\n			fills[id] = fill;\r\n		}\r\n		return fills[id];\r\n	}\r\n\r\n	return function(font, text, style, options, node, el, hasNext) {\r\n\r\n		var redraw = (text === null);\r\n\r\n		if (redraw) text = node.alt;\r\n\r\n		var viewBox = font.viewBox;\r\n\r\n		var size = style.computedFontSize || (style.computedFontSize = new Cufon.CSS.Size(getFontSizeInPixels(el, style.get('fontSize')) + 'px', font.baseSize));\r\n\r\n		var wrapper, canvas;\r\n\r\n		if (redraw) {\r\n			wrapper = node;\r\n			canvas = node.firstChild;\r\n		}\r\n		else {\r\n			wrapper = document.createElement('cufon');\r\n			wrapper.className = 'cufon cufon-vml';\r\n			wrapper.alt = text;\r\n\r\n			canvas = document.createElement('cufoncanvas');\r\n			wrapper.appendChild(canvas);\r\n\r\n			if (options.printable) {\r\n				var print = document.createElement('cufontext');\r\n				print.appendChild(document.createTextNode(text));\r\n				wrapper.appendChild(print);\r\n			}\r\n\r\n			// ie6, for some reason, has trouble rendering the last VML element in the document.\r\n			// we can work around this by injecting a dummy element where needed.\r\n			// @todo find a better solution\r\n			if (!hasNext) wrapper.appendChild(document.createElement('cvml:shape'));\r\n		}\r\n\r\n		var wStyle = wrapper.style;\r\n		var cStyle = canvas.style;\r\n\r\n		var height = size.convert(viewBox.height), roundedHeight = Math.ceil(height);\r\n		var roundingFactor = roundedHeight / height;\r\n		var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch'));\r\n		var minX = viewBox.minX, minY = viewBox.minY;\r\n\r\n		cStyle.height = roundedHeight;\r\n		cStyle.top = Math.round(size.convert(minY - font.ascent));\r\n		cStyle.left = Math.round(size.convert(minX));\r\n\r\n		wStyle.height = size.convert(font.height) + 'px';\r\n\r\n		var color = style.get('color');\r\n		var chars = Cufon.CSS.textTransform(text, style).split('');\r\n\r\n		var jumps = font.spacing(chars,\r\n			getSpacingValue(el, style, size, 'letterSpacing'),\r\n			getSpacingValue(el, style, size, 'wordSpacing')\r\n		);\r\n\r\n		if (!jumps.length) return null;\r\n\r\n		var width = jumps.total;\r\n		var fullWidth = -minX + width + (viewBox.width - jumps[jumps.length - 1]);\r\n\r\n		var shapeWidth = size.convert(fullWidth * stretchFactor), roundedShapeWidth = Math.round(shapeWidth);\r\n\r\n		var coordSize = fullWidth + ',' + viewBox.height, coordOrigin;\r\n		var stretch = 'r' + coordSize + 'ns';\r\n\r\n		var fill = options.textGradient && gradientFill(options.textGradient);\r\n\r\n		var glyphs = font.glyphs, offsetX = 0;\r\n		var shadows = options.textShadow;\r\n		var i = -1, j = 0, chr;\r\n\r\n		while (chr = chars[++i]) {\r\n\r\n			var glyph = glyphs[chars[i]] || font.missingGlyph, shape;\r\n			if (!glyph) continue;\r\n\r\n			if (redraw) {\r\n				// some glyphs may be missing so we can't use i\r\n				shape = canvas.childNodes[j];\r\n				while (shape.firstChild) shape.removeChild(shape.firstChild); // shadow, fill\r\n			}\r\n			else {\r\n				shape = document.createElement('cvml:shape');\r\n				canvas.appendChild(shape);\r\n			}\r\n\r\n			shape.stroked = 'f';\r\n			shape.coordsize = coordSize;\r\n			shape.coordorigin = coordOrigin = (minX - offsetX) + ',' + minY;\r\n			shape.path = (glyph.d ? 'm' + glyph.d + 'xe' : '') + 'm' + coordOrigin + stretch;\r\n			shape.fillcolor = color;\r\n\r\n			if (fill) shape.appendChild(fill.cloneNode(false));\r\n\r\n			// it's important to not set top/left or IE8 will grind to a halt\r\n			var sStyle = shape.style;\r\n			sStyle.width = roundedShapeWidth;\r\n			sStyle.height = roundedHeight;\r\n\r\n			if (shadows) {\r\n				// due to the limitations of the VML shadow element there\r\n				// can only be two visible shadows. opacity is shared\r\n				// for all shadows.\r\n				var shadow1 = shadows[0], shadow2 = shadows[1];\r\n				var color1 = Cufon.CSS.color(shadow1.color), color2;\r\n				var shadow = document.createElement('cvml:shadow');\r\n				shadow.on = 't';\r\n				shadow.color = color1.color;\r\n				shadow.offset = shadow1.offX + ',' + shadow1.offY;\r\n				if (shadow2) {\r\n					color2 = Cufon.CSS.color(shadow2.color);\r\n					shadow.type = 'double';\r\n					shadow.color2 = color2.color;\r\n					shadow.offset2 = shadow2.offX + ',' + shadow2.offY;\r\n				}\r\n				shadow.opacity = color1.opacity || (color2 && color2.opacity) || 1;\r\n				shape.appendChild(shadow);\r\n			}\r\n\r\n			offsetX += jumps[j++];\r\n		}\r\n\r\n		// addresses flickering issues on :hover\r\n\r\n		var cover = shape.nextSibling, coverFill, vStyle;\r\n\r\n		if (options.forceHitArea) {\r\n\r\n			if (!cover) {\r\n				cover = document.createElement('cvml:rect');\r\n				cover.stroked = 'f';\r\n				cover.className = 'cufon-vml-cover';\r\n				coverFill = document.createElement('cvml:fill');\r\n				coverFill.opacity = 0;\r\n				cover.appendChild(coverFill);\r\n				canvas.appendChild(cover);\r\n			}\r\n\r\n			vStyle = cover.style;\r\n\r\n			vStyle.width = roundedShapeWidth;\r\n			vStyle.height = roundedHeight;\r\n\r\n		}\r\n		else if (cover) canvas.removeChild(cover);\r\n\r\n		wStyle.width = Math.max(Math.ceil(size.convert(width * stretchFactor)), 0);\r\n\r\n		if (HAS_BROKEN_LINEHEIGHT) {\r\n\r\n			var yAdjust = style.computedYAdjust;\r\n\r\n			if (yAdjust === undefined) {\r\n				var lineHeight = style.get('lineHeight');\r\n				if (lineHeight == 'normal') lineHeight = '1em';\r\n				else if (!isNaN(lineHeight)) lineHeight += 'em'; // no unit\r\n				style.computedYAdjust = yAdjust = 0.5 * (getSizeInPixels(el, lineHeight) - parseFloat(wStyle.height));\r\n			}\r\n\r\n			if (yAdjust) {\r\n				wStyle.marginTop = Math.ceil(yAdjust) + 'px';\r\n				wStyle.marginBottom = yAdjust + 'px';\r\n			}\r\n\r\n		}\r\n\r\n		return wrapper;\r\n\r\n	};\r\n\r\n})());\r\n\r\nCufon.registerEngine('canvas', (function() {\r\n\r\n	// Safari 2 doesn't support .apply() on native methods\r\n\r\n	var check = document.createElement('canvas');\r\n	if (!check || !check.getContext || !check.getContext.apply) return;\r\n	check = null;\r\n\r\n	var HAS_INLINE_BLOCK = Cufon.CSS.supports('display', 'inline-block');\r\n\r\n	// Firefox 2 w/ non-strict doctype (almost standards mode)\r\n	var HAS_BROKEN_LINEHEIGHT = !HAS_INLINE_BLOCK && (document.compatMode == 'BackCompat' || /frameset|transitional/i.test(document.doctype.publicId));\r\n\r\n	var styleSheet = document.createElement('style');\r\n	styleSheet.type = 'text/css';\r\n	styleSheet.appendChild(document.createTextNode((\r\n		'cufon{text-indent:0;}' +\r\n		'@media screen,projection{' +\r\n			'cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;' +\r\n			(HAS_BROKEN_LINEHEIGHT\r\n				? ''\r\n				: 'font-size:1px;line-height:1px;') +\r\n			'}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;text-align:left;text-indent:-10000in;}' +\r\n			(HAS_INLINE_BLOCK\r\n				? 'cufon canvas{position:relative;}'\r\n				: 'cufon canvas{position:absolute;}') +\r\n			'cufonshy.cufon-shy-disabled,.cufon-viewport-resizing cufonshy{display:none;}' +\r\n			'cufonglue{white-space:nowrap;display:inline-block;}' +\r\n			'.cufon-viewport-resizing cufonglue{white-space:normal;}' +\r\n		'}' +\r\n		'@media print{' +\r\n			'cufon{padding:0;}' + // Firefox 2\r\n			'cufon canvas{display:none;}' +\r\n		'}'\r\n	).replace(/;/g, '!important;')));\r\n	document.getElementsByTagName('head')[0].appendChild(styleSheet);\r\n\r\n	function generateFromVML(path, context) {\r\n		var atX = 0, atY = 0;\r\n		var code = [], re = /([mrvxe])([^a-z]*)/g, match;\r\n		generate: for (var i = 0; match = re.exec(path); ++i) {\r\n			var c = match[2].split(',');\r\n			switch (match[1]) {\r\n				case 'v':\r\n					code[i] = { m: 'bezierCurveTo', a: [ atX + ~~c[0], atY + ~~c[1], atX + ~~c[2], atY + ~~c[3], atX += ~~c[4], atY += ~~c[5] ] };\r\n					break;\r\n				case 'r':\r\n					code[i] = { m: 'lineTo', a: [ atX += ~~c[0], atY += ~~c[1] ] };\r\n					break;\r\n				case 'm':\r\n					code[i] = { m: 'moveTo', a: [ atX = ~~c[0], atY = ~~c[1] ] };\r\n					break;\r\n				case 'x':\r\n					code[i] = { m: 'closePath' };\r\n					break;\r\n				case 'e':\r\n					break generate;\r\n			}\r\n			context[code[i].m].apply(context, code[i].a);\r\n		}\r\n		return code;\r\n	}\r\n\r\n	function interpret(code, context) {\r\n		for (var i = 0, l = code.length; i < l; ++i) {\r\n			var line = code[i];\r\n			context[line.m].apply(context, line.a);\r\n		}\r\n	}\r\n\r\n	return function(font, text, style, options, node, el) {\r\n\r\n		var redraw = (text === null);\r\n\r\n		if (redraw) text = node.getAttribute('alt');\r\n\r\n		var viewBox = font.viewBox;\r\n\r\n		var size = style.getSize('fontSize', font.baseSize);\r\n\r\n		var expandTop = 0, expandRight = 0, expandBottom = 0, expandLeft = 0;\r\n		var shadows = options.textShadow, shadowOffsets = [];\r\n		if (shadows) {\r\n			for (var i = shadows.length; i--;) {\r\n				var shadow = shadows[i];\r\n				var x = size.convertFrom(parseFloat(shadow.offX));\r\n				var y = size.convertFrom(parseFloat(shadow.offY));\r\n				shadowOffsets[i] = [ x, y ];\r\n				if (y < expandTop) expandTop = y;\r\n				if (x > expandRight) expandRight = x;\r\n				if (y > expandBottom) expandBottom = y;\r\n				if (x < expandLeft) expandLeft = x;\r\n			}\r\n		}\r\n\r\n		var chars = Cufon.CSS.textTransform(text, style).split('');\r\n\r\n		var jumps = font.spacing(chars,\r\n			~~size.convertFrom(parseFloat(style.get('letterSpacing')) || 0),\r\n			~~size.convertFrom(parseFloat(style.get('wordSpacing')) || 0)\r\n		);\r\n\r\n		if (!jumps.length) return null; // there's nothing to render\r\n\r\n		var width = jumps.total;\r\n\r\n		expandRight += viewBox.width - jumps[jumps.length - 1];\r\n		expandLeft += viewBox.minX;\r\n\r\n		var wrapper, canvas;\r\n\r\n		if (redraw) {\r\n			wrapper = node;\r\n			canvas = node.firstChild;\r\n		}\r\n		else {\r\n			wrapper = document.createElement('cufon');\r\n			wrapper.className = 'cufon cufon-canvas';\r\n			wrapper.setAttribute('alt', text);\r\n\r\n			canvas = document.createElement('canvas');\r\n			wrapper.appendChild(canvas);\r\n\r\n			if (options.printable) {\r\n				var print = document.createElement('cufontext');\r\n				print.appendChild(document.createTextNode(text));\r\n				wrapper.appendChild(print);\r\n			}\r\n		}\r\n\r\n		var wStyle = wrapper.style;\r\n		var cStyle = canvas.style;\r\n\r\n		var height = size.convert(viewBox.height);\r\n		var roundedHeight = Math.ceil(height);\r\n		var roundingFactor = roundedHeight / height;\r\n		var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch'));\r\n		var stretchedWidth = width * stretchFactor;\r\n\r\n		var canvasWidth = Math.ceil(size.convert(stretchedWidth + expandRight - expandLeft));\r\n		var canvasHeight = Math.ceil(size.convert(viewBox.height - expandTop + expandBottom));\r\n\r\n		canvas.width = canvasWidth;\r\n		canvas.height = canvasHeight;\r\n\r\n		// needed for WebKit and full page zoom\r\n		cStyle.width = canvasWidth + 'px';\r\n		cStyle.height = canvasHeight + 'px';\r\n\r\n		// minY has no part in canvas.height\r\n		expandTop += viewBox.minY;\r\n\r\n		cStyle.top = Math.round(size.convert(expandTop - font.ascent)) + 'px';\r\n		cStyle.left = Math.round(size.convert(expandLeft)) + 'px';\r\n\r\n		var wrapperWidth = Math.max(Math.ceil(size.convert(stretchedWidth)), 0) + 'px';\r\n\r\n		if (HAS_INLINE_BLOCK) {\r\n			wStyle.width = wrapperWidth;\r\n			wStyle.height = size.convert(font.height) + 'px';\r\n		}\r\n		else {\r\n			wStyle.paddingLeft = wrapperWidth;\r\n			wStyle.paddingBottom = (size.convert(font.height) - 1) + 'px';\r\n		}\r\n\r\n		var g = canvas.getContext('2d'), scale = height / viewBox.height;\r\n\r\n		// proper horizontal scaling is performed later\r\n		g.scale(scale, scale * roundingFactor);\r\n		g.translate(-expandLeft, -expandTop);\r\n		g.save();\r\n\r\n		function renderText() {\r\n			var glyphs = font.glyphs, glyph, i = -1, j = -1, chr;\r\n			g.scale(stretchFactor, 1);\r\n			while (chr = chars[++i]) {\r\n				var glyph = glyphs[chars[i]] || font.missingGlyph;\r\n				if (!glyph) continue;\r\n				if (glyph.d) {\r\n					g.beginPath();\r\n					if (glyph.code) interpret(glyph.code, g);\r\n					else glyph.code = generateFromVML('m' + glyph.d, g);\r\n					g.fill();\r\n				}\r\n				g.translate(jumps[++j], 0);\r\n			}\r\n			g.restore();\r\n		}\r\n\r\n		if (shadows) {\r\n			for (var i = shadows.length; i--;) {\r\n				var shadow = shadows[i];\r\n				g.save();\r\n				g.fillStyle = shadow.color;\r\n				g.translate.apply(g, shadowOffsets[i]);\r\n				renderText();\r\n			}\r\n		}\r\n\r\n		var gradient = options.textGradient;\r\n		if (gradient) {\r\n			var stops = gradient.stops, fill = g.createLinearGradient(0, viewBox.minY, 0, viewBox.maxY);\r\n			for (var i = 0, l = stops.length; i < l; ++i) {\r\n				fill.addColorStop.apply(fill, stops[i]);\r\n			}\r\n			g.fillStyle = fill;\r\n		}\r\n		else g.fillStyle = style.get('color');\r\n\r\n		renderText();\r\n\r\n		return wrapper;\r\n\r\n	};\r\n\r\n})());\r\n";
var mod_pagespeed_dqD3ywG9jX = "/*!\n * The following copyright notice may not be removed under any circumstances.\n * \n * Copyright:\n * Data by Eraman Ltd., and Monotype Typography Inc. © 1995. Microsoft\n * Corporation. All rights reserved.\n */\nCufon.registerFont({\"w\":128,\"face\":{\"font-family\":\"Haettenschweiler\",\"font-weight\":500,\"font-stretch\":\"normal\",\"units-per-em\":\"360\",\"panose-1\":\"2 11 7 6 4 9 2 6 2 4\",\"ascent\":\"288\",\"descent\":\"-72\",\"x-height\":\"3\",\"bbox\":\"-21 -269 284 43.6642\",\"underline-thickness\":\"17.9297\",\"underline-position\":\"-27.0703\",\"unicode-range\":\"U+0020-U+007E\"},\"glyphs\":{\" \":{\"w\":64},\"\\u00a0\":{\"w\":64},\"!\":{\"d\":\"55,-48r-50,0r0,-204r50,0r0,204xm55,0r-50,0r0,-37r50,0r0,37\",\"w\":60},\"\\\"\":{\"d\":\"131,-252r-51,87r-21,-3r23,-84r49,0xm76,-252r-51,87r-21,-3r23,-84r49,0\",\"w\":134},\"#\":{\"d\":\"284,-202r-9,50r-50,0r-9,52r50,0r-9,50r-50,0r-8,50r-50,0r8,-50r-52,0r-9,50r-50,0r9,-50r-50,0r9,-50r49,0r10,-52r-50,0r9,-50r50,0r8,-50r50,0r-8,50r52,0r9,-50r50,0r-9,50r50,0xm175,-152r-52,0r-9,52r52,0\",\"w\":289},\"$\":{\"d\":\"58,-205v-2,61,73,77,73,125v0,42,0,76,-38,81r0,16r-50,0r0,-17v-46,-8,-38,-51,-38,-100r51,0r0,57v0,6,3,9,10,9v17,0,10,-24,10,-38v0,-41,-85,-62,-71,-133v0,-26,13,-41,38,-46r0,-18r50,0r0,18v39,7,35,43,34,85r-51,0r0,-46v0,-5,-2,-8,-8,-8v-6,0,-10,5,-10,15\",\"w\":136},\"%\":{\"d\":\"32,-153v-41,2,-24,-50,-24,-83v0,-12,8,-18,24,-18v42,-2,25,51,25,84v0,11,-9,17,-25,17xm36,-169r0,-69v0,-2,-2,-3,-4,-3v-8,17,0,50,-3,72v0,2,1,3,3,3v2,0,4,-1,4,-3xm120,-252r-91,252r-24,0r91,-252r24,0xm92,3v-42,2,-24,-51,-24,-83v0,-12,8,-18,24,-18v42,-2,25,52,25,85v0,11,-9,16,-25,16xm96,-13r0,-69v0,-2,-2,-3,-4,-3v-8,17,0,50,-3,72v0,2,1,3,3,3v2,0,4,-1,4,-3\",\"w\":124},\"&\":{\"d\":\"79,-121v-38,-6,-13,51,-20,78v0,7,3,11,10,11v7,0,10,-4,10,-11r0,-56r70,0r0,29r-19,0v8,50,-17,74,-61,73v-34,0,-63,-16,-63,-50v0,0,-6,-83,33,-89v-35,-10,-32,-35,-31,-73v0,-29,28,-45,58,-45v42,0,68,27,60,77r-48,0v1,-15,3,-43,-10,-42v-19,1,-8,33,-10,50v-2,17,4,17,21,17r0,31\",\"w\":153},\"'\":{\"d\":\"76,-252r-51,87r-21,-3r23,-84r49,0\",\"w\":79},\"(\":{\"d\":\"5,-204v-7,-55,28,-50,79,-50r0,28v-19,0,-29,4,-29,12r0,177v0,8,10,13,29,13r0,27v-47,2,-79,-1,-79,-49r0,-158\",\"w\":88},\")\":{\"d\":\"84,-46v4,50,-32,51,-79,49r0,-27v19,0,29,-5,29,-13r0,-177v0,-8,-10,-12,-29,-12r0,-28v49,0,79,-6,79,50r0,158\",\"w\":88},\"*\":{\"d\":\"147,-190r-48,15r29,41r-23,17r-29,-41r-29,41r-24,-17r30,-41r-48,-15r9,-27r47,15r0,-50r29,0r0,50r48,-15\",\"w\":151},\"+\":{\"d\":\"130,-49r-49,0r0,49r-28,0r0,-49r-49,0r0,-28r49,0r0,-49r28,0r0,49r49,0r0,28\",\"w\":134},\",\":{\"d\":\"22,30r-10,-8v8,-8,12,-15,13,-22r-20,0r0,-37r46,0v2,36,-2,48,-29,67\",\"w\":56},\"-\":{\"d\":\"78,-90r-71,0r0,-28r71,0r0,28\",\"w\":81},\"\\u00ad\":{\"d\":\"78,-90r-71,0r0,-28r71,0r0,28\",\"w\":81},\".\":{\"d\":\"51,0r-46,0r0,-37r46,0r0,37\",\"w\":55},\"\\/\":{\"d\":\"115,-252r-80,252r-30,0r80,-252r30,0\",\"w\":120},\"0\":{\"d\":\"70,2v-35,1,-65,-13,-65,-45r0,-162v0,-33,22,-49,65,-49v43,0,64,16,64,48r0,163v0,31,-31,45,-64,45xm79,-40r0,-172v0,-5,-3,-8,-9,-8v-6,0,-9,3,-9,8r0,172v0,5,3,7,9,7v6,0,9,-2,9,-7\",\"w\":139},\"1\":{\"d\":\"5,-221v14,1,30,-17,29,-31r48,0r0,252r-56,0r0,-185r-21,0r0,-36\",\"w\":87},\"2\":{\"d\":\"67,-254v64,0,70,51,59,102r-63,120r68,0r0,32r-126,0r0,-33r62,-115v7,-12,10,-29,10,-51v0,-21,-23,-22,-23,-6r0,43r-49,0v-3,-56,-1,-92,62,-92\",\"w\":135},\"3\":{\"d\":\"68,-254v48,0,62,26,62,79v0,20,-10,34,-29,41v32,7,30,45,29,84v0,35,-20,52,-62,52v-70,0,-65,-46,-63,-108r51,0r0,60v0,6,3,9,10,9v7,0,10,-3,10,-9v-5,-29,16,-81,-24,-75r0,-29v36,3,21,-32,24,-59v0,-5,-3,-8,-10,-8v-22,1,-7,36,-11,54r-49,0v-3,-56,-2,-91,62,-91\",\"w\":135},\"4\":{\"d\":\"158,-32r-28,0r0,32r-54,0r0,-32r-75,0r0,-36r55,-184r74,0r0,182r28,0r0,38xm76,-70r0,-100r-25,100r25,0\",\"w\":158},\"5\":{\"d\":\"131,-43v0,32,-30,44,-63,45v-72,3,-64,-46,-63,-108r54,0r0,65v0,6,3,8,9,8v6,0,9,-2,9,-8r0,-84v0,-6,-3,-9,-10,-9v-6,0,-10,6,-10,16r-52,-2r3,-132r124,0r-8,38r-63,0r-2,52v22,-18,72,-7,72,29r0,90\",\"w\":135},\"6\":{\"d\":\"131,-43v0,31,-30,45,-63,45v-42,0,-64,-15,-64,-45r0,-162v0,-33,22,-49,64,-49v54,0,67,24,63,74r-54,0v1,-14,4,-41,-9,-40v-20,2,-6,39,-10,57v22,-19,73,-4,73,30r0,90xm77,-41r0,-83v0,-6,-3,-8,-9,-8v-6,0,-10,2,-10,8r0,83v0,6,4,8,10,8v6,0,9,-2,9,-8\",\"w\":135},\"7\":{\"d\":\"133,-216r-70,216r-59,0r69,-217r-65,0r0,-35r125,0r0,36\",\"w\":135},\"8\":{\"d\":\"68,-254v44,0,62,21,62,71v0,26,-9,41,-28,47v36,6,28,50,29,90v0,32,-21,48,-63,48v-65,0,-63,-40,-63,-99v0,-21,10,-34,29,-39v-27,-6,-28,-38,-28,-74v0,-30,21,-44,62,-44xm68,-152v19,-4,5,-41,9,-60v0,-5,-3,-8,-9,-8v-19,4,-5,41,-9,60v0,5,3,8,9,8xm77,-40r0,-74v0,-5,-3,-7,-9,-7v-6,0,-9,2,-9,7r0,74v0,5,3,7,9,7v6,0,9,-2,9,-7\",\"w\":136},\"9\":{\"d\":\"68,-254v34,-1,64,13,63,45r0,162v0,33,-20,49,-63,49v-69,0,-65,-46,-63,-107r54,0r0,64v0,6,3,8,9,8v6,0,10,-2,10,-8r0,-75v-26,15,-73,1,-73,-34r0,-59v0,-32,30,-45,63,-45xm78,-151r0,-61v0,-6,-4,-8,-10,-8v-6,0,-9,2,-9,8r0,61v0,6,3,8,9,8v6,0,10,-2,10,-8\",\"w\":136},\":\":{\"d\":\"51,-121r-46,0r0,-37r46,0r0,37xm51,0r-46,0r0,-36r46,0r0,36\",\"w\":55},\";\":{\"d\":\"51,-121r-46,0r0,-37r46,0r0,37xm22,30r-10,-8v8,-8,12,-15,13,-22r-20,0r0,-37r46,0v2,36,-2,48,-29,67\",\"w\":55},\"\\u037e\":{\"d\":\"51,-121r-46,0r0,-37r46,0r0,37xm22,30r-10,-8v8,-8,12,-15,13,-22r-20,0r0,-37r46,0v2,36,-2,48,-29,67\",\"w\":55},\"<\":{\"d\":\"132,-2r-126,-47r0,-28r126,-46r0,28r-88,32r88,32r0,29\",\"w\":137},\"=\":{\"d\":\"132,-77r-126,0r0,-29r126,0r0,29xm132,-21r-126,0r0,-28r126,0r0,28\",\"w\":137},\">\":{\"d\":\"132,-49r-127,47r0,-29r88,-32r-88,-32r0,-28r127,46r0,28\",\"w\":137},\"?\":{\"d\":\"123,-172v0,55,-57,54,-46,125r-50,0v-11,-78,58,-80,44,-165v0,-5,-3,-8,-9,-8v-6,0,-8,3,-8,8r0,64r-48,0v-1,-57,-9,-106,57,-106v52,0,60,28,60,82xm77,0r-50,0r0,-37r50,0r0,37\",\"w\":127},\"@\":{\"d\":\"284,-106v0,62,-73,109,-118,65v-15,24,-93,25,-88,-16v6,-51,-22,-122,41,-122v17,0,27,4,32,11r0,-10r44,0r0,101v0,16,5,24,15,24v29,0,43,-18,43,-54v0,-78,-35,-118,-106,-118v-74,0,-112,50,-112,118v0,68,38,120,112,120v30,0,57,-3,80,-9r0,30v-24,6,-51,9,-80,9v-81,1,-142,-67,-142,-149v0,-82,61,-149,142,-148v90,1,137,53,137,148xm145,-66r0,-72v0,-6,-2,-9,-8,-9v-6,0,-9,3,-9,10r0,71v0,6,3,10,9,10v6,0,8,-4,8,-10\",\"w\":288},\"A\":{\"d\":\"156,0r-55,0r-9,-68r-25,0r-10,68r-54,0r41,-252r70,0xm87,-103r-8,-75r-7,75r15,0\",\"w\":158},\"B\":{\"d\":\"131,-50v1,59,-67,51,-125,50r0,-252v55,1,123,-10,123,45v1,38,3,63,-32,72v42,7,34,42,34,85xm61,-150v26,1,16,-34,16,-56v0,-9,-6,-14,-16,-14r0,70xm61,-32v30,-2,16,-51,16,-78v0,-9,-6,-13,-16,-13r0,91\",\"w\":136},\"C\":{\"d\":\"127,-37v1,26,-31,39,-57,39v-43,0,-64,-15,-64,-45r0,-162v0,-33,21,-49,64,-49v59,0,60,36,57,90r-50,0r0,-50v0,-4,-3,-6,-8,-6v-5,0,-8,2,-8,6r0,175v0,4,3,6,8,6v5,0,8,-2,8,-6r0,-62r50,0r0,64\",\"w\":133},\"D\":{\"d\":\"132,-50v1,58,-68,51,-127,50r0,-252v59,0,127,-8,127,50r0,152xm76,-46r0,-160v0,-9,-5,-14,-15,-14r0,188v10,0,15,-5,15,-14\",\"w\":137},\"E\":{\"d\":\"114,0r-108,0r0,-252r108,0r0,32r-52,0r0,68r47,0r0,31r-47,0r0,89r52,0r0,32\",\"w\":117},\"F\":{\"d\":\"110,-220r-48,0r0,68r43,0r0,31r-43,0r0,121r-56,0r0,-252r104,0r0,32\",\"w\":112},\"G\":{\"d\":\"94,-14v-28,29,-88,19,-88,-27r0,-164v0,-33,20,-49,62,-49v62,0,63,35,60,91r-50,0r0,-51v0,-4,-3,-6,-9,-6v-6,0,-8,2,-8,6r0,175v0,4,2,6,8,6v19,-2,5,-36,9,-53r-12,0r0,-39r62,0r0,125r-27,0\",\"w\":133},\"H\":{\"d\":\"131,0r-55,0r0,-121r-15,0r0,121r-56,0r0,-252r56,0r0,100r15,0r0,-100r55,0r0,252\",\"w\":136},\"I\":{\"d\":\"60,0r-55,0r0,-252r55,0r0,252\",\"w\":65},\"J\":{\"d\":\"63,2v-26,0,-58,-13,-57,-39r0,-64r48,0r0,62v0,4,3,6,8,6v5,0,8,-2,8,-6r0,-213r55,0r0,209v0,30,-20,45,-62,45\",\"w\":130},\"K\":{\"d\":\"144,0r-61,0r-21,-94r0,94r-55,0r0,-252r55,0r0,84r24,-84r52,0r-34,115\",\"w\":146},\"L\":{\"d\":\"111,0r-104,0r0,-252r55,0r0,220r49,0r0,32\",\"w\":113},\"M\":{\"d\":\"199,0r-49,0r0,-142r-29,142r-38,0r-33,-142r0,142r-44,0r0,-252r72,0r25,131r22,-131r74,0r0,252\",\"w\":205},\"N\":{\"d\":\"147,0r-57,0r-38,-134r0,134r-46,0r0,-252r63,0r32,115r0,-115r46,0r0,252\",\"w\":152},\"O\":{\"d\":\"132,-43v0,32,-30,45,-63,45v-42,0,-63,-15,-63,-45r0,-162v0,-33,21,-49,63,-49v42,0,63,16,63,48r0,163xm78,-40r0,-172v0,-5,-3,-8,-9,-8v-6,0,-9,3,-9,8r0,172v0,5,3,7,9,7v6,0,9,-2,9,-7\",\"w\":137},\"P\":{\"d\":\"133,-137v-3,42,-21,43,-73,44r0,93r-54,0r0,-252v55,3,127,-14,127,45r0,70xm60,-129v34,1,14,-47,19,-74v0,-9,-7,-13,-19,-13r0,87\",\"w\":136},\"Q\":{\"d\":\"104,-4v2,12,8,8,28,9r0,29v-31,2,-58,-2,-56,-32v-47,0,-70,-15,-70,-45r0,-162v0,-33,21,-49,63,-49v42,0,63,16,63,48r0,163v0,18,-9,30,-28,39xm78,-40r0,-172v0,-5,-3,-8,-9,-8v-6,0,-9,3,-9,8r0,172v0,5,3,7,9,7v6,0,9,-2,9,-7\",\"w\":137},\"R\":{\"d\":\"7,-252v56,1,125,-10,126,45v1,38,0,61,-34,70v33,6,34,32,34,69v0,40,3,63,10,68r-55,0v-11,-10,-9,-76,-9,-108v0,-9,-6,-13,-17,-13r0,121r-55,0r0,-252xm62,-152v27,2,17,-32,17,-54v0,-9,-6,-14,-17,-14r0,68\",\"w\":144},\"S\":{\"d\":\"59,-205v-2,62,73,73,73,125v0,54,-6,82,-64,82v-68,0,-64,-43,-62,-103r50,0r0,58v0,6,4,9,11,9v17,0,7,-25,10,-39v-9,-43,-71,-64,-71,-104v0,-52,8,-77,64,-77v58,0,60,35,57,88r-50,0r0,-47v0,-5,-2,-7,-8,-7v-6,0,-10,5,-10,15\",\"w\":137},\"T\":{\"d\":\"122,-219r-31,0r0,219r-56,0r0,-219r-31,0r0,-33r118,0r0,33\",\"w\":126},\"U\":{\"d\":\"70,2v-32,0,-64,-12,-64,-45r0,-209r55,0r0,212v0,5,3,7,9,7v6,0,10,-2,10,-7r0,-212r55,0r0,209v0,32,-31,45,-65,45\",\"w\":140},\"V\":{\"d\":\"147,-252r-33,252r-79,0r-34,-252r54,0r19,176r19,-176r54,0\",\"w\":148},\"W\":{\"d\":\"226,-252r-33,252r-65,0r-20,-139r-19,139r-56,0r-32,-252r50,0r14,116r19,-116r63,0r15,116r18,-116r46,0\",\"w\":226},\"X\":{\"d\":\"163,0r-60,0r-25,-81r-24,81r-53,0r44,-143r-32,-109r53,0r20,73r22,-73r49,0r-37,117\",\"w\":163},\"Y\":{\"d\":\"157,-252r-54,152r0,100r-55,0v-2,-62,2,-97,-15,-150r-32,-102r53,0r25,89r29,-89r49,0\",\"w\":158},\"Z\":{\"d\":\"128,0r-124,0r0,-32r61,-187r-58,0r0,-33r117,0r0,33r-60,187r64,0r0,32\",\"w\":132},\"[\":{\"d\":\"52,0r-46,0r0,-252r46,0r0,14r-23,0r0,225r23,0r0,13\",\"w\":56},\"\\\\\":{\"d\":\"115,0r-29,0r-81,-252r30,0\",\"w\":120},\"]\":{\"d\":\"51,0r-47,0r0,-13r24,0r0,-225r-24,0r0,-14r47,0r0,252\",\"w\":56},\"^\":{\"d\":\"42,-121r-33,0r63,-141r25,0r62,141r-31,0r-44,-105\",\"w\":168},\"_\":{\"d\":\"135,43r-135,0r0,-28r135,0r0,28\",\"w\":133},\"`\":{\"d\":\"52,-220r-27,0r-21,-32r38,0\",\"w\":55},\"a\":{\"d\":\"6,-70v-2,-36,51,-42,68,-64v-2,-14,6,-40,-9,-40v-14,0,-9,33,-9,51r-48,0v-3,-53,0,-82,60,-82v37,0,56,14,56,43r0,162r-45,0r0,-8v-13,20,-82,13,-73,-21r0,-41xm65,-29v19,-5,5,-42,9,-62v-26,3,-17,28,-18,53v0,6,3,9,9,9\",\"w\":129},\"b\":{\"d\":\"123,-31v-1,33,-50,44,-76,24v-3,13,-28,5,-42,7r0,-252r50,0r0,54v19,-14,68,-8,68,21r0,146xm73,-38r0,-127v0,-6,-3,-9,-9,-9v-6,0,-9,3,-9,9r0,127v0,6,3,9,9,9v6,0,9,-3,9,-9\"},\"c\":{\"d\":\"123,-114r-50,0v-3,-19,9,-56,-9,-60v-6,0,-9,3,-9,10r0,125v0,7,3,11,9,11v18,-4,5,-41,9,-60r50,0v2,54,5,91,-58,91v-92,0,-60,-93,-60,-165v0,-29,20,-43,60,-43v63,0,60,36,58,91\"},\"d\":{\"d\":\"5,-177v-2,-30,48,-34,68,-21r0,-54r50,0r0,252v-14,-2,-39,6,-42,-7v-24,20,-76,8,-76,-24r0,-146xm73,-38r0,-127v0,-6,-3,-9,-9,-9v-6,0,-9,3,-9,9r0,127v0,6,3,9,9,9v6,0,9,-3,9,-9\"},\"e\":{\"d\":\"123,-86r-67,0v3,19,-8,53,8,58v17,-3,6,-35,9,-52r50,0v3,52,1,83,-59,83v-90,0,-58,-94,-58,-165v0,-29,19,-43,58,-43v75,0,57,57,59,119xm73,-117v-3,-18,9,-53,-9,-57v-17,4,-4,39,-8,57r17,0\"},\"f\":{\"d\":\"21,-204v-7,-54,31,-48,79,-48r0,27v-20,-1,-31,1,-29,21r29,0r0,30r-29,0r0,174r-50,0r0,-174r-17,0r0,-30r17,0\",\"w\":100},\"g\":{\"d\":\"123,-3v8,56,-56,45,-109,46r0,-29v24,-2,61,9,59,-19v-19,15,-69,9,-68,-20r0,-147v-2,-33,40,-42,68,-25v7,-12,33,-5,50,-7r0,201xm73,-36r0,-129v0,-6,-3,-9,-9,-9v-6,0,-9,3,-9,9r0,128v0,6,3,10,9,10v6,0,9,-3,9,-9\"},\"h\":{\"d\":\"56,-198v18,-13,67,-9,67,21r0,177r-50,0r0,-165v0,-6,-2,-9,-8,-9v-6,0,-9,3,-9,9r0,165r-50,0r0,-252r50,0r0,54\"},\"i\":{\"d\":\"55,-215r-50,0r0,-37r50,0r0,37xm55,0r-50,0r0,-204r50,0r0,204\",\"w\":59},\"j\":{\"d\":\"57,-215r-50,0r0,-37r50,0r0,37xm-21,14v21,-2,27,4,28,-14r0,-204r50,0r0,209v3,40,-38,40,-78,38r0,-29\",\"w\":64},\"k\":{\"d\":\"146,0r-59,0r-31,-74r0,74r-50,0r0,-252r50,0r0,113r26,-65r51,0r-36,89\",\"w\":147},\"l\":{\"d\":\"56,0r-50,0r0,-252r50,0r0,252\",\"w\":61},\"m\":{\"d\":\"119,-192v19,-21,72,-17,72,16r0,176r-50,0r0,-163v0,-6,-3,-9,-9,-9v-6,0,-9,3,-9,9r0,163r-50,0r0,-163v0,-6,-2,-10,-8,-10v-6,0,-9,3,-9,9r0,164r-50,0r0,-204r50,0r0,7v16,-12,49,-11,63,5\",\"w\":196},\"n\":{\"d\":\"56,-197v19,-16,67,-8,67,21r0,176r-50,0r0,-164v0,-6,-3,-9,-9,-9v-6,0,-8,3,-8,9r0,164r-51,0r0,-204r51,0r0,7\"},\"o\":{\"d\":\"64,-205v28,0,58,12,58,41r0,126v0,28,-19,41,-58,41v-91,0,-59,-94,-59,-165v0,-29,19,-43,59,-43xm72,-39r0,-125v0,-7,-3,-10,-9,-10v-6,0,-8,3,-8,10r0,125v0,7,2,11,8,11v6,0,9,-4,9,-11\",\"w\":126},\"p\":{\"d\":\"123,-25v1,30,-49,34,-68,20r0,48r-50,0r0,-247v15,2,40,-6,42,8v24,-19,76,-8,76,24r0,147xm73,-38r0,-127v0,-6,-3,-9,-9,-9v-6,0,-9,3,-9,9r0,127v0,6,3,9,9,9v6,0,9,-3,9,-9\"},\"q\":{\"d\":\"5,-172v0,-32,50,-43,76,-24v2,-14,27,-6,42,-8r0,247r-50,0r0,-48v-19,15,-69,9,-68,-20r0,-147xm73,-38r0,-127v0,-6,-3,-9,-9,-9v-6,0,-9,3,-9,9r0,127v0,6,3,9,9,9v6,0,9,-3,9,-9\"},\"r\":{\"d\":\"57,-197v19,-15,67,-10,67,21r0,56r-50,0v-3,-17,8,-49,-8,-53v-6,0,-9,3,-9,9r0,164r-50,0r0,-204r50,0r0,7\"},\"s\":{\"d\":\"55,-158v-13,50,66,37,68,87v2,49,-6,74,-60,74v-60,0,-61,-32,-58,-85r50,0v3,18,-8,50,9,54v14,-2,8,-52,-2,-54v-46,-26,-57,-18,-55,-80v0,-29,19,-43,58,-43v57,0,60,30,57,81r-49,0v1,-15,3,-51,-8,-50v-6,0,-10,5,-10,16\",\"w\":127},\"t\":{\"d\":\"76,-50v0,16,10,14,29,15r0,35r-32,0v-45,0,-47,-8,-47,-49r0,-125r-22,0r0,-30r22,0r0,-41r50,0r0,41r27,0r0,30r-27,0r0,124\",\"w\":108},\"u\":{\"d\":\"73,-7v-16,17,-68,12,-68,-18r0,-179r50,0r0,166v0,6,3,9,9,9v6,0,9,-3,9,-9r0,-166r50,0r0,204r-50,0r0,-7\"},\"v\":{\"d\":\"135,-204r-37,204r-60,0r-37,-204r51,0r17,121r17,-121r49,0\",\"w\":136},\"w\":{\"d\":\"214,-204r-35,204r-55,0r-16,-83r-14,83r-58,0r-35,-204r49,0r17,111r15,-111r51,0r15,111r17,-111r49,0\",\"w\":214},\"x\":{\"d\":\"140,0r-55,0r-18,-55r-16,55r-50,0r39,-108r-38,-96r53,0r17,53r14,-53r47,0r-33,99\",\"w\":140},\"y\":{\"d\":\"20,16v22,-1,27,3,29,-14v-3,-22,-37,-161,-48,-206r50,0r21,108r17,-108r49,0r-39,203v-3,49,-32,44,-79,44r0,-27\",\"w\":139},\"z\":{\"d\":\"125,0r-120,0r0,-28r57,-143r-54,0r0,-33r112,0r0,28r-58,144r63,0r0,32\"},\"{\":{\"d\":\"107,3v-67,9,-79,-20,-79,-91v0,-14,-8,-22,-24,-22r0,-32v31,2,25,-35,24,-66v-2,-44,34,-49,79,-46r0,28v-64,-10,4,85,-53,100v36,9,21,51,24,89v0,8,10,13,29,13r0,27\",\"w\":111},\"|\":{\"d\":\"56,0r-50,0r0,-252r50,0r0,252\",\"w\":61},\"}\":{\"d\":\"107,-110v-31,-3,-26,40,-24,67v3,44,-34,49,-79,46r0,-27v64,9,-4,-87,53,-102v-36,-7,-21,-51,-24,-88v0,-8,-10,-12,-29,-12r0,-28v53,-5,86,8,78,64v-4,25,1,51,25,48r0,32\",\"w\":111},\"~\":{\"d\":\"195,-118v-53,60,-130,-46,-180,20r0,-36v33,-42,91,-7,135,3v16,0,30,-9,45,-25r0,38\",\"w\":210}}});\n";

