forked from noolsjs/nools
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnools.min.js
More file actions
4 lines (4 loc) · 135 KB
/
nools.min.js
File metadata and controls
4 lines (4 loc) · 135 KB
1
2
3
4
/*! nools - v0.1.0 - 2013-02-28
* http://c2fo.github.com/nools
* Copyright (c) 2013 Doug Martin (http://c2fo.com); Licensed */
(function(){var require=function(e,t){var n=require.resolve(e,t||"/"),r=require.modules[n];if(!r)throw new Error("Failed to resolve module "+e+", tried "+n);var i=require.cache[n],s=i?i.exports:r();return s};require.paths=[],require.modules={},require.cache={},require.extensions=[".js",".coffee",".json"],require._core={assert:!0,events:!0,fs:!0,path:!0,vm:!0},require.resolve=function(){return function(e,t){function o(e){e=n.normalize(e);if(require.modules[e])return e;for(var t=0;t<require.extensions.length;t++){var r=require.extensions[t];if(require.modules[e+r])return e+r}}function u(e){e=e.replace(/\/+$/,"");var t=n.normalize(e+"/package.json");if(require.modules[t]){var r=require.modules[t](),i=r.browserify;if(typeof i=="object"&&i.main){var s=o(n.resolve(e,i.main));if(s)return s}else if(typeof i=="string"){var s=o(n.resolve(e,i));if(s)return s}else if(r.main){var s=o(n.resolve(e,r.main));if(s)return s}}return o(e+"/index")}function a(e,t){var n=f(t);for(var r=0;r<n.length;r++){var i=n[r],s=o(i+"/"+e);if(s)return s;var a=u(i+"/"+e);if(a)return a}var s=o(e);if(s)return s}function f(e){var t;e==="/"?t=[""]:t=n.normalize(e).split("/");var r=[];for(var i=t.length-1;i>=0;i--){if(t[i]==="node_modules")continue;var s=t.slice(0,i+1).join("/")+"/node_modules";r.push(s)}return r}t||(t="/");if(require._core[e])return e;var n=require.modules.path();t=n.resolve("/",t);var r=t||"/";if(e.match(/^(?:\.\.?\/|\/)/)){var i=o(n.resolve(r,e))||u(n.resolve(r,e));if(i)return i}var s=a(e,r);if(s)return s;throw new Error("Cannot find module '"+e+"'")}}(),require.alias=function(e,t){var n=require.modules.path(),r=null;try{r=require.resolve(e+"/package.json","/")}catch(i){r=require.resolve(e,"/")}var s=n.dirname(r),o=(Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t})(require.modules);for(var u=0;u<o.length;u++){var a=o[u];if(a.slice(0,s.length+1)===s+"/"){var f=a.slice(s.length);require.modules[t+f]=require.modules[s+f]}else a===s&&(require.modules[t]=require.modules[s])}},function(){var e={},t=typeof window!="undefined"?window:{},n=!1;require.define=function(r,i){!n&&require.modules.__browserify_process&&(e=require.modules.__browserify_process(),n=!0);var s=require._core[r]?"":require.modules.path().dirname(r),o=function(e){var t=require(e,s),n=require.cache[require.resolve(e,s)];return n&&n.parent===null&&(n.parent=u),t};o.resolve=function(e){return require.resolve(e,s)},o.modules=require.modules,o.define=require.define,o.cache=require.cache;var u={id:r,filename:r,exports:{},loaded:!1,parent:null};require.modules[r]=function(){return require.cache[r]=u,i.call(u.exports,o,u,u.exports,s,r,e,t),u.loaded=!0,u.exports}}}(),require.define("path",function(e,t,n,r,i,s,o){function u(e,t){var n=[];for(var r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}function a(e,t){var n=0;for(var r=e.length;r>=0;r--){var i=e[r];i=="."?e.splice(r,1):i===".."?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}var f=/^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/;n.resolve=function(){var e="",t=!1;for(var n=arguments.length;n>=-1&&!t;n--){var r=n>=0?arguments[n]:s.cwd();if(typeof r!="string"||!r)continue;e=r+"/"+e,t=r.charAt(0)==="/"}return e=a(u(e.split("/"),function(e){return!!e}),!t).join("/"),(t?"/":"")+e||"."},n.normalize=function(e){var t=e.charAt(0)==="/",n=e.slice(-1)==="/";return e=a(u(e.split("/"),function(e){return!!e}),!t).join("/"),!e&&!t&&(e="."),e&&n&&(e+="/"),(t?"/":"")+e},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(u(e,function(e,t){return e&&typeof e=="string"}).join("/"))},n.dirname=function(e){var t=f.exec(e)[1]||"",n=!1;return t?t.length===1||n&&t.length<=3&&t.charAt(1)===":"?t:t.substring(0,t.length-1):"."},n.basename=function(e,t){var n=f.exec(e)[2]||"";return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},n.extname=function(e){return f.exec(e)[3]||""}}),require.define("__browserify_process",function(e,t,n,r,i,s,o){var s=t.exports={};s.nextTick=function(){var e=typeof window!="undefined"&&window.setImmediate,t=typeof window!="undefined"&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var n=[];return window.addEventListener("message",function(e){if(e.source===window&&e.data==="browserify-tick"){e.stopPropagation();if(n.length>0){var t=n.shift();t()}}},!0),function(t){n.push(t),window.postMessage("browserify-tick","*")}}return function(t){setTimeout(t,0)}}(),s.title="browser",s.browser=!0,s.env={},s.argv=[],s.binding=function(t){if(t==="evals")return e("vm");throw new Error("No such module. (Possibly not yet loaded)")},function(){var t="/",n;s.cwd=function(){return t},s.chdir=function(r){n||(n=e("path")),t=n.resolve(r,t)}}()}),require.define("/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js",browserify:"browser/nool.js"}}),require.define("/index.js",function(e,t,n,r,i,s,o){t.exports=n=e("./lib")}),require.define("/lib/index.js",function(e,t,n,r,i,s,o){"use strict";function _(e){return/\.nools$/.test(e)}function D(e){var t;return _(e)?t=T.parse(a.readFileSync(e,"utf8")):t=T.parse(e),t}var u=e("./extended"),a=e("fs"),f=e("path"),l=u.bind,c=u.indexOf,h=u.forEach,p=u.declare,d=u.Promise,v=u.when,m=u.AVLTree,g=e("./nodes"),y=e("events").EventEmitter,b=e("./rule"),w=e("./workingMemory"),E=w.WorkingMemory,S=e("./pattern").InitialFact,x=w.Fact,T=e("./compile"),N=function(e,t){if(e===t)return 0;var n,r=e.rule.priority,i=t.rule.priority;r!==i?n=r-i:e.counter!==t.counter&&(n=e.counter-t.counter);if(!n){var s=0,o=e.match.recency,u=t.match.recency,a=o.length-1,f=u.length-1;while(o[s]===u[s]&&s<a&&s<f&&s++);n=o[s]-u[s],n||(n=a-f)}return n||(n=e.recency-t.recency),n>0?1:-1},C=p({instance:{constructor:function(){this.memory=[],this.memoryValues=[]},get:function(e){return this.memoryValues[c(this.memory,e)]},remove:function(e){var t=e.match.facts,n=t.length-1,r=this.memoryValues,i=this.memory;for(;n>=0;n--){var s=c(i,t[n]),o=r[s],u=c(o,e);o.splice(u,1)}},insert:function(e){var t=e.match.facts,n=this.memoryValues,r=this.memory,i=t.length-1;for(;i>=0;i--){var s=t[i],o=c(r,s),u=n[o];u||(u=n[r.push(s)-1]=[]),u.push(e)}}}}),k=m.REVERSE_ORDER,L=p({instance:{constructor:function(){this.masterAgenda=new m({compare:N}),this.rules={}},register:function(e){this.rules[e.name]={tree:new m({compare:N}),factTable:new C}},isEmpty:function(){return this.masterAgenda.isEmpty()},pop:function(){var e=this.masterAgenda,t=e.__root;while(t.right)t=t.right;var n=t.data;e.remove(n);var r=this.rules[n.name];return r.tree.remove(n),r.factTable.remove(n),n},peek:function(){var e=this.masterAgenda,t=e.__root;while(t.right)t=t.right;return t.data},removeByFact:function(e,t){var n=this.rules[e.name],r=n.tree,i=n.factTable,s=this.masterAgenda,o=i.get(t)||[],u=o.length-1;for(;u>=0;u--){var a=o[u];i.remove(a),r.remove(a),s.remove(a)}o.length=0},retract:function(e,t){var n=this.rules[e.name],r=n.tree,i=n.factTable,s=this.masterAgenda;r.traverse(r.__root,k,function(e){t(e)&&(i.remove(e),s.remove(e),r.remove(e))})},insert:function(e,t){var n=this.rules[e.name];n.tree.insert(t),this.masterAgenda.insert(t),n.factTable.insert(t)},dispose:function(){this.masterAgenda.clear();var e=this.rules;for(var t in e)t in e&&e[t].tree.clear();this.rules={}}}}),A=p(y,{instance:{name:null,constructor:function(e){this.env=null,this.name=e,this.__rules={},this.__wmAltered=!1,this.workingMemory=new E,this.agenda=new L,this.rootNode=new g.RootNode(this.workingMemory,this.agenda)},halt:function(){return this.__halted=!0,this},dispose:function(){this.workingMemory.dispose(),this.agenda.dispose(),this.rootNode.dispose()},assert:function(e){return this.__wmAltered=!0,this.__factHelper(e,!0),this.emit("assert",e),e},retract:function(e){return this.__wmAltered=!0,this.__factHelper(e,!1),this.emit("retract",e),e},modify:function(e,t){var n=this.retract(e);return"function"==typeof t&&t.call(e,e),this.emit("modify",e),this.assert(n)},print:function(){this.rootNode.print()},containsRule:function(e){return this.rootNode.containsRule(e)},rule:function(e){this.rootNode.assertRule(e)},__loop:function(e,t){var n=new d,r=this,i=this.rootNode;return i?(i.resetCounter(),function s(){e(n,s)}()):n.callback(),n.classic(t),n},__callNext:function(e){var t=this.agenda.pop(),n=this.rootNode;return t.used=!0,this.emit("fire",t.rule.name,t.match.factHash),v(t.rule.fire(this,t.match)).then(l(this,function(){this.__wmAltered&&(n.incrementCounter(),this.__wmAltered=!1)}))},matchUntilHalt:function(e){return this.__halted=!1,this.__loop(l(this,function(e,t){!this.agenda.isEmpty()&&!this.__halted?this.__callNext(t).then(t,e.errback):this.__halted?e.callback():s.nextTick(t)}),e)},match:function(e){return this.__loop(l(this,function(e,t){this.agenda.isEmpty()?e.callback():this.__callNext(t).then(t,e.errback)}),e)},__factHelper:function(e,t){var n=new x(e);return t?n=this.__assertFact(n):n=this.__retractFact(n),n},__assertFact:function(e){var t=this.workingMemory.assertFact(e);return t&&this.rootNode.assertFact(t),t},__retractFact:function(e){var t=this.workingMemory.retractFact(e);return t&&this.rootNode&&this.rootNode.retractFact(t),t}}}),O={},M=p({instance:{constructor:function(e,t){this.name=e,this.cb=t,this.__rules=[],this.__defined={},t&&t.call(this,this);if(!!O.hasOwnProperty(e))throw new Error("Flow with "+e+" already defined");O[e]=this},getDefined:function(e){var t=this.__defined[e.toLowerCase()];if(!t)throw new Error(e+" flow class is not defined");return t},addDefined:function(e,t){return this.__defined[e.toLowerCase()]=t,t},rule:function(){this.__rules=this.__rules.concat(b.createRule.apply(b,arguments))},getSession:function(){var e=new A(this.name);h(this.__rules,function(t){e.rule(t)}),e.assert(new S);for(var t=0,n=arguments.length;t<n;t++)e.assert(arguments[t]);return e},containsRule:function(e){return u.some(this.__rules,function(t){return t.name===e})}}}).as(n,"Flow");n.getFlow=function(e){return O[e]},n.flow=function(e,t){return new M(e,t)},n.compile=function(e,t,n){u.isFunction(t)?(n=t,t={}):(t=t||{},n=null),u.isString(e)&&(t.name=t.name||(_(e)?f.basename(e,f.extname(e)):null),e=D(e));if(!t.name)throw new Error("Name required when compiling nools source");return T.compile(e,t,n,M)},n.parse=D}),require.define("/lib/extended.js",function(e,t,n,r,i,s,o){t.exports=e("extended")().register(e("is-extended")).register(e("array-extended")).register(e("date-extended")).register(e("object-extended")).register(e("string-extended")).register(e("promise-extended")).register(e("function-extended")).register("HashTable",e("ht")).register("declare",e("declare.js")).register(e("leafy"))}),require.define("/node_modules/extended/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js"}}),require.define("/node_modules/extended/index.js",function(e,t,n,r,i,s,o){(function(){"use strict";function r(e,t){function r(){var t={},n=e.define();return n.expose({register:function(t,r){r||(r=t,t=null);var i=typeof r;if(t)n[t]=r;else if(r&&i==="function")n.extend(r);else{if(i!=="object")throw new TypeError("extended.register must be called with an extender function");n.expose(r)}return n},define:function(){return e.define.apply(e,arguments)}}),n}function i(){return r()}var n=function(){function t(e,t){var n,r;for(n in t)if(t.hasOwnProperty(n)){r=t[n];if(!(n in e)||e[n]!==r)e[n]=r}return e}return function(n){n||(n={});for(var r=1,i=arguments.length;r<i;r++)t(n,arguments[r]);return n}}();return i.define=function(){return e.define.apply(e,arguments)},i}"undefined"!=typeof n?"undefined"!=typeof t&&t.exports&&(t.exports=r(e("extender"),e)):"function"==typeof define?define(["require"],function(e){return r(e("extender"),e)}):this.extended=r(this.extender)}).call(this)}),require.define("/node_modules/extended/node_modules/extender/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js"}}),require.define("/node_modules/extended/node_modules/extender/index.js",function(e,t,n,r,i,s,o){t.exports=e("./extender.js")}),require.define("/node_modules/extended/node_modules/extender/extender.js",function(e,t,n,r,i,s,o){(function(){function r(e){function r(e,t){if(e&&e.length)for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}function i(e){return Object.prototype.toString.call(e)==="[object Array]"}function o(r){function u(e,r,i){if("function"!=typeof i)throw new TypeError("when extending type you must provide a function");var s;r==="constructor"?s=function(){this._super(arguments),i.apply(this,arguments)}:s=function(){var r=t.call(arguments);r.unshift(this._value);var s=i.apply(this,r);return s!==n?this.__extender__(s):this},e[r]=s}function a(e,n,r){if("function"!=typeof r)throw new TypeError("when extending type you must provide a function");var i;n==="constructor"?i=function(){this._super(arguments),r.apply(this,arguments)}:i=function(){var n=t.call(arguments);return n.unshift(this._value),r.apply(this,n)},e[n]=i}function f(e,t,n){for(var r in t)t.hasOwnProperty(r)&&(r!=="getters"&&r!=="setters"?r==="noWrap"?f(e,t[r],!0):n?a(e,r,t[r]):u(e,r,t[r]):e[r]=t[r])}function l(e){var t=e,n,r;if(!(e instanceof i)){var s=i;for(n=0,r=o.length;n<r;n++){var u=o[n];u[0](e)&&(s=s.extend({instance:u[1]}))}t=new s(e),t.__extender__=l}return t}function c(){return!0}function h(e,t){if(arguments.length){typeof e=="object"&&(t=e,e=c),t=t||{};var n={};f(n,t),n.hasOwnProperty("constructor")||(t.hasOwnProperty("constructor")?u(n,"constructor",t.constructor):n.constructor=function(){this._super(arguments)}),o.push([e,n])}return l}function p(e){return e&&e.hasOwnProperty("__defined__")&&(l.__defined__=o=o.concat(e.__defined__)),s(l,e,["define","extend","expose","__defined__"]),l}r=r||[];var i=e({instance:{constructor:function(e){this._value=e},value:function(){return this._value},eq:function(t){return this.__extender__(this._value===t)},neq:function(t){return this.__extender__(this._value!==t)},print:function(){return console.log(this._value),this}}}),o=[];return l.define=h,l.extend=p,l.expose=function(){var t;for(var n=0,r=arguments.length;n<r;n++)t=arguments[n],typeof t=="object"&&s(l,t,["define","extend","expose","__defined__"]);return l},l.__defined__=o,l}var t=Array.prototype.slice,n,s=function(){function t(e,t,n){var i,s;for(i in t)if(t.hasOwnProperty(i)&&r(n,i)===-1){s=t[i];if(!(i in e)||e[i]!==s)e[i]=s}return e}return function(n){n||(n={});var r=arguments.length,s=arguments[arguments.length-1];i(s)?r--:s=[];for(var o=1;o<r;o++)t(n,arguments[o],s);return n}}();return{define:function(){return o().define.apply(o,arguments)},extend:function(e){return o().define().extend(e)}}}"undefined"!=typeof n?"undefined"!=typeof t&&t.exports&&(t.exports=r(e("declare.js"))):"function"==typeof define?define(["require"],function(e){return r(e("declare.js"))}):this.extender=r(this.declare)}).call(this)}),require.define("/node_modules/declare.js/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js"}}),require.define("/node_modules/declare.js/index.js",function(e,t,n,r,i,s,o){t.exports=e("./declare.js")}),require.define("/node_modules/declare.js/declare.js",function(e,t,n,r,i,s,o){(function(){function e(){function i(t,n){return n=n||0,e.call(t,n)}function s(e){return Object.prototype.toString.call(e)==="[object Array]"}function o(e){var t;return e!==null&&e!==t&&typeof e=="object"}function u(e){var t=o(e);return t&&e.constructor===Object}function f(e,t){if(e&&e.length)for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}function l(e,t,n){var r,i;for(r in t)if(t.hasOwnProperty(r)&&f(n,r)===-1){i=t[r];if(!(r in e)||e[r]!==i)e[r]=i}return e}function c(e,t){var n=this.__meta,r=n.supers,i=r.length,o=n.superMeta,u=o.pos;if(i>u){e=e?!a(e)&&!s(e)?[e]:e:[];var f=o.name,l=o.f,c;do{c=r[u][f];if("function"==typeof c&&(c=c._f||c)!==l)return o.pos=1+u,c.apply(this,e)}while(i>++u)}return null}function h(){var e=this.__meta,t=e.supers,n=t.length,r=e.superMeta,i=r.pos;if(n>i){var s=r.name,o=r.f,u;do{u=t[i][s];if("function"==typeof u&&(u=u._f||u)!==o)return r.pos=1+i,u.bind(this)}while(n>++i)}return null}function p(e){var t=this.__getters__;return t.hasOwnProperty(e)?t[e].apply(this):this[e]}function d(e,t){var n=this.__setters__;if(!u(e))return n.hasOwnProperty(e)?n[e].apply(this,i(arguments,1)):this[e]=t;for(var r in e){var s=e[r];n.hasOwnProperty(r)?n[e].call(this,s):this[r]=s}}function v(){var e=this.__meta||{},t=e.supers,n=t.length,r=e.superMeta,i=r.pos;if(n>i){var s=r.name,o=r.f,u;do{u=t[i][s];if("function"==typeof u&&(u=u._f||u)!==o)return r.pos=1+i,u.apply(this,arguments)}while(n>++i)}return null}function m(e,t){var n=function(){var r,i=this.__meta||{},s=i.superMeta;return i.superMeta={f:e,pos:0,name:t},r=e.apply(this,arguments),i.superMeta=s,r};return n._f=e,n}function g(e,t){var n=t.setters||{},r=e.__setters__,i=e.__getters__;for(var s in n)r.hasOwnProperty(s)||(r[s]=n[s]);n=t.getters||{};for(s in n)i.hasOwnProperty(s)||(i[s]=n[s]);for(var o in t)if(o!=="getters"&&o!=="setters"){var u=t[o];"function"==typeof u?e.hasOwnProperty(o)||(e[o]=m(v,o)):e[o]=u}}function y(){var e=i(arguments),t=e.length,n=this.prototype,r=n.__meta,s=this.__meta,o=n.__meta.bases,u=o.slice(),a=s.supers||[],f=r.supers||[];for(var l=0;l<t;l++){var c=e[l],h=c.prototype,p=h.__meta,d=c.__meta;!p&&(p=h.__meta={proto:h||{}}),!d&&(d=c.__meta={proto:c.__proto__||{}}),g(n,p.proto||{}),g(this,d.proto||{}),b(c.prototype,f,o),b(c,a,u)}return this}function b(e,n,r){var i=e.__meta;!i&&(i=e.__meta={});var s=e.__meta.unique;!s&&(i.unique="declare"+ ++t);if(f(r,s)===-1){r.push(s);var o=e.__meta.supers||[],u=o.length-1||0;while(u>=0)b(o[u--],n,r);n.unshift(e)}}function w(e,t){var n=t.setters,r=e.__setters__,i=e.__getters__;if(n)for(var s in n)r[s]=n[s];n=t.getters||{};if(n)for(s in n)i[s]=n[s];for(s in t)if(s!="getters"&&s!="setters"){var o=t[s];if("function"==typeof o){var u=o.__meta||{};u.isConstructor?e[s]=o:e[s]=m(o,s)}else e[s]=o}}function E(e,t){return e&&t?e[t]=this:e.exports=e=this,this}function S(e){return N(this,e)}function x(e){r.prototype=e.prototype;var t=new r;return r.prototype=null,t}function T(e,r,i){var o={},a=[],f="declare"+ ++t,p=[],d=[],g=[],E=[],S={supers:g,unique:f,bases:p,superMeta:{f:null,pos:0,name:null}},T={supers:E,unique:f,bases:d,isConstructor:!0,superMeta:{f:null,pos:0,name:null}};u(r)&&!i&&(i=r,r=n),"function"==typeof r||s(r)?(a=s(r)?r:[r],r=a.shift(),e.__meta=T,o=x(r),o.__meta=S,o.__getters__=l({},o.__getters__||{}),o.__setters__=l({},o.__setters__||{}),e.__getters__=l({},e.__getters__||{}),e.__setters__=l({},e.__setters__||{}),b(r.prototype,g,p),b(r,E,d)):(e.__meta=T,o.__meta=S,o.__getters__=o.__getters__||{},o.__setters__=o.__setters__||{},e.__getters__=e.__getters__||{},e.__setters__=e.__setters__||{}),e.prototype=o;if(i){var N=S.proto=i.instance||{},C=T.proto=i.static||{};C.init=C.init||v,w(o,N),w(e,C),N.hasOwnProperty("constructor")?o.constructor=m(N.constructor,"constructor"):o.constructor=N.constructor=m(v,"constructor")}else S.proto={},T.proto={},e.init=m(v,"init"),o.constructor=m(v,"constructor");a.length&&y.apply(e,a),r&&l(e,l(l({},r),e)),o._super=e._super=c,o._getSuper=e._getSuper=h,o._static=e}function N(e,t){function n(){this.constructor.apply(this,arguments)}return T(n,e,t),n.init()||n}function C(e,t){function r(){return n||(this.constructor.apply(this,arguments),n=this),n}var n;return T(r,e,t),r.init()||r}var e=Array.prototype.slice,t=0,n,r=new Function,a=function(t){return Object.prototype.toString.call(t)==="[object Arguments]"};return a(arguments)||(a=function(t){return!!t&&!!t.hasOwnProperty("callee")}),n=N({instance:{get:p,set:d},"static":{get:p,set:d,mixin:y,extend:S,as:E}}),N.singleton=C,N}"undefined"!=typeof n?"undefined"!=typeof t&&t.exports&&(t.exports=e()):"function"==typeof define?define(e):this.declare=e()})()}),require.define("/node_modules/is-extended/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js"}}),require.define("/node_modules/is-extended/index.js",function(e,t,n,r,i,s,o){(function(){"use strict";function r(e){function i(e,t){return t=t||0,n.call(e,t)}function s(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t}function o(e,t){if(e===t)return!0;if(typeof Buffer!="undefined"&&Buffer.isBuffer(e)&&Buffer.isBuffer(t)){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}return e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():e instanceof RegExp&&t instanceof RegExp?e.source===t.source&&e.global===t.global&&e.multiline===t.multiline&&e.lastIndex===t.lastIndex&&e.ignoreCase===t.ignoreCase:S(e)&&S(t)&&e!==t?!1:typeof e!="object"&&typeof t!="object"?e===t:u(e,t)}function u(e,t){var r;if(v(e)||v(t))return!1;if(e.prototype!==t.prototype)return!1;if(g(e))return g(t)?(e=n.call(e),t=n.call(t),o(e,t)):!1;try{var i=s(e),u=s(t),a;if(i.length!==u.length)return!1;i.sort(),u.sort();for(a=i.length-1;a>=0;a--)if(i[a]!==u[a])return!1;for(a=i.length-1;a>=0;a--){r=i[a];if(!o(e[r],t[r]))return!1}}catch(f){return!1}return!0}function a(e){return typeof e=="function"}function f(e){var t;return e!==null&&e!==t&&typeof e=="object"}function l(e){var t=f(e);return t&&e.constructor===Object}function c(e){if(f(e)){for(var t in e)if(e.hasOwnProperty(t))return!1}else if(S(e)&&e==="")return!0;return!0}function h(e){return Object.prototype.toString.call(e)==="[object Boolean]"}function p(e){return e!==null&&e===t}function d(e){return!p(e)}function v(e){return p(e)||m(e)}function m(e){return e!==t&&e===null}function y(e,t){return a(t)?e instanceof t:!1}function b(e){return!v(e)&&e instanceof RegExp}function w(e){return Object.prototype.toString.call(e)==="[object Array]"}function E(e){return!v(e)&&typeof e=="object"&&e instanceof Date}function S(e){return!v(e)&&(typeof e=="string"||e instanceof String)}function x(e){return!v(e)&&(typeof e=="number"||e instanceof Number)}function T(e){return e===!0}function N(e){return e===!1}function C(e){return!m(e)}function k(e,t){return e==t}function L(e,t){return e!=t}function A(e,t){return e===t}function O(e,t){return e!==t}function M(e,t){if(w(t))for(var n=0,r=t.length;n<r;n++)if(k(e,t[n]))return!0;return!1}function _(e,t){return!M(e,t)}function D(e,t){return e<t}function P(e,t){return e<=t}function H(e,t){return e>t}function B(e,t){return e>=t}function j(e,t){return S(t)&&(t=new RegExp(t)),b(t)?t.test(""+e):!1}function F(e,t){return!j(e,t)}function I(e,t){return M(t,e)}function q(e,t){return!M(t,e)}function R(e,t,n){return w(e)&&e.length>n?k(e[n],t):!1}function U(e,t,n){return w(e)?!k(e[n],t):!1}function z(e,t){return r.call(e,t)}function W(e,t){return!z(e,t)}function X(e,t){return z(e,"length")?e.length===t:!1}function V(e,t){return z(e,"length")?e.length!==t:!1}function Q(e){J[e]=function(){this._testers.push($[e])}}function G(e){K[e]=function(){var n=i(arguments,1),r=$[e],s,o=!0;if(n.length<=r.length-1)throw new TypeError("A handler must be defined when calling using switch");s=n.pop(),h(s)&&(o=s,s=n.pop());if(!a(s))throw new TypeError("handler must be defined");this._cases.push(function(e){return r.apply($,e.concat(n))?[o,s.apply(this,e)]:[!1]})}}var t,n=Array.prototype.slice,r=Object.prototype.hasOwnProperty,g=function(t){return!v(t)&&Object.prototype.toString.call(t)==="[object Arguments]"};g(arguments)||(g=function(t){return!!t&&!!t.hasOwnProperty("callee")});var $={isFunction:a,isObject:f,isEmpty:c,isHash:l,isNumber:x,isString:S,isDate:E,isArray:w,isBoolean:h,isUndefined:p,isDefined:d,isUndefinedOrNull:v,isNull:m,isArguments:g,instanceOf:y,isRegExp:b,deepEqual:o,isTrue:T,isFalse:N,isNotNull:C,isEq:k,isNeq:L,isSeq:A,isSneq:O,isIn:M,isNotIn:_,isLt:D,isLte:P,isGt:H,isGte:B,isLike:j,isNotLike:F,contains:I,notContains:q,has:z,notHas:W,isLength:X,isNotLength:V,containsAt:R,notContainsAt:U},J={constructor:function(){this._testers=[]},noWrap:{tester:function(){var e=this._testers;return function(n){var r=!1;for(var i=0,s=e.length;i<s&&!r;i++)r=e[i](n);return r}}}},K={constructor:function(){this._cases=[],this.__default=null},def:function(e,t){this.__default=t},noWrap:{switcher:function(){var e=this._cases,t=this.__default;return function(){var r=!1,s=i(arguments),o;for(var u=0,a=e.length;u<a&&!r;u++){o=e[u](s);if(o.length>1)if(o[1]||o[0])return o[1]}if(!r&&t)return t.apply(this,s)}}}};for(var Y in $)$.hasOwnProperty(Y)&&(G(Y),Q(Y));var Z=e.define($).expose($);return Z.tester=e.define(J),Z.switcher=e.define(K),Z}"undefined"!=typeof n?"undefined"!=typeof t&&t.exports&&(t.exports=r(e("extended"))):"function"==typeof define?define(["require"],function(e){return r(e("extended"))}):this.isExtended=r(this.extended)}).call(this)}),require.define("/node_modules/array-extended/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js"}}),require.define("/node_modules/array-extended/index.js",function(e,t,n,r,i,s,o){(function(){"use strict";function i(e,t){return t=t||0,r.call(e,t)}function s(e,t){function b(e,t){return M(t,function(t,n){return r(n)||(n=[n]),n.unshift(e),t.unshift(n),t},[])}function w(e,t,n){var r=[];for(var i=0;i<t.length;i++)r.push([e].concat(R(t,i)).slice(0,n));return r}function E(e,t){var n=[],r;if(e&&t&&e.length&&t.length)for(var i=0,s=e.length;i<s;i++)r=e[i],x(t,r)!==-1&&n.push(r);return n}function x(e,t,n){if(e&&c&&c===e.indexOf)return e.indexOf(t,n);if(!r(e))throw new TypeError;var i=Object(e),s=i.length>>>0;if(s===0)return-1;var f=0;arguments.length>2&&(f=Number(arguments[2]),f!==f?f=0:f!==0&&f!==Infinity&&f!==-Infinity&&(f=(f>0||-1)*o(u(f))));if(f>=s)return-1;var l=f>=0?f:a(s-u(f),0);for(;l<s;l++)if(l in i&&i[l]===t)return l;return-1}function T(e,t,n){if(!r(e))throw new TypeError;var i=Object(e),s=i.length>>>0;if(s===0)return-1;var a=s;arguments.length>2&&(a=Number(arguments[2]),a!==a?a=0:a!==0&&a!==1/0&&a!==-1/0&&(a=(a>0||-1)*o(u(a))));var l=a>=0?f(a,s-1):s-u(a);for(;l>=0;l--)if(l in i&&i[l]===t)return l;return-1}function N(e,t,n){if(e&&m&&m===e.filter)return e.filter(t,n);if(!r(e)||typeof t!="function")throw new TypeError;var i=Object(e),s=i.length>>>0,o=[];for(var u=0;u<s;u++)if(u in i){var a=i[u];t.call(n,a,u,i)&&o.push(a)}return o}function C(e,t,n){if(!r(e)||typeof t!="function")throw new TypeError;if(e&&h&&h===e.forEach)return e.forEach(t,n),e;for(var i=0,s=e.length;i<s;++i)t.call(n||e,e[i],i,e);return e}function k(e,t,n){if(e&&g&&g===e.every)return e.every(t,n);if(!r(e)||typeof t!="function")throw new TypeError;var i=Object(e),s=i.length>>>0;for(var o=0;o<s;o++)if(o in i&&!t.call(n,i[o],o,i))return!1;return!0}function L(e,t,n){if(e&&y&&y===e.some)return e.some(t,n);if(!r(e)||typeof t!="function")throw new TypeError;var i=Object(e),s=i.length>>>0;for(var o=0;o<s;o++)if(o in i&&t.call(n,i[o],o,i))return!0;return!1}function A(e,t,n){if(e&&p&&p===e.map)return e.map(t,n);if(!r(e)||typeof t!="function")throw new TypeError;var i=Object(e),s=i.length>>>0,o=[];for(var u=0;u<s;u++)u in i&&o.push(t.call(n,i[u],u,i));return o}function O(e,t,n){var i=arguments.length>2;if(e&&d&&d===e.reduce)return i?e.reduce(t,n):e.reduce(t);if(!r(e)||typeof t!="function")throw new TypeError;var s=0,o=e.length>>0;if(arguments.length<3){if(o===0)throw new TypeError("Array length is 0 and no second argument");n=e[0],s=1}else n=arguments[2];while(s<o)s in e&&(n=t.call(undefined,n,e[s],s,e)),++s;return n}function M(e,t,n){var i=arguments.length>2;if(e&&v&&v===e.reduceRight)return i?e.reduceRight(t,n):e.reduceRight(t);if(!r(e)||typeof t!="function")throw new TypeError;var s=Object(e),o=s.length>>>0;if(o===0&&arguments.length===2)throw new TypeError;var u=o-1;if(arguments.length>=3)n=arguments[2];else do if(u in e){n=e[u--];break}while(!0);while(u>=0)u in s&&(n=t.call(undefined,n,s[u],u,s)),u--;return n}function _(e){var n=[];if(e!==null){var s=i(arguments);if(s.length===1)if(r(e))n=e;else if(t.isHash(e))for(var o in e)e.hasOwnProperty(o)&&n.push([o,e[o]]);else n.push(e);else C(s,function(e){n=n.concat(_(e))})}return n}function D(e){return e=e||[],e.length?O(e,function(e,t){return e+t}):0}function P(e){e=e||[];if(e.length){var n=D(e);if(t.isNumber(n))return n/e.length;throw new Error("Cannot average an array of non numbers.")}return 0}function H(e,t){return S(e,t)}function B(e,t){return S(e,t)[0]}function j(e,t){return S(e,t)[e.length-1]}function F(e){var t=e,n=Y(i(arguments,1));return r(e)&&(t=N(e,function(e){return x(n,e)===-1})),t}function I(e){var t=[];if(r(e))for(var n=0,i=e.length;n<i;n++){var s=e[n];x(t,s)===-1&&t.push(s)}return t}function q(e){return I(e)}function R(e,t){var n=e.slice();return typeof t!="number"&&(t=1),t&&r(e)?(t>0?(n.push(n.shift()),t--):(n.unshift(n.pop()),t++),R(n,t)):n}function U(e,t){var n=[];if(r(e)){var i=e.slice(0);typeof t!="number"&&(t=e.length),t?t<=e.length&&(n=O(e,function(e,n,r){var s;return t>1?s=w(n,R(i,r).slice(1),t):s=[[n]],e.concat(s)},[])):n=[[]]}return n}function z(){var e=[],n=i(arguments);if(n.length>1){var s=n.shift();r(s)&&(e=O(s,function(e,i,s){var o=[i];for(var u=0;u<n.length;u++){var a=n[u];r(a)&&!t.isUndefined(a[s])?o.push(a[s]):o.push(null)}return e.push(o),e},[]))}return e}function W(e){var t=[];if(r(e)&&e.length){var n;C(e,function(e){r(e)&&(!n||e.length===n.length)&&(C(e,function(e,n){t[n]||(t[n]=[]),t[n].push(e)}),n=e)})}return t}function X(e,t){var n=[];t=i(arguments),e=t.shift();if(r(e)&&t.length)for(var s=0,o=t.length;s<o;s++)n.push(e[t[s]]||null);return n}function V(){var e=[],t=i(arguments);if(t.length>1){for(var n=0,r=t.length;n<r;n++)e=e.concat(t[n]);e=I(e)}return e}function $(){var e=[],t,n=i(arguments);n.length>1?t=n:t=n[0];if(r(t)){var e=t.shift();for(var s=0,o=t.length;s<o;s++)e=E(e,t[s])}return I(e)}function J(e){var t=[];return r(e)&&e.length&&(t=O(e,function(e,t){var n=A(e,function(e){return e.concat(t)});return e.concat(n)},[[]])),t}function K(e,t){var n=[];return r(e)&&r(t)&&e.length&&t.length&&(n=b(e[0],t).concat(K(e.slice(1),t))),n}function Q(e){var n=[];return r(e)&&e.length&&(n=N(e,function(e){return!t.isUndefinedOrNull(e)})),n}function G(e,n){n=t.isNumber(n)?n:1,n||(n=1),e=_(e||[]);var r=[],i=0;while(++i<=n)r=r.concat(e);return r}function Y(e){var t,n=i(arguments);return n.length>1?t=n:t=_(e),O(t,function(e,t){return e.concat(t)},[])}function Z(e,t){t=t.split(".");var n=e.slice(0);return C(t,function(e){var t=e.match(/(\w+)\(\)$/);n=A(n,function(n){return t?n[t[1]]():n[e]})}),n}function et(e,t,r){return r=i(arguments,2),A(e,function(e){var i=n(t)?e[t]:t;return i.apply(e,r)})}var n=t.isString,r=Array.isArray||t.isArray,s=t.isDate,o=Math.floor,u=Math.abs,a=Math.max,f=Math.min,l=Array.prototype,c=l.indexOf,h=l.forEach,p=l.map,d=l.reduce,v=l.reduceRight,m=l.filter,g=l.every,y=l.some,S=function(){var e=function(e,t){return k(e,t)},t=function(e,t){return e-t},i=function(e,t){return e.getTime()-t.getTime()};return function(u,a){var f=[];return r(u)&&(f=u.slice(),a?typeof a=="function"?f.sort(a):f.sort(function(e,t){var r=e[a],i=t[a];return n(r)&&n(i)?r>i?1:r<i?-1:0:s(r)&&s(i)?r.getTime()-i.getTime():r-i}):e(f,n)?f.sort():e(f,s)?f.sort(i):f.sort(t)),f}}(),tt={toArray:_,sum:D,avg:P,sort:H,min:B,max:j,difference:F,removeDuplicates:I,unique:q,rotate:R,permutations:U,zip:z,transpose:W,valuesAt:X,union:V,intersect:$,powerSet:J,cartesian:K,compact:Q,multiply:G,flatten:Y,pluck:Z,invoke:et,forEach:C,map:A,filter:N,reduce:O,reduceRight:M,some:L,every:k,indexOf:x,lastIndexOf:T};return e.define(r,tt).expose(tt)}var r=Array.prototype.slice;"undefined"!=typeof n?"undefined"!=typeof t&&t.exports&&(t.exports=s(e("extended"),e("is-extended"))):"function"==typeof define?define(["require"],function(e){return s(e("extended"),e("is-extended"))}):this.arrayExtended=s(this.extended,this.isExtended)}).call(this)}),require.define("/node_modules/date-extended/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js"}}),require.define("/node_modules/date-extended/index.js",function(e,t,n,r,i,s,o){(function(){"use strict";function r(e,t,n){function r(e,t,n,r){e=""+e,n=n||" ";var i=e.length;while(i<t)r?e+=n:e=n+e,i++;return e}function i(e,n,r){var s=e;if(t.isString(s)){if(e.length>n)if(r){var o=e.length;s=e.substring(o-n,o)}else s=e.substring(0,n)}else s=i(""+s,n);return s}function s(e,n,r){if(!t.isArray(e)||typeof n!="function")throw new TypeError;var i=Object(e),s=i.length>>>0;for(var o=0;o<s;o++)if(o in i&&!n.call(r,i[o],o,i))return!1;return!0}function E(e,t){return N.difference(new Date(e.getFullYear(),0,1,e.getHours()),e,null,t)+1}function S(e,t,n){t=t||0;var r=e[n?"getUTCFullYear":"getFullYear"](),i=(new Date(r,0,1)).getDay(),s=(i-t+7)%7,o=f((E(e)+s-1)/7);return i===t&&o++,o}function x(e){var t=e.toString(),n="",r=t.indexOf("(");return r>-1&&(n=t.substring(++r,t.indexOf(")"))),n}function T(e,t){return e.replace(/([a-z])\1*/ig,function(e){var n,r=e.charAt(0),i=e.length,s="0?",o="0{0,2}";if(r==="y")n="\\d{2,4}";else if(r==="M")n=i>2?"\\S+?":"1[0-2]|"+s+"[1-9]";else if(r==="D")n="[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|"+o+"[1-9][0-9]|"+s+"[1-9]";else if(r==="d")n="3[01]|[12]\\d|"+s+"[1-9]";else if(r==="w")n="[1-4][0-9]|5[0-3]|"+s+"[1-9]";else if(r==="E")n="\\S+";else if(r==="h")n="1[0-2]|"+s+"[1-9]";else if(r==="K")n="1[01]|"+s+"\\d";else if(r==="H")n="1\\d|2[0-3]|"+s+"\\d";else if(r==="k")n="1\\d|2[0-4]|"+s+"[1-9]";else if(r==="m"||r==="s")n="[0-5]\\d";else if(r==="S")n="\\d{"+i+"}";else if(r==="a"){var u="AM",a="PM";n=u+"|"+a,u!==u.toLowerCase()&&(n+="|"+u.toLowerCase()),a!==a.toLowerCase()&&(n+="|"+a.toLowerCase()),n=n.replace(/\./g,"\\.")}else r==="v"||r==="z"||r==="Z"||r==="G"||r==="q"||r==="Q"?n=".*":n=r===" "?"\\s*":r+"*";return t&&t.push(e),"("+n+")"}).replace(/[\xa0 ]/g,"[\\s\\xa0]")}function k(e){C[e+"sFromNow"]=function(t){return N.add(new Date,e,t)},C[e+"sAgo"]=function(t){return N.add(new Date,e,-t)}}var o=function(){function r(e,t,r){return e=e.replace(/s$/,""),n.hasOwnProperty(e)?n[e](t,r):[r,"UTC"+e.charAt(0).toUpperCase()+e.substring(1)+"s",!1]}function s(e,n,r,s){return e=e.replace(/s$/,""),t(i[e](n,r,s))}var e=Math.floor,t=Math.round,n={day:function(t,n){return[n,"Date",!1]},weekday:function(t,n){var r,i,s=n%5,o=t.getDay(),u=0;s?(r=s,i=parseInt(n/5,10)):(r=n>0?5:-5,i=n>0?(n-5)/5:(n+5)/5),o===6&&n>0?u=1:o===0&&n<0&&(u=-1);var a=o+r;if(a===0||a===6)u=n>0?2:-2;return[7*i+r+u,"Date",!1]},year:function(t,n){return[n,"FullYear",!0]},week:function(t,n){return[n*7,"Date",!1]},quarter:function(t,n){return[n*3,"Month",!0]},month:function(t,n){return[n,"Month",!0]}},i={quarter:function(n,r,i){var s=r.getFullYear()-n.getFullYear(),o=n[i?"getUTCMonth":"getMonth"](),u=r[i?"getUTCMonth":"getMonth"](),a=e(o/3)+1,f=e(u/3)+1;return f+=s*4,f-a},weekday:function(t,n,r){var i=s("day",t,n,r),o,u=i%7;if(u===0)i=s("week",t,n,r)*5;else{var a=0,f=t[r?"getUTCDay":"getDay"](),l=n[r?"getUTCDay":"getDay"]();o=parseInt(i/7,10);var c=new Date(+t);c.setDate(c[r?"getUTCDate":"getDate"]()+o*7);var h=c[r?"getUTCDay":"getDay"]();if(i>0){if(f===6||l===6)a=-1;else if(f===0)a=0;else if(l===0||h+u>5)a=-2}else if(i<0)if(f===6)a=0;else if(f===0||l===0)a=1;else if(l===6||h+u<0)a=2;i+=a,i-=o*2}return i},year:function(e,t){return t.getFullYear()-e.getFullYear()},month:function(e,t,n){var r=e[n?"getUTCMonth":"getMonth"](),i=t[n?"getUTCMonth":"getMonth"]();return i-r+(t.getFullYear()-e.getFullYear())*12},week:function(e,n,r){return t(s("day",e,n,r)/7)},day:function(e,t){return 1.1574074074074074e-8*(t.getTime()-e.getTime())},hour:function(e,t){return 2.7777777777777776e-7*(t.getTime()-e.getTime())},minute:function(e,t){return 16666666666666667e-21*(t.getTime()-e.getTime())},second:function(e,t){return.001*(t.getTime()-e.getTime())},millisecond:function(e,t){return t.getTime()-e.getTime()}};return{addTransform:r,differenceTransform:s}}(),u=o.addTransform,a=o.differenceTransform,f=Math.floor,l=Math.round,c=Math.min,h=Math.pow,p=Math.ceil,d=Math.abs,v=["January","February","March","April","May","June","July","August","September","October","November","December"],m=["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."],g=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],y=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],b=["Before Christ","Anno Domini"],w=["BC","AD"],N={getDaysInMonth:function(e){var t=e.getMonth(),n=[31,28,31,30,31,30,31,31,30,31,30,31];return t===1&&N.isLeapYear(e)?29:n[t]},isLeapYear:function(e,t){var n=e[t?"getUTCFullYear":"getFullYear"]();return n%400===0||n%4===0&&n%100!==0},isWeekend:function(e,t){var n=(e||new Date)[t?"getUTCDay":"getDay"]();return n===0||n===6},getTimezoneName:x,compare:function(e,t,n){return e=new Date(+e),t=new Date(+(t||new Date)),n==="date"?(e.setHours(0,0,0,0),t.setHours(0,0,0,0)):n==="time"&&(e.setFullYear(0,0,0),t.setFullYear(0,0,0)),e>t?1:e<t?-1:0},add:function(e,t,n){var r=u(t,e,n||0);n=r[0];var i=r[1],s=new Date(+e),o=r[2];return i&&s["set"+i](s["get"+i]()+n),o&&s.getDate()<e.getDate()&&s.setDate(0),s},difference:function(e,t,n,r){return t=t||new Date,n=n||"day",a(n,e,t,r)},format:function(e,t,n){n=n||!1;var s,o,u,a,c,T,N,C;return n?(s=e.getUTCFullYear(),o=e.getUTCMonth(),u=e.getUTCDay(),a=e.getUTCDate(),c=e.getUTCHours(),T=e.getUTCMinutes(),N=e.getUTCSeconds(),C=e.getUTCMilliseconds()):(s=e.getFullYear(),o=e.getMonth(),a=e.getDate(),u=e.getDay(),c=e.getHours(),T=e.getMinutes(),N=e.getSeconds(),C=e.getMilliseconds()),t.replace(/([A-Za-z])\1*/g,function(t){var k,L,A=t.charAt(0),O=t.length;if(A==="d")k=""+a,L=!0;else if(A==="H"&&!k)k=""+c,L=!0;else if(A==="m"&&!k)k=""+T,L=!0;else if(A==="s")k||(k=""+N),L=!0;else if(A==="G")k=(O<4?w:b)[s<0?0:1];else if(A==="y")k=s,O>1&&(O===2?k=i(""+k,2,!0):L=!0);else if(A.toUpperCase()==="Q")k=p((o+1)/3),L=!0;else if(A==="M")O<3?(k=o+1,L=!0):k=(O===3?m:v)[o];else if(A==="w")k=S(e,0,n),L=!0;else if(A==="D")k=E(e,n),L=!0;else if(A==="E")O<3?(k=u+1,L=!0):k=(O===-3?y:g)[u];else if(A==="a")k=c<12?"AM":"PM";else if(A==="h")k=c%12||12,L=!0;else if(A==="K")k=c%12,L=!0;else if(A==="k")k=c||24,L=!0;else if(A==="S")k=l(C*h(10,O-3)),L=!0;else if(A==="z"||A==="v"||A==="Z"){k=x(e),(A==="z"||A==="v")&&!k&&(O=4);if(!k||A==="Z"){var M=e.getTimezoneOffset(),_=[M>=0?"-":"+",r(f(d(M)/60),2,"0"),r(d(M)%60,2,"0")];O===4&&(_.splice(0,0,"GMT"),_.splice(3,0,":")),k=_.join("")}}else k=t;return L&&(k=r(k,O,"0")),k})}},C={},L=["year","month","day","hour","minute","second"];for(var A=0,O=L.length;A<O;A++)k(L[A]);var M={parseDate:function(e,t){if(!t)throw new Error("format required when calling dateExtender.parse");var r=[],i=T(t,r),o=new RegExp("^"+i+"$","i"),u=o.exec(e);if(!u)return null;var a=[1970,0,1,0,0,0,0],f="",l=s(u,function(e,t){if(t){var i=r[t-1],s=i.length,o=i.charAt(0);if(o==="y")if(e<100){e=parseInt(e,10);var u=""+(new Date).getFullYear(),l=u.substring(0,2)*100,h=c(u.substring(2,4)+20,99);a[0]=e<h?l+e:l-100+e}else a[0]=e;else if(o==="M"){if(s>2){var p=v,d,b;s===3&&(p=m),e=e.replace(".","").toLowerCase();var w=!1;for(d=0,b=p.length;d<b&&!w;d++){var E=p[d].replace(".","").toLocaleLowerCase();E===e&&(e=d,w=!0)}if(!w)return!1}else e--;a[1]=e}else if(o==="E"||o==="e"){var S=g;s===3&&(S=y),e=e.toLowerCase(),S=n.map(S,function(e){return e.toLowerCase()});var x=n.indexOf(S,e);if(x===-1){e=parseInt(e,10);if(isNaN(e)||e>S.length)return!1}else e=x}else if(o==="D"||o==="d")o==="D"&&(a[1]=0),a[2]=e;else if(o==="a"){var T="am",N="pm",C=/\./g;e=e.replace(C,"").toLowerCase(),f=e===N?"p":e===T?"a":""}else o==="k"||o==="h"||o==="H"||o==="K"?(o==="k"&&+e===24&&(e=0),a[3]=e):o==="m"?a[4]=e:o==="s"?a[5]=e:o==="S"&&(a[6]=e)}return!0});if(l){var h=+a[3];f==="p"&&h<12?a[3]=h+12:f==="a"&&h===12&&(a[3]=0);var p=new Date(a[0],a[1],a[2],a[3],a[4],a[5],a[6]),d=n.indexOf(r,"d")!==-1,b=n.indexOf(r,"M")!==-1,w=a[1],E=a[2],S=p.getMonth(),x=p.getDate();return b&&S>w||d&&x>E?null:p}return null}},_=e.define(t.isDate,N).define(t.isString,M).define(t.isNumber,C);for(A in N)N.hasOwnProperty(A)&&(_[A]=N[A]);for(A in M)M.hasOwnProperty(A)&&(_[A]=M[A]);for(A in C)C.hasOwnProperty(A)&&(_[A]=C[A]);return _}"undefined"!=typeof n?"undefined"!=typeof t&&t.exports&&(t.exports=r(e("extended"),e("is-extended"),e("array-extended"))):"function"==typeof define?define(["require"],function(e){return r(e("extended"),e("is-extended"),e("array-extended"))}):this.dateExtended=r(this.extended,this.isExtended,this.arrayExtended)}).call(this)}),require.define("/node_modules/object-extended/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js"}}),require.define("/node_modules/object-extended/index.js",function(e,t,n,r,i,s,o){(function(){"use strict";function r(e,t){function i(e,t){var n,r;for(n in t)if(t.hasOwnProperty(n)){r=t[n];if(!(n in e)||e[n]!==r)e[n]=r}return e}function s(e,t){var i,o,u;for(i in t)t.hasOwnProperty(i)&&(o=t[i],u=e[i],n(u,o)||(r(u)&&r(o)?e[i]=s(u,o):r(o)?e[i]=s({},o):e[i]=o));return e}function o(e){e||(e={});for(var t=1,n=arguments.length;t<n;t++)i(e,arguments[t]);return e}function u(e){e||(e={});for(var t=1,n=arguments.length;t<n;t++)s(e,arguments[t]);return e}function a(e,t){var n=e.prototype||e;return o(n,t),e}function f(e,t,n){if(!r(e)||typeof t!="function")throw new TypeError;var i=h(e),s;for(var o=0,u=i.length;o<u;++o)s=i[o],t.call(n||e,e[s],s,e);return e}function l(e,t,n){if(!r(e)||typeof t!="function")throw new TypeError;var i=h(e),s,o,u={};for(var a=0,f=i.length;a<f;++a)s=i[a],o=e[s],t.call(n||e,o,s,e)&&(u[s]=o);return u}function c(e){if(!r(e))throw new TypeError;var t=h(e),n=[];for(var i=0,s=t.length;i<s;++i)n.push(e[t[i]]);return n}function h(e){if(!r(e))throw new TypeError;var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t}function p(e){if(!r(e))throw new TypeError;var t=h(e),n,i={};for(var s=0,o=t.length;s<o;++s)n=t[s],i[e[n]]=n;return i}function d(e){if(!r(e))throw new TypeError;var t=h(e),n,i=[];for(var s=0,o=t.length;s<o;++s)n=t[s],i.push([n,e[n]]);return i}var n=t.deepEqual,r=t.isHash,v={forEach:f,filter:l,invert:p,values:c,toArray:d,keys:h},m={extend:a,merge:o,deepMerge:u},g=e.define(t.isObject,m).define(r,v).define(t.isFunction,{extend:a}).expose({hash:v}).expose(m),y=g.extend;return g.extend=function(){if(arguments.length===1)return y.extend.apply(g,arguments);a.apply(null,arguments)},g}"undefined"!=typeof n?"undefined"!=typeof t&&t.exports&&(t.exports=r(e("extended"),e("is-extended"))):"function"==typeof define?define(["require"],function(e){return r(e("extended"),e("is-extended"))}):this.objectExtended=r(extended,isExtended)}).call(this)}),require.define("/node_modules/string-extended/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js"}}),require.define("/node_modules/string-extended/index.js",function(e,t,n,r,i,s,o){(function(){"use strict";function r(e,t,n){function l(e,t){var n=e;if(a.test(t)){var r=t.match(a),i=r[1],s=r[3],o=r[4];o&&(o=parseInt(o,10),n.length<o?n=v(n,o,s,i):n=m(n,o))}return n}function c(e,n){var r;if(!t.isNumber(e))throw new Error("stringExtended.format : when using %d the parameter must be a number!");r=""+e;if(a.test(n)){var i=n.match(a),s=i[1],o=i[2],u=i[3],f=i[4];o&&(r=(e>0?"+":"")+r),f&&(f=parseInt(f,10),r.length<f?r=v(r,f,u||"0",s):r=m(r,f))}return r}function h(e,t){var n,i=t.match(f),s=0;i&&(s=parseInt(i[0],10),isNaN(s)&&(s=0));try{n=r(e,null,s)}catch(o){throw new Error("stringExtended.format : Unable to parse json from ",e)}return n}function v(e,t,n,r){e=""+e,n=n||" ";var i=e.length;while(i<t)r?e+=n:e=n+e,i++;return e}function m(e,n,r){var i=e;if(t.isString(i)){if(e.length>n)if(r){var s=e.length;i=e.substring(s-n,s)}else i=e.substring(0,n)}else i=m(""+i,n);return i}function g(e,a){if(a instanceof Array){var f=0,p=a.length;return e.replace(o,function(e,t,i){var s,o;if(f<p){s=a[f++];if(e==="%s"||e==="%d"||e==="%D")o=s+"";else if(e==="%Z")o=s.toUTCString();else if(e==="%j")try{o=r(s)}catch(u){throw new Error("stringExtended.format : Unable to parse json from ",s)}else{t=t.replace(/^\[|\]$/g,"");switch(i){case"s":o=l(s,t);break;case"d":o=c(s,t);break;case"j":o=h(s,t);break;case"D":o=n.format(s,t);break;case"Z":o=n.format(s,t,!0)}}return o}return e})}if(i(a))return e.replace(u,function(e,r,i){i=a[i];if(!t.isUndefined(i)){if(!r)return""+i;if(t.isString(i))return l(i,r);if(t.isNumber(i))return c(i,r);if(t.isDate(i))return n.format(i,r);if(t.isObject(i))return h(i,r)}return e});var d=s.call(arguments).slice(1);return g(e,d)}function y(e,t){var n=[];return e&&(e.indexOf(t)>0?n=e.replace(/\s+/g,"").split(t):n.push(e)),n}function b(e,t){var n=[];if(t)for(var r=0;r<t;r++)n.push(e);return n.join("")}function w(e,n){var r,i,s;if(n)if(t.isArray(e)){r=[];for(i=0,s=e.length;i<s;i++)r.push(w(e[i],n))}else if(n instanceof Array){r=e;for(i=0,s=n.length;i<s;i++)r=w(r,n[i])}else n in p&&(r="["+p[n]+"m"+e+"[0m");return r}var r;typeof JSON=="undefined"?function(){function e(e){return e<10?"0"+e:e}function i(r){return t.isDate(r)?isFinite(r.valueOf())?r.getUTCFullYear()+"-"+e(r.getUTCMonth()+1)+"-"+e(r.getUTCDate())+"T"+e(r.getUTCHours())+":"+e(r.getUTCMinutes())+":"+e(r.getUTCSeconds())+"Z":null:n(r)?r.valueOf():r}function c(e){return o.lastIndex=0,o.test(e)?'"'+e.replace(o,function(e){var t=f[e];return typeof t=="string"?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function h(e,t){var n,r,s,o,f=u,p,d=t[e];d&&(d=i(d)),typeof l=="function"&&(d=l.call(t,e,d));switch(typeof d){case"string":return c(d);case"number":return isFinite(d)?String(d):"null";case"boolean":case"null":return String(d);case"object":if(!d)return"null";u+=a,p=[];if(Object.prototype.toString.apply(d)==="[object Array]"){o=d.length;for(n=0;n<o;n+=1)p[n]=h(n,d)||"null";return s=p.length===0?"[]":u?"[\n"+u+p.join(",\n"+u)+"\n"+f+"]":"["+p.join(",")+"]",u=f,s}if(l&&typeof l=="object"){o=l.length;for(n=0;n<o;n+=1)typeof l[n]=="string"&&(r=l[n],s=h(r,d),s&&p.push(c(r)+(u?": ":":")+s))}else for(r in d)Object.prototype.hasOwnProperty.call(d,r)&&(s=h(r,d),s&&p.push(c(r)+(u?": ":":")+s));return s=p.length===0?"{}":u?"{\n"+u+p.join(",\n"+u)+"\n"+f+"}":"{"+p.join(",")+"}",u=f,s}}var n=t.tester().isString().isNumber().isBoolean().tester(),s=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,o=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,u,a,f={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},l;r=function(e,t,n){var r;u="",a="";if(typeof n=="number")for(r=0;r<n;r+=1)a+=" ";else typeof n=="string"&&(a=n);l=t;if(!t||typeof t=="function"||typeof t=="object"&&typeof t.length=="number")return h("",{"":e});throw new Error("JSON.stringify")}}():r=JSON.stringify;var i=t.isHash,s=Array.prototype.slice,o=/%((?:-?\+?.?\d*)?|(?:\[[^\[|\]]*\]))?([sjdDZ])/g,u=/\{(?:\[([^\[|\]]*)\])?(\w+)\}/g,a=/(-?)(\+?)([A-Z|a-z|\W]?)([1-9][0-9]*)?$/,f=/([1-9][0-9]*)$/g,p={bold:1,bright:1,italic:3,underline:4,blink:5,inverse:7,crossedOut:9,red:31,green:32,yellow:33,blue:34,magenta:35,cyan:36,white:37,redBackground:41,greenBackground:42,yellowBackground:43,blueBackground:44,magentaBackground:45,cyanBackground:46,whiteBackground:47,encircled:52,overlined:53,grey:90,black:90},d={SMILEY:"☺",SOLID_SMILEY:"☻",HEART:"♥",DIAMOND:"♦",CLOVE:"♣",SPADE:"♠",DOT:"•",SQUARE_CIRCLE:"◘",CIRCLE:"○",FILLED_SQUARE_CIRCLE:"◙",MALE:"♂",FEMALE:"♀",EIGHT_NOTE:"♪",DOUBLE_EIGHTH_NOTE:"♫",SUN:"☼",PLAY:"►",REWIND:"◄",UP_DOWN:"↕",PILCROW:"¶",SECTION:"§",THICK_MINUS:"▬",SMALL_UP_DOWN:"↨",UP_ARROW:"↑",DOWN_ARROW:"↓",RIGHT_ARROW:"→",LEFT_ARROW:"←",RIGHT_ANGLE:"∟",LEFT_RIGHT_ARROW:"↔",TRIANGLE:"▲",DOWN_TRIANGLE:"▼",HOUSE:"⌂",C_CEDILLA:"Ç",U_UMLAUT:"ü",E_ACCENT:"é",A_LOWER_CIRCUMFLEX:"â",A_LOWER_UMLAUT:"ä",A_LOWER_GRAVE_ACCENT:"à",A_LOWER_CIRCLE_OVER:"å",C_LOWER_CIRCUMFLEX:"ç",E_LOWER_CIRCUMFLEX:"ê",E_LOWER_UMLAUT:"ë",E_LOWER_GRAVE_ACCENT:"è",I_LOWER_UMLAUT:"ï",I_LOWER_CIRCUMFLEX:"î",I_LOWER_GRAVE_ACCENT:"ì",A_UPPER_UMLAUT:"Ä",A_UPPER_CIRCLE:"Å",E_UPPER_ACCENT:"É",A_E_LOWER:"æ",A_E_UPPER:"Æ",O_LOWER_CIRCUMFLEX:"ô",O_LOWER_UMLAUT:"ö",O_LOWER_GRAVE_ACCENT:"ò",U_LOWER_CIRCUMFLEX:"û",U_LOWER_GRAVE_ACCENT:"ù",Y_LOWER_UMLAUT:"ÿ",O_UPPER_UMLAUT:"Ö",U_UPPER_UMLAUT:"Ü",CENTS:"¢",POUND:"£",YEN:"¥",CURRENCY:"¤",PTS:"₧",FUNCTION:"ƒ",A_LOWER_ACCENT:"á",I_LOWER_ACCENT:"í",O_LOWER_ACCENT:"ó",U_LOWER_ACCENT:"ú",N_LOWER_TILDE:"ñ",N_UPPER_TILDE:"Ñ",A_SUPER:"ª",O_SUPER:"º",UPSIDEDOWN_QUESTION:"¿",SIDEWAYS_L:"⌐",NEGATION:"¬",ONE_HALF:"½",ONE_FOURTH:"¼",UPSIDEDOWN_EXCLAMATION:"¡",DOUBLE_LEFT:"«",DOUBLE_RIGHT:"»",LIGHT_SHADED_BOX:"░",MEDIUM_SHADED_BOX:"▒",DARK_SHADED_BOX:"▓",VERTICAL_LINE:"│",MAZE__SINGLE_RIGHT_T:"┤",MAZE_SINGLE_RIGHT_TOP:"┐",MAZE_SINGLE_RIGHT_BOTTOM_SMALL:"┘",MAZE_SINGLE_LEFT_TOP_SMALL:"┌",MAZE_SINGLE_LEFT_BOTTOM_SMALL:"└",MAZE_SINGLE_LEFT_T:"├",MAZE_SINGLE_BOTTOM_T:"┴",MAZE_SINGLE_TOP_T:"┬",MAZE_SINGLE_CENTER:"┼",MAZE_SINGLE_HORIZONTAL_LINE:"─",MAZE_SINGLE_RIGHT_DOUBLECENTER_T:"╡",MAZE_SINGLE_RIGHT_DOUBLE_BL:"╛",MAZE_SINGLE_RIGHT_DOUBLE_T:"╢",MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP:"╖",MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP:"╕",MAZE_SINGLE_LEFT_DOUBLE_T:"╞",MAZE_SINGLE_BOTTOM_DOUBLE_T:"╧",MAZE_SINGLE_TOP_DOUBLE_T:"╤",MAZE_SINGLE_TOP_DOUBLECENTER_T:"╥",MAZE_SINGLE_BOTTOM_DOUBLECENTER_T:"╨",MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM:"╘",MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP:"╒",MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP:"╓",MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM:"╙",MAZE_SINGLE_LEFT_TOP:"Γ",MAZE_SINGLE_RIGHT_BOTTOM:"╜",MAZE_SINGLE_LEFT_CENTER:"╟",MAZE_SINGLE_DOUBLECENTER_CENTER:"╫",MAZE_SINGLE_DOUBLECROSS_CENTER:"╪",MAZE_DOUBLE_LEFT_CENTER:"╣",MAZE_DOUBLE_VERTICAL:"║",MAZE_DOUBLE_RIGHT_TOP:"╗",MAZE_DOUBLE_RIGHT_BOTTOM:"╝",MAZE_DOUBLE_LEFT_BOTTOM:"╚",MAZE_DOUBLE_LEFT_TOP:"╔",MAZE_DOUBLE_BOTTOM_T:"╩",MAZE_DOUBLE_TOP_T:"╦",MAZE_DOUBLE_LEFT_T:"╠",MAZE_DOUBLE_HORIZONTAL:"═",MAZE_DOUBLE_CROSS:"╬",SOLID_RECTANGLE:"█",THICK_LEFT_VERTICAL:"▌",THICK_RIGHT_VERTICAL:"▐",SOLID_SMALL_RECTANGLE_BOTTOM:"▄",SOLID_SMALL_RECTANGLE_TOP:"▀",PHI_UPPER:"Φ",INFINITY:"∞",INTERSECTION:"∩",DEFINITION:"≡",PLUS_MINUS:"±",GT_EQ:"≥",LT_EQ:"≤",THEREFORE:"⌠",SINCE:"∵",DOESNOT_EXIST:"∄",EXISTS:"∃",FOR_ALL:"∀",EXCLUSIVE_OR:"⊕",BECAUSE:"⌡",DIVIDE:"÷",APPROX:"≈",DEGREE:"°",BOLD_DOT:"∙",DOT_SMALL:"·",CHECK:"√",ITALIC_X:"✗",SUPER_N:"ⁿ",SQUARED:"²",CUBED:"³",SOLID_BOX:"■",PERMILE:"‰",REGISTERED_TM:"®",COPYRIGHT:"©",TRADEMARK:"™",BETA:"β",GAMMA:"γ",ZETA:"ζ",ETA:"η",IOTA:"ι",KAPPA:"κ",LAMBDA:"λ",NU:"ν",XI:"ξ",OMICRON:"ο",RHO:"ρ",UPSILON:"υ",CHI_LOWER:"φ",CHI_UPPER:"χ",PSI:"ψ",ALPHA:"α",ESZETT:"ß",PI:"π",SIGMA_UPPER:"Σ",SIGMA_LOWER:"σ",MU:"µ",TAU:"τ",THETA:"Θ",OMEGA:"Ω",DELTA:"δ",PHI_LOWER:"φ",EPSILON:"ε"},E={toArray:y,pad:v,truncate:m,multiply:b,format:g,style:w},S,x=e.define(t.isString,E).define(t.isArray,{style:w});for(S in E)E.hasOwnProperty(S)&&(x[S]=E[S]);return x.characters=d,x}"undefined"!=typeof n?"undefined"!=typeof t&&t.exports&&(t.exports=r(e("extended"),e("is-extended"),e("date-extended"))):"function"==typeof define?define(["require"],function(e){return r(e("extended"),e("is-extended"),e("date-extended"))}):this.stringExtended=r(this.extended,this.isExtended,this.dateExtended)}).call(this)}),require.define("/node_modules/promise-extended/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js"}}),require.define("/node_modules/promise-extended/index.js",function(e,t,n,r,i,s,o){(function(){"use strict";function i(e,t){return t=t||0,r.call(e,t)}function o(e,t,n,r,o){function d(e,t){return function(){try{T(e.apply(null,arguments)).addCallback(t).addErrback(t)}catch(r){t.errback(r)}}}function E(e,t,n){var r=(new b).callback();return u(e,function(e){r=r.then(n?e:p(null,e)),n||(r=r.then(function(e){return t.push(e),t}))}),r}function S(e){return!a(e)&&l(e.then)}function x(e){var t=new b;return e.then(h(t,"callback"),h(t,"errback")),t.promise()}function T(e){var t;return e=i(arguments),e.length?e.length==1?(e=e.pop(),S(e)?e.addCallback&&e.addErrback?t=e:(console.log(e),t=x(e)):f(e)&&n.every(e,S)?t=(new w(e,!0)).promise():t=(new b).callback(e)):t=(new w(n.map(e,function(e){return T(e)}),!0)).promise():t=(new b).callback(e).promise(),t}function N(e,t){return function(){var r=new b,s=i(arguments);return s.push(r.resolve),e.apply(t||this,s),r.promise()}}function C(e){if(f(e))return E(e,[],!1);throw new Error("When calling promise.serial the first argument must be an array")}function k(e){if(f(e))return E(e,[],!0);throw new Error("When calling promise.serial the first argument must be an array")}function L(e,t){e=i(arguments);var n=!1;t=e.pop();var r=T(e);return function(){return n?T(t.apply(this,arguments)):(e=arguments,r.then(h(this,function(){return n=!0,t.apply(this,e)})))}}function A(){return new b}function O(e){return(new w(e,!0)).promise()}function M(e){return A().errback(e)}function _(e){return A().callback(e)}var u=n.forEach,a=r.isUndefinedOrNull,f=r.isArray,l=r.isFunction,c=r.isBoolean,h=o.bind,p=o.bindIgnore,v;if(typeof s!="undefined")v=s.nextTick;else if(typeof setImmediate=="function")v=setImmediate;else if(typeof MessageChannel!="undefined"){var m=new MessageChannel,g={},y=g;m.port1.onmessage=function(){g=g.next;var e=g.task;delete g.task,e()},v=function(e){y=y.next={task:e},m.port2.postMessage(0)}}else v=function(e){setTimeout(e,0)};var b=e({instance:{__fired:!1,__results:null,__error:null,__errorCbs:null,__cbs:null,constructor:function(){this.__errorCbs=[],this.__cbs=[],o.bindAll(this,["callback","errback","resolve","classic","__resolve","addCallback","addErrback"])},__resolve:function(){if(!this.__fired){this.__fired=!0;var e=this.__error?this.__errorCbs:this.__cbs,t=e.length,n,r=this.__error||this.__results;for(n=0;n<t;n++)this.__callNextTick(e[n],r)}},__callNextTick:function(e,t){v(function(){e.apply(this,t)})},addCallback:function(e){return e&&(S(e)&&e.callback&&(e=e.callback),this.__fired&&this.__results?this.__callNextTick(e,this.__results):this.__cbs.push(e)),this},addErrback:function(e){return e&&(S(e)&&e.errback&&(e=e.errback),this.__fired&&this.__error?this.__callNextTick(e,this.__error):this.__errorCbs.push(e)),this},callback:function(e){return this.__fired||(this.__results=arguments,this.__resolve()),this.promise()},errback:function(e){return this.__fired||(this.__error=arguments,this.__resolve()),this.promise()},resolve:function(e,t){return e?this.errback(e):this.callback.apply(this,i(arguments,1)),this},classic:function(e){return"function"==typeof e&&(this.addErrback(function(t){e(t)}),this.addCallback(function(){e.apply(this,[null].concat(i(arguments)))})),this},then:function(e,t){var n=new b,r=n;return l(t)&&(r=d(t,n)),this.addErrback(r),l(e)?this.addCallback(d(e,n)):this.addCallback(n),n.promise()},both:function(e){return this.then(e,e)},promise:function(){var e={then:h(this,"then"),both:h(this,"both"),promise:function(){return e}};return u(["addCallback","addErrback","classic"],function(t){e[t]=h(this,function(){return this[t].apply(this,arguments),e})},this),e}}}),w=b.extend({instance:{__results:null,__errors:null,__promiseLength:0,__defLength:0,__firedLength:0,normalizeResults:!1,constructor:function(e,t){this.__errors=[],this.__results=[],this.normalizeResults=c(t)?t:!1,this._super(arguments),e&&e.length?(this.__defLength=e.length,u(e,this.__addPromise,this)):this.__resolve()},__addPromise:function(e,t){e.then(h(this,function(){var e=i(arguments);e.unshift(t),this.callback.apply(this,e)}),h(this,function(){var e=i(arguments);e.unshift(t),this.errback.apply(this,e)}))},__resolve:function(){if(!this.__fired){this.__fired=!0;var e=this.__errors.length?this.__errorCbs:this.__cbs,t=e.length,n,r=this.__errors.length?this.__errors:this.__results;for(n=0;n<t;n++)this.__callNextTick(e[n],r)}},__callNextTick:function(e,t){v(function(){e.apply(null,[t])})},addCallback:function(e){return e&&(S(e)&&e.callback&&(e=h(e,"callback")),this.__fired&&!this.__errors.length?this.__callNextTick(e,this.__results):this.__cbs.push(e)),this},addErrback:function(e){return e&&(S(e)&&e.errback&&(e=h(e,"errback")),this.__fired&&this.__errors.length?this.__callNextTick(e,this.__errors):this.__errorCbs.push(e)),this},callback:function(e){if(this.__fired)throw new Error("Already fired!");var t=i(arguments);return this.normalizeResults&&(t=t.slice(1),t=t.length==1?t.pop():t),this.__results[e]=t,this.__firedLength++,this.__firedLength==this.__defLength&&this.__resolve(),this.promise()},errback:function(e){if(this.__fired)throw new Error("Already fired!");var t=i(arguments);return this.normalizeResults&&(t=t.slice(1),t=t.length==1?t.pop():t),this.__errors[e]=t,this.__firedLength++,this.__firedLength==this.__defLength&&this.__resolve(),this.promise()}}});return t.define({isPromiseLike:S}).expose({isPromiseLike:S,when:T,wrap:N,wait:L,serial:C,chain:k,Promise:b,PromiseList:w,promise:A,defer:A,deferredList:O,reject:M,resolve:_})}var r=Array.prototype.slice;"undefined"!=typeof n?"undefined"!=typeof t&&t.exports&&(t.exports=o(e("declare.js"),e("extended"),e("array-extended"),e("is-extended"),e("function-extended"))):"function"==typeof define?define(["require"],function(e){return o(e("declare.js"),e("extended"),e("array-extended"),e("is-extended"),e("function-extended"))}):this.arrayExtended=o(this.declare,this.extended,this.arrayExtended,this.isExtended,this.functionExtended)}).call(this)}),require.define("/node_modules/function-extended/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js"}}),require.define("/node_modules/function-extended/index.js",function(e,t,n,r,i,s,o){(function(){"use strict";function r(e,t){function u(e,t){return t=t||0,o.call(e,t)}function a(e,t,n){n=u(arguments,2);if(!i(t)||t in e){if(!i(t)&&!s(t))throw new Error(t+" is not a function");return i(t)?function(){var r=e[t];if(s(r)){var i=n.concat(u(arguments));return r.apply(e,i)}return r}:n.length?function(){var r=n.concat(u(arguments));return t.apply(e,r)}:function(){return t.apply(e,arguments)}}throw new Error(t+" property not defined in scope")}function f(e,t){t=u(arguments,1);if(!i(e)&&!s(e))throw new Error(e+" must be the name of a property or function to execute");return i(e)?function(){var n=u(arguments),r=n.shift(),i=r[e];return s(i)?(n=t.concat(n),i.apply(r,n)):i}:function(){var n=u(arguments),r=n.shift();return n=t.concat(n),e.apply(r,n)}}function l(e,t,n){n=u(arguments,2);if(!i(t)||t in e){if(!i(t)&&!s(t))throw new Error(t+" is not a function");return i(t)?function(){var r=e[t];return s(r)?r.apply(e,n):r}:function(){return t.apply(e,n)}}throw new Error(t+" property not defined in scope")}function c(e){var t=u(arguments,1);if(!r(e)&&!s(e))throw new TypeError("scope must be an object");t.length===1&&n(t[0])&&(t=t[0]);if(!t.length){t=[];for(var i in e)e.hasOwnProperty(i)&&s(e[i])&&t.push(i)}for(var o=0,f=t.length;o<f;o++)e[t[o]]=a(e,e[t[o]]);return e}function h(e,t){t=u(arguments,1);if(!i(e)&&!s(e))throw new Error(e+" must be the name of a property or function to execute");return i(e)?function(){var n=this[e];if(s(n)){var r=t.concat(u(arguments));return n.apply(this,r)}return n}:function(){var n=t.concat(u(arguments));return e.apply(this,n)}}function p(e,t){return function(){var n=u(arguments);return t?e.apply(this,arguments):function(){return e.apply(this,n.concat(u(arguments)))}}}function d(e,t,n){var r;n?r=a(n,t):r=t;if(e){var i=e-1;for(var s=i;s>=0;s--)r=p(r,s===i)}return r}var n=t.isArray,r=t.isObject,i=t.isString,s=t.isFunction,o=Array.prototype.slice;return e.define(r,{bind:a,bindAll:c,bindIgnore:l,curry:function(e,t,n){return d(t,n,e)}}).define(s,{bind:function(e,t){return a.apply(this,[t,e].concat(u(arguments,2)))},bindIgnore:function(e,t){return l.apply(this,[t,e].concat(u(arguments,2)))},partial:h,applyFirst:f,curry:function(e,t,n){return d(t,e,n)},noWrap:{f:function(){return this.value()}}}).define(i,{bind:function(e,t){return a(t,e)},bindIgnore:function(e,t){return l(t,e)},partial:h,applyFirst:f,curry:function(e,t,n){return d(t,e,n)}}).expose({bind:a,bindAll:c,bindIgnore:l,partial:h,applyFirst:f,curry:d})}"undefined"!=typeof n?"undefined"!=typeof t&&t.exports&&(t.exports=r(e("extended"),e("is-extended"))):"function"==typeof define?define(["require"],function(e){return r(e("extended"),e("is-extended"))}):this.functionExtended=r(this.extended,this.isExtended)}).call(this)}),require.define("/node_modules/ht/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js"}}),require.define("/node_modules/ht/index.js",function(e,t,n,r,i,s,o){(function(){"use strict";function r(e){var t=function(e){return typeof e=="string"?e:typeof e=="object"?e.hashCode?e.hashCode():""+e:""+e},n=e.declare({instance:{constructor:function(){this.__entries=[],this.__keys=[],this.__values=[]},pushValue:function(e,t){return this.__keys.push(e),this.__values.push(t),this.__entries.push({key:e,value:t}),t},remove:function(e){var t=null,n=this.__entries,r,i=this.__keys,s=this.__values,o=n.length-1;for(;o>=0;o--)if(!!(r=n[o])&&r.key===e)return n.splice(o,1),i.splice(o,1),s.splice(o,1),r.value;return t},set:function(e,t){var n=null,r=this.__entries,i=this.__values,s=r.length-1;for(;s>=0;s--){var o=r[s];if(o&&e===o.key){i[s]=t,o.value=t,n=t;break}}return n||r.push({key:e,value:t}),n},find:function(e){var t=null,n=this.__entries,r,i=n.length-1;for(;i>=0;i--){r=n[i];if(r&&e===r.key){t=r.value;break}}return t},getEntrySet:function(){return this.__entries},getKeys:function(){return this.__keys},getValues:function(e){return this.__values}}});return e.declare({instance:{constructor:function(){this.__map={}},entrySet:function(){var e=[],t=this.__map;for(var n in t)t.hasOwnProperty(n)&&(e=e.concat(t[n].getEntrySet()));return e},put:function(e,r){var i=t(e),s=null;return(s=this.__map[i])||(s=this.__map[i]=new n),s.pushValue(e,r),r},remove:function(e){var n=t(e),r=null,i=this.__map[n];return i&&(r=i.remove(e)),r},get:function(e){var n=t(e),r=null,i;return!(i=this.__map[n])||(r=i.find(e)),r},set:function(e,r){var i=t(e),s=null,o=null,u=this.__map;return(o=u[i])?s=o.set(e,r):s=(u[i]=new n).pushValue(e,r),s},contains:function(e){var n=t(e),r=!1,i=null;return!(i=this.__map[n])||(r=!!i.find(e)),r},concat:function(e){if(e instanceof this._static){var t=new this._static,n=e.entrySet().concat(this.entrySet());for(var r=n.length-1;r>=0;r--){var i=n[r];t.put(i.key,i.value)}return t}throw new TypeError("When joining hashtables the joining arg must be a HashTable")},filter:function(t,n){var r=this.entrySet(),i=new this._static;r=e.filter(r,t,n);for(var s=r.length-1;s>=0;s--){var o=r[s];i.put(o.key,o.value)}return i},forEach:function(t,n){var r=this.entrySet();e.forEach(r,t,n)},every:function(t,n){var r=this.entrySet();return e.every(r,t,n)},map:function(t,n){var r=this.entrySet();return e.map(r,t,n)},some:function(t,n){var r=this.entrySet();return e.some(r,t,n)},reduce:function(t,n){var r=this.entrySet();return e.reduce(r,t,n)},reduceRight:function(t,n){var r=this.entrySet();return e.reduceRight(r,t,n)},clear:function(){this.__map={}},keys:function(){var e=[],t=this.__map;for(var n in t)e=e.concat(t[n].getKeys());return e},values:function(){var e=[],t=this.__map;for(var n in t)e=e.concat(t[n].getValues());return e},isEmpty:function(){return this.keys().length===0}}})}"undefined"!=typeof n?"undefined"!=typeof t&&t.exports&&(t.exports=r(e("extended")().register("declare",e("declare.js")).register(e("is-extended")).register(e("array-extended")))):"function"==typeof define?define(["extended","declare","is-extended","array-extended"],function(e,t,n,i){return r(e().register("declare",t).register(n).register(i))}):this.Ht=r(this.extended().register("declare",this.declare).register(this.isExtended).register(this.arrayExtended))}).call(this)}),require.define("/node_modules/leafy/package.json",function(e,t,n,r,i,s,o){t.exports={main:"index.js"}}),require.define("/node_modules/leafy/index.js",function(e,t,n,r,i,s,o){(function(){"use strict";function r(e){function t(e,t){var n=0;return e>t?1:e<t?-1:t?n:1}var n=e.multiply,r=e.declare({instance:{__printNode:function(t,r){var i=[];e.isUndefinedOrNull(t)?(i.push(n(" ",r)),i.push("~"),console.log(i.join(""))):(this.__printNode(t.right,r+1),i.push(n(" ",r)),i.push(t.data+"\n"),console.log(i.join("")),this.__printNode(t.left,r+1))},constructor:function(e){e=e||{},this.compare=e.compare||t,this.__root=null},insert:function(){throw new Error("Not Implemented")},remove:function(){throw new Error("Not Implemented")},clear:function(){this.__root=null},isEmpty:function(){return!this.__root},traverseWithCondition:function(e,t,n){var i=!0;return e&&(t=t||r.PRE_ORDER,t===r.PRE_ORDER?(i=n(e.data),i&&(i=this.traverseWithCondition(e.left,t,n),i&&(i=this.traverseWithCondition(e.right,t,n)))):t===r.IN_ORDER?(i=this.traverseWithCondition(e.left,t,n),i&&(i=n(e.data),i&&(i=this.traverseWithCondition(e.right,t,n)))):t===r.POST_ORDER?(i=this.traverseWithCondition(e.left,t,n),i&&(i&&(i=this.traverseWithCondition(e.right,t,n)),i&&(i=n(e.data)))):t===r.REVERSE_ORDER&&(i=this.traverseWithCondition(e.right,t,n),i&&(i=n(e.data),i&&(i=this.traverseWithCondition(e.left,t,n))))),i},traverse:function(e,t,n){e&&(t=t||r.PRE_ORDER,t===r.PRE_ORDER?(n(e.data),this.traverse(e.left,t,n),this.traverse(e.right,t,n)):t===r.IN_ORDER?(this.traverse(e.left,t,n),n(e.data),this.traverse(e.right,t,n)):t===r.POST_ORDER?(this.traverse(e.left,t,n),this.traverse(e.right,t,n),n(e.data)):t===r.REVERSE_ORDER&&(this.traverse(e.right,t,n),n(e.data),this.traverse(e.left,t,n)))},forEach:function(e,t,n){if(typeof e!="function")throw new TypeError;n=n||r.IN_ORDER,t=t||this,this.traverse(this.__root,n,function(n){e.call(t,n,this)})},map:function(e,t,n){if(typeof e!="function")throw new TypeError;n=n||r.IN_ORDER,t=t||this;var i=new this._static;return this.traverse(this.__root,n,function(n){i.insert(e.call(t,n,this))}),i},filter:function(e,t,n){if(typeof e!="function")throw new TypeError;n=n||r.IN_ORDER,t=t||this;var i=new this._static;return this.traverse(this.__root,n,function(n){e.call(t,n,this)&&i.insert(n)}),i},reduce:function(t,n,r){var i=this.toArray(r),s=[i,t];return e.isUndefinedOrNull(n)||s.push(n),e.reduce.apply(e,s)},reduceRight:function(t,n,r){var i=this.toArray(r),s=[i,t];return e.isUndefinedOrNull(n)||s.push(n),e.reduceRight.apply(e,s)},every:function(e,t,n){if(typeof e!="function")throw new TypeError;n=n||r.IN_ORDER,t=t||this;var i=!1;return this.traverseWithCondition(this.__root,n,function(n){return i=e.call(t,n,this)}),i},some:function(e,t,n){if(typeof e!="function")throw new TypeError;n=n||r.IN_ORDER,t=t||this;var i;return this.traverseWithCondition(this.__root,n,function(n){return i=e.call(t,n,this),!i}),i},toArray:function(e){e=e||r.IN_ORDER;var t=[];return this.traverse(this.__root,e,function(e){t.push(e)}),t},contains:function(e){var t=!1,n=this.__root;while(n!==null){var r=this.compare(e,n.data);r?n=n[r===-1?"left":"right"]:(t=!0,n=null)}return t},find:function(e){var t,n=this.__root;while(n){var r=this.compare(e,n.data);if(!r){t=n.data;break}n=n[r===-1?"left":"right"]}return t},findLessThan:function(e,t){var n=[],i=this.compare;return this.traverseWithCondition(this.__root,r.IN_ORDER,function(r){var s=i(e,r);return!t&&s===0||s===1?(n.push(r),!0):!1}),n},findGreaterThan:function(e,t){var n=[],i=this.compare;return this.traverse(this.__root,r.REVERSE_ORDER,function(r){var s=i(e,r);return!t&&s===0||s===-1?(n.push(r),!0):!1}),n},print:function(){this.__printNode(this.__root,0)}},"static":{PRE_ORDER:"pre_order",IN_ORDER:"in_order",POST_ORDER:"post_order",REVERSE_ORDER:"reverse_order"}}),i=function(){var e=Math.abs,t=function(e){return{data:e,balance:0,left:null,right:null}},i=function(e,t,n){var r=e[n];return e[n]=r[t],r[t]=e,r},s=function(e,t,n){return e[n]=i(e[n],n,t),i(e,t,n)},o=function(e,t,n){var r=t==="left"?"right":"left",i=e[t],s=i[r];s.balance===0?e.balance=i.balance=0:s.balance===n?(e.balance=-n,i.balance=0):(e.balance=0,i.balance=n),s.balance=0},u=function(e,t){var n=t==="left"?"right":"left",r=e[t],u=t==="left"?-1:1;return r.balance===u?(e.balance=r.balance=0,e=i(e,n,t)):(o(e,t,u),e=s(e,n,t)),e},a=function(e,t,n){var r=t==="left"?"right":"left",u=e[r],a=t==="left"?-1:1;return u.balance===-a?(e.balance=u.balance=0,e=i(e,t,r)):u.balance===a?(o(e,r,-a),e=s(e,t,r)):(e.balance=-a,u.balance=a,e=i(e,t,r),n.done=!0),e},f=function(n,r,i,s){if(n===null||n===undefined)n=t(r);else{var o=s(r,n.data)===-1?"left":"right";n[o]=f(n[o],r,i,s),i.done||(n.balance+=o==="left"?-1:1,n.balance===0?i.done=!0:e(n.balance)>1&&(n=u(n,o),i.done=!0))}return n},l=function(t,n,r,i){var s,o,u,f;if(t){o=i(n,t.data);if(o===0){var c=t.left,h=t.right;if(!c||!h)return s=c?"left":"right",u=t[s],u;var p=c;while((h=p.right)!==null)p=h;t.data=p.data,n=p.data}s=i(t.data,n)===-1?"right":"left",t[s]=l(t[s],n,r,i);if(!r.done){f=t.balance+=s==="left"?1:-1;var d=e(f);d===1?r.done=!0:d>1&&(t=a(t,s,r))}}return t};return r.extend({instance:{insert:function(e){var t={done:!1};this.__root=f(this.__root,e,t,this.compare)},remove:function(e){this.__root=l(this.__root,e,{done:!1},this.compare)},__printNode:function(e,t){var r=[];e?(this.__printNode(e.right,t+1),r.push(n(" ",t)),r.push(e.data+":"+e.balance+"\n"),console.log(r.join("")),this.__printNode(e.left,t+1)):(r.push(n(" ",t)),r.push("~"),console.log(r.join("")))}}})}(),s=function(){function t(t,n){return{data:t,level:n,left:e,right:e}}function i(e){if(e.level!==0&&e.left.level===e.level){var t=e.left;e.left=t.right,t.right=e,e=t}return e}function s(e){if(e.level!==0&&e.right.right.level===e.level){var t=e.right;e.right=t.left,t.left=e,e=t,e.level++}return e}function o(n,r,u){if(n===e)n=t(r,1);else{var a=u(r,n.data)===-1?"left":"right";n[a]=o(n[a],r,u),n=i(n),n=s(n)}return n}var e={level:0,data:null},u=function(t,n,r){var o,a;if(t!==e){var f=r(n,t.data);if(f===0){o=t.left,a=t.right;if(o!==e&&a!==e){var l=o;while(l.right!==e)l=l.right;t.data=l.data,t.left=u(o,l.data,r)}else t=t[o===e?"right":"left"]}else{var c=f===-1?"left":"right";t[c]=u(t[c],n,r)}}if(t!==e){var h=t.level,p=t.left.level,d=t.right.level;if(p<h-1||d<h-1)d>--t.level&&(t.right.level=t.level),t=i(t),t=s(t)}return t};return r.extend({instance:{isEmpty:function(){return this.__root===e||this._super(arguments)},insert:function(t){this.__root||(this.__root=e),this.__root=o(this.__root,t,this.compare)},remove:function(e){this.__root=u(this.__root,e,this.compare)},traverseWithCondition:function(t){var n=!0;return t!==e?this._super(arguments):n},traverse:function(t){t!==e&&this._super(arguments)},contains:function(){return this.__root!==e?this._super(arguments):!1},__printNode:function(e,t){var r=[];!e||!e.data?(r.push(n(" ",t)),r.push("~"),console.log(r.join(""))):(this.__printNode(e.right,t+1),r.push(n(" ",t)),r.push(e.data+":"+e.level+"\n"),console.log(r.join("")),this.__printNode(e.left,t+1))}}})}(),o=r.extend({instance:{insert:function(e){if(!this.__root)return this.__root={data:e,parent:null,left:null,right:null};var t=this.compare,n=this.__root;while(n!==null){var r=t(e,n.data);if(!r)return;var i=r===-1?"left":"right",s=n[i];if(!s)return n[i]={data:e,parent:n,left:null,right:null};n=s}},remove:function(e){if(this.__root!==null){var t={right:this.__root},n=t,r,i=null,s="right";while(n[s]!==null){r=n,n=n[s];var o=this.compare(e,n.data);o||(i=n),s=o===-1?"left":"right"}i!==null&&(i.data=n.data,r[r.right===n?"right":"left"]=n[n.left===null?"right":"left"]),this.__root=t.right}}}}),u=function(){var e="RED",t="BLACK",i=function(e){return e!==null&&e.red},s=function(e){return{data:e,red:!0,left:null,right:null}},o=function(e,t,n){if(!e)return s(t);var r=n(t,e.data);if(r){var f=r===-1?"left":"right",l=f==="left"?"right":"left";e[f]=o(e[f],t,n);var c=e[f];if(i(c)){var h=e[l];i(h)?(e.red=!0,c.red=!1,h.red=!1):i(c[f])?e=u(e,l):i(c[l])&&(e=a(e,l))}}return e},u=function(e,t){var n=t==="left"?"right":"left",r=e[n];return e[n]=r[t],r[t]=e,e.red=!0,r.red=!1,r},a=function(e,t){var n=t==="left"?"right":"left";return e[n]=u(e[n],n),u(e,t)},f=function(e,t,n,r){if(!e)n.done=!0;else{var s;if(r(t,e.data)===0){if(!e.left||!e.right){var o=e[e.left?"left":"right"];return i(e)?n.done=!0:i(o)&&(o.red=!1,n.done=!0),o}var u=e.right,a;while(u.left!==null)a=u,u=u.left;a&&(a.left=null),e.data=u.data,t=u.data}s=r(t,e.data)===-1?"left":"right",e[s]=f(e[s],t,n,r),n.done||(e=l(e,s,n))}return e},l=function(e,t,n){var r=t==="left"?"right":"left",s=e,o=s[r];i(o)&&(e=u(e,t),o=s[r]);if(o!==null)if(!i(o.left)&&!i(o.right))i(s)&&(n.done=!0),s.red=0,o.red=1;else{var f=s.red,l=e===s;s=(i(o[r])?u:a)(s,t),s.red=f,s.left.red=s.right.red=0,l?e=s:e[t]=s,n.done=!0}return e};return r.extend({instance:{insert:function(e){this.__root=o(this.__root,e,this.compare),this.__root.red=!1},remove:function(e){var t={done:!1},n=f(this.__root,e,t,this.compare);return n!==null&&(n.red=0),this.__root=n,e},__printNode:function(r,i){var s=[];r?(this.__printNode(r.right,i+1),s.push(n(" ",i)),s.push((r.red?e:t)+":"+r.data+"\n"),console.log(s.join("")),this.__printNode(r.left,i+1)):(s.push(n(" ",i)),s.push("~"),console.log(s.join("")))}}})}();return{Tree:r,AVLTree:i,AnderssonTree:s,BinaryTree:o,RedBlackTree:u,IN_ORDER:r.IN_ORDER,PRE_ORDER:r.PRE_ORDER,POST_ORDER:r.POST_ORDER,REVERSE_ORDER:r.REVERSE_ORDER}}"undefined"!=typeof n?"undefined"!=typeof t&&t.exports&&(t.exports=r(e("extended")().register("declare",e("declare.js")).register(e("is-extended")).register(e("array-extended")).register(e("string-extended")))):"function"==typeof define?define(["extended","declare.js","is-extended","array-extended","string-extended"],function(e,t,n,i,s){return r(e().register("declare",t).register(n).register(i).register(s))}):this.leafy=r(this.extended().register("declare",this.declare).register(this.isExtended).register(this.arrayExtended).register(this.stringExtended))}).call(this)}),require.define("fs",function(e,t,n,r,i,s,o){}),require.define("/lib/nodes/index.js",function(e,t,n,r,i,s,o){"use strict";var u=e("../extended"),a=u.forEach,f=u.some,l=u.declare,c=e("../pattern.js"),h=c.ObjectPattern,p=c.NotPattern,d=c.CompositePattern,v=c.InitialFactPattern,m=e("../constraint"),g=m.HashConstraint,y=m.ReferenceConstraint,b=e("./aliasNode"),w=e("./equalityNode"),E=e("./joinNode"),S=e("./notNode"),x=e("./leftAdapterNode"),T=e("./rightAdapterNode"),N=e("./typeNode"),C=e("./terminalNode"),k=e("./propertyNode");l({instance:{constructor:function(e,t){this.terminalNodes=[],this.joinNodes=[],this.nodes=[],this.constraints=[],this.typeNodes=[],this.__ruleCount=0,this.bucket={counter:0,recency:0},this.agendaTree=t},assertRule:function(e){var t=new C(this.bucket,this.__ruleCount++,e,this.agendaTree);this.__addToNetwork(e,e.pattern,t),this.__mergeJoinNodes(),this.terminalNodes.push(t)},resetCounter:function(){this.bucket.counter=0},incrementCounter:function(){this.bucket.counter++},assertFact:function(e){var t=this.typeNodes,n=t.length-1;for(;n>=0;n--)t[n].assert(e)},retractFact:function(e){var t=this.typeNodes,n=t.length-1;for(;n>=0;n--)t[n].retract(e)},containsRule:function(e){return f(this.terminalNodes,function(t){return t.rule.name===e})},dispose:function(){var e=this.typeNodes,t=e.length-1;for(;t>=0;t--)e[t].dispose()},__mergeJoinNodes:function(){var e=this.joinNodes;for(var t=0;t<e.length;t++){var n=e[t],r=e[t+1];n&&r&&n.constraint.equal(r.constraint)&&(n.merge(r),e.splice(t+1,1))}},__checkEqual:function(e){var t=this.constraints,n=t.length-1;for(;n>=0;n--){var r=t[n];if(e.equal(r))return r}return t.push(e),e},__createTypeNode:function(e,t){var n=new N(t.get("constraints")[0]),r=this.typeNodes,i=r.length-1;for(;i>=0;i--){var s=r[i];if(n.equal(s))return s}return r.push(n),n},__createEqualityNode:function(e,t){return this.__checkEqual(new w(t)).addRule(e)},__createPropertyNode:function(e,t){return this.__checkEqual(new k(t)).addRule(e)},__createAliasNode:function(e,t){return this.__checkEqual(new b(t)).addRule(e)},__createAdapterNode:function(e,t){return(t==="left"?new x:new T).addRule(e)},__createJoinNode:function(e,t,n,r){var i;t.rightPattern instanceof p?i=new S:(i=new E,this.joinNodes.push(i));var s=i;if(n instanceof E){var o=this.__createAdapterNode(e,r);s.addOutNode(o,t),s=o}return s.addOutNode(n,t),i.addRule(e)},__addToNetwork:function(e,t,n,r){if(t instanceof h){if(t instanceof p&&(!r||r==="left"))return this.__createBetaNode(e,new d(new v,t),n,r);this.__createAlphaNode(e,t,n,r)}else t instanceof d&&this.__createBetaNode(e,t,n,r)},__createBetaNode:function(e,t,n,r){var i=this.__createJoinNode(e,t,n,r);return this.__addToNetwork(e,t.rightPattern,i,"right"),this.__addToNetwork(e,t.leftPattern,i,"left"),n.addParentNode(i),i},__createAlphaNode:function(e,t,n,r){var i=t.get("constraints"),s=this.__createTypeNode(e,t),o=this.__createAliasNode(e,t);s.addOutNode(o,t),o.addParentNode(s);var u=o,a=i.length-1;for(;a>0;a--){var f=i[a],l;if(f instanceof g)l=this.__createPropertyNode(e,f);else{if(f instanceof y){n.constraint.addConstraint(f);continue}l=this.__createEqualityNode(e,f)}u.addOutNode(l,t),l.addParentNode(u),u=l}if(n instanceof E){var c=this.__createAdapterNode(e,r);c.addParentNode(u),u.addOutNode(c,t),u=c}return n.addParentNode(u),u.addOutNode(n,t),s},print:function(){a(this.terminalNodes,function(e){e.print(" ")})}}}).as(n,"RootNode")}),require.define("/lib/pattern.js",function(e,t,n,r,i,s,o){(function(){"use strict";var t=e("./extended"),r=t.merge,i=t.forEach,s=t.declare,o=e("./constraintMatcher"),u=e("./constraint"),a=s({}),f=a.extend({instance:{constructor:function(e,n,s,a,f){f=f||{},this.type=e,this.alias=n,this.conditions=s,this.pattern=f.pattern,this.constraints=[new u.ObjectConstraint(e)];var l=o.toConstraints(s,r({alias:n},f));if(l.length)this.constraints=this.constraints.concat(l);else{var c=new u.TrueConstraint;this.constraints.push(c)}if(a&&!t.isEmpty(a)){var h=new u.HashConstraint(a);this.constraints.push(h)}i(this.constraints,function(e){e.set("alias",n)})},hasConstraint:function(e){return t.some(this.constraints,function(t){return t instanceof e})},hashCode:function(){return[this.type,this.alias,t.format("%j",this.conditions)].join(":")},toString:function(){return t.format("%j",this.constraints)}}}).as(n,"ObjectPattern");f.extend().as(n,"NotPattern"),a.extend({instance:{constructor:function(e,t){this.leftPattern=e,this.rightPattern=t},hashCode:function(){return[this.leftPattern.hashCode(),this.rightPattern.hashCode()].join(":")},getters:{constraints:function(){return this.leftPattern.constraints.concat(this.rightPattern.constraints)}}}}).as(n,"CompositePattern");var l=s({}).as(n,"InitialFact");f.extend({instance:{constructor:function(){this._super([l,"i",[],{}])},assert:function(){return!0}}}).as(n,"InitialFactPattern")})()}),require.define("/lib/constraintMatcher.js",function(e,t,n,r,i,s,o){"use strict";var u=e("./extended"),a=u.isArray,f=u.forEach,l=u.some,c=u.map,h=u.indexOf,p=u.isNumber,d=u.removeDuplicates,v=e("./constraint"),m={indexOf:u.indexOf,now:function(){return new Date},Date:function(e,t,n,r,i,s,o){var u=new Date;return p(e)&&u.setYear(e),p(t)&&u.setMonth(t),p(n)&&u.setDate(n),p(r)&&u.setHours(r),p(i)&&u.setMinutes(i),p(s)&&u.setSeconds(s),p(o)&&u.setMilliseconds(o),u},lengthOf:function(e,t){return e.length===t},isTrue:function(e){return e===!0},isFalse:function(e){return e===!1},isNotNull:function(e){return e!==null},dateCmp:function(e,t){return u.compare(e,t)}};f(["years","days","months","hours","minutes","seconds"],function(e){m[e+"FromNow"]=u[e+"FromNow"],m[e+"Ago"]=u[e+"Ago"]}),f(["isArray","isNumber","isHash","isObject","isDate","isBoolean","isString","isRegExp","isNull","isEmpty","isUndefined","isDefined","isUndefinedOrNull","isPromiseLike","isFunction","deepEqual"],function(e){var t=u[e];m[e]=function(){return t.apply(u,arguments)}});var g={equal:function(e,t){var n=!1;return e===t?n=!0:e[2]===t[2]&&(h(["string","number","boolean","regexp","identifier","null"],e[2])!==-1?n=e[0]===t[0]:e[2]==="unminus"?n=this.equal(e[0],t[0]):n=this.equal(e[0],t[0])&&this.equal(e[1],t[1])),n},getIdentifiers:function(e){var t=[],n=e[2];if(n==="identifier")return[e[0]];if(n==="function")t.push(e[0]),t=t.concat(this.getIdentifiers(e[1]));else if(n!=="string"&&n!=="number"&&n!=="boolean"&&n!=="regexp"&&n!=="unminus")if(n==="prop"){t=t.concat(this.getIdentifiers(e[0]));if(e[1]){var r=e[1];while(a(r)){if(r[2]==="function"){t=t.concat(this.getIdentifiers(r[1]));break}r=r[1]}}}else e[0]&&(t=t.concat(this.getIdentifiers(e[0]))),e[1]&&(t=t.concat(this.getIdentifiers(e[1])));return d(t)},toConstraints:function(e,t){var n=[],r=t.alias,i=t.scope||{},s=e[2];if(s==="and")n=n.concat(this.toConstraints(e[0],t)).concat(this.toConstraints(e[1],t));else if(s==="composite"||s==="or"||s==="lt"||s==="gt"||s==="lte"||s==="gte"||s==="like"||s==="notLike"||s==="eq"||s==="neq"||s==="in"||s==="notIn"||s==="function")l(this.getIdentifiers(e),function(e){return e!==r&&!(e in m)&&!(e in i)})?n.push(new v.ReferenceConstraint(e,t)):n.push(new v.EqualityConstraint(e,t));return n},parse:function(e){return this[e[2]](e[0],e[1])},composite:function(e){return this.parse(e)},and:function(e,t){return[this.parse(e),"&&",this.parse(t)].join(" ")},or:function(e,t){return[this.parse(e),"||",this.parse(t)].join(" ")},prop:function(e,t){return t[2]==="function"?[this.parse(e),this.parse(t)].join("."):[this.parse(e),"['",this.parse(t),"']"].join("")},unminus:function(e){return-1*this.parse(e)},plus:function(e,t){return[this.parse(e),"+",this.parse(t)].join(" ")},minus:function(e,t){return[this.parse(e),"-",this.parse(t)].join(" ")},mult:function(e,t){return[this.parse(e),"*",this.parse(t)].join(" ")},div:function(e,t){return[this.parse(e),"/",this.parse(t)].join(" ")},mod:function(e,t){return[this.parse(e),"%",this.parse(t)].join(" ")},lt:function(e,t){return[this.parse(e),"<",this.parse(t)].join(" ")},gt:function(e,t){return[this.parse(e),">",this.parse(t)].join(" ")},lte:function(e,t){return[this.parse(e),"<=",this.parse(t)].join(" ")},gte:function(e,t){return[this.parse(e),">=",this.parse(t)].join(" ")},like:function(e,t){return[this.parse(t),".test(",this.parse(e),")"].join("")},notLike:function(e,t){return["!",this.parse(t),".test(",this.parse(e),")"].join("")},eq:function(e,t){return[this.parse(e),"===",this.parse(t)].join(" ")},neq:function(e,t){return[this.parse(e),"!==",this.parse(t)].join(" ")},"in":function(e,t){return["(indexOf(",this.parse(t),",",this.parse(e),")) != -1"].join("")},notIn:function(e,t){return["(indexOf(",this.parse(t),",",this.parse(e),")) == -1"].join("")},arguments:function(e,t){var n=[];return e&&n.push(this.parse(e)),t&&n.push(this.parse(t)),n.join(",")},array:function(e){var t=[];return e?(t=this.parse(e),a(t)?t:["[",t,"]"].join("")):["[",t.join(","),"]"].join("")},"function":function(e,t){var n=this.parse(t);return[e,"(",n,")"].join("")},string:function(e){return"'"+e+"'"},number:function(e){return e},"boolean":function(e){return e},regexp:function(e){return e},identifier:function(e){return e},"null":function(){return"null"}},y=n.toJs=function(e,t){var n=g.parse(e);t=t||{};var r=g.getIdentifiers(e),i="var indexOf = definedFuncs.indexOf;"+c(r,function(e){var n=["var ",e," = "];return m.hasOwnProperty(e)?n.push("definedFuncs['",e,"']"):t.hasOwnProperty(e)?n.push("scope['",e,"']"):n.push("'",e,"' in fact ? fact['",e,"'] : hash['",e,"']"),n.push(";"),n.join("")}).join("")+" return !!("+n+");",s=new Function("fact, hash, definedFuncs, scope",i);return function(e,n){return s(e,n,m,t)}};n.getMatcher=function(e,t){return y(e,t)},n.toConstraints=function(e,t){return g.toConstraints(e,t)},n.equal=function(e,t){return g.equal(e,t)},n.getIdentifiers=function(e){return g.getIdentifiers(e)}}),require.define("/lib/constraint.js",function(e,t,n,r,i,s,o){"use strict";var u=e("./extended"),a=u.hash,f=u.merge,l=a.keys,c=u.forEach,h=u.instanceOf,p=u.filter,d=u.declare,v,m=d({instance:{constructor:function(t,n){v||(v=e("./constraintMatcher")),this.type=t,this.constraint=n},assert:function(){throw new Error("not implemented")},equal:function(e){return h(e,this._static)&&this.get("alias")===e.get("alias")&&u.deepEqual(this.constraint,e.constraint)},getters:{variables:function(){return[this.get("alias")]}}}});m.extend({instance:{constructor:function(e){this._super(["object",e])},assert:function(e){return e instanceof this.constraint||e.constructor===this.constraint},equal:function(e){return h(e,this._static)&&this.constraint===e.constraint}}}).as(n,"ObjectConstraint"),m.extend({instance:{constructor:function(e,t){this._super(["equality",e]),t=t||{},this.pattern=t.pattern,this._matcher=v.getMatcher(e,t.scope||{})},assert:function(e){return this._matcher(e)}}}).as(n,"EqualityConstraint"),m.extend({instance:{constructor:function(){this._super(["equality",[!0]])},equal:function(e){return h(e,this._static)&&this.get("alias")===e.get("alias")},assert:function(){return!0}}}).as(n,"TrueConstraint"),m.extend({instance:{constructor:function(e,t){this.cache={},this._super(["reference",e]),t=t||{},this.values=[],this.pattern=t.pattern,this._options=t,this._matcher=v.getMatcher(e,t.scope||{})},assert:function(e){try{return this._matcher(e)}catch(t){throw new Error("Error with evaluating pattern "+this.pattern+" "+t.message)}},merge:function(e,t){var n=this;return e instanceof this._static&&(n=new this._static([this.constraint,e.constraint,"and"],f({},this._options,this._options)),n._alias=this._alias||e._alias,n.vars=this.vars.concat(e.vars)),n},equal:function(e){return h(e,this._static)&&u.deepEqual(this.constraint,e.constraint)},getters:{variables:function(){return this.vars},alias:function(){return this._alias}},setters:{alias:function(e){this._alias=e,this.vars=p(v.getIdentifiers(this.constraint),function(t){return t!==e})}}}}).as(n,"ReferenceConstraint"),m.extend({instance:{constructor:function(e){this._super(["hash",e])},equal:function(e){return u.instanceOf(e,this._static)&&this.get("alias")===e.get("alias")&&u.deepEqual(this.constraint,e.constraint)},assert:function(){return!0},getters:{variables:function(){return this.constraint}}}}).as(n,"HashConstraint")}),require.define("/lib/nodes/aliasNode.js",function(e,t,n,r,i,s,o){var u=e("./alphaNode");u.extend({instance:{constructor:function(){this._super(arguments),this.alias=this.constraint.get("alias")},toString:function(){return"AliasNode"+this.__count},assert:function(e){return this.__propagate("assert",e.set(this.alias,e.fact.object))},retract:function(e){this.propagateRetract(e.fact)},equal:function(e){return e instanceof this._static&&this.alias===e.alias}}}).as(t)}),require.define("/lib/nodes/alphaNode.js",function(e,t,n,r,i,s,o){"use strict";var u=e("./node");u.extend({instance:{constructor:function(e){this._super([]),this.constraint=e},toString:function(){return"AlphaNode "+this.__count},equal:function(e){return this.constraint.equal(e.constraint)}}}).as(t)}),require.define("/lib/nodes/node.js",function(e,t,n,r,i,s,o){var u=e("../extended"),a=u.forEach,f=u.indexOf,l=u.intersect,c=u.declare,h=u.HashTable,p=e("../context"),d=0;c({instance:{constructor:function(){this.nodes=new h,this.rules=[],this.parentNodes=[],this.__count=d++,this.__entrySet=[]},addRule:function(e){return f(this.rules,e)===-1&&this.rules.push(e),this},merge:function(e){e.nodes.forEach(function(t){var n=t.value,r=t.key;for(var i=0,s=n.length;i<s;i++)this.addOutNode(r,n[i]);e.nodes.remove(r)},this);var t=e.parentNodes;for(var n=0,r=e.parentNodes.l;n<r;n++){var i=t[n];this.addParentNode(i),i.nodes.remove(e)}return this},resolve:function(e,t){return e.hashCode===t.hashCode},print:function(e){console.log(e+this.toString()),a(this.parentNodes,function(t){t.print(" "+e)})},addOutNode:function(e,t){this.nodes.contains(e)||this.nodes.put(e,[]),this.nodes.get(e).push(t),this.__entrySet=this.nodes.entrySet()},addParentNode:function(e){f(this.parentNodes,e)===-1&&this.parentNodes.push(e)},shareable:function(){return!1},__propagate:function(e,t,n){n=n||this.nodes;var r=this.__entrySet,i=r.length-1,s,o,u,a;for(;i>=0;i--)s=r[i],o=s.key,u=s.value,t.paths?(a=l(u,t.paths)).length&&o[e](new p(t.fact,a,t.match)):o[e](t)},dispose:function(e){this.propagateDispose(e)},retract:function(e){this.propagateRetract(e)},propagateDispose:function(e,t){t=t||this.nodes;var n=this.__entrySet,r=n.length-1;for(;r>=0;r--){var i=n[r],s=i.key;s.dispose(e)}},propagateAssert:function(e,t){this.__propagate("assert",e,t||this.nodes)},propagateRetract:function(e,t){this.__propagate("retract",e,t||this.nodes)},assert:function(e){this.propagateAssert(e)},propagateModify:function(e,t){this.__propagate("modify",e,t||this.nodes)}}}).as(t)}),require.define("/lib/context.js",function(e,t,n,r,i,s,o){"use strict";var u=e("./extended"),a=u.declare,f=u.merge,l=u.union,c=u.map,h=a({instance:{constructor:function(e){e=e||{},this.variables=[],this.facts=[],this.factIds=[],this.factHash=e.factHash||{},this.recency=[],this.constraints=[],this.isMatch=!0,this.hashCode="";if(e instanceof this._static)this.isMatch=e.isMatch,this.facts=this.facts.concat(e.facts),this.factIds=this.factIds.concat(e.factIds),this.hashCode=this.factIds.join(":"),this.factHash=f(this.factHash,e.factHash),this.recency=l(this.recency,e.recency);else{var t=e;t&&(this.facts.push(t),this.factIds.push(t.id),this.recency.push(t.recency),this.hashCode+=this.factIds.join(":"))}},merge:function(e){var t=new this._static;return t.isMatch=e.isMatch,t.facts=this.facts.concat(e.facts),t.factIds=this.factIds.concat(e.factIds),t.hashCode=t.factIds.join(":"),t.factHash=f({},this.factHash,e.factHash),t.recency=l(this.recency,e.recency),t}}}),p=a({instance:{match:null,factHash:null,fact:null,hashCode:null,paths:null,constructor:function(e,t,n){this.fact=e,this.paths=t||null;var r=this.match=n||new h(e);this.factHash=r.factHash,this.hashCode=r.hashCode,this.factIds=r.factIds},set:function(e,t){return this.factHash[e]=t,this},isMatch:function(e){return this.match.isMatch=e,this},clone:function(e,t,n){return new p(e||this.fact,t||this.path,n||this.match)}}}).as(t)}),require.define("/lib/nodes/equalityNode.js",function(e,t,n,r,i,s,o){var u=e("./alphaNode");u.extend({instance:{constructor:function(){this._super(arguments)},assert:function(e){this.constraint.assert(e.factHash)&&this.__propagate("assert",e)},toString:function(){return"EqualityNode"+this.__count}}}).as(t)}),require.define("/lib/nodes/joinNode.js",function(e,t,n,r,i,s,o){var u=e("../extended"),a=u.hash.values,f=u.indexOf,l=e("./node"),c=e("../context"),h=e("./joinReferenceNode");l.extend({instance:{constructor:function(){this._super([]),this.constraint=new h,this.leftMemory={},this.rightMemory={},this.leftTuples=[],this.rightTuples=[]},dispose:function(){this.leftMemory={},this.rightMemory={}},disposeLeft:function(e){this.leftMemory={},this.propagateDispose(e)},disposeRight:function(e){this.rightMemory={},this.propagateDispose(e)},hashCode:function(){return"JoinNode "+this.__count},toString:function(){return"JoinNode "+this.__count},retractResolve:function(e){var t=a(this.leftMemory),n=t.length-1,r=this.leftTuples;for(;n>=0;n--){var i=t[n],s=i.length-1,o;for(;s>=0;s--){o=i[s];if(this.resolve(o.match,e))return r.splice(f(r,o),1),i.splice(s,1),this._propagateRetractResolve(e)}}this._propagateRetractResolve(e)},retractLeft:function(e){var t=this.leftMemory[e.id],n=this.leftTuples,r,i;if(t){for(r=0,i=t.length;r<i;r++)n.splice(f(n,t[r]),1);delete this.leftMemory[e.id]}else{var s;for(r=0;r<n.length;r++)s=n[r],f(s.factIds,e.id)!==-1&&n.splice(r,1)}this.propagateRetract(e)},retractRight:function(e){var t=this.rightMemory[e.id],n=this.rightTuples;if(t)n.splice(f(n,t),1),delete this.rightMemory[e.id];else{var r;for(var i=0;i<n.length;i++)r=n[i],f(r.factIds,e.id)!==-1&&n.splice(i,1)}this.propagateRetract(e)},assertLeft:function(e){this.__addToLeftMemory(e);var t=this.rightTuples,n=t.length-1,r=this.constraint,i;r.setLeftContext(e);for(;n>=0;n--)(i=r.setRightContext(t[n]).match()).isMatch&&this.__propagate("assert",e.clone(null,null,i));r.clearContexts()},assertRight:function(e){var t=e.fact;this.rightMemory[t.id]=e,this.rightTuples.push(e);var n=this.leftTuples,r=n.length-1,i=this.constraint,s;i.setRightContext(e);for(;r>=0;r--)(s=i.setLeftContext(n[r]).match()).isMatch&&this.__propagate("assert",e.clone(null,null,s));i.clearContexts()},_propagateRetractResolve:function(e){this.__propagate("retractResolve",e)},__addToLeftMemory:function(e){var t=e.fact,n=this.leftMemory[t.id];return n||(n=[],this.leftMemory[t.id]=n),this.leftTuples.push(e),n.push(e),this}}}).as(t)}),require.define("/lib/nodes/joinReferenceNode.js",function(e,t,n,r,i,s,o){var u=e("./node");u.extend({instance:{constructor:function(){this._super(arguments),this.__fh={},this.__lc=this.__rc=null,this.__variables=[],this.__varLength=0},setLeftContext:function(e){this.__lc=e;var t=e.match,n=t.factHash,r=this.__fh,i,s=this.__variables;for(var o=0,u=this.__varLength;o<u;o++)i=s[o],r[i]=n[i];return this},setRightContext:function(e){return this.__fh[this.__alias]=(this.__rc=e).fact.object,this},clearContexts:function(){return this.__fh={},this.__lc=null,this.__rc=null,this},clearRightContext:function(){return this.__rc=null,this.__fh[this.__alias]=null,this},clearLeftContext:function(){this.__lc=null;var e=this.__fh={},t=this.__rc;return e[this.__alias]=t?t.fact.object:null,this},addConstraint:function(e){this.constraint?this.constraint=this.constraint.merge(e):this.constraint=e,this.__alias=this.constraint.get("alias"),this.__varLength=(this.__variables=this.__variables.concat(this.constraint.get("variables"))).length},equal:function(e){if(this.constraint)return this.constraint.equal(e.constraint)},isMatch:function(){var e=this.constraint;return e?e.assert(this.__fh):!0},match:function(){var e={isMatch:!1},t=this.constraint;if(!t)e=this.__lc.match.merge(this.__rc.match);else{var n=this.__rc,r=this.__fh;t.assert(r)&&(e=this.__lc.match.merge(n.match))}return e}}}).as(t)}),require.define("/lib/nodes/notNode.js",function(e,t,n,r,i,s,o){var u=e("./joinNode"),a=e("../context"),f=e("../extended"),l=f.indexOf;u.extend({instance:{constructor:function(){this._super(arguments),this.leftTupleMemory={}},toString:function(){return"NotNode "+this.__count},retractRight:function(e){var t=this.rightMemory,n=t[e.id],r=this.constraint;delete t[e.id];if(n){var i=l(this.rightTuples,n);this.rightTuples.splice(i,1);var s=n.blocking,o,u=this.rightTuples,f=u.length,c,h;while(o=s.pop()){o.blocker=null,r.setLeftContext(o);for(h=i;h<f;h++){c=u[h];if(r.setRightContext(c).isMatch()){o.blocker=c,c.blocking.push(o),this.__addToLeftTupleMemory(o);break}}o.blocker||(this.__removeFromLeftTupleMemory(o),this.__addToLeftMemory(o).propagateAssert(new a(o.fact,null,o.match)))}r.clearContexts()}},retractLeft:function(e){var t=this.leftMemory[e.id],n,r;if(!t){var i=this.leftTupleMemory[e.id],s;delete this.leftTupleMemory[e.id];if(i)for(n=0,r=i.length;n<r;n++){s=i[n];var o=s.blocker.blocking;o.splice(l(o,s),1)}}else{delete this.leftMemory[e.id];var u=this.leftTuples;for(n=0,r=t.length;n<r;n++)u.splice(l(u,t[n]),1)}this.propagateRetract(e)},assertLeft:function(e){var t=this.rightTuples,n=this.constraint;n.setLeftContext(e);for(var r=0,i=t.length;r<i;r++){var s=t[r];if(n.setRightContext(s).isMatch()){e.blocker=s,s.blocking.push(e),this.__addToLeftTupleMemory(e);return}}n.clearContexts(),this.__addToLeftMemory(e).propagateAssert(new a(e.fact,null,e.match))},assertRight:function(e){e.blocking=[],this.rightTuples.push(e),this.rightMemory[e.fact.id]=e;var t=this.leftTuples,n=t.length-1,r,i=this.constraint;i.setRightContext(e);for(;n>=0;n--)r=t[n],i.setLeftContext(r).isMatch()&&(this._propagateRetractResolve(r.match),this.__removeFromLeftMemory(r),r.blocker=e,e.blocking.push(r),this.__addToLeftTupleMemory(r));i.clearContexts()},__removeFromLeftMemory:function(e){var t=this.leftMemory[e.fact.id],n,r=this.leftTuples;for(var i=0,s=t.length;i<s;i++){n=t[i];if(n===e){t.splice(i,1),r.splice(l(r,n),1);break}}return this},__removeFromLeftTupleMemory:function(e){var t=this.leftTupleMemory[e.fact.id],n;for(var r=0,i=t.length;r<i;r++){n=t[r];if(n===e){t.splice(r,1);break}}return this},__addToLeftTupleMemory:function(e){var t=e.fact,n=this.leftTupleMemory[t.id];return n||(n=[],this.leftTupleMemory[t.id]=n),n.push(e),this}}}).as(t)}),require.define("/lib/nodes/leftAdapterNode.js",function(e,t,n,r,i,s,o){var u=e("./node");u.extend({instance:{propagateAssert:function(e){this.__propagate("assertLeft",e)},propagateRetract:function(e){this.__propagate("retractLeft",e)},propagateResolve:function(e){this.__propagate("retractResolve",e)},modify:function(e){this.__propagate("modifyLeft",e)},retractResolve:function(e){this.__propagate("retractResolve",e)},dispose:function(e){this.propagateDispose(e)},toString:function(){return"LeftAdapterNode "+this.__count}}}).as(t)}),require.define("/lib/nodes/rightAdapterNode.js",function(e,t,n,r,i,s,o){var u=e("./node");u.extend({instance:{retractResolve:function(e){this.__propagate("retractResolve",e)},dispose:function(e){this.propagateDispose(e)},propagateAssert:function(e){this.__propagate("assertRight",e)},propagateRetract:function(e){this.__propagate("retractRight",e)},propagateResolve:function(e){this.__propagate("retractResolve",e)},modify:function(e){this.__propagate("modifyRight",e)},toString:function(){return"RightAdapterNode "+this.__count}}}).as(t)}),require.define("/lib/nodes/typeNode.js",function(e,t,n,r,i,s,o){var u=e("./alphaNode"),a=e("../context");u.extend({instance:{assert:function(e){this.constraint.assert(e.object)&&this.__propagate("assert",e)},retract:function(e){this.constraint.assert(e.object)&&this.propagateRetract(e)},toString:function(){return"TypeNode"+this.__count},dispose:function(){var e=this.__entrySet,t=e.length-1;for(;t>=0;t--){var n=e[t],r=n.key,i=n.value;r.dispose({paths:i})}},__propagate:function(e,t,n){var r=this.__entrySet,i=r.length-1;for(;i>=0;i--){var s=r[i],o=s.key,u=s.value;o[e](new a(t,u))}}}}).as(t)}),require.define("/lib/nodes/terminalNode.js",function(e,t,n,r,i,s,o){var u=e("./node"),a=e("../extended"),f=a.bind,l=a.removeDuplicates;u.extend({instance:{constructor:function(e,t,n,r){this._super([]),this.resolve=f(this,this.resolve),this.rule=n,this.index=t,this.name=this.rule.name,this.agenda=r,this.bucket=e,r.register(this)},__assertModify:function(e){var t=e.match;t.recency.sort(function(e,t){return e-t}).reverse(),t.facts=l(t.facts);if(t.isMatch){var n=this.rule,r=this.bucket;this.agenda.insert(this,{rule:n,index:this.index,name:n.name,recency:r.recency++,match:t,counter:r.counter})}},assert:function(e){this.__assertModify(e)},modify:function(e){this.__assertModify(e)},retract:function(e){this.agenda.removeByFact(this,e)},retractRight:function(e){this.agenda.removeByFact(this,e)},retractLeft:function(e){this.agenda.removeByFact(this,e)},assertLeft:function(e){this.__assertModify(e)},assertRight:function(e){this.__assertModify(e)},retractResolve:function(e){var t=this.resolve;this.agenda.retract(this,function(n){return t(n.match,e)})},toString:function(){return"TerminalNode "+this.rule.name}}}).as(t)}),require.define("/lib/nodes/propertyNode.js",function(e,t,n,r,i,s,o){var u=e("./alphaNode"),a=e("../context"),f=e("../extended");u.extend({instance:{constructor:function(){this._super(arguments),this.alias=this.constraint.get("alias"),this.varLength=(this.variables=f(this.constraint.get("variables")).toArray().value()).length},assert:function(e){var t=new a(e.fact,e.paths),n=this.variables,r=e.fact.object,i;t.set(this.alias,r);for(var s=0,o=this.varLength;s<o;s++)i=n[s],t.set(i[1],r[i[0]]);this.__propagate("assert",t)},toString:function(){return"PropertyNode"+this.__count}}}).as(t)}),require.define("events",function(e,t,n,r,i,s,o){function f(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0;n<e.length;n++)if(t===e[n])return n;return-1}s.EventEmitter||(s.EventEmitter=function(){});var u=n.EventEmitter=s.EventEmitter,a=typeof Array.isArray=="function"?Array.isArray:function(e){return Object.prototype.toString.call(e)==="[object Array]"},l=10;u.prototype.setMaxListeners=function(e){this._events||(this._events={}),this._events.maxListeners=e},u.prototype.emit=function(e){if(e==="error")if(!this._events||!this._events.error||a(this._events.error)&&!this._events.error.length)throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");if(!this._events)return!1;var t=this._events[e];if(!t)return!1;if(typeof t=="function"){switch(arguments.length){case 1:t.call(this);break;case 2:t.call(this,arguments[1]);break;case 3:t.call(this,arguments[1],arguments[2]);break;default:var n=Array.prototype.slice.call(arguments,1);t.apply(this,n)}return!0}if(a(t)){var n=Array.prototype.slice.call(arguments,1),r=t.slice();for(var i=0,s=r.length;i<s;i++)r[i].apply(this,n);return!0}return!1},u.prototype.addListener=function(e,t){if("function"!=typeof t)throw new Error("addListener only takes instances of Function");this._events||(this._events={}),this.emit("newListener",e,t);if(!this._events[e])this._events[e]=t;else if(a(this._events[e])){if(!this._events[e].warned){var n;this._events.maxListeners!==undefined?n=this._events.maxListeners:n=l,n&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),console.trace())}this._events[e].push(t)}else this._events[e]=[this._events[e],t];return this},u.prototype.on=u.prototype.addListener,u.prototype.once=function(e,t){var n=this;return n.on(e,function r(){n.removeListener(e,r),t.apply(this,arguments)}),this},u.prototype.removeListener=function(e,t){if("function"!=typeof t)throw new Error("removeListener only takes instances of Function");if(!this._events||!this._events[e])return this;var n=this._events[e];if(a(n)){var r=f(n,t);if(r<0)return this;n.splice(r,1),n.length==0&&delete this._events[e]}else this._events[e]===t&&delete this._events[e];return this},u.prototype.removeAllListeners=function(e){return e&&this._events&&this._events[e]&&(this._events[e]=null),this},u.prototype.listeners=function(e){return this._events||(this._events={}),this._events[e]||(this._events[e]=[]),a(this._events[e])||(this._events[e]=[this._events[e]]),this._events[e]}}),require.define("/lib/rule.js",function(e,t,n,r,i,s,o){"use strict";function S(e,t,n,r){u.isArray(t)?(r=n,n=t):t=t||{};var i=u.every(n,function(e){return a(e)});i&&n.length===1&&(n=n[0],i=!1);var s=[],o=t.scope||{};n.scope=o;if(i){var f=function(e,t){c[t]?u(c).forEach(function(t){t.push(e)}):(c[t]=t===0?[]:c[t-1].slice(),t!==0&&c[t].pop(),c[t].push(e))},l=n.length,c=[],h;for(var p=0;p<l;p++)h=n[p],h.scope=o,u.forEach(w(h),f);s=u.map(c,function(n){var i=null;for(var s=0;s<n.length;s++)i===null?i=new g(n[s++],n[s]):i=new g(i,n[s]);return new E(e,t,i,r)})}else s=u.map(w(n),function(n){return new E(e,t,n,r)});return s}var u=e("./extended"),a=u.isArray,f=u.isString,l=u.Promise,c=u.when,h=u.declare,p=e("./parser"),d=e("./pattern"),v=d.ObjectPattern,m=d.NotPattern,g=d.CompositePattern,y=u.switcher().isEq("string",function(){return String}).isEq("date",function(){return Date}).isEq("array",function(){return Array}).isEq("boolean",function(){return Boolean}).isEq("regexp",function(){return RegExp}).isEq("number",function(){return Number}).isEq("object",function(){return Object}).isEq("hash",function(){return Object}).def(function(e){throw new TypeError("invalid param type "+e)}).switcher(),b=u.switcher().isString(function(e){return y(e.toLowerCase())}).isFunction(function(e){return e}).deepEqual([],function(){return Array}).def(function(e){throw new Error("invalid param type "+e)}).switcher(),w=u.switcher().containsAt("or",0,function(e){return e.shift(),u(e).map(function(t){return t.scope=e.scope,w(t)}).flatten().value()}).contains("not",0,function(e){return e.shift(),[new m(b(e[0]),e[1]||"m",p.parseConstraint(e[2]||"true"),e[3]||{},{scope:e.scope,pattern:e[2]})]}).def(function(e){return[new v(b(e[0]),e[1]||"m",p.parseConstraint(e[2]||"true"),e[3]||{},{scope:e.scope,pattern:e[2]})]}).switcher(),E=h({instance:{constructor:function(e,t,n,r){this.name=e,this.pattern=n,this.cb=r,this.priority=t.priority||t.salience||0},fire:function(e,t){var n=new l,r=this.cb;try{r.length===3?this.cb.call(e,t.factHash,e,n.classic):c(this.cb.call(e,t.factHash,e)).then(n.callback,n.errback)}catch(i){n.errback(i)}return n}}});n.createRule=S}),require.define("/lib/parser/index.js",function(e,t,n,r,i,s,o){(function(){"use strict";var t=e("./constraint/parser"),r=e("./nools/nool.parser");n.parseConstraint=function(e){try{return t.parse(e)}catch(n){throw new Error("Invalid expression '"+e+"'")}},n.parseRuleSet=function(e){return r.parse(e)}})()}),require.define("/lib/parser/constraint/parser.js",function(e,t,n,r,i,s,o){var u=function(){function n(){this.yy={}}var e={trace:function(){},yy:{},symbols_:{error:2,expressions:3,EXPRESSION:4,EOF:5,UNARY_EXPRESSION:6,LITERAL_EXPRESSION:7,"-":8,MULTIPLICATIVE_EXPRESSION:9,"*":10,"/":11,"%":12,ADDITIVE_EXPRESSION:13,"+":14,EXPONENT_EXPRESSION:15,"^":16,RELATIONAL_EXPRESSION:17,"<":18,">":19,"<=":20,">=":21,EQUALITY_EXPRESSION:22,"==":23,"!=":24,"=~":25,"!=~":26,IN_EXPRESSION:27,"in":28,ARRAY_EXPRESSION:29,notIn:30,OBJECT_EXPRESSION:31,AND_EXPRESSION:32,"&&":33,OR_EXPRESSION:34,"||":35,ARGUMENT_LIST:36,",":37,FUNCTION:38,IDENTIFIER:39,"(":40,")":41,IDENTIFIER_EXPRESSION:42,".":43,STRING_EXPRESSION:44,STRING:45,NUMBER_EXPRESSION:46,NUMBER:47,REGEXP_EXPRESSION:48,REGEXP:49,BOOLEAN_EXPRESSION:50,BOOLEAN:51,NULL_EXPRESSION:52,NULL:53,"[":54,"]":55,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",8:"-",10:"*",11:"/",12:"%",14:"+",16:"^",18:"<",19:">",20:"<=",21:">=",23:"==",24:"!=",25:"=~",26:"!=~",28:"in",30:"notIn",33:"&&",35:"||",37:",",39:"IDENTIFIER",40:"(",41:")",43:".",45:"STRING",47:"NUMBER",49:"REGEXP",51:"BOOLEAN",53:"NULL",54:"[",55:"]"},productions_:[0,[3,2],[6,1],[6,2],[9,1],[9,3],[9,3],[9,3],[13,1],[13,3],[13,3],[15,1],[15,3],[17,1],[17,3],[17,3],[17,3],[17,3],[22,1],[22,3],[22,3],[22,3],[22,3],[27,1],[27,3],[27,3],[27,3],[27,3],[32,1],[32,3],[34,1],[34,3],[36,1],[36,3],[38,3],[38,4],[31,1],[31,3],[31,3],[42,1],[44,1],[46,1],[48,1],[50,1],[52,1],[29,2],[29,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]],performAction:function(t,n,r,i,s,o,u){var a=o.length-1;switch(s){case 1:return o[a-1];case 3:this.$=[o[a],null,"unminus"];break;case 5:this.$=[o[a-2],o[a],"mult"];break;case 6:this.$=[o[a-2],o[a],"div"];break;case 7:this.$=[o[a-2],o[a],"mod"];break;case 9:this.$=[o[a-2],o[a],"plus"];break;case 10:this.$=[o[a-2],o[a],"minus"];break;case 12:this.$=[o[a-2],o[a],"pow"];break;case 14:this.$=[o[a-2],o[a],"lt"];break;case 15:this.$=[o[a-2],o[a],"gt"];break;case 16:this.$=[o[a-2],o[a],"lte"];break;case 17:this.$=[o[a-2],o[a],"gte"];break;case 19:this.$=[o[a-2],o[a],"eq"];break;case 20:this.$=[o[a-2],o[a],"neq"];break;case 21:this.$=[o[a-2],o[a],"like"];break;case 22:this.$=[o[a-2],o[a],"notLike"];break;case 24:this.$=[o[a-2],o[a],"in"];break;case 25:this.$=[o[a-2],o[a],"notIn"];break;case 26:this.$=[o[a-2],o[a],"in"];break;case 27:this.$=[o[a-2],o[a],"notIn"];break;case 29:this.$=[o[a-2],o[a],"and"];break;case 31:this.$=[o[a-2],o[a],"or"];break;case 33:this.$=[o[a-2],o[a],"arguments"];break;case 34:this.$=[o[a-2],[null,null,"arguments"],"function"];break;case 35:this.$=[o[a-3],o[a-1],"function"];break;case 37:this.$=[o[a-2],o[a],"prop"];break;case 38:this.$=[o[a-2],o[a],"prop"];break;case 39:this.$=[String(t),null,"identifier"];break;case 40:this.$=[String(t.replace(/^'|'$/g,"")),null,"string"];break;case 41:this.$=[Number(t),null,"number"];break;case 42:this.$=[RegExp(t.replace(/^\/|\/$/g,"")),null,"regexp"];break;case 43:this.$=[t=="true",null,"boolean"];break;case 44:this.$=[null,null,"null"];break;case 45:this.$=[null,null,"array"];break;case 46:this.$=[o[a-1],null,"array"];break;case 55:this.$=[o[a-1],null,"composite"]}},table:[{3:1,4:2,6:29,7:7,8:[1,30],9:28,13:27,15:18,17:8,22:6,27:5,29:15,31:16,32:4,34:3,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{1:[3]},{5:[1,31]},{5:[2,56],35:[1,32],41:[2,56]},{5:[2,30],33:[1,33],35:[2,30],41:[2,30]},{5:[2,28],33:[2,28],35:[2,28],41:[2,28]},{5:[2,23],23:[1,34],24:[1,35],25:[1,36],26:[1,37],33:[2,23],35:[2,23],41:[2,23]},{5:[2,2],8:[2,2],10:[2,2],11:[2,2],12:[2,2],14:[2,2],16:[2,2],18:[2,2],19:[2,2],20:[2,2],21:[2,2],23:[2,2],24:[2,2],25:[2,2],26:[2,2],28:[1,38],30:[1,39],33:[2,2],35:[2,2],41:[2,2]},{5:[2,18],18:[1,40],19:[1,41],20:[1,42],21:[1,43],23:[2,18],24:[2,18],25:[2,18],26:[2,18],33:[2,18],35:[2,18],41:[2,18]},{5:[2,47],8:[2,47],10:[2,47],11:[2,47],12:[2,47],14:[2,47],16:[2,47],18:[2,47],19:[2,47],20:[2,47],21:[2,47],23:[2,47],24:[2,47],25:[2,47],26:[2,47],28:[2,47],30:[2,47],33:[2,47],35:[2,47],37:[2,47],41:[2,47],55:[2,47]},{5:[2,48],8:[2,48],10:[2,48],11:[2,48],12:[2,48],14:[2,48],16:[2,48],18:[2,48],19:[2,48],20:[2,48],21:[2,48],23:[2,48],24:[2,48],25:[2,48],26:[2,48],28:[2,48],30:[2,48],33:[2,48],35:[2,48],37:[2,48],41:[2,48],55:[2,48]},{5:[2,49],8:[2,49],10:[2,49],11:[2,49],12:[2,49],14:[2,49],16:[2,49],18:[2,49],19:[2,49],20:[2,49],21:[2,49],23:[2,49],24:[2,49],25:[2,49],26:[2,49],28:[2,49],30:[2,49],33:[2,49],35:[2,49],37:[2,49],41:[2,49],55:[2,49]},{5:[2,50],8:[2,50],10:[2,50],11:[2,50],12:[2,50],14:[2,50],16:[2,50],18:[2,50],19:[2,50],20:[2,50],21:[2,50],23:[2,50],24:[2,50],25:[2,50],26:[2,50],28:[2,50],30:[2,50],33:[2,50],35:[2,50],37:[2,50],41:[2,50],55:[2,50]},{5:[2,51],8:[2,51],10:[2,51],11:[2,51],12:[2,51],14:[2,51],16:[2,51],18:[2,51],19:[2,51],20:[2,51],21:[2,51],23:[2,51],24:[2,51],25:[2,51],26:[2,51],28:[2,51],30:[2,51],33:[2,51],35:[2,51],37:[2,51],41:[2,51],55:[2,51]},{5:[2,52],8:[2,52],10:[2,52],11:[2,52],12:[2,52],14:[2,52],16:[2,52],18:[2,52],19:[2,52],20:[2,52],21:[2,52],23:[2,52],24:[2,52],25:[2,52],26:[2,52],28:[2,52],30:[2,52],33:[2,52],35:[2,52],37:[2,52],41:[2,52],55:[2,52]},{5:[2,53],8:[2,53],10:[2,53],11:[2,53],12:[2,53],14:[2,53],16:[2,53],18:[2,53],19:[2,53],20:[2,53],21:[2,53],23:[2,53],24:[2,53],25:[2,53],26:[2,53],28:[2,53],30:[2,53],33:[2,53],35:[2,53],37:[2,53],41:[2,53],55:[2,53]},{5:[2,54],8:[2,54],10:[2,54],11:[2,54],12:[2,54],14:[2,54],16:[2,54],18:[2,54],19:[2,54],20:[2,54],21:[2,54],23:[2,54],24:[2,54],25:[2,54],26:[2,54],28:[2,54],30:[2,54],33:[2,54],35:[2,54],37:[2,54],41:[2,54],43:[1,44],55:[2,54]},{4:45,6:29,7:7,8:[1,30],9:28,13:27,15:18,17:8,22:6,27:5,29:15,31:16,32:4,34:3,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{5:[2,13],16:[1,46],18:[2,13],19:[2,13],20:[2,13],21:[2,13],23:[2,13],24:[2,13],25:[2,13],26:[2,13],33:[2,13],35:[2,13],41:[2,13]},{5:[2,40],8:[2,40],10:[2,40],11:[2,40],12:[2,40],14:[2,40],16:[2,40],18:[2,40],19:[2,40],20:[2,40],21:[2,40],23:[2,40],24:[2,40],25:[2,40],26:[2,40],28:[2,40],30:[2,40],33:[2,40],35:[2,40],37:[2,40],41:[2,40],55:[2,40]},{5:[2,41],8:[2,41],10:[2,41],11:[2,41],12:[2,41],14:[2,41],16:[2,41],18:[2,41],19:[2,41],20:[2,41],21:[2,41],23:[2,41],24:[2,41],25:[2,41],26:[2,41],28:[2,41],30:[2,41],33:[2,41],35:[2,41],37:[2,41],41:[2,41],55:[2,41]},{5:[2,42],8:[2,42],10:[2,42],11:[2,42],12:[2,42],14:[2,42],16:[2,42],18:[2,42],19:[2,42],20:[2,42],21:[2,42],23:[2,42],24:[2,42],25:[2,42],26:[2,42],28:[2,42],30:[2,42],33:[2,42],35:[2,42],37:[2,42],41:[2,42],55:[2,42]},{5:[2,43],8:[2,43],10:[2,43],11:[2,43],12:[2,43],14:[2,43],16:[2,43],18:[2,43],19:[2,43],20:[2,43],21:[2,43],23:[2,43],24:[2,43],25:[2,43],26:[2,43],28:[2,43],30:[2,43],33:[2,43],35:[2,43],37:[2,43],41:[2,43],55:[2,43]},{5:[2,44],8:[2,44],10:[2,44],11:[2,44],12:[2,44],14:[2,44],16:[2,44],18:[2,44],19:[2,44],20:[2,44],21:[2,44],23:[2,44],24:[2,44],25:[2,44],26:[2,44],28:[2,44],30:[2,44],33:[2,44],35:[2,44],37:[2,44],41:[2,44],55:[2,44]},{5:[2,39],8:[2,39],10:[2,39],11:[2,39],12:[2,39],14:[2,39],16:[2,39],18:[2,39],19:[2,39],20:[2,39],21:[2,39],23:[2,39],24:[2,39],25:[2,39],26:[2,39],28:[2,39],30:[2,39],33:[2,39],35:[2,39],37:[2,39],40:[1,47],41:[2,39],43:[2,39],55:[2,39]},{7:50,29:15,31:16,36:49,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25],55:[1,48]},{5:[2,36],8:[2,36],10:[2,36],11:[2,36],12:[2,36],14:[2,36],16:[2,36],18:[2,36],19:[2,36],20:[2,36],21:[2,36],23:[2,36],24:[2,36],25:[2,36],26:[2,36],28:[2,36],30:[2,36],33:[2,36],35:[2,36],37:[2,36],41:[2,36],43:[2,36],55:[2,36]},{5:[2,11],8:[1,52],14:[1,51],16:[2,11],18:[2,11],19:[2,11],20:[2,11],21:[2,11],23:[2,11],24:[2,11],25:[2,11],26:[2,11],33:[2,11],35:[2,11],41:[2,11]},{5:[2,8],8:[2,8],10:[1,53],11:[1,54],12:[1,55],14:[2,8],16:[2,8],18:[2,8],19:[2,8],20:[2,8],21:[2,8],23:[2,8],24:[2,8],25:[2,8],26:[2,8],33:[2,8],35:[2,8],41:[2,8]},{5:[2,4],8:[2,4],10:[2,4],11:[2,4],12:[2,4],14:[2,4],16:[2,4],18:[2,4],19:[2,4],20:[2,4],21:[2,4],23:[2,4],24:[2,4],25:[2,4],26:[2,4],33:[2,4],35:[2,4],41:[2,4]},{6:56,7:57,8:[1,30],29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{1:[2,1]},{6:29,7:7,8:[1,30],9:28,13:27,15:18,17:8,22:6,27:5,29:15,31:16,32:58,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{6:29,7:7,8:[1,30],9:28,13:27,15:18,17:8,22:6,27:59,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{6:29,7:57,8:[1,30],9:28,13:27,15:18,17:60,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{6:29,7:57,8:[1,30],9:28,13:27,15:18,17:61,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{6:29,7:57,8:[1,30],9:28,13:27,15:18,17:62,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{6:29,7:57,8:[1,30],9:28,13:27,15:18,17:63,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{29:64,31:65,39:[1,66],42:26,54:[1,25]},{29:67,31:68,39:[1,66],42:26,54:[1,25]},{6:29,7:57,8:[1,30],9:28,13:27,15:69,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{6:29,7:57,8:[1,30],9:28,13:27,15:70,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{6:29,7:57,8:[1,30],9:28,13:27,15:71,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{6:29,7:57,8:[1,30],9:28,13:27,15:72,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{38:74,39:[1,24],42:73},{41:[1,75]},{6:29,7:57,8:[1,30],9:28,13:76,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{7:50,29:15,31:16,36:78,38:14,39:[1,24],40:[1,17],41:[1,77],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{5:[2,45],8:[2,45],10:[2,45],11:[2,45],12:[2,45],14:[2,45],16:[2,45],18:[2,45],19:[2,45],20:[2,45],21:[2,45],23:[2,45],24:[2,45],25:[2,45],26:[2,45],28:[2,45],30:[2,45],33:[2,45],35:[2,45],37:[2,45],41:[2,45],55:[2,45]},{37:[1,80],55:[1,79]},{37:[2,32],41:[2,32],55:[2,32]},{6:29,7:57,8:[1,30],9:81,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{6:29,7:57,8:[1,30],9:82,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{6:83,7:57,8:[1,30],29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{6:84,7:57,8:[1,30],29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{6:85,7:57,8:[1,30],29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{5:[2,3],8:[2,3],10:[2,3],11:[2,3],12:[2,3],14:[2,3],16:[2,3],18:[2,3],19:[2,3],20:[2,3],21:[2,3],23:[2,3],24:[2,3],25:[2,3],26:[2,3],33:[2,3],35:[2,3],41:[2,3]},{5:[2,2],8:[2,2],10:[2,2],11:[2,2],12:[2,2],14:[2,2],16:[2,2],18:[2,2],19:[2,2],20:[2,2],21:[2,2],23:[2,2],24:[2,2],25:[2,2],26:[2,2],33:[2,2],35:[2,2],41:[2,2]},{5:[2,31],33:[1,33],35:[2,31],41:[2,31]},{5:[2,29],33:[2,29],35:[2,29],41:[2,29]},{5:[2,19],18:[1,40],19:[1,41],20:[1,42],21:[1,43],23:[2,19],24:[2,19],25:[2,19],26:[2,19],33:[2,19],35:[2,19],41:[2,19]},{5:[2,20],18:[1,40],19:[1,41],20:[1,42],21:[1,43],23:[2,20],24:[2,20],25:[2,20],26:[2,20],33:[2,20],35:[2,20],41:[2,20]},{5:[2,21],18:[1,40],19:[1,41],20:[1,42],21:[1,43],23:[2,21],24:[2,21],25:[2,21],26:[2,21],33:[2,21],35:[2,21],41:[2,21]},{5:[2,22],18:[1,40],19:[1,41],20:[1,42],21:[1,43],23:[2,22],24:[2,22],25:[2,22],26:[2,22],33:[2,22],35:[2,22],41:[2,22]},{5:[2,24],33:[2,24],35:[2,24],41:[2,24]},{5:[2,26],33:[2,26],35:[2,26],41:[2,26],43:[1,44]},{5:[2,39],33:[2,39],35:[2,39],41:[2,39],43:[2,39]},{5:[2,25],33:[2,25],35:[2,25],41:[2,25]},{5:[2,27],33:[2,27],35:[2,27],41:[2,27],43:[1,44]},{5:[2,14],16:[1,46],18:[2,14],19:[2,14],20:[2,14],21:[2,14],23:[2,14],24:[2,14],25:[2,14],26:[2,14],33:[2,14],35:[2,14],41:[2,14]},{5:[2,15],16:[1,46],18:[2,15],19:[2,15],20:[2,15],21:[2,15],23:[2,15],24:[2,15],25:[2,15],26:[2,15],33:[2,15],35:[2,15],41:[2,15]},{5:[2,16],16:[1,46],18:[2,16],19:[2,16],20:[2,16],21:[2,16],23:[2,16],24:[2,16],25:[2,16],26:[2,16],33:[2,16],35:[2,16],41:[2,16]},{5:[2,17],16:[1,46],18:[2,17],19:[2,17],20:[2,17],21:[2,17],23:[2,17],24:[2,17],25:[2,17],26:[2,17],33:[2,17],35:[2,17],41:[2,17]},{5:[2,37],8:[2,37],10:[2,37],11:[2,37],12:[2,37],14:[2,37],16:[2,37],18:[2,37],19:[2,37],20:[2,37],21:[2,37],23:[2,37],24:[2,37],25:[2,37],26:[2,37],28:[2,37],30:[2,37],33:[2,37],35:[2,37],37:[2,37],41:[2,37],43:[2,37],55:[2,37]},{5:[2,38],8:[2,38],10:[2,38],11:[2,38],12:[2,38],14:[2,38],16:[2,38],18:[2,38],19:[2,38],20:[2,38],21:[2,38],23:[2,38],24:[2,38],25:[2,38],26:[2,38],28:[2,38],30:[2,38],33:[2,38],35:[2,38],37:[2,38],41:[2,38],43:[2,38],55:[2,38]},{5:[2,55],8:[2,55],10:[2,55],11:[2,55],12:[2,55],14:[2,55],16:[2,55],18:[2,55],19:[2,55],20:[2,55],21:[2,55],23:[2,55],24:[2,55],25:[2,55],26:[2,55],28:[2,55],30:[2,55],33:[2,55],35:[2,55],37:[2,55],41:[2,55],55:[2,55]},{5:[2,12],8:[1,52],14:[1,51],16:[2,12],18:[2,12],19:[2,12],20:[2,12],21:[2,12],23:[2,12],24:[2,12],25:[2,12],26:[2,12],33:[2,12],35:[2,12],41:[2,12]},{5:[2,34],8:[2,34],10:[2,34],11:[2,34],12:[2,34],14:[2,34],16:[2,34],18:[2,34],19:[2,34],20:[2,34],21:[2,34],23:[2,34],24:[2,34],25:[2,34],26:[2,34],28:[2,34],30:[2,34],33:[2,34],35:[2,34],37:[2,34],41:[2,34],43:[2,34],55:[2,34]},{37:[1,80],41:[1,86]},{5:[2,46],8:[2,46],10:[2,46],11:[2,46],12:[2,46],14:[2,46],16:[2,46],18:[2,46],19:[2,46],20:[2,46],21:[2,46],23:[2,46],24:[2,46],25:[2,46],26:[2,46],28:[2,46],30:[2,46],33:[2,46],35:[2,46],37:[2,46],41:[2,46],55:[2,46]},{7:87,29:15,31:16,38:14,39:[1,24],40:[1,17],42:26,44:9,45:[1,19],46:10,47:[1,20],48:11,49:[1,21],50:12,51:[1,22],52:13,53:[1,23],54:[1,25]},{5:[2,9],8:[2,9],10:[1,53],11:[1,54],12:[1,55],14:[2,9],16:[2,9],18:[2,9],19:[2,9],20:[2,9],21:[2,9],23:[2,9],24:[2,9],25:[2,9],26:[2,9],33:[2,9],35:[2,9],41:[2,9]},{5:[2,10],8:[2,10],10:[1,53],11:[1,54],12:[1,55],14:[2,10],16:[2,10],18:[2,10],19:[2,10],20:[2,10],21:[2,10],23:[2,10],24:[2,10],25:[2,10],26:[2,10],33:[2,10],35:[2,10],41:[2,10]},{5:[2,5],8:[2,5],10:[2,5],11:[2,5],12:[2,5],14:[2,5],16:[2,5],18:[2,5],19:[2,5],20:[2,5],21:[2,5],23:[2,5],24:[2,5],25:[2,5],26:[2,5],33:[2,5],35:[2,5],41:[2,5]},{5:[2,6],8:[2,6],10:[2,6],11:[2,6],12:[2,6],14:[2,6],16:[2,6],18:[2,6],19:[2,6],20:[2,6],21:[2,6],23:[2,6],24:[2,6],25:[2,6],26:[2,6],33:[2,6],35:[2,6],41:[2,6]},{5:[2,7],8:[2,7],10:[2,7],11:[2,7],12:[2,7],14:[2,7],16:[2,7],18:[2,7],19:[2,7],20:[2,7],21:[2,7],23:[2,7],24:[2,7],25:[2,7],26:[2,7],33:[2,7],35:[2,7],41:[2,7]},{5:[2,35],8:[2,35],10:[2,35],11:[2,35],12:[2,35],14:[2,35],16:[2,35],18:[2,35],19:[2,35],20:[2,35],21:[2,35],23:[2,35],24:[2,35],25:[2,35],26:[2,35],28:[2,35],30:[2,35],33:[2,35],35:[2,35],37:[2,35],41:[2,35],43:[2,35],55:[2,35]},{37:[2,33],41:[2,33],55:[2,33]}],defaultActions:{31:[2,1]},parseError:function(t,n){throw new Error(t)},parse:function(t){function v(e){r.length=r.length-2*e,i.length=i.length-e,s.length=s.length-e}function m(){var e;return e=n.lexer.lex()||1,typeof e!="number"&&(e=n.symbols_[e]||e),e}var n=this,r=[0],i=[null],s=[],o=this.table,u="",a=0,f=0,l=0,c=2,h=1;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,typeof this.lexer.yylloc=="undefined"&&(this.lexer.yylloc={});var p=this.lexer.yylloc;s.push(p);var d=this.lexer.options&&this.lexer.options.ranges;typeof this.yy.parseError=="function"&&(this.parseError=this.yy.parseError);var g,y,b,w,E,S,x={},T,N,C,k;for(;;){b=r[r.length-1];if(this.defaultActions[b])w=this.defaultActions[b];else{if(g===null||typeof g=="undefined")g=m();w=o[b]&&o[b][g]}if(typeof w=="undefined"||!w.length||!w[0]){var L="";if(!l){k=[];for(T in o[b])this.terminals_[T]&&T>2&&k.push("'"+this.terminals_[T]+"'");this.lexer.showPosition?L="Parse error on line "+(a+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[g]||g)+"'":L="Parse error on line "+(a+1)+": Unexpected "+(g==1?"end of input":"'"+(this.terminals_[g]||g)+"'"),this.parseError(L,{text:this.lexer.match,token:this.terminals_[g]||g,line:this.lexer.yylineno,loc:p,expected:k})}}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+g);switch(w[0]){case 1:r.push(g),i.push(this.lexer.yytext),s.push(this.lexer.yylloc),r.push(w[1]),g=null,y?(g=y,y=null):(f=this.lexer.yyleng,u=this.lexer.yytext,a=this.lexer.yylineno,p=this.lexer.yylloc,l>0&&l--);break;case 2:N=this.productions_[w[1]][1],x.$=i[i.length-N],x._$={first_line:s[s.length-(N||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(N||1)].first_column,last_column:s[s.length-1].last_column},d&&(x._$.range=[s[s.length-(N||1)].range[0],s[s.length-1].range[1]]),S=this.performAction.call(x,u,f,a,this.yy,w[1],i,s);if(typeof S!="undefined")return S;N&&(r=r.slice(0,-1*N*2),i=i.slice(0,-1*N),s=s.slice(0,-1*N)),r.push(this.productions_[w[1]][0]),i.push(x.$),s.push(x._$),C=o[r[r.length-2]][r[r.length-1]],r.push(C);break;case 3:return!0}}return!0}};undefined;var t=function(){var e={EOF:1,parseError:function(t,n){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,n)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this},more:function(){return this._more=!0,this},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=(new Array(e.length+1)).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,r,i,s;this._more||(this.yytext="",this.match="");var o=this._currentRules();for(var u=0;u<o.length;u++){n=this._input.match(this.rules[o[u]]);if(n&&(!t||n[0].length>t[0].length)){t=n,r=u;if(!this.options.flex)break}}if(t){s=t[0].match(/(?:\r\n?|\n).*/g),s&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[r],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1);if(e)return e;return}return this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return typeof t!="undefined"?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(t){this.begin(t)},options:{},performAction:function(t,n,r,i){var s=i;switch(r){case 0:return 28;case 1:return 30;case 2:return"from";case 3:break;case 4:return 47;case 5:return 53;case 6:return 23;case 7:return 24;case 8:return 20;case 9:return 18;case 10:return 21;case 11:return 19;case 12:return 25;case 13:return 26;case 14:return 33;case 15:return 35;case 16:return 51;case 17:return 45;case 18:return 39;case 19:return 49;case 20:return 43;case 21:return 10;case 22:return 11;case 23:return 12;case 24:return 37;case 25:return 8;case 26:return 25;case 27:return 26;case 28:return 23;case 29:return 23;case 30:return 24;case 31:return 24;case 32:return 20;case 33:return 21;case 34:return 19;case 35:return 18;case 36:return 33;case 37:return 35;case 38:return 14;case 39:return 16;case 40:return 40;case 41:return 55;case 42:return 54;case 43:return 41;case 44:return 5}},rules:[/^(?:\s+in\b)/,/^(?:\s+notIn\b)/,/^(?:\s+from\b)/,/^(?:\s+)/,/^(?:[0-9]+(?:\.[0-9]+)?\b)/,/^(?:null\b)/,/^(?:(eq|EQ))/,/^(?:(neq|NEQ))/,/^(?:(lte|LTE))/,/^(?:(lt|LT))/,/^(?:(gte|GTE))/,/^(?:(gt|GT))/,/^(?:(like|LIKE))/,/^(?:(notLike|NOT_LIKE))/,/^(?:(and|AND))/,/^(?:(or|OR))/,/^(?:(true|false))/,/^(?:'[^']*')/,/^(?:\$?[a-zA-Z0-9]+)/,/^(?:\/(.*)\/)/,/^(?:\.)/,/^(?:\*)/,/^(?:\/)/,/^(?:\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:==)/,/^(?:===)/,/^(?:!=)/,/^(?:!==)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\|\|)/,/^(?:\+)/,/^(?:\^)/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:\))/,/^(?:$)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!0}}};return e}();return e.lexer=t,n.prototype=e,e.Parser=n,new n}();typeof e!="undefined"&&typeof n!="undefined"&&(n.parser=u,n.Parser=u.Parser,n.parse=function(){return u.parse.apply(u,arguments)},n.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),s.exit(1));var i=e("fs").readFileSync(e("path").normalize(r[1]),"utf8");return n.parser.parse(i)},typeof t!="undefined"&&e.main===t&&n.main(s.argv.slice(1)))}),require.define("/lib/parser/nools/nool.parser.js",function(e,t,n,r,i,s,o){"use strict";var u=e("./tokens.js"),a=e("../../extended"),f=a.hash.keys,l=e("./util.js"),c=function(e,t,n){var r=e;e=e.replace(/\/\/(.*)[\n|\r|\r\n]/g,"").replace(/\n|\r|\r\n/g," ");var i=new RegExp("^("+f(t).join("|")+")"),s;while(e&&(s=l.findNextTokenIndex(e))!==-1){e=e.substr(s);var o=e.match(i);if(o===null)throw new Error("Error parsing "+e);o=o[1];if(!(o in t))throw new Error("Unknown token"+o);try{e=t[o](e,n,c).replace(/^\s*|\s*$/g,"")}catch(u){throw new Error("Invalid "+o+" definition \n"+u.message+"; \nstarting at : "+r)}}};n.parse=function(e){var t={define:[],rules:[],scope:[]};return c(e,u,t),t}}),require.define("/lib/parser/nools/tokens.js",function(require,module,exports,__dirname,__filename,process,global){"use strict";var utils=require("./util.js"),isWhiteSpace=function(e){return e.replace(/[\s|\n|\r|\t]/g,"").length===0},ruleTokens={salience:function(){var e=/^(salience|priority)\s*:\s*(-?\d+)\s*[,;]?/;return function(t,n){if(e.test(t)){var r=t.match(e),i=parseInt(r[2],10);if(!isNaN(i))return n.options.priority=i,t.replace(r[0],"");throw new Error("Invalid salience/priority "+r[2])}throw new Error("invalid format")}}(),priority:function(){return this.salience.apply(this,arguments)},when:function(){var ruleRegExp=/^(\$?\w+) *: *(\w+)(.*)/,joinFunc=function(e,t){return"; "+t},constraintRegExp=/(\{(?:["']?\$?\w+["']?\s*:\s*["']?\$?\w+["']? *(?:, *["']?\$?\w+["']?\s*:\s*["']?\$?\w+["']?)*)+\})/,predicateExp=/^(\w+) *\((.*)\)$/m,parseRules=function(str){var rules=[],ruleLines=str.split(";"),l=ruleLines.length,ruleLine;for(var i=0;i<l&&(ruleLine=ruleLines[i].replace(/^\s*|\s*$/g,"").replace(/\n/g,""));i++)if(!isWhiteSpace(ruleLine)){var rule=[];if(predicateExp.test(ruleLine)){var m=ruleLine.match(predicateExp),pred=m[1].replace(/^\s*|\s*$/g,"");rule.push(pred),ruleLine=m[2].replace(/^\s*|\s*$/g,"");if(pred==="or"){rule=rule.concat(parseRules(ruleLine.replace(/,\s*(\$?\w+\s*:)/,joinFunc))),rules.push(rule);continue}}var parts=ruleLine.match(ruleRegExp);if(!parts||!parts.length)throw new Error("Invalid constraint "+ruleLine);rule.push(parts[2],parts[1]);var constraints=parts[3].replace(/^\s*|\s*$/g,""),hashParts=constraints.match(constraintRegExp);if(hashParts){var hash=hashParts[1],constraint=constraints.replace(hash,"");constraint&&rule.push(constraint.replace(/^\s*|\s*$/g,"")),hash&&rule.push(eval("("+hash.replace(/(\$?\w+)\s*:\s*(\$?\w+)/g,'"$1" : "$2"')+")"))}else constraints&&!isWhiteSpace(constraints)&&rule.push(constraints);rules.push(rule)}return rules};return function(e,t){var n=e.replace(/^when\s*/,"").replace(/^\s*|\s*$/g,"");if(utils.findNextToken(n)==="{"){var r=utils.getTokensBetween(n,"{","}",!0).join("");return n=n.replace(r,""),t.constraints=parseRules(r.replace(/^\{\s*|\}\s*$/g,"")),n}throw new Error("unexpected token : expected : '{' found : '"+utils.findNextToken(n)+"'")}}(),then:function(){return function(e,t){if(!t.action){var n=e.replace(/^then\s*/,"").replace(/^\s*|\s*$/g,"");if(utils.findNextToken(n)==="{"){var r=utils.getTokensBetween(n,"{","}",!0).join("");n=n.replace(r,""),t.action||(t.action=r.replace(/^\{\s*|\}\s*$/g,""));if(!isWhiteSpace(n))throw new Error("Error parsing then block "+e);return n}throw new Error("unexpected token : expected : '{' found : '"+utils.findNextToken(n)+"'")}throw new Error("action already defined for rule"+t.name)}}()};module.exports={define:function(e,t){var n=e.replace(/^define\s*/,""),r=n.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/);if(r){n=n.replace(r[0],"").replace(/^\s*|\s*$/g,"");if(utils.findNextToken(n)==="{"){r=r[1];var i=utils.getTokensBetween(n,"{","}",!0).join("");return n=n.replace(i,""),t.define.push({name:r,properties:"("+i+")"}),n}throw new Error("unexpected token : expected : '{' found : '"+utils.findNextToken(n)+"'")}throw new Error("missing name")},"function":function(e,t){var n=e.replace(/^function\s*/,""),r=n.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\s*/);if(r){n=n.replace(r[0],"");if(utils.findNextToken(n)==="("){r=r[1];var i=utils.getParamList(n);n=n.replace(i,"").replace(/^\s*|\s*$/g,"");if(utils.findNextToken(n)==="{"){var s=utils.getTokensBetween(n,"{","}",!0).join("");return n=n.replace(s,""),t.scope.push({name:r,body:"function"+i+s}),n}throw new Error("unexpected token : expected : '{' found : '"+utils.findNextToken(n)+"'")}throw new Error("unexpected token : expected : '(' found : '"+utils.findNextToken(n)+"'")}throw new Error("missing name")},rule:function(e,t,n){var r=e.replace(/^rule\s*/,""),i=r.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|"[^"]*"|'[^']*')/);if(i){r=r.replace(i[0],"").replace(/^\s*|\s*$/g,"");if(utils.findNextToken(r)==="{"){i=i[1].replace(/^["']|["']$/g,"");var s={name:i,options:{},constraints:null,action:null},o=utils.getTokensBetween(r,"{","}",!0).join("");return r=r.replace(o,""),n(o.replace(/^\{\s*|\}\s*$/g,""),ruleTokens,s),t.rules.push(s),r}throw new Error("unexpected token : expected : '{' found : '"+utils.findNextToken(r)+"'")}throw new Error("missing name")}}}),require.define("/lib/parser/nools/util.js",function(e,t,n,r,i,s,o){(function(){"use strict";var e=/[\s|\n|\r|\t]/,t={"{":"}","}":"{","(":")",")":"(","[":"]"},r=n.getTokensBetween=function(e,n,r,i){var s=0,o=[];n||(n=t[r],s=1),r||(r=t[n]),e=Object(e);var u=!1,a,f=0,l=!1;while(a=e.charAt(f++))if(a===n)s++,u?o.push(a):(u=!0,i&&o.push(a));else if(a===r&&f){s--;if(s===0){i&&o.push(a),l=!0;break}o.push(a)}else u&&o.push(a);if(!l)throw new Error("Unable to match "+n+" in "+e);return o};n.getParamList=function(e){return r(e,"(",")",!0).join("")};var i=n.findNextTokenIndex=function(t,n,r){n=n||0,r=r||t.length;var i=-1,s=t.length;if(!r||r>s)r=s;for(;n<r;n++){var o=t.charAt(n);if(!e.test(o)){i=n;break}}return i};n.findNextToken=function(e,t,n){return e.charAt(i(e,t,n))}})()}),require.define("/lib/workingMemory.js",function(e,t,n,r,i,s,o){"use strict";var u=e("declare.js"),a=0;u({instance:{constructor:function(e){this.object=e,this.recency=0,this.id=a++},equals:function(e){return e instanceof this._static?e!==null&&e.object===this.object:e!==null&&e===this.object},hashCode:function(){return this.id}}}).as(n,"Fact"),u({instance:{constructor:function(){this.recency=0,this.facts=[]},dispose:function(){this.facts.length=0},assertFact:function(e){if(e.object===null)throw new Error("The fact asserted cannot be null!");return e.recency=this.recency++,this.facts.push(e),e},modifyFact:function(e){var t=this.facts,n=t.length;for(var r=0;r<n;r++){var i=t[r];if(i.equals(e))return i}throw new Error("the fact to modify does not exist")},retractFact:function(e){var t=this.facts,n=t.length;for(var r=0;r<n;r++){var i=t[r];if(i.equals(e))return this.facts.splice(r,1),i}throw new Error("the fact to remove does not exist")}}}).as(n,"WorkingMemory")}),require.define("/lib/compile.js",function(require,module,exports,__dirname,__filename,process,global){(function(){"use strict";var extd=require("./extended"),parser=require("./parser"),constraintMatcher=require("./constraintMatcher.js"),indexOf=extd.indexOf,forEach=extd.forEach,map=extd.map,removeDuplicates=extd.removeDuplicates,obj=extd.hash,keys=obj.keys,merge=extd.merge,isString=extd.isString,bind=extd.bind,rules=require("./rule"),modifiers=["assert","modify","retract","emit","halt"],parseAction=function(e,t,n,r){var i=[];forEach(t,function(t){e.indexOf(t)!==-1&&i.push("var "+t+"= facts."+t+";")}),forEach(modifiers,function(t){e.indexOf(t)!==-1&&i.push("var "+t+"= bind(flow, flow."+t+");")}),extd(n).keys().forEach(function(t){e.indexOf(t)!==-1&&i.push("var "+t+"= defined."+t+";")}),extd(r).keys().forEach(function(t){e.indexOf(t)!==-1&&i.push("var "+t+"= scope."+t+";")});var s=["facts","flow"];/next\(.*\)/.test(e)&&s.push("next"),e="with(this){"+i.join("")+e+"}";try{return bind({defined:n,scope:r,bind:bind},new Function(s.join(","),e))}catch(o){throw new Error("Invalid action : "+e+"\n"+o.message)}},createRuleFromObject=function(){var e=function(e,t,n,r,i){var s=[],o=e[0],u=e[1],a=e[2],f=e[3];extd.isHash(a)&&(f=a,a=null);if(!o||!(o=r[o]))throw new Error("Invalid class "+e[0]+" for rule "+i);s.push(o),s.push(u,a,f),n.push(s),t.push(u),a&&forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(a)),function(e){t.push(e)});if(extd.isObject(f))for(var l in f){var c=f[l];indexOf(t,c)===-1&&t.push(c)}};return function(t,n,r){var i=t.name;if(extd.isEmpty(t))throw new Error("Rule is empty");var s=t.options||{};s.scope=r;var o=t.constraints||[],u=o.length;u||(o=["true"]);var a=t.action;if(extd.isUndefined(a))throw new Error("No action was defined for rule "+i);var f=[],l=[];for(var c=0;c<u;c++){var h=o[c];if(h.length){var p=h[0];if(p==="not"){var d=[];h.shift(),e(h,l,d,n,i);var v=d[0];v.unshift(p),f.push(v);continue}if(p==="or"){var m=[p];h.shift(),forEach(h,function(t){e(t,l,m,n,i)}),f.push(m);continue}e(h,l,f,n,i),l=removeDuplicates(l)}}return rules.createRule(i,s,f,parseAction(a,l,n,r))}}(),createFunction=function(body,defined,scope,scopeNames,definedNames){var declares=[];forEach(definedNames,function(e){body.indexOf(e)!==-1&&declares.push("var "+e+"= defined."+e+";")}),forEach(scopeNames,function(e){body.indexOf(e)!==-1&&declares.push("var "+e+"= scope."+e+";")}),body=["((function(){",declares.join(""),"\n return ",body,"\n})())"].join("");try{return eval(body)}catch(e){throw new Error("Invalid action : "+body+"\n"+e.message)}},createDefined=function(){var e=function(e){e=isString(e)?(new Function("return "+e+";"))():e;var t=e.hasOwnProperty("constructor")&&"function"==typeof e.constructor?e.constructor:function(t){t=t||{};for(var n in t)n in e&&(this[n]=t[n])},n=t.prototype;for(var r in e)n[r]=e[r];return t};return function(t,n){return n.addDefined(t.name,e(t.properties))}}();exports.parse=function(e){return parser.parseRuleSet(e)},exports.compile=function(e,t,n,r){extd.isFunction(t)?(n=t,t={}):(t=t||{},n=null);var i=e.name||t.name;if(!i)throw new Error("Name must be present in JSON or options");var s=new r(i),o=merge({Array:Array,String:String,Number:Number,Boolean:Boolean,RegExp:RegExp,Date:Date,Object:Object},t.define||{});typeof Buffer!="undefined"&&(o.Buffer=Buffer);var u=merge({console:console},t.scope);forEach(e.define,function(e){o[e.name]=createDefined(e,s)});var a=extd(e.scope).pluck("name").union(extd(u).keys()).value(),f=map(keys(o),function(e){return e});forEach(e.scope,function(e){u[e.name]=createFunction(e.body,o,u,a,f)});var l=e.rules;return l.length&&forEach(l,function(e){s.__rules=s.__rules.concat(createRuleFromObject(e,o,u))}),n&&n.call(s,s),s}})()}),require.define("/browser/nools.js",function(e,t,n,r,i,s,o){(function(){"use strict";var t=e("../");"function"==typeof this.define&&this.define.amd?define([],function(){return t}):this.nools=t}).call(window)}),require("/browser/nools.js")})();