>16&255,a[c++]=i>>8&255,a[c++]=255&i;return 2===s?(i=o[e.charCodeAt(t)]<<2|o[e.charCodeAt(t+1)]>>4,a[c++]=255&i):1===s&&(i=o[e.charCodeAt(t)]<<10|o[e.charCodeAt(t+1)]<<4|o[e.charCodeAt(t+2)]>>2,a[c++]=i>>8&255,a[c++]=255&i),a},r.fromByteArray=function(e){for(var t,r=e.length,n=r%3,i="",o=[],u=0,l=r-n;ul?l:u+16383));return 1===n?(t=e[r-1],i+=a[t>>2],i+=a[t<<4&63],i+="=="):2===n&&(t=(e[r-2]<<8)+e[r-1],i+=a[t>>10],i+=a[t>>4&63],i+=a[t<<2&63],i+="="),o.push(i),o.join("")};for(var a=[],o=[],u="undefined"!=typeof Uint8Array?Uint8Array:Array,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,p=l.length;c=t}function p(e,t){var r=[],i=f("{","}",e);if(!i||/\$$/.test(i.pre))return[e];var s=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),d=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),m=s||d,g=i.body.indexOf(",")>=0;if(!m&&!g)return i.post.match(/,.*\}/)?(e=i.pre+"{"+i.body+y+i.post,p(e)):[e];var b;if(m)b=i.body.split(/\.\./);else if(1===(b=a(i.body)).length&&1===(b=p(b[0],!1).map(o)).length)return(E=i.post.length?p(i.post,!1):[""]).map(function(e){return i.pre+b[0]+e});var v,x=i.pre,E=i.post.length?p(i.post,!1):[""];if(m){var A=n(b[0]),D=n(b[1]),C=Math.max(b[0].length,b[1].length),S=3==b.length?Math.abs(n(b[2])):1,_=l;D0){var P=new Array(T+1).join("0");F=k<0?"-"+P+F.slice(1):P+F}}v.push(F)}}else v=h(b,function(e){return p(e,!1)});for(var B=0;BY)throw new RangeError("Invalid typed array length");var t=new Uint8Array(e);return t.__proto__=i.prototype,t}function i(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return u(e)}return s(e,t,r)}function s(e,t,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return X(e)?p(e,t,r):"string"==typeof e?l(e,t):h(e)}function a(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function o(e,t,r){return a(e),e<=0?n(e):void 0!==t?"string"==typeof r?n(e).fill(t,r):n(e).fill(t):n(e)}function u(e){return a(e),n(e<0?0:0|f(e))}function l(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!i.isEncoding(t))throw new TypeError('"encoding" must be a valid string encoding');var r=0|d(e,t),s=n(r),a=s.write(e,t);return a!==r&&(s=s.slice(0,a)),s}function c(e){for(var t=e.length<0?0:0|f(e.length),r=n(t),i=0;i=Y)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Y.toString(16)+" bytes");return 0|e}function d(e,t){if(i.isBuffer(e))return e.length;if(W(e)||X(e))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return R(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return q(e).length;default:if(n)return R(e).length;t=(""+t).toLowerCase(),n=!0}}function m(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,t>>>=0,r<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return T(this,t,r);case"utf8":case"utf-8":return _(this,t,r);case"ascii":return k(this,t,r);case"latin1":case"binary":return F(this,t,r);case"base64":return S(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function y(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function g(e,t,r,n,s){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,J(r)&&(r=s?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(s)return-1;r=e.length-1}else if(r<0){if(!s)return-1;r=0}if("string"==typeof t&&(t=i.from(t,n)),i.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,s);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?s?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,s);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){function s(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}var a=1,o=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,o/=2,u/=2,r/=2}var l;if(i){var c=-1;for(l=r;lo&&(r=o-u),l=r;l>=0;l--){for(var p=!0,h=0;hi&&(n=i):n=i;var s=t.length;if(s%2!=0)throw new TypeError("Invalid hex string");n>s/2&&(n=s/2);for(var a=0;a239?4:s>223?3:s>191?2:1;if(i+o<=r){var u,l,c,p;switch(o){case 1:s<128&&(a=s);break;case 2:128==(192&(u=e[i+1]))&&(p=(31&s)<<6|63&u)>127&&(a=p);break;case 3:u=e[i+1],l=e[i+2],128==(192&u)&&128==(192&l)&&(p=(15&s)<<12|(63&u)<<6|63&l)>2047&&(p<55296||p>57343)&&(a=p);break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],128==(192&u)&&128==(192&l)&&128==(192&c)&&(p=(15&s)<<18|(63&u)<<12|(63&l)<<6|63&c)>65535&&p<1114112&&(a=p)}}null===a?(a=65533,o=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=o}return w(n)}function w(e){var t=e.length;if(t<=H)return String.fromCharCode.apply(String,e);for(var r="",n=0;nn)&&(r=n);for(var i="",s=t;sr)throw new RangeError("Trying to access beyond buffer length")}function O(e,t,r,n,s,a){if(!i.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>s||te.length)throw new RangeError("Index out of range")}function j(e,t,r,n,i,s){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function N(e,t,r,n,i){return t=+t,r>>>=0,i||j(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38),z.write(e,t,r,n,23,4),r+4}function I(e,t,r,n,i){return t=+t,r>>>=0,i||j(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),z.write(e,t,r,n,52,8),r+8}function L(e){if((e=e.trim().replace($,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}function M(e){return e<16?"0"+e.toString(16):e.toString(16)}function R(e,t){t=t||1/0;for(var r,n=e.length,i=null,s=[],a=0;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&s.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&s.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&s.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;s.push(r)}else if(r<2048){if((t-=2)<0)break;s.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;s.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return s}function V(e){for(var t=[],r=0;r>8,i=r%256,s.push(i),s.push(n);return s}function q(e){return K.toByteArray(L(e))}function G(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function X(e){return e instanceof ArrayBuffer||null!=e&&null!=e.constructor&&"ArrayBuffer"===e.constructor.name&&"number"==typeof e.byteLength}function W(e){return"function"==typeof ArrayBuffer.isView&&ArrayBuffer.isView(e)}function J(e){return e!==e}var K=e("base64-js"),z=e("ieee754");r.Buffer=i,r.SlowBuffer=function(e){return+e!=e&&(e=0),i.alloc(+e)},r.INSPECT_MAX_BYTES=50;var Y=2147483647;r.kMaxLength=Y,i.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}(),i.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),"undefined"!=typeof Symbol&&Symbol.species&&i[Symbol.species]===i&&Object.defineProperty(i,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),i.poolSize=8192,i.from=function(e,t,r){return s(e,t,r)},i.prototype.__proto__=Uint8Array.prototype,i.__proto__=Uint8Array,i.alloc=function(e,t,r){return o(e,t,r)},i.allocUnsafe=function(e){return u(e)},i.allocUnsafeSlow=function(e){return u(e)},i.isBuffer=function(e){return null!=e&&!0===e._isBuffer},i.compare=function(e,t){if(!i.isBuffer(e)||!i.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,s=0,a=Math.min(r,n);s0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},i.prototype.compare=function(e,t,r,n,s){if(!i.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===s&&(s=this.length),t<0||r>e.length||n<0||s>this.length)throw new RangeError("out of range index");if(n>=s&&t>=r)return 0;if(n>=s)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,s>>>=0,this===e)return 0;for(var a=s-n,o=r-t,u=Math.min(a,o),l=this.slice(n,s),c=e.slice(t,r),p=0;p>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var s=!1;;)switch(n){case"hex":return v(this,e,t,r);case"utf8":case"utf-8":return x(this,e,t,r);case"ascii":return E(this,e,t,r);case"latin1":case"binary":return A(this,e,t,r);case"base64":return D(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,e,t,r);default:if(s)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),s=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var H=4096;i.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||B(e,t,this.length);for(var n=this[e],i=1,s=0;++s>>=0,t>>>=0,r||B(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},i.prototype.readUInt8=function(e,t){return e>>>=0,t||B(e,1,this.length),this[e]},i.prototype.readUInt16LE=function(e,t){return e>>>=0,t||B(e,2,this.length),this[e]|this[e+1]<<8},i.prototype.readUInt16BE=function(e,t){return e>>>=0,t||B(e,2,this.length),this[e]<<8|this[e+1]},i.prototype.readUInt32LE=function(e,t){return e>>>=0,t||B(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},i.prototype.readUInt32BE=function(e,t){return e>>>=0,t||B(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},i.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||B(e,t,this.length);for(var n=this[e],i=1,s=0;++s=i&&(n-=Math.pow(2,8*t)),n},i.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||B(e,t,this.length);for(var n=t,i=1,s=this[e+--n];n>0&&(i*=256);)s+=this[e+--n]*i;return i*=128,s>=i&&(s-=Math.pow(2,8*t)),s},i.prototype.readInt8=function(e,t){return e>>>=0,t||B(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},i.prototype.readInt16LE=function(e,t){e>>>=0,t||B(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},i.prototype.readInt16BE=function(e,t){e>>>=0,t||B(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},i.prototype.readInt32LE=function(e,t){return e>>>=0,t||B(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},i.prototype.readInt32BE=function(e,t){return e>>>=0,t||B(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},i.prototype.readFloatLE=function(e,t){return e>>>=0,t||B(e,4,this.length),z.read(this,e,!0,23,4)},i.prototype.readFloatBE=function(e,t){return e>>>=0,t||B(e,4,this.length),z.read(this,e,!1,23,4)},i.prototype.readDoubleLE=function(e,t){return e>>>=0,t||B(e,8,this.length),z.read(this,e,!0,52,8)},i.prototype.readDoubleBE=function(e,t){return e>>>=0,t||B(e,8,this.length),z.read(this,e,!1,52,8)},i.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||O(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,s=0;for(this[t]=255&e;++s>>=0,r>>>=0,n||O(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,s=1;for(this[t+i]=255&e;--i>=0&&(s*=256);)this[t+i]=e/s&255;return t+r},i.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||O(this,e,t,1,255,0),this[t]=255&e,t+1},i.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||O(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},i.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||O(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},i.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||O(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},i.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||O(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},i.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);O(this,e,t,r,i-1,-i)}var s=0,a=1,o=0;for(this[t]=255&e;++s>0)-o&255;return t+r},i.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);O(this,e,t,r,i-1,-i)}var s=r-1,a=1,o=0;for(this[t+s]=255&e;--s>=0&&(a*=256);)e<0&&0===o&&0!==this[t+s+1]&&(o=1),this[t+s]=(e/a>>0)-o&255;return t+r},i.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||O(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},i.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||O(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},i.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||O(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},i.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||O(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},i.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||O(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},i.prototype.writeFloatLE=function(e,t,r){return N(this,e,t,!0,r)},i.prototype.writeFloatBE=function(e,t,r){return N(this,e,t,!1,r)},i.prototype.writeDoubleLE=function(e,t,r){return I(this,e,t,!0,r)},i.prototype.writeDoubleBE=function(e,t,r){return I(this,e,t,!1,r)},i.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(s<1e3)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var a;if("number"==typeof e)for(a=t;ac;)if((o=u[c++])!=o)return!0}else for(;l>c;c++)if((e||c in u)&&u[c]===r)return e||c||0;return!e&&-1}}},{"./_to-absolute-index":273,"./_to-iobject":275,"./_to-length":276}],214:[function(e,t,r){var n=e("./_ctx"),i=e("./_iobject"),s=e("./_to-object"),a=e("./_to-length"),o=e("./_array-species-create");t.exports=function(e,t){var r=1==e,u=2==e,l=3==e,c=4==e,p=6==e,h=5==e||p,f=t||o;return function(t,o,d){for(var m,y,g=s(t),b=i(g),v=n(o,d,3),x=a(b.length),E=0,A=r?f(t,x):u?f(t,0):void 0;x>E;E++)if((h||E in b)&&(m=b[E],y=v(m,E,g),e))if(r)A[E]=y;else if(y)switch(e){case 3:return!0;case 5:return m;case 6:return E;case 2:A.push(m)}else if(c)return!1;return p?-1:l||c?c:A}}},{"./_array-species-create":216,"./_ctx":224,"./_iobject":238,"./_to-length":276,"./_to-object":277}],215:[function(e,t,r){var n=e("./_is-object"),i=e("./_is-array"),s=e("./_wks")("species");t.exports=function(e){var t;return i(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!i(t.prototype)||(t=void 0),n(t)&&null===(t=t[s])&&(t=void 0)),void 0===t?Array:t}},{"./_is-array":240,"./_is-object":241,"./_wks":283}],216:[function(e,t,r){var n=e("./_array-species-constructor");t.exports=function(e,t){return new(n(e))(t)}},{"./_array-species-constructor":215}],217:[function(e,t,r){var n=e("./_cof"),i=e("./_wks")("toStringTag"),s="Arguments"==n(function(){return arguments}()),a=function(e,t){try{return e[t]}catch(e){}};t.exports=function(e){var t,r,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=a(t=Object(e),i))?r:s?n(t):"Object"==(o=n(t))&&"function"==typeof t.callee?"Arguments":o}},{"./_cof":218,"./_wks":283}],218:[function(e,t,r){var n={}.toString;t.exports=function(e){return n.call(e).slice(8,-1)}},{}],219:[function(e,t,r){"use strict";var n=e("./_object-dp").f,i=e("./_object-create"),s=e("./_redefine-all"),a=e("./_ctx"),o=e("./_an-instance"),u=e("./_for-of"),l=e("./_iter-define"),c=e("./_iter-step"),p=e("./_set-species"),h=e("./_descriptors"),f=e("./_meta").fastKey,d=e("./_validate-collection"),m=h?"_s":"size",y=function(e,t){var r,n=f(t);if("F"!==n)return e._i[n];for(r=e._f;r;r=r.n)if(r.k==t)return r};t.exports={getConstructor:function(e,t,r,l){var c=e(function(e,n){o(e,c,t,"_i"),e._t=t,e._i=i(null),e._f=void 0,e._l=void 0,e[m]=0,void 0!=n&&u(n,r,e[l],e)});return s(c.prototype,{clear:function(){for(var e=d(this,t),r=e._i,n=e._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete r[n.i];e._f=e._l=void 0,e[m]=0},delete:function(e){var r=d(this,t),n=y(r,e);if(n){var i=n.n,s=n.p;delete r._i[n.i],n.r=!0,s&&(s.n=i),i&&(i.p=s),r._f==n&&(r._f=i),r._l==n&&(r._l=s),r[m]--}return!!n},forEach:function(e){d(this,t);for(var r,n=a(e,arguments.length>1?arguments[1]:void 0,3);r=r?r.n:this._f;)for(n(r.v,r.k,this);r&&r.r;)r=r.p},has:function(e){return!!y(d(this,t),e)}}),h&&n(c.prototype,"size",{get:function(){return d(this,t)[m]}}),c},def:function(e,t,r){var n,i,s=y(e,t);return s?s.v=r:(e._l=s={i:i=f(t,!0),k:t,v:r,p:n=e._l,n:void 0,r:!1},e._f||(e._f=s),n&&(n.n=s),e[m]++,"F"!==i&&(e._i[i]=s)),e},getEntry:y,setStrong:function(e,t,r){l(e,t,function(e,r){this._t=d(e,t),this._k=r,this._l=void 0},function(){for(var e=this,t=e._k,r=e._l;r&&r.r;)r=r.p;return e._t&&(e._l=r=r?r.n:e._t._f)?"keys"==t?c(0,r.k):"values"==t?c(0,r.v):c(0,[r.k,r.v]):(e._t=void 0,c(1))},r?"entries":"values",!r,!0),p(t)}}},{"./_an-instance":210,"./_ctx":224,"./_descriptors":226,"./_for-of":232,"./_iter-define":244,"./_iter-step":245,"./_meta":248,"./_object-create":250,"./_object-dp":251,"./_redefine-all":263,"./_set-species":268,"./_validate-collection":280}],220:[function(e,t,r){var n=e("./_classof"),i=e("./_array-from-iterable");t.exports=function(e){return function(){if(n(this)!=e)throw TypeError(e+"#toJSON isn't generic");return i(this)}}},{"./_array-from-iterable":212,"./_classof":217}],221:[function(e,t,r){"use strict";var n=e("./_redefine-all"),i=e("./_meta").getWeak,s=e("./_an-object"),a=e("./_is-object"),o=e("./_an-instance"),u=e("./_for-of"),l=e("./_array-methods"),c=e("./_has"),p=e("./_validate-collection"),h=l(5),f=l(6),d=0,m=function(e){return e._l||(e._l=new y)},y=function(){this.a=[]},g=function(e,t){return h(e.a,function(e){return e[0]===t})};y.prototype={get:function(e){var t=g(this,e);if(t)return t[1]},has:function(e){return!!g(this,e)},set:function(e,t){var r=g(this,e);r?r[1]=t:this.a.push([e,t])},delete:function(e){var t=f(this.a,function(t){return t[0]===e});return~t&&this.a.splice(t,1),!!~t}},t.exports={getConstructor:function(e,t,r,s){var l=e(function(e,n){o(e,l,t,"_i"),e._t=t,e._i=d++,e._l=void 0,void 0!=n&&u(n,r,e[s],e)});return n(l.prototype,{delete:function(e){if(!a(e))return!1;var r=i(e);return!0===r?m(p(this,t)).delete(e):r&&c(r,this._i)&&delete r[this._i]},has:function(e){if(!a(e))return!1;var r=i(e);return!0===r?m(p(this,t)).has(e):r&&c(r,this._i)}}),l},def:function(e,t,r){var n=i(s(t),!0);return!0===n?m(e).set(t,r):n[e._i]=r,e},ufstore:m}},{"./_an-instance":210,"./_an-object":211,"./_array-methods":214,"./_for-of":232,"./_has":234,"./_is-object":241,"./_meta":248,"./_redefine-all":263,"./_validate-collection":280}],222:[function(e,t,r){"use strict";var n=e("./_global"),i=e("./_export"),s=e("./_meta"),a=e("./_fails"),o=e("./_hide"),u=e("./_redefine-all"),l=e("./_for-of"),c=e("./_an-instance"),p=e("./_is-object"),h=e("./_set-to-string-tag"),f=e("./_object-dp").f,d=e("./_array-methods")(0),m=e("./_descriptors");t.exports=function(e,t,r,y,g,b){var v=n[e],x=v,E=g?"set":"add",A=x&&x.prototype,D={};return m&&"function"==typeof x&&(b||A.forEach&&!a(function(){(new x).entries().next()}))?(x=t(function(t,r){c(t,x,e,"_c"),t._c=new v,void 0!=r&&l(r,g,t[E],t)}),d("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(e){var t="add"==e||"set"==e;e in A&&(!b||"clear"!=e)&&o(x.prototype,e,function(r,n){if(c(this,x,e),!t&&b&&!p(r))return"get"==e&&void 0;var i=this._c[e](0===r?0:r,n);return t?this:i})}),b||f(x.prototype,"size",{get:function(){return this._c.size}})):(x=y.getConstructor(t,e,g,E),u(x.prototype,r),s.NEED=!0),h(x,e),D[e]=x,i(i.G+i.W+i.F,D),b||y.setStrong(x,e,g),x}},{"./_an-instance":210,"./_array-methods":214,"./_descriptors":226,"./_export":230,"./_fails":231,"./_for-of":232,"./_global":233,"./_hide":235,"./_is-object":241,"./_meta":248,"./_object-dp":251,"./_redefine-all":263,"./_set-to-string-tag":269}],223:[function(e,t,r){var n=t.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},{}],224:[function(e,t,r){var n=e("./_a-function");t.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":208}],225:[function(e,t,r){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},{}],226:[function(e,t,r){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":231}],227:[function(e,t,r){var n=e("./_is-object"),i=e("./_global").document,s=n(i)&&n(i.createElement);t.exports=function(e){return s?i.createElement(e):{}}},{"./_global":233,"./_is-object":241}],228:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],229:[function(e,t,r){var n=e("./_object-keys"),i=e("./_object-gops"),s=e("./_object-pie");t.exports=function(e){var t=n(e),r=i.f;if(r)for(var a,o=r(e),u=s.f,l=0;o.length>l;)u.call(e,a=o[l++])&&t.push(a);return t}},{"./_object-gops":256,"./_object-keys":259,"./_object-pie":260}],230:[function(e,t,r){var n=e("./_global"),i=e("./_core"),s=e("./_ctx"),a=e("./_hide"),o=function(e,t,r){var u,l,c,p=e&o.F,h=e&o.G,f=e&o.S,d=e&o.P,m=e&o.B,y=e&o.W,g=h?i:i[t]||(i[t]={}),b=g.prototype,v=h?n:f?n[t]:(n[t]||{}).prototype;h&&(r=t);for(u in r)(l=!p&&v&&void 0!==v[u])&&u in g||(c=l?v[u]:r[u],g[u]=h&&"function"!=typeof v[u]?r[u]:m&&l?s(c,n):y&&v[u]==c?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(c):d&&"function"==typeof c?s(Function.call,c):c,d&&((g.virtual||(g.virtual={}))[u]=c,e&o.R&&b&&!b[u]&&a(b,u,c)))};o.F=1,o.G=2,o.S=4,o.P=8,o.B=16,o.W=32,o.U=64,o.R=128,t.exports=o},{"./_core":223,"./_ctx":224,"./_global":233,"./_hide":235}],231:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],232:[function(e,t,r){var n=e("./_ctx"),i=e("./_iter-call"),s=e("./_is-array-iter"),a=e("./_an-object"),o=e("./_to-length"),u=e("./core.get-iterator-method"),l={},c={};(r=t.exports=function(e,t,r,p,h){var f,d,m,y,g=h?function(){return e}:u(e),b=n(r,p,t?2:1),v=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(s(g)){for(f=o(e.length);f>v;v++)if((y=t?b(a(d=e[v])[0],d[1]):b(e[v]))===l||y===c)return y}else for(m=g.call(e);!(d=m.next()).done;)if((y=i(m,b,d.value,t))===l||y===c)return y}).BREAK=l,r.RETURN=c},{"./_an-object":211,"./_ctx":224,"./_is-array-iter":239,"./_iter-call":242,"./_to-length":276,"./core.get-iterator-method":284}],233:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],234:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],235:[function(e,t,r){var n=e("./_object-dp"),i=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return n.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},{"./_descriptors":226,"./_object-dp":251,"./_property-desc":262}],236:[function(e,t,r){var n=e("./_global").document;t.exports=n&&n.documentElement},{"./_global":233}],237:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":226,"./_dom-create":227,"./_fails":231}],238:[function(e,t,r){var n=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./_cof":218}],239:[function(e,t,r){var n=e("./_iterators"),i=e("./_wks")("iterator"),s=Array.prototype;t.exports=function(e){return void 0!==e&&(n.Array===e||s[i]===e)}},{"./_iterators":246,"./_wks":283}],240:[function(e,t,r){var n=e("./_cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./_cof":218}],241:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],242:[function(e,t,r){var n=e("./_an-object");t.exports=function(e,t,r,i){try{return i?t(n(r)[0],r[1]):t(r)}catch(t){var s=e.return;throw void 0!==s&&n(s.call(e)),t}}},{"./_an-object":211}],243:[function(e,t,r){"use strict";var n=e("./_object-create"),i=e("./_property-desc"),s=e("./_set-to-string-tag"),a={};e("./_hide")(a,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,r){e.prototype=n(a,{next:i(1,r)}),s(e,t+" Iterator")}},{"./_hide":235,"./_object-create":250,"./_property-desc":262,"./_set-to-string-tag":269,"./_wks":283}],244:[function(e,t,r){"use strict";var n=e("./_library"),i=e("./_export"),s=e("./_redefine"),a=e("./_hide"),o=e("./_has"),u=e("./_iterators"),l=e("./_iter-create"),c=e("./_set-to-string-tag"),p=e("./_object-gpo"),h=e("./_wks")("iterator"),f=!([].keys&&"next"in[].keys()),d=function(){return this};t.exports=function(e,t,r,m,y,g,b){l(r,t,m);var v,x,E,A=function(e){if(!f&&e in _)return _[e];switch(e){case"keys":case"values":return function(){return new r(this,e)}}return function(){return new r(this,e)}},D=t+" Iterator",C="values"==y,S=!1,_=e.prototype,w=_[h]||_["@@iterator"]||y&&_[y],k=w||A(y),F=y?C?A("entries"):k:void 0,T="Array"==t?_.entries||w:w;if(T&&(E=p(T.call(new e)))!==Object.prototype&&E.next&&(c(E,D,!0),n||o(E,h)||a(E,h,d)),C&&w&&"values"!==w.name&&(S=!0,k=function(){return w.call(this)}),n&&!b||!f&&!S&&_[h]||a(_,h,k),u[t]=k,u[D]=d,y)if(v={values:C?k:A("values"),keys:g?k:A("keys"),entries:F},b)for(x in v)x in _||s(_,x,v[x]);else i(i.P+i.F*(f||S),t,v);return v}},{"./_export":230,"./_has":234,"./_hide":235,"./_iter-create":243,"./_iterators":246,"./_library":247,"./_object-gpo":257,"./_redefine":264,"./_set-to-string-tag":269,"./_wks":283}],245:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],246:[function(e,t,r){t.exports={}},{}],247:[function(e,t,r){t.exports=!0},{}],248:[function(e,t,r){var n=e("./_uid")("meta"),i=e("./_is-object"),s=e("./_has"),a=e("./_object-dp").f,o=0,u=Object.isExtensible||function(){return!0},l=!e("./_fails")(function(){return u(Object.preventExtensions({}))}),c=function(e){a(e,n,{value:{i:"O"+ ++o,w:{}}})},p=t.exports={KEY:n,NEED:!1,fastKey:function(e,t){if(!i(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!s(e,n)){if(!u(e))return"F";if(!t)return"E";c(e)}return e[n].i},getWeak:function(e,t){if(!s(e,n)){if(!u(e))return!0;if(!t)return!1;c(e)}return e[n].w},onFreeze:function(e){return l&&p.NEED&&u(e)&&!s(e,n)&&c(e),e}}},{"./_fails":231,"./_has":234,"./_is-object":241,"./_object-dp":251,"./_uid":279}],249:[function(e,t,r){"use strict";var n=e("./_object-keys"),i=e("./_object-gops"),s=e("./_object-pie"),a=e("./_to-object"),o=e("./_iobject"),u=Object.assign;t.exports=!u||e("./_fails")(function(){var e={},t={},r=Symbol(),n="abcdefghijklmnopqrst";return e[r]=7,n.split("").forEach(function(e){t[e]=e}),7!=u({},e)[r]||Object.keys(u({},t)).join("")!=n})?function(e,t){for(var r=a(e),u=arguments.length,l=1,c=i.f,p=s.f;u>l;)for(var h,f=o(arguments[l++]),d=c?n(f).concat(c(f)):n(f),m=d.length,y=0;m>y;)p.call(f,h=d[y++])&&(r[h]=f[h]);return r}:u},{"./_fails":231,"./_iobject":238,"./_object-gops":256,"./_object-keys":259,"./_object-pie":260,"./_to-object":277}],250:[function(e,t,r){var n=e("./_an-object"),i=e("./_object-dps"),s=e("./_enum-bug-keys"),a=e("./_shared-key")("IE_PROTO"),o=function(){},u=function(){var t,r=e("./_dom-create")("iframe"),n=s.length;for(r.style.display="none",e("./_html").appendChild(r),r.src="javascript:",(t=r.contentWindow.document).open(),t.write("
-
-```
-
-In the browser, you can attach the forEach method to any object.
-
-```html
-
-
-
-```
-
-## The General Idea (Why I thought this was worth sharing)
-
-The idea is to allow the callback to decide _at runtime_ whether the loop will be synchronous or asynchronous. By using `this` in a creative way (in situations where that value isn't already spoken for), an entire control API can be offered without over-complicating function signatures.
-
-```javascript
-forEach(arr, function(item, index) {
- // Synchronous.
-});
-
-forEach(arr, function(item, index) {
- // Only when `this.async` is called does iteration becomes asynchronous. The
- // loop won't be continued until the `done` function is executed.
- var done = this.async();
- // Continue in one second.
- setTimeout(done, 1000);
-});
-
-forEach(arr, function(item, index) {
- // Break out of synchronous iteration early by returning false.
- return index !== 1;
-});
-
-forEach(arr, function(item, index) {
- // Break out of asynchronous iteration early...
- var done = this.async();
- // ...by passing false to the done function.
- setTimeout(function() {
- done(index !== 1);
- });
-});
-```
-
-## Examples
-See the unit tests for more examples.
-
-```javascript
-// Generic "done" callback.
-function allDone(notAborted, arr) {
- console.log("done", notAborted, arr);
-}
-
-// Synchronous.
-forEach(["a", "b", "c"], function(item, index, arr) {
- console.log("each", item, index, arr);
-}, allDone);
-// logs:
-// each a 0 ["a", "b", "c"]
-// each b 1 ["a", "b", "c"]
-// each c 2 ["a", "b", "c"]
-// done true ["a", "b", "c"]
-
-// Synchronous with early abort.
-forEach(["a", "b", "c"], function(item, index, arr) {
- console.log("each", item, index, arr);
- if (item === "b") { return false; }
-}, allDone);
-// logs:
-// each a 0 ["a", "b", "c"]
-// each b 1 ["a", "b", "c"]
-// done false ["a", "b", "c"]
-
-// Asynchronous.
-forEach(["a", "b", "c"], function(item, index, arr) {
- console.log("each", item, index, arr);
- var done = this.async();
- setTimeout(function() {
- done();
- }, 500);
-}, allDone);
-// logs:
-// each a 0 ["a", "b", "c"]
-// each b 1 ["a", "b", "c"]
-// each c 2 ["a", "b", "c"]
-// done true ["a", "b", "c"]
-
-// Asynchronous with early abort.
-forEach(["a", "b", "c"], function(item, index, arr) {
- console.log("each", item, index, arr);
- var done = this.async();
- setTimeout(function() {
- done(item !== "b");
- }, 500);
-}, allDone);
-// logs:
-// each a 0 ["a", "b", "c"]
-// each b 1 ["a", "b", "c"]
-// done false ["a", "b", "c"]
-
-// Not actually asynchronous.
-forEach(["a", "b", "c"], function(item, index, arr) {
- console.log("each", item, index, arr);
- var done = this.async()
- done();
-}, allDone);
-// logs:
-// each a 0 ["a", "b", "c"]
-// each b 1 ["a", "b", "c"]
-// each c 2 ["a", "b", "c"]
-// done true ["a", "b", "c"]
-
-// Not actually asynchronous with early abort.
-forEach(["a", "b", "c"], function(item, index, arr) {
- console.log("each", item, index, arr);
- var done = this.async();
- done(item !== "b");
-}, allDone);
-// logs:
-// each a 0 ["a", "b", "c"]
-// each b 1 ["a", "b", "c"]
-// done false ["a", "b", "c"]
-```
-
-## Contributing
-In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt).
-
-_Also, please don't edit files in the "dist" subdirectory as they are generated via grunt. You'll find source code in the "lib" subdirectory!_
-
-## Release History
-
-04/29/2013
-v0.1.3
-Removed hard Node.js version dependency.
-
-11/17/2011
-v0.1.2
-Adding sparse array support.
-Invalid length properties are now sanitized.
-This closes issue #1 (like a boss).
-
-11/11/2011
-v0.1.1
-Refactored code to be much simpler. Yay for unit tests!
-
-11/11/2011
-v0.1.0
-Initial Release.
-
-## License
-Copyright (c) 2012 "Cowboy" Ben Alman
-Licensed under the MIT license.
-
diff --git a/node_modules/async-foreach/dist/ba-foreach.js b/node_modules/async-foreach/dist/ba-foreach.js
deleted file mode 100644
index 64c6eb8..0000000
--- a/node_modules/async-foreach/dist/ba-foreach.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/* JavaScript Sync/Async forEach - v0.1.2 - 1/10/2012
- * http://github.com/cowboy/javascript-sync-async-foreach
- * Copyright (c) 2012 "Cowboy" Ben Alman; Licensed MIT */
-
-(function(exports) {
-
- // Iterate synchronously or asynchronously.
- exports.forEach = function(arr, eachFn, doneFn) {
- var i = -1;
- // Resolve array length to a valid (ToUint32) number.
- var len = arr.length >>> 0;
-
- // This IIFE is called once now, and then again, by name, for each loop
- // iteration.
- (function next(result) {
- // This flag will be set to true if `this.async` is called inside the
- // eachFn` callback.
- var async;
- // Was false returned from the `eachFn` callback or passed to the
- // `this.async` done function?
- var abort = result === false;
-
- // Increment counter variable and skip any indices that don't exist. This
- // allows sparse arrays to be iterated.
- do { ++i; } while (!(i in arr) && i !== len);
-
- // Exit if result passed to `this.async` done function or returned from
- // the `eachFn` callback was false, or when done iterating.
- if (abort || i === len) {
- // If a `doneFn` callback was specified, invoke that now. Pass in a
- // boolean value representing "not aborted" state along with the array.
- if (doneFn) {
- doneFn(!abort, arr);
- }
- return;
- }
-
- // Invoke the `eachFn` callback, setting `this` inside the callback to a
- // custom object that contains one method, and passing in the array item,
- // index, and the array.
- result = eachFn.call({
- // If `this.async` is called inside the `eachFn` callback, set the async
- // flag and return a function that can be used to continue iterating.
- async: function() {
- async = true;
- return next;
- }
- }, arr[i], i, arr);
-
- // If the async flag wasn't set, continue by calling `next` synchronously,
- // passing in the result of the `eachFn` callback.
- if (!async) {
- next(result);
- }
- }());
- };
-
-}(typeof exports === "object" && exports || this));
\ No newline at end of file
diff --git a/node_modules/async-foreach/dist/ba-foreach.min.js b/node_modules/async-foreach/dist/ba-foreach.min.js
deleted file mode 100644
index c218a91..0000000
--- a/node_modules/async-foreach/dist/ba-foreach.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/* JavaScript Sync/Async forEach - v0.1.2 - 1/10/2012
- * http://github.com/cowboy/javascript-sync-async-foreach
- * Copyright (c) 2012 "Cowboy" Ben Alman; Licensed MIT */
-(function(a){a.forEach=function(a,b,c){var d=-1,e=a.length>>>0;(function f(g){var h,j=g===!1;do++d;while(!(d in a)&&d!==e);if(j||d===e){c&&c(!j,a);return}g=b.call({async:function(){return h=!0,f}},a[d],d,a),h||f(g)})()}})(typeof exports=="object"&&exports||this)
\ No newline at end of file
diff --git a/node_modules/async-foreach/grunt.js b/node_modules/async-foreach/grunt.js
deleted file mode 100644
index 079a23a..0000000
--- a/node_modules/async-foreach/grunt.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/*global config:true, task:true*/
-config.init({
- pkg: '',
- meta: {
- title: 'JavaScript Sync/Async forEach',
- license: ['MIT'],
- copyright: 'Copyright (c) 2012 "Cowboy" Ben Alman',
- banner: '/* {{meta.title}} - v{{pkg.version}} - {{today "m/d/yyyy"}}\n' +
- ' * {{pkg.homepage}}\n' +
- ' * {{{meta.copyright}}}; Licensed {{join meta.license}} */'
- },
- concat: {
- 'dist/ba-foreach.js': ['', '']
- },
- min: {
- 'dist/ba-foreach.min.js': ['', 'dist/ba-foreach.js']
- },
- test: {
- files: ['test/**/*.js']
- },
- lint: {
- files: ['grunt.js', 'lib/**/*.js', 'test/**/*.js']
- },
- watch: {
- files: '',
- tasks: 'lint:files test:files'
- },
- jshint: {
- options: {
- curly: true,
- eqeqeq: true,
- immed: true,
- latedef: true,
- newcap: true,
- noarg: true,
- sub: true,
- undef: true,
- eqnull: true
- },
- globals: {
- exports: true
- }
- },
- uglify: {}
-});
-
-// Default task.
-task.registerTask('default', 'lint:files test:files concat min');
diff --git a/node_modules/async-foreach/lib/foreach.js b/node_modules/async-foreach/lib/foreach.js
deleted file mode 100644
index 9ee98b0..0000000
--- a/node_modules/async-foreach/lib/foreach.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/*!
- * Sync/Async forEach
- * https://github.com/cowboy/javascript-sync-async-foreach
- *
- * Copyright (c) 2012 "Cowboy" Ben Alman
- * Licensed under the MIT license.
- * http://benalman.com/about/license/
- */
-
-(function(exports) {
-
- // Iterate synchronously or asynchronously.
- exports.forEach = function(arr, eachFn, doneFn) {
- var i = -1;
- // Resolve array length to a valid (ToUint32) number.
- var len = arr.length >>> 0;
-
- // This IIFE is called once now, and then again, by name, for each loop
- // iteration.
- (function next(result) {
- // This flag will be set to true if `this.async` is called inside the
- // eachFn` callback.
- var async;
- // Was false returned from the `eachFn` callback or passed to the
- // `this.async` done function?
- var abort = result === false;
-
- // Increment counter variable and skip any indices that don't exist. This
- // allows sparse arrays to be iterated.
- do { ++i; } while (!(i in arr) && i !== len);
-
- // Exit if result passed to `this.async` done function or returned from
- // the `eachFn` callback was false, or when done iterating.
- if (abort || i === len) {
- // If a `doneFn` callback was specified, invoke that now. Pass in a
- // boolean value representing "not aborted" state along with the array.
- if (doneFn) {
- doneFn(!abort, arr);
- }
- return;
- }
-
- // Invoke the `eachFn` callback, setting `this` inside the callback to a
- // custom object that contains one method, and passing in the array item,
- // index, and the array.
- result = eachFn.call({
- // If `this.async` is called inside the `eachFn` callback, set the async
- // flag and return a function that can be used to continue iterating.
- async: function() {
- async = true;
- return next;
- }
- }, arr[i], i, arr);
-
- // If the async flag wasn't set, continue by calling `next` synchronously,
- // passing in the result of the `eachFn` callback.
- if (!async) {
- next(result);
- }
- }());
- };
-
-}(typeof exports === "object" && exports || this));
\ No newline at end of file
diff --git a/node_modules/async-foreach/package.json b/node_modules/async-foreach/package.json
deleted file mode 100644
index 388bad2..0000000
--- a/node_modules/async-foreach/package.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
- "_args": [
- [
- {
- "raw": "async-foreach@^0.1.3",
- "scope": null,
- "escapedName": "async-foreach",
- "name": "async-foreach",
- "rawSpec": "^0.1.3",
- "spec": ">=0.1.3 <0.2.0",
- "type": "range"
- },
- "C:\\Users\\Workstation\\desktop\\GitHub Projects\\kanban\\node_modules\\node-sass"
- ]
- ],
- "_from": "async-foreach@>=0.1.3 <0.2.0",
- "_id": "async-foreach@0.1.3",
- "_inCache": true,
- "_location": "/async-foreach",
- "_npmUser": {
- "name": "cowboy",
- "email": "cowboy@rj3.net"
- },
- "_npmVersion": "1.1.70",
- "_phantomChildren": {},
- "_requested": {
- "raw": "async-foreach@^0.1.3",
- "scope": null,
- "escapedName": "async-foreach",
- "name": "async-foreach",
- "rawSpec": "^0.1.3",
- "spec": ">=0.1.3 <0.2.0",
- "type": "range"
- },
- "_requiredBy": [
- "/node-sass"
- ],
- "_resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
- "_shasum": "36121f845c0578172de419a97dbeb1d16ec34542",
- "_shrinkwrap": null,
- "_spec": "async-foreach@^0.1.3",
- "_where": "C:\\Users\\Workstation\\desktop\\GitHub Projects\\kanban\\node_modules\\node-sass",
- "author": {
- "name": "\"Cowboy\" Ben Alman",
- "url": "http://benalman.com/"
- },
- "bugs": {
- "url": "https://github.com/cowboy/javascript-sync-async-foreach/issues"
- },
- "dependencies": {},
- "description": "An optionally-asynchronous forEach with an interesting interface.",
- "devDependencies": {},
- "directories": {},
- "dist": {
- "shasum": "36121f845c0578172de419a97dbeb1d16ec34542",
- "tarball": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz"
- },
- "engines": {
- "node": "*"
- },
- "homepage": "http://github.com/cowboy/javascript-sync-async-foreach",
- "keywords": [
- "array",
- "loop",
- "sync",
- "async",
- "foreach"
- ],
- "main": "lib/foreach",
- "maintainers": [
- {
- "name": "cowboy",
- "email": "cowboy@rj3.net"
- }
- ],
- "name": "async-foreach",
- "optionalDependencies": {},
- "readme": "# JavaScript Sync/Async forEach\n\nAn optionally-asynchronous forEach with an interesting interface.\n\n## Getting Started\n\nThis code should work just fine in Node.js:\n\nFirst, install the module with: `npm install async-foreach`\n\n```javascript\nvar forEach = require('async-foreach').forEach;\nforEach([\"a\", \"b\", \"c\"], function(item, index, arr) {\n console.log(\"each\", item, index, arr);\n});\n// logs:\n// each a 0 [\"a\", \"b\", \"c\"]\n// each b 1 [\"a\", \"b\", \"c\"]\n// each c 2 [\"a\", \"b\", \"c\"]\n```\n\nOr in the browser:\n\n```html\n\n\n```\n\nIn the browser, you can attach the forEach method to any object.\n\n```html\n\n\n\n```\n\n## The General Idea (Why I thought this was worth sharing)\n\nThe idea is to allow the callback to decide _at runtime_ whether the loop will be synchronous or asynchronous. By using `this` in a creative way (in situations where that value isn't already spoken for), an entire control API can be offered without over-complicating function signatures.\n\n```javascript\nforEach(arr, function(item, index) {\n // Synchronous.\n});\n\nforEach(arr, function(item, index) {\n // Only when `this.async` is called does iteration becomes asynchronous. The\n // loop won't be continued until the `done` function is executed.\n var done = this.async();\n // Continue in one second.\n setTimeout(done, 1000);\n});\n\nforEach(arr, function(item, index) {\n // Break out of synchronous iteration early by returning false.\n return index !== 1;\n});\n\nforEach(arr, function(item, index) {\n // Break out of asynchronous iteration early...\n var done = this.async();\n // ...by passing false to the done function.\n setTimeout(function() {\n done(index !== 1);\n });\n});\n```\n\n## Examples\nSee the unit tests for more examples.\n\n```javascript\n// Generic \"done\" callback.\nfunction allDone(notAborted, arr) {\n console.log(\"done\", notAborted, arr);\n}\n\n// Synchronous.\nforEach([\"a\", \"b\", \"c\"], function(item, index, arr) {\n console.log(\"each\", item, index, arr);\n}, allDone);\n// logs:\n// each a 0 [\"a\", \"b\", \"c\"]\n// each b 1 [\"a\", \"b\", \"c\"]\n// each c 2 [\"a\", \"b\", \"c\"]\n// done true [\"a\", \"b\", \"c\"]\n\n// Synchronous with early abort.\nforEach([\"a\", \"b\", \"c\"], function(item, index, arr) {\n console.log(\"each\", item, index, arr);\n if (item === \"b\") { return false; }\n}, allDone);\n// logs:\n// each a 0 [\"a\", \"b\", \"c\"]\n// each b 1 [\"a\", \"b\", \"c\"]\n// done false [\"a\", \"b\", \"c\"]\n\n// Asynchronous.\nforEach([\"a\", \"b\", \"c\"], function(item, index, arr) {\n console.log(\"each\", item, index, arr);\n var done = this.async();\n setTimeout(function() {\n done();\n }, 500);\n}, allDone);\n// logs:\n// each a 0 [\"a\", \"b\", \"c\"]\n// each b 1 [\"a\", \"b\", \"c\"]\n// each c 2 [\"a\", \"b\", \"c\"]\n// done true [\"a\", \"b\", \"c\"]\n\n// Asynchronous with early abort.\nforEach([\"a\", \"b\", \"c\"], function(item, index, arr) {\n console.log(\"each\", item, index, arr);\n var done = this.async();\n setTimeout(function() {\n done(item !== \"b\");\n }, 500);\n}, allDone);\n// logs:\n// each a 0 [\"a\", \"b\", \"c\"]\n// each b 1 [\"a\", \"b\", \"c\"]\n// done false [\"a\", \"b\", \"c\"]\n\n// Not actually asynchronous.\nforEach([\"a\", \"b\", \"c\"], function(item, index, arr) {\n console.log(\"each\", item, index, arr);\n var done = this.async()\n done();\n}, allDone);\n// logs:\n// each a 0 [\"a\", \"b\", \"c\"]\n// each b 1 [\"a\", \"b\", \"c\"]\n// each c 2 [\"a\", \"b\", \"c\"]\n// done true [\"a\", \"b\", \"c\"]\n\n// Not actually asynchronous with early abort.\nforEach([\"a\", \"b\", \"c\"], function(item, index, arr) {\n console.log(\"each\", item, index, arr);\n var done = this.async();\n done(item !== \"b\");\n}, allDone);\n// logs:\n// each a 0 [\"a\", \"b\", \"c\"]\n// each b 1 [\"a\", \"b\", \"c\"]\n// done false [\"a\", \"b\", \"c\"]\n```\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt).\n\n_Also, please don't edit files in the \"dist\" subdirectory as they are generated via grunt. You'll find source code in the \"lib\" subdirectory!_\n\n## Release History\n\n04/29/2013\nv0.1.3\nRemoved hard Node.js version dependency.\n\n11/17/2011\nv0.1.2\nAdding sparse array support.\nInvalid length properties are now sanitized.\nThis closes issue #1 (like a boss).\n\n11/11/2011\nv0.1.1\nRefactored code to be much simpler. Yay for unit tests!\n\n11/11/2011\nv0.1.0\nInitial Release.\n\n## License\nCopyright (c) 2012 \"Cowboy\" Ben Alman \nLicensed under the MIT license. \n\n",
- "readmeFilename": "README.md",
- "repository": {
- "type": "git",
- "url": "git://github.com/cowboy/javascript-sync-async-foreach.git"
- },
- "version": "0.1.3"
-}
diff --git a/node_modules/async-foreach/test/foreach_test.js b/node_modules/async-foreach/test/foreach_test.js
deleted file mode 100644
index be18c43..0000000
--- a/node_modules/async-foreach/test/foreach_test.js
+++ /dev/null
@@ -1,200 +0,0 @@
-/*global require:true, setTimeout:true */
-var forEach = require('../lib/foreach').forEach;
-
-exports['foreach'] = {
- setUp: function(done) {
- this.order = [];
- this.track = function() {
- [].push.apply(this.order, arguments);
- };
- done();
- },
- 'Synchronous': function(test) {
- test.expect(1);
- var that = this;
-
- var arr = ["a", "b", "c"];
- forEach(arr, function(item, index, arr) {
- that.track("each", item, index, arr);
- });
-
- test.deepEqual(that.order, [
- "each", "a", 0, arr,
- "each", "b", 1, arr,
- "each", "c", 2, arr
- ], "should call eachFn for each array item, in order.");
- test.done();
- },
- 'Synchronous, done': function(test) {
- test.expect(1);
- var that = this;
-
- var arr = ["a", "b", "c"];
- forEach(arr, function(item, index, arr) {
- that.track("each", item, index, arr);
- }, function(notAborted, arr) {
- that.track("done", notAborted, arr);
- });
-
- test.deepEqual(that.order, [
- "each", "a", 0, arr,
- "each", "b", 1, arr,
- "each", "c", 2, arr,
- "done", true, arr
- ], "should call eachFn for each array item, in order, followed by doneFn.");
- test.done();
- },
- 'Synchronous, early abort': function(test) {
- test.expect(1);
- var that = this;
-
- var arr = ["a", "b", "c"];
- forEach(arr, function(item, index, arr) {
- that.track("each", item, index, arr);
- if (item === "b") { return false; }
- }, function(notAborted, arr) {
- that.track("done", notAborted, arr);
- });
-
- test.deepEqual(that.order, [
- "each", "a", 0, arr,
- "each", "b", 1, arr,
- "done", false, arr
- ], "should call eachFn for each array item, in order, followed by doneFn.");
- test.done();
- },
- 'Asynchronous': function(test) {
- test.expect(1);
- var that = this;
-
- var arr = ["a", "b", "c"];
- forEach(arr, function(item, index, arr) {
- that.track("each", item, index, arr);
- var done = this.async();
- setTimeout(done, 10);
- });
-
- setTimeout(function() {
- test.deepEqual(that.order, [
- "each", "a", 0, arr,
- "each", "b", 1, arr,
- "each", "c", 2, arr
- ], "should call eachFn for each array item, in order.");
- test.done();
- }, 100);
- },
- 'Asynchronous, done': function(test) {
- test.expect(1);
- var that = this;
-
- var arr = ["a", "b", "c"];
- forEach(arr, function(item, index, arr) {
- that.track("each", item, index, arr);
- var done = this.async();
- setTimeout(done, 10);
- }, function(notAborted, arr) {
- that.track("done", notAborted, arr);
- test.deepEqual(that.order, [
- "each", "a", 0, arr,
- "each", "b", 1, arr,
- "each", "c", 2, arr,
- "done", true, arr
- ], "should call eachFn for each array item, in order, followed by doneFn.");
- test.done();
- });
- },
- 'Asynchronous, early abort': function(test) {
- test.expect(1);
- var that = this;
-
- var arr = ["a", "b", "c"];
- forEach(arr, function(item, index, arr) {
- that.track("each", item, index, arr);
- var done = this.async();
- setTimeout(function() {
- done(item !== "b");
- }, 10);
- }, function(notAborted, arr) {
- that.track("done", notAborted, arr);
- test.deepEqual(that.order, [
- "each", "a", 0, arr,
- "each", "b", 1, arr,
- "done", false, arr
- ], "should call eachFn for each array item, in order, followed by doneFn.");
- test.done();
- });
- },
- 'Not actually asynchronous': function(test) {
- test.expect(1);
- var that = this;
-
- var arr = ["a", "b", "c"];
- forEach(arr, function(item, index, arr) {
- that.track("each", item, index, arr);
- var done = this.async();
- done();
- }, function(notAborted, arr) {
- that.track("done", notAborted, arr);
- test.deepEqual(that.order, [
- "each", "a", 0, arr,
- "each", "b", 1, arr,
- "each", "c", 2, arr,
- "done", true, arr
- ], "should call eachFn for each array item, in order, followed by doneFn.");
- test.done();
- });
- },
- 'Not actually asynchronous, early abort': function(test) {
- test.expect(1);
- var that = this;
-
- var arr = ["a", "b", "c"];
- forEach(arr, function(item, index, arr) {
- that.track("each", item, index, arr);
- var done = this.async();
- done(item !== "b");
- }, function(notAborted, arr) {
- that.track("done", notAborted, arr);
- test.deepEqual(that.order, [
- "each", "a", 0, arr,
- "each", "b", 1, arr,
- "done", false, arr
- ], "should call eachFn for each array item, in order, followed by doneFn.");
- test.done();
- });
- },
- 'Sparse array support': function(test) {
- test.expect(1);
- var that = this;
-
- var arr = [];
- arr[0] = "a";
- arr[9] = "z";
-
- forEach(arr, function(item, index, arr) {
- that.track("each", item, index, arr);
- });
-
- test.deepEqual(that.order, [
- "each", "a", 0, arr,
- "each", "z", 9, arr
- ], "should skip nonexistent array items.");
- test.done();
- },
- 'Invalid length sanitization': function(test) {
- test.expect(1);
- var that = this;
-
- var obj = {length: 4294967299, 0: "a", 2: "b", 3: "c" };
-
- forEach(obj, function(item, index, arr) {
- that.track("each", item, index, arr);
- });
-
- test.deepEqual(that.order, [
- "each", "a", 0, obj,
- "each", "b", 2, obj
- ], "should sanitize length property (ToUint32).");
- test.done();
- }
-};
diff --git a/node_modules/asynckit/LICENSE b/node_modules/asynckit/LICENSE
deleted file mode 100644
index c9eca5d..0000000
--- a/node_modules/asynckit/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 Alex Indigo
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/node_modules/asynckit/README.md b/node_modules/asynckit/README.md
deleted file mode 100644
index ddcc7e6..0000000
--- a/node_modules/asynckit/README.md
+++ /dev/null
@@ -1,233 +0,0 @@
-# asynckit [![NPM Module](https://img.shields.io/npm/v/asynckit.svg?style=flat)](https://www.npmjs.com/package/asynckit)
-
-Minimal async jobs utility library, with streams support.
-
-[![PhantomJS Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=browser&style=flat)](https://travis-ci.org/alexindigo/asynckit)
-[![Linux Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=linux:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/asynckit)
-[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/asynckit/v0.4.0.svg?label=windows:0.12-6.x&style=flat)](https://ci.appveyor.com/project/alexindigo/asynckit)
-
-[![Coverage Status](https://img.shields.io/coveralls/alexindigo/asynckit/v0.4.0.svg?label=code+coverage&style=flat)](https://coveralls.io/github/alexindigo/asynckit?branch=master)
-[![Dependency Status](https://img.shields.io/david/alexindigo/asynckit/v0.4.0.svg?style=flat)](https://david-dm.org/alexindigo/asynckit)
-[![bitHound Overall Score](https://www.bithound.io/github/alexindigo/asynckit/badges/score.svg)](https://www.bithound.io/github/alexindigo/asynckit)
-
-
-
-AsyncKit provides harness for `parallel` and `serial` iterators over list of items represented by arrays or objects.
-Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (`ascending` and `descending`) and custom sort helpers also supported, via `asynckit.serialOrdered` method.
-
-It ensures async operations to keep behavior more stable and prevent `Maximum call stack size exceeded` errors, from sync iterators.
-
-| compression | size |
-| :----------------- | -------: |
-| asynckit.js | 12.34 kB |
-| asynckit.min.js | 4.11 kB |
-| asynckit.min.js.gz | 1.47 kB |
-
-
-## Install
-
-```sh
-$ npm install --save asynckit
-```
-
-## Examples
-
-### Parallel Jobs
-
-Runs iterator over provided array in parallel. Stores output in the `result` array,
-on the matching positions. In unlikely event of an error from one of the jobs,
-will terminate rest of the active jobs (if abort function is provided)
-and return error along with salvaged data to the main callback function.
-
-#### Input Array
-
-```javascript
-var parallel = require('asynckit').parallel
- , assert = require('assert')
- ;
-
-var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
- , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
- , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ]
- , target = []
- ;
-
-parallel(source, asyncJob, function(err, result)
-{
- assert.deepEqual(result, expectedResult);
- assert.deepEqual(target, expectedTarget);
-});
-
-// async job accepts one element from the array
-// and a callback function
-function asyncJob(item, cb)
-{
- // different delays (in ms) per item
- var delay = item * 25;
-
- // pretend different jobs take different time to finish
- // and not in consequential order
- var timeoutId = setTimeout(function() {
- target.push(item);
- cb(null, item * 2);
- }, delay);
-
- // allow to cancel "leftover" jobs upon error
- // return function, invoking of which will abort this job
- return clearTimeout.bind(null, timeoutId);
-}
-```
-
-More examples could be found in [test/test-parallel-array.js](test/test-parallel-array.js).
-
-#### Input Object
-
-Also it supports named jobs, listed via object.
-
-```javascript
-var parallel = require('asynckit/parallel')
- , assert = require('assert')
- ;
-
-var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 }
- , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 }
- , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ]
- , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ]
- , target = []
- , keys = []
- ;
-
-parallel(source, asyncJob, function(err, result)
-{
- assert.deepEqual(result, expectedResult);
- assert.deepEqual(target, expectedTarget);
- assert.deepEqual(keys, expectedKeys);
-});
-
-// supports full value, key, callback (shortcut) interface
-function asyncJob(item, key, cb)
-{
- // different delays (in ms) per item
- var delay = item * 25;
-
- // pretend different jobs take different time to finish
- // and not in consequential order
- var timeoutId = setTimeout(function() {
- keys.push(key);
- target.push(item);
- cb(null, item * 2);
- }, delay);
-
- // allow to cancel "leftover" jobs upon error
- // return function, invoking of which will abort this job
- return clearTimeout.bind(null, timeoutId);
-}
-```
-
-More examples could be found in [test/test-parallel-object.js](test/test-parallel-object.js).
-
-### Serial Jobs
-
-Runs iterator over provided array sequentially. Stores output in the `result` array,
-on the matching positions. In unlikely event of an error from one of the jobs,
-will not proceed to the rest of the items in the list
-and return error along with salvaged data to the main callback function.
-
-#### Input Array
-
-```javascript
-var serial = require('asynckit/serial')
- , assert = require('assert')
- ;
-
-var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
- , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
- , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ]
- , target = []
- ;
-
-serial(source, asyncJob, function(err, result)
-{
- assert.deepEqual(result, expectedResult);
- assert.deepEqual(target, expectedTarget);
-});
-
-// extended interface (item, key, callback)
-// also supported for arrays
-function asyncJob(item, key, cb)
-{
- target.push(key);
-
- // it will be automatically made async
- // even it iterator "returns" in the same event loop
- cb(null, item * 2);
-}
-```
-
-More examples could be found in [test/test-serial-array.js](test/test-serial-array.js).
-
-#### Input Object
-
-Also it supports named jobs, listed via object.
-
-```javascript
-var serial = require('asynckit').serial
- , assert = require('assert')
- ;
-
-var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
- , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
- , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ]
- , target = []
- ;
-
-var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 }
- , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 }
- , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
- , target = []
- ;
-
-
-serial(source, asyncJob, function(err, result)
-{
- assert.deepEqual(result, expectedResult);
- assert.deepEqual(target, expectedTarget);
-});
-
-// shortcut interface (item, callback)
-// works for object as well as for the arrays
-function asyncJob(item, cb)
-{
- target.push(item);
-
- // it will be automatically made async
- // even it iterator "returns" in the same event loop
- cb(null, item * 2);
-}
-```
-
-More examples could be found in [test/test-serial-object.js](test/test-serial-object.js).
-
-_Note: Since _object_ is an _unordered_ collection of properties,
-it may produce unexpected results with sequential iterations.
-Whenever order of the jobs' execution is important please use `serialOrdered` method._
-
-### Ordered Serial Iterations
-
-TBD
-
-For example [compare-property](compare-property) package.
-
-### Streaming interface
-
-TBD
-
-## Want to Know More?
-
-More examples can be found in [test folder](test/).
-
-Or open an [issue](https://github.com/alexindigo/asynckit/issues) with questions and/or suggestions.
-
-## License
-
-AsyncKit is licensed under the MIT license.
diff --git a/node_modules/asynckit/bench.js b/node_modules/asynckit/bench.js
deleted file mode 100644
index c612f1a..0000000
--- a/node_modules/asynckit/bench.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/* eslint no-console: "off" */
-
-var asynckit = require('./')
- , async = require('async')
- , assert = require('assert')
- , expected = 0
- ;
-
-var Benchmark = require('benchmark');
-var suite = new Benchmark.Suite;
-
-var source = [];
-for (var z = 1; z < 100; z++)
-{
- source.push(z);
- expected += z;
-}
-
-suite
-// add tests
-
-.add('async.map', function(deferred)
-{
- var total = 0;
-
- async.map(source,
- function(i, cb)
- {
- setImmediate(function()
- {
- total += i;
- cb(null, total);
- });
- },
- function(err, result)
- {
- assert.ifError(err);
- assert.equal(result[result.length - 1], expected);
- deferred.resolve();
- });
-}, {'defer': true})
-
-
-.add('asynckit.parallel', function(deferred)
-{
- var total = 0;
-
- asynckit.parallel(source,
- function(i, cb)
- {
- setImmediate(function()
- {
- total += i;
- cb(null, total);
- });
- },
- function(err, result)
- {
- assert.ifError(err);
- assert.equal(result[result.length - 1], expected);
- deferred.resolve();
- });
-}, {'defer': true})
-
-
-// add listeners
-.on('cycle', function(ev)
-{
- console.log(String(ev.target));
-})
-.on('complete', function()
-{
- console.log('Fastest is ' + this.filter('fastest').map('name'));
-})
-// run async
-.run({ 'async': true });
diff --git a/node_modules/asynckit/index.js b/node_modules/asynckit/index.js
deleted file mode 100644
index 455f945..0000000
--- a/node_modules/asynckit/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports =
-{
- parallel : require('./parallel.js'),
- serial : require('./serial.js'),
- serialOrdered : require('./serialOrdered.js')
-};
diff --git a/node_modules/asynckit/lib/abort.js b/node_modules/asynckit/lib/abort.js
deleted file mode 100644
index 114367e..0000000
--- a/node_modules/asynckit/lib/abort.js
+++ /dev/null
@@ -1,29 +0,0 @@
-// API
-module.exports = abort;
-
-/**
- * Aborts leftover active jobs
- *
- * @param {object} state - current state object
- */
-function abort(state)
-{
- Object.keys(state.jobs).forEach(clean.bind(state));
-
- // reset leftover jobs
- state.jobs = {};
-}
-
-/**
- * Cleans up leftover job by invoking abort function for the provided job id
- *
- * @this state
- * @param {string|number} key - job id to abort
- */
-function clean(key)
-{
- if (typeof this.jobs[key] == 'function')
- {
- this.jobs[key]();
- }
-}
diff --git a/node_modules/asynckit/lib/async.js b/node_modules/asynckit/lib/async.js
deleted file mode 100644
index 7f1288a..0000000
--- a/node_modules/asynckit/lib/async.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var defer = require('./defer.js');
-
-// API
-module.exports = async;
-
-/**
- * Runs provided callback asynchronously
- * even if callback itself is not
- *
- * @param {function} callback - callback to invoke
- * @returns {function} - augmented callback
- */
-function async(callback)
-{
- var isAsync = false;
-
- // check if async happened
- defer(function() { isAsync = true; });
-
- return function async_callback(err, result)
- {
- if (isAsync)
- {
- callback(err, result);
- }
- else
- {
- defer(function nextTick_callback()
- {
- callback(err, result);
- });
- }
- };
-}
diff --git a/node_modules/asynckit/lib/defer.js b/node_modules/asynckit/lib/defer.js
deleted file mode 100644
index b67110c..0000000
--- a/node_modules/asynckit/lib/defer.js
+++ /dev/null
@@ -1,26 +0,0 @@
-module.exports = defer;
-
-/**
- * Runs provided function on next iteration of the event loop
- *
- * @param {function} fn - function to run
- */
-function defer(fn)
-{
- var nextTick = typeof setImmediate == 'function'
- ? setImmediate
- : (
- typeof process == 'object' && typeof process.nextTick == 'function'
- ? process.nextTick
- : null
- );
-
- if (nextTick)
- {
- nextTick(fn);
- }
- else
- {
- setTimeout(fn, 0);
- }
-}
diff --git a/node_modules/asynckit/lib/iterate.js b/node_modules/asynckit/lib/iterate.js
deleted file mode 100644
index 5d2839a..0000000
--- a/node_modules/asynckit/lib/iterate.js
+++ /dev/null
@@ -1,75 +0,0 @@
-var async = require('./async.js')
- , abort = require('./abort.js')
- ;
-
-// API
-module.exports = iterate;
-
-/**
- * Iterates over each job object
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {object} state - current job status
- * @param {function} callback - invoked when all elements processed
- */
-function iterate(list, iterator, state, callback)
-{
- // store current index
- var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;
-
- state.jobs[key] = runJob(iterator, key, list[key], function(error, output)
- {
- // don't repeat yourself
- // skip secondary callbacks
- if (!(key in state.jobs))
- {
- return;
- }
-
- // clean up jobs
- delete state.jobs[key];
-
- if (error)
- {
- // don't process rest of the results
- // stop still active jobs
- // and reset the list
- abort(state);
- }
- else
- {
- state.results[key] = output;
- }
-
- // return salvaged results
- callback(error, state.results);
- });
-}
-
-/**
- * Runs iterator over provided job element
- *
- * @param {function} iterator - iterator to invoke
- * @param {string|number} key - key/index of the element in the list of jobs
- * @param {mixed} item - job description
- * @param {function} callback - invoked after iterator is done with the job
- * @returns {function|mixed} - job abort function or something else
- */
-function runJob(iterator, key, item, callback)
-{
- var aborter;
-
- // allow shortcut if iterator expects only two arguments
- if (iterator.length == 2)
- {
- aborter = iterator(item, async(callback));
- }
- // otherwise go with full three arguments
- else
- {
- aborter = iterator(item, key, async(callback));
- }
-
- return aborter;
-}
diff --git a/node_modules/asynckit/lib/readable_asynckit.js b/node_modules/asynckit/lib/readable_asynckit.js
deleted file mode 100644
index 78ad240..0000000
--- a/node_modules/asynckit/lib/readable_asynckit.js
+++ /dev/null
@@ -1,91 +0,0 @@
-var streamify = require('./streamify.js')
- , defer = require('./defer.js')
- ;
-
-// API
-module.exports = ReadableAsyncKit;
-
-/**
- * Base constructor for all streams
- * used to hold properties/methods
- */
-function ReadableAsyncKit()
-{
- ReadableAsyncKit.super_.apply(this, arguments);
-
- // list of active jobs
- this.jobs = {};
-
- // add stream methods
- this.destroy = destroy;
- this._start = _start;
- this._read = _read;
-}
-
-/**
- * Destroys readable stream,
- * by aborting outstanding jobs
- *
- * @returns {void}
- */
-function destroy()
-{
- if (this.destroyed)
- {
- return;
- }
-
- this.destroyed = true;
-
- if (typeof this.terminator == 'function')
- {
- this.terminator();
- }
-}
-
-/**
- * Starts provided jobs in async manner
- *
- * @private
- */
-function _start()
-{
- // first argument – runner function
- var runner = arguments[0]
- // take away first argument
- , args = Array.prototype.slice.call(arguments, 1)
- // second argument - input data
- , input = args[0]
- // last argument - result callback
- , endCb = streamify.callback.call(this, args[args.length - 1])
- ;
-
- args[args.length - 1] = endCb;
- // third argument - iterator
- args[1] = streamify.iterator.call(this, args[1]);
-
- // allow time for proper setup
- defer(function()
- {
- if (!this.destroyed)
- {
- this.terminator = runner.apply(null, args);
- }
- else
- {
- endCb(null, Array.isArray(input) ? [] : {});
- }
- }.bind(this));
-}
-
-
-/**
- * Implement _read to comply with Readable streams
- * Doesn't really make sense for flowing object mode
- *
- * @private
- */
-function _read()
-{
-
-}
diff --git a/node_modules/asynckit/lib/readable_parallel.js b/node_modules/asynckit/lib/readable_parallel.js
deleted file mode 100644
index 5d2929f..0000000
--- a/node_modules/asynckit/lib/readable_parallel.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var parallel = require('../parallel.js');
-
-// API
-module.exports = ReadableParallel;
-
-/**
- * Streaming wrapper to `asynckit.parallel`
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {function} callback - invoked when all elements processed
- * @returns {stream.Readable#}
- */
-function ReadableParallel(list, iterator, callback)
-{
- if (!(this instanceof ReadableParallel))
- {
- return new ReadableParallel(list, iterator, callback);
- }
-
- // turn on object mode
- ReadableParallel.super_.call(this, {objectMode: true});
-
- this._start(parallel, list, iterator, callback);
-}
diff --git a/node_modules/asynckit/lib/readable_serial.js b/node_modules/asynckit/lib/readable_serial.js
deleted file mode 100644
index 7822698..0000000
--- a/node_modules/asynckit/lib/readable_serial.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var serial = require('../serial.js');
-
-// API
-module.exports = ReadableSerial;
-
-/**
- * Streaming wrapper to `asynckit.serial`
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {function} callback - invoked when all elements processed
- * @returns {stream.Readable#}
- */
-function ReadableSerial(list, iterator, callback)
-{
- if (!(this instanceof ReadableSerial))
- {
- return new ReadableSerial(list, iterator, callback);
- }
-
- // turn on object mode
- ReadableSerial.super_.call(this, {objectMode: true});
-
- this._start(serial, list, iterator, callback);
-}
diff --git a/node_modules/asynckit/lib/readable_serial_ordered.js b/node_modules/asynckit/lib/readable_serial_ordered.js
deleted file mode 100644
index 3de89c4..0000000
--- a/node_modules/asynckit/lib/readable_serial_ordered.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var serialOrdered = require('../serialOrdered.js');
-
-// API
-module.exports = ReadableSerialOrdered;
-// expose sort helpers
-module.exports.ascending = serialOrdered.ascending;
-module.exports.descending = serialOrdered.descending;
-
-/**
- * Streaming wrapper to `asynckit.serialOrdered`
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {function} sortMethod - custom sort function
- * @param {function} callback - invoked when all elements processed
- * @returns {stream.Readable#}
- */
-function ReadableSerialOrdered(list, iterator, sortMethod, callback)
-{
- if (!(this instanceof ReadableSerialOrdered))
- {
- return new ReadableSerialOrdered(list, iterator, sortMethod, callback);
- }
-
- // turn on object mode
- ReadableSerialOrdered.super_.call(this, {objectMode: true});
-
- this._start(serialOrdered, list, iterator, sortMethod, callback);
-}
diff --git a/node_modules/asynckit/lib/state.js b/node_modules/asynckit/lib/state.js
deleted file mode 100644
index cbea7ad..0000000
--- a/node_modules/asynckit/lib/state.js
+++ /dev/null
@@ -1,37 +0,0 @@
-// API
-module.exports = state;
-
-/**
- * Creates initial state object
- * for iteration over list
- *
- * @param {array|object} list - list to iterate over
- * @param {function|null} sortMethod - function to use for keys sort,
- * or `null` to keep them as is
- * @returns {object} - initial state object
- */
-function state(list, sortMethod)
-{
- var isNamedList = !Array.isArray(list)
- , initState =
- {
- index : 0,
- keyedList: isNamedList || sortMethod ? Object.keys(list) : null,
- jobs : {},
- results : isNamedList ? {} : [],
- size : isNamedList ? Object.keys(list).length : list.length
- }
- ;
-
- if (sortMethod)
- {
- // sort array keys based on it's values
- // sort object's keys just on own merit
- initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)
- {
- return sortMethod(list[a], list[b]);
- });
- }
-
- return initState;
-}
diff --git a/node_modules/asynckit/lib/streamify.js b/node_modules/asynckit/lib/streamify.js
deleted file mode 100644
index f56a1c9..0000000
--- a/node_modules/asynckit/lib/streamify.js
+++ /dev/null
@@ -1,141 +0,0 @@
-var async = require('./async.js');
-
-// API
-module.exports = {
- iterator: wrapIterator,
- callback: wrapCallback
-};
-
-/**
- * Wraps iterators with long signature
- *
- * @this ReadableAsyncKit#
- * @param {function} iterator - function to wrap
- * @returns {function} - wrapped function
- */
-function wrapIterator(iterator)
-{
- var stream = this;
-
- return function(item, key, cb)
- {
- var aborter
- , wrappedCb = async(wrapIteratorCallback.call(stream, cb, key))
- ;
-
- stream.jobs[key] = wrappedCb;
-
- // it's either shortcut (item, cb)
- if (iterator.length == 2)
- {
- aborter = iterator(item, wrappedCb);
- }
- // or long format (item, key, cb)
- else
- {
- aborter = iterator(item, key, wrappedCb);
- }
-
- return aborter;
- };
-}
-
-/**
- * Wraps provided callback function
- * allowing to execute snitch function before
- * real callback
- *
- * @this ReadableAsyncKit#
- * @param {function} callback - function to wrap
- * @returns {function} - wrapped function
- */
-function wrapCallback(callback)
-{
- var stream = this;
-
- var wrapped = function(error, result)
- {
- return finisher.call(stream, error, result, callback);
- };
-
- return wrapped;
-}
-
-/**
- * Wraps provided iterator callback function
- * makes sure snitch only called once,
- * but passes secondary calls to the original callback
- *
- * @this ReadableAsyncKit#
- * @param {function} callback - callback to wrap
- * @param {number|string} key - iteration key
- * @returns {function} wrapped callback
- */
-function wrapIteratorCallback(callback, key)
-{
- var stream = this;
-
- return function(error, output)
- {
- // don't repeat yourself
- if (!(key in stream.jobs))
- {
- callback(error, output);
- return;
- }
-
- // clean up jobs
- delete stream.jobs[key];
-
- return streamer.call(stream, error, {key: key, value: output}, callback);
- };
-}
-
-/**
- * Stream wrapper for iterator callback
- *
- * @this ReadableAsyncKit#
- * @param {mixed} error - error response
- * @param {mixed} output - iterator output
- * @param {function} callback - callback that expects iterator results
- */
-function streamer(error, output, callback)
-{
- if (error && !this.error)
- {
- this.error = error;
- this.pause();
- this.emit('error', error);
- // send back value only, as expected
- callback(error, output && output.value);
- return;
- }
-
- // stream stuff
- this.push(output);
-
- // back to original track
- // send back value only, as expected
- callback(error, output && output.value);
-}
-
-/**
- * Stream wrapper for finishing callback
- *
- * @this ReadableAsyncKit#
- * @param {mixed} error - error response
- * @param {mixed} output - iterator output
- * @param {function} callback - callback that expects final results
- */
-function finisher(error, output, callback)
-{
- // signal end of the stream
- // only for successfully finished streams
- if (!error)
- {
- this.push(null);
- }
-
- // back to original track
- callback(error, output);
-}
diff --git a/node_modules/asynckit/lib/terminator.js b/node_modules/asynckit/lib/terminator.js
deleted file mode 100644
index d6eb992..0000000
--- a/node_modules/asynckit/lib/terminator.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var abort = require('./abort.js')
- , async = require('./async.js')
- ;
-
-// API
-module.exports = terminator;
-
-/**
- * Terminates jobs in the attached state context
- *
- * @this AsyncKitState#
- * @param {function} callback - final callback to invoke after termination
- */
-function terminator(callback)
-{
- if (!Object.keys(this.jobs).length)
- {
- return;
- }
-
- // fast forward iteration index
- this.index = this.size;
-
- // abort jobs
- abort(this);
-
- // send back results we have so far
- async(callback)(null, this.results);
-}
diff --git a/node_modules/asynckit/package.json b/node_modules/asynckit/package.json
deleted file mode 100644
index 00fa2d1..0000000
--- a/node_modules/asynckit/package.json
+++ /dev/null
@@ -1,126 +0,0 @@
-{
- "_args": [
- [
- {
- "raw": "asynckit@^0.4.0",
- "scope": null,
- "escapedName": "asynckit",
- "name": "asynckit",
- "rawSpec": "^0.4.0",
- "spec": ">=0.4.0 <0.5.0",
- "type": "range"
- },
- "C:\\Users\\Workstation\\desktop\\GitHub Projects\\kanban\\node_modules\\form-data"
- ]
- ],
- "_from": "asynckit@>=0.4.0 <0.5.0",
- "_id": "asynckit@0.4.0",
- "_inCache": true,
- "_location": "/asynckit",
- "_nodeVersion": "0.12.11",
- "_npmOperationalInternal": {
- "host": "packages-16-east.internal.npmjs.com",
- "tmp": "tmp/asynckit-0.4.0.tgz_1465928940169_0.8008207362145185"
- },
- "_npmUser": {
- "name": "alexindigo",
- "email": "iam@alexindigo.com"
- },
- "_npmVersion": "2.15.6",
- "_phantomChildren": {},
- "_requested": {
- "raw": "asynckit@^0.4.0",
- "scope": null,
- "escapedName": "asynckit",
- "name": "asynckit",
- "rawSpec": "^0.4.0",
- "spec": ">=0.4.0 <0.5.0",
- "type": "range"
- },
- "_requiredBy": [
- "/form-data"
- ],
- "_resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "_shasum": "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79",
- "_shrinkwrap": null,
- "_spec": "asynckit@^0.4.0",
- "_where": "C:\\Users\\Workstation\\desktop\\GitHub Projects\\kanban\\node_modules\\form-data",
- "author": {
- "name": "Alex Indigo",
- "email": "iam@alexindigo.com"
- },
- "bugs": {
- "url": "https://github.com/alexindigo/asynckit/issues"
- },
- "dependencies": {},
- "description": "Minimal async jobs utility library, with streams support",
- "devDependencies": {
- "browserify": "^13.0.0",
- "browserify-istanbul": "^2.0.0",
- "coveralls": "^2.11.9",
- "eslint": "^2.9.0",
- "istanbul": "^0.4.3",
- "obake": "^0.1.2",
- "phantomjs-prebuilt": "^2.1.7",
- "pre-commit": "^1.1.3",
- "reamde": "^1.1.0",
- "rimraf": "^2.5.2",
- "size-table": "^0.2.0",
- "tap-spec": "^4.1.1",
- "tape": "^4.5.1"
- },
- "directories": {},
- "dist": {
- "shasum": "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79",
- "tarball": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
- },
- "gitHead": "583a75ed4fe41761b66416bb6e703ebb1f8963bf",
- "homepage": "https://github.com/alexindigo/asynckit#readme",
- "keywords": [
- "async",
- "jobs",
- "parallel",
- "serial",
- "iterator",
- "array",
- "object",
- "stream",
- "destroy",
- "terminate",
- "abort"
- ],
- "license": "MIT",
- "main": "index.js",
- "maintainers": [
- {
- "name": "alexindigo",
- "email": "iam@alexindigo.com"
- }
- ],
- "name": "asynckit",
- "optionalDependencies": {},
- "pre-commit": [
- "clean",
- "lint",
- "test",
- "browser",
- "report",
- "size"
- ],
- "readme": "ERROR: No README data found!",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/alexindigo/asynckit.git"
- },
- "scripts": {
- "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec",
- "clean": "rimraf coverage",
- "debug": "tape test/test-*.js",
- "lint": "eslint *.js lib/*.js test/*.js",
- "report": "istanbul report",
- "size": "browserify index.js | size-table asynckit",
- "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec",
- "win-test": "tape test/test-*.js"
- },
- "version": "0.4.0"
-}
diff --git a/node_modules/asynckit/parallel.js b/node_modules/asynckit/parallel.js
deleted file mode 100644
index 3c50344..0000000
--- a/node_modules/asynckit/parallel.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var iterate = require('./lib/iterate.js')
- , initState = require('./lib/state.js')
- , terminator = require('./lib/terminator.js')
- ;
-
-// Public API
-module.exports = parallel;
-
-/**
- * Runs iterator over provided array elements in parallel
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {function} callback - invoked when all elements processed
- * @returns {function} - jobs terminator
- */
-function parallel(list, iterator, callback)
-{
- var state = initState(list);
-
- while (state.index < (state['keyedList'] || list).length)
- {
- iterate(list, iterator, state, function(error, result)
- {
- if (error)
- {
- callback(error, result);
- return;
- }
-
- // looks like it's the last one
- if (Object.keys(state.jobs).length === 0)
- {
- callback(null, state.results);
- return;
- }
- });
-
- state.index++;
- }
-
- return terminator.bind(state, callback);
-}
diff --git a/node_modules/asynckit/serial.js b/node_modules/asynckit/serial.js
deleted file mode 100644
index 6cd949a..0000000
--- a/node_modules/asynckit/serial.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var serialOrdered = require('./serialOrdered.js');
-
-// Public API
-module.exports = serial;
-
-/**
- * Runs iterator over provided array elements in series
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {function} callback - invoked when all elements processed
- * @returns {function} - jobs terminator
- */
-function serial(list, iterator, callback)
-{
- return serialOrdered(list, iterator, null, callback);
-}
diff --git a/node_modules/asynckit/serialOrdered.js b/node_modules/asynckit/serialOrdered.js
deleted file mode 100644
index 607eafe..0000000
--- a/node_modules/asynckit/serialOrdered.js
+++ /dev/null
@@ -1,75 +0,0 @@
-var iterate = require('./lib/iterate.js')
- , initState = require('./lib/state.js')
- , terminator = require('./lib/terminator.js')
- ;
-
-// Public API
-module.exports = serialOrdered;
-// sorting helpers
-module.exports.ascending = ascending;
-module.exports.descending = descending;
-
-/**
- * Runs iterator over provided sorted array elements in series
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {function} sortMethod - custom sort function
- * @param {function} callback - invoked when all elements processed
- * @returns {function} - jobs terminator
- */
-function serialOrdered(list, iterator, sortMethod, callback)
-{
- var state = initState(list, sortMethod);
-
- iterate(list, iterator, state, function iteratorHandler(error, result)
- {
- if (error)
- {
- callback(error, result);
- return;
- }
-
- state.index++;
-
- // are we there yet?
- if (state.index < (state['keyedList'] || list).length)
- {
- iterate(list, iterator, state, iteratorHandler);
- return;
- }
-
- // done here
- callback(null, state.results);
- });
-
- return terminator.bind(state, callback);
-}
-
-/*
- * -- Sort methods
- */
-
-/**
- * sort helper to sort array elements in ascending order
- *
- * @param {mixed} a - an item to compare
- * @param {mixed} b - an item to compare
- * @returns {number} - comparison result
- */
-function ascending(a, b)
-{
- return a < b ? -1 : a > b ? 1 : 0;
-}
-
-/**
- * sort helper to sort array elements in descending order
- *
- * @param {mixed} a - an item to compare
- * @param {mixed} b - an item to compare
- * @returns {number} - comparison result
- */
-function descending(a, b)
-{
- return -1 * ascending(a, b);
-}
diff --git a/node_modules/asynckit/stream.js b/node_modules/asynckit/stream.js
deleted file mode 100644
index d43465f..0000000
--- a/node_modules/asynckit/stream.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var inherits = require('util').inherits
- , Readable = require('stream').Readable
- , ReadableAsyncKit = require('./lib/readable_asynckit.js')
- , ReadableParallel = require('./lib/readable_parallel.js')
- , ReadableSerial = require('./lib/readable_serial.js')
- , ReadableSerialOrdered = require('./lib/readable_serial_ordered.js')
- ;
-
-// API
-module.exports =
-{
- parallel : ReadableParallel,
- serial : ReadableSerial,
- serialOrdered : ReadableSerialOrdered,
-};
-
-inherits(ReadableAsyncKit, Readable);
-
-inherits(ReadableParallel, ReadableAsyncKit);
-inherits(ReadableSerial, ReadableAsyncKit);
-inherits(ReadableSerialOrdered, ReadableAsyncKit);
diff --git a/node_modules/aws-sign2/LICENSE b/node_modules/aws-sign2/LICENSE
deleted file mode 100644
index a4a9aee..0000000
--- a/node_modules/aws-sign2/LICENSE
+++ /dev/null
@@ -1,55 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/node_modules/aws-sign2/README.md b/node_modules/aws-sign2/README.md
deleted file mode 100644
index 763564e..0000000
--- a/node_modules/aws-sign2/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-aws-sign
-========
-
-AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.
diff --git a/node_modules/aws-sign2/index.js b/node_modules/aws-sign2/index.js
deleted file mode 100644
index fb35f6d..0000000
--- a/node_modules/aws-sign2/index.js
+++ /dev/null
@@ -1,212 +0,0 @@
-
-/*!
- * Copyright 2010 LearnBoost
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Module dependencies.
- */
-
-var crypto = require('crypto')
- , parse = require('url').parse
- ;
-
-/**
- * Valid keys.
- */
-
-var keys =
- [ 'acl'
- , 'location'
- , 'logging'
- , 'notification'
- , 'partNumber'
- , 'policy'
- , 'requestPayment'
- , 'torrent'
- , 'uploadId'
- , 'uploads'
- , 'versionId'
- , 'versioning'
- , 'versions'
- , 'website'
- ]
-
-/**
- * Return an "Authorization" header value with the given `options`
- * in the form of "AWS :"
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function authorization (options) {
- return 'AWS ' + options.key + ':' + sign(options)
-}
-
-module.exports = authorization
-module.exports.authorization = authorization
-
-/**
- * Simple HMAC-SHA1 Wrapper
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function hmacSha1 (options) {
- return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64')
-}
-
-module.exports.hmacSha1 = hmacSha1
-
-/**
- * Create a base64 sha1 HMAC for `options`.
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function sign (options) {
- options.message = stringToSign(options)
- return hmacSha1(options)
-}
-module.exports.sign = sign
-
-/**
- * Create a base64 sha1 HMAC for `options`.
- *
- * Specifically to be used with S3 presigned URLs
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function signQuery (options) {
- options.message = queryStringToSign(options)
- return hmacSha1(options)
-}
-module.exports.signQuery= signQuery
-
-/**
- * Return a string for sign() with the given `options`.
- *
- * Spec:
- *
- * \n
- * \n
- * \n
- * \n
- * [headers\n]
- *
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function stringToSign (options) {
- var headers = options.amazonHeaders || ''
- if (headers) headers += '\n'
- var r =
- [ options.verb
- , options.md5
- , options.contentType
- , options.date ? options.date.toUTCString() : ''
- , headers + options.resource
- ]
- return r.join('\n')
-}
-module.exports.stringToSign = stringToSign
-
-/**
- * Return a string for sign() with the given `options`, but is meant exclusively
- * for S3 presigned URLs
- *
- * Spec:
- *
- * \n
- *
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function queryStringToSign (options){
- return 'GET\n\n\n' + options.date + '\n' + options.resource
-}
-module.exports.queryStringToSign = queryStringToSign
-
-/**
- * Perform the following:
- *
- * - ignore non-amazon headers
- * - lowercase fields
- * - sort lexicographically
- * - trim whitespace between ":"
- * - join with newline
- *
- * @param {Object} headers
- * @return {String}
- * @api private
- */
-
-function canonicalizeHeaders (headers) {
- var buf = []
- , fields = Object.keys(headers)
- ;
- for (var i = 0, len = fields.length; i < len; ++i) {
- var field = fields[i]
- , val = headers[field]
- , field = field.toLowerCase()
- ;
- if (0 !== field.indexOf('x-amz')) continue
- buf.push(field + ':' + val)
- }
- return buf.sort().join('\n')
-}
-module.exports.canonicalizeHeaders = canonicalizeHeaders
-
-/**
- * Perform the following:
- *
- * - ignore non sub-resources
- * - sort lexicographically
- *
- * @param {String} resource
- * @return {String}
- * @api private
- */
-
-function canonicalizeResource (resource) {
- var url = parse(resource, true)
- , path = url.pathname
- , buf = []
- ;
-
- Object.keys(url.query).forEach(function(key){
- if (!~keys.indexOf(key)) return
- var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key])
- buf.push(key + val)
- })
-
- return path + (buf.length ? '?' + buf.sort().join('&') : '')
-}
-module.exports.canonicalizeResource = canonicalizeResource
diff --git a/node_modules/aws-sign2/package.json b/node_modules/aws-sign2/package.json
deleted file mode 100644
index b2fc8f5..0000000
--- a/node_modules/aws-sign2/package.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
- "_args": [
- [
- {
- "raw": "aws-sign2@~0.7.0",
- "scope": null,
- "escapedName": "aws-sign2",
- "name": "aws-sign2",
- "rawSpec": "~0.7.0",
- "spec": ">=0.7.0 <0.8.0",
- "type": "range"
- },
- "C:\\Users\\Workstation\\desktop\\GitHub Projects\\kanban\\node_modules\\request"
- ]
- ],
- "_from": "aws-sign2@>=0.7.0 <0.8.0",
- "_id": "aws-sign2@0.7.0",
- "_inCache": true,
- "_location": "/aws-sign2",
- "_nodeVersion": "6.9.2",
- "_npmOperationalInternal": {
- "host": "packages-18-east.internal.npmjs.com",
- "tmp": "tmp/aws-sign2-0.7.0.tgz_1492024128801_0.28444291022606194"
- },
- "_npmUser": {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- },
- "_npmVersion": "3.10.9",
- "_phantomChildren": {},
- "_requested": {
- "raw": "aws-sign2@~0.7.0",
- "scope": null,
- "escapedName": "aws-sign2",
- "name": "aws-sign2",
- "rawSpec": "~0.7.0",
- "spec": ">=0.7.0 <0.8.0",
- "type": "range"
- },
- "_requiredBy": [
- "/request"
- ],
- "_resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "_shasum": "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8",
- "_shrinkwrap": null,
- "_spec": "aws-sign2@~0.7.0",
- "_where": "C:\\Users\\Workstation\\desktop\\GitHub Projects\\kanban\\node_modules\\request",
- "author": {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com",
- "url": "http://www.futurealoof.com"
- },
- "bugs": {
- "url": "https://github.com/mikeal/aws-sign/issues"
- },
- "dependencies": {},
- "description": "AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.",
- "devDependencies": {},
- "directories": {},
- "dist": {
- "shasum": "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8",
- "tarball": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz"
- },
- "engines": {
- "node": "*"
- },
- "gitHead": "a0cdf4b61f80ca669cd1ed8482f978d908f0dd2b",
- "homepage": "https://github.com/mikeal/aws-sign#readme",
- "license": "Apache-2.0",
- "main": "index.js",
- "maintainers": [
- {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- }
- ],
- "name": "aws-sign2",
- "optionalDependencies": {},
- "readme": "ERROR: No README data found!",
- "repository": {
- "url": "git+https://github.com/mikeal/aws-sign.git"
- },
- "scripts": {},
- "version": "0.7.0"
-}
diff --git a/node_modules/aws4/.npmignore b/node_modules/aws4/.npmignore
deleted file mode 100644
index 6c6ade6..0000000
--- a/node_modules/aws4/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-test
-examples
-example.js
-browser
diff --git a/node_modules/aws4/.tern-port b/node_modules/aws4/.tern-port
deleted file mode 100644
index 7fd1b52..0000000
--- a/node_modules/aws4/.tern-port
+++ /dev/null
@@ -1 +0,0 @@
-62638
\ No newline at end of file
diff --git a/node_modules/aws4/.travis.yml b/node_modules/aws4/.travis.yml
deleted file mode 100644
index 61d0634..0000000
--- a/node_modules/aws4/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
- - "0.10"
- - "0.12"
- - "4.2"
diff --git a/node_modules/aws4/LICENSE b/node_modules/aws4/LICENSE
deleted file mode 100644
index 4f321e5..0000000
--- a/node_modules/aws4/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright 2013 Michael Hart (michael.hart.au@gmail.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/node_modules/aws4/README.md b/node_modules/aws4/README.md
deleted file mode 100644
index 6b002d0..0000000
--- a/node_modules/aws4/README.md
+++ /dev/null
@@ -1,523 +0,0 @@
-aws4
-----
-
-[![Build Status](https://secure.travis-ci.org/mhart/aws4.png?branch=master)](http://travis-ci.org/mhart/aws4)
-
-A small utility to sign vanilla node.js http(s) request options using Amazon's
-[AWS Signature Version 4](http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html).
-
-Can also be used [in the browser](./browser).
-
-This signature is supported by nearly all Amazon services, including
-[S3](http://docs.aws.amazon.com/AmazonS3/latest/API/),
-[EC2](http://docs.aws.amazon.com/AWSEC2/latest/APIReference/),
-[DynamoDB](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/API.html),
-[Kinesis](http://docs.aws.amazon.com/kinesis/latest/APIReference/),
-[Lambda](http://docs.aws.amazon.com/lambda/latest/dg/API_Reference.html),
-[SQS](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/),
-[SNS](http://docs.aws.amazon.com/sns/latest/api/),
-[IAM](http://docs.aws.amazon.com/IAM/latest/APIReference/),
-[STS](http://docs.aws.amazon.com/STS/latest/APIReference/),
-[RDS](http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/),
-[CloudWatch](http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/),
-[CloudWatch Logs](http://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/),
-[CodeDeploy](http://docs.aws.amazon.com/codedeploy/latest/APIReference/),
-[CloudFront](http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/),
-[CloudTrail](http://docs.aws.amazon.com/awscloudtrail/latest/APIReference/),
-[ElastiCache](http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/),
-[EMR](http://docs.aws.amazon.com/ElasticMapReduce/latest/API/),
-[Glacier](http://docs.aws.amazon.com/amazonglacier/latest/dev/amazon-glacier-api.html),
-[CloudSearch](http://docs.aws.amazon.com/cloudsearch/latest/developerguide/APIReq.html),
-[Elastic Load Balancing](http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/),
-[Elastic Transcoder](http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/api-reference.html),
-[CloudFormation](http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/),
-[Elastic Beanstalk](http://docs.aws.amazon.com/elasticbeanstalk/latest/api/),
-[Storage Gateway](http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewayAPI.html),
-[Data Pipeline](http://docs.aws.amazon.com/datapipeline/latest/APIReference/),
-[Direct Connect](http://docs.aws.amazon.com/directconnect/latest/APIReference/),
-[Redshift](http://docs.aws.amazon.com/redshift/latest/APIReference/),
-[OpsWorks](http://docs.aws.amazon.com/opsworks/latest/APIReference/),
-[SES](http://docs.aws.amazon.com/ses/latest/APIReference/),
-[SWF](http://docs.aws.amazon.com/amazonswf/latest/apireference/),
-[AutoScaling](http://docs.aws.amazon.com/AutoScaling/latest/APIReference/),
-[Mobile Analytics](http://docs.aws.amazon.com/mobileanalytics/latest/ug/server-reference.html),
-[Cognito Identity](http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/),
-[Cognito Sync](http://docs.aws.amazon.com/cognitosync/latest/APIReference/),
-[Container Service](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/),
-[AppStream](http://docs.aws.amazon.com/appstream/latest/developerguide/appstream-api-rest.html),
-[Key Management Service](http://docs.aws.amazon.com/kms/latest/APIReference/),
-[Config](http://docs.aws.amazon.com/config/latest/APIReference/),
-[CloudHSM](http://docs.aws.amazon.com/cloudhsm/latest/dg/api-ref.html),
-[Route53](http://docs.aws.amazon.com/Route53/latest/APIReference/requests-rest.html) and
-[Route53 Domains](http://docs.aws.amazon.com/Route53/latest/APIReference/requests-rpc.html).
-
-Indeed, the only AWS services that *don't* support v4 as of 2014-12-30 are
-[Import/Export](http://docs.aws.amazon.com/AWSImportExport/latest/DG/api-reference.html) and
-[SimpleDB](http://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/SDB_API.html)
-(they only support [AWS Signature Version 2](https://github.com/mhart/aws2)).
-
-It also provides defaults for a number of core AWS headers and
-request parameters, making it very easy to query AWS services, or
-build out a fully-featured AWS library.
-
-Example
--------
-
-```javascript
-var http = require('http'),
- https = require('https'),
- aws4 = require('aws4')
-
-// given an options object you could pass to http.request
-var opts = {host: 'sqs.us-east-1.amazonaws.com', path: '/?Action=ListQueues'}
-
-// alternatively (as aws4 can infer the host):
-opts = {service: 'sqs', region: 'us-east-1', path: '/?Action=ListQueues'}
-
-// alternatively (as us-east-1 is default):
-opts = {service: 'sqs', path: '/?Action=ListQueues'}
-
-aws4.sign(opts) // assumes AWS credentials are available in process.env
-
-console.log(opts)
-/*
-{
- host: 'sqs.us-east-1.amazonaws.com',
- path: '/?Action=ListQueues',
- headers: {
- Host: 'sqs.us-east-1.amazonaws.com',
- 'X-Amz-Date': '20121226T061030Z',
- Authorization: 'AWS4-HMAC-SHA256 Credential=ABCDEF/20121226/us-east-1/sqs/aws4_request, ...'
- }
-}
-*/
-
-// we can now use this to query AWS using the standard node.js http API
-http.request(opts, function(res) { res.pipe(process.stdout) }).end()
-/*
-
-