diff --git a/build.js b/build.js
index 38aae7b9d..70dc46ed5 100755
--- a/build.js
+++ b/build.js
@@ -124,7 +124,7 @@
'memoize': [],
'merge': ['forOwn', 'isArray', 'isPlainObject'],
'min': ['forEach', 'isArray', 'isString'],
- 'mixin': ['forEach', 'functions'],
+ 'mixin': ['filter', 'forEach', 'functions'],
'noConflict': [],
'object': [],
'omit': ['forIn', 'indexOf'],
@@ -1166,6 +1166,15 @@
' }'
].join('\n'));
+ // replace `_.chain`
+ source = source.replace(/^( *)function chain[\s\S]+?\n\1}/m, [
+ ' function chain(value) {',
+ ' value = new lodash(value);',
+ ' value.__chain__ = true;',
+ ' return value;',
+ ' }'
+ ].join('\n'));
+
// replace `_.defaults`
source = source.replace(/^( *)var defaults *= *createIterator[\s\S]+?\);/m, [
' function defaults(object) {',
@@ -1366,6 +1375,28 @@
' }'
].join('\n'));
+ // replace `wrapperChain`
+ source = source.replace(/^( *)function wrapperChain[\s\S]+?\n\1}/m, [
+ ' function wrapperChain() {',
+ ' this.__chain__ = true;',
+ ' return this;',
+ ' }'
+ ].join('\n'));
+
+ // add `__chain__` checks to `_.mixin` and Array function wrappers
+ source = source.replace(/^( *)forEach\([\s\S]+?\n\1}.+/gm, function(match) {
+ return match.replace(/^( *)return new lodash\(([^)]+)\).+/m, function(submatch, indent, varName) {
+ return indent + [
+ 'if (this.__chain__) {',
+ ' varName = new lodash(varName);',
+ ' varName.__chain__ = true;',
+ '}',
+ 'return varName;'
+ ].join('\n' + indent)
+ .replace(/varName/g, varName);
+ });
+ });
+
// remove unneeded template related variables
source = removeVar(source, 'reComplexDelimiter');
source = removeVar(source, 'reEmptyStringLeading');
@@ -1382,6 +1413,14 @@
// remove conditional `charCodeCallback` use from `_.max` and `_.min`
source = source.replace(/!callback *&& *isString\(collection\)[\s\S]+?: */g, '');
+ // remove `lodash.prototype.toString` and `lodash.prototype.valueOf` assignments
+ source = source.replace(/ *lodash\.prototype\.(?:toString|valueOf) *=.+\n/g, '');
+
+ // remove `lodash.prototype` batch method assignments
+ source = source
+ .replace(/(?:\s*\/\/.*)*\n( *)forEach\(\['first'[\s\S]+?\n\1}.+/, '')
+ .replace(/(?:\s*\/\/.*)*\n( *)forEach\(filter[\s\S]+?lodash\.[\s\S]+?\n\1}.+/, '');
+
// remove unused features from `createBound`
if (buildMethods.indexOf('partial') == -1) {
source = source.replace(matchFunction(source, 'createBound'), function(match) {
diff --git a/build/pre-compile.js b/build/pre-compile.js
index 2d56e4c6d..1eb78633b 100644
--- a/build/pre-compile.js
+++ b/build/pre-compile.js
@@ -59,7 +59,6 @@
/** Used to protect the specified properties from getting minified */
var propWhitelist = [
'_',
- '__chain__',
'__wrapped__',
'after',
'all',
@@ -190,6 +189,9 @@
'wrap',
'zip',
+ // property used by the `lodash underscore` build
+ '__chain__',
+
// properties used by underscore.js
'_chain',
'_wrapped'
diff --git a/doc/README.md b/doc/README.md
index eb0243679..911b9f85c 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -39,7 +39,8 @@
* [`_.chain`](#_chainvalue)
* [`_.tap`](#_tapvalue-interceptor)
* [`_.prototype.chain`](#_prototypechain)
-* [`_.prototype.value`](#_prototypevalue)
+* [`_.prototype.toString`](#_prototypetostring)
+* [`_.prototype.valueOf`](#_prototypevalueof)
@@ -697,7 +698,7 @@ The `lodash` function.
### `_.chain(value)`
-# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L4009 "View in source") [Ⓣ][1]
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L4005 "View in source") [Ⓣ][1]
Wraps the value in a `lodash` wrapper object.
@@ -731,7 +732,7 @@ var youngest = _.chain(stooges)
### `_.tap(value, interceptor)`
-# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L4036 "View in source") [Ⓣ][1]
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L4030 "View in source") [Ⓣ][1]
Invokes `interceptor` with the `value` as the first argument, and then returns `value`. The purpose of this method is to "tap into" a method chain, in order to perform operations on intermediate results within the chain.
@@ -761,9 +762,9 @@ _.chain([1, 2, 3, 200])
### `_.prototype.chain()`
-# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L4054 "View in source") [Ⓣ][1]
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L4052 "View in source") [Ⓣ][1]
-Enables method chaining on the wrapper object.
+This function returns the wrapper object. Note: This function is defined to ensure the existing wrapper object is returned, instead of creating a new wrapper object like the `_.chain` method does.
#### Returns
*(Mixed)*: Returns the wrapper object.
@@ -781,8 +782,29 @@ _([1, 2, 3]).value();
-### `_.prototype.value()`
-# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L4071 "View in source") [Ⓣ][1]
+### `_.prototype.toString()`
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L4068 "View in source") [Ⓣ][1]
+
+Produces the `toString` result of the wrapped value.
+
+#### Returns
+*(String)*: Returns the string result.
+
+#### Example
+```js
+_([1, 2, 3]).toString();
+// => '1,2,3'
+```
+
+* * *
+
+
+
+
+
+
+### `_.prototype.valueOf()`
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L4084 "View in source") [Ⓣ][1]
Extracts the wrapped value.
@@ -2777,7 +2799,7 @@ _('curly').capitalize();
### `_.noConflict()`
-# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3666 "View in source") [Ⓣ][1]
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3662 "View in source") [Ⓣ][1]
Reverts the '_' variable to its previous value and returns a reference to the `lodash` function.
@@ -2797,7 +2819,7 @@ var lodash = _.noConflict();
### `_.random([min=0, max=1])`
-# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3689 "View in source") [Ⓣ][1]
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3685 "View in source") [Ⓣ][1]
Produces a random number between `min` and `max` *(inclusive)*. If only one argument is passed, a number between `0` and the given number will be returned.
@@ -2825,7 +2847,7 @@ _.random(5);
### `_.result(object, property)`
-# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3727 "View in source") [Ⓣ][1]
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3723 "View in source") [Ⓣ][1]
Resolves the value of `property` on `object`. If `property` is a function it will be invoked and its result returned, else the property value is returned. If `object` is falsey, then `null` is returned.
@@ -2860,7 +2882,7 @@ _.result(object, 'stuff');
### `_.template(text, data, options)`
-# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3812 "View in source") [Ⓣ][1]
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3808 "View in source") [Ⓣ][1]
A micro-templating method that handles arbitrary delimiters, preserves whitespace, and correctly escapes quotes within interpolated code. Note: In the development build `_.template` utilizes sourceURLs for easier debugging. See http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl Note: Lo-Dash may be used in Chrome extensions by either creating a `lodash csp` build and avoiding `_.template` use, or loading Lo-Dash in a sandboxed page. See http://developer.chrome.com/trunk/extensions/sandboxingEval.html
@@ -2934,7 +2956,7 @@ fs.writeFileSync(path.join(cwd, 'jst.js'), '\
### `_.times(n, callback [, thisArg])`
-# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3935 "View in source") [Ⓣ][1]
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3931 "View in source") [Ⓣ][1]
Executes the `callback` function `n` times, returning an array of the results of each `callback` execution. The `callback` is bound to `thisArg` and invoked with one argument; *(index)*.
@@ -2966,7 +2988,7 @@ _.times(3, function(n) { this.cast(n); }, mage);
### `_.unescape(string)`
-# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3961 "View in source") [Ⓣ][1]
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3957 "View in source") [Ⓣ][1]
The opposite of `_.escape`, this method converts the HTML entities `&`, `<`, `>`, `"`, and `'` in `string` to their corresponding characters.
@@ -2990,7 +3012,7 @@ _.unescape('Moe, Larry & Curly');
### `_.uniqueId([prefix])`
-# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3979 "View in source") [Ⓣ][1]
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L3975 "View in source") [Ⓣ][1]
Generates a unique id. If `prefix` is passed, the id will be appended to it.
@@ -3021,7 +3043,7 @@ _.uniqueId('contact_');
### `_.VERSION`
-# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L4084 "View in source") [Ⓣ][1]
+# [Ⓢ](https://github.com/bestiejs/lodash/blob/master/lodash.js#L4097 "View in source") [Ⓣ][1]
*(String)*: The semantic version number.
diff --git a/lodash.js b/lodash.js
index 57918f18b..131fca1a0 100644
--- a/lodash.js
+++ b/lodash.js
@@ -3642,11 +3642,7 @@
push.apply(args, arguments);
var result = func.apply(lodash, args);
- if (this.__chain__) {
- result = new lodash(result);
- result.__chain__ = true;
- }
- return result;
+ return new lodash(result);
};
});
}
@@ -4007,9 +4003,7 @@
* // => 'moe is 40'
*/
function chain(value) {
- value = new lodash(value);
- value.__chain__ = true;
- return value;
+ return new lodash(value);
}
/**
@@ -4039,7 +4033,11 @@
}
/**
- * Enables method chaining on the wrapper object.
+ * This function returns the wrapper object.
+ *
+ * Note: This function is defined to ensure the existing wrapper object is
+ * returned, instead of creating a new wrapper object like the `_.chain`
+ * method does.
*
* @name chain
* @deprecated
@@ -4052,14 +4050,29 @@
* // => [1, 2, 3]
*/
function wrapperChain() {
- this.__chain__ = true;
return this;
}
+ /**
+ * Produces the `toString` result of the wrapped value.
+ *
+ * @name toString
+ * @memberOf _
+ * @category Chaining
+ * @returns {String} Returns the string result.
+ * @example
+ *
+ * _([1, 2, 3]).toString();
+ * // => '1,2,3'
+ */
+ function wrapperToString() {
+ return String(this.__wrapped__);
+ }
+
/**
* Extracts the wrapped value.
*
- * @name value
+ * @name valueOf
* @memberOf _
* @category Chaining
* @returns {Mixed} Returns the wrapped value.
@@ -4209,7 +4222,35 @@
// add `lodash.prototype.chain` after calling `mixin()` to avoid overwriting
// it with the wrapped `lodash.chain`
lodash.prototype.chain = wrapperChain;
+ lodash.prototype.toString = wrapperToString;
lodash.prototype.value = wrapperValue;
+ lodash.prototype.valueOf = wrapperValue;
+
+ // add methods that are capable of returning wrapped and unwrapped values
+ forEach(['first', 'last'], function(methodName) {
+ var func = lodash[methodName];
+ if (func) {
+ lodash.prototype[methodName] = function(n, guard) {
+ var result = func(this.__wrapped__, n, guard);
+ return (n == null || guard)
+ ? result
+ : new lodash(result);
+ };
+ }
+ });
+
+ // add all methods that return unwrapped values
+ forEach(filter(functions(lodash), function(methodName) {
+ return /^(?:contains|every|find|has|is[A-Z].+|reduce.*|some)$/.test(methodName);
+ }), function(methodName) {
+ var func = lodash[methodName];
+
+ lodash.prototype[methodName] = function() {
+ var args = [this.__wrapped__];
+ push.apply(args, arguments);
+ return func.apply(lodash, args);
+ };
+ });
// add all mutator Array functions to the wrapper.
forEach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
@@ -4224,11 +4265,7 @@
if (hasObjectSpliceBug && value.length === 0) {
delete value[0];
}
- if (this.__chain__) {
- value = new lodash(value);
- value.__chain__ = true;
- }
- return value;
+ return this;
};
});
@@ -4240,11 +4277,7 @@
var value = this.__wrapped__,
result = func.apply(value, arguments);
- if (this.__chain__) {
- result = new lodash(result);
- result.__chain__ = true;
- }
- return result;
+ return new lodash(result);
};
});
diff --git a/lodash.min.js b/lodash.min.js
index fdf4ac495..2c2e40928 100644
--- a/lodash.min.js
+++ b/lodash.min.js
@@ -2,39 +2,40 @@
Lo-Dash 0.10.0 lodash.com/license
Underscore.js 1.4.2 underscorejs.org/LICENSE
*/
-;(function(e,t){function s(e){if(e&&e.__wrapped__)return e;if(!(this instanceof s))return new s(e);this.__wrapped__=e}function o(e,t,n){t||(t=0);var r=e.length,i=r-t>=(n||Z);if(i)for(var s={},n=t-1;++nn||e===t)return 1;if(ei;i++)r+="i='"+e.j[i]+"';if(","constructor"==e.j[i]&&(r+="!(f&&f.prototype===l)&&"),r+="h.call(l,i)){x=l[i];"+e.g+"}"}if(e.b||e.h)r+="}";return r+=e.c+";return t",Function("e,h,j,k,p,n,s","return function("+t+"){"+r+"}")(l,bt,m,N,Gt,Lt,Et)}function h(e){return"\\"+
-Yt[e]}function p(e){return on[e]}function d(){}function v(e){return un[e]}function m(e){return xt.call(e)==_t}function g(e){var t=i;if(!e||"object"!=typeof e||m(e))return t;var n=e.constructor;return(!Vt||"function"==typeof e.toString||"string"!=typeof (e+""))&&(!x(n)||n instanceof n)?Rt?(rn(e,function(e,n,r){return t=!bt.call(r,n),i}),t===i):(rn(e,function(e,n){t=n}),t===i||bt.call(e,t)):t}function y(e){var t=[];return sn(e,function(e,n){t.push(n)}),t}function b(e,t,n,s,o){if(e==r)return e;n&&(t=
-i);if(n=T(e)){var u=xt.call(e);if(!Qt[u]||Wt&&m(e))return e;var a=u==Dt,n=a||(u==jt?ln(e):n)}if(!n||!t)return n?a?St.call(e):nn({},e):e;n=e.constructor;switch(u){case Pt:case Ht:return new n(+e);case Bt:case It:return new n(e);case Ft:return n(e.source,ot.exec(e))}s||(s=[]),o||(o=[]);for(u=s.length;u--;)if(s[u]==e)return o[u];var f=a?n(e.length):{};return s.push(e),o.push(f),(a?hn:sn)(e,function(e,n){f[n]=b(e,t,r,s,o)}),f}function w(e){var t=[];return rn(e,function(e,n){x(e)&&t.push(n)}),t.sort()
-}function E(e){var t={};return sn(e,function(e,n){t[e]=n}),t}function S(e,t,s,o){if(e===t)return 0!==e||1/e==1/t;if(e==r||t==r)return e===t;var u=xt.call(e);if(u!=xt.call(t))return i;switch(u){case Pt:case Ht:return+e==+t;case Bt:return e!=+e?t!=+t:0==e?1/e==1/t:e==+t;case Ft:case It:return e==t+""}var a=u==Dt||u==_t;if(Wt&&!a&&(a=m(e))&&!m(t))return i;if(!a){if(e.__wrapped__||t.__wrapped__)return S(e.__wrapped__||e,t.__wrapped__||t);if(u!=jt||Vt&&("function"!=typeof e.toString&&"string"==typeof
-(e+"")||"function"!=typeof t.toString&&"string"==typeof (t+"")))return i;var u=e.constructor,f=t.constructor;if(u!=f&&(!x(u)||!(u instanceof u&&x(f)&&f instanceof f)))return i}s||(s=[]),o||(o=[]);for(u=s.length;u--;)if(s[u]==e)return o[u]==t;var u=-1,f=n,l=0;s.push(e),o.push(t);if(a){l=e.length;if(f=l==t.length)for(;l--&&(f=S(e[l],t[l],s,o)););return f}for(var c in e)if(bt.call(e,c)&&(l++,!bt.call(t,c)||!S(e[c],t[c],s,o)))return i;for(c in t)if(bt.call(t,c)&&!(l--))return i;if(qt)for(;7>++u;)if(c=
-dt[u],bt.call(e,c)&&(!bt.call(t,c)||!S(e[c],t[c],s,o)))return i;return n}function x(e){return"function"==typeof e}function T(e){return e?Gt[typeof e]:i}function N(e){return xt.call(e)==It}function C(e,t,n){var i=arguments,s=0,o=2,u=i[3],a=i[4];n!==Y&&(u=[],a=[],"number"!=typeof n&&(o=i.length));for(;++sn?At(0,s+n):n)||0;return"number"==typeof s?o=-1<(N(e)?e.indexOf(t,n):q(e,t,n)):hn(e,function(e){if(++r>=n)return!(o=e===t)}),o}function A(e,t,r){var i=n,t=l(t,r);if(fn(e))for(var r=-1,s=e.length;++rr&&(r=n,o=e)});else for(;++io&&(o=e[i]);return o}function P(e,t){var n=[];return hn(e,function(e){n.push(e[t])}),n}function H(e,t,n,r){var s=3>arguments.length;return t||(t=X),hn(e,function(e,o,u){n=s?(s=i,e):t.call(r,n,e,o,u)}),n}function B(e,t,n,r){var s=e,o=e?e.length:0,u=3>arguments.length;if("number"!=typeof o)var a=cn(e),o=a.length;else Xt&&N(e)&&(s=e.split(""));return t||(t=X),hn(e,function(e,f,l){f=a?a[--o]:--o,n=u?(u=i,s[f]):t.call(r,n,s[f],f,l)}),n}function j(e,t,n){var r,t=l(t,n);if(fn(e))for(var n=-1,i=e.length
-;++nn?At(0,i+n):n||0)-1;else if(n)return r=U(e,t),e[r]===t?r:-1;for(;++r>>1,n(e[r])q(a,h))(n||f)&&a.push(h),u.push(r)}return u}function W(e,t){return Jt||Tt&&2|{(\/]|\[\D|\b(?:delete|in|instanceof|new|typeof|void)\b/,nt=/&(?:amp|lt|gt|quot|#x27);/g,rt=/\b__p\+='';/g,it=/\b(__p\+=)''\+/g,st=/(__e\(.*?\)|\b__t\))\+'';/g
-,ot=/\w*$/,ut=/(?:__e|__t=)\(\s*(?![\d\s"']|this\.)/g,at=RegExp("^"+(Q.valueOf+"").replace(/[.*+?^=!:${}()|[\]\/\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),ft=/\$\{((?:(?=\\?)\\?[\s\S])*?)}/g,lt=/<%=([\s\S]+?)%>/g,ct=/($^)/,ht=/[&<>"']/g,pt=/['\n\r\t\u2028\u2029\\]/g,dt="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),vt=Math.ceil,mt=K.concat,gt=Math.floor,yt=at.test(yt=Object.getPrototypeOf)&&yt,bt=Q.hasOwnProperty,wt=K.push,Et=
-Q.propertyIsEnumerable,St=K.slice,xt=Q.toString,Tt=at.test(Tt=St.bind)&&Tt,Nt=at.test(Nt=Array.isArray)&&Nt,Ct=e.isFinite,kt=e.isNaN,Lt=at.test(Lt=Object.keys)&&Lt,At=Math.max,Ot=Math.min,Mt=Math.random,_t="[object Arguments]",Dt="[object Array]",Pt="[object Boolean]",Ht="[object Date]",Bt="[object Number]",jt="[object Object]",Ft="[object RegExp]",It="[object String]",qt,Rt,Ut=(Ut={0:1,length:1},K.splice.call(Ut,0,1),Ut[0]),zt=n;(function(){function e(){this.x=1}var t=[];e.prototype={valueOf:1,y
-:1};for(var n in new e)t.push(n);for(n in arguments)zt=!n;qt=!/valueOf/.test(t),Rt="x"!=t[0]})(1);var Wt=!m(arguments),Xt="xx"!="x"[0]+Object("x")[0];try{var Vt=("[object Object]",xt.call(e.document||0)==jt)}catch($t){}var Jt=Tt&&/\n|Opera/.test(Tt+xt.call(e.opera)),Kt=Lt&&/^.+$|true/.test(Lt+!!e.attachEvent),Qt={};Qt[_t]=Qt["[object Function]"]=i,Qt[Dt]=Qt[Pt]=Qt[Ht]=Qt[Bt]=Qt[jt]=Qt[Ft]=Qt[It]=n;var Gt={"boolean":i,"function":n,object:n,number:i,string:i,"undefined":i},Yt={"\\":"\\","'":"'","\n"
-:"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"};s.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:lt,variable:""};var Zt={a:"o,v,g",k:"for(var a=1,b=typeof g=='number'?2:arguments.length;a":">",'"':""","'":"'"},un=E(on),an=c(Zt,{g:"if(t[i]==null)"+Zt.g}),fn=Nt||function(e){return xt.call(e)==Dt};x(/x/)&&(x=function(e){return"[object Function]"==xt.call(e)});var ln=yt?function(e){if(!e||"object"!=typeof e)return i;var t=e.valueOf,n="function"==typeof t&&(n=yt(t))&&yt(n);return n?e==n||yt(e)==n&&!m(e):g(e)}:g,cn=Lt?function(e){return"function"==typeof e&&Et.call(e,"prototype")?y(e):T(e)?Lt(e):[]}:y,hn=c(en);s.VERSION="0.10.0",s.assign=nn,s.after=function(e,t){return 1>
-e?t():function(){if(1>--e)return t.apply(this,arguments)}},s.bind=W,s.bindAll=function(e){for(var t=arguments,n=1q(i,e)){for(var s=n;--s;)if(!(r[s]||(r[s]=o(t[s])))(e))return;i.push(e)}}),i},s.invert=E,s.invoke=function(e,t){var n=St.call(arguments,2),r="function"==typeof t,i=[];return hn(e,function(e){i.push((r?t:e[t]).apply(e,n))}),i},s.isArguments=m,s.isArray=fn,s.isBoolean=function(e){return e===n||e===i||
-xt.call(e)==Pt},s.isDate=function(e){return xt.call(e)==Ht},s.isElement=function(e){return e?1===e.nodeType:i},s.isEmpty=function(e){var t=n;if(!e)return t;var r=xt.call(e),s=e.length;return r==Dt||r==It||r==_t||Wt&&m(e)||r==jt&&"number"==typeof s&&x(e.splice)?!s:(sn(e,function(){return t=i}),t)},s.isEqual=S,s.isFinite=function(e){return Ct(e)&&!kt(parseFloat(e))},s.isFunction=x,s.isNaN=function(e){return xt.call(e)==Bt&&e!=+e},s.isNull=function(e){return e===r},s.isNumber=function(e){return xt.call
-(e)==Bt},s.isObject=T,s.isPlainObject=ln,s.isRegExp=function(e){return xt.call(e)==Ft},s.isString=N,s.isUndefined=function(e){return e===t},s.keys=cn,s.last=function(e,t,n){if(e){var i=e.length;return t==r||n?e[i-1]:St.call(e,-t||i)}},s.lastIndexOf=function(e,t,n){var r=e?e.length:0;for("number"==typeof n&&(r=(0>n?At(0,r+n):Ot(n,r-1))+1);r--;)if(e[r]===t)return r;return-1},s.map=_,s.max=D,s.memoize=function(e,t){var n={};return function(){var r=t?t.apply(this,arguments):arguments[0];return bt.call
-(n,r)?n[r]:n[r]=e.apply(this,arguments)}},s.merge=C,s.min=function(e,t,n){var r=Infinity,i=-1,s=e?e.length:0,o=r;if(t||!fn(e))t=!t&&N(e)?u:l(t,n),hn(e,function(e,n,i){n=t(e,n,i),nq(s,n,1))i[n]=e}),i},s.once=function(e){var t,s=i;return function(){return s?t:(s=n,t=e.apply(this,arguments),e=r,t)}},s.pairs=function(e){var t=[];return sn(e,function(e,n){t.push([n,e])}),t},s.partial=function(e){return f(e,St.call(arguments,1))},s.pick=function(e,t,n){var r={};if("function"!=typeof t)for(var i=0,s=mt.apply(K,arguments),o=s.length;++i=f?(clearTimeout(u),a=r,s=e.apply(o,i)):u||(u=setTimeout(n,f)),
-s}},s.times=function(e,t,n){for(var e=+e||0,r=-1,i=Array(e);++r=(n||et);if(i)for(var s={},n=t-1;++nn||e===t)return 1;if(ei;i++)r+="i='"+e.j[i]+"';if(","constructor"==e.j[i]&&(r+="!(f&&f.prototype===l)&&"),r+="h.call(l,i)){x=l[i];"+e.g+"}"}if(e.b||e.h)r+="}";return r+=e.c+";return t",Function("e,h,j,k,p,n,s","return function("+t+"){"+r+"}")(l,wt,m,N,Yt,At,St)}function h(e){return"\\"+
+Zt[e]}function p(e){return un[e]}function d(){}function v(e){return an[e]}function m(e){return Tt.call(e)==Dt}function g(e){var t=i;if(!e||"object"!=typeof e||m(e))return t;var n=e.constructor;return(!$t||"function"==typeof e.toString||"string"!=typeof (e+""))&&(!x(n)||n instanceof n)?Ut?(sn(e,function(e,n,r){return t=!wt.call(r,n),i}),t===i):(sn(e,function(e,n){t=n}),t===i||wt.call(e,t)):t}function y(e){var t=[];return on(e,function(e,n){t.push(n)}),t}function b(e,t,n,s,o){if(e==r)return e;n&&(t=
+i);if(n=T(e)){var u=Tt.call(e);if(!Gt[u]||Xt&&m(e))return e;var a=u==Pt,n=a||(u==Ft?cn(e):n)}if(!n||!t)return n?a?xt.call(e):rn({},e):e;n=e.constructor;switch(u){case Ht:case Bt:return new n(+e);case jt:case qt:return new n(e);case It:return n(e.source,ut.exec(e))}s||(s=[]),o||(o=[]);for(u=s.length;u--;)if(s[u]==e)return o[u];var f=a?n(e.length):{};return s.push(e),o.push(f),(a?pn:on)(e,function(e,n){f[n]=b(e,t,r,s,o)}),f}function w(e){var t=[];return sn(e,function(e,n){x(e)&&t.push(n)}),t.sort()
+}function E(e){var t={};return on(e,function(e,n){t[e]=n}),t}function S(e,t,s,o){if(e===t)return 0!==e||1/e==1/t;if(e==r||t==r)return e===t;var u=Tt.call(e);if(u!=Tt.call(t))return i;switch(u){case Ht:case Bt:return+e==+t;case jt:return e!=+e?t!=+t:0==e?1/e==1/t:e==+t;case It:case qt:return e==t+""}var a=u==Pt||u==Dt;if(Xt&&!a&&(a=m(e))&&!m(t))return i;if(!a){if(e.__wrapped__||t.__wrapped__)return S(e.__wrapped__||e,t.__wrapped__||t);if(u!=Ft||$t&&("function"!=typeof e.toString&&"string"==typeof
+(e+"")||"function"!=typeof t.toString&&"string"==typeof (t+"")))return i;var u=e.constructor,f=t.constructor;if(u!=f&&(!x(u)||!(u instanceof u&&x(f)&&f instanceof f)))return i}s||(s=[]),o||(o=[]);for(u=s.length;u--;)if(s[u]==e)return o[u]==t;var u=-1,f=n,l=0;s.push(e),o.push(t);if(a){l=e.length;if(f=l==t.length)for(;l--&&(f=S(e[l],t[l],s,o)););return f}for(var c in e)if(wt.call(e,c)&&(l++,!wt.call(t,c)||!S(e[c],t[c],s,o)))return i;for(c in t)if(wt.call(t,c)&&!(l--))return i;if(Rt)for(;7>++u;)if(c=
+vt[u],wt.call(e,c)&&(!wt.call(t,c)||!S(e[c],t[c],s,o)))return i;return n}function x(e){return"function"==typeof e}function T(e){return e?Yt[typeof e]:i}function N(e){return Tt.call(e)==qt}function C(e,t,n){var i=arguments,s=0,o=2,u=i[3],a=i[4];n!==Z&&(u=[],a=[],"number"!=typeof n&&(o=i.length));for(;++sn?Ot(0,s+n):n)||0;return"number"==typeof s?o=-1<(N(e)?e.indexOf(t,n):q(e,t,n)):pn(e,function(e){if(++r>=n)return!(o=e===t)}),o}function A(e,t,r){var i=n,t=l(t,r);if(ln(e))for(var r=-1,s=e.length;++rr&&(r=n,o=e)});else for(;++io&&(o=e[i]);return o}function P(e,t){var n=[];return pn(e,function(e){n.push(e[t])}),n}function H(e,t,n,r){var s=3>arguments.length;return t||(t=X),pn(e,function(e,o,u){n=s?(s=i,e):t.call(r,n,e,o,u)}),n}function B(e,t,n,r){var s=e,o=e?e.length:0,u=3>arguments.length;if("number"!=typeof o)var a=hn(e),o=a.length;else Vt&&N(e)&&(s=e.split(""));return t||(t=X),pn(e,function(e,f,l){f=a?a[--o]:--o,n=u?(u=i,s[f]):t.call(r,n,s[f],f,l)}),n}function j(e,t,n){var r,t=l(t,n);if(ln(e))for(var n=-1,i=e.length
+;++nn?Ot(0,i+n):n||0)-1;else if(n)return r=U(e,t),e[r]===t?r:-1;for(;++r>>1,n(e[r])q(a,h))(n||f)&&a.push(h),u.push(r)}return u}function W(e,t){return Kt||Nt&&2|{(\/]|\[\D|\b(?:delete|in|instanceof|new|typeof|void)\b/,rt=/&(?:amp|lt|gt|quot|#x27);/g,it=/\b__p\+='';/g,st=/\b(__p\+=)''\+/g,
+ot=/(__e\(.*?\)|\b__t\))\+'';/g,ut=/\w*$/,at=/(?:__e|__t=)\(\s*(?![\d\s"']|this\.)/g,ft=RegExp("^"+(G.valueOf+"").replace(/[.*+?^=!:${}()|[\]\/\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),lt=/\$\{((?:(?=\\?)\\?[\s\S])*?)}/g,ct=/<%=([\s\S]+?)%>/g,ht=/($^)/,pt=/[&<>"']/g,dt=/['\n\r\t\u2028\u2029\\]/g,vt="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),mt=Math.ceil,gt=Q.concat,yt=Math.floor,bt=ft.test(bt=Object.getPrototypeOf)&&bt,
+wt=G.hasOwnProperty,Et=Q.push,St=G.propertyIsEnumerable,xt=Q.slice,Tt=G.toString,Nt=ft.test(Nt=xt.bind)&&Nt,Ct=ft.test(Ct=Array.isArray)&&Ct,kt=e.isFinite,Lt=e.isNaN,At=ft.test(At=Object.keys)&&At,Ot=Math.max,Mt=Math.min,_t=Math.random,Dt="[object Arguments]",Pt="[object Array]",Ht="[object Boolean]",Bt="[object Date]",jt="[object Number]",Ft="[object Object]",It="[object RegExp]",qt="[object String]",Rt,Ut,zt=(zt={0:1,length:1},Q.splice.call(zt,0,1),zt[0]),Wt=n;(function(){function e(){this.x=1}
+var t=[];e.prototype={valueOf:1,y:1};for(var n in new e)t.push(n);for(n in arguments)Wt=!n;Rt=!/valueOf/.test(t),Ut="x"!=t[0]})(1);var Xt=!m(arguments),Vt="xx"!="x"[0]+Object("x")[0];try{var $t=("[object Object]",Tt.call(e.document||0)==Ft)}catch(Jt){}var Kt=Nt&&/\n|Opera/.test(Nt+Tt.call(e.opera)),Qt=At&&/^.+$|true/.test(At+!!e.attachEvent),Gt={};Gt[Dt]=Gt["[object Function]"]=i,Gt[Pt]=Gt[Ht]=Gt[Bt]=Gt[jt]=Gt[Ft]=Gt[It]=Gt[qt]=n;var Yt={"boolean":i,"function":n,object:n,number:i,string:i,"undefined"
+:i},Zt={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"};s.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:ct,variable:""};var en={a:"o,v,g",k:"for(var a=1,b=typeof g=='number'?2:arguments.length;a":">",'"':""","'":"'"},an=E(un),fn=c(en,{g:"if(t[i]==null)"+en.g}),ln=Ct||function(e){return Tt.call(e)==Pt};x(/x/)&&(x=function(e){return"[object Function]"==Tt.call(e)});var cn=bt?function(e){if(!e||"object"!=typeof e)return i;var t=e.valueOf,n="function"==typeof t&&(n=bt(t))&&bt(n);return n?e==n||bt(e)==n&&!m(e):g(e)}:g,hn=At?function(e){return"function"==typeof e&&St.call(e,"prototype")?y(e):T(e)?At(e):[]}:y,pn=c(tn);s.VERSION="0.10.0",s.assign=
+rn,s.after=function(e,t){return 1>e?t():function(){if(1>--e)return t.apply(this,arguments)}},s.bind=W,s.bindAll=function(e){for(var t=arguments,n=1q(i,e)){for(var s=n;--s;)if(!(r[s]||(r[s]=o(t[s])))(e))return;i.push(e)}}),i},s.invert=E,s.invoke=function(e,t){var n=xt.call(arguments,2),r="function"==typeof t,i=[];return pn(e,function(e){i.push((r?t:e[t]).apply(e,n))}),i},s.isArguments=m,s.isArray=ln,s.isBoolean=function(e
+){return e===n||e===i||Tt.call(e)==Ht},s.isDate=function(e){return Tt.call(e)==Bt},s.isElement=function(e){return e?1===e.nodeType:i},s.isEmpty=function(e){var t=n;if(!e)return t;var r=Tt.call(e),s=e.length;return r==Pt||r==qt||r==Dt||Xt&&m(e)||r==Ft&&"number"==typeof s&&x(e.splice)?!s:(on(e,function(){return t=i}),t)},s.isEqual=S,s.isFinite=function(e){return kt(e)&&!Lt(parseFloat(e))},s.isFunction=x,s.isNaN=function(e){return Tt.call(e)==jt&&e!=+e},s.isNull=function(e){return e===r},s.isNumber=
+function(e){return Tt.call(e)==jt},s.isObject=T,s.isPlainObject=cn,s.isRegExp=function(e){return Tt.call(e)==It},s.isString=N,s.isUndefined=function(e){return e===t},s.keys=hn,s.last=function(e,t,n){if(e){var i=e.length;return t==r||n?e[i-1]:xt.call(e,-t||i)}},s.lastIndexOf=function(e,t,n){var r=e?e.length:0;for("number"==typeof n&&(r=(0>n?Ot(0,r+n):Mt(n,r-1))+1);r--;)if(e[r]===t)return r;return-1},s.map=_,s.max=D,s.memoize=function(e,t){var n={};return function(){var r=t?t.apply(this,arguments):
+arguments[0];return wt.call(n,r)?n[r]:n[r]=e.apply(this,arguments)}},s.merge=C,s.min=function(e,t,n){var r=Infinity,i=-1,s=e?e.length:0,o=r;if(t||!ln(e))t=!t&&N(e)?u:l(t,n),pn(e,function(e,n,i){n=t(e,n,i),nq(s,n,1))i[n]=e}),i},s.once=function(e){var t,s=i;return function(){return s?t:(s=n,t=e.apply(this,arguments),e=r,t)}},s.pairs=function(e){var t=[];return on(e,function(e,n){t.push([n,e])}),t},s.partial=function(e){return f(e,xt.call(arguments,1))},s.pick=function(e,t,n){var r={};if("function"!=typeof t)for(var i=0,s=gt.apply(Q,arguments),o=s.length;++i=f?(clearTimeout(u),a=r,s=e.apply(o,i)):u||(u=setTimeout
+(n,f)),s}},s.times=function(e,t,n){for(var e=+e||0,r=-1,i=Array(e);++r=f?(clearTimeout(o),u=a,i=e.apply(s,r)):o||(o=setTimeout(n,f)),i}},n.times=function(e,t,n){for(var e=+e||0,r=-1,i=Array(e);++r_(arguments,i,1)&&r.push(i)}return r},n.wrap=function(e,t){return function(){var n=[e];return et.apply(n,arguments),t.apply(this,n)}},n.zip=function(e){for(var t=-1,n=e?N(C(arguments,"length")):0,r=Array(n);++t