| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- Group = function(router, options, parent) {
 
-   options = options || {};
 
-   if (options.prefix && !/^\/.*/.test(options.prefix)) {
 
-     var message = "group's prefix must start with '/'";
 
-     throw new Error(message);
 
-   }
 
-   this._router = router;
 
-   this.prefix = options.prefix || '';
 
-   this.name = options.name;
 
-   this.options = options;
 
-   this._triggersEnter = options.triggersEnter || [];
 
-   this._triggersExit = options.triggersExit || [];
 
-   this._subscriptions = options.subscriptions || Function.prototype;
 
-   this.parent = parent;
 
-   if (this.parent) {
 
-     this.prefix = parent.prefix + this.prefix;
 
-     this._triggersEnter = parent._triggersEnter.concat(this._triggersEnter);
 
-     this._triggersExit = this._triggersExit.concat(parent._triggersExit);
 
-   }
 
- };
 
- Group.prototype.route = function(pathDef, options, group) {
 
-   options = options || {};
 
-   if (!/^\/.*/.test(pathDef)) {
 
-     var message = "route's path must start with '/'";
 
-     throw new Error(message);
 
-   }
 
-   group = group || this;
 
-   pathDef = this.prefix + pathDef;
 
-   var triggersEnter = options.triggersEnter || [];
 
-   options.triggersEnter = this._triggersEnter.concat(triggersEnter);
 
-   var triggersExit = options.triggersExit || [];
 
-   options.triggersExit = triggersExit.concat(this._triggersExit);
 
-   return this._router.route(pathDef, options, group);
 
- };
 
- Group.prototype.group = function(options) {
 
-   return new Group(this._router, options, this);
 
- };
 
- Group.prototype.callSubscriptions = function(current) {
 
-   if (this.parent) {
 
-     this.parent.callSubscriptions(current);
 
-   }
 
-   this._subscriptions.call(current.route, current.params, current.queryParams);
 
- };
 
 
  |