Compare commits

..

31 Commits
4.1.0 ... 4.2.0

Author SHA1 Message Date
John-David Dalton
b6b59d93d7 Bump to 4.2.0. 2016-02-02 00:33:16 -08:00
John-David Dalton
5af68bbf94 Rebuild lodash and docs. 2016-02-02 00:33:16 -08:00
John-David Dalton
db7debd3da Move benchmark.js to a dev dep. 2016-02-02 00:33:16 -08:00
laispace
29bc8d965b Fix _.sortedUniqBy doc example. [ci skip] 2016-02-01 23:55:34 -08:00
John-David Dalton
daeb55e99d Rename mapping rekey to rename. 2016-02-01 23:53:19 -08:00
John-David Dalton
fa4d85897c Add mutation notes to _.mergeWith, _.set, _.setWith, and _.unset. [ci skip] 2016-02-01 22:53:05 -08:00
John-David Dalton
983363e0cd Cleanup readme. [ci skip] 2016-02-01 22:37:56 -08:00
John-David Dalton
d95dad76b8 Remove dead code. 2016-02-01 22:37:56 -08:00
John-David Dalton
18f74aa5b2 Rename spreadArgs to otherArgs. 2016-02-01 22:37:56 -08:00
John-David Dalton
e96a8f7bc6 Cleanup map tests. 2016-02-01 22:37:56 -08:00
John-David Dalton
29f39be6ad Add _.flapMap tests for collections. 2016-02-01 22:37:56 -08:00
John-David Dalton
7a17967d79 Add _.spread tests for the start param. 2016-02-01 22:37:56 -08:00
John-David Dalton
de5bd32aba Rename rp vars to rest. 2016-02-01 22:37:56 -08:00
Jason Trill
199b2e1a3a Reword docs for _.tap and _.thru. [ci skip] 2016-02-01 22:37:56 -08:00
John-David Dalton
a43e4f10ef Update vendors. 2016-02-01 22:37:55 -08:00
Trevor Hudson
5522e4641d Update _.pickBy docs to include value as an iteratee param. [ci skip] 2016-02-01 22:37:55 -08:00
greenkeeperio-bot
6c82ea8fc3 Update qunitjs to 1.21.0. 2016-02-01 22:37:55 -08:00
John-David Dalton
b4b45b7139 Update docdown. 2016-02-01 22:37:55 -08:00
John-David Dalton
7ebb033016 Add _.at chaining test for objects with index keys. 2016-02-01 22:37:55 -08:00
John-David Dalton
163fdb46f0 Ensure fp _.partial and _.partialRight accept an args param. 2016-02-01 22:37:55 -08:00
John-David Dalton
b38cf204f7 Add start param to _.spread. 2016-02-01 22:37:55 -08:00
John-David Dalton
fe5381b0f4 Cleanup fp mapping. 2016-02-01 22:37:55 -08:00
John-David Dalton
c99e7f1337 Make _.flatMap a "Collection" method. 2016-02-01 22:37:55 -08:00
Mohammed Nauage
b61b674fec Remove sorted behavior from _.indexOf docs. [ci skip] 2016-02-01 22:37:55 -08:00
John-David Dalton
3bdaf99cfa Ensure _.iteratee clones sources for "_.matchesProperty" shorthand. 2016-02-01 22:37:54 -08:00
John-David Dalton
6c85e7015a Add assocPath and dissocPath fp aliases. 2016-02-01 22:37:54 -08:00
John-David Dalton
9788f7101b Ensure fp unset is immutable. [closes #1913] 2016-02-01 22:37:54 -08:00
Billy Janitsch
d0d5a3802d Alias set to assoc in FP. 2016-02-01 22:37:54 -08:00
John-David Dalton
1f160b31ff Make doc code sample comments match source comment style. [ci skip] 2016-01-30 01:02:49 -08:00
Ivan Tanev
13659e87cb Ensure _.attempt preserves custom errors. 2016-01-30 01:02:49 -08:00
John-David Dalton
ac9b0bfc1b Increment package version to enable ci tests. 2016-01-30 01:02:48 -08:00
34 changed files with 2216 additions and 4560 deletions

View File

@@ -1,4 +1,4 @@
# lodash v4.1.0
# lodash v4.2.0
The [lodash](https://lodash.com/) library exported as a [UMD](https://github.com/umdjs/umd) module.
@@ -11,13 +11,13 @@ $ lodash core -o ./dist/lodash.core.js
## Community
[![Join the chat at https://gitter.im/lodash/lodash](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/lodash/lodash)
[![Gitter](https://badges.gitter.im/lodash/lodash.svg)](https://gitter.im/lodash/lodash)
## Module formats
Lodash is also available in a variety of other builds & module formats.
Lodash is available in a variety of other builds & module formats.
* [lodash](https://www.npmjs.com/package/lodash) & [per method](https://www.npmjs.com/browse/keyword/lodash-modularized) packages
* [lodash](https://www.npmjs.com/package/lodash) & [per method packages](https://www.npmjs.com/browse/keyword/lodash-modularized)
* [lodash-amd](https://www.npmjs.com/package/lodash-amd)
* [lodash-es](https://www.npmjs.com/package/lodash-es) & [babel-plugin-lodash](https://www.npmjs.com/package/babel-plugin-lodash)

59
dist/lodash.core.js vendored
View File

@@ -1,6 +1,6 @@
/**
* @license
* lodash 4.1.0 (Custom Build) <https://lodash.com/>
* lodash 4.2.0 (Custom Build) <https://lodash.com/>
* Build: `lodash core -o ./dist/lodash.core.js`
* Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
@@ -13,7 +13,7 @@
var undefined;
/** Used as the semantic version number. */
var VERSION = '4.1.0';
var VERSION = '4.2.0';
/** Used to compose bitmasks for wrapper metadata. */
var BIND_FLAG = 1,
@@ -472,11 +472,11 @@
*
* var wrapped = _([1, 2, 3]);
*
* // returns an unwrapped value
* // Returns an unwrapped value.
* wrapped.reduce(_.add);
* // => 6
*
* // returns a wrapped value
* // Returns a wrapped value.
* var squares = wrapped.map(square);
*
* _.isArray(squares);
@@ -1516,8 +1516,7 @@
* Gets the index at which the first occurrence of `value` is found in `array`
* using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
* for equality comparisons. If `fromIndex` is negative, it's used as the offset
* from the end of `array`. If `array` is sorted providing `true` for `fromIndex`
* performs a faster binary search.
* from the end of `array`.
*
* @static
* @memberOf _
@@ -1531,7 +1530,7 @@
* _.indexOf([1, 2, 1, 2], 2);
* // => 1
*
* // using `fromIndex`
* // Search from the `fromIndex`.
* _.indexOf([1, 2, 1, 2], 2, 2);
* // => 3
*/
@@ -1629,10 +1628,9 @@
}
/**
* This method invokes `interceptor` and returns `value`. The interceptor is
* invoked with one argument; (value). The purpose of this method is to "tap into"
* a method chain in order to perform operations on intermediate results within
* the chain.
* This method invokes `interceptor` and returns `value`. The interceptor
* is invoked with one argument; (value). The purpose of this method is to
* "tap into" a method chain in order to modify intermediate results.
*
* @static
* @memberOf _
@@ -1644,6 +1642,7 @@
*
* _([1, 2, 3])
* .tap(function(array) {
* // Mutate input array.
* array.pop();
* })
* .reverse()
@@ -1657,6 +1656,8 @@
/**
* This method is like `_.tap` except that it returns the result of `interceptor`.
* The purpose of this method is to "pass thru" values replacing intermediate
* results in a method chain.
*
* @static
* @memberOf _
@@ -1693,11 +1694,11 @@
* { 'user': 'fred', 'age': 40 }
* ];
*
* // without explicit chaining
* // A sequence without explicit chaining.
* _(users).head();
* // => { 'user': 'barney', 'age': 36 }
*
* // with explicit chaining
* // A sequence with explicit chaining.
* _(users)
* .chain()
* .head()
@@ -1750,15 +1751,15 @@
* { 'user': 'fred', 'active': false }
* ];
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.every(users, { 'user': 'barney', 'active': false });
* // => false
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.every(users, ['active', false]);
* // => true
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.every(users, 'active');
* // => false
*/
@@ -1788,15 +1789,15 @@
* _.filter(users, function(o) { return !o.active; });
* // => objects for ['fred']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.filter(users, { 'age': 36, 'active': true });
* // => objects for ['barney']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.filter(users, ['active', false]);
* // => objects for ['fred']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.filter(users, 'active');
* // => objects for ['barney']
*/
@@ -1826,15 +1827,15 @@
* _.find(users, function(o) { return o.age < 40; });
* // => object for 'barney'
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.find(users, { 'age': 1, 'active': true });
* // => object for 'pebbles'
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.find(users, ['active', false]);
* // => object for 'fred'
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.find(users, 'active');
* // => object for 'barney'
*/
@@ -1911,7 +1912,7 @@
* { 'user': 'fred' }
* ];
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.map(users, 'user');
* // => ['barney', 'fred']
*/
@@ -2008,15 +2009,15 @@
* { 'user': 'fred', 'active': false }
* ];
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.some(users, { 'user': 'barney', 'active': false });
* // => false
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.some(users, ['active', false]);
* // => true
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.some(users, 'active');
* // => true
*/
@@ -2134,7 +2135,7 @@
* bound('!');
* // => 'hi fred!'
*
* // using placeholders
* // Bound with placeholders.
* var bound = _.bind(greet, object, _, '!');
* bound('hi');
* // => 'hi fred!'
@@ -2158,7 +2159,7 @@
* _.defer(function(text) {
* console.log(text);
* }, 'deferred');
* // logs 'deferred' after one or more milliseconds
* // => logs 'deferred' after one or more milliseconds
*/
var defer = rest(function(func, args) {
return baseDelay(func, 1, args);
@@ -3442,7 +3443,7 @@
* { 'user': 'fred', 'age': 40 }
* ];
*
* // create custom iteratee shorthands
* // Create custom iteratee shorthands.
* _.iteratee = _.wrap(_.iteratee, function(callback, func) {
* var p = /^(\S+)\s*([<>])\s*(\S+)$/.exec(func);
* return !p ? callback(func) : function(object) {

View File

@@ -1,6 +1,6 @@
/**
* @license
* lodash 4.1.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
* lodash 4.2.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
* Build: `lodash core -o ./dist/lodash.core.js`
*/
;(function(){function n(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function t(n,t,r){for(var e=-1,u=n.length;++e<u;){var o=n[e],i=t(o);if(null!=i&&(c===an?i===i:r(i,c)))var c=i,f=o}return f}function r(n,t,r){var e;return r(n,function(n,r,u){return t(n,r,u)?(e=n,false):void 0}),e}function e(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function u(n,t){return w(t,function(t){return n[t]})}function o(n){return n&&n.Object===Object?n:null}function i(n){return hn[n];
@@ -25,6 +25,6 @@ l.prototype.constructor=l,a.assignIn=Hn,a.before=P,a.bind=Cn,a.chain=function(n)
r=1;break n}if(e>r&&!u||!a||c&&!o&&i||f&&i){r=-1;break n}}r=0}return r||n.b-t.b}),E("c"))},a.tap=function(n,t){return t(n),n},a.thru=function(n,t){return t(n)},a.toArray=function(n){return L(n)?n.length?k(n):[]:on(n)},a.values=on,a.extend=Hn,fn(a,a),a.clone=function(n){return X(n)?Mn(n)?k(n):T(n,en(n)):n},a.escape=function(n){return(n=rn(n))&&pn.test(n)?n.replace(ln,i):n},a.every=function(n,t,r){return t=r?an:t,h(n,m(t))},a.find=G,a.forEach=J,a.has=function(n,t){return null!=n&&xn.call(n,t)},a.head=C,
a.identity=cn,a.indexOf=function(n,t,r){var e=n?n.length:0;r=typeof r=="number"?0>r?Rn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++r<e;){var o=n[r];if(u?o===t:o!==o)return r}return-1},a.isArguments=K,a.isArray=Mn,a.isBoolean=function(n){return true===n||false===n||Y(n)&&"[object Boolean]"==An.call(n)},a.isDate=function(n){return Y(n)&&"[object Date]"==An.call(n)},a.isEmpty=function(n){if(L(n)&&(Mn(n)||nn(n)||Q(n.splice)||K(n)))return!n.length;for(var t in n)if(xn.call(n,t))return false;return true},a.isEqual=function(n,t){
return b(n,t)},a.isFinite=function(n){return typeof n=="number"&&Fn(n)},a.isFunction=Q,a.isNaN=function(n){return Z(n)&&n!=+n},a.isNull=function(n){return null===n},a.isNumber=Z,a.isObject=X,a.isRegExp=function(n){return X(n)&&"[object RegExp]"==An.call(n)},a.isString=nn,a.isUndefined=function(n){return n===an},a.last=function(n){var t=n?n.length:0;return t?n[t-1]:an},a.max=function(n){return n&&n.length?t(n,cn,H):an},a.min=function(n){return n&&n.length?t(n,cn,tn):an},a.noConflict=function(){return dn._===this&&(dn._=kn),
this},a.noop=function(){},a.reduce=M,a.result=function(n,t,r){return t=null==n?an:n[t],t===an&&(t=r),Q(t)?t.call(n):t},a.size=function(n){return null==n?0:(n=L(n)?n:en(n),n.length)},a.some=function(n,t,r){return t=r?an:t,N(n,m(t))},a.uniqueId=function(n){var t=++En;return rn(n)+t},a.each=J,a.first=C,fn(a,function(){var n={};return _(a,function(t,r){xn.call(a.prototype,r)||(n[r]=t)}),n}(),{chain:false}),a.VERSION="4.1.0",In("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){
this},a.noop=function(){},a.reduce=M,a.result=function(n,t,r){return t=null==n?an:n[t],t===an&&(t=r),Q(t)?t.call(n):t},a.size=function(n){return null==n?0:(n=L(n)?n:en(n),n.length)},a.some=function(n,t,r){return t=r?an:t,N(n,m(t))},a.uniqueId=function(n){var t=++En;return rn(n)+t},a.each=J,a.first=C,fn(a,function(){var n={};return _(a,function(t,r){xn.call(a.prototype,r)||(n[r]=t)}),n}(),{chain:false}),a.VERSION="4.2.0",In("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){
var t=(/^(?:replace|split)$/.test(n)?String.prototype:wn)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|join|replace|shift)$/.test(n);a.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){return t.apply(r,n)})}}),a.prototype.toJSON=a.prototype.valueOf=a.prototype.value=function(){return S(this.__wrapped__,this.__actions__)},(bn||gn||{})._=a,typeof define=="function"&&typeof define.amd=="object"&&define.amd? define(function(){
return a}):yn&&_n?(jn&&((_n.exports=a)._=a),yn._=a):dn._=a}).call(this);

158
dist/lodash.fp.js vendored
View File

@@ -104,7 +104,8 @@ return /******/ (function(modules) { // webpackBootstrap
'isFunction': util.isFunction,
'iteratee': util.iteratee,
'keys': util.keys,
'rearg': util.rearg
'rearg': util.rearg,
'rest': util.rest
};
var ary = _.ary,
@@ -113,7 +114,8 @@ return /******/ (function(modules) { // webpackBootstrap
each = _.forEach,
isFunction = _.isFunction,
keys = _.keys,
rearg = _.rearg;
rearg = _.rearg,
spread = _.spread;
var baseArity = function(func, n) {
return n == 2
@@ -242,17 +244,21 @@ return /******/ (function(modules) { // webpackBootstrap
each(mapping.caps, function(cap) {
each(mapping.aryMethod[cap], function(otherName) {
if (name == otherName) {
var indexes = mapping.iterateeRearg[name],
n = !isLib && mapping.aryIteratee[name];
var aryN = !isLib && mapping.iterateeAry[name],
reargIndexes = mapping.iterateeRearg[name],
spreadStart = mapping.methodSpread[name];
result = spreadStart === undefined
? ary(func, cap)
: spread(func, spreadStart);
result = ary(func, cap);
if (cap > 1 && !mapping.skipRearg[name]) {
result = rearg(result, mapping.methodRearg[name] || mapping.aryRearg[cap]);
}
if (indexes) {
result = iterateeRearg(result, indexes);
} else if (n) {
result = iterateeAry(result, n);
if (reargIndexes) {
result = iterateeRearg(result, reargIndexes);
} else if (aryN) {
result = iterateeAry(result, aryN);
}
if (cap > 1) {
result = curry(result, cap);
@@ -273,11 +279,14 @@ return /******/ (function(modules) { // webpackBootstrap
if (!isLib) {
return wrap(name, func);
}
// Add placeholder alias.
_.__ = placeholder;
// Iterate over methods for the current ary cap.
var pairs = [];
each(mapping.caps, function(cap) {
each(mapping.aryMethod[cap], function(key) {
var func = _[mapping.key[key] || key];
var func = _[mapping.rename[key] || key];
if (func) {
pairs.push([key, wrap(key, func)]);
}
@@ -311,9 +320,12 @@ return /******/ (function(modules) { // webpackBootstrap
'all': 'some',
'allPass': 'overEvery',
'apply': 'spread',
'assoc': 'set',
'assocPath': 'set',
'compose': 'flowRight',
'contains': 'includes',
'dissoc': 'omit',
'dissoc': 'unset',
'dissocPath': 'unset',
'each': 'forEach',
'eachRight': 'forEachRight',
'equals': 'isEqual',
@@ -340,8 +352,59 @@ return /******/ (function(modules) { // webpackBootstrap
'zipObj': 'zipObject'
};
/** Used to map ary to method names. */
exports.aryMethod = {
1: [
'attempt', 'ceil', 'create', 'curry', 'curryRight', 'floor', 'fromPairs',
'invert', 'iteratee', 'memoize', 'method', 'methodOf', 'mixin', 'over',
'overEvery', 'overSome', 'rest', 'reverse', 'round', 'runInContext',
'spread', 'template', 'trim', 'trimEnd', 'trimStart', 'uniqueId', 'words'
],
2: [
'add', 'after', 'ary', 'assign', 'assignIn', 'at', 'before', 'bind', 'bindKey',
'chunk', 'cloneDeepWith', 'cloneWith', 'concat', 'countBy', 'curryN',
'curryRightN', 'debounce', 'defaults', 'defaultsDeep', 'delay', 'difference',
'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq', 'every',
'filter', 'find', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
'findLastKey', 'flatMap', 'forEach', 'forEachRight', 'forIn', 'forInRight',
'forOwn', 'forOwnRight', 'get', 'groupBy', 'gt', 'gte', 'has', 'hasIn',
'includes', 'indexOf', 'intersection', 'invertBy', 'invoke', 'invokeMap',
'isEqual', 'isMatch', 'join', 'keyBy', 'lastIndexOf', 'lt', 'lte', 'map',
'mapKeys', 'mapValues', 'matchesProperty', 'maxBy', 'merge', 'minBy', 'omit',
'omitBy', 'orderBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt',
'partial', 'partialRight', 'partition', 'pick', 'pickBy', 'pull', 'pullAll',
'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',
'repeat', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',
'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',
'split', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight', 'takeRightWhile',
'takeWhile', 'tap', 'throttle', 'thru', 'times', 'truncate', 'union', 'uniqBy',
'uniqWith', 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',
'zipObjectDeep'
],
3: [
'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',
'getOr', 'inRange', 'intersectionBy', 'intersectionWith', 'isEqualWith',
'isMatchWith', 'mergeWith', 'pullAllBy', 'reduce', 'reduceRight', 'replace',
'set', 'slice', 'sortedIndexBy', 'sortedLastIndexBy', 'transform', 'unionBy',
'unionWith', 'xorBy', 'xorWith', 'zipWith'
],
4: [
'fill', 'setWith'
]
};
/** Used to map ary to rearg configs. */
exports.aryRearg = {
2: [1, 0],
3: [2, 1, 0],
4: [3, 2, 0, 1]
};
/** Used to iterate `mapping.aryMethod` keys. */
exports.caps = [1, 2, 3, 4];
/** Used to map method names to their iteratee ary. */
exports.aryIteratee = {
exports.iterateeAry = {
'assignWith': 2,
'assignInWith': 2,
'cloneDeepWith': 1,
@@ -380,53 +443,6 @@ return /******/ (function(modules) { // webpackBootstrap
'transform': 2
};
/** Used to map ary to method names. */
exports.aryMethod = {
1: [
'attempt', 'ceil', 'create', 'curry', 'curryRight', 'floor', 'fromPairs',
'invert', 'iteratee', 'memoize', 'method', 'methodOf', 'mixin', 'over',
'overEvery', 'overSome', 'rest', 'reverse', 'round', 'runInContext',
'template', 'trim', 'trimEnd', 'trimStart', 'uniqueId', 'words'
],
2: [
'add', 'after', 'ary', 'assign', 'assignIn', 'at', 'before', 'bind', 'bindKey',
'chunk', 'cloneDeepWith', 'cloneWith', 'concat', 'countBy', 'curryN',
'curryRightN', 'debounce', 'defaults', 'defaultsDeep', 'delay', 'difference',
'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq', 'every',
'filter', 'find', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
'findLastKey', 'flatMap', 'forEach', 'forEachRight', 'forIn', 'forInRight',
'forOwn', 'forOwnRight', 'get', 'groupBy', 'gt', 'gte', 'has', 'hasIn',
'includes', 'indexOf', 'intersection', 'invertBy', 'invoke', 'invokeMap',
'isEqual', 'isMatch', 'join', 'keyBy', 'lastIndexOf', 'lt', 'lte', 'map',
'mapKeys', 'mapValues', 'matchesProperty', 'maxBy', 'merge', 'minBy', 'omit',
'omitBy', 'orderBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt',
'partition', 'pick', 'pickBy', 'pull', 'pullAll', 'pullAt', 'random', 'range',
'rangeRight', 'rearg', 'reject', 'remove', 'repeat', 'result', 'sampleSize',
'some', 'sortBy', 'sortedIndex', 'sortedIndexOf', 'sortedLastIndex',
'sortedLastIndexOf', 'sortedUniqBy', 'split', 'startsWith', 'subtract',
'sumBy', 'take', 'takeRight', 'takeRightWhile', 'takeWhile', 'tap', 'throttle',
'thru', 'times', 'truncate', 'union', 'uniqBy', 'uniqWith', 'unset', 'unzipWith',
'without', 'wrap', 'xor', 'zip', 'zipObject', 'zipObjectDeep'
],
3: [
'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',
'getOr', 'inRange', 'intersectionBy', 'intersectionWith', 'isEqualWith',
'isMatchWith', 'mergeWith', 'pullAllBy', 'reduce', 'reduceRight', 'replace',
'set', 'slice', 'sortedIndexBy', 'sortedLastIndexBy', 'transform', 'unionBy',
'unionWith', 'xorBy', 'xorWith', 'zipWith'
],
4: [
'fill', 'setWith'
]
};
/** Used to map ary to rearg configs. */
exports.aryRearg = {
2: [1, 0],
3: [2, 1, 0],
4: [3, 2, 0, 1]
};
/** Used to map method names to iteratee rearg configs. */
exports.iterateeRearg = {
'findKey': [1],
@@ -448,14 +464,10 @@ return /******/ (function(modules) { // webpackBootstrap
'transform': [2, 0, 1]
};
/** Used to iterate `mapping.aryMethod` keys. */
exports.caps = [1, 2, 3, 4];
/** Used to map keys to other keys. */
exports.key = {
'curryN': 'curry',
'curryRightN': 'curryRight',
'getOr': 'get'
/** Used to map method names to spread configs. */
exports.methodSpread = {
'partial': 1,
'partialRight': 1
};
/** Used to identify methods which mutate arrays or objects. */
@@ -481,7 +493,8 @@ return /******/ (function(modules) { // webpackBootstrap
},
'set': {
'set': true,
'setWith': true
'setWith': true,
'unset': true
}
};
@@ -512,6 +525,13 @@ return /******/ (function(modules) { // webpackBootstrap
return result;
}());
/** Used to map method names to other names. */
exports.rename = {
'curryN': 'curry',
'curryRightN': 'curryRight',
'getOr': 'get'
};
/** Used to track methods that skip `_.rearg`. */
exports.skipRearg = {
'assign': true,
@@ -520,6 +540,8 @@ return /******/ (function(modules) { // webpackBootstrap
'difference': true,
'matchesProperty': true,
'merge': true,
'partial': true,
'partialRight': true,
'random': true,
'range': true,
'rangeRight': true,

21
dist/lodash.fp.min.js vendored
View File

@@ -1,11 +1,12 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.fp=t():e.fp=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){function n(e){return i(e,e)}var i=r(1);e.exports=n},function(e,t,r){function n(e,t,r){
if("function"!=typeof r&&(r=t,t=void 0),null==r)throw new TypeError;var s=void 0===t&&"string"==typeof r.VERSION,u=s?r:{ary:e.ary,cloneDeep:e.cloneDeep,curry:e.curry,forEach:e.forEach,isFunction:e.isFunction,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg},c=u.ary,p=u.cloneDeep,f=u.curry,l=u.forEach,h=u.isFunction,d=u.keys,y=u.rearg,g=function(e,t){return 2==t?function(t,r){return e.apply(void 0,arguments)}:function(t){return e.apply(void 0,arguments)}},m=function(e,t){return 2==t?function(t,r){return e(t,r);
}:function(t){return e(t)}},v=function(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r},W=function(e){return function(t){return e({},t)}},R=function(e,t){return O(e,t,!0)},x=function(e,t){return O(e,function(e){return m(e,t)})},I=function(e,t){return O(e,function(e){var r=t.length;return g(y(m(e,r),t),r)})},O=function(e,t,r){return function(){for(var n=arguments.length,i=Array(n);n--;)i[n]=arguments[n];i[0]=t(i[0]);var a=e.apply(void 0,i);return r?i[0]:a}},b={iteratee:function(e){return function(){
var t=arguments[0],r=arguments[1];r=r>2?r-2:1,t=e(t);var n=t.length;return n&&r>=n?t:m(t,r)}},mixin:function(e){return function(t){var r=this;if(!h(r))return e(r,Object(t));var n=[],i=[];return l(d(t),function(e){var a=t[e];h(a)&&(i.push(e),n.push(r.prototype[e]))}),e(r,Object(t)),l(i,function(e,t){var i=n[t];h(i)?r.prototype[e]=i:delete r.prototype[e]}),r}},runInContext:function(t){return function(r){return n(e,t(r))}}},k=function(e,t){e=i.aliasToReal[e]||e;var r=b[e];if(r)return r(t);a.array[e]?t=R(t,v):a.object[e]?t=R(t,W(t)):a.set[e]&&(t=R(t,p));
var n;return l(i.caps,function(r){return l(i.aryMethod[r],function(a){if(e==a){var o=i.iterateeRearg[e],u=!s&&i.aryIteratee[e];return n=c(t,r),r>1&&!i.skipRearg[e]&&(n=y(n,i.methodRearg[e]||i.aryRearg[r])),o?n=I(n,o):u&&(n=x(n,u)),r>1&&(n=f(n,r)),!1}}),!n}),n||(n=t),i.placeholder[e]&&(n.placeholder=o),n};if(!s)return k(t,r);var B=[];return l(i.caps,function(e){l(i.aryMethod[e],function(e){var t=u[i.key[e]||e];t&&B.push([e,k(e,t)])})}),l(B,function(e){u[e[0]]=e[1]}),l(d(u),function(e){l(i.realToAlias[e]||[],function(t){
u[t]=u[e]})}),u}var i=r(2),a=i.mutate,o={};e.exports=n},function(e,t){t.aliasToReal={all:"some",allPass:"overEvery",apply:"spread",compose:"flowRight",contains:"includes",dissoc:"omit",each:"forEach",eachRight:"forEachRight",equals:"isEqual",extend:"assignIn",extendWith:"assignInWith",first:"head",init:"initial",mapObj:"mapValues",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",pickAll:"pick",pipe:"flow",prop:"get",propOf:"propertyOf",propOr:"getOr",somePass:"overSome",
unapply:"rest",unnest:"flatten",useWith:"overArgs",whereEq:"filter",zipObj:"zipObject"},t.aryIteratee={assignWith:2,assignInWith:2,cloneDeepWith:1,cloneWith:1,dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findIndex:1,findKey:1,findLast:1,findLastIndex:1,findLastKey:1,flatMap:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,isEqualWith:2,isMatchWith:2,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,
transform:2},t.aryMethod={1:["attempt","ceil","create","curry","curryRight","floor","fromPairs","invert","iteratee","memoize","method","methodOf","mixin","over","overEvery","overSome","rest","reverse","round","runInContext","template","trim","trimEnd","trimStart","uniqueId","words"],2:["add","after","ary","assign","assignIn","at","before","bind","bindKey","chunk","cloneDeepWith","cloneWith","concat","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","delay","difference","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","merge","minBy","omit","omitBy","orderBy","overArgs","pad","padEnd","padStart","parseInt","partition","pick","pickBy","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],
3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","getOr","inRange","intersectionBy","intersectionWith","isEqualWith","isMatchWith","mergeWith","pullAllBy","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","xorBy","xorWith","zipWith"],4:["fill","setWith"]},t.aryRearg={2:[1,0],3:[2,1,0],4:[3,2,0,1]},t.iterateeRearg={findKey:[1],findLastKey:[1],mapKeys:[1]},t.methodRearg={assignInWith:[1,2,0],assignWith:[1,2,0],
clamp:[2,0,1],mergeWith:[1,2,0],reduce:[2,0,1],reduceRight:[2,0,1],set:[2,0,1],setWith:[3,1,2,0],slice:[2,0,1],transform:[2,0,1]},t.caps=[1,2,3,4],t.key={curryN:"curry",curryRightN:"curryRight",getOr:"get"},t.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignIn:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsDeep:!0,merge:!0,mergeWith:!0},set:{set:!0,setWith:!0}},t.placeholder={bind:!0,bindKey:!0,curry:!0,curryRight:!0,partial:!0,partialRight:!0
},t.realToAlias=function(){var e=Object.prototype.hasOwnProperty,r=t.aliasToReal,n={};for(var i in r){var a=r[i];e.call(n,a)?n[a].push(i):n[a]=[i]}return n}(),t.skipRearg={assign:!0,assignIn:!0,concat:!0,difference:!0,matchesProperty:!0,merge:!0,random:!0,range:!0,rangeRight:!0,zip:!0,zipObject:!0}}])});
if("function"!=typeof r&&(r=t,t=void 0),null==r)throw new TypeError;var s=void 0===t&&"string"==typeof r.VERSION,u=s?r:{ary:e.ary,cloneDeep:e.cloneDeep,curry:e.curry,forEach:e.forEach,isFunction:e.isFunction,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,rest:e.rest},c=u.ary,p=u.cloneDeep,l=u.curry,f=u.forEach,h=u.isFunction,d=u.keys,g=u.rearg,y=u.spread,m=function(e,t){return 2==t?function(t,r){return e.apply(void 0,arguments)}:function(t){return e.apply(void 0,arguments)}},v=function(e,t){return 2==t?function(t,r){
return e(t,r)}:function(t){return e(t)}},R=function(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r},W=function(e){return function(t){return e({},t)}},x=function(e,t){return b(e,t,!0)},I=function(e,t){return b(e,function(e){return v(e,t)})},O=function(e,t){return b(e,function(e){var r=t.length;return m(g(v(e,r),t),r)})},b=function(e,t,r){return function(){for(var n=arguments.length,i=Array(n);n--;)i[n]=arguments[n];i[0]=t(i[0]);var a=e.apply(void 0,i);return r?i[0]:a}},B={iteratee:function(e){
return function(){var t=arguments[0],r=arguments[1];r=r>2?r-2:1,t=e(t);var n=t.length;return n&&r>=n?t:v(t,r)}},mixin:function(e){return function(t){var r=this;if(!h(r))return e(r,Object(t));var n=[],i=[];return f(d(t),function(e){var a=t[e];h(a)&&(i.push(e),n.push(r.prototype[e]))}),e(r,Object(t)),f(i,function(e,t){var i=n[t];h(i)?r.prototype[e]=i:delete r.prototype[e]}),r}},runInContext:function(t){return function(r){return n(e,t(r))}}},E=function(e,t){e=i.aliasToReal[e]||e;var r=B[e];if(r)return r(t);
a.array[e]?t=x(t,R):a.object[e]?t=x(t,W(t)):a.set[e]&&(t=x(t,p));var n;return f(i.caps,function(r){return f(i.aryMethod[r],function(a){if(e==a){var o=!s&&i.iterateeAry[e],u=i.iterateeRearg[e],p=i.methodSpread[e];return n=void 0===p?c(t,r):y(t,p),r>1&&!i.skipRearg[e]&&(n=g(n,i.methodRearg[e]||i.aryRearg[r])),u?n=O(n,u):o&&(n=I(n,o)),r>1&&(n=l(n,r)),!1}}),!n}),n||(n=t),i.placeholder[e]&&(n.placeholder=o),n};if(!s)return E(t,r);u.__=o;var k=[];return f(i.caps,function(e){f(i.aryMethod[e],function(e){
var t=u[i.rename[e]||e];t&&k.push([e,E(e,t)])})}),f(k,function(e){u[e[0]]=e[1]}),f(d(u),function(e){f(i.realToAlias[e]||[],function(t){u[t]=u[e]})}),u}var i=r(2),a=i.mutate,o={};e.exports=n},function(e,t){t.aliasToReal={all:"some",allPass:"overEvery",apply:"spread",assoc:"set",assocPath:"set",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",each:"forEach",eachRight:"forEachRight",equals:"isEqual",extend:"assignIn",extendWith:"assignInWith",first:"head",init:"initial",mapObj:"mapValues",
omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",pickAll:"pick",pipe:"flow",prop:"get",propOf:"propertyOf",propOr:"getOr",somePass:"overSome",unapply:"rest",unnest:"flatten",useWith:"overArgs",whereEq:"filter",zipObj:"zipObject"},t.aryMethod={1:["attempt","ceil","create","curry","curryRight","floor","fromPairs","invert","iteratee","memoize","method","methodOf","mixin","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words"],
2:["add","after","ary","assign","assignIn","at","before","bind","bindKey","chunk","cloneDeepWith","cloneWith","concat","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","delay","difference","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","merge","minBy","omit","omitBy","orderBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],
3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","getOr","inRange","intersectionBy","intersectionWith","isEqualWith","isMatchWith","mergeWith","pullAllBy","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","xorBy","xorWith","zipWith"],4:["fill","setWith"]},t.aryRearg={2:[1,0],3:[2,1,0],4:[3,2,0,1]},t.caps=[1,2,3,4],t.iterateeAry={assignWith:2,assignInWith:2,cloneDeepWith:1,cloneWith:1,dropRightWhile:1,dropWhile:1,
every:1,filter:1,find:1,findIndex:1,findKey:1,findLast:1,findLastIndex:1,findLastKey:1,flatMap:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,isEqualWith:2,isMatchWith:2,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},t.iterateeRearg={findKey:[1],findLastKey:[1],mapKeys:[1]},t.methodRearg={assignInWith:[1,2,0],assignWith:[1,2,0],clamp:[2,0,1],mergeWith:[1,2,0],reduce:[2,0,1],reduceRight:[2,0,1],
set:[2,0,1],setWith:[3,1,2,0],slice:[2,0,1],transform:[2,0,1]},t.methodSpread={partial:1,partialRight:1},t.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignIn:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsDeep:!0,merge:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0}},t.placeholder={bind:!0,bindKey:!0,curry:!0,curryRight:!0,partial:!0,partialRight:!0},t.realToAlias=function(){var e=Object.prototype.hasOwnProperty,r=t.aliasToReal,n={};
for(var i in r){var a=r[i];e.call(n,a)?n[a].push(i):n[a]=[i]}return n}(),t.rename={curryN:"curry",curryRightN:"curryRight",getOr:"get"},t.skipRearg={assign:!0,assignIn:!0,concat:!0,difference:!0,matchesProperty:!0,merge:!0,partial:!0,partialRight:!0,random:!0,range:!0,rangeRight:!0,zip:!0,zipObject:!0}}])});

295
dist/lodash.js vendored
View File

@@ -1,6 +1,6 @@
/**
* @license
* lodash 4.1.0 (Custom Build) <https://lodash.com/>
* lodash 4.2.0 (Custom Build) <https://lodash.com/>
* Build: `lodash -o ./dist/lodash.js`
* Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
@@ -13,7 +13,7 @@
var undefined;
/** Used as the semantic version number. */
var VERSION = '4.1.0';
var VERSION = '4.2.0';
/** Used to compose bitmasks for wrapper metadata. */
var BIND_FLAG = 1,
@@ -397,11 +397,11 @@
* @private
* @param {Function} func The function to invoke.
* @param {*} thisArg The `this` binding of `func`.
* @param {...*} [args] The arguments to invoke `func` with.
* @param {...*} args The arguments to invoke `func` with.
* @returns {*} Returns the result of `func`.
*/
function apply(func, thisArg, args) {
var length = args ? args.length : 0;
var length = args.length;
switch (length) {
case 0: return func.call(thisArg);
case 1: return func.call(thisArg, args[0]);
@@ -841,7 +841,7 @@
result = result === undefined ? current : (result + current);
}
}
return length ? result : 0;
return result;
}
/**
@@ -1254,14 +1254,14 @@
* lodash.isFunction(lodash.bar);
* // => true
*
* // using `context` to mock `Date#getTime` use in `_.now`
* // Use `context` to mock `Date#getTime` use in `_.now`.
* var mock = _.runInContext({
* 'Date': function() {
* return { 'getTime': getTimeMock };
* }
* });
*
* // or creating a suped-up `defer` in Node.js
* // Create a suped-up `defer` in Node.js.
* var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
*/
function runInContext(context) {
@@ -1451,11 +1451,11 @@
*
* var wrapped = _([1, 2, 3]);
*
* // returns an unwrapped value
* // Returns an unwrapped value.
* wrapped.reduce(_.add);
* // => 6
*
* // returns a wrapped value
* // Returns a wrapped value.
* var squares = wrapped.map(square);
*
* _.isArray(squares);
@@ -5471,7 +5471,7 @@
* _.differenceBy([3.1, 2.2, 1.3], [4.4, 2.5], Math.floor);
* // => [3.1, 1.3]
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
* // => [{ 'x': 2 }]
*/
@@ -5603,15 +5603,15 @@
* _.dropRightWhile(users, function(o) { return !o.active; });
* // => objects for ['barney']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
* // => objects for ['barney', 'fred']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.dropRightWhile(users, ['active', false]);
* // => objects for ['barney']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.dropRightWhile(users, 'active');
* // => objects for ['barney', 'fred', 'pebbles']
*/
@@ -5643,15 +5643,15 @@
* _.dropWhile(users, function(o) { return !o.active; });
* // => objects for ['pebbles']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.dropWhile(users, { 'user': 'barney', 'active': false });
* // => objects for ['fred', 'pebbles']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.dropWhile(users, ['active', false]);
* // => objects for ['pebbles']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.dropWhile(users, 'active');
* // => objects for ['barney', 'fred', 'pebbles']
*/
@@ -5722,15 +5722,15 @@
* _.findIndex(users, function(o) { return o.user == 'barney'; });
* // => 0
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.findIndex(users, { 'user': 'fred', 'active': false });
* // => 1
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.findIndex(users, ['active', false]);
* // => 0
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.findIndex(users, 'active');
* // => 2
*/
@@ -5761,15 +5761,15 @@
* _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
* // => 2
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.findLastIndex(users, { 'user': 'barney', 'active': true });
* // => 0
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.findLastIndex(users, ['active', false]);
* // => 2
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.findLastIndex(users, 'active');
* // => 0
*/
@@ -5779,31 +5779,6 @@
: -1;
}
/**
* Creates an array of flattened values by running each element in `array`
* through `iteratee` and concating its result to the other mapped values.
* The iteratee is invoked with three arguments: (value, index|key, array).
*
* @static
* @memberOf _
* @category Array
* @param {Array} array The array to iterate over.
* @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration.
* @returns {Array} Returns the new array.
* @example
*
* function duplicate(n) {
* return [n, n];
* }
*
* _.flatMap([1, 2], duplicate);
* // => [1, 1, 2, 2]
*/
function flatMap(array, iteratee) {
var length = array ? array.length : 0;
return length ? baseFlatten(arrayMap(array, getIteratee(iteratee, 3))) : [];
}
/**
* Flattens `array` a single level.
*
@@ -5891,8 +5866,7 @@
* Gets the index at which the first occurrence of `value` is found in `array`
* using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
* for equality comparisons. If `fromIndex` is negative, it's used as the offset
* from the end of `array`. If `array` is sorted providing `true` for `fromIndex`
* performs a faster binary search.
* from the end of `array`.
*
* @static
* @memberOf _
@@ -5906,7 +5880,7 @@
* _.indexOf([1, 2, 1, 2], 2);
* // => 1
*
* // using `fromIndex`
* // Search from the `fromIndex`.
* _.indexOf([1, 2, 1, 2], 2, 2);
* // => 3
*/
@@ -5977,7 +5951,7 @@
* _.intersectionBy([2.1, 1.2], [4.3, 2.4], Math.floor);
* // => [2.1]
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
* // => [{ 'x': 1 }]
*/
@@ -6080,7 +6054,7 @@
* _.lastIndexOf([1, 2, 1, 2], 2);
* // => 3
*
* // using `fromIndex`
* // Search from the `fromIndex`.
* _.lastIndexOf([1, 2, 1, 2], 2, 2);
* // => 1
*/
@@ -6356,7 +6330,7 @@
* _.sortedIndexBy(['thirty', 'fifty'], 'forty', _.propertyOf(dict));
* // => 1
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.sortedIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x');
* // => 0
*/
@@ -6424,7 +6398,7 @@
* @returns {number} Returns the index at which `value` should be inserted into `array`.
* @example
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.sortedLastIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x');
* // => 1
*/
@@ -6491,7 +6465,7 @@
* @example
*
* _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
* // => [1.1, 2.2]
* // => [1.1, 2.3]
*/
function sortedUniqBy(array, iteratee) {
return (array && array.length)
@@ -6604,15 +6578,15 @@
* _.takeRightWhile(users, function(o) { return !o.active; });
* // => objects for ['fred', 'pebbles']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
* // => objects for ['pebbles']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.takeRightWhile(users, ['active', false]);
* // => objects for ['fred', 'pebbles']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.takeRightWhile(users, 'active');
* // => []
*/
@@ -6644,15 +6618,15 @@
* _.takeWhile(users, function(o) { return !o.active; });
* // => objects for ['barney', 'fred']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.takeWhile(users, { 'user': 'barney', 'active': false });
* // => objects for ['barney']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.takeWhile(users, ['active', false]);
* // => objects for ['barney', 'fred']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.takeWhile(users, 'active');
* // => []
*/
@@ -6697,7 +6671,7 @@
* _.unionBy([2.1, 1.2], [4.3, 2.4], Math.floor);
* // => [2.1, 1.2, 4.3]
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
* // => [{ 'x': 1 }, { 'x': 2 }]
*/
@@ -6774,7 +6748,7 @@
* _.uniqBy([2.1, 1.2, 2.3], Math.floor);
* // => [2.1, 1.2]
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
* // => [{ 'x': 1 }, { 'x': 2 }]
*/
@@ -6930,7 +6904,7 @@
* _.xorBy([2.1, 1.2], [4.3, 2.4], Math.floor);
* // => [1.2, 4.3]
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
* // => [{ 'x': 2 }]
*/
@@ -7085,10 +7059,9 @@
}
/**
* This method invokes `interceptor` and returns `value`. The interceptor is
* invoked with one argument; (value). The purpose of this method is to "tap into"
* a method chain in order to perform operations on intermediate results within
* the chain.
* This method invokes `interceptor` and returns `value`. The interceptor
* is invoked with one argument; (value). The purpose of this method is to
* "tap into" a method chain in order to modify intermediate results.
*
* @static
* @memberOf _
@@ -7100,6 +7073,7 @@
*
* _([1, 2, 3])
* .tap(function(array) {
* // Mutate input array.
* array.pop();
* })
* .reverse()
@@ -7113,6 +7087,8 @@
/**
* This method is like `_.tap` except that it returns the result of `interceptor`.
* The purpose of this method is to "pass thru" values replacing intermediate
* results in a method chain.
*
* @static
* @memberOf _
@@ -7188,11 +7164,11 @@
* { 'user': 'fred', 'age': 40 }
* ];
*
* // without explicit chaining
* // A sequence without explicit chaining.
* _(users).head();
* // => { 'user': 'barney', 'age': 36 }
*
* // with explicit chaining
* // A sequence with explicit chaining.
* _(users)
* .chain()
* .head()
@@ -7447,15 +7423,15 @@
* { 'user': 'fred', 'active': false }
* ];
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.every(users, { 'user': 'barney', 'active': false });
* // => false
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.every(users, ['active', false]);
* // => true
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.every(users, 'active');
* // => false
*/
@@ -7488,15 +7464,15 @@
* _.filter(users, function(o) { return !o.active; });
* // => objects for ['fred']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.filter(users, { 'age': 36, 'active': true });
* // => objects for ['barney']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.filter(users, ['active', false]);
* // => objects for ['fred']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.filter(users, 'active');
* // => objects for ['barney']
*/
@@ -7527,15 +7503,15 @@
* _.find(users, function(o) { return o.age < 40; });
* // => object for 'barney'
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.find(users, { 'age': 1, 'active': true });
* // => object for 'pebbles'
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.find(users, ['active', false]);
* // => object for 'fred'
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.find(users, 'active');
* // => object for 'barney'
*/
@@ -7574,6 +7550,30 @@
return baseFind(collection, predicate, baseEachRight);
}
/**
* Creates an array of flattened values by running each element in `collection`
* through `iteratee` and concating its result to the other mapped values.
* The iteratee is invoked with three arguments: (value, index|key, collection).
*
* @static
* @memberOf _
* @category Collection
* @param {Array|Object} collection The collection to iterate over.
* @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration.
* @returns {Array} Returns the new flattened array.
* @example
*
* function duplicate(n) {
* return [n, n];
* }
*
* _.flatMap([1, 2], duplicate);
* // => [1, 1, 2, 2]
*/
function flatMap(collection, iteratee) {
return baseFlatten(map(collection, iteratee));
}
/**
* Iterates over elements of `collection` invoking `iteratee` for each element.
* The iteratee is invoked with three arguments: (value, index|key, collection).
@@ -7649,7 +7649,7 @@
* _.groupBy([6.1, 4.2, 6.3], Math.floor);
* // => { '4': [4.2], '6': [6.1, 6.3] }
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.groupBy(['one', 'two', 'three'], 'length');
* // => { '3': ['one', 'two'], '5': ['three'] }
*/
@@ -7805,7 +7805,7 @@
* { 'user': 'fred' }
* ];
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.map(users, 'user');
* // => ['barney', 'fred']
*/
@@ -7837,7 +7837,7 @@
* { 'user': 'barney', 'age': 36 }
* ];
*
* // sort by `user` in ascending order and by `age` in descending order
* // Sort by `user` in ascending order and by `age` in descending order.
* _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
* // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
*/
@@ -7878,15 +7878,15 @@
* _.partition(users, function(o) { return o.active; });
* // => objects for [['fred'], ['barney', 'pebbles']]
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.partition(users, { 'age': 1, 'active': false });
* // => objects for [['pebbles'], ['barney', 'fred']]
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.partition(users, ['active', false]);
* // => objects for [['barney', 'pebbles'], ['fred']]
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.partition(users, 'active');
* // => objects for [['fred'], ['barney', 'pebbles']]
*/
@@ -7983,15 +7983,15 @@
* _.reject(users, function(o) { return !o.active; });
* // => objects for ['fred']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.reject(users, { 'age': 40, 'active': true });
* // => objects for ['barney']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.reject(users, ['active', false]);
* // => objects for ['fred']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.reject(users, 'active');
* // => objects for ['barney']
*/
@@ -8130,15 +8130,15 @@
* { 'user': 'fred', 'active': false }
* ];
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.some(users, { 'user': 'barney', 'active': false });
* // => false
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.some(users, ['active', false]);
* // => true
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.some(users, 'active');
* // => true
*/
@@ -8338,7 +8338,7 @@
* bound('!');
* // => 'hi fred!'
*
* // using placeholders
* // Bound with placeholders.
* var bound = _.bind(greet, object, _, '!');
* bound('hi');
* // => 'hi fred!'
@@ -8391,7 +8391,7 @@
* bound('!');
* // => 'hiya fred!'
*
* // using placeholders
* // Bound with placeholders.
* var bound = _.bindKey(object, 'greet', _, '!');
* bound('hi');
* // => 'hiya fred!'
@@ -8441,7 +8441,7 @@
* curried(1, 2, 3);
* // => [1, 2, 3]
*
* // using placeholders
* // Curried with placeholders.
* curried(1)(_, 3)(2);
* // => [1, 2, 3]
*/
@@ -8485,7 +8485,7 @@
* curried(1, 2, 3);
* // => [1, 2, 3]
*
* // using placeholders
* // Curried with placeholders.
* curried(3)(1, _)(2);
* // => [1, 2, 3]
*/
@@ -8528,21 +8528,21 @@
* @returns {Function} Returns the new debounced function.
* @example
*
* // avoid costly calculations while the window size is in flux
* // Avoid costly calculations while the window size is in flux.
* jQuery(window).on('resize', _.debounce(calculateLayout, 150));
*
* // invoke `sendMail` when clicked, debouncing subsequent calls
* // Invoke `sendMail` when clicked, debouncing subsequent calls.
* jQuery(element).on('click', _.debounce(sendMail, 300, {
* 'leading': true,
* 'trailing': false
* }));
*
* // ensure `batchLog` is invoked once after 1 second of debounced calls
* // Ensure `batchLog` is invoked once after 1 second of debounced calls.
* var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
* var source = new EventSource('/stream');
* jQuery(source).on('message', debounced);
*
* // cancel a trailing debounced invocation
* // Cancel the trailing debounced invocation.
* jQuery(window).on('popstate', debounced.cancel);
*/
function debounce(func, wait, options) {
@@ -8675,7 +8675,7 @@
* _.defer(function(text) {
* console.log(text);
* }, 'deferred');
* // logs 'deferred' after one or more milliseconds
* // => logs 'deferred' after one or more milliseconds
*/
var defer = rest(function(func, args) {
return baseDelay(func, 1, args);
@@ -8758,12 +8758,12 @@
* values(object);
* // => [1, 2]
*
* // modifying the result cache
* // Modify the result cache.
* values.cache.set(object, ['a', 'b']);
* values(object);
* // => ['a', 'b']
*
* // replacing `_.memoize.Cache`
* // Replace `_.memoize.Cache`.
* _.memoize.Cache = WeakMap;
*/
function memoize(func, resolver) {
@@ -8908,7 +8908,7 @@
* sayHelloTo('fred');
* // => 'hello fred'
*
* // using placeholders
* // Partially applied with placeholders.
* var greetFred = _.partial(greet, _, 'fred');
* greetFred('hi');
* // => 'hi fred'
@@ -8944,7 +8944,7 @@
* greetFred('hi');
* // => 'hi fred'
*
* // using placeholders
* // Partially applied with placeholders.
* var sayHelloTo = _.partialRight(greet, 'hello', _);
* sayHelloTo('fred');
* // => 'hello fred'
@@ -9041,6 +9041,7 @@
* @memberOf _
* @category Function
* @param {Function} func The function to spread arguments over.
* @param {number} [start=0] The start position of the spread.
* @returns {Function} Returns the new function.
* @example
*
@@ -9051,7 +9052,6 @@
* say(['fred', 'hello']);
* // => 'fred says hello'
*
* // with a Promise
* var numbers = Promise.all([
* Promise.resolve(40),
* Promise.resolve(36)
@@ -9062,13 +9062,20 @@
* }));
* // => a Promise of 76
*/
function spread(func) {
function spread(func, start) {
if (typeof func != 'function') {
throw new TypeError(FUNC_ERROR_TEXT);
}
return function(array) {
return apply(func, this, array);
};
start = start === undefined ? 0 : nativeMax(toInteger(start), 0);
return rest(function(args) {
var array = args[start],
otherArgs = args.slice(0, start);
if (array) {
arrayPush(otherArgs, array);
}
return apply(func, this, otherArgs);
});
}
/**
@@ -9101,14 +9108,14 @@
* @returns {Function} Returns the new throttled function.
* @example
*
* // avoid excessively updating the position while scrolling
* // Avoid excessively updating the position while scrolling.
* jQuery(window).on('scroll', _.throttle(updatePosition, 100));
*
* // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes
* // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
* var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
* jQuery(element).on('click', throttled);
*
* // cancel a trailing throttled invocation
* // Cancel the trailing throttled invocation.
* jQuery(window).on('popstate', throttled.cancel);
*/
function throttle(func, wait, options) {
@@ -10727,15 +10734,15 @@
* _.findKey(users, function(o) { return o.age < 40; });
* // => 'barney' (iteration order is not guaranteed)
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.findKey(users, { 'age': 1, 'active': true });
* // => 'pebbles'
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.findKey(users, ['active', false]);
* // => 'fred'
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.findKey(users, 'active');
* // => 'barney'
*/
@@ -10764,15 +10771,15 @@
* _.findLastKey(users, function(o) { return o.age < 40; });
* // => returns 'pebbles' assuming `_.findKey` returns 'barney'
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.findLastKey(users, { 'age': 36, 'active': true });
* // => 'barney'
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.findLastKey(users, ['active', false]);
* // => 'fred'
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.findLastKey(users, 'active');
* // => 'pebbles'
*/
@@ -11245,7 +11252,7 @@
* _.mapValues(users, function(o) { return o.age; });
* // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.mapValues(users, 'age');
* // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
*/
@@ -11299,6 +11306,8 @@
* method instead. The `customizer` is invoked with seven arguments:
* (objValue, srcValue, key, object, source, stack).
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @category Object
@@ -11405,7 +11414,7 @@
/**
* Creates an object composed of the `object` properties `predicate` returns
* truthy for. The predicate is invoked with one argument: (value).
* truthy for. The predicate is invoked with two arguments: (value, key).
*
* @static
* @memberOf _
@@ -11472,6 +11481,8 @@
* are created for all other missing properties. Use `_.setWith` to customize
* `path` creation.
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @category Object
@@ -11501,6 +11512,8 @@
* path creation is handled by the method instead. The `customizer` is invoked
* with three arguments: (nsValue, key, nsObject).
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @category Object
@@ -11620,6 +11633,8 @@
/**
* Removes the property at `path` of `object`.
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @category Object
@@ -12409,54 +12424,54 @@
* @returns {Function} Returns the compiled template function.
* @example
*
* // using the "interpolate" delimiter to create a compiled template
* // Use the "interpolate" delimiter to create a compiled template.
* var compiled = _.template('hello <%= user %>!');
* compiled({ 'user': 'fred' });
* // => 'hello fred!'
*
* // using the HTML "escape" delimiter to escape data property values
* // Use the HTML "escape" delimiter to escape data property values.
* var compiled = _.template('<b><%- value %></b>');
* compiled({ 'value': '<script>' });
* // => '<b>&lt;script&gt;</b>'
*
* // using the "evaluate" delimiter to execute JavaScript and generate HTML
* // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
* var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
* compiled({ 'users': ['fred', 'barney'] });
* // => '<li>fred</li><li>barney</li>'
*
* // using the internal `print` function in "evaluate" delimiters
* // Use the internal `print` function in "evaluate" delimiters.
* var compiled = _.template('<% print("hello " + user); %>!');
* compiled({ 'user': 'barney' });
* // => 'hello barney!'
*
* // using the ES delimiter as an alternative to the default "interpolate" delimiter
* // Use the ES delimiter as an alternative to the default "interpolate" delimiter.
* var compiled = _.template('hello ${ user }!');
* compiled({ 'user': 'pebbles' });
* // => 'hello pebbles!'
*
* // using custom template delimiters
* // Use custom template delimiters.
* _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
* var compiled = _.template('hello {{ user }}!');
* compiled({ 'user': 'mustache' });
* // => 'hello mustache!'
*
* // using backslashes to treat delimiters as plain text
* // Use backslashes to treat delimiters as plain text.
* var compiled = _.template('<%= "\\<%- value %\\>" %>');
* compiled({ 'value': 'ignored' });
* // => '<%- value %>'
*
* // using the `imports` option to import `jQuery` as `jq`
* // Use the `imports` option to import `jQuery` as `jq`.
* var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
* var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
* compiled({ 'users': ['fred', 'barney'] });
* // => '<li>fred</li><li>barney</li>'
*
* // using the `sourceURL` option to specify a custom sourceURL for the template
* // Use the `sourceURL` option to specify a custom sourceURL for the template.
* var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
* compiled(data);
* // => find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector
*
* // using the `variable` option to ensure a with-statement isn't used in the compiled template
* // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
* var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
* compiled.source;
* // => function(data) {
@@ -12465,8 +12480,8 @@
* // return __p;
* // }
*
* // using the `source` property to inline compiled templates for meaningful
* // line numbers in error messages and a stack trace
* // Use the `source` property to inline compiled templates for meaningful
* // line numbers in error messages and stack traces.
* fs.writeFileSync(path.join(cwd, 'jst.js'), '\
* var JST = {\
* "main": ' + _.template(mainText).source + '\
@@ -12913,7 +12928,7 @@
* @returns {*} Returns the `func` result or error object.
* @example
*
* // avoid throwing errors for invalid selectors
* // Avoid throwing errors for invalid selectors.
* var elements = _.attempt(function(selector) {
* return document.querySelectorAll(selector);
* }, '>_>');
@@ -12926,7 +12941,7 @@
try {
return apply(func, undefined, args);
} catch (e) {
return isError(e) ? e : new Error(e);
return isObject(e) ? e : new Error(e);
}
});
@@ -13139,7 +13154,7 @@
* { 'user': 'fred', 'age': 40 }
* ];
*
* // create custom iteratee shorthands
* // Create custom iteratee shorthands.
* _.iteratee = _.wrap(_.iteratee, function(callback, func) {
* var p = /^(\S+)\s*([<>])\s*(\S+)$/.exec(func);
* return !p ? callback(func) : function(object) {
@@ -13151,9 +13166,7 @@
* // => [{ 'user': 'fred', 'age': 40 }]
*/
function iteratee(func) {
return (isObjectLike(func) && !isArray(func))
? matches(func)
: baseIteratee(func);
return baseIteratee(typeof func == 'function' ? func : baseClone(func, true));
}
/**
@@ -13789,7 +13802,7 @@
* _.maxBy(objects, function(o) { return o.n; });
* // => { 'n': 2 }
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.maxBy(objects, 'n');
* // => { 'n': 2 }
*/
@@ -13857,7 +13870,7 @@
* _.minBy(objects, function(o) { return o.n; });
* // => { 'n': 1 }
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.minBy(objects, 'n');
* // => { 'n': 1 }
*/
@@ -13951,7 +13964,7 @@
* _.sumBy(objects, function(o) { return o.n; });
* // => 20
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.sumBy(objects, 'n');
* // => 20
*/

186
dist/lodash.min.js vendored
View File

@@ -1,115 +1,115 @@
/**
* @license
* lodash 4.1.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
* lodash 4.2.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
* Build: `lodash -o ./dist/lodash.js`
*/
;(function(){function n(n,t){return n.set(t[0],t[1]),n}function t(n,t){return n.add(t),n}function r(n,t,r){switch(r?r.length:0){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function e(n,t,r,e){for(var u=-1,o=n.length;++u<o;){var i=n[u];t(e,i,r(i),n)}return e}function u(n,t){for(var r=-1,e=n.length;++r<e&&false!==t(n[r],r,n););return n}function o(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;
;(function(){function n(n,t){return n.set(t[0],t[1]),n}function t(n,t){return n.add(t),n}function r(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function e(n,t,r,e){for(var u=-1,o=n.length;++u<o;){var i=n[u];t(e,i,r(i),n)}return e}function u(n,t){for(var r=-1,e=n.length;++r<e&&false!==t(n[r],r,n););return n}function o(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;
return true}function i(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;){var i=n[r];t(i,r,n)&&(o[++u]=i)}return o}function f(n,t){return!!n.length&&-1<d(n,t,0)}function c(n,t,r){for(var e=-1,u=n.length;++e<u;)if(r(t,n[e]))return true;return false}function a(n,t){for(var r=-1,e=n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function l(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function s(n,t,r,e){var u=-1,o=n.length;for(e&&o&&(r=n[++u]);++u<o;)r=t(r,n[u],u,n);return r}function h(n,t,r,e){
var u=n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function p(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return true;return false}function _(n,t,r){for(var e=-1,u=n.length;++e<u;){var o=n[e],i=t(o);if(null!=i&&(f===Z?i===i:r(i,f)))var f=i,c=o}return c}function g(n,t,r,e){var u;return r(n,function(n,r,o){return t(n,r,o)?(u=e?r:n,false):void 0}),u}function v(n,t,r){for(var e=n.length,u=r?e:-1;r?u--:++u<e;)if(t(n[u],u,n))return u;return-1}function d(n,t,r){if(t!==t)return C(n,r);--r;for(var e=n.length;++r<e;)if(n[r]===t)return r;
return-1}function y(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function b(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function x(n,t){for(var r,e=-1,u=n.length;++e<u;){var o=t(n[e]);o!==Z&&(r=r===Z?o:r+o)}return u?r:0}function m(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function j(n,t){return a(t,function(t){return[t,n[t]]})}function w(n){return function(t){return n(t)}}function A(n,t){return a(t,function(t){return n[t]})}function O(n,t){for(var r=-1,e=n.length;++r<e&&-1<d(t,n[r],0););
return-1}function y(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function b(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function x(n,t){for(var r,e=-1,u=n.length;++e<u;){var o=t(n[e]);o!==Z&&(r=r===Z?o:r+o)}return r}function m(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function j(n,t){return a(t,function(t){return[t,n[t]]})}function w(n){return function(t){return n(t)}}function A(n,t){return a(t,function(t){return n[t]})}function O(n,t){for(var r=-1,e=n.length;++r<e&&-1<d(t,n[r],0););
return r}function E(n,t){for(var r=n.length;r--&&-1<d(t,n[r],0););return r}function k(n){return n&&n.Object===Object?n:null}function I(n,t){if(n!==t){var r=null===n,e=n===Z,u=n===n,o=null===t,i=t===Z,f=t===t;if(n>t&&!o||!u||r&&!i&&f||e&&f)return 1;if(t>n&&!r||!f||o&&!e&&u||i&&u)return-1}return 0}function R(n){return Bn[n]}function S(n){return zn[n]}function W(n){return"\\"+Fn[n]}function C(n,t,r){var e=n.length;for(t+=r?0:-1;r?t--:++t<e;){var u=n[t];if(u!==u)return t}return-1}function U(n){var t=false;
if(null!=n&&typeof n.toString!="function")try{t=!!(n+"")}catch(r){}return t}function B(n,t){return n=typeof n=="number"||yn.test(n)?+n:-1,n>-1&&0==n%1&&(null==t?9007199254740991:t)>n}function z(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}function L(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function $(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;)n[r]===t&&(n[r]="__lodash_placeholder__",o[++u]=r);return o}function F(n){var t=-1,r=Array(n.size);return n.forEach(function(n){
r[++t]=n}),r}function M(n){if(!n||!kn.test(n))return n.length;for(var t=En.lastIndex=0;En.test(n);)t++;return t}function N(n){return Ln[n]}function D(k){function yn(n){if(ye(n)&&!Lo(n)&&!(n instanceof An)){if(n instanceof wn)return n;if(iu.call(n,"__wrapped__"))return Nr(n)}return new wn(n)}function jn(){}function wn(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=Z}function An(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=false,
r[++t]=n}),r}function M(n){if(!n||!kn.test(n))return n.length;for(var t=En.lastIndex=0;En.test(n);)t++;return t}function N(n){return Ln[n]}function D(k){function yn(n){if(be(n)&&!Lo(n)&&!(n instanceof An)){if(n instanceof wn)return n;if(iu.call(n,"__wrapped__"))return Nr(n)}return new wn(n)}function jn(){}function wn(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=Z}function An(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=false,
this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Bn(){}function zn(n){var t=-1,r=n?n.length:0;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Ln(n){var t=-1,r=n?n.length:0;for(this.__data__=new zn;++t<r;)this.push(n[t])}function $n(n,t){var r=n.__data__;return Cr(t)?(r=r.__data__,"__lodash_hash_undefined__"===(typeof t=="string"?r.string:r.hash)[t]):r.has(t)}function Fn(n){var t=-1,r=n?n.length:0;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1]);
}}function Dn(n,t){var r=qn(n,t);return 0>r?false:(r==n.length-1?n.pop():ju.call(n,r,1),true)}function Zn(n,t){var r=qn(n,t);return 0>r?Z:n[r][1]}function qn(n,t){for(var r=n.length;r--;)if(ce(n[r][0],t))return r;return-1}function Pn(n,t,r){var e=qn(n,t);0>e?n.push([t,r]):n[e][1]=r}function Tn(n,t,r,e){return n===Z||ce(n,uu[r])&&!iu.call(e,r)?t:n}function Kn(n,t,r){(r!==Z&&!ce(n[t],r)||typeof t=="number"&&r===Z&&!(t in n))&&(n[t]=r)}function Jn(n,t,r){var e=n[t];(!ce(e,r)||ce(e,uu[t])&&!iu.call(n,t)||r===Z&&!(t in n))&&(n[t]=r);
}function Yn(n,t,r,e){return Tu(n,function(n,u,o){t(e,n,r(n),o)}),e}function Hn(n,t){return n&&Jt(t,Le(t),n)}function Qn(n,t){for(var r=-1,e=null==n,u=t.length,o=Array(u);++r<u;)o[r]=e?Z:Ue(n,t[r]);return o}function Xn(n,t,r){return n===n&&(r!==Z&&(n=n>r?r:n),t!==Z&&(n=t>n?t:n)),n}function nt(n,t,r,e,o,i){var f;if(r&&(f=o?r(n,e,o,i):r(n)),f!==Z)return f;if(!de(n))return n;if(e=Lo(n)){if(f=Er(n),!t)return Vt(n,f)}else{var c=Ar(n),a="[object Function]"==c||"[object GeneratorFunction]"==c;if("[object Object]"!=c&&"[object Arguments]"!=c&&(!a||o))return Un[c]?Ir(n,c,t):o?n:{};
if(U(n))return o?n:{};if(f=kr(a?{}:n),!t)return Ht(n,Hn(f,n))}return i||(i=new Fn),(o=i.get(n))?o:(i.set(n,f),(e?u:ct)(n,function(e,u){Jn(f,u,nt(e,t,r,u,n,i))}),e?f:Ht(n,f))}function tt(n){var t=Le(n),r=t.length;return function(e){if(null==e)return!r;for(var u=r;u--;){var o=t[u],i=n[o],f=e[o];if(f===Z&&!(o in Object(e))||!i(f))return false}return true}}function rt(n,t,r){if(typeof n!="function")throw new ru("Expected a function");return mu(function(){n.apply(Z,r)},t)}function et(n,t,r,e){var u=-1,o=f,i=true,l=n.length,s=[],h=t.length;
if(!l)return s;r&&(t=a(t,w(r))),e?(o=c,i=false):t.length>=200&&(o=$n,i=false,t=new Ln(t));n:for(;++u<l;){var p=n[u],_=r?r(p):p;if(i&&_===_){for(var g=h;g--;)if(t[g]===_)continue n;s.push(p)}else o(t,_,e)||s.push(p)}return s}function ut(n,t){var r=true;return Tu(n,function(n,e,u){return r=!!t(n,e,u)}),r}function ot(n,t){var r=[];return Tu(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function it(n,t,r,e){e||(e=[]);for(var u=-1,o=n.length;++u<o;){var i=n[u];he(i)&&(r||Lo(i)||le(i))?t?it(i,t,r,e):l(e,i):r||(e[e.length]=i);
}return e}function ft(n,t){null==n||Gu(n,t,$e)}function ct(n,t){return n&&Gu(n,t,Le)}function at(n,t){return n&&Vu(n,t,Le)}function lt(n,t){return i(t,function(t){return _e(n[t])})}function st(n,t){t=Wr(t,n)?[t+""]:Mt(t);for(var r=0,e=t.length;null!=n&&e>r;)n=n[t[r++]];return r&&r==e?n:Z}function ht(n,t){return iu.call(n,t)||typeof n=="object"&&t in n&&null===du(n)}function pt(n,t){return t in Object(n)}function _t(n,t,r){for(var e=r?c:f,u=n.length,o=u,i=Array(u),l=[];o--;){var s=n[o];o&&t&&(s=a(s,w(t))),
i[o]=r||!t&&120>s.length?Z:new Ln(o&&s)}var s=n[0],h=-1,p=s.length,_=i[0];n:for(;++h<p;){var g=s[h],v=t?t(g):g;if(_?!$n(_,v):!e(l,v,r)){for(o=u;--o;){var d=i[o];if(d?!$n(d,v):!e(n[o],v,r))continue n}_&&_.push(v),l.push(g)}}return l}function gt(n,t,r){var e={};return ct(n,function(n,u,o){t(e,r(n),u,o)}),e}function vt(n,t,e){return Wr(t,n)||(t=Mt(t),n=Lr(n,t),t=Pr(t)),t=null==n?n:n[t],null==t?Z:r(t,n,e)}function dt(n,t,r,e,u){if(n===t)n=true;else if(null==n||null==t||!de(n)&&!ye(t))n=n!==n&&t!==t;else n:{
var o=Lo(n),i=Lo(t),f="[object Array]",c="[object Array]";o||(f=Ar(n),"[object Arguments]"==f?f="[object Object]":"[object Object]"!=f&&(o=Oe(n))),i||(c=Ar(t),"[object Arguments]"==c?c="[object Object]":"[object Object]"!=c&&Oe(t));var a="[object Object]"==f&&!U(n),i="[object Object]"==c&&!U(t),c=f==c;if(!c||o||a){if(!(2&e)&&(f=a&&iu.call(n,"__wrapped__"),i=i&&iu.call(t,"__wrapped__"),f||i)){n=dt(f?n.value():n,i?t.value():t,r,e,u);break n}c?(u||(u=new Fn),n=(o?dr:br)(n,t,dt,r,e,u)):n=false}else n=yr(n,t,f,dt,r,e);
}return n}function yt(n,t,r,e){var u=r.length,o=u,i=!e;if(null==n)return!o;for(n=Object(n);u--;){var f=r[u];if(i&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<o;){var f=r[u],c=f[0],a=n[c],l=f[1];if(i&&f[2]){if(a===Z&&!(c in n))return false}else if(f=new Fn,c=e?e(a,l,c,n,t,f):Z,c===Z?!dt(l,a,e,3,f):!c)return false}return true}function bt(n){var t=typeof n;return"function"==t?n:null==n?Te:"object"==t?Lo(n)?wt(n[0],n[1]):jt(n):Ye(n)}function xt(n){n=null==n?n:Object(n);var t,r=[];for(t in n)r.push(t);return r;
}function mt(n,t){var r=-1,e=se(n)?Array(n.length):[];return Tu(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function jt(n){var t=jr(n);if(1==t.length&&t[0][2]){var r=t[0][0],e=t[0][1];return function(n){return null==n?false:n[r]===e&&(e!==Z||r in Object(n))}}return function(r){return r===n||yt(r,n,t)}}function wt(n,t){return function(r){var e=Ue(r,n);return e===Z&&e===t?ze(r,n):dt(t,e,Z,3)}}function At(n,t,r,e,o){if(n!==t){var i=Lo(t)||Oe(t)?Z:$e(t);u(i||t,function(u,f){if(i&&(f=u,u=t[f]),de(u)){o||(o=new Fn);
var c=f,a=o,l=n[c],s=t[c],h=a.get(s);if(h)Kn(n,c,h);else{var h=e?e(l,s,c+"",n,t,a):Z,p=h===Z;p&&(h=s,Lo(s)||Oe(s)?Lo(l)?h=r?Vt(l):l:he(l)?h=Vt(l):(p=false,h=nt(s)):me(s)||le(s)?le(l)?h=We(l):!de(l)||r&&_e(l)?(p=false,h=nt(s)):h=r?nt(l):l:p=false),a.set(s,h),p&&At(h,s,r,e,a),Kn(n,c,h)}}else c=e?e(n[f],u,f+"",n,t,o):Z,c===Z&&(c=u),Kn(n,f,c)})}}function Ot(n,t,r){var e=-1,u=mr();return t=a(t.length?t:Array(1),function(n){return u(n)}),n=mt(n,function(n){return{a:a(t,function(t){return t(n)}),b:++e,c:n}}),b(n,function(n,t){
}}function Dn(n,t){var r=qn(n,t);return 0>r?false:(r==n.length-1?n.pop():ju.call(n,r,1),true)}function Zn(n,t){var r=qn(n,t);return 0>r?Z:n[r][1]}function qn(n,t){for(var r=n.length;r--;)if(ae(n[r][0],t))return r;return-1}function Pn(n,t,r){var e=qn(n,t);0>e?n.push([t,r]):n[e][1]=r}function Tn(n,t,r,e){return n===Z||ae(n,uu[r])&&!iu.call(e,r)?t:n}function Kn(n,t,r){(r!==Z&&!ae(n[t],r)||typeof t=="number"&&r===Z&&!(t in n))&&(n[t]=r)}function Jn(n,t,r){var e=n[t];(!ae(e,r)||ae(e,uu[t])&&!iu.call(n,t)||r===Z&&!(t in n))&&(n[t]=r);
}function Yn(n,t,r,e){return Tu(n,function(n,u,o){t(e,n,r(n),o)}),e}function Hn(n,t){return n&&Jt(t,$e(t),n)}function Qn(n,t){for(var r=-1,e=null==n,u=t.length,o=Array(u);++r<u;)o[r]=e?Z:Be(n,t[r]);return o}function Xn(n,t,r){return n===n&&(r!==Z&&(n=n>r?r:n),t!==Z&&(n=t>n?t:n)),n}function nt(n,t,r,e,o,i){var f;if(r&&(f=o?r(n,e,o,i):r(n)),f!==Z)return f;if(!ye(n))return n;if(e=Lo(n)){if(f=Er(n),!t)return Vt(n,f)}else{var c=Ar(n),a="[object Function]"==c||"[object GeneratorFunction]"==c;if("[object Object]"!=c&&"[object Arguments]"!=c&&(!a||o))return Un[c]?Ir(n,c,t):o?n:{};
if(U(n))return o?n:{};if(f=kr(a?{}:n),!t)return Ht(n,Hn(f,n))}return i||(i=new Fn),(o=i.get(n))?o:(i.set(n,f),(e?u:ct)(n,function(e,u){Jn(f,u,nt(e,t,r,u,n,i))}),e?f:Ht(n,f))}function tt(n){var t=$e(n),r=t.length;return function(e){if(null==e)return!r;for(var u=r;u--;){var o=t[u],i=n[o],f=e[o];if(f===Z&&!(o in Object(e))||!i(f))return false}return true}}function rt(n,t,r){if(typeof n!="function")throw new ru("Expected a function");return mu(function(){n.apply(Z,r)},t)}function et(n,t,r,e){var u=-1,o=f,i=true,l=n.length,s=[],h=t.length;
if(!l)return s;r&&(t=a(t,w(r))),e?(o=c,i=false):t.length>=200&&(o=$n,i=false,t=new Ln(t));n:for(;++u<l;){var p=n[u],_=r?r(p):p;if(i&&_===_){for(var g=h;g--;)if(t[g]===_)continue n;s.push(p)}else o(t,_,e)||s.push(p)}return s}function ut(n,t){var r=true;return Tu(n,function(n,e,u){return r=!!t(n,e,u)}),r}function ot(n,t){var r=[];return Tu(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function it(n,t,r,e){e||(e=[]);for(var u=-1,o=n.length;++u<o;){var i=n[u];pe(i)&&(r||Lo(i)||se(i))?t?it(i,t,r,e):l(e,i):r||(e[e.length]=i);
}return e}function ft(n,t){null==n||Gu(n,t,Fe)}function ct(n,t){return n&&Gu(n,t,$e)}function at(n,t){return n&&Vu(n,t,$e)}function lt(n,t){return i(t,function(t){return ge(n[t])})}function st(n,t){t=Wr(t,n)?[t+""]:Mt(t);for(var r=0,e=t.length;null!=n&&e>r;)n=n[t[r++]];return r&&r==e?n:Z}function ht(n,t){return iu.call(n,t)||typeof n=="object"&&t in n&&null===du(n)}function pt(n,t){return t in Object(n)}function _t(n,t,r){for(var e=r?c:f,u=n.length,o=u,i=Array(u),l=[];o--;){var s=n[o];o&&t&&(s=a(s,w(t))),
i[o]=r||!t&&120>s.length?Z:new Ln(o&&s)}var s=n[0],h=-1,p=s.length,_=i[0];n:for(;++h<p;){var g=s[h],v=t?t(g):g;if(_?!$n(_,v):!e(l,v,r)){for(o=u;--o;){var d=i[o];if(d?!$n(d,v):!e(n[o],v,r))continue n}_&&_.push(v),l.push(g)}}return l}function gt(n,t,r){var e={};return ct(n,function(n,u,o){t(e,r(n),u,o)}),e}function vt(n,t,e){return Wr(t,n)||(t=Mt(t),n=Lr(n,t),t=Pr(t)),t=null==n?n:n[t],null==t?Z:r(t,n,e)}function dt(n,t,r,e,u){if(n===t)n=true;else if(null==n||null==t||!ye(n)&&!be(t))n=n!==n&&t!==t;else n:{
var o=Lo(n),i=Lo(t),f="[object Array]",c="[object Array]";o||(f=Ar(n),"[object Arguments]"==f?f="[object Object]":"[object Object]"!=f&&(o=Ee(n))),i||(c=Ar(t),"[object Arguments]"==c?c="[object Object]":"[object Object]"!=c&&Ee(t));var a="[object Object]"==f&&!U(n),i="[object Object]"==c&&!U(t),c=f==c;if(!c||o||a){if(!(2&e)&&(f=a&&iu.call(n,"__wrapped__"),i=i&&iu.call(t,"__wrapped__"),f||i)){n=dt(f?n.value():n,i?t.value():t,r,e,u);break n}c?(u||(u=new Fn),n=(o?dr:br)(n,t,dt,r,e,u)):n=false}else n=yr(n,t,f,dt,r,e);
}return n}function yt(n,t,r,e){var u=r.length,o=u,i=!e;if(null==n)return!o;for(n=Object(n);u--;){var f=r[u];if(i&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<o;){var f=r[u],c=f[0],a=n[c],l=f[1];if(i&&f[2]){if(a===Z&&!(c in n))return false}else if(f=new Fn,c=e?e(a,l,c,n,t,f):Z,c===Z?!dt(l,a,e,3,f):!c)return false}return true}function bt(n){var t=typeof n;return"function"==t?n:null==n?Ke:"object"==t?Lo(n)?wt(n[0],n[1]):jt(n):Ye(n)}function xt(n){n=null==n?n:Object(n);var t,r=[];for(t in n)r.push(t);return r;
}function mt(n,t){var r=-1,e=he(n)?Array(n.length):[];return Tu(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function jt(n){var t=jr(n);if(1==t.length&&t[0][2]){var r=t[0][0],e=t[0][1];return function(n){return null==n?false:n[r]===e&&(e!==Z||r in Object(n))}}return function(r){return r===n||yt(r,n,t)}}function wt(n,t){return function(r){var e=Be(r,n);return e===Z&&e===t?Le(r,n):dt(t,e,Z,3)}}function At(n,t,r,e,o){if(n!==t){var i=Lo(t)||Ee(t)?Z:Fe(t);u(i||t,function(u,f){if(i&&(f=u,u=t[f]),ye(u)){o||(o=new Fn);
var c=f,a=o,l=n[c],s=t[c],h=a.get(s);if(h)Kn(n,c,h);else{var h=e?e(l,s,c+"",n,t,a):Z,p=h===Z;p&&(h=s,Lo(s)||Ee(s)?Lo(l)?h=r?Vt(l):l:pe(l)?h=Vt(l):(p=false,h=nt(s)):je(s)||se(s)?se(l)?h=Ce(l):!ye(l)||r&&ge(l)?(p=false,h=nt(s)):h=r?nt(l):l:p=false),a.set(s,h),p&&At(h,s,r,e,a),Kn(n,c,h)}}else c=e?e(n[f],u,f+"",n,t,o):Z,c===Z&&(c=u),Kn(n,f,c)})}}function Ot(n,t,r){var e=-1,u=mr();return t=a(t.length?t:Array(1),function(n){return u(n)}),n=mt(n,function(n){return{a:a(t,function(t){return t(n)}),b:++e,c:n}}),b(n,function(n,t){
var e;n:{e=-1;for(var u=n.a,o=t.a,i=u.length,f=r.length;++e<i;){var c=I(u[e],o[e]);if(c){e=f>e?c*("desc"==r[e]?-1:1):c;break n}}e=n.b-t.b}return e})}function Et(n,t){return n=Object(n),s(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}function kt(n,t){var r={};return ft(n,function(n,e){t(n,e)&&(r[e]=n)}),r}function It(n){return function(t){return null==t?Z:t[n]}}function Rt(n){return function(t){return st(t,n)}}function St(n,t,r){var e=-1,u=t.length,o=n;for(r&&(o=a(n,function(n){return r(n)}));++e<u;)for(var i=0,f=t[e],f=r?r(f):f;-1<(i=d(o,f,i));)o!==n&&ju.call(o,i,1),
ju.call(n,i,1);return n}function Wt(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(e==r||u!=o){var o=u;if(B(u))ju.call(n,u,1);else if(Wr(u,n))delete n[u];else{var u=Mt(u),i=Lr(n,u);null!=i&&delete i[Pr(u)]}}}}function Ct(n,t){return n+Au(Wu()*(t-n+1))}function Ut(n,t,r,e){t=Wr(t,n)?[t+""]:Mt(t);for(var u=-1,o=t.length,i=o-1,f=n;null!=f&&++u<o;){var c=t[u];if(de(f)){var a=r;if(u!=i){var l=f[c],a=e?e(l,c,f):Z;a===Z&&(a=null==l?B(t[u+1])?[]:{}:l)}Jn(f,c,a)}f=f[c]}return n}function Bt(n,t,r){var e=-1,u=n.length;
for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++e<u;)r[e]=n[e+t];return r}function zt(n,t){var r;return Tu(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function Lt(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&2147483647>=u){for(;u>e;){var o=e+u>>>1,i=n[o];(r?t>=i:t>i)&&null!==i?e=o+1:u=o}return u}return $t(n,t,Te,r)}function $t(n,t,r,e){t=r(t);for(var u=0,o=n?n.length:0,i=t!==t,f=null===t,c=t===Z;o>u;){var a=Au((u+o)/2),l=r(n[a]),s=l!==Z,h=l===l;(i?h||e:f?h&&s&&(e||null!=l):c?h&&(e||s):null==l?0:e?t>=l:t>l)?u=a+1:o=a;
}return Ru(o,4294967294)}function Ft(n,t){for(var r=0,e=n.length,u=n[0],o=t?t(u):u,i=o,f=0,c=[u];++r<e;)u=n[r],o=t?t(u):u,ce(o,i)||(i=o,c[++f]=u);return c}function Mt(n){return Lo(n)?n:$r(n)}function Nt(n,t,r){var e=-1,u=f,o=n.length,i=true,a=[],l=a;if(r)i=false,u=c;else if(o<200)l=t?[]:a;else{if(u=t?null:Yu(n))return F(u);i=false,u=$n,l=new Ln}n:for(;++e<o;){var s=n[e],h=t?t(s):s;if(i&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue n;t&&l.push(h),a.push(s)}else u(l,h,r)||(l!==a&&l.push(h),a.push(s));
ju.call(n,i,1);return n}function Wt(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(e==r||u!=o){var o=u;if(B(u))ju.call(n,u,1);else if(Wr(u,n))delete n[u];else{var u=Mt(u),i=Lr(n,u);null!=i&&delete i[Pr(u)]}}}}function Ct(n,t){return n+Au(Wu()*(t-n+1))}function Ut(n,t,r,e){t=Wr(t,n)?[t+""]:Mt(t);for(var u=-1,o=t.length,i=o-1,f=n;null!=f&&++u<o;){var c=t[u];if(ye(f)){var a=r;if(u!=i){var l=f[c],a=e?e(l,c,f):Z;a===Z&&(a=null==l?B(t[u+1])?[]:{}:l)}Jn(f,c,a)}f=f[c]}return n}function Bt(n,t,r){var e=-1,u=n.length;
for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++e<u;)r[e]=n[e+t];return r}function zt(n,t){var r;return Tu(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function Lt(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&2147483647>=u){for(;u>e;){var o=e+u>>>1,i=n[o];(r?t>=i:t>i)&&null!==i?e=o+1:u=o}return u}return $t(n,t,Ke,r)}function $t(n,t,r,e){t=r(t);for(var u=0,o=n?n.length:0,i=t!==t,f=null===t,c=t===Z;o>u;){var a=Au((u+o)/2),l=r(n[a]),s=l!==Z,h=l===l;(i?h||e:f?h&&s&&(e||null!=l):c?h&&(e||s):null==l?0:e?t>=l:t>l)?u=a+1:o=a;
}return Ru(o,4294967294)}function Ft(n,t){for(var r=0,e=n.length,u=n[0],o=t?t(u):u,i=o,f=0,c=[u];++r<e;)u=n[r],o=t?t(u):u,ae(o,i)||(i=o,c[++f]=u);return c}function Mt(n){return Lo(n)?n:$r(n)}function Nt(n,t,r){var e=-1,u=f,o=n.length,i=true,a=[],l=a;if(r)i=false,u=c;else if(o<200)l=t?[]:a;else{if(u=t?null:Yu(n))return F(u);i=false,u=$n,l=new Ln}n:for(;++e<o;){var s=n[e],h=t?t(s):s;if(i&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue n;t&&l.push(h),a.push(s)}else u(l,h,r)||(l!==a&&l.push(h),a.push(s));
}return a}function Dt(n,t,r,e){for(var u=n.length,o=e?u:-1;(e?o--:++o<u)&&t(n[o],o,n););return r?Bt(n,e?0:o,e?o+1:u):Bt(n,e?o+1:0,e?u:o)}function Zt(n,t){var r=n;return r instanceof An&&(r=r.value()),s(t,function(n,t){return t.func.apply(t.thisArg,l([n],t.args))},r)}function qt(n,t,r){for(var e=-1,u=n.length;++e<u;)var o=o?l(et(o,n[e],t,r),et(n[e],o,t,r)):n[e];return o&&o.length?Nt(o,t,r):[]}function Pt(n,t,r){for(var e=-1,u=n.length,o=t.length,i={};++e<u;)r(i,n[e],o>e?t[e]:Z);return i}function Tt(n){
var t=new n.constructor(n.byteLength);return new _u(t).set(new _u(n)),t}function Kt(n,t,r){for(var e=r.length,u=-1,o=Iu(n.length-e,0),i=-1,f=t.length,c=Array(f+o);++i<f;)c[i]=t[i];for(;++u<e;)c[r[u]]=n[u];for(;o--;)c[i++]=n[u++];return c}function Gt(n,t,r){for(var e=-1,u=r.length,o=-1,i=Iu(n.length-u,0),f=-1,c=t.length,a=Array(i+c);++o<i;)a[o]=n[o];for(i=o;++f<c;)a[i+f]=t[f];for(;++e<u;)a[i+r[e]]=n[o++];return a}function Vt(n,t){var r=-1,e=n.length;for(t||(t=Array(e));++r<e;)t[r]=n[r];return t}function Jt(n,t,r){
return Yt(n,t,r)}function Yt(n,t,r,e){r||(r={});for(var u=-1,o=t.length;++u<o;){var i=t[u],f=e?e(r[i],n[i],i,r,n):n[i];Jn(r,i,f)}return r}function Ht(n,t){return Jt(n,Xu(n),t)}function Qt(n,t){return function(r,u){var o=Lo(r)?e:Yn,i=t?t():{};return o(r,n,mr(u),i)}}function Xt(n){return fe(function(t,r){var e=-1,u=r.length,o=u>1?r[u-1]:Z,i=u>2?r[2]:Z,o=typeof o=="function"?(u--,o):Z;for(i&&Sr(r[0],r[1],i)&&(o=3>u?Z:o,u=1),t=Object(t);++e<u;)(i=r[e])&&n(t,i,e,o);return t})}function nr(n,t){return function(r,e){
if(null==r)return r;if(!se(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}function tr(n){return function(t,r,e){var u=-1,o=Object(t);e=e(t);for(var i=e.length;i--;){var f=e[n?i:++u];if(false===r(o[f],f,o))break}return t}}function rr(n,t,r){function e(){return(this&&this!==Gn&&this instanceof e?o:n).apply(u?r:this,arguments)}var u=1&t,o=or(n);return e}function er(n){return function(t){t=Ce(t);var r=kn.test(t)?t.match(En):Z,e=r?r[0]:t.charAt(0);return t=r?r.slice(1).join(""):t.slice(1),
e[n]()+t}}function ur(n){return function(t){return s(qe(De(t)),n,"")}}function or(n){return function(){var t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=Pu(n.prototype),t=n.apply(r,t);return de(t)?t:r}}function ir(n,t,e){
function u(){for(var i=arguments.length,f=i,c=Array(i),a=this&&this!==Gn&&this instanceof u?o:n,l=u.placeholder;f--;)c[f]=arguments[f];return f=3>i&&c[0]!==l&&c[i-1]!==l?[]:$(c,l),i-=f.length,e>i?_r(n,t,cr,l,Z,c,f,Z,Z,e-i):r(a,this,c)}var o=or(n);return u}function fr(n){return fe(function(t){t=it(t);var r=t.length,e=r,u=wn.prototype.thru;for(n&&t.reverse();e--;){var o=t[e];if(typeof o!="function")throw new ru("Expected a function");if(u&&!i&&"wrapper"==xr(o))var i=new wn([],true)}for(e=i?e:r;++e<r;)var o=t[e],u=xr(o),f="wrapper"==u?Hu(o):Z,i=f&&Ur(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?i[xr(f[0])].apply(i,f[3]):1==o.length&&Ur(o)?i[u]():i.thru(o);
return Yt(n,t,r)}function Yt(n,t,r,e){r||(r={});for(var u=-1,o=t.length;++u<o;){var i=t[u],f=e?e(r[i],n[i],i,r,n):n[i];Jn(r,i,f)}return r}function Ht(n,t){return Jt(n,Xu(n),t)}function Qt(n,t){return function(r,u){var o=Lo(r)?e:Yn,i=t?t():{};return o(r,n,mr(u),i)}}function Xt(n){return ce(function(t,r){var e=-1,u=r.length,o=u>1?r[u-1]:Z,i=u>2?r[2]:Z,o=typeof o=="function"?(u--,o):Z;for(i&&Sr(r[0],r[1],i)&&(o=3>u?Z:o,u=1),t=Object(t);++e<u;)(i=r[e])&&n(t,i,e,o);return t})}function nr(n,t){return function(r,e){
if(null==r)return r;if(!he(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}function tr(n){return function(t,r,e){var u=-1,o=Object(t);e=e(t);for(var i=e.length;i--;){var f=e[n?i:++u];if(false===r(o[f],f,o))break}return t}}function rr(n,t,r){function e(){return(this&&this!==Gn&&this instanceof e?o:n).apply(u?r:this,arguments)}var u=1&t,o=or(n);return e}function er(n){return function(t){t=Ue(t);var r=kn.test(t)?t.match(En):Z,e=r?r[0]:t.charAt(0);return t=r?r.slice(1).join(""):t.slice(1),
e[n]()+t}}function ur(n){return function(t){return s(Pe(Ze(t)),n,"")}}function or(n){return function(){var t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=Pu(n.prototype),t=n.apply(r,t);return ye(t)?t:r}}function ir(n,t,e){
function u(){for(var i=arguments.length,f=i,c=Array(i),a=this&&this!==Gn&&this instanceof u?o:n,l=u.placeholder;f--;)c[f]=arguments[f];return f=3>i&&c[0]!==l&&c[i-1]!==l?[]:$(c,l),i-=f.length,e>i?_r(n,t,cr,l,Z,c,f,Z,Z,e-i):r(a,this,c)}var o=or(n);return u}function fr(n){return ce(function(t){t=it(t);var r=t.length,e=r,u=wn.prototype.thru;for(n&&t.reverse();e--;){var o=t[e];if(typeof o!="function")throw new ru("Expected a function");if(u&&!i&&"wrapper"==xr(o))var i=new wn([],true)}for(e=i?e:r;++e<r;)var o=t[e],u=xr(o),f="wrapper"==u?Hu(o):Z,i=f&&Ur(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?i[xr(f[0])].apply(i,f[3]):1==o.length&&Ur(o)?i[u]():i.thru(o);
return function(){var n=arguments,e=n[0];if(i&&1==n.length&&Lo(e)&&e.length>=200)return i.plant(e).value();for(var u=0,n=r?t[u].apply(this,n):e;++u<r;)n=t[u].call(this,n);return n}})}function cr(n,t,r,e,u,o,i,f,c,a){function l(){for(var y=arguments.length,b=y,x=Array(y);b--;)x[b]=arguments[b];if(e&&(x=Kt(x,e,u)),o&&(x=Gt(x,o,i)),_||g){var b=l.placeholder,m=$(x,b),y=y-m.length;if(a>y)return _r(n,t,cr,b,r,x,m,f,c,a-y)}if(y=h?r:this,b=p?y[n]:n,f)for(var m=x.length,j=Ru(f.length,m),w=Vt(x);j--;){var A=f[j];
x[j]=B(A,m)?w[A]:Z}else v&&x.length>1&&x.reverse();return s&&x.length>c&&(x.length=c),this&&this!==Gn&&this instanceof l&&(b=d||or(b)),b.apply(y,x)}var s=128&t,h=1&t,p=2&t,_=8&t,g=16&t,v=512&t,d=p?Z:or(n);return l}function ar(n,t){return function(r,e){return gt(r,n,t(e))}}function lr(n){return fe(function(t){return t=a(it(t),mr()),fe(function(e){var u=this;return n(t,function(n){return r(n,u,e)})})})}function sr(n,t,r){return t=Ie(t),n=M(n),t&&t>n?(t-=n,r=r===Z?" ":r+"",n=Ze(r,wu(t/M(r))),kn.test(r)?n.match(En).slice(0,t).join(""):n.slice(0,t)):"";
}function hr(n,t,e,u){function o(){for(var t=-1,c=arguments.length,a=-1,l=u.length,s=Array(l+c),h=this&&this!==Gn&&this instanceof o?f:n;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++t];return r(h,i?e:this,s)}var i=1&t,f=or(n);return o}function pr(n){return function(t,r,e){e&&typeof e!="number"&&Sr(t,r,e)&&(r=e=Z),t=Se(t),t=t===t?t:0,r===Z?(r=t,t=0):r=Se(r)||0,e=e===Z?r>t?1:-1:Se(e)||0;var u=-1;r=Iu(wu((r-t)/(e||1)),0);for(var o=Array(r);r--;)o[n?r:++u]=t,t+=e;return o}}function _r(n,t,r,e,u,o,i,f,c,a){
var l=8&t;f=f?Vt(f):Z;var s=l?i:Z;i=l?Z:i;var h=l?o:Z;return o=l?Z:o,t=(t|(l?32:64))&~(l?64:32),4&t||(t&=-4),t=[n,t,u,h,s,o,i,f,c,a],r=r.apply(Z,t),Ur(n)&&no(r,t),r.placeholder=e,r}function gr(n){var t=nu[n];return function(n,r){if(n=Se(n),r=Ie(r)){var e=(Ce(n)+"e").split("e"),e=t(e[0]+"e"+(+e[1]+r)),e=(Ce(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return t(n)}}function vr(n,t,r,e,u,o,i,f){var c=2&t;if(!c&&typeof n!="function")throw new ru("Expected a function");var a=e?e.length:0;if(a||(t&=-97,
e=u=Z),i=i===Z?i:Iu(Ie(i),0),f=f===Z?f:Ie(f),a-=u?u.length:0,64&t){var l=e,s=u;e=u=Z}var h=c?Z:Hu(n);return o=[n,t,r,e,u,l,s,o,i,f],h&&(r=o[1],n=h[1],t=r|n,e=128==n&&8==r||128==n&&256==r&&h[8]>=o[7].length||384==n&&h[8]>=h[7].length&&8==r,131>t||e)&&(1&n&&(o[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=o[3],o[3]=e?Kt(e,r,h[4]):Vt(r),o[4]=e?$(o[3],"__lodash_placeholder__"):Vt(h[4])),(r=h[5])&&(e=o[5],o[5]=e?Gt(e,r,h[6]):Vt(r),o[6]=e?$(o[5],"__lodash_placeholder__"):Vt(h[6])),(r=h[7])&&(o[7]=Vt(r)),128&n&&(o[8]=null==o[8]?h[8]:Ru(o[8],h[8])),
x[j]=B(A,m)?w[A]:Z}else v&&x.length>1&&x.reverse();return s&&x.length>c&&(x.length=c),this&&this!==Gn&&this instanceof l&&(b=d||or(b)),b.apply(y,x)}var s=128&t,h=1&t,p=2&t,_=8&t,g=16&t,v=512&t,d=p?Z:or(n);return l}function ar(n,t){return function(r,e){return gt(r,n,t(e))}}function lr(n){return ce(function(t){return t=a(it(t),mr()),ce(function(e){var u=this;return n(t,function(n){return r(n,u,e)})})})}function sr(n,t,r){return t=Re(t),n=M(n),t&&t>n?(t-=n,r=r===Z?" ":r+"",n=qe(r,wu(t/M(r))),kn.test(r)?n.match(En).slice(0,t).join(""):n.slice(0,t)):"";
}function hr(n,t,e,u){function o(){for(var t=-1,c=arguments.length,a=-1,l=u.length,s=Array(l+c),h=this&&this!==Gn&&this instanceof o?f:n;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++t];return r(h,i?e:this,s)}var i=1&t,f=or(n);return o}function pr(n){return function(t,r,e){e&&typeof e!="number"&&Sr(t,r,e)&&(r=e=Z),t=We(t),t=t===t?t:0,r===Z?(r=t,t=0):r=We(r)||0,e=e===Z?r>t?1:-1:We(e)||0;var u=-1;r=Iu(wu((r-t)/(e||1)),0);for(var o=Array(r);r--;)o[n?r:++u]=t,t+=e;return o}}function _r(n,t,r,e,u,o,i,f,c,a){
var l=8&t;f=f?Vt(f):Z;var s=l?i:Z;i=l?Z:i;var h=l?o:Z;return o=l?Z:o,t=(t|(l?32:64))&~(l?64:32),4&t||(t&=-4),t=[n,t,u,h,s,o,i,f,c,a],r=r.apply(Z,t),Ur(n)&&no(r,t),r.placeholder=e,r}function gr(n){var t=nu[n];return function(n,r){if(n=We(n),r=Re(r)){var e=(Ue(n)+"e").split("e"),e=t(e[0]+"e"+(+e[1]+r)),e=(Ue(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return t(n)}}function vr(n,t,r,e,u,o,i,f){var c=2&t;if(!c&&typeof n!="function")throw new ru("Expected a function");var a=e?e.length:0;if(a||(t&=-97,
e=u=Z),i=i===Z?i:Iu(Re(i),0),f=f===Z?f:Re(f),a-=u?u.length:0,64&t){var l=e,s=u;e=u=Z}var h=c?Z:Hu(n);return o=[n,t,r,e,u,l,s,o,i,f],h&&(r=o[1],n=h[1],t=r|n,e=128==n&&8==r||128==n&&256==r&&h[8]>=o[7].length||384==n&&h[8]>=h[7].length&&8==r,131>t||e)&&(1&n&&(o[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=o[3],o[3]=e?Kt(e,r,h[4]):Vt(r),o[4]=e?$(o[3],"__lodash_placeholder__"):Vt(h[4])),(r=h[5])&&(e=o[5],o[5]=e?Gt(e,r,h[6]):Vt(r),o[6]=e?$(o[5],"__lodash_placeholder__"):Vt(h[6])),(r=h[7])&&(o[7]=Vt(r)),128&n&&(o[8]=null==o[8]?h[8]:Ru(o[8],h[8])),
null==o[9]&&(o[9]=h[9]),o[0]=h[0],o[1]=t),n=o[0],t=o[1],r=o[2],e=o[3],u=o[4],f=o[9]=null==o[9]?c?0:n.length:Iu(o[9]-a,0),!f&&24&t&&(t&=-25),(h?Ju:no)(t&&1!=t?8==t||16==t?ir(n,t,f):32!=t&&33!=t||u.length?cr.apply(Z,o):hr(n,t,r,e):rr(n,t,r),o)}function dr(n,t,r,e,u,o){var i=-1,f=2&u,c=1&u,a=n.length,l=t.length;if(!(a==l||f&&l>a))return false;if(l=o.get(n))return l==t;for(l=true,o.set(n,t);++i<a;){var s=n[i],h=t[i];if(e)var _=f?e(h,s,i,t,n,o):e(s,h,i,n,t,o);if(_!==Z){if(_)continue;l=false;break}if(c){if(!p(t,function(n){
return s===n||r(s,n,e,u,o)})){l=false;break}}else if(s!==h&&!r(s,h,e,u,o)){l=false;break}}return o["delete"](n),l}function yr(n,t,r,e,u,o){switch(r){case"[object ArrayBuffer]":if(n.byteLength!=t.byteLength||!e(new _u(n),new _u(t)))break;return true;case"[object Boolean]":case"[object Date]":return+n==+t;case"[object Error]":return n.name==t.name&&n.message==t.message;case"[object Number]":return n!=+n?t!=+t:n==+t;case"[object RegExp]":case"[object String]":return n==t+"";case"[object Map]":var i=L;case"[object Set]":
return i||(i=F),(2&o||n.size==t.size)&&e(i(n),i(t),u,1|o);case"[object Symbol]":return!!pu&&Du.call(n)==Du.call(t)}return false}function br(n,t,r,e,u,o){var i=2&u,f=Le(n),c=f.length,a=Le(t).length;if(c!=a&&!i)return false;for(var l=c;l--;){var s=f[l];if(!(i?s in t:ht(t,s)))return false}if(a=o.get(n))return a==t;a=true,o.set(n,t);for(var h=i;++l<c;){var s=f[l],p=n[s],_=t[s];if(e)var g=i?e(_,p,s,t,n,o):e(p,_,s,n,t,o);if(g===Z?p!==_&&!r(p,_,e,u,o):!g){a=false;break}h||(h="constructor"==s)}return a&&!h&&(r=n.constructor,
e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(a=false)),o["delete"](n),a}function xr(n){for(var t=n.name+"",r=qu[t],e=iu.call(qu,t)?r.length:0;e--;){var u=r[e],o=u.func;if(null==o||o==n)return u.name}return t}function mr(){var n=yn.iteratee||Ke,n=n===Ke?bt:n;return arguments.length?n(arguments[0],arguments[1]):n}function jr(n){n=Fe(n);for(var t=n.length;t--;){var r=n[t][1];n[t][2]=r===r&&!de(r)}return n}function wr(n,t){
var r=null==n?Z:n[t];return be(r)?r:Z}function Ar(n){return au.call(n)}function Or(n,t,r){if(null==n)return false;var e=r(n,t);return e||Wr(t)||(t=Mt(t),n=Lr(n,t),null!=n&&(t=Pr(t),e=r(n,t))),r=n?n.length:Z,e||!!r&&ve(r)&&B(t,r)&&(Lo(n)||we(n)||le(n))}function Er(n){var t=n.length,r=n.constructor(t);return t&&"string"==typeof n[0]&&iu.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function kr(n){return Br(n)?{}:(n=n.constructor,Pu(_e(n)?n.prototype:Z))}function Ir(r,e,u){var o=r.constructor;switch(e){
return i||(i=F),(2&o||n.size==t.size)&&e(i(n),i(t),u,1|o);case"[object Symbol]":return!!pu&&Du.call(n)==Du.call(t)}return false}function br(n,t,r,e,u,o){var i=2&u,f=$e(n),c=f.length,a=$e(t).length;if(c!=a&&!i)return false;for(var l=c;l--;){var s=f[l];if(!(i?s in t:ht(t,s)))return false}if(a=o.get(n))return a==t;a=true,o.set(n,t);for(var h=i;++l<c;){var s=f[l],p=n[s],_=t[s];if(e)var g=i?e(_,p,s,t,n,o):e(p,_,s,n,t,o);if(g===Z?p!==_&&!r(p,_,e,u,o):!g){a=false;break}h||(h="constructor"==s)}return a&&!h&&(r=n.constructor,
e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(a=false)),o["delete"](n),a}function xr(n){for(var t=n.name+"",r=qu[t],e=iu.call(qu,t)?r.length:0;e--;){var u=r[e],o=u.func;if(null==o||o==n)return u.name}return t}function mr(){var n=yn.iteratee||Ge,n=n===Ge?bt:n;return arguments.length?n(arguments[0],arguments[1]):n}function jr(n){n=Me(n);for(var t=n.length;t--;){var r=n[t][1];n[t][2]=r===r&&!ye(r)}return n}function wr(n,t){
var r=null==n?Z:n[t];return xe(r)?r:Z}function Ar(n){return au.call(n)}function Or(n,t,r){if(null==n)return false;var e=r(n,t);return e||Wr(t)||(t=Mt(t),n=Lr(n,t),null!=n&&(t=Pr(t),e=r(n,t))),r=n?n.length:Z,e||!!r&&de(r)&&B(t,r)&&(Lo(n)||Ae(n)||se(n))}function Er(n){var t=n.length,r=n.constructor(t);return t&&"string"==typeof n[0]&&iu.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function kr(n){return Br(n)?{}:(n=n.constructor,Pu(ge(n)?n.prototype:Z))}function Ir(r,e,u){var o=r.constructor;switch(e){
case"[object ArrayBuffer]":return Tt(r);case"[object Boolean]":case"[object Date]":return new o(+r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return e=r.buffer,new r.constructor(u?Tt(e):e,r.byteOffset,r.length);case"[object Map]":return u=r.constructor,s(L(r),n,new u);case"[object Number]":case"[object String]":
return new o(r);case"[object RegExp]":return u=new r.constructor(r.source,hn.exec(r)),u.lastIndex=r.lastIndex,u;case"[object Set]":return u=r.constructor,s(F(r),t,new u);case"[object Symbol]":return pu?Object(Du.call(r)):{}}}function Rr(n){var t=n?n.length:Z;return ve(t)&&(Lo(n)||we(n)||le(n))?m(t,String):null}function Sr(n,t,r){if(!de(r))return false;var e=typeof t;return("number"==e?se(r)&&B(t,r.length):"string"==e&&t in r)?ce(r[t],n):false}function Wr(n,t){return typeof n=="number"?true:!Lo(n)&&(rn.test(n)||!tn.test(n)||null!=t&&n in Object(t));
}function Cr(n){var t=typeof n;return"number"==t||"boolean"==t||"string"==t&&"__proto__"!==n||null==n}function Ur(n){var t=xr(n),r=yn[t];return typeof r=="function"&&t in An.prototype?n===r?true:(t=Hu(r),!!t&&n===t[0]):false}function Br(n){var t=n&&n.constructor;return n===(typeof t=="function"&&t.prototype||uu)}function zr(n,t,r,e,u,o){return de(n)&&de(t)&&(o.set(t,n),At(n,t,Z,zr,o)),n}function Lr(n,t){return 1==t.length?n:Ue(n,Bt(t,0,-1))}function $r(n){var t=[];return Ce(n).replace(en,function(n,r,e,u){
t.push(e?u.replace(ln,"$1"):r||n)}),t}function Fr(n){return he(n)?n:[]}function Mr(n){return typeof n=="function"?n:Te}function Nr(n){if(n instanceof An)return n.clone();var t=new wn(n.__wrapped__,n.__chain__);return t.__actions__=Vt(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Dr(n,t,r){var e=n?n.length:0;return e?(t=r||t===Z?1:Ie(t),Bt(n,0>t?0:t,e)):[]}function Zr(n,t,r){var e=n?n.length:0;return e?(t=r||t===Z?1:Ie(t),t=e-t,Bt(n,0,0>t?0:t)):[]}function qr(n){return n?n[0]:Z;
}function Pr(n){var t=n?n.length:0;return t?n[t-1]:Z}function Tr(n,t){return n&&n.length&&t&&t.length?St(n,t):n}function Kr(n){return n?Cu.call(n):n}function Gr(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){return he(n)?(t=Iu(n.length,t),true):void 0}),m(t,function(t){return a(n,It(t))})}function Vr(n,t){if(!n||!n.length)return[];var e=Gr(n);return null==t?e:a(e,function(n){return r(t,Z,n)})}function Jr(n){return n=yn(n),n.__chain__=true,n}function Yr(n,t){return t(n)}function Hr(){return this;
}function Qr(n,t){return typeof t=="function"&&Lo(n)?u(n,t):Tu(n,Mr(t))}function Xr(n,t){var r;if(typeof t=="function"&&Lo(n)){for(r=n.length;r--&&false!==t(n[r],r,n););r=n}else r=Ku(n,Mr(t));return r}function ne(n,t){var r=-1,e=ke(n),u=e.length,o=u-1;for(t=Xn(Ie(t),0,u);++r<t;){var u=Ct(r,o),i=e[u];e[u]=e[r],e[r]=i}return e.length=t,e}function te(n,t,r){return t=r?Z:t,t=n&&null==t?n.length:t,vr(n,128,Z,Z,Z,Z,t)}function re(n,t){var r;if(typeof t!="function")throw new ru("Expected a function");return n=Ie(n),
function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function ee(n,t,r){return t=r?Z:t,n=vr(n,8,Z,Z,Z,Z,Z,t),n.placeholder=ee.placeholder,n}function ue(n,t,r){return t=r?Z:t,n=vr(n,16,Z,Z,Z,Z,Z,t),n.placeholder=ue.placeholder,n}function oe(n,t,r){function e(){p&&gu(p),a&&gu(a),g=0,c=a=h=p=_=Z}function u(t,r){r&&gu(r),a=p=_=Z,t&&(g=ko(),l=n.apply(h,c),p||a||(c=h=Z))}function o(){var n=t-(ko()-s);0>=n||n>t?u(_,a):p=mu(o,n)}function i(){u(y,p)}function f(){if(c=arguments,s=ko(),h=this,
_=y&&(p||!v),false===d)var r=v&&!p;else{a||v||(g=s);var e=d-(s-g),u=0>=e||e>d;u?(a&&(a=gu(a)),g=s,l=n.apply(h,c)):a||(a=mu(i,e))}return u&&p?p=gu(p):p||t===d||(p=mu(o,t)),r&&(u=true,l=n.apply(h,c)),!u||p||a||(c=h=Z),l}var c,a,l,s,h,p,_,g=0,v=false,d=false,y=true;if(typeof n!="function")throw new ru("Expected a function");return t=Se(t)||0,de(r)&&(v=!!r.leading,d="maxWait"in r&&Iu(Se(r.maxWait)||0,t),y="trailing"in r?!!r.trailing:y),f.cancel=e,f.flush=function(){return(p&&_||a&&y)&&(l=n.apply(h,c)),e(),l},f}function ie(n,t){
function r(){var e=arguments,u=t?t.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=n.apply(this,e),r.cache=o.set(u,e),e)}if(typeof n!="function"||t&&typeof t!="function")throw new ru("Expected a function");return r.cache=new ie.Cache,r}function fe(n,t){if(typeof n!="function")throw new ru("Expected a function");return t=Iu(t===Z?n.length-1:Ie(t),0),function(){for(var e=arguments,u=-1,o=Iu(e.length-t,0),i=Array(o);++u<o;)i[u]=e[t+u];switch(t){case 0:return n.call(this,i);case 1:return n.call(this,e[0],i);
case 2:return n.call(this,e[0],e[1],i)}for(o=Array(t+1),u=-1;++u<t;)o[u]=e[u];return o[t]=i,r(n,this,o)}}function ce(n,t){return n===t||n!==n&&t!==t}function ae(n,t){return n>t}function le(n){return he(n)&&iu.call(n,"callee")&&(!xu.call(n,"callee")||"[object Arguments]"==au.call(n))}function se(n){return null!=n&&!(typeof n=="function"&&_e(n))&&ve(Qu(n))}function he(n){return ye(n)&&se(n)}function pe(n){return ye(n)&&typeof n.message=="string"&&"[object Error]"==au.call(n)}function _e(n){return n=de(n)?au.call(n):"",
"[object Function]"==n||"[object GeneratorFunction]"==n}function ge(n){return typeof n=="number"&&n==Ie(n)}function ve(n){return typeof n=="number"&&n>-1&&0==n%1&&9007199254740991>=n}function de(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function ye(n){return!!n&&typeof n=="object"}function be(n){return null==n?false:_e(n)?su.test(ou.call(n)):ye(n)&&(U(n)?su:vn).test(n)}function xe(n){return typeof n=="number"||ye(n)&&"[object Number]"==au.call(n)}function me(n){if(!ye(n)||"[object Object]"!=au.call(n)||U(n))return false;
var t=uu;return typeof n.constructor=="function"&&(t=du(n)),null===t?true:(n=t.constructor,typeof n=="function"&&n instanceof n&&ou.call(n)==cu)}function je(n){return de(n)&&"[object RegExp]"==au.call(n)}function we(n){return typeof n=="string"||!Lo(n)&&ye(n)&&"[object String]"==au.call(n)}function Ae(n){return typeof n=="symbol"||ye(n)&&"[object Symbol]"==au.call(n)}function Oe(n){return ye(n)&&ve(n.length)&&!!Cn[au.call(n)]}function Ee(n,t){return t>n}function ke(n){if(!n)return[];if(se(n))return we(n)?n.match(En):Vt(n);
if(bu&&n[bu])return z(n[bu]());var t=Ar(n);return("[object Map]"==t?L:"[object Set]"==t?F:Me)(n)}function Ie(n){if(!n)return 0===n?n:0;if(n=Se(n),n===q||n===-q)return 1.7976931348623157e308*(0>n?-1:1);var t=n%1;return n===n?t?n-t:n:0}function Re(n){return n?Xn(Ie(n),0,4294967295):0}function Se(n){if(de(n)&&(n=_e(n.valueOf)?n.valueOf():n,n=de(n)?n+"":n),typeof n!="string")return 0===n?n:+n;n=n.replace(fn,"");var t=gn.test(n);return t||dn.test(n)?Nn(n.slice(2),t?2:8):_n.test(n)?P:+n}function We(n){
return Jt(n,$e(n))}function Ce(n){if(typeof n=="string")return n;if(null==n)return"";if(Ae(n))return pu?Zu.call(n):"";var t=n+"";return"0"==t&&1/n==-q?"-0":t}function Ue(n,t,r){return n=null==n?Z:st(n,t),n===Z?r:n}function Be(n,t){return Or(n,t,ht)}function ze(n,t){return Or(n,t,pt)}function Le(n){var t=Br(n);if(!t&&!se(n))return ku(Object(n));var r,e=Rr(n),u=!!e,e=e||[],o=e.length;for(r in n)!ht(n,r)||u&&("length"==r||B(r,o))||t&&"constructor"==r||e.push(r);return e}function $e(n){for(var t=-1,r=Br(n),e=xt(n),u=e.length,o=Rr(n),i=!!o,o=o||[],f=o.length;++t<u;){
var c=e[t];i&&("length"==c||B(c,f))||"constructor"==c&&(r||!iu.call(n,c))||o.push(c)}return o}function Fe(n){return j(n,Le(n))}function Me(n){return n?A(n,Le(n)):[]}function Ne(n){return ti(Ce(n).toLowerCase())}function De(n){return(n=Ce(n))&&n.replace(bn,R).replace(On,"")}function Ze(n,t){n=Ce(n),t=Ie(t);var r="";if(!n||1>t||t>9007199254740991)return r;do t%2&&(r+=n),t=Au(t/2),n+=n;while(t);return r}function qe(n,t,r){return n=Ce(n),t=r?Z:t,t===Z&&(t=Sn.test(n)?Rn:In),n.match(t)||[]}function Pe(n){
return function(){return n}}function Te(n){return n}function Ke(n){return ye(n)&&!Lo(n)?Ge(n):bt(n)}function Ge(n){return jt(nt(n,true))}function Ve(n,t,r){var e=Le(t),o=lt(t,e);null!=r||de(t)&&(o.length||!e.length)||(r=t,t=n,n=this,o=lt(t,Le(t)));var i=de(r)&&"chain"in r?r.chain:true,f=_e(n);return u(o,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(i||t){var r=n(this.__wrapped__);return(r.__actions__=Vt(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,
r}return e.apply(n,l([this.value()],arguments))})}),n}function Je(){}function Ye(n){return Wr(n)?It(n):Rt(n)}function He(n){return n&&n.length?x(n,Te):0}k=k?Vn.defaults({},k,Vn.pick(Gn,Wn)):Gn;var Qe=k.Date,Xe=k.Error,nu=k.Math,tu=k.RegExp,ru=k.TypeError,eu=k.Array.prototype,uu=k.Object.prototype,ou=k.Function.prototype.toString,iu=uu.hasOwnProperty,fu=0,cu=ou.call(Object),au=uu.toString,lu=Gn._,su=tu("^"+ou.call(iu).replace(un,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),hu=k.f,pu=k.Symbol,_u=k.Uint8Array,gu=k.clearTimeout,vu=hu?hu.g:Z,du=Object.getPrototypeOf,yu=Object.getOwnPropertySymbols,bu=typeof(bu=pu&&pu.iterator)=="symbol"?bu:Z,xu=uu.propertyIsEnumerable,mu=k.setTimeout,ju=eu.splice,wu=nu.ceil,Au=nu.floor,Ou=k.isFinite,Eu=eu.join,ku=Object.keys,Iu=nu.max,Ru=nu.min,Su=k.parseInt,Wu=nu.random,Cu=eu.reverse,Uu=wr(k,"Map"),Bu=wr(k,"Set"),zu=wr(k,"WeakMap"),Lu=wr(Object,"create"),$u=zu&&new zu,Fu=Uu?ou.call(Uu):"",Mu=Bu?ou.call(Bu):"",Nu=pu?pu.prototype:Z,Du=pu?Nu.valueOf:Z,Zu=pu?Nu.toString:Z,qu={};
yn.templateSettings={escape:Q,evaluate:X,interpolate:nn,variable:"",imports:{_:yn}};var Pu=function(){function n(){}return function(t){if(de(t)){n.prototype=t;var r=new n;n.prototype=Z}return r||{}}}(),Tu=nr(ct),Ku=nr(at,true),Gu=tr(),Vu=tr(true);vu&&!xu.call({valueOf:1},"valueOf")&&(xt=function(n){return z(vu(n))});var Ju=$u?function(n,t){return $u.set(n,t),n}:Te,Yu=Bu&&2===new Bu([1,2]).size?function(n){return new Bu(n)}:Je,Hu=$u?function(n){return $u.get(n)}:Je,Qu=It("length"),Xu=yu||function(){return[];
};(Uu&&"[object Map]"!=Ar(new Uu)||Bu&&"[object Set]"!=Ar(new Bu))&&(Ar=function(n){var t=au.call(n);if(n="[object Object]"==t?n.constructor:null,n=typeof n=="function"?ou.call(n):""){if(n==Fu)return"[object Map]";if(n==Mu)return"[object Set]"}return t});var no=function(){var n=0,t=0;return function(r,e){var u=ko(),o=16-(u-t);if(t=u,o>0){if(150<=++n)return r}else n=0;return Ju(r,e)}}(),to=fe(function(n,t){Lo(n)||(n=null==n?[]:[Object(n)]),t=it(t);for(var r=n,e=t,u=-1,o=r.length,i=-1,f=e.length,c=Array(o+f);++u<o;)c[u]=r[u];
for(;++i<f;)c[u++]=e[i];return c}),ro=fe(function(n,t){return he(n)?et(n,it(t,false,true)):[]}),eo=fe(function(n,t){var r=Pr(t);return he(r)&&(r=Z),he(n)?et(n,it(t,false,true),mr(r)):[]}),uo=fe(function(n,t){var r=Pr(t);return he(r)&&(r=Z),he(n)?et(n,it(t,false,true),Z,r):[]}),oo=fe(function(n){var t=a(n,Fr);return t.length&&t[0]===n[0]?_t(t):[]}),io=fe(function(n){var t=Pr(n),r=a(n,Fr);return t===Pr(r)?t=Z:r.pop(),r.length&&r[0]===n[0]?_t(r,mr(t)):[]}),fo=fe(function(n){var t=Pr(n),r=a(n,Fr);return t===Pr(r)?t=Z:r.pop(),
r.length&&r[0]===n[0]?_t(r,Z,t):[]}),co=fe(Tr),ao=fe(function(n,t){t=a(it(t),String);var r=Qn(n,t);return Wt(n,t.sort(I)),r}),lo=fe(function(n){return Nt(it(n,false,true))}),so=fe(function(n){var t=Pr(n);return he(t)&&(t=Z),Nt(it(n,false,true),mr(t))}),ho=fe(function(n){var t=Pr(n);return he(t)&&(t=Z),Nt(it(n,false,true),Z,t)}),po=fe(function(n,t){return he(n)?et(n,t):[]}),_o=fe(function(n){return qt(i(n,he))}),go=fe(function(n){var t=Pr(n);return he(t)&&(t=Z),qt(i(n,he),mr(t))}),vo=fe(function(n){var t=Pr(n);return he(t)&&(t=Z),
qt(i(n,he),Z,t)}),yo=fe(Gr),bo=fe(function(n){var t=n.length,t=t>1?n[t-1]:Z,t=typeof t=="function"?(n.pop(),t):Z;return Vr(n,t)}),xo=fe(function(n){function t(t){return Qn(t,n)}n=it(n);var r=n.length,e=r?n[0]:0,u=this.__wrapped__;return 1>=r&&!this.__actions__.length&&u instanceof An&&B(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:Yr,args:[t],thisArg:Z}),new wn(u,this.__chain__).thru(function(n){return r&&!n.length&&n.push(Z),n})):this.thru(t)}),mo=Qt(function(n,t,r){iu.call(n,r)?++n[r]:n[r]=1;
}),jo=Qt(function(n,t,r){iu.call(n,r)?n[r].push(t):n[r]=[t]}),wo=fe(function(n,t,e){var u=-1,o=typeof t=="function",i=Wr(t),f=se(n)?Array(n.length):[];return Tu(n,function(n){var c=o?t:i&&null!=n?n[t]:Z;f[++u]=c?r(c,n,e):vt(n,t,e)}),f}),Ao=Qt(function(n,t,r){n[r]=t}),Oo=Qt(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Eo=fe(function(n,t){if(null==n)return[];var r=t.length;return r>1&&Sr(n,t[0],t[1])?t=[]:r>2&&Sr(t[0],t[1],t[2])&&(t.length=1),Ot(n,it(t),[])}),ko=Qe.now,Io=fe(function(n,t,r){
var e=1;if(r.length)var u=$(r,Io.placeholder),e=32|e;return vr(n,e,t,r,u)}),Ro=fe(function(n,t,r){var e=3;if(r.length)var u=$(r,Ro.placeholder),e=32|e;return vr(t,e,n,r,u)}),So=fe(function(n,t){return rt(n,1,t)}),Wo=fe(function(n,t,r){return rt(n,Se(t)||0,r)}),Co=fe(function(n,t){t=a(it(t),mr());var e=t.length;return fe(function(u){for(var o=-1,i=Ru(u.length,e);++o<i;)u[o]=t[o].call(this,u[o]);return r(n,this,u)})}),Uo=fe(function(n,t){var r=$(t,Uo.placeholder);return vr(n,32,Z,t,r)}),Bo=fe(function(n,t){
var r=$(t,Bo.placeholder);return vr(n,64,Z,t,r)}),zo=fe(function(n,t){return vr(n,256,Z,Z,Z,it(t))}),Lo=Array.isArray,$o=Xt(function(n,t){Jt(t,Le(t),n)}),Fo=Xt(function(n,t){Jt(t,$e(t),n)}),Mo=Xt(function(n,t,r,e){Yt(t,$e(t),n,e)}),No=Xt(function(n,t,r,e){Yt(t,Le(t),n,e)}),Do=fe(function(n,t){return Qn(n,it(t))}),Zo=fe(function(n){return n.push(Z,Tn),r(Mo,Z,n)}),qo=fe(function(n){return n.push(Z,zr),r(Vo,Z,n)}),Po=ar(function(n,t,r){n[t]=r},Pe(Te)),To=ar(function(n,t,r){iu.call(n,t)?n[t].push(r):n[t]=[r];
},mr),Ko=fe(vt),Go=Xt(function(n,t,r){At(n,t,r)}),Vo=Xt(function(n,t,r,e){At(n,t,r,e)}),Jo=fe(function(n,t){return null==n?{}:(t=a(it(t),String),Et(n,et($e(n),t)))}),Yo=fe(function(n,t){return null==n?{}:Et(n,it(t))}),Ho=ur(function(n,t,r){return t=t.toLowerCase(),n+(r?Ne(t):t)}),Qo=ur(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Xo=ur(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),ni=er("toLowerCase"),ti=er("toUpperCase"),ri=ur(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),ei=ur(function(n,t,r){
return n+(r?" ":"")+Ne(t)}),ui=ur(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),oi=fe(function(n,t){try{return r(n,Z,t)}catch(e){return pe(e)?e:new Xe(e)}}),ii=fe(function(n,t){return u(it(t),function(t){n[t]=Io(n[t],n)}),n}),fi=fr(),ci=fr(true),ai=fe(function(n,t){return function(r){return vt(r,n,t)}}),li=fe(function(n,t){return function(r){return vt(n,r,t)}}),si=lr(a),hi=lr(o),pi=lr(p),_i=pr(),gi=pr(true),vi=gr("ceil"),di=gr("floor"),yi=gr("round");return yn.prototype=jn.prototype,wn.prototype=Pu(jn.prototype),
return new o(r);case"[object RegExp]":return u=new r.constructor(r.source,hn.exec(r)),u.lastIndex=r.lastIndex,u;case"[object Set]":return u=r.constructor,s(F(r),t,new u);case"[object Symbol]":return pu?Object(Du.call(r)):{}}}function Rr(n){var t=n?n.length:Z;return de(t)&&(Lo(n)||Ae(n)||se(n))?m(t,String):null}function Sr(n,t,r){if(!ye(r))return false;var e=typeof t;return("number"==e?he(r)&&B(t,r.length):"string"==e&&t in r)?ae(r[t],n):false}function Wr(n,t){return typeof n=="number"?true:!Lo(n)&&(rn.test(n)||!tn.test(n)||null!=t&&n in Object(t));
}function Cr(n){var t=typeof n;return"number"==t||"boolean"==t||"string"==t&&"__proto__"!==n||null==n}function Ur(n){var t=xr(n),r=yn[t];return typeof r=="function"&&t in An.prototype?n===r?true:(t=Hu(r),!!t&&n===t[0]):false}function Br(n){var t=n&&n.constructor;return n===(typeof t=="function"&&t.prototype||uu)}function zr(n,t,r,e,u,o){return ye(n)&&ye(t)&&(o.set(t,n),At(n,t,Z,zr,o)),n}function Lr(n,t){return 1==t.length?n:Be(n,Bt(t,0,-1))}function $r(n){var t=[];return Ue(n).replace(en,function(n,r,e,u){
t.push(e?u.replace(ln,"$1"):r||n)}),t}function Fr(n){return pe(n)?n:[]}function Mr(n){return typeof n=="function"?n:Ke}function Nr(n){if(n instanceof An)return n.clone();var t=new wn(n.__wrapped__,n.__chain__);return t.__actions__=Vt(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Dr(n,t,r){var e=n?n.length:0;return e?(t=r||t===Z?1:Re(t),Bt(n,0>t?0:t,e)):[]}function Zr(n,t,r){var e=n?n.length:0;return e?(t=r||t===Z?1:Re(t),t=e-t,Bt(n,0,0>t?0:t)):[]}function qr(n){return n?n[0]:Z;
}function Pr(n){var t=n?n.length:0;return t?n[t-1]:Z}function Tr(n,t){return n&&n.length&&t&&t.length?St(n,t):n}function Kr(n){return n?Cu.call(n):n}function Gr(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){return pe(n)?(t=Iu(n.length,t),true):void 0}),m(t,function(t){return a(n,It(t))})}function Vr(n,t){if(!n||!n.length)return[];var e=Gr(n);return null==t?e:a(e,function(n){return r(t,Z,n)})}function Jr(n){return n=yn(n),n.__chain__=true,n}function Yr(n,t){return t(n)}function Hr(){return this;
}function Qr(n,t){return typeof t=="function"&&Lo(n)?u(n,t):Tu(n,Mr(t))}function Xr(n,t){var r;if(typeof t=="function"&&Lo(n)){for(r=n.length;r--&&false!==t(n[r],r,n););r=n}else r=Ku(n,Mr(t));return r}function ne(n,t){return(Lo(n)?a:mt)(n,mr(t,3))}function te(n,t){var r=-1,e=Ie(n),u=e.length,o=u-1;for(t=Xn(Re(t),0,u);++r<t;){var u=Ct(r,o),i=e[u];e[u]=e[r],e[r]=i}return e.length=t,e}function re(n,t,r){return t=r?Z:t,t=n&&null==t?n.length:t,vr(n,128,Z,Z,Z,Z,t)}function ee(n,t){var r;if(typeof t!="function")throw new ru("Expected a function");
return n=Re(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function ue(n,t,r){return t=r?Z:t,n=vr(n,8,Z,Z,Z,Z,Z,t),n.placeholder=ue.placeholder,n}function oe(n,t,r){return t=r?Z:t,n=vr(n,16,Z,Z,Z,Z,Z,t),n.placeholder=oe.placeholder,n}function ie(n,t,r){function e(){p&&gu(p),a&&gu(a),g=0,c=a=h=p=_=Z}function u(t,r){r&&gu(r),a=p=_=Z,t&&(g=ko(),l=n.apply(h,c),p||a||(c=h=Z))}function o(){var n=t-(ko()-s);0>=n||n>t?u(_,a):p=mu(o,n)}function i(){u(y,p)}function f(){if(c=arguments,
s=ko(),h=this,_=y&&(p||!v),false===d)var r=v&&!p;else{a||v||(g=s);var e=d-(s-g),u=0>=e||e>d;u?(a&&(a=gu(a)),g=s,l=n.apply(h,c)):a||(a=mu(i,e))}return u&&p?p=gu(p):p||t===d||(p=mu(o,t)),r&&(u=true,l=n.apply(h,c)),!u||p||a||(c=h=Z),l}var c,a,l,s,h,p,_,g=0,v=false,d=false,y=true;if(typeof n!="function")throw new ru("Expected a function");return t=We(t)||0,ye(r)&&(v=!!r.leading,d="maxWait"in r&&Iu(We(r.maxWait)||0,t),y="trailing"in r?!!r.trailing:y),f.cancel=e,f.flush=function(){return(p&&_||a&&y)&&(l=n.apply(h,c)),
e(),l},f}function fe(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=n.apply(this,e),r.cache=o.set(u,e),e)}if(typeof n!="function"||t&&typeof t!="function")throw new ru("Expected a function");return r.cache=new fe.Cache,r}function ce(n,t){if(typeof n!="function")throw new ru("Expected a function");return t=Iu(t===Z?n.length-1:Re(t),0),function(){for(var e=arguments,u=-1,o=Iu(e.length-t,0),i=Array(o);++u<o;)i[u]=e[t+u];switch(t){case 0:return n.call(this,i);
case 1:return n.call(this,e[0],i);case 2:return n.call(this,e[0],e[1],i)}for(o=Array(t+1),u=-1;++u<t;)o[u]=e[u];return o[t]=i,r(n,this,o)}}function ae(n,t){return n===t||n!==n&&t!==t}function le(n,t){return n>t}function se(n){return pe(n)&&iu.call(n,"callee")&&(!xu.call(n,"callee")||"[object Arguments]"==au.call(n))}function he(n){return null!=n&&!(typeof n=="function"&&ge(n))&&de(Qu(n))}function pe(n){return be(n)&&he(n)}function _e(n){return be(n)&&typeof n.message=="string"&&"[object Error]"==au.call(n);
}function ge(n){return n=ye(n)?au.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n}function ve(n){return typeof n=="number"&&n==Re(n)}function de(n){return typeof n=="number"&&n>-1&&0==n%1&&9007199254740991>=n}function ye(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function be(n){return!!n&&typeof n=="object"}function xe(n){return null==n?false:ge(n)?su.test(ou.call(n)):be(n)&&(U(n)?su:vn).test(n)}function me(n){return typeof n=="number"||be(n)&&"[object Number]"==au.call(n);
}function je(n){if(!be(n)||"[object Object]"!=au.call(n)||U(n))return false;var t=uu;return typeof n.constructor=="function"&&(t=du(n)),null===t?true:(n=t.constructor,typeof n=="function"&&n instanceof n&&ou.call(n)==cu)}function we(n){return ye(n)&&"[object RegExp]"==au.call(n)}function Ae(n){return typeof n=="string"||!Lo(n)&&be(n)&&"[object String]"==au.call(n)}function Oe(n){return typeof n=="symbol"||be(n)&&"[object Symbol]"==au.call(n)}function Ee(n){return be(n)&&de(n.length)&&!!Cn[au.call(n)]}function ke(n,t){
return t>n}function Ie(n){if(!n)return[];if(he(n))return Ae(n)?n.match(En):Vt(n);if(bu&&n[bu])return z(n[bu]());var t=Ar(n);return("[object Map]"==t?L:"[object Set]"==t?F:Ne)(n)}function Re(n){if(!n)return 0===n?n:0;if(n=We(n),n===q||n===-q)return 1.7976931348623157e308*(0>n?-1:1);var t=n%1;return n===n?t?n-t:n:0}function Se(n){return n?Xn(Re(n),0,4294967295):0}function We(n){if(ye(n)&&(n=ge(n.valueOf)?n.valueOf():n,n=ye(n)?n+"":n),typeof n!="string")return 0===n?n:+n;n=n.replace(fn,"");var t=gn.test(n);
return t||dn.test(n)?Nn(n.slice(2),t?2:8):_n.test(n)?P:+n}function Ce(n){return Jt(n,Fe(n))}function Ue(n){if(typeof n=="string")return n;if(null==n)return"";if(Oe(n))return pu?Zu.call(n):"";var t=n+"";return"0"==t&&1/n==-q?"-0":t}function Be(n,t,r){return n=null==n?Z:st(n,t),n===Z?r:n}function ze(n,t){return Or(n,t,ht)}function Le(n,t){return Or(n,t,pt)}function $e(n){var t=Br(n);if(!t&&!he(n))return ku(Object(n));var r,e=Rr(n),u=!!e,e=e||[],o=e.length;for(r in n)!ht(n,r)||u&&("length"==r||B(r,o))||t&&"constructor"==r||e.push(r);
return e}function Fe(n){for(var t=-1,r=Br(n),e=xt(n),u=e.length,o=Rr(n),i=!!o,o=o||[],f=o.length;++t<u;){var c=e[t];i&&("length"==c||B(c,f))||"constructor"==c&&(r||!iu.call(n,c))||o.push(c)}return o}function Me(n){return j(n,$e(n))}function Ne(n){return n?A(n,$e(n)):[]}function De(n){return ti(Ue(n).toLowerCase())}function Ze(n){return(n=Ue(n))&&n.replace(bn,R).replace(On,"")}function qe(n,t){n=Ue(n),t=Re(t);var r="";if(!n||1>t||t>9007199254740991)return r;do t%2&&(r+=n),t=Au(t/2),n+=n;while(t);return r;
}function Pe(n,t,r){return n=Ue(n),t=r?Z:t,t===Z&&(t=Sn.test(n)?Rn:In),n.match(t)||[]}function Te(n){return function(){return n}}function Ke(n){return n}function Ge(n){return bt(typeof n=="function"?n:nt(n,true))}function Ve(n,t,r){var e=$e(t),o=lt(t,e);null!=r||ye(t)&&(o.length||!e.length)||(r=t,t=n,n=this,o=lt(t,$e(t)));var i=ye(r)&&"chain"in r?r.chain:true,f=ge(n);return u(o,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(i||t){var r=n(this.__wrapped__);return(r.__actions__=Vt(this.__actions__)).push({
func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,l([this.value()],arguments))})}),n}function Je(){}function Ye(n){return Wr(n)?It(n):Rt(n)}function He(n){return n&&n.length?x(n,Ke):0}k=k?Vn.defaults({},k,Vn.pick(Gn,Wn)):Gn;var Qe=k.Date,Xe=k.Error,nu=k.Math,tu=k.RegExp,ru=k.TypeError,eu=k.Array.prototype,uu=k.Object.prototype,ou=k.Function.prototype.toString,iu=uu.hasOwnProperty,fu=0,cu=ou.call(Object),au=uu.toString,lu=Gn._,su=tu("^"+ou.call(iu).replace(un,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),hu=k.f,pu=k.Symbol,_u=k.Uint8Array,gu=k.clearTimeout,vu=hu?hu.g:Z,du=Object.getPrototypeOf,yu=Object.getOwnPropertySymbols,bu=typeof(bu=pu&&pu.iterator)=="symbol"?bu:Z,xu=uu.propertyIsEnumerable,mu=k.setTimeout,ju=eu.splice,wu=nu.ceil,Au=nu.floor,Ou=k.isFinite,Eu=eu.join,ku=Object.keys,Iu=nu.max,Ru=nu.min,Su=k.parseInt,Wu=nu.random,Cu=eu.reverse,Uu=wr(k,"Map"),Bu=wr(k,"Set"),zu=wr(k,"WeakMap"),Lu=wr(Object,"create"),$u=zu&&new zu,Fu=Uu?ou.call(Uu):"",Mu=Bu?ou.call(Bu):"",Nu=pu?pu.prototype:Z,Du=pu?Nu.valueOf:Z,Zu=pu?Nu.toString:Z,qu={};
yn.templateSettings={escape:Q,evaluate:X,interpolate:nn,variable:"",imports:{_:yn}};var Pu=function(){function n(){}return function(t){if(ye(t)){n.prototype=t;var r=new n;n.prototype=Z}return r||{}}}(),Tu=nr(ct),Ku=nr(at,true),Gu=tr(),Vu=tr(true);vu&&!xu.call({valueOf:1},"valueOf")&&(xt=function(n){return z(vu(n))});var Ju=$u?function(n,t){return $u.set(n,t),n}:Ke,Yu=Bu&&2===new Bu([1,2]).size?function(n){return new Bu(n)}:Je,Hu=$u?function(n){return $u.get(n)}:Je,Qu=It("length"),Xu=yu||function(){return[];
};(Uu&&"[object Map]"!=Ar(new Uu)||Bu&&"[object Set]"!=Ar(new Bu))&&(Ar=function(n){var t=au.call(n);if(n="[object Object]"==t?n.constructor:null,n=typeof n=="function"?ou.call(n):""){if(n==Fu)return"[object Map]";if(n==Mu)return"[object Set]"}return t});var no=function(){var n=0,t=0;return function(r,e){var u=ko(),o=16-(u-t);if(t=u,o>0){if(150<=++n)return r}else n=0;return Ju(r,e)}}(),to=ce(function(n,t){Lo(n)||(n=null==n?[]:[Object(n)]),t=it(t);for(var r=n,e=t,u=-1,o=r.length,i=-1,f=e.length,c=Array(o+f);++u<o;)c[u]=r[u];
for(;++i<f;)c[u++]=e[i];return c}),ro=ce(function(n,t){return pe(n)?et(n,it(t,false,true)):[]}),eo=ce(function(n,t){var r=Pr(t);return pe(r)&&(r=Z),pe(n)?et(n,it(t,false,true),mr(r)):[]}),uo=ce(function(n,t){var r=Pr(t);return pe(r)&&(r=Z),pe(n)?et(n,it(t,false,true),Z,r):[]}),oo=ce(function(n){var t=a(n,Fr);return t.length&&t[0]===n[0]?_t(t):[]}),io=ce(function(n){var t=Pr(n),r=a(n,Fr);return t===Pr(r)?t=Z:r.pop(),r.length&&r[0]===n[0]?_t(r,mr(t)):[]}),fo=ce(function(n){var t=Pr(n),r=a(n,Fr);return t===Pr(r)?t=Z:r.pop(),
r.length&&r[0]===n[0]?_t(r,Z,t):[]}),co=ce(Tr),ao=ce(function(n,t){t=a(it(t),String);var r=Qn(n,t);return Wt(n,t.sort(I)),r}),lo=ce(function(n){return Nt(it(n,false,true))}),so=ce(function(n){var t=Pr(n);return pe(t)&&(t=Z),Nt(it(n,false,true),mr(t))}),ho=ce(function(n){var t=Pr(n);return pe(t)&&(t=Z),Nt(it(n,false,true),Z,t)}),po=ce(function(n,t){return pe(n)?et(n,t):[]}),_o=ce(function(n){return qt(i(n,pe))}),go=ce(function(n){var t=Pr(n);return pe(t)&&(t=Z),qt(i(n,pe),mr(t))}),vo=ce(function(n){var t=Pr(n);return pe(t)&&(t=Z),
qt(i(n,pe),Z,t)}),yo=ce(Gr),bo=ce(function(n){var t=n.length,t=t>1?n[t-1]:Z,t=typeof t=="function"?(n.pop(),t):Z;return Vr(n,t)}),xo=ce(function(n){function t(t){return Qn(t,n)}n=it(n);var r=n.length,e=r?n[0]:0,u=this.__wrapped__;return 1>=r&&!this.__actions__.length&&u instanceof An&&B(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:Yr,args:[t],thisArg:Z}),new wn(u,this.__chain__).thru(function(n){return r&&!n.length&&n.push(Z),n})):this.thru(t)}),mo=Qt(function(n,t,r){iu.call(n,r)?++n[r]:n[r]=1;
}),jo=Qt(function(n,t,r){iu.call(n,r)?n[r].push(t):n[r]=[t]}),wo=ce(function(n,t,e){var u=-1,o=typeof t=="function",i=Wr(t),f=he(n)?Array(n.length):[];return Tu(n,function(n){var c=o?t:i&&null!=n?n[t]:Z;f[++u]=c?r(c,n,e):vt(n,t,e)}),f}),Ao=Qt(function(n,t,r){n[r]=t}),Oo=Qt(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Eo=ce(function(n,t){if(null==n)return[];var r=t.length;return r>1&&Sr(n,t[0],t[1])?t=[]:r>2&&Sr(t[0],t[1],t[2])&&(t.length=1),Ot(n,it(t),[])}),ko=Qe.now,Io=ce(function(n,t,r){
var e=1;if(r.length)var u=$(r,Io.placeholder),e=32|e;return vr(n,e,t,r,u)}),Ro=ce(function(n,t,r){var e=3;if(r.length)var u=$(r,Ro.placeholder),e=32|e;return vr(t,e,n,r,u)}),So=ce(function(n,t){return rt(n,1,t)}),Wo=ce(function(n,t,r){return rt(n,We(t)||0,r)}),Co=ce(function(n,t){t=a(it(t),mr());var e=t.length;return ce(function(u){for(var o=-1,i=Ru(u.length,e);++o<i;)u[o]=t[o].call(this,u[o]);return r(n,this,u)})}),Uo=ce(function(n,t){var r=$(t,Uo.placeholder);return vr(n,32,Z,t,r)}),Bo=ce(function(n,t){
var r=$(t,Bo.placeholder);return vr(n,64,Z,t,r)}),zo=ce(function(n,t){return vr(n,256,Z,Z,Z,it(t))}),Lo=Array.isArray,$o=Xt(function(n,t){Jt(t,$e(t),n)}),Fo=Xt(function(n,t){Jt(t,Fe(t),n)}),Mo=Xt(function(n,t,r,e){Yt(t,Fe(t),n,e)}),No=Xt(function(n,t,r,e){Yt(t,$e(t),n,e)}),Do=ce(function(n,t){return Qn(n,it(t))}),Zo=ce(function(n){return n.push(Z,Tn),r(Mo,Z,n)}),qo=ce(function(n){return n.push(Z,zr),r(Vo,Z,n)}),Po=ar(function(n,t,r){n[t]=r},Te(Ke)),To=ar(function(n,t,r){iu.call(n,t)?n[t].push(r):n[t]=[r];
},mr),Ko=ce(vt),Go=Xt(function(n,t,r){At(n,t,r)}),Vo=Xt(function(n,t,r,e){At(n,t,r,e)}),Jo=ce(function(n,t){return null==n?{}:(t=a(it(t),String),Et(n,et(Fe(n),t)))}),Yo=ce(function(n,t){return null==n?{}:Et(n,it(t))}),Ho=ur(function(n,t,r){return t=t.toLowerCase(),n+(r?De(t):t)}),Qo=ur(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Xo=ur(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),ni=er("toLowerCase"),ti=er("toUpperCase"),ri=ur(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),ei=ur(function(n,t,r){
return n+(r?" ":"")+De(t)}),ui=ur(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),oi=ce(function(n,t){try{return r(n,Z,t)}catch(e){return ye(e)?e:new Xe(e)}}),ii=ce(function(n,t){return u(it(t),function(t){n[t]=Io(n[t],n)}),n}),fi=fr(),ci=fr(true),ai=ce(function(n,t){return function(r){return vt(r,n,t)}}),li=ce(function(n,t){return function(r){return vt(n,r,t)}}),si=lr(a),hi=lr(o),pi=lr(p),_i=pr(),gi=pr(true),vi=gr("ceil"),di=gr("floor"),yi=gr("round");return yn.prototype=jn.prototype,wn.prototype=Pu(jn.prototype),
wn.prototype.constructor=wn,An.prototype=Pu(jn.prototype),An.prototype.constructor=An,Bn.prototype=Lu?Lu(null):uu,zn.prototype.clear=function(){this.__data__={hash:new Bn,map:Uu?new Uu:[],string:new Bn}},zn.prototype["delete"]=function(n){var t=this.__data__;return Cr(n)?(t=typeof n=="string"?t.string:t.hash,n=(Lu?t[n]!==Z:iu.call(t,n))&&delete t[n]):n=Uu?t.map["delete"](n):Dn(t.map,n),n},zn.prototype.get=function(n){var t=this.__data__;return Cr(n)?(t=typeof n=="string"?t.string:t.hash,Lu?(n=t[n],
n="__lodash_hash_undefined__"===n?Z:n):n=iu.call(t,n)?t[n]:Z):n=Uu?t.map.get(n):Zn(t.map,n),n},zn.prototype.has=function(n){var t=this.__data__;return Cr(n)?(t=typeof n=="string"?t.string:t.hash,n=Lu?t[n]!==Z:iu.call(t,n)):n=Uu?t.map.has(n):-1<qn(t.map,n),n},zn.prototype.set=function(n,t){var r=this.__data__;return Cr(n)?(typeof n=="string"?r.string:r.hash)[n]=Lu&&t===Z?"__lodash_hash_undefined__":t:Uu?r.map.set(n,t):Pn(r.map,n,t),this},Ln.prototype.push=function(n){var t=this.__data__;Cr(n)?(t=t.__data__,
(typeof n=="string"?t.string:t.hash)[n]="__lodash_hash_undefined__"):t.set(n,"__lodash_hash_undefined__")},Fn.prototype.clear=function(){this.__data__={array:[],map:null}},Fn.prototype["delete"]=function(n){var t=this.__data__,r=t.array;return r?Dn(r,n):t.map["delete"](n)},Fn.prototype.get=function(n){var t=this.__data__,r=t.array;return r?Zn(r,n):t.map.get(n)},Fn.prototype.has=function(n){var t=this.__data__,r=t.array;return r?-1<qn(r,n):t.map.has(n)},Fn.prototype.set=function(n,t){var r=this.__data__,e=r.array;
return e&&(199>e.length?Pn(e,n,t):(r.array=null,r.map=new zn(e))),(r=r.map)&&r.set(n,t),this},ie.Cache=zn,yn.after=function(n,t){if(typeof t!="function")throw new ru("Expected a function");return n=Ie(n),function(){return 1>--n?t.apply(this,arguments):void 0}},yn.ary=te,yn.assign=$o,yn.assignIn=Fo,yn.assignInWith=Mo,yn.assignWith=No,yn.at=Do,yn.before=re,yn.bind=Io,yn.bindAll=ii,yn.bindKey=Ro,yn.chain=Jr,yn.chunk=function(n,t){t=Iu(Ie(t),0);var r=n?n.length:0;if(!r||1>t)return[];for(var e=0,u=-1,o=Array(wu(r/t));r>e;)o[++u]=Bt(n,e,e+=t);
return o},yn.compact=function(n){for(var t=-1,r=n?n.length:0,e=-1,u=[];++t<r;){var o=n[t];o&&(u[++e]=o)}return u},yn.concat=to,yn.cond=function(n){var t=n?n.length:0,e=mr();return n=t?a(n,function(n){if("function"!=typeof n[1])throw new ru("Expected a function");return[e(n[0]),n[1]]}):[],fe(function(e){for(var u=-1;++u<t;){var o=n[u];if(r(o[0],this,e))return r(o[1],this,e)}})},yn.conforms=function(n){return tt(nt(n,true))},yn.constant=Pe,yn.countBy=mo,yn.create=function(n,t){var r=Pu(n);return t?Hn(r,t):r;
},yn.curry=ee,yn.curryRight=ue,yn.debounce=oe,yn.defaults=Zo,yn.defaultsDeep=qo,yn.defer=So,yn.delay=Wo,yn.difference=ro,yn.differenceBy=eo,yn.differenceWith=uo,yn.drop=Dr,yn.dropRight=Zr,yn.dropRightWhile=function(n,t){return n&&n.length?Dt(n,mr(t,3),true,true):[]},yn.dropWhile=function(n,t){return n&&n.length?Dt(n,mr(t,3),true):[]},yn.fill=function(n,t,r,e){var u=n?n.length:0;if(!u)return[];for(r&&typeof r!="number"&&Sr(n,t,r)&&(r=0,e=u),u=n.length,r=Ie(r),0>r&&(r=-r>u?0:u+r),e=e===Z||e>u?u:Ie(e),0>e&&(e+=u),
e=r>e?0:Re(e);e>r;)n[r++]=t;return n},yn.filter=function(n,t){return(Lo(n)?i:ot)(n,mr(t,3))},yn.flatMap=function(n,t){return n&&n.length?it(a(n,mr(t,3))):[]},yn.flatten=function(n){return n&&n.length?it(n):[]},yn.flattenDeep=function(n){return n&&n.length?it(n,true):[]},yn.flip=function(n){return vr(n,512)},yn.flow=fi,yn.flowRight=ci,yn.fromPairs=function(n){for(var t=-1,r=n?n.length:0,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e},yn.functions=function(n){return null==n?[]:lt(n,Le(n))},yn.functionsIn=function(n){
return null==n?[]:lt(n,$e(n))},yn.groupBy=jo,yn.initial=function(n){return Zr(n,1)},yn.intersection=oo,yn.intersectionBy=io,yn.intersectionWith=fo,yn.invert=Po,yn.invertBy=To,yn.invokeMap=wo,yn.iteratee=Ke,yn.keyBy=Ao,yn.keys=Le,yn.keysIn=$e,yn.map=function(n,t){return(Lo(n)?a:mt)(n,mr(t,3))},yn.mapKeys=function(n,t){var r={};return t=mr(t,3),ct(n,function(n,e,u){r[t(n,e,u)]=n}),r},yn.mapValues=function(n,t){var r={};return t=mr(t,3),ct(n,function(n,e,u){r[e]=t(n,e,u)}),r},yn.matches=Ge,yn.matchesProperty=function(n,t){
return wt(n,nt(t,true))},yn.memoize=ie,yn.merge=Go,yn.mergeWith=Vo,yn.method=ai,yn.methodOf=li,yn.mixin=Ve,yn.negate=function(n){if(typeof n!="function")throw new ru("Expected a function");return function(){return!n.apply(this,arguments)}},yn.nthArg=function(n){return n=Ie(n),function(){return arguments[n]}},yn.omit=Jo,yn.omitBy=function(n,t){return t=mr(t,2),kt(n,function(n,r){return!t(n,r)})},yn.once=function(n){return re(2,n)},yn.orderBy=function(n,t,r,e){return null==n?[]:(Lo(t)||(t=null==t?[]:[t]),
r=e?Z:r,Lo(r)||(r=null==r?[]:[r]),Ot(n,t,r))},yn.over=si,yn.overArgs=Co,yn.overEvery=hi,yn.overSome=pi,yn.partial=Uo,yn.partialRight=Bo,yn.partition=Oo,yn.pick=Yo,yn.pickBy=function(n,t){return null==n?{}:kt(n,mr(t,2))},yn.property=Ye,yn.propertyOf=function(n){return function(t){return null==n?Z:st(n,t)}},yn.pull=co,yn.pullAll=Tr,yn.pullAllBy=function(n,t,r){return n&&n.length&&t&&t.length?St(n,t,mr(r)):n},yn.pullAt=ao,yn.range=_i,yn.rangeRight=gi,yn.rearg=zo,yn.reject=function(n,t){var r=Lo(n)?i:ot;
return t=mr(t,3),r(n,function(n,r,e){return!t(n,r,e)})},yn.remove=function(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],o=n.length;for(t=mr(t,3);++e<o;){var i=n[e];t(i,e,n)&&(r.push(i),u.push(e))}return Wt(n,u),r},yn.rest=fe,yn.reverse=Kr,yn.sampleSize=ne,yn.set=function(n,t,r){return null==n?n:Ut(n,t,r)},yn.setWith=function(n,t,r,e){return e=typeof e=="function"?e:Z,null==n?n:Ut(n,t,r,e)},yn.shuffle=function(n){return ne(n,4294967295)},yn.slice=function(n,t,r){var e=n?n.length:0;return e?(r&&typeof r!="number"&&Sr(n,t,r)?(t=0,
r=e):(t=null==t?0:Ie(t),r=r===Z?e:Ie(r)),Bt(n,t,r)):[]},yn.sortBy=Eo,yn.sortedUniq=function(n){return n&&n.length?Ft(n):[]},yn.sortedUniqBy=function(n,t){return n&&n.length?Ft(n,mr(t)):[]},yn.split=function(n,t,r){return Ce(n).split(t,r)},yn.spread=function(n){if(typeof n!="function")throw new ru("Expected a function");return function(t){return r(n,this,t)}},yn.tail=function(n){return Dr(n,1)},yn.take=function(n,t,r){return n&&n.length?(t=r||t===Z?1:Ie(t),Bt(n,0,0>t?0:t)):[]},yn.takeRight=function(n,t,r){
var e=n?n.length:0;return e?(t=r||t===Z?1:Ie(t),t=e-t,Bt(n,0>t?0:t,e)):[]},yn.takeRightWhile=function(n,t){return n&&n.length?Dt(n,mr(t,3),false,true):[]},yn.takeWhile=function(n,t){return n&&n.length?Dt(n,mr(t,3)):[]},yn.tap=function(n,t){return t(n),n},yn.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ru("Expected a function");return de(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),oe(n,t,{leading:e,maxWait:t,trailing:u})},yn.thru=Yr,yn.toArray=ke,yn.toPairs=Fe,
yn.toPairsIn=function(n){return j(n,$e(n))},yn.toPath=function(n){return Lo(n)?a(n,String):$r(n)},yn.toPlainObject=We,yn.transform=function(n,t,r){var e=Lo(n)||Oe(n);if(t=mr(t,4),null==r)if(e||de(n)){var o=n.constructor;r=e?Lo(n)?new o:[]:Pu(_e(o)?o.prototype:Z)}else r={};return(e?u:ct)(n,function(n,e,u){return t(r,n,e,u)}),r},yn.unary=function(n){return te(n,1)},yn.union=lo,yn.unionBy=so,yn.unionWith=ho,yn.uniq=function(n){return n&&n.length?Nt(n):[]},yn.uniqBy=function(n,t){return n&&n.length?Nt(n,mr(t)):[];
},yn.uniqWith=function(n,t){return n&&n.length?Nt(n,Z,t):[]},yn.unset=function(n,t){var r;if(null==n)r=true;else{r=n;var e=t,e=Wr(e,r)?[e+""]:Mt(e);r=Lr(r,e),e=Pr(e),r=null!=r&&Be(r,e)?delete r[e]:true}return r},yn.unzip=Gr,yn.unzipWith=Vr,yn.values=Me,yn.valuesIn=function(n){return null==n?A(n,$e(n)):[]},yn.without=po,yn.words=qe,yn.wrap=function(n,t){return t=null==t?Te:t,Uo(t,n)},yn.xor=_o,yn.xorBy=go,yn.xorWith=vo,yn.zip=yo,yn.zipObject=function(n,t){return Pt(n||[],t||[],Jn)},yn.zipObjectDeep=function(n,t){
return Pt(n||[],t||[],Ut)},yn.zipWith=bo,yn.extend=Fo,yn.extendWith=Mo,Ve(yn,yn),yn.add=function(n,t){var r;return n!==Z&&(r=n),t!==Z&&(r=r===Z?t:r+t),r},yn.attempt=oi,yn.camelCase=Ho,yn.capitalize=Ne,yn.ceil=vi,yn.clamp=function(n,t,r){return r===Z&&(r=t,t=Z),r!==Z&&(r=Se(r),r=r===r?r:0),t!==Z&&(t=Se(t),t=t===t?t:0),Xn(Se(n),t,r)},yn.clone=function(n){return nt(n)},yn.cloneDeep=function(n){return nt(n,true)},yn.cloneDeepWith=function(n,t){return nt(n,true,t)},yn.cloneWith=function(n,t){return nt(n,false,t);
},yn.deburr=De,yn.endsWith=function(n,t,r){n=Ce(n),t=typeof t=="string"?t:t+"";var e=n.length;return r=r===Z?e:Xn(Ie(r),0,e),r-=t.length,r>=0&&n.indexOf(t,r)==r},yn.eq=ce,yn.escape=function(n){return(n=Ce(n))&&H.test(n)?n.replace(J,S):n},yn.escapeRegExp=function(n){return(n=Ce(n))&&on.test(n)?n.replace(un,"\\$&"):n},yn.every=function(n,t,r){var e=Lo(n)?o:ut;return r&&Sr(n,t,r)&&(t=Z),e(n,mr(t,3))},yn.find=function(n,t){if(t=mr(t,3),Lo(n)){var r=v(n,t);return r>-1?n[r]:Z}return g(n,t,Tu)},yn.findIndex=function(n,t){
return n&&n.length?v(n,mr(t,3)):-1},yn.findKey=function(n,t){return g(n,mr(t,3),ct,true)},yn.findLast=function(n,t){if(t=mr(t,3),Lo(n)){var r=v(n,t,true);return r>-1?n[r]:Z}return g(n,t,Ku)},yn.findLastIndex=function(n,t){return n&&n.length?v(n,mr(t,3),true):-1},yn.findLastKey=function(n,t){return g(n,mr(t,3),at,true)},yn.floor=di,yn.forEach=Qr,yn.forEachRight=Xr,yn.forIn=function(n,t){return null==n?n:Gu(n,Mr(t),$e)},yn.forInRight=function(n,t){return null==n?n:Vu(n,Mr(t),$e)},yn.forOwn=function(n,t){return n&&ct(n,Mr(t));
},yn.forOwnRight=function(n,t){return n&&at(n,Mr(t))},yn.get=Ue,yn.gt=ae,yn.gte=function(n,t){return n>=t},yn.has=Be,yn.hasIn=ze,yn.head=qr,yn.identity=Te,yn.includes=function(n,t,r,e){return n=se(n)?n:Me(n),r=r&&!e?Ie(r):0,e=n.length,0>r&&(r=Iu(e+r,0)),we(n)?e>=r&&-1<n.indexOf(t,r):!!e&&-1<d(n,t,r)},yn.indexOf=function(n,t,r){var e=n?n.length:0;return e?(r=Ie(r),0>r&&(r=Iu(e+r,0)),d(n,t,r)):-1},yn.inRange=function(n,t,r){return t=Se(t)||0,r===Z?(r=t,t=0):r=Se(r)||0,n=Se(n),n>=Ru(t,r)&&n<Iu(t,r)},
yn.invoke=Ko,yn.isArguments=le,yn.isArray=Lo,yn.isArrayLike=se,yn.isArrayLikeObject=he,yn.isBoolean=function(n){return true===n||false===n||ye(n)&&"[object Boolean]"==au.call(n)},yn.isDate=function(n){return ye(n)&&"[object Date]"==au.call(n)},yn.isElement=function(n){return!!n&&1===n.nodeType&&ye(n)&&!me(n)},yn.isEmpty=function(n){if(se(n)&&(Lo(n)||we(n)||_e(n.splice)||le(n)))return!n.length;for(var t in n)if(iu.call(n,t))return false;return true},yn.isEqual=function(n,t){return dt(n,t)},yn.isEqualWith=function(n,t,r){
var e=(r=typeof r=="function"?r:Z)?r(n,t):Z;return e===Z?dt(n,t,r):!!e},yn.isError=pe,yn.isFinite=function(n){return typeof n=="number"&&Ou(n)},yn.isFunction=_e,yn.isInteger=ge,yn.isLength=ve,yn.isMatch=function(n,t){return n===t||yt(n,t,jr(t))},yn.isMatchWith=function(n,t,r){return r=typeof r=="function"?r:Z,yt(n,t,jr(t),r)},yn.isNaN=function(n){return xe(n)&&n!=+n},yn.isNative=be,yn.isNil=function(n){return null==n},yn.isNull=function(n){return null===n},yn.isNumber=xe,yn.isObject=de,yn.isObjectLike=ye,
yn.isPlainObject=me,yn.isRegExp=je,yn.isSafeInteger=function(n){return ge(n)&&n>=-9007199254740991&&9007199254740991>=n},yn.isString=we,yn.isSymbol=Ae,yn.isTypedArray=Oe,yn.isUndefined=function(n){return n===Z},yn.join=function(n,t){return n?Eu.call(n,t):""},yn.kebabCase=Qo,yn.last=Pr,yn.lastIndexOf=function(n,t,r){var e=n?n.length:0;if(!e)return-1;var u=e;if(r!==Z&&(u=Ie(r),u=(0>u?Iu(e+u,0):Ru(u,e-1))+1),t!==t)return C(n,u,true);for(;u--;)if(n[u]===t)return u;return-1},yn.lowerCase=Xo,yn.lowerFirst=ni,
yn.lt=Ee,yn.lte=function(n,t){return t>=n},yn.max=function(n){return n&&n.length?_(n,Te,ae):Z},yn.maxBy=function(n,t){return n&&n.length?_(n,mr(t),ae):Z},yn.mean=function(n){return He(n)/(n?n.length:0)},yn.min=function(n){return n&&n.length?_(n,Te,Ee):Z},yn.minBy=function(n,t){return n&&n.length?_(n,mr(t),Ee):Z},yn.noConflict=function(){return Gn._===this&&(Gn._=lu),this},yn.noop=Je,yn.now=ko,yn.pad=function(n,t,r){n=Ce(n),t=Ie(t);var e=M(n);return t&&t>e?(e=(t-e)/2,t=Au(e),e=wu(e),sr("",t,r)+n+sr("",e,r)):n;
},yn.padEnd=function(n,t,r){return n=Ce(n),n+sr(n,t,r)},yn.padStart=function(n,t,r){return n=Ce(n),sr(n,t,r)+n},yn.parseInt=function(n,t,r){return r||null==t?t=0:t&&(t=+t),n=Ce(n).replace(fn,""),Su(n,t||(pn.test(n)?16:10))},yn.random=function(n,t,r){if(r&&typeof r!="boolean"&&Sr(n,t,r)&&(t=r=Z),r===Z&&(typeof t=="boolean"?(r=t,t=Z):typeof n=="boolean"&&(r=n,n=Z)),n===Z&&t===Z?(n=0,t=1):(n=Se(n)||0,t===Z?(t=n,n=0):t=Se(t)||0),n>t){var e=n;n=t,t=e}return r||n%1||t%1?(r=Wu(),Ru(n+r*(t-n+Mn("1e-"+((r+"").length-1))),t)):Ct(n,t);
},yn.reduce=function(n,t,r){var e=Lo(n)?s:y,u=3>arguments.length;return e(n,mr(t,4),r,u,Tu)},yn.reduceRight=function(n,t,r){var e=Lo(n)?h:y,u=3>arguments.length;return e(n,mr(t,4),r,u,Ku)},yn.repeat=Ze,yn.replace=function(){var n=arguments,t=Ce(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},yn.result=function(n,t,r){if(Wr(t,n))e=null==n?Z:n[t];else{t=Mt(t);var e=Ue(n,t);n=Lr(n,t)}return e===Z&&(e=r),_e(e)?e.call(n):e},yn.round=yi,yn.runInContext=D,yn.sample=function(n){n=se(n)?n:Me(n);var t=n.length;
return t>0?n[Ct(0,t-1)]:Z},yn.size=function(n){if(null==n)return 0;if(se(n)){var t=n.length;return t&&we(n)?M(n):t}return Le(n).length},yn.snakeCase=ri,yn.some=function(n,t,r){var e=Lo(n)?p:zt;return r&&Sr(n,t,r)&&(t=Z),e(n,mr(t,3))},yn.sortedIndex=function(n,t){return Lt(n,t)},yn.sortedIndexBy=function(n,t,r){return $t(n,t,mr(r))},yn.sortedIndexOf=function(n,t){var r=n?n.length:0;if(r){var e=Lt(n,t);if(r>e&&ce(n[e],t))return e}return-1},yn.sortedLastIndex=function(n,t){return Lt(n,t,true)},yn.sortedLastIndexBy=function(n,t,r){
return $t(n,t,mr(r),true)},yn.sortedLastIndexOf=function(n,t){if(n&&n.length){var r=Lt(n,t,true)-1;if(ce(n[r],t))return r}return-1},yn.startCase=ei,yn.startsWith=function(n,t,r){return n=Ce(n),r=Xn(Ie(r),0,n.length),n.lastIndexOf(t,r)==r},yn.subtract=function(n,t){var r;return n!==Z&&(r=n),t!==Z&&(r=r===Z?t:r-t),r},yn.sum=He,yn.sumBy=function(n,t){return n&&n.length?x(n,mr(t)):0},yn.template=function(n,t,r){var e=yn.templateSettings;r&&Sr(n,t,r)&&(t=Z),n=Ce(n),t=Mo({},t,e,Tn),r=Mo({},t.imports,e.imports,Tn);
var u,o,i=Le(r),f=A(r,i),c=0;r=t.interpolate||xn;var a="__p+='";r=tu((t.escape||xn).source+"|"+r.source+"|"+(r===nn?sn:xn).source+"|"+(t.evaluate||xn).source+"|$","g");var l="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,i,f,l){return e||(e=i),a+=n.slice(c,l).replace(mn,W),r&&(u=true,a+="'+__e("+r+")+'"),f&&(o=true,a+="';"+f+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+t.length,t}),a+="';",(t=t.variable)||(a="with(obj){"+a+"}"),a=(o?a.replace(T,""):a).replace(K,"$1").replace(G,"$1;"),
a="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",t=oi(function(){return Function(i,l+"return "+a).apply(Z,f)}),t.source=a,pe(t))throw t;return t},yn.times=function(n,t){if(n=Ie(n),1>n||n>9007199254740991)return[];var r=4294967295,e=Ru(n,4294967295);for(t=Mr(t),n-=4294967295,e=m(e,t);++r<n;)t(r);return e},yn.toInteger=Ie,yn.toLength=Re,yn.toLower=function(n){
return Ce(n).toLowerCase()},yn.toNumber=Se,yn.toSafeInteger=function(n){return Xn(Ie(n),-9007199254740991,9007199254740991)},yn.toString=Ce,yn.toUpper=function(n){return Ce(n).toUpperCase()},yn.trim=function(n,t,r){return(n=Ce(n))?r||t===Z?n.replace(fn,""):(t+="")?(n=n.match(En),t=t.match(En),n.slice(O(n,t),E(n,t)+1).join("")):n:n},yn.trimEnd=function(n,t,r){return(n=Ce(n))?r||t===Z?n.replace(an,""):(t+="")?(n=n.match(En),n.slice(0,E(n,t.match(En))+1).join("")):n:n},yn.trimStart=function(n,t,r){return(n=Ce(n))?r||t===Z?n.replace(cn,""):(t+="")?(n=n.match(En),
n.slice(O(n,t.match(En))).join("")):n:n},yn.truncate=function(n,t){var r=30,e="...";if(de(t))var u="separator"in t?t.separator:u,r="length"in t?Ie(t.length):r,e="omission"in t?Ce(t.omission):e;n=Ce(n);var o=n.length;if(kn.test(n))var i=n.match(En),o=i.length;if(r>=o)return n;if(o=r-M(e),1>o)return e;if(r=i?i.slice(0,o).join(""):n.slice(0,o),u===Z)return r+e;if(i&&(o+=r.length-o),je(u)){if(n.slice(o).search(u)){var f=r;for(u.global||(u=tu(u.source,Ce(hn.exec(u))+"g")),u.lastIndex=0;i=u.exec(f);)var c=i.index;
r=r.slice(0,c===Z?o:c)}}else n.indexOf(u,o)!=o&&(u=r.lastIndexOf(u),u>-1&&(r=r.slice(0,u)));return r+e},yn.unescape=function(n){return(n=Ce(n))&&Y.test(n)?n.replace(V,N):n},yn.uniqueId=function(n){var t=++fu;return Ce(n)+t},yn.upperCase=ui,yn.upperFirst=ti,yn.each=Qr,yn.eachRight=Xr,yn.first=qr,Ve(yn,function(){var n={};return ct(yn,function(t,r){iu.call(yn.prototype,r)||(n[r]=t)}),n}(),{chain:false}),yn.VERSION="4.1.0",u("bind bindKey curry curryRight partial partialRight".split(" "),function(n){yn[n].placeholder=yn;
}),u(["drop","take"],function(n,t){An.prototype[n]=function(r){var e=this.__filtered__;if(e&&!t)return new An(this);r=r===Z?1:Iu(Ie(r),0);var u=this.clone();return e?u.__takeCount__=Ru(r,u.__takeCount__):u.__views__.push({size:Ru(r,4294967295),type:n+(0>u.__dir__?"Right":"")}),u},An.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),u(["filter","map","takeWhile"],function(n,t){var r=t+1,e=1==r||3==r;An.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({
iteratee:mr(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),u(["head","last"],function(n,t){var r="take"+(t?"Right":"");An.prototype[n]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");An.prototype[n]=function(){return this.__filtered__?new An(this):this[r](1)}}),An.prototype.compact=function(){return this.filter(Te)},An.prototype.find=function(n){return this.filter(n).head()},An.prototype.findLast=function(n){return this.reverse().find(n);
},An.prototype.invokeMap=fe(function(n,t){return typeof n=="function"?new An(this):this.map(function(r){return vt(r,n,t)})}),An.prototype.reject=function(n){return n=mr(n,3),this.filter(function(t){return!n(t)})},An.prototype.slice=function(n,t){n=Ie(n);var r=this;return r.__filtered__&&(n>0||0>t)?new An(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==Z&&(t=Ie(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},An.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},An.prototype.toArray=function(){
return this.take(4294967295)},ct(An.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=yn[e?"take"+("last"==t?"Right":""):t],o=e||/^find/.test(t);u&&(yn.prototype[t]=function(){function t(n){return n=u.apply(yn,l([n],f)),e&&h?n[0]:n}var i=this.__wrapped__,f=e?[1]:arguments,c=i instanceof An,a=f[0],s=c||Lo(i);s&&r&&typeof a=="function"&&1!=a.length&&(c=s=false);var h=this.__chain__,p=!!this.__actions__.length,a=o&&!h,c=c&&!p;return!o&&s?(i=c?i:new An(this),
i=n.apply(i,f),i.__actions__.push({func:Yr,args:[t],thisArg:Z}),new wn(i,h)):a&&c?n.apply(this,f):(i=this.thru(t),a?e?i.value()[0]:i.value():i)})}),u("pop push shift sort splice unshift".split(" "),function(n){var t=eu[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);yn.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){return t.apply(r,n)})}}),ct(An.prototype,function(n,t){var r=yn[t];if(r){var e=r.name+"";(qu[e]||(qu[e]=[])).push({
name:t,func:r})}}),qu[cr(Z,2).name]=[{name:"wrapper",func:Z}],An.prototype.clone=function(){var n=new An(this.__wrapped__);return n.__actions__=Vt(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Vt(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Vt(this.__views__),n},An.prototype.reverse=function(){if(this.__filtered__){var n=new An(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},An.prototype.value=function(){
var n,t=this.__wrapped__.value(),r=this.__dir__,e=Lo(t),u=0>r,o=e?t.length:0;n=o;for(var i=this.__views__,f=0,c=-1,a=i.length;++c<a;){var l=i[c],s=l.size;switch(l.type){case"drop":f+=s;break;case"dropRight":n-=s;break;case"take":n=Ru(n,f+s);break;case"takeRight":f=Iu(f,n-s)}}if(n={start:f,end:n},i=n.start,f=n.end,n=f-i,u=u?f:i-1,i=this.__iteratees__,f=i.length,c=0,a=Ru(n,this.__takeCount__),!e||200>o||o==n&&a==n)return Zt(t,this.__actions__);e=[];n:for(;n--&&a>c;){for(u+=r,o=-1,l=t[u];++o<f;){var h=i[o],s=h.type,h=(0,
h.iteratee)(l);if(2==s)l=h;else if(!h){if(1==s)continue n;break n}}e[c++]=l}return e},yn.prototype.at=xo,yn.prototype.chain=function(){return Jr(this)},yn.prototype.commit=function(){return new wn(this.value(),this.__chain__)},yn.prototype.flatMap=function(n){return this.map(n).flatten()},yn.prototype.next=function(){this.__values__===Z&&(this.__values__=ke(this.value()));var n=this.__index__>=this.__values__.length,t=n?Z:this.__values__[this.__index__++];return{done:n,value:t}},yn.prototype.plant=function(n){
for(var t,r=this;r instanceof jn;){var e=Nr(r);e.__index__=0,e.__values__=Z,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},yn.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof An?(this.__actions__.length&&(n=new An(this)),n=n.reverse(),n.__actions__.push({func:Yr,args:[Kr],thisArg:Z}),new wn(n,this.__chain__)):this.thru(Kr)},yn.prototype.toJSON=yn.prototype.valueOf=yn.prototype.value=function(){return Zt(this.__wrapped__,this.__actions__)},bu&&(yn.prototype[bu]=Hr),
yn}var Z,q=1/0,P=NaN,T=/\b__p\+='';/g,K=/\b(__p\+=)''\+/g,G=/(__e\(.*?\)|\b__t\))\+'';/g,V=/&(?:amp|lt|gt|quot|#39|#96);/g,J=/[&<>"'`]/g,Y=RegExp(V.source),H=RegExp(J.source),Q=/<%-([\s\S]+?)%>/g,X=/<%([\s\S]+?)%>/g,nn=/<%=([\s\S]+?)%>/g,tn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rn=/^\w*$/,en=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g,un=/[\\^$.*+?()[\]{}|]/g,on=RegExp(un.source),fn=/^\s+|\s+$/g,cn=/^\s+/,an=/\s+$/,ln=/\\(\\)?/g,sn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,hn=/\w*$/,pn=/^0x/i,_n=/^[-+]0x[0-9a-f]+$/i,gn=/^0b[01]+$/i,vn=/^\[object .+?Constructor\]$/,dn=/^0o[0-7]+$/i,yn=/^(?:0|[1-9]\d*)$/,bn=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,xn=/($^)/,mn=/['\n\r\u2028\u2029\\]/g,jn="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*",wn="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+jn,An="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",On=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]","g"),En=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+An+jn,"g"),kn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),In=/[a-zA-Z0-9]+/g,Rn=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2018\\u2019\\u201c\\u201d \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2018\\u2019\\u201c\\u201d \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2018\\u2019\\u201c\\u201d \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2018\\u2019\\u201c\\u201d \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2018\\u2019\\u201c\\u201d \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+|[A-Z\\xc0-\\xd6\\xd8-\\xde]+|\\d+",wn].join("|"),"g"),Sn=/[a-z][A-Z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wn="Array Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Reflect RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Cn={};
return e&&(199>e.length?Pn(e,n,t):(r.array=null,r.map=new zn(e))),(r=r.map)&&r.set(n,t),this},fe.Cache=zn,yn.after=function(n,t){if(typeof t!="function")throw new ru("Expected a function");return n=Re(n),function(){return 1>--n?t.apply(this,arguments):void 0}},yn.ary=re,yn.assign=$o,yn.assignIn=Fo,yn.assignInWith=Mo,yn.assignWith=No,yn.at=Do,yn.before=ee,yn.bind=Io,yn.bindAll=ii,yn.bindKey=Ro,yn.chain=Jr,yn.chunk=function(n,t){t=Iu(Re(t),0);var r=n?n.length:0;if(!r||1>t)return[];for(var e=0,u=-1,o=Array(wu(r/t));r>e;)o[++u]=Bt(n,e,e+=t);
return o},yn.compact=function(n){for(var t=-1,r=n?n.length:0,e=-1,u=[];++t<r;){var o=n[t];o&&(u[++e]=o)}return u},yn.concat=to,yn.cond=function(n){var t=n?n.length:0,e=mr();return n=t?a(n,function(n){if("function"!=typeof n[1])throw new ru("Expected a function");return[e(n[0]),n[1]]}):[],ce(function(e){for(var u=-1;++u<t;){var o=n[u];if(r(o[0],this,e))return r(o[1],this,e)}})},yn.conforms=function(n){return tt(nt(n,true))},yn.constant=Te,yn.countBy=mo,yn.create=function(n,t){var r=Pu(n);return t?Hn(r,t):r;
},yn.curry=ue,yn.curryRight=oe,yn.debounce=ie,yn.defaults=Zo,yn.defaultsDeep=qo,yn.defer=So,yn.delay=Wo,yn.difference=ro,yn.differenceBy=eo,yn.differenceWith=uo,yn.drop=Dr,yn.dropRight=Zr,yn.dropRightWhile=function(n,t){return n&&n.length?Dt(n,mr(t,3),true,true):[]},yn.dropWhile=function(n,t){return n&&n.length?Dt(n,mr(t,3),true):[]},yn.fill=function(n,t,r,e){var u=n?n.length:0;if(!u)return[];for(r&&typeof r!="number"&&Sr(n,t,r)&&(r=0,e=u),u=n.length,r=Re(r),0>r&&(r=-r>u?0:u+r),e=e===Z||e>u?u:Re(e),0>e&&(e+=u),
e=r>e?0:Se(e);e>r;)n[r++]=t;return n},yn.filter=function(n,t){return(Lo(n)?i:ot)(n,mr(t,3))},yn.flatMap=function(n,t){return it(ne(n,t))},yn.flatten=function(n){return n&&n.length?it(n):[]},yn.flattenDeep=function(n){return n&&n.length?it(n,true):[]},yn.flip=function(n){return vr(n,512)},yn.flow=fi,yn.flowRight=ci,yn.fromPairs=function(n){for(var t=-1,r=n?n.length:0,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e},yn.functions=function(n){return null==n?[]:lt(n,$e(n))},yn.functionsIn=function(n){return null==n?[]:lt(n,Fe(n));
},yn.groupBy=jo,yn.initial=function(n){return Zr(n,1)},yn.intersection=oo,yn.intersectionBy=io,yn.intersectionWith=fo,yn.invert=Po,yn.invertBy=To,yn.invokeMap=wo,yn.iteratee=Ge,yn.keyBy=Ao,yn.keys=$e,yn.keysIn=Fe,yn.map=ne,yn.mapKeys=function(n,t){var r={};return t=mr(t,3),ct(n,function(n,e,u){r[t(n,e,u)]=n}),r},yn.mapValues=function(n,t){var r={};return t=mr(t,3),ct(n,function(n,e,u){r[e]=t(n,e,u)}),r},yn.matches=function(n){return jt(nt(n,true))},yn.matchesProperty=function(n,t){return wt(n,nt(t,true));
},yn.memoize=fe,yn.merge=Go,yn.mergeWith=Vo,yn.method=ai,yn.methodOf=li,yn.mixin=Ve,yn.negate=function(n){if(typeof n!="function")throw new ru("Expected a function");return function(){return!n.apply(this,arguments)}},yn.nthArg=function(n){return n=Re(n),function(){return arguments[n]}},yn.omit=Jo,yn.omitBy=function(n,t){return t=mr(t,2),kt(n,function(n,r){return!t(n,r)})},yn.once=function(n){return ee(2,n)},yn.orderBy=function(n,t,r,e){return null==n?[]:(Lo(t)||(t=null==t?[]:[t]),r=e?Z:r,Lo(r)||(r=null==r?[]:[r]),
Ot(n,t,r))},yn.over=si,yn.overArgs=Co,yn.overEvery=hi,yn.overSome=pi,yn.partial=Uo,yn.partialRight=Bo,yn.partition=Oo,yn.pick=Yo,yn.pickBy=function(n,t){return null==n?{}:kt(n,mr(t,2))},yn.property=Ye,yn.propertyOf=function(n){return function(t){return null==n?Z:st(n,t)}},yn.pull=co,yn.pullAll=Tr,yn.pullAllBy=function(n,t,r){return n&&n.length&&t&&t.length?St(n,t,mr(r)):n},yn.pullAt=ao,yn.range=_i,yn.rangeRight=gi,yn.rearg=zo,yn.reject=function(n,t){var r=Lo(n)?i:ot;return t=mr(t,3),r(n,function(n,r,e){
return!t(n,r,e)})},yn.remove=function(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],o=n.length;for(t=mr(t,3);++e<o;){var i=n[e];t(i,e,n)&&(r.push(i),u.push(e))}return Wt(n,u),r},yn.rest=ce,yn.reverse=Kr,yn.sampleSize=te,yn.set=function(n,t,r){return null==n?n:Ut(n,t,r)},yn.setWith=function(n,t,r,e){return e=typeof e=="function"?e:Z,null==n?n:Ut(n,t,r,e)},yn.shuffle=function(n){return te(n,4294967295)},yn.slice=function(n,t,r){var e=n?n.length:0;return e?(r&&typeof r!="number"&&Sr(n,t,r)?(t=0,
r=e):(t=null==t?0:Re(t),r=r===Z?e:Re(r)),Bt(n,t,r)):[]},yn.sortBy=Eo,yn.sortedUniq=function(n){return n&&n.length?Ft(n):[]},yn.sortedUniqBy=function(n,t){return n&&n.length?Ft(n,mr(t)):[]},yn.split=function(n,t,r){return Ue(n).split(t,r)},yn.spread=function(n,t){if(typeof n!="function")throw new ru("Expected a function");return t=t===Z?0:Iu(Re(t),0),ce(function(e){var u=e[t];return e=e.slice(0,t),u&&l(e,u),r(n,this,e)})},yn.tail=function(n){return Dr(n,1)},yn.take=function(n,t,r){return n&&n.length?(t=r||t===Z?1:Re(t),
Bt(n,0,0>t?0:t)):[]},yn.takeRight=function(n,t,r){var e=n?n.length:0;return e?(t=r||t===Z?1:Re(t),t=e-t,Bt(n,0>t?0:t,e)):[]},yn.takeRightWhile=function(n,t){return n&&n.length?Dt(n,mr(t,3),false,true):[]},yn.takeWhile=function(n,t){return n&&n.length?Dt(n,mr(t,3)):[]},yn.tap=function(n,t){return t(n),n},yn.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ru("Expected a function");return ye(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),ie(n,t,{leading:e,maxWait:t,
trailing:u})},yn.thru=Yr,yn.toArray=Ie,yn.toPairs=Me,yn.toPairsIn=function(n){return j(n,Fe(n))},yn.toPath=function(n){return Lo(n)?a(n,String):$r(n)},yn.toPlainObject=Ce,yn.transform=function(n,t,r){var e=Lo(n)||Ee(n);if(t=mr(t,4),null==r)if(e||ye(n)){var o=n.constructor;r=e?Lo(n)?new o:[]:Pu(ge(o)?o.prototype:Z)}else r={};return(e?u:ct)(n,function(n,e,u){return t(r,n,e,u)}),r},yn.unary=function(n){return re(n,1)},yn.union=lo,yn.unionBy=so,yn.unionWith=ho,yn.uniq=function(n){return n&&n.length?Nt(n):[];
},yn.uniqBy=function(n,t){return n&&n.length?Nt(n,mr(t)):[]},yn.uniqWith=function(n,t){return n&&n.length?Nt(n,Z,t):[]},yn.unset=function(n,t){var r;if(null==n)r=true;else{r=n;var e=t,e=Wr(e,r)?[e+""]:Mt(e);r=Lr(r,e),e=Pr(e),r=null!=r&&ze(r,e)?delete r[e]:true}return r},yn.unzip=Gr,yn.unzipWith=Vr,yn.values=Ne,yn.valuesIn=function(n){return null==n?A(n,Fe(n)):[]},yn.without=po,yn.words=Pe,yn.wrap=function(n,t){return t=null==t?Ke:t,Uo(t,n)},yn.xor=_o,yn.xorBy=go,yn.xorWith=vo,yn.zip=yo,yn.zipObject=function(n,t){
return Pt(n||[],t||[],Jn)},yn.zipObjectDeep=function(n,t){return Pt(n||[],t||[],Ut)},yn.zipWith=bo,yn.extend=Fo,yn.extendWith=Mo,Ve(yn,yn),yn.add=function(n,t){var r;return n!==Z&&(r=n),t!==Z&&(r=r===Z?t:r+t),r},yn.attempt=oi,yn.camelCase=Ho,yn.capitalize=De,yn.ceil=vi,yn.clamp=function(n,t,r){return r===Z&&(r=t,t=Z),r!==Z&&(r=We(r),r=r===r?r:0),t!==Z&&(t=We(t),t=t===t?t:0),Xn(We(n),t,r)},yn.clone=function(n){return nt(n)},yn.cloneDeep=function(n){return nt(n,true)},yn.cloneDeepWith=function(n,t){return nt(n,true,t);
},yn.cloneWith=function(n,t){return nt(n,false,t)},yn.deburr=Ze,yn.endsWith=function(n,t,r){n=Ue(n),t=typeof t=="string"?t:t+"";var e=n.length;return r=r===Z?e:Xn(Re(r),0,e),r-=t.length,r>=0&&n.indexOf(t,r)==r},yn.eq=ae,yn.escape=function(n){return(n=Ue(n))&&H.test(n)?n.replace(J,S):n},yn.escapeRegExp=function(n){return(n=Ue(n))&&on.test(n)?n.replace(un,"\\$&"):n},yn.every=function(n,t,r){var e=Lo(n)?o:ut;return r&&Sr(n,t,r)&&(t=Z),e(n,mr(t,3))},yn.find=function(n,t){if(t=mr(t,3),Lo(n)){var r=v(n,t);
return r>-1?n[r]:Z}return g(n,t,Tu)},yn.findIndex=function(n,t){return n&&n.length?v(n,mr(t,3)):-1},yn.findKey=function(n,t){return g(n,mr(t,3),ct,true)},yn.findLast=function(n,t){if(t=mr(t,3),Lo(n)){var r=v(n,t,true);return r>-1?n[r]:Z}return g(n,t,Ku)},yn.findLastIndex=function(n,t){return n&&n.length?v(n,mr(t,3),true):-1},yn.findLastKey=function(n,t){return g(n,mr(t,3),at,true)},yn.floor=di,yn.forEach=Qr,yn.forEachRight=Xr,yn.forIn=function(n,t){return null==n?n:Gu(n,Mr(t),Fe)},yn.forInRight=function(n,t){
return null==n?n:Vu(n,Mr(t),Fe)},yn.forOwn=function(n,t){return n&&ct(n,Mr(t))},yn.forOwnRight=function(n,t){return n&&at(n,Mr(t))},yn.get=Be,yn.gt=le,yn.gte=function(n,t){return n>=t},yn.has=ze,yn.hasIn=Le,yn.head=qr,yn.identity=Ke,yn.includes=function(n,t,r,e){return n=he(n)?n:Ne(n),r=r&&!e?Re(r):0,e=n.length,0>r&&(r=Iu(e+r,0)),Ae(n)?e>=r&&-1<n.indexOf(t,r):!!e&&-1<d(n,t,r)},yn.indexOf=function(n,t,r){var e=n?n.length:0;return e?(r=Re(r),0>r&&(r=Iu(e+r,0)),d(n,t,r)):-1},yn.inRange=function(n,t,r){
return t=We(t)||0,r===Z?(r=t,t=0):r=We(r)||0,n=We(n),n>=Ru(t,r)&&n<Iu(t,r)},yn.invoke=Ko,yn.isArguments=se,yn.isArray=Lo,yn.isArrayLike=he,yn.isArrayLikeObject=pe,yn.isBoolean=function(n){return true===n||false===n||be(n)&&"[object Boolean]"==au.call(n)},yn.isDate=function(n){return be(n)&&"[object Date]"==au.call(n)},yn.isElement=function(n){return!!n&&1===n.nodeType&&be(n)&&!je(n)},yn.isEmpty=function(n){if(he(n)&&(Lo(n)||Ae(n)||ge(n.splice)||se(n)))return!n.length;for(var t in n)if(iu.call(n,t))return false;
return true},yn.isEqual=function(n,t){return dt(n,t)},yn.isEqualWith=function(n,t,r){var e=(r=typeof r=="function"?r:Z)?r(n,t):Z;return e===Z?dt(n,t,r):!!e},yn.isError=_e,yn.isFinite=function(n){return typeof n=="number"&&Ou(n)},yn.isFunction=ge,yn.isInteger=ve,yn.isLength=de,yn.isMatch=function(n,t){return n===t||yt(n,t,jr(t))},yn.isMatchWith=function(n,t,r){return r=typeof r=="function"?r:Z,yt(n,t,jr(t),r)},yn.isNaN=function(n){return me(n)&&n!=+n},yn.isNative=xe,yn.isNil=function(n){return null==n;
},yn.isNull=function(n){return null===n},yn.isNumber=me,yn.isObject=ye,yn.isObjectLike=be,yn.isPlainObject=je,yn.isRegExp=we,yn.isSafeInteger=function(n){return ve(n)&&n>=-9007199254740991&&9007199254740991>=n},yn.isString=Ae,yn.isSymbol=Oe,yn.isTypedArray=Ee,yn.isUndefined=function(n){return n===Z},yn.join=function(n,t){return n?Eu.call(n,t):""},yn.kebabCase=Qo,yn.last=Pr,yn.lastIndexOf=function(n,t,r){var e=n?n.length:0;if(!e)return-1;var u=e;if(r!==Z&&(u=Re(r),u=(0>u?Iu(e+u,0):Ru(u,e-1))+1),t!==t)return C(n,u,true);
for(;u--;)if(n[u]===t)return u;return-1},yn.lowerCase=Xo,yn.lowerFirst=ni,yn.lt=ke,yn.lte=function(n,t){return t>=n},yn.max=function(n){return n&&n.length?_(n,Ke,le):Z},yn.maxBy=function(n,t){return n&&n.length?_(n,mr(t),le):Z},yn.mean=function(n){return He(n)/(n?n.length:0)},yn.min=function(n){return n&&n.length?_(n,Ke,ke):Z},yn.minBy=function(n,t){return n&&n.length?_(n,mr(t),ke):Z},yn.noConflict=function(){return Gn._===this&&(Gn._=lu),this},yn.noop=Je,yn.now=ko,yn.pad=function(n,t,r){n=Ue(n),
t=Re(t);var e=M(n);return t&&t>e?(e=(t-e)/2,t=Au(e),e=wu(e),sr("",t,r)+n+sr("",e,r)):n},yn.padEnd=function(n,t,r){return n=Ue(n),n+sr(n,t,r)},yn.padStart=function(n,t,r){return n=Ue(n),sr(n,t,r)+n},yn.parseInt=function(n,t,r){return r||null==t?t=0:t&&(t=+t),n=Ue(n).replace(fn,""),Su(n,t||(pn.test(n)?16:10))},yn.random=function(n,t,r){if(r&&typeof r!="boolean"&&Sr(n,t,r)&&(t=r=Z),r===Z&&(typeof t=="boolean"?(r=t,t=Z):typeof n=="boolean"&&(r=n,n=Z)),n===Z&&t===Z?(n=0,t=1):(n=We(n)||0,t===Z?(t=n,n=0):t=We(t)||0),
n>t){var e=n;n=t,t=e}return r||n%1||t%1?(r=Wu(),Ru(n+r*(t-n+Mn("1e-"+((r+"").length-1))),t)):Ct(n,t)},yn.reduce=function(n,t,r){var e=Lo(n)?s:y,u=3>arguments.length;return e(n,mr(t,4),r,u,Tu)},yn.reduceRight=function(n,t,r){var e=Lo(n)?h:y,u=3>arguments.length;return e(n,mr(t,4),r,u,Ku)},yn.repeat=qe,yn.replace=function(){var n=arguments,t=Ue(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},yn.result=function(n,t,r){if(Wr(t,n))e=null==n?Z:n[t];else{t=Mt(t);var e=Be(n,t);n=Lr(n,t)}return e===Z&&(e=r),
ge(e)?e.call(n):e},yn.round=yi,yn.runInContext=D,yn.sample=function(n){n=he(n)?n:Ne(n);var t=n.length;return t>0?n[Ct(0,t-1)]:Z},yn.size=function(n){if(null==n)return 0;if(he(n)){var t=n.length;return t&&Ae(n)?M(n):t}return $e(n).length},yn.snakeCase=ri,yn.some=function(n,t,r){var e=Lo(n)?p:zt;return r&&Sr(n,t,r)&&(t=Z),e(n,mr(t,3))},yn.sortedIndex=function(n,t){return Lt(n,t)},yn.sortedIndexBy=function(n,t,r){return $t(n,t,mr(r))},yn.sortedIndexOf=function(n,t){var r=n?n.length:0;if(r){var e=Lt(n,t);
if(r>e&&ae(n[e],t))return e}return-1},yn.sortedLastIndex=function(n,t){return Lt(n,t,true)},yn.sortedLastIndexBy=function(n,t,r){return $t(n,t,mr(r),true)},yn.sortedLastIndexOf=function(n,t){if(n&&n.length){var r=Lt(n,t,true)-1;if(ae(n[r],t))return r}return-1},yn.startCase=ei,yn.startsWith=function(n,t,r){return n=Ue(n),r=Xn(Re(r),0,n.length),n.lastIndexOf(t,r)==r},yn.subtract=function(n,t){var r;return n!==Z&&(r=n),t!==Z&&(r=r===Z?t:r-t),r},yn.sum=He,yn.sumBy=function(n,t){return n&&n.length?x(n,mr(t)):0;
},yn.template=function(n,t,r){var e=yn.templateSettings;r&&Sr(n,t,r)&&(t=Z),n=Ue(n),t=Mo({},t,e,Tn),r=Mo({},t.imports,e.imports,Tn);var u,o,i=$e(r),f=A(r,i),c=0;r=t.interpolate||xn;var a="__p+='";r=tu((t.escape||xn).source+"|"+r.source+"|"+(r===nn?sn:xn).source+"|"+(t.evaluate||xn).source+"|$","g");var l="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,i,f,l){return e||(e=i),a+=n.slice(c,l).replace(mn,W),r&&(u=true,a+="'+__e("+r+")+'"),f&&(o=true,a+="';"+f+";\n__p+='"),
e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+t.length,t}),a+="';",(t=t.variable)||(a="with(obj){"+a+"}"),a=(o?a.replace(T,""):a).replace(K,"$1").replace(G,"$1;"),a="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",t=oi(function(){return Function(i,l+"return "+a).apply(Z,f)}),t.source=a,_e(t))throw t;return t},yn.times=function(n,t){if(n=Re(n),1>n||n>9007199254740991)return[];
var r=4294967295,e=Ru(n,4294967295);for(t=Mr(t),n-=4294967295,e=m(e,t);++r<n;)t(r);return e},yn.toInteger=Re,yn.toLength=Se,yn.toLower=function(n){return Ue(n).toLowerCase()},yn.toNumber=We,yn.toSafeInteger=function(n){return Xn(Re(n),-9007199254740991,9007199254740991)},yn.toString=Ue,yn.toUpper=function(n){return Ue(n).toUpperCase()},yn.trim=function(n,t,r){return(n=Ue(n))?r||t===Z?n.replace(fn,""):(t+="")?(n=n.match(En),t=t.match(En),n.slice(O(n,t),E(n,t)+1).join("")):n:n},yn.trimEnd=function(n,t,r){
return(n=Ue(n))?r||t===Z?n.replace(an,""):(t+="")?(n=n.match(En),n.slice(0,E(n,t.match(En))+1).join("")):n:n},yn.trimStart=function(n,t,r){return(n=Ue(n))?r||t===Z?n.replace(cn,""):(t+="")?(n=n.match(En),n.slice(O(n,t.match(En))).join("")):n:n},yn.truncate=function(n,t){var r=30,e="...";if(ye(t))var u="separator"in t?t.separator:u,r="length"in t?Re(t.length):r,e="omission"in t?Ue(t.omission):e;n=Ue(n);var o=n.length;if(kn.test(n))var i=n.match(En),o=i.length;if(r>=o)return n;if(o=r-M(e),1>o)return e;
if(r=i?i.slice(0,o).join(""):n.slice(0,o),u===Z)return r+e;if(i&&(o+=r.length-o),we(u)){if(n.slice(o).search(u)){var f=r;for(u.global||(u=tu(u.source,Ue(hn.exec(u))+"g")),u.lastIndex=0;i=u.exec(f);)var c=i.index;r=r.slice(0,c===Z?o:c)}}else n.indexOf(u,o)!=o&&(u=r.lastIndexOf(u),u>-1&&(r=r.slice(0,u)));return r+e},yn.unescape=function(n){return(n=Ue(n))&&Y.test(n)?n.replace(V,N):n},yn.uniqueId=function(n){var t=++fu;return Ue(n)+t},yn.upperCase=ui,yn.upperFirst=ti,yn.each=Qr,yn.eachRight=Xr,yn.first=qr,
Ve(yn,function(){var n={};return ct(yn,function(t,r){iu.call(yn.prototype,r)||(n[r]=t)}),n}(),{chain:false}),yn.VERSION="4.2.0",u("bind bindKey curry curryRight partial partialRight".split(" "),function(n){yn[n].placeholder=yn}),u(["drop","take"],function(n,t){An.prototype[n]=function(r){var e=this.__filtered__;if(e&&!t)return new An(this);r=r===Z?1:Iu(Re(r),0);var u=this.clone();return e?u.__takeCount__=Ru(r,u.__takeCount__):u.__views__.push({size:Ru(r,4294967295),type:n+(0>u.__dir__?"Right":"")}),
u},An.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),u(["filter","map","takeWhile"],function(n,t){var r=t+1,e=1==r||3==r;An.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:mr(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),u(["head","last"],function(n,t){var r="take"+(t?"Right":"");An.prototype[n]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");An.prototype[n]=function(){return this.__filtered__?new An(this):this[r](1);
}}),An.prototype.compact=function(){return this.filter(Ke)},An.prototype.find=function(n){return this.filter(n).head()},An.prototype.findLast=function(n){return this.reverse().find(n)},An.prototype.invokeMap=ce(function(n,t){return typeof n=="function"?new An(this):this.map(function(r){return vt(r,n,t)})}),An.prototype.reject=function(n){return n=mr(n,3),this.filter(function(t){return!n(t)})},An.prototype.slice=function(n,t){n=Re(n);var r=this;return r.__filtered__&&(n>0||0>t)?new An(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),
t!==Z&&(t=Re(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},An.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},An.prototype.toArray=function(){return this.take(4294967295)},ct(An.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=yn[e?"take"+("last"==t?"Right":""):t],o=e||/^find/.test(t);u&&(yn.prototype[t]=function(){function t(n){return n=u.apply(yn,l([n],f)),e&&h?n[0]:n}var i=this.__wrapped__,f=e?[1]:arguments,c=i instanceof An,a=f[0],s=c||Lo(i);
s&&r&&typeof a=="function"&&1!=a.length&&(c=s=false);var h=this.__chain__,p=!!this.__actions__.length,a=o&&!h,c=c&&!p;return!o&&s?(i=c?i:new An(this),i=n.apply(i,f),i.__actions__.push({func:Yr,args:[t],thisArg:Z}),new wn(i,h)):a&&c?n.apply(this,f):(i=this.thru(t),a?e?i.value()[0]:i.value():i)})}),u("pop push shift sort splice unshift".split(" "),function(n){var t=eu[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);yn.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){
return t.apply(r,n)})}}),ct(An.prototype,function(n,t){var r=yn[t];if(r){var e=r.name+"";(qu[e]||(qu[e]=[])).push({name:t,func:r})}}),qu[cr(Z,2).name]=[{name:"wrapper",func:Z}],An.prototype.clone=function(){var n=new An(this.__wrapped__);return n.__actions__=Vt(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Vt(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Vt(this.__views__),n},An.prototype.reverse=function(){if(this.__filtered__){var n=new An(this);
n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},An.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=Lo(t),u=0>r,o=e?t.length:0;n=o;for(var i=this.__views__,f=0,c=-1,a=i.length;++c<a;){var l=i[c],s=l.size;switch(l.type){case"drop":f+=s;break;case"dropRight":n-=s;break;case"take":n=Ru(n,f+s);break;case"takeRight":f=Iu(f,n-s)}}if(n={start:f,end:n},i=n.start,f=n.end,n=f-i,u=u?f:i-1,i=this.__iteratees__,f=i.length,c=0,a=Ru(n,this.__takeCount__),!e||200>o||o==n&&a==n)return Zt(t,this.__actions__);
e=[];n:for(;n--&&a>c;){for(u+=r,o=-1,l=t[u];++o<f;){var h=i[o],s=h.type,h=(0,h.iteratee)(l);if(2==s)l=h;else if(!h){if(1==s)continue n;break n}}e[c++]=l}return e},yn.prototype.at=xo,yn.prototype.chain=function(){return Jr(this)},yn.prototype.commit=function(){return new wn(this.value(),this.__chain__)},yn.prototype.flatMap=function(n){return this.map(n).flatten()},yn.prototype.next=function(){this.__values__===Z&&(this.__values__=Ie(this.value()));var n=this.__index__>=this.__values__.length,t=n?Z:this.__values__[this.__index__++];
return{done:n,value:t}},yn.prototype.plant=function(n){for(var t,r=this;r instanceof jn;){var e=Nr(r);e.__index__=0,e.__values__=Z,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},yn.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof An?(this.__actions__.length&&(n=new An(this)),n=n.reverse(),n.__actions__.push({func:Yr,args:[Kr],thisArg:Z}),new wn(n,this.__chain__)):this.thru(Kr)},yn.prototype.toJSON=yn.prototype.valueOf=yn.prototype.value=function(){return Zt(this.__wrapped__,this.__actions__);
},bu&&(yn.prototype[bu]=Hr),yn}var Z,q=1/0,P=NaN,T=/\b__p\+='';/g,K=/\b(__p\+=)''\+/g,G=/(__e\(.*?\)|\b__t\))\+'';/g,V=/&(?:amp|lt|gt|quot|#39|#96);/g,J=/[&<>"'`]/g,Y=RegExp(V.source),H=RegExp(J.source),Q=/<%-([\s\S]+?)%>/g,X=/<%([\s\S]+?)%>/g,nn=/<%=([\s\S]+?)%>/g,tn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rn=/^\w*$/,en=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g,un=/[\\^$.*+?()[\]{}|]/g,on=RegExp(un.source),fn=/^\s+|\s+$/g,cn=/^\s+/,an=/\s+$/,ln=/\\(\\)?/g,sn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,hn=/\w*$/,pn=/^0x/i,_n=/^[-+]0x[0-9a-f]+$/i,gn=/^0b[01]+$/i,vn=/^\[object .+?Constructor\]$/,dn=/^0o[0-7]+$/i,yn=/^(?:0|[1-9]\d*)$/,bn=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,xn=/($^)/,mn=/['\n\r\u2028\u2029\\]/g,jn="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*",wn="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+jn,An="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",On=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]","g"),En=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+An+jn,"g"),kn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),In=/[a-zA-Z0-9]+/g,Rn=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2018\\u2019\\u201c\\u201d \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2018\\u2019\\u201c\\u201d \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2018\\u2019\\u201c\\u201d \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2018\\u2019\\u201c\\u201d \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2018\\u2019\\u201c\\u201d \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+|[A-Z\\xc0-\\xd6\\xd8-\\xde]+|\\d+",wn].join("|"),"g"),Sn=/[a-z][A-Z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wn="Array Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Reflect RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Cn={};
Cn["[object Float32Array]"]=Cn["[object Float64Array]"]=Cn["[object Int8Array]"]=Cn["[object Int16Array]"]=Cn["[object Int32Array]"]=Cn["[object Uint8Array]"]=Cn["[object Uint8ClampedArray]"]=Cn["[object Uint16Array]"]=Cn["[object Uint32Array]"]=true,Cn["[object Arguments]"]=Cn["[object Array]"]=Cn["[object ArrayBuffer]"]=Cn["[object Boolean]"]=Cn["[object Date]"]=Cn["[object Error]"]=Cn["[object Function]"]=Cn["[object Map]"]=Cn["[object Number]"]=Cn["[object Object]"]=Cn["[object RegExp]"]=Cn["[object Set]"]=Cn["[object String]"]=Cn["[object WeakMap]"]=false;
var Un={};Un["[object Arguments]"]=Un["[object Array]"]=Un["[object ArrayBuffer]"]=Un["[object Boolean]"]=Un["[object Date]"]=Un["[object Float32Array]"]=Un["[object Float64Array]"]=Un["[object Int8Array]"]=Un["[object Int16Array]"]=Un["[object Int32Array]"]=Un["[object Map]"]=Un["[object Number]"]=Un["[object Object]"]=Un["[object RegExp]"]=Un["[object Set]"]=Un["[object String]"]=Un["[object Symbol]"]=Un["[object Uint8Array]"]=Un["[object Uint8ClampedArray]"]=Un["[object Uint16Array]"]=Un["[object Uint32Array]"]=true,
Un["[object Error]"]=Un["[object Function]"]=Un["[object WeakMap]"]=false;var Bn={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O",

129
dist/mapping.fp.js vendored
View File

@@ -59,9 +59,12 @@ return /******/ (function(modules) { // webpackBootstrap
'all': 'some',
'allPass': 'overEvery',
'apply': 'spread',
'assoc': 'set',
'assocPath': 'set',
'compose': 'flowRight',
'contains': 'includes',
'dissoc': 'omit',
'dissoc': 'unset',
'dissocPath': 'unset',
'each': 'forEach',
'eachRight': 'forEachRight',
'equals': 'isEqual',
@@ -88,8 +91,59 @@ return /******/ (function(modules) { // webpackBootstrap
'zipObj': 'zipObject'
};
/** Used to map ary to method names. */
exports.aryMethod = {
1: [
'attempt', 'ceil', 'create', 'curry', 'curryRight', 'floor', 'fromPairs',
'invert', 'iteratee', 'memoize', 'method', 'methodOf', 'mixin', 'over',
'overEvery', 'overSome', 'rest', 'reverse', 'round', 'runInContext',
'spread', 'template', 'trim', 'trimEnd', 'trimStart', 'uniqueId', 'words'
],
2: [
'add', 'after', 'ary', 'assign', 'assignIn', 'at', 'before', 'bind', 'bindKey',
'chunk', 'cloneDeepWith', 'cloneWith', 'concat', 'countBy', 'curryN',
'curryRightN', 'debounce', 'defaults', 'defaultsDeep', 'delay', 'difference',
'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq', 'every',
'filter', 'find', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
'findLastKey', 'flatMap', 'forEach', 'forEachRight', 'forIn', 'forInRight',
'forOwn', 'forOwnRight', 'get', 'groupBy', 'gt', 'gte', 'has', 'hasIn',
'includes', 'indexOf', 'intersection', 'invertBy', 'invoke', 'invokeMap',
'isEqual', 'isMatch', 'join', 'keyBy', 'lastIndexOf', 'lt', 'lte', 'map',
'mapKeys', 'mapValues', 'matchesProperty', 'maxBy', 'merge', 'minBy', 'omit',
'omitBy', 'orderBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt',
'partial', 'partialRight', 'partition', 'pick', 'pickBy', 'pull', 'pullAll',
'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',
'repeat', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',
'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',
'split', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight', 'takeRightWhile',
'takeWhile', 'tap', 'throttle', 'thru', 'times', 'truncate', 'union', 'uniqBy',
'uniqWith', 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',
'zipObjectDeep'
],
3: [
'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',
'getOr', 'inRange', 'intersectionBy', 'intersectionWith', 'isEqualWith',
'isMatchWith', 'mergeWith', 'pullAllBy', 'reduce', 'reduceRight', 'replace',
'set', 'slice', 'sortedIndexBy', 'sortedLastIndexBy', 'transform', 'unionBy',
'unionWith', 'xorBy', 'xorWith', 'zipWith'
],
4: [
'fill', 'setWith'
]
};
/** Used to map ary to rearg configs. */
exports.aryRearg = {
2: [1, 0],
3: [2, 1, 0],
4: [3, 2, 0, 1]
};
/** Used to iterate `mapping.aryMethod` keys. */
exports.caps = [1, 2, 3, 4];
/** Used to map method names to their iteratee ary. */
exports.aryIteratee = {
exports.iterateeAry = {
'assignWith': 2,
'assignInWith': 2,
'cloneDeepWith': 1,
@@ -128,53 +182,6 @@ return /******/ (function(modules) { // webpackBootstrap
'transform': 2
};
/** Used to map ary to method names. */
exports.aryMethod = {
1: [
'attempt', 'ceil', 'create', 'curry', 'curryRight', 'floor', 'fromPairs',
'invert', 'iteratee', 'memoize', 'method', 'methodOf', 'mixin', 'over',
'overEvery', 'overSome', 'rest', 'reverse', 'round', 'runInContext',
'template', 'trim', 'trimEnd', 'trimStart', 'uniqueId', 'words'
],
2: [
'add', 'after', 'ary', 'assign', 'assignIn', 'at', 'before', 'bind', 'bindKey',
'chunk', 'cloneDeepWith', 'cloneWith', 'concat', 'countBy', 'curryN',
'curryRightN', 'debounce', 'defaults', 'defaultsDeep', 'delay', 'difference',
'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq', 'every',
'filter', 'find', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
'findLastKey', 'flatMap', 'forEach', 'forEachRight', 'forIn', 'forInRight',
'forOwn', 'forOwnRight', 'get', 'groupBy', 'gt', 'gte', 'has', 'hasIn',
'includes', 'indexOf', 'intersection', 'invertBy', 'invoke', 'invokeMap',
'isEqual', 'isMatch', 'join', 'keyBy', 'lastIndexOf', 'lt', 'lte', 'map',
'mapKeys', 'mapValues', 'matchesProperty', 'maxBy', 'merge', 'minBy', 'omit',
'omitBy', 'orderBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt',
'partition', 'pick', 'pickBy', 'pull', 'pullAll', 'pullAt', 'random', 'range',
'rangeRight', 'rearg', 'reject', 'remove', 'repeat', 'result', 'sampleSize',
'some', 'sortBy', 'sortedIndex', 'sortedIndexOf', 'sortedLastIndex',
'sortedLastIndexOf', 'sortedUniqBy', 'split', 'startsWith', 'subtract',
'sumBy', 'take', 'takeRight', 'takeRightWhile', 'takeWhile', 'tap', 'throttle',
'thru', 'times', 'truncate', 'union', 'uniqBy', 'uniqWith', 'unset', 'unzipWith',
'without', 'wrap', 'xor', 'zip', 'zipObject', 'zipObjectDeep'
],
3: [
'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',
'getOr', 'inRange', 'intersectionBy', 'intersectionWith', 'isEqualWith',
'isMatchWith', 'mergeWith', 'pullAllBy', 'reduce', 'reduceRight', 'replace',
'set', 'slice', 'sortedIndexBy', 'sortedLastIndexBy', 'transform', 'unionBy',
'unionWith', 'xorBy', 'xorWith', 'zipWith'
],
4: [
'fill', 'setWith'
]
};
/** Used to map ary to rearg configs. */
exports.aryRearg = {
2: [1, 0],
3: [2, 1, 0],
4: [3, 2, 0, 1]
};
/** Used to map method names to iteratee rearg configs. */
exports.iterateeRearg = {
'findKey': [1],
@@ -196,14 +203,10 @@ return /******/ (function(modules) { // webpackBootstrap
'transform': [2, 0, 1]
};
/** Used to iterate `mapping.aryMethod` keys. */
exports.caps = [1, 2, 3, 4];
/** Used to map keys to other keys. */
exports.key = {
'curryN': 'curry',
'curryRightN': 'curryRight',
'getOr': 'get'
/** Used to map method names to spread configs. */
exports.methodSpread = {
'partial': 1,
'partialRight': 1
};
/** Used to identify methods which mutate arrays or objects. */
@@ -229,7 +232,8 @@ return /******/ (function(modules) { // webpackBootstrap
},
'set': {
'set': true,
'setWith': true
'setWith': true,
'unset': true
}
};
@@ -260,6 +264,13 @@ return /******/ (function(modules) { // webpackBootstrap
return result;
}());
/** Used to map method names to other names. */
exports.rename = {
'curryN': 'curry',
'curryRightN': 'curryRight',
'getOr': 'get'
};
/** Used to track methods that skip `_.rearg`. */
exports.skipRearg = {
'assign': true,
@@ -268,6 +279,8 @@ return /******/ (function(modules) { // webpackBootstrap
'difference': true,
'matchesProperty': true,
'merge': true,
'partial': true,
'partialRight': true,
'random': true,
'range': true,
'rangeRight': true,

File diff suppressed because it is too large Load Diff

View File

@@ -29,7 +29,8 @@ function baseConvert(util, name, func) {
'isFunction': util.isFunction,
'iteratee': util.iteratee,
'keys': util.keys,
'rearg': util.rearg
'rearg': util.rearg,
'rest': util.rest
};
var ary = _.ary,
@@ -38,7 +39,8 @@ function baseConvert(util, name, func) {
each = _.forEach,
isFunction = _.isFunction,
keys = _.keys,
rearg = _.rearg;
rearg = _.rearg,
spread = _.spread;
var baseArity = function(func, n) {
return n == 2
@@ -167,17 +169,21 @@ function baseConvert(util, name, func) {
each(mapping.caps, function(cap) {
each(mapping.aryMethod[cap], function(otherName) {
if (name == otherName) {
var indexes = mapping.iterateeRearg[name],
n = !isLib && mapping.aryIteratee[name];
var aryN = !isLib && mapping.iterateeAry[name],
reargIndexes = mapping.iterateeRearg[name],
spreadStart = mapping.methodSpread[name];
result = spreadStart === undefined
? ary(func, cap)
: spread(func, spreadStart);
result = ary(func, cap);
if (cap > 1 && !mapping.skipRearg[name]) {
result = rearg(result, mapping.methodRearg[name] || mapping.aryRearg[cap]);
}
if (indexes) {
result = iterateeRearg(result, indexes);
} else if (n) {
result = iterateeAry(result, n);
if (reargIndexes) {
result = iterateeRearg(result, reargIndexes);
} else if (aryN) {
result = iterateeAry(result, aryN);
}
if (cap > 1) {
result = curry(result, cap);
@@ -198,11 +204,14 @@ function baseConvert(util, name, func) {
if (!isLib) {
return wrap(name, func);
}
// Add placeholder alias.
_.__ = placeholder;
// Iterate over methods for the current ary cap.
var pairs = [];
each(mapping.caps, function(cap) {
each(mapping.aryMethod[cap], function(key) {
var func = _[mapping.key[key] || key];
var func = _[mapping.rename[key] || key];
if (func) {
pairs.push([key, wrap(key, func)]);
}

View File

@@ -3,9 +3,12 @@ exports.aliasToReal = {
'all': 'some',
'allPass': 'overEvery',
'apply': 'spread',
'assoc': 'set',
'assocPath': 'set',
'compose': 'flowRight',
'contains': 'includes',
'dissoc': 'omit',
'dissoc': 'unset',
'dissocPath': 'unset',
'each': 'forEach',
'eachRight': 'forEachRight',
'equals': 'isEqual',
@@ -32,8 +35,59 @@ exports.aliasToReal = {
'zipObj': 'zipObject'
};
/** Used to map ary to method names. */
exports.aryMethod = {
1: [
'attempt', 'ceil', 'create', 'curry', 'curryRight', 'floor', 'fromPairs',
'invert', 'iteratee', 'memoize', 'method', 'methodOf', 'mixin', 'over',
'overEvery', 'overSome', 'rest', 'reverse', 'round', 'runInContext',
'spread', 'template', 'trim', 'trimEnd', 'trimStart', 'uniqueId', 'words'
],
2: [
'add', 'after', 'ary', 'assign', 'assignIn', 'at', 'before', 'bind', 'bindKey',
'chunk', 'cloneDeepWith', 'cloneWith', 'concat', 'countBy', 'curryN',
'curryRightN', 'debounce', 'defaults', 'defaultsDeep', 'delay', 'difference',
'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq', 'every',
'filter', 'find', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
'findLastKey', 'flatMap', 'forEach', 'forEachRight', 'forIn', 'forInRight',
'forOwn', 'forOwnRight', 'get', 'groupBy', 'gt', 'gte', 'has', 'hasIn',
'includes', 'indexOf', 'intersection', 'invertBy', 'invoke', 'invokeMap',
'isEqual', 'isMatch', 'join', 'keyBy', 'lastIndexOf', 'lt', 'lte', 'map',
'mapKeys', 'mapValues', 'matchesProperty', 'maxBy', 'merge', 'minBy', 'omit',
'omitBy', 'orderBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt',
'partial', 'partialRight', 'partition', 'pick', 'pickBy', 'pull', 'pullAll',
'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',
'repeat', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',
'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',
'split', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight', 'takeRightWhile',
'takeWhile', 'tap', 'throttle', 'thru', 'times', 'truncate', 'union', 'uniqBy',
'uniqWith', 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',
'zipObjectDeep'
],
3: [
'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',
'getOr', 'inRange', 'intersectionBy', 'intersectionWith', 'isEqualWith',
'isMatchWith', 'mergeWith', 'pullAllBy', 'reduce', 'reduceRight', 'replace',
'set', 'slice', 'sortedIndexBy', 'sortedLastIndexBy', 'transform', 'unionBy',
'unionWith', 'xorBy', 'xorWith', 'zipWith'
],
4: [
'fill', 'setWith'
]
};
/** Used to map ary to rearg configs. */
exports.aryRearg = {
2: [1, 0],
3: [2, 1, 0],
4: [3, 2, 0, 1]
};
/** Used to iterate `mapping.aryMethod` keys. */
exports.caps = [1, 2, 3, 4];
/** Used to map method names to their iteratee ary. */
exports.aryIteratee = {
exports.iterateeAry = {
'assignWith': 2,
'assignInWith': 2,
'cloneDeepWith': 1,
@@ -72,53 +126,6 @@ exports.aryIteratee = {
'transform': 2
};
/** Used to map ary to method names. */
exports.aryMethod = {
1: [
'attempt', 'ceil', 'create', 'curry', 'curryRight', 'floor', 'fromPairs',
'invert', 'iteratee', 'memoize', 'method', 'methodOf', 'mixin', 'over',
'overEvery', 'overSome', 'rest', 'reverse', 'round', 'runInContext',
'template', 'trim', 'trimEnd', 'trimStart', 'uniqueId', 'words'
],
2: [
'add', 'after', 'ary', 'assign', 'assignIn', 'at', 'before', 'bind', 'bindKey',
'chunk', 'cloneDeepWith', 'cloneWith', 'concat', 'countBy', 'curryN',
'curryRightN', 'debounce', 'defaults', 'defaultsDeep', 'delay', 'difference',
'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq', 'every',
'filter', 'find', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
'findLastKey', 'flatMap', 'forEach', 'forEachRight', 'forIn', 'forInRight',
'forOwn', 'forOwnRight', 'get', 'groupBy', 'gt', 'gte', 'has', 'hasIn',
'includes', 'indexOf', 'intersection', 'invertBy', 'invoke', 'invokeMap',
'isEqual', 'isMatch', 'join', 'keyBy', 'lastIndexOf', 'lt', 'lte', 'map',
'mapKeys', 'mapValues', 'matchesProperty', 'maxBy', 'merge', 'minBy', 'omit',
'omitBy', 'orderBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt',
'partition', 'pick', 'pickBy', 'pull', 'pullAll', 'pullAt', 'random', 'range',
'rangeRight', 'rearg', 'reject', 'remove', 'repeat', 'result', 'sampleSize',
'some', 'sortBy', 'sortedIndex', 'sortedIndexOf', 'sortedLastIndex',
'sortedLastIndexOf', 'sortedUniqBy', 'split', 'startsWith', 'subtract',
'sumBy', 'take', 'takeRight', 'takeRightWhile', 'takeWhile', 'tap', 'throttle',
'thru', 'times', 'truncate', 'union', 'uniqBy', 'uniqWith', 'unset', 'unzipWith',
'without', 'wrap', 'xor', 'zip', 'zipObject', 'zipObjectDeep'
],
3: [
'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',
'getOr', 'inRange', 'intersectionBy', 'intersectionWith', 'isEqualWith',
'isMatchWith', 'mergeWith', 'pullAllBy', 'reduce', 'reduceRight', 'replace',
'set', 'slice', 'sortedIndexBy', 'sortedLastIndexBy', 'transform', 'unionBy',
'unionWith', 'xorBy', 'xorWith', 'zipWith'
],
4: [
'fill', 'setWith'
]
};
/** Used to map ary to rearg configs. */
exports.aryRearg = {
2: [1, 0],
3: [2, 1, 0],
4: [3, 2, 0, 1]
};
/** Used to map method names to iteratee rearg configs. */
exports.iterateeRearg = {
'findKey': [1],
@@ -140,14 +147,10 @@ exports.methodRearg = {
'transform': [2, 0, 1]
};
/** Used to iterate `mapping.aryMethod` keys. */
exports.caps = [1, 2, 3, 4];
/** Used to map keys to other keys. */
exports.key = {
'curryN': 'curry',
'curryRightN': 'curryRight',
'getOr': 'get'
/** Used to map method names to spread configs. */
exports.methodSpread = {
'partial': 1,
'partialRight': 1
};
/** Used to identify methods which mutate arrays or objects. */
@@ -173,7 +176,8 @@ exports.mutate = {
},
'set': {
'set': true,
'setWith': true
'setWith': true,
'unset': true
}
};
@@ -204,6 +208,13 @@ exports.realToAlias = (function() {
return result;
}());
/** Used to map method names to other names. */
exports.rename = {
'curryN': 'curry',
'curryRightN': 'curryRight',
'getOr': 'get'
};
/** Used to track methods that skip `_.rearg`. */
exports.skipRearg = {
'assign': true,
@@ -212,6 +223,8 @@ exports.skipRearg = {
'difference': true,
'matchesProperty': true,
'merge': true,
'partial': true,
'partialRight': true,
'random': true,
'range': true,
'rangeRight': true,

View File

@@ -49,8 +49,8 @@ function isThru(funcName) {
function getTemplate(moduleName) {
var data = {
'key': mapping.key,
'name': _.result(mapping.aliasToReal, moduleName, moduleName)
'name': _.result(mapping.aliasToReal, moduleName, moduleName),
'rename': mapping.rename
};
if (isAlias(moduleName)) {
@@ -91,7 +91,7 @@ function build(target) {
});
// Add FP alias and remapped module paths.
_.each([mapping.aliasToReal, mapping.key], function(data) {
_.each([mapping.aliasToReal, mapping.rename], function(data) {
_.forOwn(data, function(realName, alias) {
modulePaths.push(path.join(target, alias + '.js'));
});

View File

@@ -6,5 +6,6 @@ module.exports = {
'isFunction': require('../isFunction'),
'iteratee': require('../iteratee'),
'keys': require('../_baseKeys'),
'rearg': require('../rearg')
'rearg': require('../rearg'),
'spread': require('../spread')
};

View File

@@ -1,2 +1,2 @@
var convert = require('./convert');
module.exports = convert('<%= name %>', require('../<%= _.result(key, name, name) %>'));
module.exports = convert('<%= name %>', require('../<%= _.result(rename, name, name) %>'));

296
lodash.js
View File

@@ -1,7 +1,6 @@
/**
* @license
* lodash 4.1.0 (Custom Build) <https://lodash.com/>
* Build: `lodash -d -o ./lodash.js`
* lodash 4.2.0 <https://lodash.com/>
* Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
@@ -13,7 +12,7 @@
var undefined;
/** Used as the semantic version number. */
var VERSION = '4.1.0';
var VERSION = '4.2.0';
/** Used to compose bitmasks for wrapper metadata. */
var BIND_FLAG = 1,
@@ -397,11 +396,11 @@
* @private
* @param {Function} func The function to invoke.
* @param {*} thisArg The `this` binding of `func`.
* @param {...*} [args] The arguments to invoke `func` with.
* @param {...*} args The arguments to invoke `func` with.
* @returns {*} Returns the result of `func`.
*/
function apply(func, thisArg, args) {
var length = args ? args.length : 0;
var length = args.length;
switch (length) {
case 0: return func.call(thisArg);
case 1: return func.call(thisArg, args[0]);
@@ -841,7 +840,7 @@
result = result === undefined ? current : (result + current);
}
}
return length ? result : 0;
return result;
}
/**
@@ -1254,14 +1253,14 @@
* lodash.isFunction(lodash.bar);
* // => true
*
* // using `context` to mock `Date#getTime` use in `_.now`
* // Use `context` to mock `Date#getTime` use in `_.now`.
* var mock = _.runInContext({
* 'Date': function() {
* return { 'getTime': getTimeMock };
* }
* });
*
* // or creating a suped-up `defer` in Node.js
* // Create a suped-up `defer` in Node.js.
* var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
*/
function runInContext(context) {
@@ -1451,11 +1450,11 @@
*
* var wrapped = _([1, 2, 3]);
*
* // returns an unwrapped value
* // Returns an unwrapped value.
* wrapped.reduce(_.add);
* // => 6
*
* // returns a wrapped value
* // Returns a wrapped value.
* var squares = wrapped.map(square);
*
* _.isArray(squares);
@@ -5471,7 +5470,7 @@
* _.differenceBy([3.1, 2.2, 1.3], [4.4, 2.5], Math.floor);
* // => [3.1, 1.3]
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
* // => [{ 'x': 2 }]
*/
@@ -5603,15 +5602,15 @@
* _.dropRightWhile(users, function(o) { return !o.active; });
* // => objects for ['barney']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
* // => objects for ['barney', 'fred']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.dropRightWhile(users, ['active', false]);
* // => objects for ['barney']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.dropRightWhile(users, 'active');
* // => objects for ['barney', 'fred', 'pebbles']
*/
@@ -5643,15 +5642,15 @@
* _.dropWhile(users, function(o) { return !o.active; });
* // => objects for ['pebbles']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.dropWhile(users, { 'user': 'barney', 'active': false });
* // => objects for ['fred', 'pebbles']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.dropWhile(users, ['active', false]);
* // => objects for ['pebbles']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.dropWhile(users, 'active');
* // => objects for ['barney', 'fred', 'pebbles']
*/
@@ -5722,15 +5721,15 @@
* _.findIndex(users, function(o) { return o.user == 'barney'; });
* // => 0
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.findIndex(users, { 'user': 'fred', 'active': false });
* // => 1
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.findIndex(users, ['active', false]);
* // => 0
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.findIndex(users, 'active');
* // => 2
*/
@@ -5761,15 +5760,15 @@
* _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
* // => 2
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.findLastIndex(users, { 'user': 'barney', 'active': true });
* // => 0
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.findLastIndex(users, ['active', false]);
* // => 2
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.findLastIndex(users, 'active');
* // => 0
*/
@@ -5779,31 +5778,6 @@
: -1;
}
/**
* Creates an array of flattened values by running each element in `array`
* through `iteratee` and concating its result to the other mapped values.
* The iteratee is invoked with three arguments: (value, index|key, array).
*
* @static
* @memberOf _
* @category Array
* @param {Array} array The array to iterate over.
* @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration.
* @returns {Array} Returns the new array.
* @example
*
* function duplicate(n) {
* return [n, n];
* }
*
* _.flatMap([1, 2], duplicate);
* // => [1, 1, 2, 2]
*/
function flatMap(array, iteratee) {
var length = array ? array.length : 0;
return length ? baseFlatten(arrayMap(array, getIteratee(iteratee, 3))) : [];
}
/**
* Flattens `array` a single level.
*
@@ -5891,8 +5865,7 @@
* Gets the index at which the first occurrence of `value` is found in `array`
* using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
* for equality comparisons. If `fromIndex` is negative, it's used as the offset
* from the end of `array`. If `array` is sorted providing `true` for `fromIndex`
* performs a faster binary search.
* from the end of `array`.
*
* @static
* @memberOf _
@@ -5906,7 +5879,7 @@
* _.indexOf([1, 2, 1, 2], 2);
* // => 1
*
* // using `fromIndex`
* // Search from the `fromIndex`.
* _.indexOf([1, 2, 1, 2], 2, 2);
* // => 3
*/
@@ -5977,7 +5950,7 @@
* _.intersectionBy([2.1, 1.2], [4.3, 2.4], Math.floor);
* // => [2.1]
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
* // => [{ 'x': 1 }]
*/
@@ -6080,7 +6053,7 @@
* _.lastIndexOf([1, 2, 1, 2], 2);
* // => 3
*
* // using `fromIndex`
* // Search from the `fromIndex`.
* _.lastIndexOf([1, 2, 1, 2], 2, 2);
* // => 1
*/
@@ -6356,7 +6329,7 @@
* _.sortedIndexBy(['thirty', 'fifty'], 'forty', _.propertyOf(dict));
* // => 1
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.sortedIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x');
* // => 0
*/
@@ -6424,7 +6397,7 @@
* @returns {number} Returns the index at which `value` should be inserted into `array`.
* @example
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.sortedLastIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x');
* // => 1
*/
@@ -6491,7 +6464,7 @@
* @example
*
* _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
* // => [1.1, 2.2]
* // => [1.1, 2.3]
*/
function sortedUniqBy(array, iteratee) {
return (array && array.length)
@@ -6604,15 +6577,15 @@
* _.takeRightWhile(users, function(o) { return !o.active; });
* // => objects for ['fred', 'pebbles']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
* // => objects for ['pebbles']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.takeRightWhile(users, ['active', false]);
* // => objects for ['fred', 'pebbles']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.takeRightWhile(users, 'active');
* // => []
*/
@@ -6644,15 +6617,15 @@
* _.takeWhile(users, function(o) { return !o.active; });
* // => objects for ['barney', 'fred']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.takeWhile(users, { 'user': 'barney', 'active': false });
* // => objects for ['barney']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.takeWhile(users, ['active', false]);
* // => objects for ['barney', 'fred']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.takeWhile(users, 'active');
* // => []
*/
@@ -6697,7 +6670,7 @@
* _.unionBy([2.1, 1.2], [4.3, 2.4], Math.floor);
* // => [2.1, 1.2, 4.3]
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
* // => [{ 'x': 1 }, { 'x': 2 }]
*/
@@ -6774,7 +6747,7 @@
* _.uniqBy([2.1, 1.2, 2.3], Math.floor);
* // => [2.1, 1.2]
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
* // => [{ 'x': 1 }, { 'x': 2 }]
*/
@@ -6930,7 +6903,7 @@
* _.xorBy([2.1, 1.2], [4.3, 2.4], Math.floor);
* // => [1.2, 4.3]
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
* // => [{ 'x': 2 }]
*/
@@ -7085,10 +7058,9 @@
}
/**
* This method invokes `interceptor` and returns `value`. The interceptor is
* invoked with one argument; (value). The purpose of this method is to "tap into"
* a method chain in order to perform operations on intermediate results within
* the chain.
* This method invokes `interceptor` and returns `value`. The interceptor
* is invoked with one argument; (value). The purpose of this method is to
* "tap into" a method chain in order to modify intermediate results.
*
* @static
* @memberOf _
@@ -7100,6 +7072,7 @@
*
* _([1, 2, 3])
* .tap(function(array) {
* // Mutate input array.
* array.pop();
* })
* .reverse()
@@ -7113,6 +7086,8 @@
/**
* This method is like `_.tap` except that it returns the result of `interceptor`.
* The purpose of this method is to "pass thru" values replacing intermediate
* results in a method chain.
*
* @static
* @memberOf _
@@ -7188,11 +7163,11 @@
* { 'user': 'fred', 'age': 40 }
* ];
*
* // without explicit chaining
* // A sequence without explicit chaining.
* _(users).head();
* // => { 'user': 'barney', 'age': 36 }
*
* // with explicit chaining
* // A sequence with explicit chaining.
* _(users)
* .chain()
* .head()
@@ -7447,15 +7422,15 @@
* { 'user': 'fred', 'active': false }
* ];
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.every(users, { 'user': 'barney', 'active': false });
* // => false
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.every(users, ['active', false]);
* // => true
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.every(users, 'active');
* // => false
*/
@@ -7488,15 +7463,15 @@
* _.filter(users, function(o) { return !o.active; });
* // => objects for ['fred']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.filter(users, { 'age': 36, 'active': true });
* // => objects for ['barney']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.filter(users, ['active', false]);
* // => objects for ['fred']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.filter(users, 'active');
* // => objects for ['barney']
*/
@@ -7527,15 +7502,15 @@
* _.find(users, function(o) { return o.age < 40; });
* // => object for 'barney'
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.find(users, { 'age': 1, 'active': true });
* // => object for 'pebbles'
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.find(users, ['active', false]);
* // => object for 'fred'
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.find(users, 'active');
* // => object for 'barney'
*/
@@ -7574,6 +7549,30 @@
return baseFind(collection, predicate, baseEachRight);
}
/**
* Creates an array of flattened values by running each element in `collection`
* through `iteratee` and concating its result to the other mapped values.
* The iteratee is invoked with three arguments: (value, index|key, collection).
*
* @static
* @memberOf _
* @category Collection
* @param {Array|Object} collection The collection to iterate over.
* @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration.
* @returns {Array} Returns the new flattened array.
* @example
*
* function duplicate(n) {
* return [n, n];
* }
*
* _.flatMap([1, 2], duplicate);
* // => [1, 1, 2, 2]
*/
function flatMap(collection, iteratee) {
return baseFlatten(map(collection, iteratee));
}
/**
* Iterates over elements of `collection` invoking `iteratee` for each element.
* The iteratee is invoked with three arguments: (value, index|key, collection).
@@ -7649,7 +7648,7 @@
* _.groupBy([6.1, 4.2, 6.3], Math.floor);
* // => { '4': [4.2], '6': [6.1, 6.3] }
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.groupBy(['one', 'two', 'three'], 'length');
* // => { '3': ['one', 'two'], '5': ['three'] }
*/
@@ -7805,7 +7804,7 @@
* { 'user': 'fred' }
* ];
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.map(users, 'user');
* // => ['barney', 'fred']
*/
@@ -7837,7 +7836,7 @@
* { 'user': 'barney', 'age': 36 }
* ];
*
* // sort by `user` in ascending order and by `age` in descending order
* // Sort by `user` in ascending order and by `age` in descending order.
* _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
* // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
*/
@@ -7878,15 +7877,15 @@
* _.partition(users, function(o) { return o.active; });
* // => objects for [['fred'], ['barney', 'pebbles']]
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.partition(users, { 'age': 1, 'active': false });
* // => objects for [['pebbles'], ['barney', 'fred']]
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.partition(users, ['active', false]);
* // => objects for [['barney', 'pebbles'], ['fred']]
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.partition(users, 'active');
* // => objects for [['fred'], ['barney', 'pebbles']]
*/
@@ -7983,15 +7982,15 @@
* _.reject(users, function(o) { return !o.active; });
* // => objects for ['fred']
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.reject(users, { 'age': 40, 'active': true });
* // => objects for ['barney']
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.reject(users, ['active', false]);
* // => objects for ['fred']
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.reject(users, 'active');
* // => objects for ['barney']
*/
@@ -8130,15 +8129,15 @@
* { 'user': 'fred', 'active': false }
* ];
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.some(users, { 'user': 'barney', 'active': false });
* // => false
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.some(users, ['active', false]);
* // => true
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.some(users, 'active');
* // => true
*/
@@ -8338,7 +8337,7 @@
* bound('!');
* // => 'hi fred!'
*
* // using placeholders
* // Bound with placeholders.
* var bound = _.bind(greet, object, _, '!');
* bound('hi');
* // => 'hi fred!'
@@ -8391,7 +8390,7 @@
* bound('!');
* // => 'hiya fred!'
*
* // using placeholders
* // Bound with placeholders.
* var bound = _.bindKey(object, 'greet', _, '!');
* bound('hi');
* // => 'hiya fred!'
@@ -8441,7 +8440,7 @@
* curried(1, 2, 3);
* // => [1, 2, 3]
*
* // using placeholders
* // Curried with placeholders.
* curried(1)(_, 3)(2);
* // => [1, 2, 3]
*/
@@ -8485,7 +8484,7 @@
* curried(1, 2, 3);
* // => [1, 2, 3]
*
* // using placeholders
* // Curried with placeholders.
* curried(3)(1, _)(2);
* // => [1, 2, 3]
*/
@@ -8528,21 +8527,21 @@
* @returns {Function} Returns the new debounced function.
* @example
*
* // avoid costly calculations while the window size is in flux
* // Avoid costly calculations while the window size is in flux.
* jQuery(window).on('resize', _.debounce(calculateLayout, 150));
*
* // invoke `sendMail` when clicked, debouncing subsequent calls
* // Invoke `sendMail` when clicked, debouncing subsequent calls.
* jQuery(element).on('click', _.debounce(sendMail, 300, {
* 'leading': true,
* 'trailing': false
* }));
*
* // ensure `batchLog` is invoked once after 1 second of debounced calls
* // Ensure `batchLog` is invoked once after 1 second of debounced calls.
* var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
* var source = new EventSource('/stream');
* jQuery(source).on('message', debounced);
*
* // cancel a trailing debounced invocation
* // Cancel the trailing debounced invocation.
* jQuery(window).on('popstate', debounced.cancel);
*/
function debounce(func, wait, options) {
@@ -8675,7 +8674,7 @@
* _.defer(function(text) {
* console.log(text);
* }, 'deferred');
* // logs 'deferred' after one or more milliseconds
* // => logs 'deferred' after one or more milliseconds
*/
var defer = rest(function(func, args) {
return baseDelay(func, 1, args);
@@ -8758,12 +8757,12 @@
* values(object);
* // => [1, 2]
*
* // modifying the result cache
* // Modify the result cache.
* values.cache.set(object, ['a', 'b']);
* values(object);
* // => ['a', 'b']
*
* // replacing `_.memoize.Cache`
* // Replace `_.memoize.Cache`.
* _.memoize.Cache = WeakMap;
*/
function memoize(func, resolver) {
@@ -8908,7 +8907,7 @@
* sayHelloTo('fred');
* // => 'hello fred'
*
* // using placeholders
* // Partially applied with placeholders.
* var greetFred = _.partial(greet, _, 'fred');
* greetFred('hi');
* // => 'hi fred'
@@ -8944,7 +8943,7 @@
* greetFred('hi');
* // => 'hi fred'
*
* // using placeholders
* // Partially applied with placeholders.
* var sayHelloTo = _.partialRight(greet, 'hello', _);
* sayHelloTo('fred');
* // => 'hello fred'
@@ -9041,6 +9040,7 @@
* @memberOf _
* @category Function
* @param {Function} func The function to spread arguments over.
* @param {number} [start=0] The start position of the spread.
* @returns {Function} Returns the new function.
* @example
*
@@ -9051,7 +9051,6 @@
* say(['fred', 'hello']);
* // => 'fred says hello'
*
* // with a Promise
* var numbers = Promise.all([
* Promise.resolve(40),
* Promise.resolve(36)
@@ -9062,13 +9061,20 @@
* }));
* // => a Promise of 76
*/
function spread(func) {
function spread(func, start) {
if (typeof func != 'function') {
throw new TypeError(FUNC_ERROR_TEXT);
}
return function(array) {
return apply(func, this, array);
};
start = start === undefined ? 0 : nativeMax(toInteger(start), 0);
return rest(function(args) {
var array = args[start],
otherArgs = args.slice(0, start);
if (array) {
arrayPush(otherArgs, array);
}
return apply(func, this, otherArgs);
});
}
/**
@@ -9101,14 +9107,14 @@
* @returns {Function} Returns the new throttled function.
* @example
*
* // avoid excessively updating the position while scrolling
* // Avoid excessively updating the position while scrolling.
* jQuery(window).on('scroll', _.throttle(updatePosition, 100));
*
* // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes
* // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
* var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
* jQuery(element).on('click', throttled);
*
* // cancel a trailing throttled invocation
* // Cancel the trailing throttled invocation.
* jQuery(window).on('popstate', throttled.cancel);
*/
function throttle(func, wait, options) {
@@ -10727,15 +10733,15 @@
* _.findKey(users, function(o) { return o.age < 40; });
* // => 'barney' (iteration order is not guaranteed)
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.findKey(users, { 'age': 1, 'active': true });
* // => 'pebbles'
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.findKey(users, ['active', false]);
* // => 'fred'
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.findKey(users, 'active');
* // => 'barney'
*/
@@ -10764,15 +10770,15 @@
* _.findLastKey(users, function(o) { return o.age < 40; });
* // => returns 'pebbles' assuming `_.findKey` returns 'barney'
*
* // using the `_.matches` iteratee shorthand
* // The `_.matches` iteratee shorthand.
* _.findLastKey(users, { 'age': 36, 'active': true });
* // => 'barney'
*
* // using the `_.matchesProperty` iteratee shorthand
* // The `_.matchesProperty` iteratee shorthand.
* _.findLastKey(users, ['active', false]);
* // => 'fred'
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.findLastKey(users, 'active');
* // => 'pebbles'
*/
@@ -11245,7 +11251,7 @@
* _.mapValues(users, function(o) { return o.age; });
* // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.mapValues(users, 'age');
* // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
*/
@@ -11299,6 +11305,8 @@
* method instead. The `customizer` is invoked with seven arguments:
* (objValue, srcValue, key, object, source, stack).
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @category Object
@@ -11405,7 +11413,7 @@
/**
* Creates an object composed of the `object` properties `predicate` returns
* truthy for. The predicate is invoked with one argument: (value).
* truthy for. The predicate is invoked with two arguments: (value, key).
*
* @static
* @memberOf _
@@ -11472,6 +11480,8 @@
* are created for all other missing properties. Use `_.setWith` to customize
* `path` creation.
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @category Object
@@ -11501,6 +11511,8 @@
* path creation is handled by the method instead. The `customizer` is invoked
* with three arguments: (nsValue, key, nsObject).
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @category Object
@@ -11620,6 +11632,8 @@
/**
* Removes the property at `path` of `object`.
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @category Object
@@ -12409,54 +12423,54 @@
* @returns {Function} Returns the compiled template function.
* @example
*
* // using the "interpolate" delimiter to create a compiled template
* // Use the "interpolate" delimiter to create a compiled template.
* var compiled = _.template('hello <%= user %>!');
* compiled({ 'user': 'fred' });
* // => 'hello fred!'
*
* // using the HTML "escape" delimiter to escape data property values
* // Use the HTML "escape" delimiter to escape data property values.
* var compiled = _.template('<b><%- value %></b>');
* compiled({ 'value': '<script>' });
* // => '<b>&lt;script&gt;</b>'
*
* // using the "evaluate" delimiter to execute JavaScript and generate HTML
* // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
* var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
* compiled({ 'users': ['fred', 'barney'] });
* // => '<li>fred</li><li>barney</li>'
*
* // using the internal `print` function in "evaluate" delimiters
* // Use the internal `print` function in "evaluate" delimiters.
* var compiled = _.template('<% print("hello " + user); %>!');
* compiled({ 'user': 'barney' });
* // => 'hello barney!'
*
* // using the ES delimiter as an alternative to the default "interpolate" delimiter
* // Use the ES delimiter as an alternative to the default "interpolate" delimiter.
* var compiled = _.template('hello ${ user }!');
* compiled({ 'user': 'pebbles' });
* // => 'hello pebbles!'
*
* // using custom template delimiters
* // Use custom template delimiters.
* _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
* var compiled = _.template('hello {{ user }}!');
* compiled({ 'user': 'mustache' });
* // => 'hello mustache!'
*
* // using backslashes to treat delimiters as plain text
* // Use backslashes to treat delimiters as plain text.
* var compiled = _.template('<%= "\\<%- value %\\>" %>');
* compiled({ 'value': 'ignored' });
* // => '<%- value %>'
*
* // using the `imports` option to import `jQuery` as `jq`
* // Use the `imports` option to import `jQuery` as `jq`.
* var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
* var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
* compiled({ 'users': ['fred', 'barney'] });
* // => '<li>fred</li><li>barney</li>'
*
* // using the `sourceURL` option to specify a custom sourceURL for the template
* // Use the `sourceURL` option to specify a custom sourceURL for the template.
* var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
* compiled(data);
* // => find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector
*
* // using the `variable` option to ensure a with-statement isn't used in the compiled template
* // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
* var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
* compiled.source;
* // => function(data) {
@@ -12465,8 +12479,8 @@
* // return __p;
* // }
*
* // using the `source` property to inline compiled templates for meaningful
* // line numbers in error messages and a stack trace
* // Use the `source` property to inline compiled templates for meaningful
* // line numbers in error messages and stack traces.
* fs.writeFileSync(path.join(cwd, 'jst.js'), '\
* var JST = {\
* "main": ' + _.template(mainText).source + '\
@@ -12913,7 +12927,7 @@
* @returns {*} Returns the `func` result or error object.
* @example
*
* // avoid throwing errors for invalid selectors
* // Avoid throwing errors for invalid selectors.
* var elements = _.attempt(function(selector) {
* return document.querySelectorAll(selector);
* }, '>_>');
@@ -12926,7 +12940,7 @@
try {
return apply(func, undefined, args);
} catch (e) {
return isError(e) ? e : new Error(e);
return isObject(e) ? e : new Error(e);
}
});
@@ -13139,7 +13153,7 @@
* { 'user': 'fred', 'age': 40 }
* ];
*
* // create custom iteratee shorthands
* // Create custom iteratee shorthands.
* _.iteratee = _.wrap(_.iteratee, function(callback, func) {
* var p = /^(\S+)\s*([<>])\s*(\S+)$/.exec(func);
* return !p ? callback(func) : function(object) {
@@ -13151,9 +13165,7 @@
* // => [{ 'user': 'fred', 'age': 40 }]
*/
function iteratee(func) {
return (isObjectLike(func) && !isArray(func))
? matches(func)
: baseIteratee(func);
return baseIteratee(typeof func == 'function' ? func : baseClone(func, true));
}
/**
@@ -13789,7 +13801,7 @@
* _.maxBy(objects, function(o) { return o.n; });
* // => { 'n': 2 }
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.maxBy(objects, 'n');
* // => { 'n': 2 }
*/
@@ -13857,7 +13869,7 @@
* _.minBy(objects, function(o) { return o.n; });
* // => { 'n': 1 }
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.minBy(objects, 'n');
* // => { 'n': 1 }
*/
@@ -13951,7 +13963,7 @@
* _.sumBy(objects, function(o) { return o.n; });
* // => 20
*
* // using the `_.property` iteratee shorthand
* // The `_.property` iteratee shorthand.
* _.sumBy(objects, 'n');
* // => 20
*/

View File

@@ -1,15 +1,16 @@
{
"name": "lodash",
"version": "4.1.0",
"version": "4.2.0",
"main": "lodash.js",
"private": true,
"devDependencies": {
"async": "^1.5.2",
"benchmark": "^2.1.0",
"chalk": "^1.1.1",
"codecov.io": "~0.1.6",
"coveralls": "^2.11.6",
"curl-amd": "~0.8.12",
"docdown": "~0.4.0",
"docdown": "~0.4.1",
"dojo": "^1.10.4",
"ecstatic": "^1.4.0",
"fs-extra": "~0.26.5",
@@ -20,7 +21,7 @@
"lodash": "^3.10.1",
"platform": "^1.3.1",
"qunit-extras": "^1.4.5",
"qunitjs": "~1.20.0",
"qunitjs": "~1.21.0",
"request": "^2.69.0",
"requirejs": "^2.1.22",
"sauce-tunnel": "2.3.0",

View File

@@ -24,9 +24,9 @@
</head>
<body>
<div id="perf-toolbar"></div>
<script src="../node_modules/platform/platform.js"></script>
<script src="../lodash.js"></script>
<script src="../vendor/benchmark.js/benchmark.js"></script>
<script src="../node_modules/platform/platform.js"></script>
<script src="../node_modules/benchmark/benchmark.js"></script>
<script src="../vendor/firebug-lite/src/firebug-lite-debug.js"></script>
<script src="./asset/perf-ui.js"></script>
<script>

View File

@@ -109,7 +109,7 @@
/** Load Benchmark.js. */
var Benchmark = root.Benchmark || (root.Benchmark = (
Benchmark = load('../vendor/benchmark.js/benchmark.js') || root.Benchmark,
Benchmark = load('../node_modules/benchmark/benchmark.js') || root.Benchmark,
Benchmark = Benchmark.Benchmark || Benchmark,
Benchmark.runInContext(lodash.extend({}, root, { '_': lodash }))
));

View File

@@ -96,7 +96,7 @@
var aryCap = index + 1;
var methodNames = _.filter(mapping.aryMethod[aryCap], function(methodName) {
var key = _.result(mapping.key, methodName, methodName),
var key = _.result(mapping.rename, methodName, methodName),
arity = _[key].length;
return arity != 0 && arity < aryCap;
@@ -160,8 +160,8 @@
assert.expect(1);
var funcMethods = [
'after', 'ary', 'before', 'bind', 'bindKey', 'cloneDeepWith', 'cloneWith',
'curryN', 'debounce', 'delay', 'overArgs', 'rearg', 'throttle', 'wrap'
'after', 'ary', 'before', 'bind', 'bindKey', 'curryN', 'debounce', 'delay',
'overArgs', 'partial', 'partialRight', 'rearg', 'throttle', 'wrap'
];
var exceptions = _.difference(funcMethods.concat('matchesProperty'), ['cloneDeepWith', 'cloneWith', 'delay']),
@@ -341,35 +341,6 @@
/*--------------------------------------------------------------------------*/
QUnit.module('curry methods');
_.each(['curry', 'curryRight'], function(methodName) {
var func = fp[methodName];
QUnit.test('`_.' + methodName + '` should only accept a `func` param', function(assert) {
assert.expect(1);
assert.raises(function() { func(1, _.noop); }, TypeError);
});
});
/*--------------------------------------------------------------------------*/
QUnit.module('curryN methods');
_.each(['curryN', 'curryRightN'], function(methodName) {
var func = fp[methodName];
QUnit.test('`_.' + methodName + '` accept an `arity` param', function(assert) {
assert.expect(1);
var actual = func(1, function(a, b) { return [a, b]; })('a');
assert.deepEqual(actual, ['a', undefined]);
});
});
/*--------------------------------------------------------------------------*/
QUnit.module('key methods');
(function() {
@@ -400,7 +371,7 @@
deepObject = { 'a': { 'b': 2, 'c': 3 } };
QUnit.test('should not mutate values', function(assert) {
assert.expect(36);
assert.expect(38);
function Foo() {}
Foo.prototype = { 'b': 2 };
@@ -526,6 +497,12 @@
assert.deepEqual(value, deepObject, 'fp.setWith');
assert.deepEqual(actual, { 'a': { 'b': 2, 'c': 3 }, 'd': { 'e': 4 } }, 'fp.setWith');
value = _.cloneDeep(deepObject);
actual = fp.unset('a.b', value);
assert.deepEqual(value, deepObject, 'fp.unset');
assert.deepEqual(actual, { 'a': { 'c': 3 } }, 'fp.set');
});
}());
@@ -537,49 +514,10 @@
var func = fp[methodName];
QUnit.test('`_.' + methodName + '` should have a `placeholder` property', function(assert) {
assert.expect(1);
assert.expect(2);
assert.ok(_.isObject(func.placeholder));
});
});
/*--------------------------------------------------------------------------*/
QUnit.module('reduce methods');
_.each(['reduce', 'reduceRight'], function(methodName) {
var func = fp[methodName],
isReduce = methodName == 'reduce';
QUnit.test('`_.' + methodName + '` should provide the correct `iteratee` arguments when iterating an array', function(assert) {
assert.expect(1);
var args,
array = [1, 2, 3];
func(function() {
args || (args = slice.call(arguments));
})(0, array);
assert.deepEqual(args, isReduce ? [0, 1] : [0, 3]);
});
QUnit.test('`_.' + methodName + '` should provide the correct `iteratee` arguments when iterating an object', function(assert) {
assert.expect(1);
var args,
object = { 'a': 1, 'b': 2 },
isFIFO = _.keys(object)[0] == 'a';
var expected = isFIFO
? (isReduce ? [0, 1] : [0, 2])
: (isReduce ? [0, 2] : [0, 1]);
func(function() {
args || (args = slice.call(arguments));
})(0, object);
assert.deepEqual(args, expected);
assert.strictEqual(func.placeholder, fp.__);
});
});
@@ -638,6 +576,35 @@
/*--------------------------------------------------------------------------*/
QUnit.module('fp.curry and fp.curryRight');
_.each(['curry', 'curryRight'], function(methodName) {
var func = fp[methodName];
QUnit.test('`_.' + methodName + '` should only accept a `func` param', function(assert) {
assert.expect(1);
assert.raises(function() { func(1, _.noop); }, TypeError);
});
});
/*--------------------------------------------------------------------------*/
QUnit.module('fp.curryN and fp.curryRightN');
_.each(['curryN', 'curryRightN'], function(methodName) {
var func = fp[methodName];
QUnit.test('`_.' + methodName + '` accept an `arity` param', function(assert) {
assert.expect(1);
var actual = func(1, function(a, b) { return [a, b]; })('a');
assert.deepEqual(actual, ['a', undefined]);
});
});
/*--------------------------------------------------------------------------*/
QUnit.module('fp.difference');
(function() {
@@ -899,6 +866,27 @@
/*--------------------------------------------------------------------------*/
QUnit.module('fp.partial and fp.partialRight');
_.each(['partial', 'partialRight'], function(methodName) {
var func = fp[methodName],
isPartial = methodName == 'partial';
QUnit.test('`_.' + methodName + '` should accept an `args` param', function(assert) {
assert.expect(1);
var expected = isPartial ? [1, 2, 3] : [0, 1, 2];
var actual = func(function(a, b, c) {
return [a, b, c];
})([1, 2])(isPartial ? 3 : 0);
assert.deepEqual(actual, expected);
});
});
/*--------------------------------------------------------------------------*/
QUnit.module('fp.random');
(function() {
@@ -931,6 +919,46 @@
/*--------------------------------------------------------------------------*/
QUnit.module('fp.reduce and fp.reduceRight');
_.each(['reduce', 'reduceRight'], function(methodName) {
var func = fp[methodName],
isReduce = methodName == 'reduce';
QUnit.test('`_.' + methodName + '` should provide the correct `iteratee` arguments when iterating an array', function(assert) {
assert.expect(1);
var args,
array = [1, 2, 3];
func(function() {
args || (args = slice.call(arguments));
})(0, array);
assert.deepEqual(args, isReduce ? [0, 1] : [0, 3]);
});
QUnit.test('`_.' + methodName + '` should provide the correct `iteratee` arguments when iterating an object', function(assert) {
assert.expect(1);
var args,
object = { 'a': 1, 'b': 2 },
isFIFO = _.keys(object)[0] == 'a';
var expected = isFIFO
? (isReduce ? [0, 1] : [0, 2])
: (isReduce ? [0, 2] : [0, 1]);
func(function() {
args || (args = slice.call(arguments));
})(0, object);
assert.deepEqual(args, expected);
});
});
/*--------------------------------------------------------------------------*/
QUnit.module('fp.runInContext');
(function() {

View File

@@ -1431,16 +1431,20 @@
});
QUnit.test('work with an object for `object` when chaining', function(assert) {
assert.expect(1);
assert.expect(2);
if (!isNpm) {
var paths = ['a[0].b.c', 'a[1]'],
wrapped = _(object).map(identity).at(paths);
actual = _(object).map(identity).at(paths).value();
assert.deepEqual(wrapped.value(), _.at(_.map(object, identity), paths));
assert.deepEqual(actual, _.at(_.map(object, identity), paths));
var indexObject = { '0': 1 };
actual = _(indexObject).at(0).value();
assert.deepEqual(actual, _.at(indexObject, 0));
}
else {
skipTest(assert);
skipTest(assert, 2);
}
});
}(1, 2, 3));
@@ -1482,6 +1486,20 @@
assert.ok(lodashStable.isEqual(actual, Error('x')));
});
QUnit.test('should preserve custom errors', function(assert) {
assert.expect(1);
function CustomError(message) {
this.name = 'CustomError';
this.message = message;
}
CustomError.prototype = lodashStable.create(Error.prototype);
var actual = _.attempt(function() { throw new CustomError('x'); });
assert.ok(actual instanceof CustomError);
});
QUnit.test('should work with an error object from another realm', function(assert) {
assert.expect(1);
@@ -5406,6 +5424,71 @@
assert.deepEqual(actual, expected);
});
QUnit.test('should work with a "_.property" style `iteratee`', function(assert) {
assert.expect(1);
var objects = [{ 'a': [1, 2] }, { 'a': [3, 4] }];
assert.deepEqual(_.flatMap(objects, 'a'), array);
});
QUnit.test('should iterate over own properties of objects', function(assert) {
assert.expect(1);
function Foo() { this.a = [1, 2]; }
Foo.prototype.b = [3, 4];
var actual = _.flatMap(new Foo, identity);
assert.deepEqual(actual, [1, 2]);
});
QUnit.test('should use `_.identity` when `iteratee` is nullish', function(assert) {
assert.expect(1);
var array = [[1, 2], [3, 4]],
values = [, null, undefined],
expected = lodashStable.map(values, lodashStable.constant([1, 2, 3, 4]));
var actual = lodashStable.map(values, function(value, index) {
return index ? _.flatMap(array, value) : _.flatMap(array);
});
assert.deepEqual(actual, expected);
});
QUnit.test('should work on an object with no `iteratee`', function(assert) {
assert.expect(1);
var actual = _.flatMap({ 'a': [1, 2], 'b': [3, 4] });
assert.deepEqual(actual, array);
});
QUnit.test('should handle object arguments with non-number length properties', function(assert) {
assert.expect(1);
var object = { 'length': [1, 2] };
assert.deepEqual(_.flatMap(object, identity), [1, 2]);
});
QUnit.test('should accept a falsey `collection` argument', function(assert) {
assert.expect(1);
var expected = lodashStable.map(falsey, alwaysEmptyArray);
var actual = lodashStable.map(falsey, function(collection, index) {
try {
return index ? _.flatMap(collection) : _.flatMap();
} catch (e) {}
});
assert.deepEqual(actual, expected);
});
QUnit.test('should treat number values for `collection` as empty', function(assert) {
assert.expect(1);
assert.deepEqual(_.flatMap(1), []);
});
QUnit.test('should work in a lazy sequence', function(assert) {
assert.expect(2);
@@ -10609,7 +10692,7 @@
assert.strictEqual(matches({ 'b': 2 }), false);
});
QUnit.test('should not change behavior if `source` is modified', function(assert) {
QUnit.test('should not change `_.matches` behavior if `source` is modified', function(assert) {
assert.expect(9);
var sources = [
@@ -10638,7 +10721,7 @@
});
});
QUnit.test('should return an iteratee created by `_.matchesProperty` when `func` is a number or string and a value is provided', function(assert) {
QUnit.test('should return an iteratee created by `_.matchesProperty` when `func` is an array', function(assert) {
assert.expect(3);
var array = ['a', undefined],
@@ -10662,6 +10745,35 @@
assert.strictEqual(matches(object), true);
});
QUnit.test('should not change `_.matchesProperty` behavior if `source` is modified', function(assert) {
assert.expect(9);
var sources = [
{ 'a': { 'b': 2, 'c': 3 } },
{ 'a': 1, 'b': 2 },
{ 'a': 1 }
];
lodashStable.each(sources, function(source, index) {
var object = { 'a': lodashStable.cloneDeep(source) },
matches = _.iteratee(['a', source]);
assert.strictEqual(matches(object), true);
if (index) {
source.a = 2;
source.b = 1;
source.c = 3;
} else {
source.a.b = 1;
source.a.c = 2;
source.a.d = 3;
}
assert.strictEqual(matches(object), true);
assert.strictEqual(matches({ 'a': source }), false);
});
});
QUnit.test('should return an iteratee created by `_.property` when `func` is a number or string', function(assert) {
assert.expect(2);
@@ -11856,13 +11968,13 @@
QUnit.module('lodash.map');
(function() {
var array = [1, 2, 3];
var array = [1, 2];
QUnit.test('should map values in `collection` to a new array', function(assert) {
assert.expect(2);
var object = { 'a': 1, 'b': 2, 'c': 3 },
expected = ['1', '2', '3'];
var object = { 'a': 1, 'b': 2 },
expected = ['1', '2'];
assert.deepEqual(_.map(array, String), expected);
assert.deepEqual(_.map(object, String), expected);
@@ -11881,14 +11993,27 @@
function Foo() { this.a = 1; }
Foo.prototype.b = 2;
var actual = _.map(new Foo, function(value, key) { return key; });
assert.deepEqual(actual, ['a']);
var actual = _.map(new Foo, identity);
assert.deepEqual(actual, [1]);
});
QUnit.test('should use `_.identity` when `iteratee` is nullish', function(assert) {
assert.expect(1);
var values = [, null, undefined],
expected = lodashStable.map(values, lodashStable.constant([1, 2]));
var actual = lodashStable.map(values, function(value, index) {
return index ? _.map(array, value) : _.map(array);
});
assert.deepEqual(actual, expected);
});
QUnit.test('should work on an object with no `iteratee`', function(assert) {
assert.expect(1);
var actual = _.map({ 'a': 1, 'b': 2, 'c': 3 });
var actual = _.map({ 'a': 1, 'b': 2 });
assert.deepEqual(actual, array);
});
@@ -12001,13 +12126,13 @@
(function() {
var array = [1, 2],
object = { 'a': 1, 'b': 2, 'c': 3 };
object = { 'a': 1, 'b': 2 };
QUnit.test('should map keys in `object` to a new object', function(assert) {
assert.expect(1);
var actual = _.mapKeys(object, String);
assert.deepEqual(actual, { '1': 1, '2': 2, '3': 3 });
assert.deepEqual(actual, { '1': 1, '2': 2 });
});
QUnit.test('should treat arrays like objects', function(assert) {
@@ -12027,8 +12152,8 @@
QUnit.test('should work on an object with no `iteratee`', function(assert) {
assert.expect(1);
var actual = _.mapKeys({ 'a': 1, 'b': 2, 'c': 3 });
assert.deepEqual(actual, { '1': 1, '2': 2, '3': 3 });
var actual = _.mapKeys({ 'a': 1, 'b': 2 });
assert.deepEqual(actual, { '1': 1, '2': 2 });
});
}());
@@ -12038,13 +12163,13 @@
(function() {
var array = [1, 2],
object = { 'a': 1, 'b': 2, 'c': 3 };
object = { 'a': 1, 'b': 2 };
QUnit.test('should map values in `object` to a new object', function(assert) {
assert.expect(1);
var actual = _.mapValues(object, String);
assert.deepEqual(actual, { 'a': '1', 'b': '2', 'c': '3' });
assert.deepEqual(actual, { 'a': '1', 'b': '2' });
});
QUnit.test('should treat arrays like objects', function(assert) {
@@ -12064,7 +12189,7 @@
QUnit.test('should work on an object with no `iteratee`', function(assert) {
assert.expect(2);
var actual = _.mapValues({ 'a': 1, 'b': 2, 'c': 3 });
var actual = _.mapValues({ 'a': 1, 'b': 2 });
assert.deepEqual(actual, object);
assert.notStrictEqual(actual, object);
});
@@ -12077,7 +12202,7 @@
lodashStable.each(['mapKeys', 'mapValues'], function(methodName) {
var array = [1, 2],
func = _[methodName],
object = { 'a': 1, 'b': 2, 'c': 3 };
object = { 'a': 1, 'b': 2 };
QUnit.test('should iterate over own properties of objects', function(assert) {
assert.expect(1);
@@ -17131,15 +17256,15 @@
QUnit.test('should apply a rest parameter to `func`', function(assert) {
assert.expect(1);
var rp = _.rest(fn);
assert.deepEqual(rp(1, 2, 3, 4), [1, 2, [3, 4]]);
var rest = _.rest(fn);
assert.deepEqual(rest(1, 2, 3, 4), [1, 2, [3, 4]]);
});
QUnit.test('should work with `start`', function(assert) {
assert.expect(1);
var rp = _.rest(fn, 1);
assert.deepEqual(rp(1, 2, 3, 4), [1, [2, 3, 4]]);
var rest = _.rest(fn, 1);
assert.deepEqual(rest(1, 2, 3, 4), [1, [2, 3, 4]]);
});
QUnit.test('should treat `start` as `0` for negative or `NaN` values', function(assert) {
@@ -17149,8 +17274,8 @@
expected = lodashStable.map(values, lodashStable.constant([[1, 2, 3, 4]]));
var actual = lodashStable.map(values, function(value) {
var rp = _.rest(fn, value);
return rp(1, 2, 3, 4);
var rest = _.rest(fn, value);
return rest(1, 2, 3, 4);
});
assert.deepEqual(actual, expected);
@@ -17159,25 +17284,25 @@
QUnit.test('should coerce `start` to an integer', function(assert) {
assert.expect(1);
var rp = _.rest(fn, 1.6);
assert.deepEqual(rp(1, 2, 3), [1, [2, 3]]);
var rest = _.rest(fn, 1.6);
assert.deepEqual(rest(1, 2, 3), [1, [2, 3]]);
});
QUnit.test('should use an empty array when `start` is not reached', function(assert) {
assert.expect(1);
var rp = _.rest(fn);
assert.deepEqual(rp(1), [1, undefined, []]);
var rest = _.rest(fn);
assert.deepEqual(rest(1), [1, undefined, []]);
});
QUnit.test('should work on functions with more than three parameters', function(assert) {
assert.expect(1);
var rp = _.rest(function(a, b, c, d) {
var rest = _.rest(function(a, b, c, d) {
return slice.call(arguments);
});
assert.deepEqual(rp(1, 2, 3, 4, 5), [1, 2, 3, [4, 5]]);
assert.deepEqual(rest(1, 2, 3, 4, 5), [1, 2, 3, [4, 5]]);
});
}());
@@ -18530,11 +18655,15 @@
QUnit.module('lodash.spread');
(function() {
function fn(a, b, c) {
return slice.call(arguments);
}
QUnit.test('should spread arguments to `func`', function(assert) {
assert.expect(1);
var spread = _.spread(add);
assert.strictEqual(spread([4, 2]), 6);
var spread = _.spread(fn);
assert.deepEqual(spread([4, 2]), [4, 2]);
});
QUnit.test('should accept a falsey `array` argument', function(assert) {
@@ -18564,6 +18693,34 @@
spread([4, 2], 'ignored');
assert.deepEqual(args, [4, 2]);
});
QUnit.test('should work with `start`', function(assert) {
assert.expect(1);
var spread = _.spread(fn, 1);
assert.deepEqual(spread(1, [2, 3, 4]), [1, 2, 3, 4]);
});
QUnit.test('should treat `start` as `0` for negative or `NaN` values', function(assert) {
assert.expect(1);
var values = [-1, NaN, 'a'],
expected = lodashStable.map(values, lodashStable.constant([1, 2, 3, 4]));
var actual = lodashStable.map(values, function(value) {
var spread = _.spread(fn, value);
return spread([1, 2, 3, 4]);
});
assert.deepEqual(actual, expected);
});
QUnit.test('should coerce `start` to an integer', function(assert) {
assert.expect(1);
var spread = _.spread(fn, 1.6);
assert.deepEqual(spread(1, [2, 3]), [1, 2, 3]);
});
}());
/*--------------------------------------------------------------------------*/

View File

@@ -29,6 +29,9 @@
QUnit.config.hidepassed = true;
QUnit.config.excused = {
'Arrays': {
'difference': [
'can perform an OO-style difference'
],
'drop': [
'is an alias for rest'
],
@@ -99,11 +102,15 @@
'is an alias for first'
],
'uniq': [
'can find the unique values of an array using a custom iterator',
'can find the unique values of an array using a custom iterator without specifying whether array is sorted',
'string iterator works with sorted array',
'can use pluck like iterator',
'uses the result of `iterator` for uniqueness comparisons (unsorted case)',
'`sorted` argument defaults to false when omitted',
'when `iterator` is a string, uses that key for comparisons (unsorted case)',
'uses the result of `iterator` for uniqueness comparisons (sorted case)',
'when `iterator` is a string, uses that key for comparisons (sorted case)',
'can use falsey pluck like iterator'
],
'union': [
'can perform an OO-style union'
]
},
'Chaining': {

View File

@@ -1,4 +1,4 @@
Copyright (c) 2010-2015 Jeremy Ashkenas, DocumentCloud
Copyright (c) 2010-2016 Jeremy Ashkenas, DocumentCloud
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation

View File

@@ -1,6 +1,6 @@
// Backbone.js 1.2.3
// (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
// (c) 2010-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
// Backbone may be freely distributed under the MIT license.
// For all details and documentation:
// http://backbonejs.org
@@ -146,7 +146,7 @@
events = eventsApi(iteratee, events, names[i], name[names[i]], opts);
}
} else if (name && eventSplitter.test(name)) {
// Handle space separated event names by delegating them individually.
// Handle space-separated event names by delegating them individually.
for (names = name.split(eventSplitter); i < names.length; i++) {
events = iteratee(events, names[i], callback, opts);
}
@@ -348,7 +348,7 @@
};
// Handles triggering the appropriate event callbacks.
var triggerApi = function(objEvents, name, cb, args) {
var triggerApi = function(objEvents, name, callback, args) {
if (objEvents) {
var events = objEvents[name];
var allEvents = objEvents.all;
@@ -810,7 +810,10 @@
var singular = !_.isArray(models);
models = singular ? [models] : models.slice();
var removed = this._removeModels(models, options);
if (!options.silent && removed.length) this.trigger('update', this, options);
if (!options.silent && removed.length) {
options.changes = {added: [], merged: [], removed: removed};
this.trigger('update', this, options);
}
return singular ? removed[0] : removed;
},
@@ -835,6 +838,7 @@
var set = [];
var toAdd = [];
var toMerge = [];
var toRemove = [];
var modelMap = {};
@@ -860,6 +864,7 @@
var attrs = this._isModel(model) ? model.attributes : model;
if (options.parse) attrs = existing.parse(attrs, options);
existing.set(attrs, options);
toMerge.push(existing);
if (sortable && !sort) sort = existing.hasChanged(sortAttr);
}
if (!modelMap[existing.cid]) {
@@ -893,8 +898,8 @@
var orderChanged = false;
var replace = !sortable && add && remove;
if (set.length && replace) {
orderChanged = this.length !== set.length || _.some(this.models, function(model, index) {
return model !== set[index];
orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {
return m !== set[index];
});
this.models.length = 0;
splice(this.models, set, 0);
@@ -908,7 +913,7 @@
// Silently sort the collection if appropriate.
if (sort) this.sort({silent: true});
// Unless silenced, it's time to fire all appropriate add/sort events.
// Unless silenced, it's time to fire all appropriate add/sort/update events.
if (!options.silent) {
for (i = 0; i < toAdd.length; i++) {
if (at != null) options.index = at + i;
@@ -916,7 +921,14 @@
model.trigger('add', model, this, options);
}
if (sort || orderChanged) this.trigger('sort', this, options);
if (toAdd.length || toRemove.length) this.trigger('update', this, options);
if (toAdd.length || toRemove.length || toMerge.length) {
options.changes = {
added: toAdd,
removed: toRemove,
merged: toMerge
};
this.trigger('update', this, options);
}
}
// Return the added (or merged) model (or models).
@@ -973,6 +985,11 @@
return this._byId[obj] || this._byId[id] || this._byId[obj.cid];
},
// Returns `true` if the model is in the collection.
has: function(obj) {
return this.get(obj) != null;
},
// Get the model at the given index.
at: function(index) {
if (index < 0) index += this.length;
@@ -1045,9 +1062,9 @@
if (!wait) this.add(model, options);
var collection = this;
var success = options.success;
options.success = function(model, resp, callbackOpts) {
if (wait) collection.add(model, callbackOpts);
if (success) success.call(callbackOpts.context, model, resp, callbackOpts);
options.success = function(m, resp, callbackOpts) {
if (wait) collection.add(m, callbackOpts);
if (success) success.call(callbackOpts.context, m, resp, callbackOpts);
};
model.save(null, options);
return model;
@@ -1587,8 +1604,8 @@
// Does the pathname match the root?
matchRoot: function() {
var path = this.decodeFragment(this.location.pathname);
var root = path.slice(0, this.root.length - 1) + '/';
return root === this.root;
var rootPath = path.slice(0, this.root.length - 1) + '/';
return rootPath === this.root;
},
// Unicode characters in `location.pathname` are percent encoded so they're
@@ -1660,8 +1677,8 @@
// If we've started off with a route from a `pushState`-enabled
// browser, but we're currently in a browser that doesn't support it...
if (!this._hasPushState && !this.atRoot()) {
var root = this.root.slice(0, -1) || '/';
this.location.replace(root + '#' + this.getPath());
var rootPath = this.root.slice(0, -1) || '/';
this.location.replace(rootPath + '#' + this.getPath());
// Return immediately as browser will do redirect to new url
return true;
@@ -1785,11 +1802,11 @@
fragment = this.getFragment(fragment || '');
// Don't include a trailing slash on the root.
var root = this.root;
var rootPath = this.root;
if (fragment === '' || fragment.charAt(0) === '?') {
root = root.slice(0, -1) || '/';
rootPath = rootPath.slice(0, -1) || '/';
}
var url = root + fragment;
var url = rootPath + fragment;
// Strip the hash and decode for matching.
fragment = this.decodeFragment(fragment.replace(pathStripper, ''));

File diff suppressed because it is too large Load Diff

View File

@@ -273,8 +273,8 @@
QUnit.test('#2030 - set with failed validate, followed by another set triggers change', function(assert) {
var attr = 0, main = 0, error = 0;
var Model = Backbone.Model.extend({
validate: function(attr) {
if (attr.x > 1) {
validate: function(attrs) {
if (attrs.x > 1) {
error++;
return 'this is an error';
}
@@ -379,15 +379,15 @@
var Collection = Backbone.Collection.extend({
model: Model
});
var collection = new Collection([{id: 'c5'}, {id: 'c6'}, {id: 'c7'}]);
var col = new Collection([{id: 'c5'}, {id: 'c6'}, {id: 'c7'}]);
assert.equal(collection.get('c6').cid.charAt(0), 'm');
collection.set([{id: 'c6', value: 'test'}], {
assert.equal(col.get('c6').cid.charAt(0), 'm');
col.set([{id: 'c6', value: 'test'}], {
merge: true,
add: true,
remove: false
});
assert.ok(collection.get('c6').has('value'));
assert.ok(col.get('c6').has('value'));
});
QUnit.test('set an empty string', function(assert) {
@@ -480,8 +480,8 @@
assert.expect(2);
var value;
var model = new Backbone.Model({name: 'Rob'});
model.on('change', function(model, options) {
value = options.prefix + model.get('name');
model.on('change', function(m, options) {
value = options.prefix + m.get('name');
});
model.set({name: 'Bob'}, {prefix: 'Mr. '});
assert.equal(value, 'Mr. Bob');
@@ -517,10 +517,10 @@
model.validate = function(attrs) {
if (attrs.admin) return "Can't change admin status.";
};
model.sync = function(method, model, options) {
model.sync = function(method, m, options) {
options.success.call(this, {admin: true});
};
model.on('invalid', function(model, error) {
model.on('invalid', function(m, error) {
lastError = error;
});
model.save(null);
@@ -542,7 +542,7 @@
model.on('error', function() {
assert.ok(true);
});
model.sync = function(method, model, options) {
model.sync = function(method, m, options) {
options.error();
};
model.save({data: 2, id: 1});
@@ -560,8 +560,8 @@
assert.equal(this, obj);
}
};
model.sync = function(method, model, options) {
options.success.call(options.context);
model.sync = function(method, m, opts) {
opts.success.call(opts.context);
};
model.save({data: 2, id: 1}, options);
model.fetch(options);
@@ -578,8 +578,8 @@
assert.equal(this, obj);
}
};
model.sync = function(method, model, options) {
options.error.call(options.context);
model.sync = function(method, m, opts) {
opts.error.call(opts.context);
};
model.save({data: 2, id: 1}, options);
model.fetch(options);
@@ -593,7 +593,7 @@
model.parse = function() {
assert.ok(false);
};
model.sync = function(method, model, options) {
model.sync = function(method, m, options) {
options.success({i: ++i});
};
model.fetch({parse: false});
@@ -627,7 +627,7 @@
QUnit.test('save in positional style', function(assert) {
assert.expect(1);
var model = new Backbone.Model();
model.sync = function(method, model, options) {
model.sync = function(method, m, options) {
options.success();
};
model.save('title', 'Twelfth Night');
@@ -637,13 +637,13 @@
QUnit.test('save with non-object success response', function(assert) {
assert.expect(2);
var model = new Backbone.Model();
model.sync = function(method, model, options) {
model.sync = function(method, m, options) {
options.success('', options);
options.success(null, options);
};
model.save({testing: 'empty'}, {
success: function(model) {
assert.deepEqual(model.attributes, {testing: 'empty'});
success: function(m) {
assert.deepEqual(m.attributes, {testing: 'empty'});
}
});
});
@@ -660,16 +660,16 @@
QUnit.test('save will pass extra options to success callback', function(assert) {
assert.expect(1);
var SpecialSyncModel = Backbone.Model.extend({
sync: function(method, model, options) {
sync: function(method, m, options) {
_.extend(options, {specialSync: true});
return Backbone.Model.prototype.sync.call(this, method, model, options);
return Backbone.Model.prototype.sync.call(this, method, m, options);
},
urlRoot: '/test'
});
var model = new SpecialSyncModel();
var onSuccess = function(model, response, options) {
var onSuccess = function(m, response, options) {
assert.ok(options.specialSync, 'Options were passed correctly to callback');
};
@@ -687,16 +687,16 @@
QUnit.test('fetch will pass extra options to success callback', function(assert) {
assert.expect(1);
var SpecialSyncModel = Backbone.Model.extend({
sync: function(method, model, options) {
sync: function(method, m, options) {
_.extend(options, {specialSync: true});
return Backbone.Model.prototype.sync.call(this, method, model, options);
return Backbone.Model.prototype.sync.call(this, method, m, options);
},
urlRoot: '/test'
});
var model = new SpecialSyncModel();
var onSuccess = function(model, response, options) {
var onSuccess = function(m, response, options) {
assert.ok(options.specialSync, 'Options were passed correctly to callback');
};
@@ -717,16 +717,16 @@
QUnit.test('destroy will pass extra options to success callback', function(assert) {
assert.expect(1);
var SpecialSyncModel = Backbone.Model.extend({
sync: function(method, model, options) {
sync: function(method, m, options) {
_.extend(options, {specialSync: true});
return Backbone.Model.prototype.sync.call(this, method, model, options);
return Backbone.Model.prototype.sync.call(this, method, m, options);
},
urlRoot: '/test'
});
var model = new SpecialSyncModel({id: 'id'});
var onSuccess = function(model, response, options) {
var onSuccess = function(m, response, options) {
assert.ok(options.specialSync, 'Options were passed correctly to callback');
};
@@ -748,7 +748,7 @@
model.validate = function(attrs) {
if (attrs.admin !== this.get('admin')) return "Can't change admin status.";
};
model.on('invalid', function(model, error) {
model.on('invalid', function(m, error) {
lastError = error;
});
var result = model.set({a: 100});
@@ -793,7 +793,7 @@
model.validate = function(attrs) {
if (attrs.admin) return "Can't change admin status.";
};
model.on('invalid', function(model, error) {
model.on('invalid', function(m, error) {
boundError = true;
});
var result = model.set({a: 100}, {validate: true});
@@ -848,14 +848,14 @@
QUnit.test("Nested change events don't clobber previous attributes", function(assert) {
assert.expect(4);
new Backbone.Model()
.on('change:state', function(model, newState) {
assert.equal(model.previous('state'), undefined);
.on('change:state', function(m, newState) {
assert.equal(m.previous('state'), undefined);
assert.equal(newState, 'hello');
// Fire a nested change event.
model.set({other: 'whatever'});
m.set({other: 'whatever'});
})
.on('change:state', function(model, newState) {
assert.equal(model.previous('state'), undefined);
.on('change:state', function(m, newState) {
assert.equal(m.previous('state'), undefined);
assert.equal(newState, 'hello');
})
.set({state: 'hello'});
@@ -1021,7 +1021,7 @@
QUnit.test('#1030 - `save` with `wait` results in correct attributes if success is called during sync', function(assert) {
assert.expect(2);
var model = new Backbone.Model({x: 1, y: 2});
model.sync = function(method, model, options) {
model.sync = function(method, m, options) {
options.success();
};
model.on('change:x', function() { assert.ok(true); });
@@ -1038,7 +1038,7 @@
QUnit.test('save turns on parse flag', function(assert) {
var Model = Backbone.Model.extend({
sync: function(method, model, options) { assert.ok(options.parse); }
sync: function(method, m, options) { assert.ok(options.parse); }
});
new Model().save();
});
@@ -1142,7 +1142,7 @@
model.set({y: 1}, {silent: true});
model.set({y: 2});
});
model.on('change:y', function(model, val) {
model.on('change:y', function(m, val) {
assert.equal(val, 2);
});
model.set({x: true});
@@ -1152,7 +1152,7 @@
assert.expect(1);
var changes = [];
var model = new Backbone.Model();
model.on('change:b', function(model, val) { changes.push(val); });
model.on('change:b', function(m, val) { changes.push(val); });
model.on('change', function() {
model.set({b: 1});
});
@@ -1202,11 +1202,11 @@
assert.expect(3);
var model = new Backbone.Model();
var opts = {
success: function( model, resp, options ) {
success: function( m, resp, options ) {
assert.ok(options);
}
};
model.sync = function(method, model, options) {
model.sync = function(method, m, options) {
options.success();
};
model.save({id: 1}, opts);
@@ -1217,7 +1217,7 @@
QUnit.test("#1412 - Trigger 'sync' event.", function(assert) {
assert.expect(3);
var model = new Backbone.Model({id: 1});
model.sync = function(method, model, options) { options.success(); };
model.sync = function(method, m, options) { options.success(); };
model.on('sync', function(){ assert.ok(true); });
model.fetch();
model.save();
@@ -1248,7 +1248,7 @@
assert.expect(1);
var Model = Backbone.Model.extend({
url: '/test/',
sync: function(method, model, options){ options.success(); },
sync: function(method, m, options){ options.success(); },
validate: function(){ return 'invalid'; }
});
var model = new Model({id: 1});
@@ -1271,7 +1271,7 @@
var done = assert.async();
assert.expect(0);
var Model = Backbone.Model.extend({
sync: function(method, model, options) {
sync: function(method, m, options) {
setTimeout(function(){
options.success();
done();
@@ -1301,7 +1301,7 @@
model.set({b: 2}, {silent: true});
model.unset('c', {silent: true});
});
model.on('change:a change:b change:c', function(model, val) { changes.push(val); });
model.on('change:a change:b change:c', function(m, val) { changes.push(val); });
model.set({a: 'a', b: 1, c: 'item'});
assert.deepEqual(changes, ['a', 1, 'item']);
assert.deepEqual(model.attributes, {a: 'c', b: 2});
@@ -1319,7 +1319,7 @@
assert.expect(2);
var changes = [];
var model = new Backbone.Model();
model.on('change:a change:b change:c', function(model, val) { changes.push(val); });
model.on('change:a change:b change:c', function(m, val) { changes.push(val); });
model.on('change', function() {
model.set({a: 'c'}, {silent: true});
});

View File

@@ -5,7 +5,7 @@
var lastRoute = null;
var lastArgs = [];
var onRoute = function(router, route, args) {
var onRoute = function(routerParam, route, args) {
lastRoute = route;
lastArgs = args;
};
@@ -354,7 +354,7 @@
QUnit.test('No events are triggered if #execute returns false.', function(assert) {
assert.expect(1);
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {
foo: function() {
@@ -369,9 +369,9 @@
});
var router = new Router;
var myRouter = new MyRouter;
router.on('route route:foo', function() {
myRouter.on('route route:foo', function() {
assert.ok(false);
});
@@ -639,14 +639,14 @@
QUnit.test('#1746 - Router allows empty route.', function(assert) {
assert.expect(1);
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {'': 'empty'},
empty: function(){},
route: function(route){
assert.strictEqual(route, '');
}
});
new Router;
new MyRouter;
});
QUnit.test('#1794 - Trailing space in fragments.', function(assert) {
@@ -698,8 +698,8 @@
}
});
var router = new RouterExtended();
assert.deepEqual({home: 'root', index: 'index.html', show: 'show', search: 'search'}, router.routes);
var myRouter = new RouterExtended();
assert.deepEqual({home: 'root', index: 'index.html', show: 'show', search: 'search'}, myRouter.routes);
});
QUnit.test('#2538 - hashChange to pushState only if both requested.', function(assert) {
@@ -731,12 +731,12 @@
}
});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {
hash: function() { assert.ok(false); }
}
});
var router = new Router;
var myRouter = new MyRouter;
location.replace('http://example.com/');
Backbone.history.start({
@@ -807,12 +807,12 @@
}
});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {
path: function() { assert.ok(true); }
}
});
var router = new Router;
var myRouter = new MyRouter;
location.replace('http://example.com/');
Backbone.history.start({pushState: true, hashChange: false});
@@ -821,14 +821,14 @@
QUnit.test('Do not decode the search params.', function(assert) {
assert.expect(1);
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {
path: function(params){
assert.strictEqual(params, 'x=y%3Fz');
}
}
});
var router = new Router;
var myRouter = new MyRouter;
Backbone.history.navigate('path?x=y%3Fz', true);
});
@@ -837,14 +837,14 @@
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
Backbone.history.start({pushState: true});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {
path: function(params) {
assert.strictEqual(params, 'x=y');
}
}
});
var router = new Router;
var myRouter = new MyRouter;
location.replace('http://example.com/path?x=y#hash');
Backbone.history.checkUrl();
});
@@ -854,14 +854,14 @@
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
Backbone.history.start({pushState: true});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {
path: function(params) {
assert.strictEqual(params, 'x=y');
}
}
});
var router = new Router;
var myRouter = new MyRouter;
Backbone.history.navigate('path?x=y#hash', true);
});
@@ -870,14 +870,14 @@
location.replace('http://example.com/myyjä');
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {
myyjä: function() {
assert.ok(true);
}
}
});
new Router;
new MyRouter;
Backbone.history.start({pushState: true});
});
@@ -887,14 +887,14 @@
location.pathname = '/myyj%C3%A4/foo%20%25%3F%2f%40%25%20bar';
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {
'myyjä/:query': function(query) {
assert.strictEqual(query, 'foo %?/@% bar');
}
}
});
new Router;
new MyRouter;
Backbone.history.start({pushState: true});
});
@@ -903,14 +903,14 @@
location.replace('http://example.com/stuff%0Anonsense?param=foo%0Abar');
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {
'stuff\nnonsense': function() {
assert.ok(true);
}
}
});
new Router;
new MyRouter;
Backbone.history.start({pushState: true});
});
@@ -919,7 +919,7 @@
location.replace('http://example.com#foo/123/bar?x=y');
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {'foo/:id/bar': 'foo'},
foo: function(){},
execute: function(callback, args, name) {
@@ -928,7 +928,7 @@
assert.strictEqual(name, 'foo');
}
});
var router = new Router;
var myRouter = new MyRouter;
Backbone.history.start();
});
@@ -967,8 +967,8 @@
Backbone.history.stop();
location.replace('http://example.com#login?a=value&backUrl=https%3A%2F%2Fwww.msn.com%2Fidp%2Fidpdemo%3Fspid%3Dspdemo%26target%3Db');
Backbone.history = _.extend(new Backbone.History, {location: location});
var router = new Backbone.Router;
router.route('login', function(params) {
var myRouter = new Backbone.Router;
myRouter.route('login', function(params) {
assert.strictEqual(params, 'a=value&backUrl=https%3A%2F%2Fwww.msn.com%2Fidp%2Fidpdemo%3Fspid%3Dspdemo%26target%3Db');
});
Backbone.history.start();
@@ -996,14 +996,14 @@
location.replace('http://example.com/foo');
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {
foo: function(){
assert.ok(false, 'should not match unless root matches');
}
}
});
var router = new Router;
var myRouter = new MyRouter;
Backbone.history.start({root: 'root', pushState: true});
});
@@ -1012,14 +1012,14 @@
location.replace('http://example.com/xxxx/foo');
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {
foo: function(){
assert.ok(false, 'should not match unless root matches');
}
}
});
var router = new Router;
var myRouter = new MyRouter;
Backbone.history.start({root: 'root', pushState: true});
});
@@ -1028,10 +1028,10 @@
location.replace('http://example.com/x+y.z/foo');
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {foo: function(){ assert.ok(true); }}
});
var router = new Router;
var myRouter = new MyRouter;
Backbone.history.start({root: 'x+y.z', pushState: true});
});
@@ -1040,10 +1040,10 @@
location.replace('http://example.com/®ooτ/foo');
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {foo: function(){ assert.ok(true); }}
});
var router = new Router;
var myRouter = new MyRouter;
Backbone.history.start({root: '®ooτ', pushState: true});
});
@@ -1052,10 +1052,10 @@
location.replace('http://example.com/®ooτ');
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var Router = Backbone.Router.extend({
var MyRouter = Backbone.Router.extend({
routes: {'': function(){ assert.ok(true); }}
});
var router = new Router;
var myRouter = new MyRouter;
Backbone.history.start({root: '®ooτ', pushState: true});
});

View File

@@ -228,7 +228,7 @@
assert.expect(2);
var model = new Backbone.Model;
model.url = '/test';
model.on('error', function(model, xhr, options) {
model.on('error', function(m, xhr, options) {
assert.strictEqual(options.textStatus, 'textStatus');
assert.strictEqual(options.errorThrown, 'errorThrown');
});

View File

@@ -27,9 +27,9 @@
QUnit.test('$', function(assert) {
assert.expect(2);
var view = new Backbone.View;
view.setElement('<p><a><b>test</b></a></p>');
var result = view.$('a b');
var myView = new Backbone.View;
myView.setElement('<p><a><b>test</b></a></p>');
var result = myView.$('a b');
assert.strictEqual(result[0].innerHTML, 'test');
assert.ok(result.length === +result.length);
@@ -37,12 +37,12 @@
QUnit.test('$el', function(assert) {
assert.expect(3);
var view = new Backbone.View;
view.setElement('<p><a><b>test</b></a></p>');
assert.strictEqual(view.el.nodeType, 1);
var myView = new Backbone.View;
myView.setElement('<p><a><b>test</b></a></p>');
assert.strictEqual(myView.el.nodeType, 1);
assert.ok(view.$el instanceof Backbone.$);
assert.strictEqual(view.$el[0], view.el);
assert.ok(myView.$el instanceof Backbone.$);
assert.strictEqual(myView.$el[0], myView.el);
});
QUnit.test('initialize', function(assert) {
@@ -58,53 +58,53 @@
QUnit.test('render', function(assert) {
assert.expect(1);
var view = new Backbone.View;
assert.equal(view.render(), view, '#render returns the view instance');
var myView = new Backbone.View;
assert.equal(myView.render(), myView, '#render returns the view instance');
});
QUnit.test('delegateEvents', function(assert) {
assert.expect(6);
var counter1 = 0, counter2 = 0;
var view = new Backbone.View({el: '#testElement'});
view.increment = function(){ counter1++; };
view.$el.on('click', function(){ counter2++; });
var myView = new Backbone.View({el: '#testElement'});
myView.increment = function(){ counter1++; };
myView.$el.on('click', function(){ counter2++; });
var events = {'click h1': 'increment'};
view.delegateEvents(events);
view.$('h1').trigger('click');
myView.delegateEvents(events);
myView.$('h1').trigger('click');
assert.equal(counter1, 1);
assert.equal(counter2, 1);
view.$('h1').trigger('click');
myView.$('h1').trigger('click');
assert.equal(counter1, 2);
assert.equal(counter2, 2);
view.delegateEvents(events);
view.$('h1').trigger('click');
myView.delegateEvents(events);
myView.$('h1').trigger('click');
assert.equal(counter1, 3);
assert.equal(counter2, 3);
});
QUnit.test('delegate', function(assert) {
assert.expect(3);
var view = new Backbone.View({el: '#testElement'});
view.delegate('click', 'h1', function() {
var myView = new Backbone.View({el: '#testElement'});
myView.delegate('click', 'h1', function() {
assert.ok(true);
});
view.delegate('click', function() {
myView.delegate('click', function() {
assert.ok(true);
});
view.$('h1').trigger('click');
myView.$('h1').trigger('click');
assert.equal(view.delegate(), view, '#delegate returns the view instance');
assert.equal(myView.delegate(), myView, '#delegate returns the view instance');
});
QUnit.test('delegateEvents allows functions for callbacks', function(assert) {
assert.expect(3);
var view = new Backbone.View({el: '<p></p>'});
view.counter = 0;
var myView = new Backbone.View({el: '<p></p>'});
myView.counter = 0;
var events = {
click: function() {
@@ -112,97 +112,97 @@
}
};
view.delegateEvents(events);
view.$el.trigger('click');
assert.equal(view.counter, 1);
myView.delegateEvents(events);
myView.$el.trigger('click');
assert.equal(myView.counter, 1);
view.$el.trigger('click');
assert.equal(view.counter, 2);
myView.$el.trigger('click');
assert.equal(myView.counter, 2);
view.delegateEvents(events);
view.$el.trigger('click');
assert.equal(view.counter, 3);
myView.delegateEvents(events);
myView.$el.trigger('click');
assert.equal(myView.counter, 3);
});
QUnit.test('delegateEvents ignore undefined methods', function(assert) {
assert.expect(0);
var view = new Backbone.View({el: '<p></p>'});
view.delegateEvents({'click': 'undefinedMethod'});
view.$el.trigger('click');
var myView = new Backbone.View({el: '<p></p>'});
myView.delegateEvents({'click': 'undefinedMethod'});
myView.$el.trigger('click');
});
QUnit.test('undelegateEvents', function(assert) {
assert.expect(7);
var counter1 = 0, counter2 = 0;
var view = new Backbone.View({el: '#testElement'});
view.increment = function(){ counter1++; };
view.$el.on('click', function(){ counter2++; });
var myView = new Backbone.View({el: '#testElement'});
myView.increment = function(){ counter1++; };
myView.$el.on('click', function(){ counter2++; });
var events = {'click h1': 'increment'};
view.delegateEvents(events);
view.$('h1').trigger('click');
myView.delegateEvents(events);
myView.$('h1').trigger('click');
assert.equal(counter1, 1);
assert.equal(counter2, 1);
view.undelegateEvents();
view.$('h1').trigger('click');
myView.undelegateEvents();
myView.$('h1').trigger('click');
assert.equal(counter1, 1);
assert.equal(counter2, 2);
view.delegateEvents(events);
view.$('h1').trigger('click');
myView.delegateEvents(events);
myView.$('h1').trigger('click');
assert.equal(counter1, 2);
assert.equal(counter2, 3);
assert.equal(view.undelegateEvents(), view, '#undelegateEvents returns the view instance');
assert.equal(myView.undelegateEvents(), myView, '#undelegateEvents returns the view instance');
});
QUnit.test('undelegate', function(assert) {
assert.expect(1);
view = new Backbone.View({el: '#testElement'});
view.delegate('click', function() { assert.ok(false); });
view.delegate('click', 'h1', function() { assert.ok(false); });
var myView = new Backbone.View({el: '#testElement'});
myView.delegate('click', function() { assert.ok(false); });
myView.delegate('click', 'h1', function() { assert.ok(false); });
view.undelegate('click');
myView.undelegate('click');
view.$('h1').trigger('click');
view.$el.trigger('click');
myView.$('h1').trigger('click');
myView.$el.trigger('click');
assert.equal(view.undelegate(), view, '#undelegate returns the view instance');
assert.equal(myView.undelegate(), myView, '#undelegate returns the view instance');
});
QUnit.test('undelegate with passed handler', function(assert) {
assert.expect(1);
view = new Backbone.View({el: '#testElement'});
var myView = new Backbone.View({el: '#testElement'});
var listener = function() { assert.ok(false); };
view.delegate('click', listener);
view.delegate('click', function() { assert.ok(true); });
view.undelegate('click', listener);
view.$el.trigger('click');
myView.delegate('click', listener);
myView.delegate('click', function() { assert.ok(true); });
myView.undelegate('click', listener);
myView.$el.trigger('click');
});
QUnit.test('undelegate with selector', function(assert) {
assert.expect(2);
view = new Backbone.View({el: '#testElement'});
view.delegate('click', function() { assert.ok(true); });
view.delegate('click', 'h1', function() { assert.ok(false); });
view.undelegate('click', 'h1');
view.$('h1').trigger('click');
view.$el.trigger('click');
var myView = new Backbone.View({el: '#testElement'});
myView.delegate('click', function() { assert.ok(true); });
myView.delegate('click', 'h1', function() { assert.ok(false); });
myView.undelegate('click', 'h1');
myView.$('h1').trigger('click');
myView.$el.trigger('click');
});
QUnit.test('undelegate with handler and selector', function(assert) {
assert.expect(2);
view = new Backbone.View({el: '#testElement'});
view.delegate('click', function() { assert.ok(true); });
var myView = new Backbone.View({el: '#testElement'});
myView.delegate('click', function() { assert.ok(true); });
var handler = function(){ assert.ok(false); };
view.delegate('click', 'h1', handler);
view.undelegate('click', 'h1', handler);
view.$('h1').trigger('click');
view.$el.trigger('click');
myView.delegate('click', 'h1', handler);
myView.undelegate('click', 'h1', handler);
myView.$('h1').trigger('click');
myView.$el.trigger('click');
});
QUnit.test('tagName can be provided as a string', function(assert) {
@@ -302,11 +302,11 @@
}
});
var view = new View;
assert.strictEqual(view.el.className, 'backboneClass');
assert.strictEqual(view.el.id, 'backboneId');
assert.strictEqual(view.$el.attr('class'), 'backboneClass');
assert.strictEqual(view.$el.attr('id'), 'backboneId');
var myView = new View;
assert.strictEqual(myView.el.className, 'backboneClass');
assert.strictEqual(myView.el.id, 'backboneId');
assert.strictEqual(myView.$el.attr('class'), 'backboneClass');
assert.strictEqual(myView.$el.attr('id'), 'backboneId');
});
QUnit.test('multiple views per element', function(assert) {
@@ -345,7 +345,7 @@
}
});
var view = new View;
var myView = new View;
$('body').trigger('fake$event').trigger('fake$event');
$('body').off('fake$event');
@@ -356,11 +356,11 @@
assert.expect(2);
var $el = $('body');
var view = new Backbone.View({el: $el});
assert.ok(view.$el === $el);
var myView = new Backbone.View({el: $el});
assert.ok(myView.$el === $el);
view.setElement($el = $($el));
assert.ok(view.$el === $el);
myView.setElement($el = $($el));
assert.ok(myView.$el === $el);
});
QUnit.test('#986 - Undelegate before changing element.', function(assert) {
@@ -371,13 +371,13 @@
var View = Backbone.View.extend({
events: {
click: function(e) {
assert.ok(view.el === e.target);
assert.ok(myView.el === e.target);
}
}
});
var view = new View({el: button1});
view.setElement(button2);
var myView = new View({el: button1});
myView.setElement(button2);
button1.trigger('click');
button2.trigger('click');
@@ -405,14 +405,14 @@
}
});
var view = new View({
var myView = new View({
model: new Backbone.Model,
collection: new Backbone.Collection
});
view.stopListening();
view.model.trigger('x');
view.collection.trigger('x');
myView.stopListening();
myView.model.trigger('x');
myView.collection.trigger('x');
});
QUnit.test('Provide function for el.', function(assert) {
@@ -423,9 +423,9 @@
}
});
var view = new View;
assert.ok(view.$el.is('p'));
assert.ok(view.$el.has('a'));
var myView = new View;
assert.ok(myView.$el.is('p'));
assert.ok(myView.$el.has('a'));
});
QUnit.test('events passed in options', function(assert) {
@@ -439,52 +439,52 @@
}
});
var view = new View({
var myView = new View({
events: {
'click h1': 'increment'
}
});
view.$('h1').trigger('click').trigger('click');
myView.$('h1').trigger('click').trigger('click');
assert.equal(counter, 2);
});
QUnit.test('remove', function(assert) {
assert.expect(2);
var view = new Backbone.View;
var myView = new Backbone.View;
document.body.appendChild(view.el);
view.delegate('click', function() { assert.ok(false); });
view.listenTo(view, 'all x', function() { assert.ok(false); });
myView.delegate('click', function() { assert.ok(false); });
myView.listenTo(myView, 'all x', function() { assert.ok(false); });
assert.equal(view.remove(), view, '#remove returns the view instance');
view.$el.trigger('click');
view.trigger('x');
assert.equal(myView.remove(), myView, '#remove returns the view instance');
myView.$el.trigger('click');
myView.trigger('x');
// In IE8 and below, parentNode still exists but is not document.body.
assert.notEqual(view.el.parentNode, document.body);
assert.notEqual(myView.el.parentNode, document.body);
});
QUnit.test('setElement', function(assert) {
assert.expect(3);
var view = new Backbone.View({
var myView = new Backbone.View({
events: {
click: function() { assert.ok(false); }
}
});
view.events = {
myView.events = {
click: function() { assert.ok(true); }
};
var oldEl = view.el;
var $oldEl = view.$el;
var oldEl = myView.el;
var $oldEl = myView.$el;
view.setElement(document.createElement('div'));
myView.setElement(document.createElement('div'));
$oldEl.click();
view.$el.click();
myView.$el.click();
assert.notEqual(oldEl, view.el);
assert.notEqual($oldEl, view.$el);
assert.notEqual(oldEl, myView.el);
assert.notEqual($oldEl, myView.$el);
});
})();

View File

@@ -1,22 +0,0 @@
Copyright 2010-2016 Mathias Bynens <https://mathiasbynens.be/>
Based on JSLitmus.js, copyright Robert Kieffer <http://broofa.com/>
Modified by John-David Dalton <http://allyoucanleet.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.

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative
Copyright (c) 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative
Reporters & Editors
Permission is hereby granted, free of charge, to any person

View File

@@ -143,33 +143,23 @@
QUnit.test('uniq', function(assert) {
var list = [1, 2, 1, 3, 1, 4];
assert.deepEqual(_.uniq(list), [1, 2, 3, 4], 'can find the unique values of an unsorted array');
list = [1, 1, 1, 2, 2, 3];
assert.deepEqual(_.uniq(list, true), [1, 2, 3], 'can find the unique values of a sorted array faster');
list = [{name: 'moe'}, {name: 'curly'}, {name: 'larry'}, {name: 'curly'}];
var iterator = function(value) { return value.name; };
assert.deepEqual(_.map(_.uniq(list, false, iterator), iterator), ['moe', 'curly', 'larry'], 'can find the unique values of an array using a custom iterator');
list = [{name: 'Moe'}, {name: 'Curly'}, {name: 'Larry'}, {name: 'Curly'}];
var expected = [{name: 'Moe'}, {name: 'Curly'}, {name: 'Larry'}];
var iterator = function(stooge) { return stooge.name; };
assert.deepEqual(_.uniq(list, false, iterator), expected, 'uses the result of `iterator` for uniqueness comparisons (unsorted case)');
assert.deepEqual(_.uniq(list, iterator), expected, '`sorted` argument defaults to false when omitted');
assert.deepEqual(_.uniq(list, 'name'), expected, 'when `iterator` is a string, uses that key for comparisons (unsorted case)');
assert.deepEqual(_.map(_.uniq(list, iterator), iterator), ['moe', 'curly', 'larry'], 'can find the unique values of an array using a custom iterator without specifying whether array is sorted');
iterator = function(value) { return value + 1; };
list = [1, 2, 2, 3, 4, 4];
assert.deepEqual(_.uniq(list, true, iterator), [1, 2, 3, 4], 'iterator works with sorted array');
var kittens = [
{kitten: 'Celery', cuteness: 8},
{kitten: 'Juniper', cuteness: 10},
{kitten: 'Spottis', cuteness: 10}
];
var expected = [
{kitten: 'Celery', cuteness: 8},
{kitten: 'Juniper', cuteness: 10}
];
assert.deepEqual(_.uniq(kittens, true, 'cuteness'), expected, 'string iterator works with sorted array');
list = [{score: 8}, {score: 10}, {score: 10}];
expected = [{score: 8}, {score: 10}];
iterator = function(item) { return item.score; };
assert.deepEqual(_.uniq(list, true, iterator), expected, 'uses the result of `iterator` for uniqueness comparisons (sorted case)');
assert.deepEqual(_.uniq(list, true, 'score'), expected, 'when `iterator` is a string, uses that key for comparisons (sorted case)');
assert.deepEqual(_.uniq([{0: 1}, {0: 1}, {0: 1}, {0: 2}], 0), [{0: 1}, {0: 2}], 'can use falsey pluck like iterator');
var result = (function(){ return _.uniq(arguments); }(1, 2, 1, 3, 1, 4));
assert.deepEqual(result, [1, 2, 3, 4], 'works on an arguments object');
@@ -177,19 +167,17 @@
var a = {}, b = {}, c = {};
assert.deepEqual(_.uniq([a, b, a, b, c]), [a, b, c], 'works on values that can be tested for equivalency but not ordered');
assert.deepEqual(_.uniq(null), []);
assert.deepEqual(_.uniq(null), [], 'returns an empty array when `array` is not iterable');
var context = {};
list = [3];
_.uniq(list, function(value, index, array) {
assert.strictEqual(this, context);
assert.strictEqual(value, 3);
assert.strictEqual(index, 0);
assert.strictEqual(array, list);
assert.strictEqual(this, context, 'executes its iterator in the given context');
assert.strictEqual(value, 3, 'passes its iterator the value');
assert.strictEqual(index, 0, 'passes its iterator the index');
assert.strictEqual(array, list, 'passes its iterator the entire array');
}, context);
assert.deepEqual(_.uniq([{a: 1, b: 1}, {a: 1, b: 2}, {a: 1, b: 3}, {a: 2, b: 1}], 'a'), [{a: 1, b: 1}, {a: 2, b: 1}], 'can use pluck like iterator');
assert.deepEqual(_.uniq([{0: 1, b: 1}, {0: 1, b: 2}, {0: 1, b: 3}, {0: 2, b: 1}], 0), [{0: 1, b: 1}, {0: 2, b: 1}], 'can use falsey pluck like iterator');
});
QUnit.test('unique', function(assert) {
@@ -198,44 +186,54 @@
QUnit.test('intersection', function(assert) {
var stooges = ['moe', 'curly', 'larry'], leaders = ['moe', 'groucho'];
assert.deepEqual(_.intersection(stooges, leaders), ['moe'], 'can take the set intersection of two arrays');
assert.deepEqual(_.intersection(stooges, leaders), ['moe'], 'can find the set intersection of two arrays');
assert.deepEqual(_(stooges).intersection(leaders), ['moe'], 'can perform an OO-style intersection');
var result = (function(){ return _.intersection(arguments, leaders); }('moe', 'curly', 'larry'));
assert.deepEqual(result, ['moe'], 'works on an arguments object');
var theSixStooges = ['moe', 'moe', 'curly', 'curly', 'larry', 'larry'];
assert.deepEqual(_.intersection(theSixStooges, leaders), ['moe'], 'returns a duplicate-free array');
result = _.intersection([2, 4, 3, 1], [1, 2, 3]);
assert.deepEqual(result, [2, 3, 1], 'preserves order of first array');
assert.deepEqual(result, [2, 3, 1], 'preserves the order of the first array');
result = _.intersection(null, [1, 2, 3]);
assert.equal(Object.prototype.toString.call(result), '[object Array]', 'returns an empty array when passed null as first argument');
assert.equal(result.length, 0, 'returns an empty array when passed null as first argument');
assert.deepEqual(result, [], 'returns an empty array when passed null as the first argument');
result = _.intersection([1, 2, 3], null);
assert.equal(Object.prototype.toString.call(result), '[object Array]', 'returns an empty array when passed null as argument beyond the first');
assert.equal(result.length, 0, 'returns an empty array when passed null as argument beyond the first');
assert.deepEqual(result, [], 'returns an empty array when passed null as an argument beyond the first');
});
QUnit.test('union', function(assert) {
var result = _.union([1, 2, 3], [2, 30, 1], [1, 40]);
assert.deepEqual(result, [1, 2, 3, 30, 40], 'takes the union of a list of arrays');
assert.deepEqual(result, [1, 2, 3, 30, 40], 'can find the union of a list of arrays');
result = _([1, 2, 3]).union([2, 30, 1], [1, 40]);
assert.deepEqual(result, [1, 2, 3, 30, 40], 'can perform an OO-style union');
result = _.union([1, 2, 3], [2, 30, 1], [1, 40, [1]]);
assert.deepEqual(result, [1, 2, 3, 30, 40, [1]], 'takes the union of a list of nested arrays');
assert.deepEqual(result, [1, 2, 3, 30, 40, [1]], 'can find the union of a list of nested arrays');
var args = null;
(function(){ args = arguments; }(1, 2, 3));
result = _.union(args, [2, 30, 1], [1, 40]);
assert.deepEqual(result, [1, 2, 3, 30, 40], 'takes the union of a list of arrays');
result = _.union([10, 20], [1, 30, 10], [0, 40]);
assert.deepEqual(result, [10, 20, 1, 30, 0, 40], 'orders values by their first encounter');
result = _.union([1, 2, 3], 4);
assert.deepEqual(result, [1, 2, 3], 'restrict the union to arrays only');
result = (function(){ return _.union(arguments, [2, 30, 1], [1, 40]); }(1, 2, 3));
assert.deepEqual(result, [1, 2, 3, 30, 40], 'works on an arguments object');
assert.deepEqual(_.union([1, 2, 3], 4), [1, 2, 3], 'restricts the union to arrays only');
});
QUnit.test('difference', function(assert) {
var result = _.difference([1, 2, 3], [2, 30, 40]);
assert.deepEqual(result, [1, 3], 'takes the difference of two arrays');
assert.deepEqual(result, [1, 3], 'can find the difference of two arrays');
result = _([1, 2, 3]).difference([2, 30, 40]);
assert.deepEqual(result, [1, 3], 'can perform an OO-style difference');
result = _.difference([1, 2, 3, 4], [2, 30, 40], [1, 11, 111]);
assert.deepEqual(result, [3, 4], 'takes the difference of three arrays');
assert.deepEqual(result, [3, 4], 'can find the difference of three arrays');
result = _.difference([8, 9, 3, 1], [3, 8]);
assert.deepEqual(result, [9, 1], 'preserves the order of the first array');
result = (function(){ return _.difference(arguments, [2, 30, 40]); }(1, 2, 3));
assert.deepEqual(result, [1, 3], 'works on an arguments object');
result = _.difference([1, 2, 3], 1);
assert.deepEqual(result, [1, 2, 3], 'restrict the difference to arrays only');

View File

@@ -728,6 +728,11 @@
assert.ok(_.isFinite(0), '0 is finite');
assert.ok(_.isFinite(123), 'Ints are finite');
assert.ok(_.isFinite(-12.44), 'Floats are finite');
if (typeof Symbol === 'function') {
assert.ok(!_.isFinite(Symbol()), 'symbols are not numbers');
assert.ok(!_.isFinite(Symbol('description')), 'described symbols are not numbers');
assert.ok(!_.isFinite(Object(Symbol())), 'boxed symbols are not numbers');
}
});
QUnit.test('isNaN', function(assert) {

View File

@@ -1,6 +1,6 @@
// Underscore.js 1.8.3
// http://underscorejs.org
// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
// (c) 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
// Underscore may be freely distributed under the MIT license.
(function() {
@@ -93,7 +93,7 @@
return _.property(value);
};
// An external wrapper for the internal callback generator
// An external wrapper for the internal callback generator.
_.iteratee = function(value, context) {
return cb(value, context, Infinity);
};
@@ -504,7 +504,7 @@
for (var i = 0, length = getLength(input); i < length; i++) {
var value = input[i];
if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {
// Flatten current level of array or arguments object
// Flatten current level of array or arguments object.
if (shallow) {
var j = 0, len = value.length;
while (j < len) output[idx++] = value[j++];
@@ -592,7 +592,7 @@
});
// Complement of _.zip. Unzip accepts an array of arrays and groups
// each array's elements on shared indices
// each array's elements on shared indices.
_.unzip = function(array) {
var length = array && _.max(array, getLength).length || 0;
var result = Array(length);
@@ -622,7 +622,7 @@
return result;
};
// Generator function to create the findIndex and findLastIndex functions
// Generator function to create the findIndex and findLastIndex functions.
var createPredicateIndexFinder = function(dir) {
return function(array, predicate, context) {
predicate = cb(predicate, context);
@@ -635,7 +635,7 @@
};
};
// Returns the first index on an array-like that passes a predicate test
// Returns the first index on an array-like that passes a predicate test.
_.findIndex = createPredicateIndexFinder(1);
_.findLastIndex = createPredicateIndexFinder(-1);
@@ -652,7 +652,7 @@
return low;
};
// Generator function to create the indexOf and lastIndexOf functions
// Generator function to create the indexOf and lastIndexOf functions.
var createIndexFinder = function(dir, predicateFind, sortedIndex) {
return function(array, item, idx) {
var i = 0, length = getLength(array);
@@ -707,7 +707,7 @@
};
// Split an **array** into several arrays containing **count** or less elements
// of initial array
// of initial array.
_.chunk = function(array, count) {
if (count == null || count < 1) return [];
@@ -723,7 +723,7 @@
// ------------------
// Determines whether to execute a function as a constructor
// or a normal function with the provided arguments
// or a normal function with the provided arguments.
var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {
if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);
var self = baseCreate(sourceFunc.prototype);
@@ -959,7 +959,7 @@
};
// Retrieve the names of an object's own properties.
// Delegates to **ECMAScript 5**'s native `Object.keys`
// Delegates to **ECMAScript 5**'s native `Object.keys`.
_.keys = function(obj) {
if (!_.isObject(obj)) return [];
if (nativeKeys) return nativeKeys(obj);
@@ -991,8 +991,8 @@
return values;
};
// Returns the results of applying the iteratee to each element of the object
// In contrast to _.map it returns an object
// Returns the results of applying the iteratee to each element of the object.
// In contrast to _.map it returns an object.
_.mapObject = function(obj, iteratee, context) {
iteratee = cb(iteratee, context);
var keys = _.keys(obj),
@@ -1027,7 +1027,7 @@
};
// Return a sorted list of the function names available on the object.
// Aliased as `methods`
// Aliased as `methods`.
_.functions = _.methods = function(obj) {
var names = [];
for (var key in obj) {
@@ -1058,11 +1058,11 @@
// Extend a given object with all the properties in passed-in object(s).
_.extend = createAssigner(_.allKeys);
// Assigns a given object with all the own properties in the passed-in object(s)
// Assigns a given object with all the own properties in the passed-in object(s).
// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
_.extendOwn = _.assign = createAssigner(_.keys);
// Returns the first key on an object that passes a predicate test
// Returns the first key on an object that passes a predicate test.
_.findKey = function(obj, predicate, context) {
predicate = cb(predicate, context);
var keys = _.keys(obj), key;
@@ -1185,7 +1185,7 @@
return '' + a === '' + b;
case '[object Number]':
// `NaN`s are equivalent, but non-reflexive.
// Object(NaN) is equivalent to NaN
// Object(NaN) is equivalent to NaN.
if (+a !== +a) return +b !== +b;
// An `egal` comparison is performed for other numeric values.
return +a === 0 ? 1 / +a === 1 / b : +a === +b;
@@ -1311,7 +1311,7 @@
// Is a given object a finite number?
_.isFinite = function(obj) {
return isFinite(obj) && !isNaN(parseFloat(obj));
return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));
};
// Is the given value `NaN`?
@@ -1420,7 +1420,7 @@
var escaper = function(match) {
return map[match];
};
// Regexes for identifying a key that needs to be escaped
// Regexes for identifying a key that needs to be escaped.
var source = '(?:' + _.keys(map).join('|') + ')';
var testRegexp = RegExp(source);
var replaceRegexp = RegExp(source, 'g');