(function(t,n){"object"==typeofmodule&&module.exports?module.exports=function(t){returnt=t||require("underscore"),n(t)}:"function"==typeofdefine&&define.amd?define(["underscore"],function(i){returnn(i,t)}):t.postal=n(t._,t)})(this,function(t){varn="/",i="postal",s=function(){varn;returnfunction(i){vars=!1;returnt.isString(i)?(s=i===n,n=i):(s=t.isEqual(i,n),n=t.clone(i)),!s}},e=function(){varn=[];returnfunction(i){vars=!t.any(n,function(n){returnt.isObject(i)||t.isArray(i)?t.isEqual(i,n):i===n});returns&&n.push(i),s}},c=function(t){this.channel=t||n};c.prototype.subscribe=function(){return1===arguments.length?newr(this.channel,arguments[0].topic,arguments[0].callback):newr(this.channel,arguments[0],arguments[1])},c.prototype.publish=function(){vart=1===arguments.length?"[object String]"===Object.prototype.toString.call(arguments[0])?{topic:arguments[0]}:arguments[0]:{topic:arguments[0],data:arguments[1]};returnt.channel=this.channel,b.configuration.bus.publish(t)};varr=function(t,n,s){this.channel=t,this.topic=n,this.callback=s,this.constraints=[],this.context=null,b.configuration.bus.publish({channel:i,topic:"subscription.created",data:{event:"subscription.created",channel:t,topic:n}}),b.configuration.bus.subscribe(this)};r.prototype={unsubscribe:function(){this.inactive||(this.inactive=!0,b.configuration.bus.unsubscribe(this),b.configuration.bus.publish({channel:i,topic:"subscription.removed",data:{event:"subscription.removed",channel:this.channel,topic:this.topic}}))},defer:function(){vart=this.callback;returnthis.callback=function(n){setTimeout(function(){t(n)},0)},this},disposeAfter:function(n){if(t.isNaN(n)||0>=n)throw"The value provided to disposeAfter (maxCalls) must be a number greater than zero.";vari=this.callback,s=t.after(n,t.bind(function(){this.unsubscribe()},this));returnthis.callback=function(){i.apply(this.context,arguments),s()},this},distinctUntilChanged:function(){returnthis.withConstraint(news),this},distinct:function(){returnthis.withConstraint(newe),this},once:function(){returnthis.disposeAfter(1),this},withConstraint:function(n){if(!t.isFunction(n))throw"Predicate constraint must be a function";returnthis.constraints.push(n),this},withConstraints:function(n){vari=this;returnt.isArray(n)&&t.each(n,function(t){i.withConstraint(t)}),i},withContext:function(t){returnthis.context=t,this},withDebounce:function(n){if(t.isNaN(n))throw"Milliseconds must be a number";vari=this.callback;returnthis.callback=t.debounce(i,n),this},withDelay:function(n){if(t.isNaN(n))throw"Milliseconds must be a number";vari=this.callback;returnthis.callback=function(t){setTimeout(function(){i(t)},n)},this},withThrottle:function(n){if(t.isNaN(n))throw"Milliseconds must be a number";vari=this.callback;returnthis.callback=t.throttle(i,n),this},subscribe:function(t){returnthis.callback=t,this}};varo={cache:{},regex:{},compare:function(n,i){vars,e,c,r=this.cache[i]&&this.cache[i][n];returnr!==undefined?r:((e=this.regex[n])||(s="^"+t.map(n.split("."),function(t){varn="";returnc&&(n="#"!==c?"\\.\\b":"\\b"),n+="#"===t?"[\\s\\S]*":"*"===t?"[^.]+":t,c=t,n}).join("")+"$",e=this.regex[n]=RegExp(s)),this.cache[i]=this.cache[i]||{},this.cache[i][n]=r=e.test(i),r)},reset:function(){this.cache={},this.regex={}}},u=function(n,i){!n.inactive&&b.configuration.resolver.compare(n.topic,i.topic)&&t.all(n.constraints,function(t){returnt.call(n.context,i.data,i)})&&"function"==typeofn.callback&&n.callback.call(n.context,i.data,i)},a=0,h=[],l=function(){for(;h.length;)h.shift().unsubscribe()},p={addWireTap:function(t){varn=this;returnn.wireTaps.push(t),function(){vari=n.wireTaps.indexOf(t);-1!==i&&n.wireTaps.splice(i,1)}},publish:function(n){return++a,n.timeStamp=newDate,t.each(this.wireTaps,function(t){t(n.data,n)}),this.subscriptions[n.channel]&&t.each(this.subscriptions[n.channel],function(t){for(vari,s=0,e=t.length;e>s;)(i=t[s++])&&u(i,n)}),0===--a&&l(),n},reset:function(){this.subscriptions&&(t.each(this.subscriptions,function(n){t.each(n,function(t){for(;t.length;)t.pop().unsubscribe()})}),this