(function(n){var t=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global,i,r;if(typeof define=="function"&&define.amd)define(["underscore","jquery","exports"],function(i,r,u){t.Backbone=n(t,u,i,r)});else if(typeof exports!="undefined"){i=require("underscore");try{r=require("jquery")}catch(u){}n(t,exports,i,r)}else t.Backbone=n(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)})(function(n,t,i,r){var ot=n.Backbone,y=Array.prototype.slice,h,k,d,c,g,l,o,nt,it,ut,et,v,s;t.VERSION="1.3.3";t.$=r;t.noConflict=function(){return n.Backbone=ot,this};t.emulateHTTP=!1;t.emulateJSON=!1;var st=function(n,t,r){switch(n){case 1:return function(){return i[t](this[r])};case 2:return function(n){return i[t](this[r],n)};case 3:return function(n,u){return i[t](this[r],w(n,this),u)};case 4:return function(n,u,f){return i[t](this[r],w(n,this),u,f)};default:return function(){var n=y.call(arguments);return n.unshift(this[r]),i[t].apply(i,n)}}},p=function(n,t,r){i.each(t,function(t,u){i[u]&&(n.prototype[u]=st(t,u,r))})},w=function(n,t){return i.isFunction(n)?n:i.isObject(n)&&!t._isModel(n)?ht(n):i.isString(n)?function(t){return t.get(n)}:n},ht=function(n){var t=i.matches(n);return function(n){return t(n.attributes)}},u=t.Events={},b=/\s+/,e=function(n,t,r,u,f){var o=0,s;if(r&&typeof r=="object")for(u!==void 0&&("context"in f)&&f.context===void 0&&(f.context=u),s=i.keys(r);o<s.length;o++)t=e(n,t,s[o],r[s[o]],f);else if(r&&b.test(r))for(s=r.split(b);o<s.length;o++)t=n(t,s[o],u,f);else t=n(t,r,u,f);return t};u.on=function(n,t,i){return h(this,n,t,i)};h=function(n,t,i,r,u){if(n._events=e(k,n._events||{},t,i,{context:r,ctx:n,listening:u}),u){var f=n._listeners||(n._listeners={});f[u.id]=u}return n};u.listenTo=function(n,t,r){var o;if(!n)return this;var u=n._listenId||(n._listenId=i.uniqueId("l")),f=this._listeningTo||(this._listeningTo={}),e=f[u];return e||(o=this._listenId||(this._listenId=i.uniqueId("l")),e=f[u]={obj:n,objId:u,id:o,listeningTo:f,count:0}),h(n,t,r,this,e),this};k=function(n,t,i,r){if(i){var e=n[t]||(n[t]=[]),f=r.context,o=r.ctx,u=r.listening;u&&u.count++;e.push({callback:i,context:f,ctx:f||o,listening:u})}return n};u.off=function(n,t,i){return this._events?(this._events=e(d,this._events,n,t,{context:i,listeners:this._listeners}),this):this};u.stopListening=function(n,t,r){var f=this._listeningTo,e,u,o;if(!f)return this;for(e=n?[n._listenId]:i.keys(f),u=0;u<e.length;u++){if(o=f[e[u]],!o)break;o.obj.off(t,r,this)}return this};d=function(n,t,r,u){var v,y,h,c,l,o;if(n){var e=0,f,a=u.context,s=u.listeners;if(!t&&!r&&!a){for(v=i.keys(s);e<v.length;e++)f=s[v[e]],delete s[f.id],delete f.listeningTo[f.objId];return}for(y=t?[t]:i.keys(n);e<y.length;e++){if(t=y[e],h=n[t],!h)break;for(c=[],l=0;l<h.length;l++)o=h[l],r&&r!==o.callback&&r!==o.callback._callback||a&&a!==o.context?c.push(o):(f=o.listening,f&&--f.count==0&&(delete s[f.id],delete f.listeningTo[f.objId]));c.length?n[t]=c:delete n[t]}return n}};u.once=function(n,t,r){var u=e(c,{},n,t,i.bind(this.off,this));typeof n=="string"&&r==null&&(t=void 0);return this.on(u,t,r)};u.listenToOnce=function(n,t,r){var u=e(c,{},t,r,i.bind(this.stopListening,this,n));return this.listenTo(n,u)};c=function(n,t,r,u){if(r){var f=n[t]=i.once(function(){u(t,f);r.apply(this,arguments)});f._callback=r}return n};u.trigger=function(n){var i,r,t;if(!this._events)return this;for(i=Math.max(0,arguments.length-1),r=Array(i),t=0;t<i;t++)r[t]=arguments[t+1];return e(g,this._events,n,void 0,r),this};g=function(n,t,i,r){if(n){var f=n[t],u=n.all;f&&u&&(u=u.slice());f&&l(f,r);u&&l(u,[t].concat(r))}return n};l=function(n,t){var i,r=-1,u=n.length,f=t[0],e=t[1],o=t[2];switch(t.length){case 0:while(++r<u)(i=n[r]).callback.call(i.ctx);return;case 1:while(++r<u)(i=n[r]).callback.call(i.ctx,f);return;case 2:while(++r<u)(i=n[r]).callback.call(i.ctx,f,e);return;case 3:while(++r<u)(i=n[r]).callback.call(i.ctx,f,e,o);return;default:while(++r<u)(i=n[r]).callback.apply(i.ctx,t);return}};u.bind=u.on;u.unbind=u.off;i.extend(t,u);o=t.Model=function(n,t){var r=n||{},u;t||(t={});this.cid=i.uniqueId(this.cidPrefix);this.attributes={};t.collection&&(this.collection=t.collection);t.parse&&(r=this.parse(r,t)||{});u=i.result(this,"defaults");r=i.defaults(i.extend({},u,r),u);this.set(r,t);this.changed={};this.initialize.apply(this,arguments)};i.extend(o.prototype,u,{changed:null,validationError:null,idAttribute:"id",cidPrefix:"c",initialize:function(){},toJSON:function(){return i.clone(this.attributes)},sync:function(){return t.sync.apply(this,arguments)},get:function(n){return this.attributes[n]},escape:function(n){return i.escape(this.get(n))},has:function(n){return this.get(n)!=null},matches:function(n){return!!i.iteratee(n,this)(this.attributes)},set:function(n,t,r){var f,u,o;if(n==null)return this;if(typeof n=="object"?(f=n,r=t):(f={})[n]=t,r||(r={}),!this._validate(f,r))return!1;var a=r.unset,h=r.silent,e=[],c=this._changing;this._changing=!0;c||(this._previousAttributes=i.clone(this.attributes),this.changed={});var s=this.attributes,l=this.changed,v=this._previousAttributes;for(u in f)t=f[u],i.isEqual(s[u],t)||e.push(u),i.isEqual(v[u],t)?delete l[u]:l[u]=t,a?delete s[u]:s[u]=t;if(this.idAttribute in f&&(this.id=this.get(this.idAttribute)),!h)for(e.length&&(this._pending=r),o=0;o<e.length;o++)this.trigger("change:"+e[o],this,s[e[o]],r);if(c)return this;if(!h)while(this._pending)r=this._pending,this._pending=!1,this.trigger("change",this,r);return this._pending=!1,this._changing=!1,this},unset:function(n,t){return this.set(n,void 0,i.extend({},t,{unset:!0}))},clear:function(n){var t={};for(var r in this.attributes)t[r]=void 0;return this.set(t,i.extend({},n,{unset:!0}))},hasChanged:function(n){return n==null?!i.isEmpty(this.changed):i.has(this.changed,n)},changedAttributes:function(n){var f,t,r,u;if(!n)return this.hasChanged()?i.clone(this.changed):!1;f=this._changing?this._previousAttributes:this.attributes;t={};for(r in n)(u=n[r],i.isEqual(f[r],u))||(t[r]=u);return i.size(t)?t:!1},previous:function(n){return n==null||!this._previousAttributes?null:this._previousAttributes[n]},previousAttributes:function(){return i.clone(this._previousAttributes)},fetch:function(n){n=i.extend({parse:!0},n);var t=this,r=n.success;return n.success=function(i){var u=n.parse?t.parse(i,n):i;if(!t.set(u,n))return!1;r&&r.call(n.context,t,i,n);t.trigger("sync",t,i,n)},s(this,n),this.sync("read",this,n)},save:function(n,t,r){var u,e,h,l;if(n==null||typeof n=="object"?(u=n,r=t):(u={})[n]=t,r=i.extend({validate:!0,parse:!0},r),e=r.wait,u&&!e){if(!this.set(u,r))return!1}else if(!this._validate(u,r))return!1;var f=this,c=r.success,o=this.attributes;return r.success=function(n){f.attributes=o;var t=r.parse?f.parse(n,r):n;if(e&&(t=i.extend({},u,t)),t&&!f.set(t,r))return!1;c&&c.call(r.context,f,n,r);f.trigger("sync",f,n,r)},s(this,r),u&&e&&(this.attributes=i.extend({},o,u)),h=this.isNew()?"create":r.patch?"patch":"update",h!=="patch"||r.attrs||(r.attrs=u),l=this.sync(h,this,r),this.attributes=o,l},destroy:function(n){var r;n=n?i.clone(n):{};var t=this,u=n.success,f=n.wait,e=function(){t.stopListening();t.trigger("destroy",t,t.collection,n)};return n.success=function(i){f&&e();u&&u.call(n.context,t,i,n);t.isNew()||t.trigger("sync",t,i,n)},r=!1,this.isNew()?i.defer(n.success):(s(this,n),r=this.sync("delete",this,n)),f||e(),r},url:function(){var n=i.result(this,"urlRoot")||i.result(this.collection,"url")||v(),t;return this.isNew()?n:(t=this.get(this.idAttribute),n.replace(/[^\/]$/,"$&/")+encodeURIComponent(t))},parse:function(n){return n},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(n){return this._validate({},i.extend({},n,{validate:!0}))},_validate:function(n,t){if(!t.validate||!this.validate)return!0;n=i.extend({},this.attributes,n);var r=this.validationError=this.validate(n,t)||null;return r?(this.trigger("invalid",this,r,i.extend(t,{validationError:r})),!1):!0}});nt={keys:1,values:1,pairs:1,invert:1,pick:0,omit:0,chain:1,isEmpty:1};p(o,nt,"attributes");var a=t.Collection=function(n,t){t||(t={});t.model&&(this.model=t.model);t.comparator!==void 0&&(this.comparator=t.comparator);this._reset();this.initialize.apply(this,arguments);n&&this.reset(n,i.extend({silent:!0},t))},ct={add:!0,remove:!0,merge:!0},lt={add:!0,remove:!1},tt=function(n,t,i){i=Math.min(Math.max(i,0),n.length);for(var u=Array(n.length-i),f=t.length,r=0;r<u.length;r++)u[r]=n[r+i];for(r=0;r<f;r++)n[r+i]=t[r];for(r=0;r<u.length;r++)n[r+f+i]=u[r]};i.extend(a.prototype,u,{model:o,initialize:function(){},toJSON:function(n){return this.map(function(t){return t.toJSON(n)})},sync:function(){return t.sync.apply(this,arguments)},add:function(n,t){return this.set(n,i.extend({merge:!1},t,lt))},remove:function(n,t){var u,r;return t=i.extend({},t),u=!i.isArray(n),n=u?[n]:n.slice(),r=this._removeModels(n,t),!t.silent&&r.length&&(t.changes={added:[],merged:[],removed:r},this.trigger("update",this,t)),u?r[0]:r},set:function(n,t){var v,f,e,a,w,d;if(n!=null){t=i.extend({},ct,t);t.parse&&!this._isModel(n)&&(n=this.parse(n,t)||[]);v=!i.isArray(n);n=v?[n]:n.slice();f=t.at;f!=null&&(f=+f);f>this.length&&(f=this.length);f<0&&(f+=this.length+1);for(var s=[],o=[],y=[],h=[],l={},b=t.add,g=t.merge,k=t.remove,c=!1,p=this.comparator&&f==null&&t.sort!==!1,nt=i.isString(this.comparator)?this.comparator:null,r,u=0;u<n.length;u++)r=n[u],e=this.get(r),e?(g&&r!==e&&(a=this._isModel(r)?r.attributes:r,t.parse&&(a=e.parse(a,t)),e.set(a,t),y.push(e),p&&!c&&(c=e.hasChanged(nt))),l[e.cid]||(l[e.cid]=!0,s.push(e)),n[u]=e):b&&(r=n[u]=this._prepareModel(r,t),r&&(o.push(r),this._addReference(r,t),l[r.cid]=!0,s.push(r)));if(k){for(u=0;u<this.length;u++)r=this.models[u],l[r.cid]||h.push(r);h.length&&this._removeModels(h,t)}if(w=!1,d=!p&&b&&k,s.length&&d?(w=this.length!==s.length||i.some(this.models,function(n,t){return n!==s[t]}),this.models.length=0,tt(this.models,s,0),this.length=this.models.length):o.length&&(p&&(c=!0),tt(this.models,o,f==null?this.length:f),this.length=this.models.length),c&&this.sort({silent:!0}),!t.silent){for(u=0;u<o.length;u++)f!=null&&(t.index=f+u),r=o[u],r.trigger("add",r,this,t);(c||w)&&this.trigger("sort",this,t);(o.length||h.length||y.length)&&(t.changes={added:o,removed:h,merged:y},this.trigger("update",this,t))}return v?n[0]:n}},reset:function(n,t){t=t?i.clone(t):{};for(var r=0;r<this.models.length;r++)this._removeReference(this.models[r],t);return t.previousModels=this.models,this._reset(),n=this.add(n,i.extend({silent:!0},t)),t.silent||this.trigger("reset",this,t),n},push:function(n,t){return this.add(n,i.extend({at:this.length},t))},pop:function(n){var t=this.at(this.length-1);return this.remove(t,n)},unshift:function(n,t){return this.add(n,i.extend({at:0},t))},shift:function(n){var t=this.at(0);return this.remove(t,n)},slice:function(){return y.apply(this.models,arguments)},get:function(n){if(n!=null)return this._byId[n]||this._byId[this.modelId(n.attributes||n)]||n.cid&&this._byId[n.cid]},has:function(n){return this.get(n)!=null},at:function(n){return n<0&&(n+=this.length),this.models[n]},where:function(n,t){return this[t?"find":"filter"](n)},findWhere:function(n){return this.where(n,!0)},sort:function(n){var t=this.comparator,r;if(!t)throw new Error("Cannot sort a set without a comparator");return n||(n={}),r=t.length,i.isFunction(t)&&(t=i.bind(t,this)),r===1||i.isString(t)?this.models=this.sortBy(t):this.models.sort(t),n.silent||this.trigger("sort",this,n),this},pluck:function(n){return this.map(n+"")},fetch:function(n){n=i.extend({parse:!0},n);var r=n.success,t=this;return n.success=function(i){var u=n.reset?"reset":"set";t[u](i,n);r&&r.call(n.context,t,i,n);t.trigger("sync",t,i,n)},s(this,n),this.sync("read",this,n)},create:function(n,t){var r,f,u;return(t=t?i.clone(t):{},r=t.wait,n=this._prepareModel(n,t),!n)?!1:(r||this.add(n,t),f=this,u=t.success,t.success=function(n,t,i){r&&f.add(n,i);u&&u.call(i.context,n,t,i)},n.save(null,t),n)},parse:function(n){return n},clone:function(){return new this.constructor(this.models,{model:this.model,comparator:this.comparator})},modelId:function(n){return n[this.model.prototype.idAttribute||"id"]},_reset:function(){this.length=0;this.models=[];this._byId={}},_prepareModel:function(n,t){if(this._isModel(n))return n.collection||(n.collection=this),n;t=t?i.clone(t):{};t.collection=this;var r=new this.model(n,t);return r.validationError?(this.trigger("invalid",this,r.validationError,t),!1):r},_removeModels:function(n,t){for(var i,u,f,e=[],r=0;r<n.length;r++)(i=this.get(n[r]),i)&&(u=this.indexOf(i),this.models.splice(u,1),this.length--,delete this._byId[i.cid],f=this.modelId(i.attributes),f!=null&&delete this._byId[f],t.silent||(t.index=u,i.trigger("remove",i,this,t)),e.push(i),this._removeReference(i,t));return e},_isModel:function(n){return n instanceof o},_addReference:function(n){this._byId[n.cid]=n;var t=this.modelId(n.attributes);t!=null&&(this._byId[t]=n);n.on("all",this._onModelEvent,this)},_removeReference:function(n){delete this._byId[n.cid];var t=this.modelId(n.attributes);t!=null&&delete this._byId[t];this===n.collection&&delete n.collection;n.off("all",this._onModelEvent,this)},_onModelEvent:function(n,t,i,r){if(t){if((n==="add"||n==="remove")&&i!==this)return;if(n==="destroy"&&this.remove(t,r),n==="change"){var u=this.modelId(t.previousAttributes()),f=this.modelId(t.attributes);u!==f&&(u!=null&&delete this._byId[u],f!=null&&(this._byId[f]=t))}}this.trigger.apply(this,arguments)}});it={forEach:3,each:3,map:3,collect:3,reduce:0,foldl:0,inject:0,reduceRight:0,foldr:0,find:3,detect:3,filter:3,select:3,reject:3,every:3,all:3,some:3,any:3,include:3,includes:3,contains:3,invoke:0,max:3,min:3,toArray:1,size:1,first:3,head:3,take:3,initial:3,rest:3,tail:3,drop:3,last:3,without:0,difference:0,indexOf:3,shuffle:1,lastIndexOf:3,isEmpty:1,chain:1,sample:3,partition:3,groupBy:3,countBy:3,sortBy:3,indexBy:3,findIndex:3,findLastIndex:3};p(a,it,"models");var rt=t.View=function(n){this.cid=i.uniqueId("view");i.extend(this,i.pick(n,vt));this._ensureElement();this.initialize.apply(this,arguments)},at=/^(\S+)\s*(.*)$/,vt=["model","collection","el","id","attributes","className","tagName","events"];i.extend(rt.prototype,u,{tagName:"div",$:function(n){return this.$el.find(n)},initialize:function(){},render:function(){return this},remove:function(){return this._removeElement(),this.stopListening(),this},_removeElement:function(){this.$el.remove()},setElement:function(n){return this.undelegateEvents(),this._setElement(n),this.delegateEvents(),this},_setElement:function(n){this.$el=n instanceof t.$?n:t.$(n);this.el=this.$el[0]},delegateEvents:function(n){var r,t,u;if(n||(n=i.result(this,"events")),!n)return this;this.undelegateEvents();for(r in n)(t=n[r],i.isFunction(t)||(t=this[t]),t)&&(u=r.match(at),this.delegate(u[1],u[2],i.bind(t,this)));return this},delegate:function(n,t,i){this.$el.on(n+".delegateEvents"+this.cid,t,i);return this},undelegateEvents:function(){return this.$el&&this.$el.off(".delegateEvents"+this.cid),this},undelegate:function(n,t,i){return this.$el.off(n+".delegateEvents"+this.cid,t,i),this},_createElement:function(n){return document.createElement(n)},_ensureElement:function(){if(this.el)this.setElement(i.result(this,"el"));else{var n=i.extend({},i.result(this,"attributes"));this.id&&(n.id=i.result(this,"id"));this.className&&(n["class"]=i.result(this,"className"));this.setElement(this._createElement(i.result(this,"tagName")));this._setAttributes(n)}},_setAttributes:function(n){this.$el.attr(n)}});t.sync=function(n,r,u){var e=ut[n],f,o,s,h;return i.defaults(u||(u={}),{emulateHTTP:t.emulateHTTP,emulateJSON:t.emulateJSON}),f={type:e,dataType:"json"},u.url||(f.url=i.result(r,"url")||v()),u.data==null&&r&&(n==="create"||n==="update"||n==="patch")&&(f.contentType="application/json",f.data=JSON.stringify(u.attrs||r.toJSON(u))),u.emulateJSON&&(f.contentType="application/x-www-form-urlencoded",f.data=f.data?{model:f.data}:{}),u.emulateHTTP&&(e==="PUT"||e==="DELETE"||e==="PATCH")&&(f.type="POST",u.emulateJSON&&(f.data._method=e),o=u.beforeSend,u.beforeSend=function(n){return n.setRequestHeader("X-HTTP-Method-Override",e),o?o.apply(this,arguments):void 0}),f.type==="GET"||u.emulateJSON||(f.processData=!1),s=u.error,u.error=function(n,t,i){u.textStatus=t;u.errorThrown=i;s&&s.call(u.context,n,t,i)},h=u.xhr=t.ajax(i.extend(f,u)),r.trigger("request",r,h,u),h};ut={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};t.ajax=function(){return t.$.ajax.apply(t.$,arguments)};var ft=t.Router=function(n){n||(n={});n.routes&&(this.routes=n.routes);this._bindRoutes();this.initialize.apply(this,arguments)},yt=/\((.*?)\)/g,pt=/(\(\?)?:\w+/g,wt=/\*\w+/g,bt=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend(ft.prototype,u,{initialize:function(){},route:function(n,r,u){i.isRegExp(n)||(n=this._routeToRegExp(n));i.isFunction(r)&&(u=r,r="");u||(u=this[r]);var f=this;return t.history.route(n,function(i){var e=f._extractParameters(n,i);f.execute(u,e,r)!==!1&&(f.trigger.apply(f,["route:"+r].concat(e)),f.trigger("route",r,e),t.history.trigger("route",f,r,e))}),this},execute:function(n,t){n&&n.apply(this,t)},navigate:function(n,i){return t.history.navigate(n,i),this},_bindRoutes:function(){if(this.routes){this.routes=i.result(this,"routes");for(var n,t=i.keys(this.routes);(n=t.pop())!=null;)this.route(n,this.routes[n])}},_routeToRegExp:function(n){return n=n.replace(bt,"\\$&").replace(yt,"(?:$1)?").replace(pt,function(n,t){return t?n:"([^/?]+)"}).replace(wt,"([^?]*?)"),new RegExp("^"+n+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(n,t){var r=n.exec(t).slice(1);return i.map(r,function(n,t){return t===r.length-1?n||null:n?decodeURIComponent(n):null})}});var f=t.History=function(){this.handlers=[];this.checkUrl=i.bind(this.checkUrl,this);typeof window!="undefined"&&(this.location=window.location,this.history=window.history)},kt=/^[#\/]|\s+$/g,dt=/^\/+|\/+$/g,gt=/#.*$/;return f.started=!1,i.extend(f.prototype,u,{interval:50,atRoot:function(){var n=this.location.pathname.replace(/[^\/]$/,"$&/");return n===this.root&&!this.getSearch()},matchRoot:function(){var n=this.decodeFragment(this.location.pathname),t=n.slice(0,this.root.length-1)+"/";return t===this.root},decodeFragment:function(n){return decodeURI(n.replace(/%25/g,"%2525"))},getSearch:function(){var n=this.location.href.replace(/#.*/,"").match(/\?.+/);return n?n[0]:""},getHash:function(n){var t=(n||this).location.href.match(/#(.*)$/);return t?t[1]:""},getPath:function(){var n=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return n.charAt(0)==="/"?n.slice(1):n},getFragment:function(n){return n==null&&(n=this._usePushState||!this._wantsHashChange?this.getPath():this.getHash()),n.replace(kt,"")},start:function(n){var e,r,t,u;if(f.started)throw new Error("Backbone.history has already been started");if(f.started=!0,this.options=i.extend({root:"/"},this.options,n),this.root=this.options.root,this._wantsHashChange=this.options.hashChange!==!1,this._hasHashChange="onhashchange"in window&&(document.documentMode===void 0||document.documentMode>7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.history&&this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(dt,"/"),this._wantsHashChange&&this._wantsPushState)if(this._hasPushState||this.atRoot())this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0});else return e=this.root.slice(0,-1)||"/",this.location.replace(e+"#"+this.getPath()),!0;return this._hasHashChange||!this._wantsHashChange||this._usePushState||(this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1,r=document.body,t=r.insertBefore(this.iframe,r.firstChild).contentWindow,t.document.open(),t.document.close(),t.location.hash="#"+this.fragment),u=window.addEventListener||function(n,t){return attachEvent("on"+n,t)},this._usePushState?u("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?u("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),this.options.silent?void 0:this.loadUrl()},stop:function(){var n=window.removeEventListener||function(n,t){return detachEvent("on"+n,t)};this._usePushState?n("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&n("hashchange",this.checkUrl,!1);this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null);this._checkUrlInterval&&clearInterval(this._checkUrlInterval);f.started=!1},route:function(n,t){this.handlers.unshift({route:n,callback:t})},checkUrl:function(){var n=this.getFragment();if(n===this.fragment&&this.iframe&&(n=this.getHash(this.iframe.contentWindow)),n===this.fragment)return!1;this.iframe&&this.navigate(n);this.loadUrl()},loadUrl:function(n){return this.matchRoot()?(n=this.fragment=this.getFragment(n),i.some(this.handlers,function(t){if(t.route.test(n))return t.callback(n),!0})):!1},navigate:function(n,t){var i,u,r;if(!f.started)return!1;if(t&&t!==!0||(t={trigger:!!t}),n=this.getFragment(n||""),i=this.root,(n===""||n.charAt(0)==="?")&&(i=i.slice(0,-1)||"/"),u=i+n,n=this.decodeFragment(n.replace(gt,"")),this.fragment!==n){if(this.fragment=n,this._usePushState)this.history[t.replace?"replaceState":"pushState"]({},document.title,u);else if(this._wantsHashChange)this._updateHash(this.location,n,t.replace),this.iframe&&n!==this.getHash(this.iframe.contentWindow)&&(r=this.iframe.contentWindow,t.replace||(r.document.open(),r.document.close()),this._updateHash(r.location,n,t.replace));else return this.location.assign(u);if(t.trigger)return this.loadUrl(n)}},_updateHash:function(n,t,i){if(i){var r=n.href.replace(/(javascript:|#).*$/,"");n.replace(r+"#"+t)}else n.hash="#"+t}}),t.history=new f,et=function(n,t){var u=this,r;return r=n&&i.has(n,"constructor")?n.constructor:function(){return u.apply(this,arguments)},i.extend(r,u,t),r.prototype=i.create(u.prototype,n),r.prototype.constructor=r,r.__super__=u.prototype,r},o.extend=a.extend=ft.extend=rt.extend=f.extend=et,v=function(){throw new Error('A "url" property or function must be specified');},s=function(n,t){var i=t.error;t.error=function(r){i&&i.call(t.context,n,r,t);n.trigger("error",n,r,t)}},t})