(function(t,e){if(typeofdefine==="function"&&define.amd){define(["underscore","jquery","exports"],function(i,r,s){t.Backbone=e(t,s,i,r)})}elseif(typeofexports!=="undefined"){vari=require("underscore");e(t,exports,i)}else{t.Backbone=e(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)}})(this,function(t,e,i,r){vars=t.Backbone;varn=[];vara=n.push;varo=n.slice;varh=n.splice;e.VERSION="1.1.2";e.$=r;e.noConflict=function(){t.Backbone=s;returnthis};e.emulateHTTP=false;e.emulateJSON=false;varu=e.Events={on:function(t,e,i){if(!c(this,"on",t,[e,i])||!e)returnthis;this._events||(this._events={});varr=this._events[t]||(this._events[t]=[]);r.push({callback:e,context:i,ctx:i||this});returnthis},once:function(t,e,r){if(!c(this,"once",t,[e,r])||!e)returnthis;vars=this;varn=i.once(function(){s.off(t,n);e.apply(this,arguments)});n._callback=e;returnthis.on(t,n,r)},off:function(t,e,r){vars,n,a,o,h,u,l,f;if(!this._events||!c(this,"off",t,[e,r]))returnthis;if(!t&&!e&&!r){this._events=void0;returnthis}o=t?[t]:i.keys(this._events);for(h=0,u=o.length;h<u;h++){t=o[h];if(a=this._events[t]){this._events[t]=s=[];if(e||r){for(l=0,f=a.length;l<f;l++){n=a[l];if(e&&e!==n.callback&&e!==n.callback._callback||r&&r!==n.context){s.push(n)}}}if(!s.length)deletethis._events[t]}}returnthis},trigger:function(t){if(!this._events)returnthis;vare=o.call(arguments,1);if(!c(this,"trigger",t,e))returnthis;vari=this._events[t];varr=this._events.all;if(i)f(i,e);if(r)f(r,arguments);returnthis},stopListening:function(t,e,r){vars=this._listeningTo;if(!s)returnthis;varn=!e&&!r;if(!r&&typeofe==="object")r=this;if(t)(s={})[t._listenId]=t;for(varains){t=s[a];t.off(e,r,this);if(n||i.isEmpty(t._events))deletethis._listeningTo[a]}returnthis}};varl=/\s+/;varc=function(t,e,i,r){if(!i)returntrue;if(typeofi==="object"){for(varsini){t[e].apply(t,[s,i[s]].concat(r))}returnfalse}if(l.test(i)){varn=i.split(l);for(vara=0,o=n.length;a<o;a++){t[e].apply(t,[n[a]].concat(r))}returnfalse}returntrue};varf=function(t,e){vari,r=-1,s=t.length,n=e[0],a=e[1],o=e[2];switch(e.length){case0:while(++r<s)(i=t[r]).callback.call(i.ctx);return;case1:while(++r<s)(i=t[r]).callback.call(i.ctx,n);return;case2:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a);return;case3:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a,o);return;default:while(++r<s)(i=t[r]).callback.apply(i.ctx,e);return}};vard={listenTo:"on",listenToOnce:"once"};i.each(d,function(t,e){u[e]=function(e,r,s){varn=this._listeningTo||(this._listeningTo={});vara=e._listenId||(e._listenId=i.uniqueId("l"));n[a]=e;if(!s&&typeofr==="object")s=this;e[t](r,s,this);returnthis}});u.bind=u.on;u.unbind=u.off;i.extend(e,u);varp=e.Model=function(t,e){varr=t||{};e||(e={});this.cid=i.uniqueId("c");this.attributes={};if(e.collection)this.collection=e.collection;if(e.parse)r=this.parse(r,e)||{};r=i.defaults({},r,i.result(this,"defaults"));this.set(r,e);this.changed={};this.initialize.apply(this,arguments)};i.extend(p.prototype,u,{changed:null,validationError:null,idAttribute:"id",initialize:function(){},toJSON:function(t){returni.clone(this.attributes)},sync:function(){returne.sync.apply(this,arguments)},get:function(t){returnthis.attributes[t]},escape:function(t){returni.escape(this.get(t))},has:function(t){returnthis.get(t)!=null},set:function(t,e,r){vars,n,a,o,h,u,l,c;if(t==null)returnthis;if(typeoft==="object"){n=t;r=e}else{(n={})[t]=e}r||(r={});if(!this._validate(n,r))returnfalse;a=r.unset;h=r.silent;o=[];u=this._changing;this._changing=true;if(!u){this._previousAttributes=i.clone(this.attributes);this.changed={}}c=this.attributes,l=this._previousAttributes;if(this.idAttributeinn)this.id=n[this.idAttribute];for(sinn){e=n[s];if(!i.isEqual(c[s],e))o.push(s);if(!i.isEqual(l[s],e)){this.changed[s]=e}else{deletethis.changed[s]}a?deletec[s]:c[s]=e}if(!h){if(o.length)this._pending=r;for(varf=0,d=o.length;f<d;f++){this.trigger("change:"+o[f],this,c[o[f]],r)}}if(u)returnthis;if(!h){while(this._pending){r=this._pending;this._pending=false;this.trigger("change",this,r)}}this._pending=false;this._changing=false;returnthis},unset:function(t,e){returnthis.set(t,void0,i.extend({},e,{unset:true}))},clear:function(t){vare={};for(varrinthis.attributes)e[r]=void0;returnthis.set(e,i.extend({},t,{unset:true}))},hasChanged:function(t){if(t==null)return!i.isEmpty(this.changed);returni.has(this.changed,t)},changedAttributes:function(t){if(!t)returnthis.hasChanged()?i.clone(this.changed):false;vare,r=false;vars=this._changing?this._previousAttributes:this.attributes;for(varnint){if(i.isEqual(s[n],e=t[n]))continue;(r||(r={}))[n]=e}returnr},previous:function(t){if(t==null||!this._previousAttributes)returnnull;returnthis._previousAttributes[t]},previousAttributes:function(){returni.clone(this._previousAttributes)},fetch:function(t){t=t?i.clone(t):{};if(t.parse===void0)t.parse=true;vare=this;varr=t.success;t.success=function(i){if(!e.set(e.parse(i,t),t))returnfalse;if(r)r(e,i,t);e.trigger("sync",e,i,t)};q(this,t);returnthis.sync("read",this,t)},save:function(t,e,r){vars,n,a,o=this.attributes;if(t==null||typeoft==="object"){s=t;r=e}else{(s={})[t]=e}r=i.extend({validate:true},r);if(s&&!r.wait){if(!this.set(s,r))returnfalse}else{if(!this._validate(s,r))returnfalse}if(s&&r.wait){this.attributes=i.extend({},o,s)}if(r.parse===void0)r.parse=true;varh=this;varu=r.success;r.success=function(t){h.attributes=o;vare=h.parse(t,r);if(r.wait)e=i.extend(s||{},e);if(i.isObject(e)&&!h.set(e,r)){returnfalse}if(u)u(h,t,r);h.trigger("sync",h,t,r)};q(this,r);n=this.isNew()?"create":r.patch?"patch":"update";if(n==="patch")r.attrs=s;a=this.sync(n,this,r);if(s&&r.wait)this.attributes=o;returna},destroy:function(t){t=t?i.clone(t):{};vare=this;varr=t.success;vars=function(){e.trigger("destroy",e,e.collection,t)};t.success=function(i){if(t.wait||e.isNew())s();if(r)r(e,i,t);if(!e.isNew())e.trigger("sync",e,i,t)};if(this.isNew()){t.success();returnfalse}q(this,t);varn=this.sync("delete",this,t);if(!t.wait)s();returnn},url:function(){vart=i.result(this,"urlRoot")||i.result(this.collection,"url")||M();if(this.isNew())returnt;returnt.replace(/([^\/])$/,"$1/")+encodeURIComponent(this.id)},parse:function(t,e){returnt},clone:function(){returnnewthis.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(t){returnthis._validate({},i.extend(t||{},{validate:true}))},_validate:function(t,e){if(!e.validate||!this.validate)returntrue;t=i.extend({},this.attributes,t);varr=this.validationError=this.validate(t,e)||null;if(!r)returntrue;this.trigger("invalid",this,r,i.extend(e,{validationError:r}));returnfalse}});varv=["keys","values","pairs","invert","pick","omit"];i.each(v,function(t){p.prototype[t]=function(){vare=o.call(arguments);e.unshift(this.attributes);returni[t].apply(i,e)}});varg=e.Collection=function(t,e){e||(e={});if(e.model)this.model=e.model;if(e.comparator!==void0)this.comparator=e.comparator;this._reset();this.initialize.apply(this,arguments);if(t)this.reset(t,i.extend({silent:true},e))};varm={add:true,remove:true,merge:true};vary={add:true,remove:false};i.extend(g.prototype,u,{model:p,initialize:function(){},toJSON:function(t){returnthis.map(function(e){returne.toJSON(t)})},sync:function(){returne.sync.apply(this,arguments)},add:function(t,e){returnthis.set(t,i.extend({merge:false},e,y))},remove:function(t,e){varr=!i.isArray(t);t=r?[t]:i.clone(t);e||(e={});vars,n,a,o;for(s=0,n=t.length;s<n;s++){o=t[s]=this.get(t[s]);if(!o)continue;deletethis._byId[o.id];deletethis._byId[o.cid];a=this.indexOf(o);this.models.splice(a,1);this.length--;if(!e.silent){e.index=a;o.trigger("remove",o,this,e)}this._removeReference(o,e)}returnr?t[0]:t},set:function(t,e){e=i.defaults({},e,m);if(e.parse)t=this.parse(t,e);varr=!i.isArray(t);t=r?t?[t]:[]:i.clone(t);vars,n,a,o,h,u,l;varc=e.at;varf=this.model;vard=this.comparator&&c==null&&e.sort!==false;varv=i.isString(this.comparator)?this.comparator:null;varg=[],y=[],_={};varb=e.add,w=e.merge,x=e.remove;varE=!d&&b&&x?[]:false;for(s=0,n=t.length;s<n;s++){h=t[s]||{};if(hinstanceofp){a=o=h}else{a=h[f.prototype.idAttribute||"id"]}if(u=this.get(a)){if(x)_[u.cid]=true;if(w){h=h===o?o.attributes:h;if(e.parse)h=u.parse(h,e);u.set(h,e);if(d&&!l&&u.hasChanged(v))l=true}t[s]=u}elseif(b){o=t[s]=this._prepareModel(h,e);if(!o)continue;g.push(o);this._addReference(o,e)}o=u||o;if(E&&(o.isNew()||!_[o.id]))E.push(o);_[o.id]=true}if(x){for(s=0,n=this.length;s<n;++s){if(!_[(o=this.models[s]).cid])y.push(o)}if(y.length)this.remove(y,e)}if(g.length||E&&E.length){if(d)l=true;this.length+=g.length;if(c!=null){for(s=0,n=g.length;s<n;s++){this.models.splice(c+s,0,g[s])}}else{if(E)this.models.length=0;vark=E||g;for(s=0,n=k.length;s<n;s++){this.models.push(k[s])}}}if(l)this.sort({silent:true});if(!e.silent){for(s=0,n=g.length;s<n;s++){(o=g[s]).trigger("add",o,this,e)}if(l||E&&E.length)this.trigger("sort",this,e)}returnr?t[0]:t},reset:function(t,e){e||(e={});for(varr=0,s=this.models.length;r<s;r++){this._removeReference(this.models[r],e)}e.previousModels=this.models;this._reset();t=this.add(t,i.extend({silent:true},e));if(!e.silent)this.trigger("reset",this,e);returnt},push:function(t,e){returnthis.add(t,i.extend({at:this.length},e))},pop:function(t){vare=this.at(this.length-1);this.remove(e,t);returne},unshift:function(t,e){returnthis.add(t,i.extend({at:0},e))},shift:function(t){vare=this.at(0);this.remove(e,t);returne},slice:function(){returno.apply(this.models,arguments)},get:function(t){if(t==null)returnvoid0;returnthis._byId[t]||this._byId[t.id]||this._byId[t.cid]},at:function(t){returnthis.models[t]},where:function(t,e){if(i.isEmpty(t))returne?void0:[];returnthis[e?"find":"filter"](function(e){for(variint){if(t[i]!==e.get(i))returnfalse}returntrue})},findWhere:function(t){returnthis.where(t,true)},sort:function(t){if(!this.comparator)thrownewError("Cannot sort a set without a comparator");t||(t={});if(i.isString(this.comparator)||this.comparator.length===1){this.models=this.sortBy(this.comparator,this)}else{this.models.sort(i.bind(this.comparator,this))}if(!t.silent)this.trigger("sort",this,t);returnthis},pluck:function(t){returni.invoke(this.models,"get",t)},fetch:function(t){t=t?i.clone(t):{};if(t.parse===void0)t.parse=true;vare=t.success;varr=this;t.success=function(i){vars=t.reset?"reset":"set";r[s](i,t);if(e)e(r,i,t);r.trigger("sync",r,i,t)};q(this,t);returnthis.sync("read",this,t)},create:function(t,e){e=e?i.clone(e):{};if(!(t=this._prepareModel(t,e)))returnfalse;if(!e.wait)this.add(t,e);varr=this;vars=e.success;e.success=function(t,i){if(e.wait)r.add(t,e);if(s)s(t,i,e)};t.save(null,e);returnt},parse:function(t,e){returnt},clone:function(){returnnewthis.constructor(this.models)},_reset:function(){this.length=0;this.models=[];this._byId={}},_prepareModel:function(t,e){if(tinstanceofp)returnt;e=e?i.clone(e):{};e.collection=this;varr=newthis.model(t,e);if(!r.validationError)returnr;this.trigger("invalid",this,r.validationError,e);returnfalse},_addReference:function(t,e){this._byId[t.cid]=t;if(t.id!=null)this._byId[t.id]=t;if(!t.collection)t.collection=this;t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){if(this===t.collection)deletet.collection;t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,i,r){if((t==="add"||t==="remove")&&i!==this)return;if(t==="destroy")this.remove(e,r);if(e&&t==="change:"+e.idAttribute){deletethis._byId[e.previous(e.idAttribute)];if(e.id!=null)this._byId[e.id]=e}this.trigger.apply(this,arguments)}});var_=["forEach","each","map","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","max","min","toArray","size","first","head","take","initial","rest","tail","drop","last","without","difference","indexOf","shuffle","lastIndexOf","isEmpty","chain","sample"];i.each(_,function(t){g.prototype[t]=function(){vare=o.call(arguments);e.unshift(this.models);returni[t].apply(i,e)}});varb=["groupBy","countBy","sortBy","indexBy"];i.each(b,function(t){g.prototype[t]=function(e,r){vars=i.isFunction(e)?e:function(t){returnt.get(e)};returni[t](this.models,s,r)}});varw=e.View=function(t){this.cid=i.uniqueId("view");t||(t={});i.extend(this,i.pick(t,E));this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()};varx=/^(\S+)\s*(.*)$/;varE=["model","collection","el","id","attributes","className","tagName","events"];i.extend(w.prototype,u,{tagName:"div",$:function(t){returnthis.$el.find(t)},initialize:function(){},render:function(){returnthis},remove:function(){this.$el.remove();this.stopListening();returnthis},setElement:function(t,i){if(this.$el)this.undelegateEvents();this.$el=tinstanceofe.$?t:e.$(t);this.el=this.$el[0];if(i!==false)this.delegateEvents();returnthis},delegateEvents:function(t){if(!(t||(t=i.result(this,"events"))))returnthis;this.undelegateEvents();for(vareint){varr=t[e];if(!i.isFunction(r))r=this[t[e]];if(!r)continue;vars=e.match(x);varn=s[1],a=s[2];r=i.bind(r,this);n+=".delegateEvents"+this.cid;if(a===""){this.$el.on(n,r)}else{this.$el.on(n,a,r)}}returnthis},undelegateEvents:function(){this.$el.off(".delegateEvents"+this.cid);returnthis},_ensureElement:function(){if(!this.el){vart=i.extend({},i.result(this,"attributes"));if(this.id)t.id=i.result(this,"id");if(this.className)t["class"]=i.result(this,"className");varr=e.$("<"+i.result(this,"tagName")+">").attr(t);this.setElement(r,false)}else{this.setElement(i.result(this,"el"),false)}}});e.sync=function(t,r,s){varn=T[t];i.defaults(s||(s={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});vara={type:n,dataType:"json"};if(!s.url){a.url=i.result(r,"url")||M()}if(s.data==null&&r&&(t==="create"||t==="update"||t==="patch")){a.contentType="application/json";a.data=JSON.stringify(s.attrs||r.toJSON(s))}if(s.emulateJSON){a.contentType="application/x-www-form-urlencoded";a.data=a.data?{model:a.data}:{}}if(s.emulateHTTP&&(n==="PUT"||n==="DELETE"||n==="PATCH")){a.type="POST";if(s.emulateJSON)a.data._method=n;varo=s.beforeSend;s.beforeSend=function(t){t.setRequestHeader("X-HTTP-Method-Override",n);if(o)returno.apply(this,arguments)}}if(a.type!=="GET"&&!s.emulateJSON){a.processData=false}if(a.type==="PATCH"&&k){a.xhr=function(){returnnewActiveXObject("Microsoft.XMLHTTP")}}varh=s.xhr=e.ajax(i.extend(a,s));r.trigger("request",r,h,s);returnh};vark=typeofwindow!=="undefined"&&!!window.ActiveXObject&&!(window.XMLHttpRequest&&(newXMLHttpRequest).dispatchEvent);varT={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){returne.$.ajax.apply(e.$,arguments)};var$=e.Router=function(t){t||(t={});if(t.routes)this.routes=t.routes;this._bindRoutes();this.initialize.apply(this,arguments)};varS=/\((.*?)\)/g;varH=/(\(\?)?:\w+/g;varA=/\*\w+/g;varI=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend($.prototype,u,{initialize:function(){},route:function(t,r,s){if(!i.isRegExp(t))t=this._routeToRegExp(t);if(i.isFunction(r)){s=r;r=""}if(!s)s=this[r];varn=this;e.history.route(t,function(i){vara=n._extractParameters(t,i);n.execute(s,a);n.trigger.apply(n,["route:"+r].concat(a));n.trigger("route",r,a);e.history.trigger("route",n,r,a)});returnthis},execute:function(t,e){if(t)t.apply(this,e)},navigate:function(t,i){e.history.navigate(t,i);returnthis},_bindRoutes:function(){if(!this.routes)return;this.routes=i.result(this,"routes");vart,e=i.keys(this.routes);while((t=e.pop())!=null){this.route(t,this.routes[t])}},_routeToRegExp:function(t){t=t.replace(I,"\\$&").replace(S,"(?:$1)?").replace(H,function(t,e){returne?t:"([^/?]+)"}).replace(A,"([^?]*?)");returnnewRegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){varr=t.exec(e).slice(1);returni.map(r,function(t,e){if(e===r.length-1)returnt||null;returnt?decodeURIComponent(t):null})}});varN=e.History=function(){this.handlers=[];i.bindAll(this,"checkUrl");if(typeofwindow!=="undefined"){this.location=window.location;this.history=window.history}};varR=/^[#\/]|\s+$/g;varO=/^\/+|\/+$/g;varP=/msie [\w.]+/;varC=/\/$/;varj=/#.*$/;N.started=false;i.extend(N.prototype,u,{interval:50,atRoot:function(){returnthis.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){vare=(t||this).location.href.match(/#(.*)$/);returne?e[1]:""},getFragment:function(t,e){if(t==null){if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);vari=this.root.replace(C,"");if(!t.indexOf(i))t=t.slice(i.length)}else{t=this.getHash()}}returnt.replace(R,"")},start:function(t){if(N.started)thrownewError("Backbone.history has already been started");N.started=true;this.options=i.extend({root:"/"},this.options,t);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);varr=this.getFragment();vars=document.documentMode;varn=P.exec(navigator.userAgent.toLowerCase())&&(!s||s<=7);this.root=("/"+this.root+"/").replace(O,"/");if(n&&this._wantsHashChange){vara=e.$('<iframe src="javascript:0" tabindex="-1">');this.iframe=a.hide().appendTo("body")[0].contentWindow;this.navigate(r)}if(this._hasPushState){e.$(window).on("popstate",this.checkUrl)}elseif(this._wantsHashChange&&"onhashchange"inwindow&&!n){e.$(window).on("hashchange",this.checkUrl)}elseif(this._wantsHashChange){this._checkUrlInterval=setInterval(this.checkUrl,this.interval)}this.fragment=r;varo=this.location;if(this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){this.fragment=this.getFragment(null,true);this.location.replace(this.root+"#"+this.fragment);returntrue}elseif(this._hasPushState&&this.atRoot()&&o.hash){this.fragment=this.getHash().replace(R,"");this.history.replaceState({},document.title,this.root+this.fragment)}}if(!this.options.silent)returnthis.loadUrl()},stop:function(){e.$(window).off("popstate",this.checkUrl).off("hashchange",this.checkUrl);if(this._checkUrlInterval)clearInterval(this._checkUrlInterval);N.started=false},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){vare=this.getFragment();if(e===this.fragment&&this.iframe){e=this.getFragment(this.getHash(this.iframe))}if(e===this.fragment)returnfalse;if(this.iframe)this.navigate(e);this.loadUrl()},loadUrl:function(t){t=this.fragment=this.getFragment(t);returni.any(this.handlers,function(e){if(e.route.test(t)){e.callback(t);returntrue}})},navigate:function(t,e){if(!N.started)returnfalse;if(!e||e===true)e={trigger:!!e};vari=this.root+(t=this.getFragment(t||""));t=t.replace(j,"");if(this.fragment===t)return;this.fragment=t;if(t===""&&i!=="/")i=i.slice(0,-1);if(this._hasPushState){this.history[e.replace?"replaceState":"pushState"]({},document.title,i)}elseif(this._wantsHashChange){this._updateHash(this.location,t,e.replace);if(this.iframe&&t!==this.getFragment(this.getHash(this.iframe))){if(!e.replace)this.iframe.document.open().close();this._updateHash(this.iframe.location,t,e.replace)}}else{returnthis.location.assign(i)}if(e.trigger)returnthis.loadUrl(t)},_updateHash:function(t,e,i){if(i){varr=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else{t.hash="#"+e}}});e.history=newN;varU=function(t,e){varr=this;vars;if(t&&i.has(t,"constructor")){s=t.constructor}else{s=function(){returnr.apply(this,arguments)}}i.extend(s,r,e);varn=function(){this.constructor=s};n.prototype=r.prototype;s.prototype=newn;if(t)i.extend(s.prototype,t);s.__super__=r.prototype;returns};p.extend=g.extend=$.extend=w.extend=N.extend=U;varM=function(){thrownewError('A "url" property or function must be specified')};varq=function(t,e){vari=e.error;e.error=function(r){if(i)i(t,r,e);t.trigger("error",t,r,e)}};returne});
// From http://stackoverflow.com/a/19431552
// Compatibility override - Backbone 1.1 got rid of the 'options' binding
// automatically to views in the constructor - we need to keep that.
// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
// Underscore may be freely distributed under the MIT license.
(function(){varn=this,t=n._,r=Array.prototype,e=Object.prototype,u=Function.prototype,i=r.push,a=r.slice,o=r.concat,l=e.toString,c=e.hasOwnProperty,f=Array.isArray,s=Object.keys,p=u.bind,h=function(n){returnninstanceofh?n:thisinstanceofh?void(this._wrapped=n):newh(n)};"undefined"!=typeofexports?("undefined"!=typeofmodule&&module.exports&&(exports=module.exports=h),exports._=h):n._=h,h.VERSION="1.7.0";varg=function(n,t,r){if(t===void0)returnn;switch(null==r?3:r){case1:returnfunction(r){returnn.call(t,r)};case2:returnfunction(r,e){returnn.call(t,r,e)};case3:returnfunction(r,e,u){returnn.call(t,r,e,u)};case4:returnfunction(r,e,u,i){returnn.call(t,r,e,u,i)}}returnfunction(){returnn.apply(t,arguments)}};h.iteratee=function(n,t,r){returnnull==n?h.identity:h.isFunction(n)?g(n,t,r):h.isObject(n)?h.matches(n):h.property(n)},h.each=h.forEach=function(n,t,r){if(null==n)returnn;t=g(t,r);vare,u=n.length;if(u===+u)for(e=0;u>e;e++)t(n[e],e,n);else{vari=h.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}returnn},h.map=h.collect=function(n,t,r){if(null==n)return[];t=h.iteratee(t,r);for(vare,u=n.length!==+n.length&&h.keys(n),i=(u||n).length,a=Array(i),o=0;i>o;o++)e=u?u[o]:o,a[o]=t(n[e],e,n);returna};varv="Reduce of empty array with no initial value";h.reduce=h.foldl=h.inject=function(n,t,r,e){null==n&&(n=[]),t=g(t,e,4);varu,i=n.length!==+n.length&&h.keys(n),a=(i||n).length,o=0;if(arguments.length<3){if(!a)thrownewTypeError(v);r=n[i?i[o++]:o++]}for(;a>o;o++)u=i?i[o]:o,r=t(r,n[u],u,n);returnr},h.reduceRight=h.foldr=function(n,t,r,e){null==n&&(n=[]),t=g(t,e,4);varu,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;if(arguments.length<3){if(!a)thrownewTypeError(v);r=n[i?i[--a]:--a]}for(;a--;)u=i?i[a]:a,r=t(r,n[u],u,n);returnr},h.find=h.detect=function(n,t,r){vare;returnt=h.iteratee(t,r),h.some(n,function(n,r,u){returnt(n,r,u)?(e=n,!0):void0}),e},h.filter=h.select=function(n,t,r){vare=[];returnnull==n?e:(t=h.iteratee(t,r),h.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e)},h.reject=function(n,t,r){returnh.filter(n,h.negate(h.iteratee(t)),r)},h.every=h.all=function(n,t,r){if(null==n)return!0;t=h.iteratee(t,r);vare,u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;for(e=0;a>e;e++)if(u=i?i[e]:e,!t(n[u],u,n))return!1;return!0},h.some=h.any=function(n,t,r){if(null==n)return!1;t=h.iteratee(t,r);vare,u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;for(e=0;a>e;e++)if(u=i?i[e]:e,t(n[u],u,n))return!0;return!1},h.contains=h.include=function(n,t){returnnull==n?!1:(n.length!==+n.length&&(n=h.values(n)),h.indexOf(n,t)>=0)},h.invoke=function(n,t){varr=a.call(arguments,2),e=h.isFunction(t);returnh.map(n,function(n){return(e?t:n[t]).apply(n,r)})},h.pluck=function(n,t){returnh.map(n,h.property(t))},h.where=function(n,t){returnh.filter(n,h.matches(t))},h.findWhere=function(n,t){returnh.find(n,h.matches(t))},h.max=function(n,t,r){vare,u,i=-1/0,a=-1/0;if(null==t&&null!=n){n=n.length===+n.length?n:h.values(n);for(varo=0,l=n.length;l>o;o++)e=n[o],e>i&&(i=e)}elset=h.iteratee(t,r),h.each(n,function(n,r,e){u=t(n,r,e),(u>a||u===-1/0&&i===-1/0)&&(i=n,a=u)});returni},h.min=function(n,t,r){vare,u,i=1/0,a=1/0;if(null==t&&null!=n){n=n.length===+n.length?n:h.values(n);for(varo=0,l=n.length;l>o;o++)e=n[o],i>e&&(i=e)}elset=h.iteratee(t,r),h.each(n,function(n,r,e){u=t(n,r,e),(a>u||1/0===u&&1/0===i)&&(i=n,a=u)});returni},h.shuffle=function(n){for(vart,r=n&&n.length===+n.length?n:h.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=h.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];returnu},h.sample=function(n,t,r){returnnull==t||r?(n.length!==+n.length&&(n=h.values(n)),n[h.random(n.length-1)]):h.shuffle(n).slice(0,Math.max(0,t))},h.sortBy=function(n,t,r){returnt=h.iteratee(t,r),h.pluck(h.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){varr=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void0)return1;if(e>r||e===void0)return-1}returnn.index-t.index}),"value")};varm=function(n){returnfunction(t,r,e){varu={};returnr=h.iteratee(r,e),h.each(t,function(e,i){vara=r(e,i,t);n(u,e,a)}),u}};h.groupBy=m(function(n,t,r){h.has(n,r)?n[r].push(t):n[r]=[t]}),h.indexBy=m(function(n,t,r){n[r]=t}),h.countBy=m(function(n,t,r){h.has(n,r)?n[r]++:n[r]=1}),h.sortedIndex=function(n,t,r,e){r=h.iteratee(r,e,1);for(varu=r(t),i=0,a=n.length;a>i;){varo=i+a>>>1;r(n[o])<u?i=o+1:a=o}returni},h.toArray=function(n){returnn?h.isArray(n)?a.call(n):n.length===+n.length?h.map(n,h.identity):h.values(n):[]},h.size=function(n){returnnull==n?0:n.length===+n.length?n.length:h.keys(n).length},h.partition=function(n,t,r){t=h.iteratee(t,r);vare=[],u=[];returnh.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},h.first=h.head=h.take=function(n,t,r){returnnull==n?void0:null==t||r?n[0]:0>t?[]:a.call(n,0,t)},h.initial=function(n,t,r){returna.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},h.last=function(n,t,r){returnnull==n?void0:null==t||r?n[n.length-1]:a.call(n,Math.max(n.length-t,0))},h.rest=h.tail=h.drop=function(n,t,r){returna.call(n,null==t||r?1:t)},h.compact=function(n){returnh.filter(n,h.identity)};vary=function(n,t,r,e){if(t&&h.every(n,h.isArray))returno.apply(e,n);for(varu=0,a=n.length;a>u;u++){varl=n[u];h.isArray(l)||h.isArguments(l)?t?i.apply(e,l):y(l,t,r,e):r||e.push(l)}returne};h.flatten=function(n,t){returny(n,t,!1,[])},h.without=function(n){returnh.difference(n,a.call(arguments,1))},h.uniq=h.unique=function(n,t,r,e){if(null==n)return[];h.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=h.iteratee(r,e));for(varu=[],i=[],a=0,o=n.length;o>a;a++){varl=n[a];if(t)a&&i===l||u.push(l),i=l;elseif(r){varc=r(l,a,n);h.indexOf(i,c)<0&&(i.push(c),u.push(l))}elseh.indexOf(u,l)<0&&u.push(l)}returnu},h.union=function(){returnh.uniq(y(arguments,!0,!0,[]))},h.intersection=function(n){if(null==n)return[];for(vart=[],r=arguments.length,e=0,u=n.length;u>e;e++){vari=n[e];if(!h.contains(t,i)){for(vara=1;r>a&&h.contains(arguments[a],i);a++);a===r&&t.push(i)}}returnt},h.difference=function(n){vart=y(a.call(arguments,1),!0,!0,[]);returnh.filter(n,function(n){return!h.contains(t,n)})},h.zip=function(n){if(null==n)return[];for(vart=h.max(arguments,"length").length,r=Array(t),e=0;t>e;e++)r[e]=h.pluck(arguments,e);returnr},h.object=function(n,t){if(null==n)return{};for(varr={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];returnr},h.indexOf=function(n,t,r){if(null==n)return-1;vare=0,u=n.length;if(r){if("number"!=typeofr)returne=h.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}for(;u>e;e++)if(n[e]===t)returne;return-1},h.lastIndexOf=function(n,t,r){if(null==n)return-1;vare=n.length;for("number"==typeofr&&(e=0>r?e+r+1:Math.min(e,r+1));--e>=0;)if(n[e]===t)returne;return-1},h.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=r||1;for(vare=Math.max(Math.ceil((t-n)/r),0),u=Array(e),i=0;e>i;i++,n+=r)u[i]=n;returnu};vard=function(){};h.bind=function(n,t){varr,e;if(p&&n.bind===p)returnp.apply(n,a.call(arguments,1));if(!h.isFunction(n))thrownewTypeError("Bind must be called on a function");returnr=a.call(arguments,2),e=function(){if(!(thisinstanceofe))returnn.apply(t,r.concat(a.call(arguments)));d.prototype=n.prototype;varu=newd;d.prototype=null;vari=n.apply(u,r.concat(a.call(arguments)));returnh.isObject(i)?i:u}},h.partial=function(n){vart=a.call(arguments,1);returnfunction(){for(varr=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===h&&(e[u]=arguments[r++]);for(;r<arguments.length;)e.push(arguments[r++]);returnn.apply(this,e)}},h.bindAll=function(n){vart,r,e=arguments.length;if(1>=e)thrownewError("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=h.bind(n[r],n);returnn},h.memoize=function(n,t){varr=function(e){varu=r.cache,i=t?t.apply(this,arguments):e;returnh.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};returnr.cache={},r},h.delay=function(n,t){varr=a.call(arguments,2);returnsetTimeout(function(){returnn.apply(null,r)},t)},h.defer=function(n){returnh.delay.apply(h,[n,1].concat(a.call(arguments,1)))},h.throttle=function(n,t,r){vare,u,i,a=null,o=0;r||(r={});varl=function(){o=r.leading===!1?0:h.now(),a=null,i=n.apply(e,u),a||(e=u=null)};returnfunction(){varc=h.now();o||r.leading!==!1||(o=c);varf=t-(c-o);returne=this,u=arguments,0>=f||f>t?(clearTimeout(a),a=null,o=c,i=n.apply(e,u),a||(e=u=null)):a||r.trailing===!1||(a=setTimeout(l,f)),i}},h.debounce=function(n,t,r){vare,u,i,a,o,l=function(){varc=h.now()-a;t>c&&c>0?e=setTimeout(l,t-c):(e=null,r||(o=n.apply(i,u),e||(i=u=null)))};returnfunction(){i=this,u=arguments,a=h.now();varc=r&&!e;returne||(e=setTimeout(l,t)),c&&(o=n.apply(i,u),i=u=null),o}},h.wrap=function(n,t){returnh.partial(t,n)},h.negate=function(n){returnfunction(){return!n.apply(this,arguments)}},h.compose=function(){varn=arguments,t=n.length-1;returnfunction(){for(varr=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);returne}},h.after=function(n,t){returnfunction(){return--n<1?t.apply(this,arguments):void0}},h.before=function(n,t){varr;returnfunction(){return--n>0?r=t.apply(this,arguments):t=null,r}},h.once=h.partial(h.before,2),h.keys=function(n){if(!h.isObject(n))return[];if(s)returns(n);vart=[];for(varrinn)h.has(n,r)&&t.push(r);returnt},h.values=function(n){for(vart=h.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];returne},h.pairs=function(n){for(vart=h.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];returne},h.invert=function(n){for(vart={},r=h.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];returnt},h.functions=h.methods=function(n){vart=[];for(varrinn)h.isFunction(n[r])&&t.push(r);returnt.sort()},h.extend=function(n){if(!h.isObject(n))returnn;for(vart,r,e=1,u=arguments.length;u>e;e++){t=arguments[e];for(rint)c.call(t,r)&&(n[r]=t[r])}returnn},h.pick=function(n,t,r){vare,u={};if(null==n)returnu;if(h.isFunction(t)){t=g(t,r);for(einn){vari=n[e];t(i,e,n)&&(u[e]=i)}}else{varl=o.apply([],a.call(arguments,1));n=newObject(n);for(varc=0,f=l.length;f>c;c++)e=l[c],einn&&(u[e]=n[e])}returnu},h.omit=function(n,t,r){if(h.isFunction(t))t=h.negate(t);else{vare=h.map(o.apply([],a.call(arguments,1)),String);t=function(n,t){return!h.contains(e,t)}}returnh.pick(n,t,r)},h.defaults=function(n){if(!h.isObject(n))returnn;for(vart=1,r=arguments.length;r>t;t++){vare=arguments[t];for(varuine)n[u]===void0&&(n[u]=e[u])}returnn},h.clone=function(n){returnh.isObject(n)?h.isArray(n)?n.slice():h.extend({},n):n},h.tap=function(n,t){returnt(n),n};varb=function(n,t,r,e){if(n===t)return0!==n||1/n===1/t;if(null==n||null==t)returnn===t;ninstanceofh&&(n=n._wrapped),tinstanceofh&&(t=t._wrapped);varu=l.call(n);if(u!==l.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}if("object"!=typeofn||"object"!=typeoft)return!1;for(vari=r.length;i--;)if(r[i]===n)returne[i]===t;vara=n.constructor,o=t.constructor;if(a!==o&&"constructor"inn&&"constructor"int&&!(h.isFunction(a)&&ainstanceofa&&h.isFunction(o)&&oinstanceofo))return!1;r.push(n),e.push(t);varc,f;if("[object Array]"===u){if(c=n.length,f=c===t.length)for(;c--&&(f=b(n[c],t[c],r,e)););}else{vars,p=h.keys(n);if(c=p.length,f=h.keys(t).length===c)for(;c--&&(s=p[c],f=h.has(t,s)&&b(n[s],t[s],r,e)););}returnr.pop(),e.pop(),f};h.isEqual=function(n,t){returnb(n,t,[],[])},h.isEmpty=function(n){if(null==n)return!0;if(h.isArray(n)||h.isString(n)||h.isArguments(n))return0===n.length;for(vartinn)if(h.has(n,t))return!1;return!0},h.isElement=function(n){return!(!n||1!==n.nodeType)},h.isArray=f||function(n){return"[object Array]"===l.call(n)},h.isObject=function(n){vart=typeofn;return"function"===t||"object"===t&&!!n},h.each(["Arguments","Function","String","Number","Date","RegExp"],function(n){h["is"+n]=function(t){returnl.call(t)==="[object "+n+"]"}}),h.isArguments(arguments)||(h.isArguments=function(n){returnh.has(n,"callee")}),"function"!=typeof/./&&(h.isFunction=function(n){return"function"==typeofn||!1}),h.isFinite=function(n){returnisFinite(n)&&!isNaN(parseFloat(n))},h.isNaN=function(n){returnh.isNumber(n)&&n!==+n},h.isBoolean=function(n){returnn===!0||n===!1||"[object Boolean]"===l.call(n)},h.isNull=function(n){returnnull===n},h.isUndefined=function(n){returnn===void0},h.has=function(n,t){returnnull!=n&&c.call(n,t)},h.noConflict=function(){returnn._=t,this},h.identity=function(n){returnn},h.constant=function(n){returnfunction(){returnn}},h.noop=function(){},h.property=function(n){returnfunction(t){returnt[n]}},h.matches=function(n){vart=h.pairs(n),r=t.length;returnfunction(n){if(null==n)return!r;n=newObject(n);for(vare=0;r>e;e++){varu=t[e],i=u[0];if(u[1]!==n[i]||!(iinn))return!1}return!0}},h.times=function(n,t,r){vare=Array(Math.max(0,n));t=g(t,r,1);for(varu=0;n>u;u++)e[u]=t(u);returne},h.random=function(n,t){returnnull==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},h.now=Date.now||function(){return(newDate).getTime()};var_={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},w=h.invert(_),j=function(n){vart=function(t){returnn[t]},r="(?:"+h.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");returnfunction(n){returnn=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};h.escape=j(_),h.unescape=j(w),h.result=function(n,t){if(null==n)returnvoid0;varr=n[t];returnh.isFunction(r)?n[t]():r};varx=0;h.uniqueId=function(n){vart=++x+"";returnn?n+t:t},h.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};varA=/(.)^/,k={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},O=/\\|'|\r|\n|\u2028|\u2029/g,F=function(n){return"\\"+k[n]};h.template=function(n,t,r){!t&&r&&(t=r),t=h.defaults({},t,h.templateSettings);var e=RegExp([(t.escape||A).source,(t.interpolate||A).source,(t.evaluate||A).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,a,o){return i+=n.slice(u,o).replace(O,F),u=o+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":a&&(i+="';\n"+a+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var__t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return__p;\n";try{var a=new Function(t.variable||"obj","_",i)}catch(o){throw o.source=i,o}var l=function(n){return a.call(this,n,h)},c=t.variable||"obj";return l.source="function("+c+"){\n"+i+"}",l},h.chain=function(n){var t=h(n);return t._chain=!0,t};var E=function(n){return this._chain?h(n).chain():n};h.mixin=function(n){h.each(h.functions(n),function(t){var r=h[t]=n[t];h.prototype[t]=function(){var n=[this._wrapped];return i.apply(n,arguments),E.call(this,r.apply(h,n))}})},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=r[n];h.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],E.call(this,r)}}),h.each(["concat","join","slice"],function(n){var t=r[n];h.prototype[n]=function(){return E.call(this,t.apply(this._wrapped,arguments))}}),h.prototype.value=function(){return this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return h})}).call(this);