diff --git a/README.md b/README.md
index 617811ec7..867871c3d 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-# lodash v4.7.0
+# lodash v4.8.0
-The [lodash](https://lodash.com/) library exported as [Node.js](https://nodejs.org/) modules.
+The [Lodash](https://lodash.com/) library exported as [Node.js](https://nodejs.org/) modules.
## Installation
@@ -28,11 +28,11 @@ var chunk = require('lodash/chunk');
var extend = require('lodash/fp/extend');
```
-See the [package source](https://github.com/lodash/lodash/tree/4.7.0-npm) for more details.
+See the [package source](https://github.com/lodash/lodash/tree/4.8.0-npm) for more details.
**Note:**
Don’t assign values to the [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL.
-Install [n_](https://www.npmjs.com/package/n_) for a REPL that includes lodash by default.
+Install [n_](https://www.npmjs.com/package/n_) for a REPL that includes `lodash` by default.
## Support
diff --git a/_apply.js b/_apply.js
index 22d4f8a70..d000f0460 100644
--- a/_apply.js
+++ b/_apply.js
@@ -5,7 +5,7 @@
* @private
* @param {Function} func The function to invoke.
* @param {*} thisArg The `this` binding of `func`.
- * @param {...*} args The arguments to invoke `func` with.
+ * @param {Array} args The arguments to invoke `func` with.
* @returns {*} Returns the result of `func`.
*/
function apply(func, thisArg, args) {
diff --git a/_baseMatches.js b/_baseMatches.js
index 56c72e6ca..ba9012f94 100644
--- a/_baseMatches.js
+++ b/_baseMatches.js
@@ -1,5 +1,6 @@
var baseIsMatch = require('./_baseIsMatch'),
- getMatchData = require('./_getMatchData');
+ getMatchData = require('./_getMatchData'),
+ matchesStrictComparable = require('./_matchesStrictComparable');
/**
* The base implementation of `_.matches` which doesn't clone `source`.
@@ -11,16 +12,7 @@ var baseIsMatch = require('./_baseIsMatch'),
function baseMatches(source) {
var matchData = getMatchData(source);
if (matchData.length == 1 && matchData[0][2]) {
- var key = matchData[0][0],
- value = matchData[0][1];
-
- return function(object) {
- if (object == null) {
- return false;
- }
- return object[key] === value &&
- (value !== undefined || (key in Object(object)));
- };
+ return matchesStrictComparable(matchData[0][0], matchData[0][1]);
}
return function(object) {
return object === source || baseIsMatch(object, source, matchData);
diff --git a/_baseMatchesProperty.js b/_baseMatchesProperty.js
index 256ad65f3..88afd67e1 100644
--- a/_baseMatchesProperty.js
+++ b/_baseMatchesProperty.js
@@ -1,6 +1,9 @@
var baseIsEqual = require('./_baseIsEqual'),
get = require('./get'),
- hasIn = require('./hasIn');
+ hasIn = require('./hasIn'),
+ isKey = require('./_isKey'),
+ isStrictComparable = require('./_isStrictComparable'),
+ matchesStrictComparable = require('./_matchesStrictComparable');
/** Used to compose bitmasks for comparison styles. */
var UNORDERED_COMPARE_FLAG = 1,
@@ -15,6 +18,9 @@ var UNORDERED_COMPARE_FLAG = 1,
* @returns {Function} Returns the new function.
*/
function baseMatchesProperty(path, srcValue) {
+ if (isKey(path) && isStrictComparable(srcValue)) {
+ return matchesStrictComparable(path, srcValue);
+ }
return function(object) {
var objValue = get(object, path);
return (objValue === undefined && objValue === srcValue)
diff --git a/_createCtorWrapper.js b/_createCtorWrapper.js
index a0a7f83d7..17e1bd831 100644
--- a/_createCtorWrapper.js
+++ b/_createCtorWrapper.js
@@ -11,8 +11,8 @@ var baseCreate = require('./_baseCreate'),
*/
function createCtorWrapper(Ctor) {
return function() {
- // Use a `switch` statement to work with class constructors.
- // See http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
+ // Use a `switch` statement to work with class constructors. See
+ // http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
// for more details.
var args = arguments;
switch (args.length) {
diff --git a/_createOver.js b/_createOver.js
index f0a99c354..a9cf1b099 100644
--- a/_createOver.js
+++ b/_createOver.js
@@ -1,6 +1,5 @@
var apply = require('./_apply'),
arrayMap = require('./_arrayMap'),
- baseFlatten = require('./_baseFlatten'),
baseIteratee = require('./_baseIteratee'),
rest = require('./rest');
@@ -13,7 +12,7 @@ var apply = require('./_apply'),
*/
function createOver(arrayFunc) {
return rest(function(iteratees) {
- iteratees = arrayMap(baseFlatten(iteratees, 1), baseIteratee);
+ iteratees = arrayMap(iteratees, baseIteratee);
return rest(function(args) {
var thisArg = this;
return arrayFunc(iteratees, function(iteratee) {
diff --git a/_createPartialWrapper.js b/_createPartialWrapper.js
index 2f9d7a1ae..cc4314ef9 100644
--- a/_createPartialWrapper.js
+++ b/_createPartialWrapper.js
@@ -6,9 +6,8 @@ var apply = require('./_apply'),
var BIND_FLAG = 1;
/**
- * Creates a function that wraps `func` to invoke it with the optional `this`
- * binding of `thisArg` and the `partials` prepended to those provided to
- * the wrapper.
+ * Creates a function that wraps `func` to invoke it with the `this` binding
+ * of `thisArg` and `partials` prepended to the arguments it receives.
*
* @private
* @param {Function} func The function to wrap.
diff --git a/_equalByTag.js b/_equalByTag.js
index 50dc9b987..b3e37bd8a 100644
--- a/_equalByTag.js
+++ b/_equalByTag.js
@@ -78,7 +78,8 @@ function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
case regexpTag:
case stringTag:
// Coerce regexes to strings and treat strings, primitives and objects,
- // as equal. See https://es5.github.io/#x15.10.6.4 for more details.
+ // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring
+ // for more details.
return object == (other + '');
case mapTag:
diff --git a/_getTag.js b/_getTag.js
index 2528133e8..485145438 100644
--- a/_getTag.js
+++ b/_getTag.js
@@ -2,7 +2,8 @@ var DataView = require('./_DataView'),
Map = require('./_Map'),
Promise = require('./_Promise'),
Set = require('./_Set'),
- WeakMap = require('./_WeakMap');
+ WeakMap = require('./_WeakMap'),
+ toSource = require('./_toSource');
/** `Object#toString` result references. */
var mapTag = '[object Map]',
@@ -16,21 +17,19 @@ var dataViewTag = '[object DataView]';
/** Used for built-in method references. */
var objectProto = Object.prototype;
-/** Used to resolve the decompiled source of functions. */
-var funcToString = Function.prototype.toString;
-
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
/** Used to detect maps, sets, and weakmaps. */
-var dataViewCtorString = DataView ? (DataView + '') : '',
- mapCtorString = Map ? funcToString.call(Map) : '',
- promiseCtorString = Promise ? funcToString.call(Promise) : '',
- setCtorString = Set ? funcToString.call(Set) : '',
- weakMapCtorString = WeakMap ? funcToString.call(WeakMap) : '';
+var dataViewCtorString = toSource(DataView),
+ mapCtorString = toSource(Map),
+ promiseCtorString = toSource(Promise),
+ setCtorString = toSource(Set),
+ weakMapCtorString = toSource(WeakMap);
/**
* Gets the `toStringTag` of `value`.
@@ -53,7 +52,7 @@ if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
getTag = function(value) {
var result = objectToString.call(value),
Ctor = result == objectTag ? value.constructor : null,
- ctorString = typeof Ctor == 'function' ? funcToString.call(Ctor) : '';
+ ctorString = toSource(Ctor);
if (ctorString) {
switch (ctorString) {
diff --git a/_hasPath.js b/_hasPath.js
index 3e7772245..eea7e72ab 100644
--- a/_hasPath.js
+++ b/_hasPath.js
@@ -16,29 +16,25 @@ var baseCastPath = require('./_baseCastPath'),
* @returns {boolean} Returns `true` if `path` exists, else `false`.
*/
function hasPath(object, path, hasFunc) {
- if (object == null) {
- return false;
- }
- var result = hasFunc(object, path);
- if (!result && !isKey(path)) {
- path = baseCastPath(path);
+ path = isKey(path, object) ? [path] : baseCastPath(path);
- var index = -1,
- length = path.length;
+ var result,
+ index = -1,
+ length = path.length;
- while (object != null && ++index < length) {
- var key = path[index];
- if (!(result = hasFunc(object, key))) {
- break;
- }
- object = object[key];
+ while (++index < length) {
+ var key = path[index];
+ if (!(result = object != null && hasFunc(object, key))) {
+ break;
}
+ object = object[key];
}
- var length = object ? object.length : undefined;
- return result || (
- !!length && isLength(length) && isIndex(path, length) &&
- (isArray(object) || isString(object) || isArguments(object))
- );
+ if (result) {
+ return result;
+ }
+ var length = object ? object.length : 0;
+ return !!length && isLength(length) && isIndex(key, length) &&
+ (isArray(object) || isString(object) || isArguments(object));
}
module.exports = hasPath;
diff --git a/_matchesStrictComparable.js b/_matchesStrictComparable.js
new file mode 100644
index 000000000..70375e0e5
--- /dev/null
+++ b/_matchesStrictComparable.js
@@ -0,0 +1,20 @@
+/**
+ * A specialized version of `matchesProperty` for source values suitable
+ * for strict equality comparisons, i.e. `===`.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @param {*} srcValue The value to match.
+ * @returns {Function} Returns the new function.
+ */
+function matchesStrictComparable(key, srcValue) {
+ return function(object) {
+ if (object == null) {
+ return false;
+ }
+ return object[key] === srcValue &&
+ (srcValue !== undefined || (key in Object(object)));
+ };
+}
+
+module.exports = matchesStrictComparable;
diff --git a/_toSource.js b/_toSource.js
new file mode 100644
index 000000000..80aca2ef5
--- /dev/null
+++ b/_toSource.js
@@ -0,0 +1,23 @@
+var isFunction = require('./isFunction'),
+ toString = require('./toString');
+
+/** Used to resolve the decompiled source of functions. */
+var funcToString = Function.prototype.toString;
+
+/**
+ * Converts `func` to its source code.
+ *
+ * @private
+ * @param {Function} func The function to process.
+ * @returns {string} Returns the source code.
+ */
+function toSource(func) {
+ if (isFunction(func)) {
+ try {
+ return funcToString.call(func);
+ } catch (e) {}
+ }
+ return toString(func);
+}
+
+module.exports = toSource;
diff --git a/ary.js b/ary.js
index 94a8846bb..e901f1b9d 100644
--- a/ary.js
+++ b/ary.js
@@ -4,8 +4,8 @@ var createWrapper = require('./_createWrapper');
var ARY_FLAG = 128;
/**
- * Creates a function that accepts up to `n` arguments, ignoring any
- * additional arguments.
+ * Creates a function that invokes `func`, with up to `n` arguments,
+ * ignoring any additional arguments.
*
* @static
* @memberOf _
diff --git a/bind.js b/bind.js
index c96cbaf96..a41b94619 100644
--- a/bind.js
+++ b/bind.js
@@ -9,8 +9,7 @@ var BIND_FLAG = 1,
/**
* Creates a function that invokes `func` with the `this` binding of `thisArg`
- * and prepends any additional `_.bind` arguments to those provided to the
- * bound function.
+ * and `partials` prepended to the arguments it receives.
*
* The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
* may be used as a placeholder for partially applied arguments.
diff --git a/bindKey.js b/bindKey.js
index 1527bd535..364dd6981 100644
--- a/bindKey.js
+++ b/bindKey.js
@@ -9,8 +9,8 @@ var BIND_FLAG = 1,
PARTIAL_FLAG = 32;
/**
- * Creates a function that invokes the method at `object[key]` and prepends
- * any additional `_.bindKey` arguments to those provided to the bound function.
+ * Creates a function that invokes the method at `object[key]` with `partials`
+ * prepended to the arguments it receives.
*
* This method differs from `_.bind` by allowing bound functions to reference
* methods that may be redefined or don't yet exist. See
diff --git a/chunk.js b/chunk.js
index cb2763096..f20947437 100644
--- a/chunk.js
+++ b/chunk.js
@@ -1,4 +1,5 @@
var baseSlice = require('./_baseSlice'),
+ isIterateeCall = require('./_isIterateeCall'),
toInteger = require('./toInteger');
/* Built-in method references for those with the same name as other `lodash` methods. */
@@ -15,7 +16,8 @@ var nativeCeil = Math.ceil,
* @since 3.0.0
* @category Array
* @param {Array} array The array to process.
- * @param {number} [size=0] The length of each chunk.
+ * @param {number} [size=1] The length of each chunk
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
* @returns {Array} Returns the new array containing chunks.
* @example
*
@@ -25,9 +27,12 @@ var nativeCeil = Math.ceil,
* _.chunk(['a', 'b', 'c', 'd'], 3);
* // => [['a', 'b', 'c'], ['d']]
*/
-function chunk(array, size) {
- size = nativeMax(toInteger(size), 0);
-
+function chunk(array, size, guard) {
+ if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
+ size = 1;
+ } else {
+ size = nativeMax(toInteger(size), 0);
+ }
var length = array ? array.length : 0;
if (!length || size < 1) {
return [];
diff --git a/core.js b/core.js
index 91cb9cb86..631d5e038 100644
--- a/core.js
+++ b/core.js
@@ -1,6 +1,6 @@
/**
* @license
- * lodash 4.7.0 (Custom Build)
+ * lodash 4.8.0 (Custom Build)
* Build: `lodash core -o ./dist/lodash.core.js`
* Copyright jQuery Foundation and other contributors
* Released under MIT license
@@ -13,7 +13,7 @@
var undefined;
/** Used as the semantic version number. */
- var VERSION = '4.7.0';
+ var VERSION = '4.8.0';
/** Used as the `TypeError` message for "Functions" methods. */
var FUNC_ERROR_TEXT = 'Expected a function';
@@ -357,7 +357,8 @@
var idCounter = 0;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
@@ -1140,8 +1141,8 @@
*/
function createCtorWrapper(Ctor) {
return function() {
- // Use a `switch` statement to work with class constructors.
- // See http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
+ // Use a `switch` statement to work with class constructors. See
+ // http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
// for more details.
var args = arguments;
var thisBinding = baseCreate(Ctor.prototype),
@@ -1154,9 +1155,8 @@
}
/**
- * Creates a function that wraps `func` to invoke it with the optional `this`
- * binding of `thisArg` and the `partials` prepended to those provided to
- * the wrapper.
+ * Creates a function that wraps `func` to invoke it with the `this` binding
+ * of `thisArg` and `partials` prepended to the arguments it receives.
*
* @private
* @param {Function} func The function to wrap.
@@ -1290,7 +1290,8 @@
case regexpTag:
case stringTag:
// Coerce regexes to strings and treat strings, primitives and objects,
- // as equal. See https://es5.github.io/#x15.10.6.4 for more details.
+ // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring
+ // for more details.
return object == (other + '');
}
@@ -1905,7 +1906,7 @@
}
/**
- * Creates an array of values by running each element in `collection` through
+ * Creates an array of values by running each element in `collection` thru
* `iteratee`. The iteratee is invoked with three arguments:
* (value, index|key, collection).
*
@@ -1913,10 +1914,10 @@
* `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
*
* The guarded methods are:
- * `ary`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, `fill`,
- * `invert`, `parseInt`, `random`, `range`, `rangeRight`, `slice`, `some`,
- * `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimEnd`, `trimStart`,
- * and `words`
+ * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
+ * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
+ * `sampleSize`, `slice`, `some`, `sortBy`, `take`, `takeRight`, `template`,
+ * `trim`, `trimEnd`, `trimStart`, and `words`
*
* @static
* @memberOf _
@@ -1953,7 +1954,7 @@
/**
* Reduces `collection` to a value which is the accumulated result of running
- * each element in `collection` through `iteratee`, where each successive
+ * each element in `collection` thru `iteratee`, where each successive
* invocation is supplied the return value of the previous. If `accumulator`
* is not given the first element of `collection` is used as the initial
* value. The iteratee is invoked with four arguments:
@@ -2064,7 +2065,7 @@
/**
* Creates an array of elements, sorted in ascending order by the results of
- * running each element in a collection through each iteratee. This method
+ * running each element in a collection thru each iteratee. This method
* performs a stable sort, that is, it preserves the original sort order of
* equal elements. The iteratees are invoked with one argument: (value).
*
@@ -2146,8 +2147,7 @@
/**
* Creates a function that invokes `func` with the `this` binding of `thisArg`
- * and prepends any additional `_.bind` arguments to those provided to the
- * bound function.
+ * and `partials` prepended to the arguments it receives.
*
* The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
* may be used as a placeholder for partially applied arguments.
@@ -2790,8 +2790,9 @@
}
/**
- * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
- * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
* @memberOf _
@@ -2849,9 +2850,10 @@
/**
* Checks if `value` is `NaN`.
*
- * **Note:** This method is not the same as
- * [`isNaN`](https://es5.github.io/#x15.1.2.4) which returns `true` for
- * `undefined` and other non-numeric values.
+ * **Note:** This method is based on
+ * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
+ * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
+ * `undefined` and other non-number values.
*
* @static
* @memberOf _
diff --git a/core.min.js b/core.min.js
index 11cdcffdc..26ce62b65 100644
--- a/core.min.js
+++ b/core.min.js
@@ -1,6 +1,6 @@
/**
* @license
- * lodash 4.7.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
+ * lodash 4.8.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){return n.push.apply(n,t),n}function t(n,t,r){for(var e=-1,u=n.length;++ee&&!c||!i||u&&!f&&a||o&&a){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 Q(n)?n.length?N(n):[]:cn(n)},a.values=cn,a.extend=Ln,an(a,a),a.clone=function(n){return Y(n)?Un(n)?N(n):F(n,un(n)):n},a.escape=function(n){return(n=en(n))&&hn.test(n)?n.replace(sn,i):n},a.every=function(n,t,r){return t=r?ln:t,v(n,m(t))},a.find=J,a.forEach=M,a.has=function(n,t){return null!=n&&En.call(n,t);
},a.head=G,a.identity=fn,a.indexOf=function(n,t,r){var e=n?n.length:0;r=typeof r=="number"?0>r?$n(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++r 1) {
+ if (forceCurry || (config.curry && aryKey > 1)) {
+ forceCurry && console.log(forceCurry, name);
result = curry(result, aryKey);
}
return false;
@@ -293,24 +402,26 @@ function baseConvert(util, name, func, options) {
result || (result = wrapped);
if (result == func) {
- result = function() {
+ result = forceCurry ? curry(result, 1) : function() {
return func.apply(this, arguments);
};
}
- result.convert = convertMethod;
+ result.convert = createConverter(name, func);
if (mapping.placeholder[name]) {
setPlaceholder = true;
result.placeholder = func.placeholder = placeholder;
}
return result;
- };
+ }
+
+ /*--------------------------------------------------------------------------*/
if (!isObj) {
return wrap(name, func);
}
var _ = func;
- // Iterate over methods for the current ary cap.
+ // Convert methods by ary cap.
var pairs = [];
each(aryMethodKeys, function(aryKey) {
each(mapping.aryMethod[aryKey], function(key) {
@@ -321,6 +432,21 @@ function baseConvert(util, name, func, options) {
});
});
+ // Convert remaining methods.
+ each(keys(_), function(key) {
+ var func = _[key];
+ if (typeof func == 'function') {
+ var length = pairs.length;
+ while (length--) {
+ if (pairs[length][0] == key) {
+ return;
+ }
+ }
+ func.convert = createConverter(key, func);
+ pairs.push([key, func]);
+ }
+ });
+
// Assign to `_` leaving `_.prototype` unchanged to allow chaining.
each(pairs, function(pair) {
_[pair[0]] = pair[1];
@@ -330,7 +456,7 @@ function baseConvert(util, name, func, options) {
if (setPlaceholder) {
_.placeholder = placeholder;
}
- // Reassign aliases.
+ // Assign aliases.
each(keys(_), function(key) {
each(mapping.realToAlias[key] || [], function(alias) {
_[alias] = _[key];
diff --git a/fp/_convertBrowser.js b/fp/_convertBrowser.js
index fbd217485..1874a5423 100644
--- a/fp/_convertBrowser.js
+++ b/fp/_convertBrowser.js
@@ -1,9 +1,10 @@
var baseConvert = require('./_baseConvert');
/**
- * Converts `lodash` to an immutable auto-curried iteratee-first data-last version.
+ * Converts `lodash` to an immutable auto-curried iteratee-first data-last
+ * version with conversion `options` applied.
*
- * @param {Function} lodash The lodash function.
+ * @param {Function} lodash The lodash function to convert.
* @param {Object} [options] The options object. See `baseConvert` for more details.
* @returns {Function} Returns the converted `lodash`.
*/
diff --git a/fp/_falseOptions.js b/fp/_falseOptions.js
new file mode 100644
index 000000000..8789f50ab
--- /dev/null
+++ b/fp/_falseOptions.js
@@ -0,0 +1,7 @@
+module.exports = {
+ 'cap': false,
+ 'curry': false,
+ 'fixed': false,
+ 'immutable': false,
+ 'rearg': false
+});
diff --git a/fp/_mapping.js b/fp/_mapping.js
index 584ca2e78..e897d751d 100644
--- a/fp/_mapping.js
+++ b/fp/_mapping.js
@@ -52,9 +52,10 @@ exports.aliasToReal = {
exports.aryMethod = {
'1': [
'attempt', 'castArray', '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'
+ 'flow', 'flowRight', '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', 'bindAll',
@@ -164,6 +165,10 @@ exports.methodRearg = {
exports.methodSpread = {
'invokeArgs': 2,
'invokeArgsMap': 2,
+ 'over': 0,
+ 'overArgs': 1,
+ 'overEvery': 0,
+ 'overSome': 0,
'partial': 1,
'partialRight': 1,
'without': 1
@@ -244,7 +249,17 @@ exports.remap = {
'trimCharsStart': 'trimStart'
};
-/** Used to track methods that skip `_.rearg`. */
+/** Used to track methods that skip fixing their arity. */
+exports.skipFixed = {
+ 'castArray': true,
+ 'flow': true,
+ 'flowRight': true,
+ 'iteratee': true,
+ 'mixin': true,
+ 'runInContext': true
+};
+
+/** Used to track methods that skip rearranging arguments. */
exports.skipRearg = {
'add': true,
'assign': true,
@@ -263,6 +278,7 @@ exports.skipRearg = {
'matchesProperty': true,
'merge': true,
'multiply': true,
+ 'overArgs': true,
'partial': true,
'partialRight': true,
'random': true,
diff --git a/fp/add.js b/fp/add.js
index c51b8fa6a..816eeece3 100644
--- a/fp/add.js
+++ b/fp/add.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('add', require('../add'));
+var convert = require('./convert'),
+ func = convert('add', require('../add'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/after.js b/fp/after.js
index 83691b7a5..21a0167ab 100644
--- a/fp/after.js
+++ b/fp/after.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('after', require('../after'));
+var convert = require('./convert'),
+ func = convert('after', require('../after'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/ary.js b/fp/ary.js
index 0f75d18a3..8edf18778 100644
--- a/fp/ary.js
+++ b/fp/ary.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('ary', require('../ary'));
+var convert = require('./convert'),
+ func = convert('ary', require('../ary'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/assign.js b/fp/assign.js
index ad02bcb84..23f47af17 100644
--- a/fp/assign.js
+++ b/fp/assign.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('assign', require('../assign'));
+var convert = require('./convert'),
+ func = convert('assign', require('../assign'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/assignIn.js b/fp/assignIn.js
index 1ed4f0d7e..6e7c65fad 100644
--- a/fp/assignIn.js
+++ b/fp/assignIn.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('assignIn', require('../assignIn'));
+var convert = require('./convert'),
+ func = convert('assignIn', require('../assignIn'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/assignInWith.js b/fp/assignInWith.js
index 882145d91..acb592367 100644
--- a/fp/assignInWith.js
+++ b/fp/assignInWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('assignInWith', require('../assignInWith'));
+var convert = require('./convert'),
+ func = convert('assignInWith', require('../assignInWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/assignWith.js b/fp/assignWith.js
index 1ff052782..eb925212d 100644
--- a/fp/assignWith.js
+++ b/fp/assignWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('assignWith', require('../assignWith'));
+var convert = require('./convert'),
+ func = convert('assignWith', require('../assignWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/at.js b/fp/at.js
index 5da35250e..cc39d257c 100644
--- a/fp/at.js
+++ b/fp/at.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('at', require('../at'));
+var convert = require('./convert'),
+ func = convert('at', require('../at'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/attempt.js b/fp/attempt.js
index d8a3be523..26ca42ea0 100644
--- a/fp/attempt.js
+++ b/fp/attempt.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('attempt', require('../attempt'));
+var convert = require('./convert'),
+ func = convert('attempt', require('../attempt'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/before.js b/fp/before.js
index f2954a62e..7a2de65d2 100644
--- a/fp/before.js
+++ b/fp/before.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('before', require('../before'));
+var convert = require('./convert'),
+ func = convert('before', require('../before'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/bind.js b/fp/bind.js
index e054a486d..5cbe4f302 100644
--- a/fp/bind.js
+++ b/fp/bind.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('bind', require('../bind'));
+var convert = require('./convert'),
+ func = convert('bind', require('../bind'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/bindAll.js b/fp/bindAll.js
index 891e4b552..6b4a4a0f2 100644
--- a/fp/bindAll.js
+++ b/fp/bindAll.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('bindAll', require('../bindAll'));
+var convert = require('./convert'),
+ func = convert('bindAll', require('../bindAll'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/bindKey.js b/fp/bindKey.js
index 0b588c7a3..6a46c6b19 100644
--- a/fp/bindKey.js
+++ b/fp/bindKey.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('bindKey', require('../bindKey'));
+var convert = require('./convert'),
+ func = convert('bindKey', require('../bindKey'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/camelCase.js b/fp/camelCase.js
index 328041ec3..87b77b493 100644
--- a/fp/camelCase.js
+++ b/fp/camelCase.js
@@ -1 +1,5 @@
-module.exports = require('../camelCase');
+var convert = require('./convert'),
+ func = convert('camelCase', require('../camelCase'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/capitalize.js b/fp/capitalize.js
index 186e6d981..cac74e14f 100644
--- a/fp/capitalize.js
+++ b/fp/capitalize.js
@@ -1 +1,5 @@
-module.exports = require('../capitalize');
+var convert = require('./convert'),
+ func = convert('capitalize', require('../capitalize'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/castArray.js b/fp/castArray.js
index 2a75bb97f..8681c099e 100644
--- a/fp/castArray.js
+++ b/fp/castArray.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('castArray', require('../castArray'));
+var convert = require('./convert'),
+ func = convert('castArray', require('../castArray'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/ceil.js b/fp/ceil.js
index 7c3774bb5..f416b7294 100644
--- a/fp/ceil.js
+++ b/fp/ceil.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('ceil', require('../ceil'));
+var convert = require('./convert'),
+ func = convert('ceil', require('../ceil'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/chain.js b/fp/chain.js
index 2f139cc00..604fe398b 100644
--- a/fp/chain.js
+++ b/fp/chain.js
@@ -1 +1,5 @@
-module.exports = require('../chain');
+var convert = require('./convert'),
+ func = convert('chain', require('../chain'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/chunk.js b/fp/chunk.js
index 9d32b8a31..871ab0858 100644
--- a/fp/chunk.js
+++ b/fp/chunk.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('chunk', require('../chunk'));
+var convert = require('./convert'),
+ func = convert('chunk', require('../chunk'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/clamp.js b/fp/clamp.js
index 8ec3d9de5..3b06c01ce 100644
--- a/fp/clamp.js
+++ b/fp/clamp.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('clamp', require('../clamp'));
+var convert = require('./convert'),
+ func = convert('clamp', require('../clamp'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/clone.js b/fp/clone.js
index afd2c156e..cadb59c91 100644
--- a/fp/clone.js
+++ b/fp/clone.js
@@ -1 +1,5 @@
-module.exports = require('../clone');
+var convert = require('./convert'),
+ func = convert('clone', require('../clone'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/cloneDeep.js b/fp/cloneDeep.js
index a17a6f801..a6107aac9 100644
--- a/fp/cloneDeep.js
+++ b/fp/cloneDeep.js
@@ -1 +1,5 @@
-module.exports = require('../cloneDeep');
+var convert = require('./convert'),
+ func = convert('cloneDeep', require('../cloneDeep'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/cloneDeepWith.js b/fp/cloneDeepWith.js
index 01c7fefdd..6f01e44a3 100644
--- a/fp/cloneDeepWith.js
+++ b/fp/cloneDeepWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('cloneDeepWith', require('../cloneDeepWith'));
+var convert = require('./convert'),
+ func = convert('cloneDeepWith', require('../cloneDeepWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/cloneWith.js b/fp/cloneWith.js
index 9e9d7838e..aa8857810 100644
--- a/fp/cloneWith.js
+++ b/fp/cloneWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('cloneWith', require('../cloneWith'));
+var convert = require('./convert'),
+ func = convert('cloneWith', require('../cloneWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/commit.js b/fp/commit.js
index 04e9eb943..130a894f8 100644
--- a/fp/commit.js
+++ b/fp/commit.js
@@ -1 +1,5 @@
-module.exports = require('../commit');
+var convert = require('./convert'),
+ func = convert('commit', require('../commit'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/compact.js b/fp/compact.js
index b2ed9c7d8..ce8f7a1ac 100644
--- a/fp/compact.js
+++ b/fp/compact.js
@@ -1 +1,5 @@
-module.exports = require('../compact');
+var convert = require('./convert'),
+ func = convert('compact', require('../compact'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/concat.js b/fp/concat.js
index c13a92abd..e59346ad9 100644
--- a/fp/concat.js
+++ b/fp/concat.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('concat', require('../concat'));
+var convert = require('./convert'),
+ func = convert('concat', require('../concat'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/cond.js b/fp/cond.js
index a150a89eb..6a0120efd 100644
--- a/fp/cond.js
+++ b/fp/cond.js
@@ -1 +1,5 @@
-module.exports = require('../cond');
+var convert = require('./convert'),
+ func = convert('cond', require('../cond'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/conforms.js b/fp/conforms.js
index 387dde184..e193cd6c1 100644
--- a/fp/conforms.js
+++ b/fp/conforms.js
@@ -1 +1,5 @@
-module.exports = require('../conforms');
+var convert = require('./convert'),
+ func = convert('conforms', require('../conforms'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/constant.js b/fp/constant.js
index 3bcd27686..9e406fc09 100644
--- a/fp/constant.js
+++ b/fp/constant.js
@@ -1 +1,5 @@
-module.exports = require('../constant');
+var convert = require('./convert'),
+ func = convert('constant', require('../constant'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/convert.js b/fp/convert.js
index a1d266fa6..4795dc424 100644
--- a/fp/convert.js
+++ b/fp/convert.js
@@ -3,7 +3,8 @@ var baseConvert = require('./_baseConvert'),
/**
* Converts `func` of `name` to an immutable auto-curried iteratee-first data-last
- * version. If `name` is an object its methods will be converted.
+ * version with conversion `options` applied. If `name` is an object its methods
+ * will be converted.
*
* @param {string} name The name of the function to wrap.
* @param {Function} [func] The function to wrap.
diff --git a/fp/countBy.js b/fp/countBy.js
index ee4b94285..dfa464326 100644
--- a/fp/countBy.js
+++ b/fp/countBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('countBy', require('../countBy'));
+var convert = require('./convert'),
+ func = convert('countBy', require('../countBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/create.js b/fp/create.js
index bdad77148..752025fb8 100644
--- a/fp/create.js
+++ b/fp/create.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('create', require('../create'));
+var convert = require('./convert'),
+ func = convert('create', require('../create'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/curry.js b/fp/curry.js
index d64722c13..b0b4168c5 100644
--- a/fp/curry.js
+++ b/fp/curry.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('curry', require('../curry'));
+var convert = require('./convert'),
+ func = convert('curry', require('../curry'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/curryN.js b/fp/curryN.js
index f33f7fc3f..2ae7d00a6 100644
--- a/fp/curryN.js
+++ b/fp/curryN.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('curryN', require('../curry'));
+var convert = require('./convert'),
+ func = convert('curryN', require('../curry'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/curryRight.js b/fp/curryRight.js
index 2e0470912..cb619eb5d 100644
--- a/fp/curryRight.js
+++ b/fp/curryRight.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('curryRight', require('../curryRight'));
+var convert = require('./convert'),
+ func = convert('curryRight', require('../curryRight'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/curryRightN.js b/fp/curryRightN.js
index 510e4e403..2495afc89 100644
--- a/fp/curryRightN.js
+++ b/fp/curryRightN.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('curryRightN', require('../curryRight'));
+var convert = require('./convert'),
+ func = convert('curryRightN', require('../curryRight'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/debounce.js b/fp/debounce.js
index a6b0407a2..26122293a 100644
--- a/fp/debounce.js
+++ b/fp/debounce.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('debounce', require('../debounce'));
+var convert = require('./convert'),
+ func = convert('debounce', require('../debounce'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/deburr.js b/fp/deburr.js
index f8e1a4939..96463ab88 100644
--- a/fp/deburr.js
+++ b/fp/deburr.js
@@ -1 +1,5 @@
-module.exports = require('../deburr');
+var convert = require('./convert'),
+ func = convert('deburr', require('../deburr'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/defaults.js b/fp/defaults.js
index 7c3b3ab96..e1a8e6e7d 100644
--- a/fp/defaults.js
+++ b/fp/defaults.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('defaults', require('../defaults'));
+var convert = require('./convert'),
+ func = convert('defaults', require('../defaults'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/defaultsDeep.js b/fp/defaultsDeep.js
index c7480e217..1f172ff94 100644
--- a/fp/defaultsDeep.js
+++ b/fp/defaultsDeep.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('defaultsDeep', require('../defaultsDeep'));
+var convert = require('./convert'),
+ func = convert('defaultsDeep', require('../defaultsDeep'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/defer.js b/fp/defer.js
index 4126727cd..ec7990fe2 100644
--- a/fp/defer.js
+++ b/fp/defer.js
@@ -1 +1,5 @@
-module.exports = require('../defer');
+var convert = require('./convert'),
+ func = convert('defer', require('../defer'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/delay.js b/fp/delay.js
index cd3b1c329..556dbd568 100644
--- a/fp/delay.js
+++ b/fp/delay.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('delay', require('../delay'));
+var convert = require('./convert'),
+ func = convert('delay', require('../delay'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/difference.js b/fp/difference.js
index aea9ab8d1..2d0376542 100644
--- a/fp/difference.js
+++ b/fp/difference.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('difference', require('../difference'));
+var convert = require('./convert'),
+ func = convert('difference', require('../difference'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/differenceBy.js b/fp/differenceBy.js
index ab65554af..2f914910a 100644
--- a/fp/differenceBy.js
+++ b/fp/differenceBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('differenceBy', require('../differenceBy'));
+var convert = require('./convert'),
+ func = convert('differenceBy', require('../differenceBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/differenceWith.js b/fp/differenceWith.js
index f932a2e47..bcf5ad2e1 100644
--- a/fp/differenceWith.js
+++ b/fp/differenceWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('differenceWith', require('../differenceWith'));
+var convert = require('./convert'),
+ func = convert('differenceWith', require('../differenceWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/divide.js b/fp/divide.js
index a7fb7e35b..82048c5e0 100644
--- a/fp/divide.js
+++ b/fp/divide.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('divide', require('../divide'));
+var convert = require('./convert'),
+ func = convert('divide', require('../divide'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/drop.js b/fp/drop.js
index ccca2d0da..2fa9b4faa 100644
--- a/fp/drop.js
+++ b/fp/drop.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('drop', require('../drop'));
+var convert = require('./convert'),
+ func = convert('drop', require('../drop'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/dropRight.js b/fp/dropRight.js
index bd9a2bd7b..e98881fcd 100644
--- a/fp/dropRight.js
+++ b/fp/dropRight.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('dropRight', require('../dropRight'));
+var convert = require('./convert'),
+ func = convert('dropRight', require('../dropRight'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/dropRightWhile.js b/fp/dropRightWhile.js
index 2dbb2a3b6..cacaa7019 100644
--- a/fp/dropRightWhile.js
+++ b/fp/dropRightWhile.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('dropRightWhile', require('../dropRightWhile'));
+var convert = require('./convert'),
+ func = convert('dropRightWhile', require('../dropRightWhile'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/dropWhile.js b/fp/dropWhile.js
index 17e46ff4e..285f864d1 100644
--- a/fp/dropWhile.js
+++ b/fp/dropWhile.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('dropWhile', require('../dropWhile'));
+var convert = require('./convert'),
+ func = convert('dropWhile', require('../dropWhile'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/endsWith.js b/fp/endsWith.js
index cbe8f8ca2..17dc2a495 100644
--- a/fp/endsWith.js
+++ b/fp/endsWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('endsWith', require('../endsWith'));
+var convert = require('./convert'),
+ func = convert('endsWith', require('../endsWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/eq.js b/fp/eq.js
index 518a54df7..9a3d21bf1 100644
--- a/fp/eq.js
+++ b/fp/eq.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('eq', require('../eq'));
+var convert = require('./convert'),
+ func = convert('eq', require('../eq'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/escape.js b/fp/escape.js
index e5de9f231..52c1fbba6 100644
--- a/fp/escape.js
+++ b/fp/escape.js
@@ -1 +1,5 @@
-module.exports = require('../escape');
+var convert = require('./convert'),
+ func = convert('escape', require('../escape'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/escapeRegExp.js b/fp/escapeRegExp.js
index ab18963a1..369b2eff6 100644
--- a/fp/escapeRegExp.js
+++ b/fp/escapeRegExp.js
@@ -1 +1,5 @@
-module.exports = require('../escapeRegExp');
+var convert = require('./convert'),
+ func = convert('escapeRegExp', require('../escapeRegExp'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/every.js b/fp/every.js
index 965f889b6..95c2776c3 100644
--- a/fp/every.js
+++ b/fp/every.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('every', require('../every'));
+var convert = require('./convert'),
+ func = convert('every', require('../every'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/fill.js b/fp/fill.js
index e16f8bf33..b2d47e84e 100644
--- a/fp/fill.js
+++ b/fp/fill.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('fill', require('../fill'));
+var convert = require('./convert'),
+ func = convert('fill', require('../fill'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/filter.js b/fp/filter.js
index 7191a8223..796d501ce 100644
--- a/fp/filter.js
+++ b/fp/filter.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('filter', require('../filter'));
+var convert = require('./convert'),
+ func = convert('filter', require('../filter'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/find.js b/fp/find.js
index 5915bbd04..f805d336a 100644
--- a/fp/find.js
+++ b/fp/find.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('find', require('../find'));
+var convert = require('./convert'),
+ func = convert('find', require('../find'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/findIndex.js b/fp/findIndex.js
index 6bf435c78..8c15fd116 100644
--- a/fp/findIndex.js
+++ b/fp/findIndex.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('findIndex', require('../findIndex'));
+var convert = require('./convert'),
+ func = convert('findIndex', require('../findIndex'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/findKey.js b/fp/findKey.js
index 3ff9844c1..475bcfa8a 100644
--- a/fp/findKey.js
+++ b/fp/findKey.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('findKey', require('../findKey'));
+var convert = require('./convert'),
+ func = convert('findKey', require('../findKey'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/findLast.js b/fp/findLast.js
index 31e169b38..093fe94e7 100644
--- a/fp/findLast.js
+++ b/fp/findLast.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('findLast', require('../findLast'));
+var convert = require('./convert'),
+ func = convert('findLast', require('../findLast'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/findLastIndex.js b/fp/findLastIndex.js
index db41e8843..36986df0b 100644
--- a/fp/findLastIndex.js
+++ b/fp/findLastIndex.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('findLastIndex', require('../findLastIndex'));
+var convert = require('./convert'),
+ func = convert('findLastIndex', require('../findLastIndex'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/findLastKey.js b/fp/findLastKey.js
index ffe9e2a11..5f81b604e 100644
--- a/fp/findLastKey.js
+++ b/fp/findLastKey.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('findLastKey', require('../findLastKey'));
+var convert = require('./convert'),
+ func = convert('findLastKey', require('../findLastKey'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/flatMap.js b/fp/flatMap.js
index da249a883..d01dc4d04 100644
--- a/fp/flatMap.js
+++ b/fp/flatMap.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('flatMap', require('../flatMap'));
+var convert = require('./convert'),
+ func = convert('flatMap', require('../flatMap'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/flatMapDeep.js b/fp/flatMapDeep.js
index effa99e10..569c42eb9 100644
--- a/fp/flatMapDeep.js
+++ b/fp/flatMapDeep.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('flatMapDeep', require('../flatMapDeep'));
+var convert = require('./convert'),
+ func = convert('flatMapDeep', require('../flatMapDeep'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/flatMapDepth.js b/fp/flatMapDepth.js
index dee0a07e8..6eb68fdee 100644
--- a/fp/flatMapDepth.js
+++ b/fp/flatMapDepth.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('flatMapDepth', require('../flatMapDepth'));
+var convert = require('./convert'),
+ func = convert('flatMapDepth', require('../flatMapDepth'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/flatten.js b/fp/flatten.js
index f1c1a6223..30425d896 100644
--- a/fp/flatten.js
+++ b/fp/flatten.js
@@ -1 +1,5 @@
-module.exports = require('../flatten');
+var convert = require('./convert'),
+ func = convert('flatten', require('../flatten'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/flattenDeep.js b/fp/flattenDeep.js
index c2ff9879b..aed5db27c 100644
--- a/fp/flattenDeep.js
+++ b/fp/flattenDeep.js
@@ -1 +1,5 @@
-module.exports = require('../flattenDeep');
+var convert = require('./convert'),
+ func = convert('flattenDeep', require('../flattenDeep'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/flattenDepth.js b/fp/flattenDepth.js
index 731e27a47..ad65e378e 100644
--- a/fp/flattenDepth.js
+++ b/fp/flattenDepth.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('flattenDepth', require('../flattenDepth'));
+var convert = require('./convert'),
+ func = convert('flattenDepth', require('../flattenDepth'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/flip.js b/fp/flip.js
index 730bbd1bb..0547e7b4e 100644
--- a/fp/flip.js
+++ b/fp/flip.js
@@ -1 +1,5 @@
-module.exports = require('../flip');
+var convert = require('./convert'),
+ func = convert('flip', require('../flip'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/floor.js b/fp/floor.js
index f130f8b59..a6cf3358e 100644
--- a/fp/floor.js
+++ b/fp/floor.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('floor', require('../floor'));
+var convert = require('./convert'),
+ func = convert('floor', require('../floor'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/flow.js b/fp/flow.js
index d9943c6d0..cd83677a6 100644
--- a/fp/flow.js
+++ b/fp/flow.js
@@ -1 +1,5 @@
-module.exports = require('../flow');
+var convert = require('./convert'),
+ func = convert('flow', require('../flow'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/flowRight.js b/fp/flowRight.js
index 556dc378f..972a5b9b1 100644
--- a/fp/flowRight.js
+++ b/fp/flowRight.js
@@ -1 +1,5 @@
-module.exports = require('../flowRight');
+var convert = require('./convert'),
+ func = convert('flowRight', require('../flowRight'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/forEach.js b/fp/forEach.js
index d715ea662..2f494521c 100644
--- a/fp/forEach.js
+++ b/fp/forEach.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('forEach', require('../forEach'));
+var convert = require('./convert'),
+ func = convert('forEach', require('../forEach'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/forEachRight.js b/fp/forEachRight.js
index 90dd8dd29..3ff97336b 100644
--- a/fp/forEachRight.js
+++ b/fp/forEachRight.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('forEachRight', require('../forEachRight'));
+var convert = require('./convert'),
+ func = convert('forEachRight', require('../forEachRight'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/forIn.js b/fp/forIn.js
index 90a8f07bb..9341749b1 100644
--- a/fp/forIn.js
+++ b/fp/forIn.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('forIn', require('../forIn'));
+var convert = require('./convert'),
+ func = convert('forIn', require('../forIn'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/forInRight.js b/fp/forInRight.js
index 505258f44..cecf8bbfa 100644
--- a/fp/forInRight.js
+++ b/fp/forInRight.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('forInRight', require('../forInRight'));
+var convert = require('./convert'),
+ func = convert('forInRight', require('../forInRight'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/forOwn.js b/fp/forOwn.js
index 6fef1e3d5..246449e9a 100644
--- a/fp/forOwn.js
+++ b/fp/forOwn.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('forOwn', require('../forOwn'));
+var convert = require('./convert'),
+ func = convert('forOwn', require('../forOwn'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/forOwnRight.js b/fp/forOwnRight.js
index 11ff1fdaf..c5e826e0d 100644
--- a/fp/forOwnRight.js
+++ b/fp/forOwnRight.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('forOwnRight', require('../forOwnRight'));
+var convert = require('./convert'),
+ func = convert('forOwnRight', require('../forOwnRight'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/fromPairs.js b/fp/fromPairs.js
index f5c3cb8d7..f8cc5968c 100644
--- a/fp/fromPairs.js
+++ b/fp/fromPairs.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('fromPairs', require('../fromPairs'));
+var convert = require('./convert'),
+ func = convert('fromPairs', require('../fromPairs'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/functions.js b/fp/functions.js
index bb1cb93b2..09d1bb1ba 100644
--- a/fp/functions.js
+++ b/fp/functions.js
@@ -1 +1,5 @@
-module.exports = require('../functions');
+var convert = require('./convert'),
+ func = convert('functions', require('../functions'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/functionsIn.js b/fp/functionsIn.js
index d375213c4..2cfeb83eb 100644
--- a/fp/functionsIn.js
+++ b/fp/functionsIn.js
@@ -1 +1,5 @@
-module.exports = require('../functionsIn');
+var convert = require('./convert'),
+ func = convert('functionsIn', require('../functionsIn'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/get.js b/fp/get.js
index a054c9d22..6d3a32863 100644
--- a/fp/get.js
+++ b/fp/get.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('get', require('../get'));
+var convert = require('./convert'),
+ func = convert('get', require('../get'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/getOr.js b/fp/getOr.js
index c46f2e9e0..7dbf771f0 100644
--- a/fp/getOr.js
+++ b/fp/getOr.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('getOr', require('../get'));
+var convert = require('./convert'),
+ func = convert('getOr', require('../get'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/groupBy.js b/fp/groupBy.js
index 6588856a9..fc0bc78a5 100644
--- a/fp/groupBy.js
+++ b/fp/groupBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('groupBy', require('../groupBy'));
+var convert = require('./convert'),
+ func = convert('groupBy', require('../groupBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/gt.js b/fp/gt.js
index 5b92de949..9e57c8085 100644
--- a/fp/gt.js
+++ b/fp/gt.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('gt', require('../gt'));
+var convert = require('./convert'),
+ func = convert('gt', require('../gt'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/gte.js b/fp/gte.js
index 3a4025067..458478638 100644
--- a/fp/gte.js
+++ b/fp/gte.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('gte', require('../gte'));
+var convert = require('./convert'),
+ func = convert('gte', require('../gte'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/has.js b/fp/has.js
index e37db9ab5..b90129839 100644
--- a/fp/has.js
+++ b/fp/has.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('has', require('../has'));
+var convert = require('./convert'),
+ func = convert('has', require('../has'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/hasIn.js b/fp/hasIn.js
index 84d781564..b3c3d1a3f 100644
--- a/fp/hasIn.js
+++ b/fp/hasIn.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('hasIn', require('../hasIn'));
+var convert = require('./convert'),
+ func = convert('hasIn', require('../hasIn'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/head.js b/fp/head.js
index bd97a7b2c..2694f0a21 100644
--- a/fp/head.js
+++ b/fp/head.js
@@ -1 +1,5 @@
-module.exports = require('../head');
+var convert = require('./convert'),
+ func = convert('head', require('../head'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/identity.js b/fp/identity.js
index 6d007dc10..096415a5d 100644
--- a/fp/identity.js
+++ b/fp/identity.js
@@ -1 +1,5 @@
-module.exports = require('../identity');
+var convert = require('./convert'),
+ func = convert('identity', require('../identity'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/inRange.js b/fp/inRange.js
index fc55e1c1f..202d940ba 100644
--- a/fp/inRange.js
+++ b/fp/inRange.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('inRange', require('../inRange'));
+var convert = require('./convert'),
+ func = convert('inRange', require('../inRange'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/includes.js b/fp/includes.js
index 91f1eec4d..11467805c 100644
--- a/fp/includes.js
+++ b/fp/includes.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('includes', require('../includes'));
+var convert = require('./convert'),
+ func = convert('includes', require('../includes'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/indexOf.js b/fp/indexOf.js
index 65345cedc..524658eb9 100644
--- a/fp/indexOf.js
+++ b/fp/indexOf.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('indexOf', require('../indexOf'));
+var convert = require('./convert'),
+ func = convert('indexOf', require('../indexOf'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/initial.js b/fp/initial.js
index 9fc94e060..b732ba0bd 100644
--- a/fp/initial.js
+++ b/fp/initial.js
@@ -1 +1,5 @@
-module.exports = require('../initial');
+var convert = require('./convert'),
+ func = convert('initial', require('../initial'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/intersection.js b/fp/intersection.js
index 784f4d1c3..52936d560 100644
--- a/fp/intersection.js
+++ b/fp/intersection.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('intersection', require('../intersection'));
+var convert = require('./convert'),
+ func = convert('intersection', require('../intersection'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/intersectionBy.js b/fp/intersectionBy.js
index 4aa93b635..72629f277 100644
--- a/fp/intersectionBy.js
+++ b/fp/intersectionBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('intersectionBy', require('../intersectionBy'));
+var convert = require('./convert'),
+ func = convert('intersectionBy', require('../intersectionBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/intersectionWith.js b/fp/intersectionWith.js
index 879fe9d44..e064f400f 100644
--- a/fp/intersectionWith.js
+++ b/fp/intersectionWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('intersectionWith', require('../intersectionWith'));
+var convert = require('./convert'),
+ func = convert('intersectionWith', require('../intersectionWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/invert.js b/fp/invert.js
index 231d5caf8..2d5d1f0d4 100644
--- a/fp/invert.js
+++ b/fp/invert.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('invert', require('../invert'));
+var convert = require('./convert'),
+ func = convert('invert', require('../invert'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/invertBy.js b/fp/invertBy.js
index 90820e6c3..63ca97ecb 100644
--- a/fp/invertBy.js
+++ b/fp/invertBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('invertBy', require('../invertBy'));
+var convert = require('./convert'),
+ func = convert('invertBy', require('../invertBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/invoke.js b/fp/invoke.js
index a8635e8c3..fcf17f0d5 100644
--- a/fp/invoke.js
+++ b/fp/invoke.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('invoke', require('../invoke'));
+var convert = require('./convert'),
+ func = convert('invoke', require('../invoke'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/invokeArgs.js b/fp/invokeArgs.js
index 99a890579..d3f2953fa 100644
--- a/fp/invokeArgs.js
+++ b/fp/invokeArgs.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('invokeArgs', require('../invoke'));
+var convert = require('./convert'),
+ func = convert('invokeArgs', require('../invoke'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/invokeArgsMap.js b/fp/invokeArgsMap.js
index 091956795..eaa9f84ff 100644
--- a/fp/invokeArgsMap.js
+++ b/fp/invokeArgsMap.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('invokeArgsMap', require('../invokeMap'));
+var convert = require('./convert'),
+ func = convert('invokeArgsMap', require('../invokeMap'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/invokeMap.js b/fp/invokeMap.js
index 2691ae36e..6515fd73f 100644
--- a/fp/invokeMap.js
+++ b/fp/invokeMap.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('invokeMap', require('../invokeMap'));
+var convert = require('./convert'),
+ func = convert('invokeMap', require('../invokeMap'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isArguments.js b/fp/isArguments.js
index 093aa354c..1d93c9e59 100644
--- a/fp/isArguments.js
+++ b/fp/isArguments.js
@@ -1 +1,5 @@
-module.exports = require('../isArguments');
+var convert = require('./convert'),
+ func = convert('isArguments', require('../isArguments'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isArray.js b/fp/isArray.js
index ec7fad3c3..ba7ade8dd 100644
--- a/fp/isArray.js
+++ b/fp/isArray.js
@@ -1 +1,5 @@
-module.exports = require('../isArray');
+var convert = require('./convert'),
+ func = convert('isArray', require('../isArray'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isArrayBuffer.js b/fp/isArrayBuffer.js
index 655e85bac..5088513fa 100644
--- a/fp/isArrayBuffer.js
+++ b/fp/isArrayBuffer.js
@@ -1 +1,5 @@
-module.exports = require('../isArrayBuffer');
+var convert = require('./convert'),
+ func = convert('isArrayBuffer', require('../isArrayBuffer'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isArrayLike.js b/fp/isArrayLike.js
index 1595b2f18..8f1856bf6 100644
--- a/fp/isArrayLike.js
+++ b/fp/isArrayLike.js
@@ -1 +1,5 @@
-module.exports = require('../isArrayLike');
+var convert = require('./convert'),
+ func = convert('isArrayLike', require('../isArrayLike'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isArrayLikeObject.js b/fp/isArrayLikeObject.js
index 4d1d20289..21084984b 100644
--- a/fp/isArrayLikeObject.js
+++ b/fp/isArrayLikeObject.js
@@ -1 +1,5 @@
-module.exports = require('../isArrayLikeObject');
+var convert = require('./convert'),
+ func = convert('isArrayLikeObject', require('../isArrayLikeObject'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isBoolean.js b/fp/isBoolean.js
index 30d4a4aa0..9339f75b1 100644
--- a/fp/isBoolean.js
+++ b/fp/isBoolean.js
@@ -1 +1,5 @@
-module.exports = require('../isBoolean');
+var convert = require('./convert'),
+ func = convert('isBoolean', require('../isBoolean'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isBuffer.js b/fp/isBuffer.js
index 15af9b634..e60b12381 100644
--- a/fp/isBuffer.js
+++ b/fp/isBuffer.js
@@ -1 +1,5 @@
-module.exports = require('../isBuffer');
+var convert = require('./convert'),
+ func = convert('isBuffer', require('../isBuffer'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isDate.js b/fp/isDate.js
index ac002f459..dc41d089e 100644
--- a/fp/isDate.js
+++ b/fp/isDate.js
@@ -1 +1,5 @@
-module.exports = require('../isDate');
+var convert = require('./convert'),
+ func = convert('isDate', require('../isDate'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isElement.js b/fp/isElement.js
index 458a3484d..18ee039a2 100644
--- a/fp/isElement.js
+++ b/fp/isElement.js
@@ -1 +1,5 @@
-module.exports = require('../isElement');
+var convert = require('./convert'),
+ func = convert('isElement', require('../isElement'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isEmpty.js b/fp/isEmpty.js
index b1a04cd88..0f4ae841e 100644
--- a/fp/isEmpty.js
+++ b/fp/isEmpty.js
@@ -1 +1,5 @@
-module.exports = require('../isEmpty');
+var convert = require('./convert'),
+ func = convert('isEmpty', require('../isEmpty'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isEqual.js b/fp/isEqual.js
index 91b7d6654..41383865f 100644
--- a/fp/isEqual.js
+++ b/fp/isEqual.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('isEqual', require('../isEqual'));
+var convert = require('./convert'),
+ func = convert('isEqual', require('../isEqual'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isEqualWith.js b/fp/isEqualWith.js
index 37a6e3506..029ff5cda 100644
--- a/fp/isEqualWith.js
+++ b/fp/isEqualWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('isEqualWith', require('../isEqualWith'));
+var convert = require('./convert'),
+ func = convert('isEqualWith', require('../isEqualWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isError.js b/fp/isError.js
index da2710c26..3dfd81ccc 100644
--- a/fp/isError.js
+++ b/fp/isError.js
@@ -1 +1,5 @@
-module.exports = require('../isError');
+var convert = require('./convert'),
+ func = convert('isError', require('../isError'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isFinite.js b/fp/isFinite.js
index a71e53de4..0b647b841 100644
--- a/fp/isFinite.js
+++ b/fp/isFinite.js
@@ -1 +1,5 @@
-module.exports = require('../isFinite');
+var convert = require('./convert'),
+ func = convert('isFinite', require('../isFinite'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isFunction.js b/fp/isFunction.js
index 1fc73f62f..ff8e5c458 100644
--- a/fp/isFunction.js
+++ b/fp/isFunction.js
@@ -1 +1,5 @@
-module.exports = require('../isFunction');
+var convert = require('./convert'),
+ func = convert('isFunction', require('../isFunction'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isInteger.js b/fp/isInteger.js
index f990b011c..67af4ff6d 100644
--- a/fp/isInteger.js
+++ b/fp/isInteger.js
@@ -1 +1,5 @@
-module.exports = require('../isInteger');
+var convert = require('./convert'),
+ func = convert('isInteger', require('../isInteger'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isLength.js b/fp/isLength.js
index f40c36235..fc101c5a6 100644
--- a/fp/isLength.js
+++ b/fp/isLength.js
@@ -1 +1,5 @@
-module.exports = require('../isLength');
+var convert = require('./convert'),
+ func = convert('isLength', require('../isLength'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isMap.js b/fp/isMap.js
index 51fb7e2e9..a209aa66f 100644
--- a/fp/isMap.js
+++ b/fp/isMap.js
@@ -1 +1,5 @@
-module.exports = require('../isMap');
+var convert = require('./convert'),
+ func = convert('isMap', require('../isMap'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isMatch.js b/fp/isMatch.js
index 749c90331..6264ca17f 100644
--- a/fp/isMatch.js
+++ b/fp/isMatch.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('isMatch', require('../isMatch'));
+var convert = require('./convert'),
+ func = convert('isMatch', require('../isMatch'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isMatchWith.js b/fp/isMatchWith.js
index b1311fcf3..d95f31935 100644
--- a/fp/isMatchWith.js
+++ b/fp/isMatchWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('isMatchWith', require('../isMatchWith'));
+var convert = require('./convert'),
+ func = convert('isMatchWith', require('../isMatchWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isNaN.js b/fp/isNaN.js
index 74daf0a08..66a978f11 100644
--- a/fp/isNaN.js
+++ b/fp/isNaN.js
@@ -1 +1,5 @@
-module.exports = require('../isNaN');
+var convert = require('./convert'),
+ func = convert('isNaN', require('../isNaN'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isNative.js b/fp/isNative.js
index 9eeded4a8..3d775ba95 100644
--- a/fp/isNative.js
+++ b/fp/isNative.js
@@ -1 +1,5 @@
-module.exports = require('../isNative');
+var convert = require('./convert'),
+ func = convert('isNative', require('../isNative'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isNil.js b/fp/isNil.js
index beace9db0..5952c028a 100644
--- a/fp/isNil.js
+++ b/fp/isNil.js
@@ -1 +1,5 @@
-module.exports = require('../isNil');
+var convert = require('./convert'),
+ func = convert('isNil', require('../isNil'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isNull.js b/fp/isNull.js
index 44689a783..f201a354b 100644
--- a/fp/isNull.js
+++ b/fp/isNull.js
@@ -1 +1,5 @@
-module.exports = require('../isNull');
+var convert = require('./convert'),
+ func = convert('isNull', require('../isNull'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isNumber.js b/fp/isNumber.js
index d7e86155d..a2b5fa049 100644
--- a/fp/isNumber.js
+++ b/fp/isNumber.js
@@ -1 +1,5 @@
-module.exports = require('../isNumber');
+var convert = require('./convert'),
+ func = convert('isNumber', require('../isNumber'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isObject.js b/fp/isObject.js
index bb4863002..231ace03b 100644
--- a/fp/isObject.js
+++ b/fp/isObject.js
@@ -1 +1,5 @@
-module.exports = require('../isObject');
+var convert = require('./convert'),
+ func = convert('isObject', require('../isObject'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isObjectLike.js b/fp/isObjectLike.js
index 5ef6f62b1..f16082e6f 100644
--- a/fp/isObjectLike.js
+++ b/fp/isObjectLike.js
@@ -1 +1,5 @@
-module.exports = require('../isObjectLike');
+var convert = require('./convert'),
+ func = convert('isObjectLike', require('../isObjectLike'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isPlainObject.js b/fp/isPlainObject.js
index 2d34d86a4..b5bea90d3 100644
--- a/fp/isPlainObject.js
+++ b/fp/isPlainObject.js
@@ -1 +1,5 @@
-module.exports = require('../isPlainObject');
+var convert = require('./convert'),
+ func = convert('isPlainObject', require('../isPlainObject'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isRegExp.js b/fp/isRegExp.js
index 4d0727bec..12a1a3d71 100644
--- a/fp/isRegExp.js
+++ b/fp/isRegExp.js
@@ -1 +1,5 @@
-module.exports = require('../isRegExp');
+var convert = require('./convert'),
+ func = convert('isRegExp', require('../isRegExp'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isSafeInteger.js b/fp/isSafeInteger.js
index ed08cab66..7230f5520 100644
--- a/fp/isSafeInteger.js
+++ b/fp/isSafeInteger.js
@@ -1 +1,5 @@
-module.exports = require('../isSafeInteger');
+var convert = require('./convert'),
+ func = convert('isSafeInteger', require('../isSafeInteger'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isSet.js b/fp/isSet.js
index f8a0a498c..35c01f6fa 100644
--- a/fp/isSet.js
+++ b/fp/isSet.js
@@ -1 +1,5 @@
-module.exports = require('../isSet');
+var convert = require('./convert'),
+ func = convert('isSet', require('../isSet'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isString.js b/fp/isString.js
index 2f22d0e44..1fd0679ef 100644
--- a/fp/isString.js
+++ b/fp/isString.js
@@ -1 +1,5 @@
-module.exports = require('../isString');
+var convert = require('./convert'),
+ func = convert('isString', require('../isString'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isSymbol.js b/fp/isSymbol.js
index 9ce6731ec..38676956d 100644
--- a/fp/isSymbol.js
+++ b/fp/isSymbol.js
@@ -1 +1,5 @@
-module.exports = require('../isSymbol');
+var convert = require('./convert'),
+ func = convert('isSymbol', require('../isSymbol'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isTypedArray.js b/fp/isTypedArray.js
index 72349c5f0..856795387 100644
--- a/fp/isTypedArray.js
+++ b/fp/isTypedArray.js
@@ -1 +1,5 @@
-module.exports = require('../isTypedArray');
+var convert = require('./convert'),
+ func = convert('isTypedArray', require('../isTypedArray'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isUndefined.js b/fp/isUndefined.js
index a65c5bec9..ddbca31ca 100644
--- a/fp/isUndefined.js
+++ b/fp/isUndefined.js
@@ -1 +1,5 @@
-module.exports = require('../isUndefined');
+var convert = require('./convert'),
+ func = convert('isUndefined', require('../isUndefined'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isWeakMap.js b/fp/isWeakMap.js
index dc622014e..ef60c613c 100644
--- a/fp/isWeakMap.js
+++ b/fp/isWeakMap.js
@@ -1 +1,5 @@
-module.exports = require('../isWeakMap');
+var convert = require('./convert'),
+ func = convert('isWeakMap', require('../isWeakMap'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/isWeakSet.js b/fp/isWeakSet.js
index 7646ca884..c99bfaa6d 100644
--- a/fp/isWeakSet.js
+++ b/fp/isWeakSet.js
@@ -1 +1,5 @@
-module.exports = require('../isWeakSet');
+var convert = require('./convert'),
+ func = convert('isWeakSet', require('../isWeakSet'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/iteratee.js b/fp/iteratee.js
index 2884465d5..9f0f71738 100644
--- a/fp/iteratee.js
+++ b/fp/iteratee.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('iteratee', require('../iteratee'));
+var convert = require('./convert'),
+ func = convert('iteratee', require('../iteratee'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/join.js b/fp/join.js
index fdaa488e3..a220e003c 100644
--- a/fp/join.js
+++ b/fp/join.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('join', require('../join'));
+var convert = require('./convert'),
+ func = convert('join', require('../join'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/kebabCase.js b/fp/kebabCase.js
index f251a4d48..60737f17c 100644
--- a/fp/kebabCase.js
+++ b/fp/kebabCase.js
@@ -1 +1,5 @@
-module.exports = require('../kebabCase');
+var convert = require('./convert'),
+ func = convert('kebabCase', require('../kebabCase'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/keyBy.js b/fp/keyBy.js
index ad9abacb1..9a6a85d42 100644
--- a/fp/keyBy.js
+++ b/fp/keyBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('keyBy', require('../keyBy'));
+var convert = require('./convert'),
+ func = convert('keyBy', require('../keyBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/keys.js b/fp/keys.js
index 23dc6b7d9..e12bb07f1 100644
--- a/fp/keys.js
+++ b/fp/keys.js
@@ -1 +1,5 @@
-module.exports = require('../keys');
+var convert = require('./convert'),
+ func = convert('keys', require('../keys'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/keysIn.js b/fp/keysIn.js
index 2b738b99f..f3eb36a8d 100644
--- a/fp/keysIn.js
+++ b/fp/keysIn.js
@@ -1 +1,5 @@
-module.exports = require('../keysIn');
+var convert = require('./convert'),
+ func = convert('keysIn', require('../keysIn'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/last.js b/fp/last.js
index 222be23aa..0f716993f 100644
--- a/fp/last.js
+++ b/fp/last.js
@@ -1 +1,5 @@
-module.exports = require('../last');
+var convert = require('./convert'),
+ func = convert('last', require('../last'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/lastIndexOf.js b/fp/lastIndexOf.js
index e27480e37..ddf39c301 100644
--- a/fp/lastIndexOf.js
+++ b/fp/lastIndexOf.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('lastIndexOf', require('../lastIndexOf'));
+var convert = require('./convert'),
+ func = convert('lastIndexOf', require('../lastIndexOf'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/lowerCase.js b/fp/lowerCase.js
index 4da15cea6..ea64bc15d 100644
--- a/fp/lowerCase.js
+++ b/fp/lowerCase.js
@@ -1 +1,5 @@
-module.exports = require('../lowerCase');
+var convert = require('./convert'),
+ func = convert('lowerCase', require('../lowerCase'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/lowerFirst.js b/fp/lowerFirst.js
index afd1ba547..539720a3d 100644
--- a/fp/lowerFirst.js
+++ b/fp/lowerFirst.js
@@ -1 +1,5 @@
-module.exports = require('../lowerFirst');
+var convert = require('./convert'),
+ func = convert('lowerFirst', require('../lowerFirst'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/lt.js b/fp/lt.js
index dd4cba04f..a31d21ecc 100644
--- a/fp/lt.js
+++ b/fp/lt.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('lt', require('../lt'));
+var convert = require('./convert'),
+ func = convert('lt', require('../lt'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/lte.js b/fp/lte.js
index f9bf7254f..d795d10ee 100644
--- a/fp/lte.js
+++ b/fp/lte.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('lte', require('../lte'));
+var convert = require('./convert'),
+ func = convert('lte', require('../lte'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/map.js b/fp/map.js
index b74c1a1ce..cf9879436 100644
--- a/fp/map.js
+++ b/fp/map.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('map', require('../map'));
+var convert = require('./convert'),
+ func = convert('map', require('../map'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/mapKeys.js b/fp/mapKeys.js
index a8156c104..168458709 100644
--- a/fp/mapKeys.js
+++ b/fp/mapKeys.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('mapKeys', require('../mapKeys'));
+var convert = require('./convert'),
+ func = convert('mapKeys', require('../mapKeys'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/mapValues.js b/fp/mapValues.js
index 9375d73e3..400497275 100644
--- a/fp/mapValues.js
+++ b/fp/mapValues.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('mapValues', require('../mapValues'));
+var convert = require('./convert'),
+ func = convert('mapValues', require('../mapValues'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/matches.js b/fp/matches.js
index eea591643..629399cb8 100644
--- a/fp/matches.js
+++ b/fp/matches.js
@@ -1 +1,5 @@
-module.exports = require('../matches');
+var convert = require('./convert'),
+ func = convert('matches', require('../matches'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/matchesProperty.js b/fp/matchesProperty.js
index c4343a171..4575bd243 100644
--- a/fp/matchesProperty.js
+++ b/fp/matchesProperty.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('matchesProperty', require('../matchesProperty'));
+var convert = require('./convert'),
+ func = convert('matchesProperty', require('../matchesProperty'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/max.js b/fp/max.js
index f7258c6ec..a66acac22 100644
--- a/fp/max.js
+++ b/fp/max.js
@@ -1 +1,5 @@
-module.exports = require('../max');
+var convert = require('./convert'),
+ func = convert('max', require('../max'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/maxBy.js b/fp/maxBy.js
index b81243fab..d083fd64f 100644
--- a/fp/maxBy.js
+++ b/fp/maxBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('maxBy', require('../maxBy'));
+var convert = require('./convert'),
+ func = convert('maxBy', require('../maxBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/mean.js b/fp/mean.js
index b78e427a9..31172460c 100644
--- a/fp/mean.js
+++ b/fp/mean.js
@@ -1 +1,5 @@
-module.exports = require('../mean');
+var convert = require('./convert'),
+ func = convert('mean', require('../mean'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/meanBy.js b/fp/meanBy.js
index beebab63c..556f25edf 100644
--- a/fp/meanBy.js
+++ b/fp/meanBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('meanBy', require('../meanBy'));
+var convert = require('./convert'),
+ func = convert('meanBy', require('../meanBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/memoize.js b/fp/memoize.js
index 1a45e09eb..638eec63b 100644
--- a/fp/memoize.js
+++ b/fp/memoize.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('memoize', require('../memoize'));
+var convert = require('./convert'),
+ func = convert('memoize', require('../memoize'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/merge.js b/fp/merge.js
index 3dca64191..ac66adde1 100644
--- a/fp/merge.js
+++ b/fp/merge.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('merge', require('../merge'));
+var convert = require('./convert'),
+ func = convert('merge', require('../merge'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/mergeWith.js b/fp/mergeWith.js
index ba456444d..00d44d5e1 100644
--- a/fp/mergeWith.js
+++ b/fp/mergeWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('mergeWith', require('../mergeWith'));
+var convert = require('./convert'),
+ func = convert('mergeWith', require('../mergeWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/method.js b/fp/method.js
index c2f95c3f1..f4060c687 100644
--- a/fp/method.js
+++ b/fp/method.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('method', require('../method'));
+var convert = require('./convert'),
+ func = convert('method', require('../method'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/methodOf.js b/fp/methodOf.js
index 223f6516e..61399056f 100644
--- a/fp/methodOf.js
+++ b/fp/methodOf.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('methodOf', require('../methodOf'));
+var convert = require('./convert'),
+ func = convert('methodOf', require('../methodOf'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/min.js b/fp/min.js
index 10db02c0e..d12c6b40d 100644
--- a/fp/min.js
+++ b/fp/min.js
@@ -1 +1,5 @@
-module.exports = require('../min');
+var convert = require('./convert'),
+ func = convert('min', require('../min'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/minBy.js b/fp/minBy.js
index 10edfd40d..fdb9e24d8 100644
--- a/fp/minBy.js
+++ b/fp/minBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('minBy', require('../minBy'));
+var convert = require('./convert'),
+ func = convert('minBy', require('../minBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/mixin.js b/fp/mixin.js
index 965f1808c..332e6fbfd 100644
--- a/fp/mixin.js
+++ b/fp/mixin.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('mixin', require('../mixin'));
+var convert = require('./convert'),
+ func = convert('mixin', require('../mixin'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/multiply.js b/fp/multiply.js
index 2985914ab..4dcf0b0d4 100644
--- a/fp/multiply.js
+++ b/fp/multiply.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('multiply', require('../multiply'));
+var convert = require('./convert'),
+ func = convert('multiply', require('../multiply'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/negate.js b/fp/negate.js
index 345b4250e..8b6dc7c5b 100644
--- a/fp/negate.js
+++ b/fp/negate.js
@@ -1 +1,5 @@
-module.exports = require('../negate');
+var convert = require('./convert'),
+ func = convert('negate', require('../negate'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/next.js b/fp/next.js
index 5cad70e44..140155e23 100644
--- a/fp/next.js
+++ b/fp/next.js
@@ -1 +1,5 @@
-module.exports = require('../next');
+var convert = require('./convert'),
+ func = convert('next', require('../next'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/noop.js b/fp/noop.js
index ca1005047..b9e32cc8c 100644
--- a/fp/noop.js
+++ b/fp/noop.js
@@ -1 +1,5 @@
-module.exports = require('../noop');
+var convert = require('./convert'),
+ func = convert('noop', require('../noop'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/now.js b/fp/now.js
index aa5ed67a7..6de2068aa 100644
--- a/fp/now.js
+++ b/fp/now.js
@@ -1 +1,5 @@
-module.exports = require('../now');
+var convert = require('./convert'),
+ func = convert('now', require('../now'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/nthArg.js b/fp/nthArg.js
index dd47ac666..8ccd8e60b 100644
--- a/fp/nthArg.js
+++ b/fp/nthArg.js
@@ -1 +1,5 @@
-module.exports = require('../nthArg');
+var convert = require('./convert'),
+ func = convert('nthArg', require('../nthArg'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/omit.js b/fp/omit.js
index 404b55160..fd685291e 100644
--- a/fp/omit.js
+++ b/fp/omit.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('omit', require('../omit'));
+var convert = require('./convert'),
+ func = convert('omit', require('../omit'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/omitBy.js b/fp/omitBy.js
index 745efa54f..90df73802 100644
--- a/fp/omitBy.js
+++ b/fp/omitBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('omitBy', require('../omitBy'));
+var convert = require('./convert'),
+ func = convert('omitBy', require('../omitBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/once.js b/fp/once.js
index 6bd0beb20..f8f0a5c73 100644
--- a/fp/once.js
+++ b/fp/once.js
@@ -1 +1,5 @@
-module.exports = require('../once');
+var convert = require('./convert'),
+ func = convert('once', require('../once'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/orderBy.js b/fp/orderBy.js
index b32244f18..848e21075 100644
--- a/fp/orderBy.js
+++ b/fp/orderBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('orderBy', require('../orderBy'));
+var convert = require('./convert'),
+ func = convert('orderBy', require('../orderBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/over.js b/fp/over.js
index 0a5a797a7..01eba7b98 100644
--- a/fp/over.js
+++ b/fp/over.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('over', require('../over'));
+var convert = require('./convert'),
+ func = convert('over', require('../over'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/overArgs.js b/fp/overArgs.js
index 818838745..738556f0c 100644
--- a/fp/overArgs.js
+++ b/fp/overArgs.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('overArgs', require('../overArgs'));
+var convert = require('./convert'),
+ func = convert('overArgs', require('../overArgs'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/overEvery.js b/fp/overEvery.js
index 36dc552b3..9f5a032dc 100644
--- a/fp/overEvery.js
+++ b/fp/overEvery.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('overEvery', require('../overEvery'));
+var convert = require('./convert'),
+ func = convert('overEvery', require('../overEvery'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/overSome.js b/fp/overSome.js
index b02d464ac..15939d586 100644
--- a/fp/overSome.js
+++ b/fp/overSome.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('overSome', require('../overSome'));
+var convert = require('./convert'),
+ func = convert('overSome', require('../overSome'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/pad.js b/fp/pad.js
index e59cfc935..f1dea4a98 100644
--- a/fp/pad.js
+++ b/fp/pad.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('pad', require('../pad'));
+var convert = require('./convert'),
+ func = convert('pad', require('../pad'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/padChars.js b/fp/padChars.js
index 33d9aa499..d6e0804cd 100644
--- a/fp/padChars.js
+++ b/fp/padChars.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('padChars', require('../pad'));
+var convert = require('./convert'),
+ func = convert('padChars', require('../pad'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/padCharsEnd.js b/fp/padCharsEnd.js
index f3e521659..d4ab79ad3 100644
--- a/fp/padCharsEnd.js
+++ b/fp/padCharsEnd.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('padCharsEnd', require('../padEnd'));
+var convert = require('./convert'),
+ func = convert('padCharsEnd', require('../padEnd'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/padCharsStart.js b/fp/padCharsStart.js
index 7b7424f73..a08a30000 100644
--- a/fp/padCharsStart.js
+++ b/fp/padCharsStart.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('padCharsStart', require('../padStart'));
+var convert = require('./convert'),
+ func = convert('padCharsStart', require('../padStart'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/padEnd.js b/fp/padEnd.js
index 0b6dbb786..a8522ec36 100644
--- a/fp/padEnd.js
+++ b/fp/padEnd.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('padEnd', require('../padEnd'));
+var convert = require('./convert'),
+ func = convert('padEnd', require('../padEnd'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/padStart.js b/fp/padStart.js
index c97f09897..f4ca79d4a 100644
--- a/fp/padStart.js
+++ b/fp/padStart.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('padStart', require('../padStart'));
+var convert = require('./convert'),
+ func = convert('padStart', require('../padStart'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/parseInt.js b/fp/parseInt.js
index 35be7137e..27314ccbc 100644
--- a/fp/parseInt.js
+++ b/fp/parseInt.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('parseInt', require('../parseInt'));
+var convert = require('./convert'),
+ func = convert('parseInt', require('../parseInt'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/partial.js b/fp/partial.js
index a687d0c8c..5d4601598 100644
--- a/fp/partial.js
+++ b/fp/partial.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('partial', require('../partial'));
+var convert = require('./convert'),
+ func = convert('partial', require('../partial'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/partialRight.js b/fp/partialRight.js
index 28428c033..7f05fed0a 100644
--- a/fp/partialRight.js
+++ b/fp/partialRight.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('partialRight', require('../partialRight'));
+var convert = require('./convert'),
+ func = convert('partialRight', require('../partialRight'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/partition.js b/fp/partition.js
index b1495e676..2ebcacc1f 100644
--- a/fp/partition.js
+++ b/fp/partition.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('partition', require('../partition'));
+var convert = require('./convert'),
+ func = convert('partition', require('../partition'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/pick.js b/fp/pick.js
index e84b366d7..197393de1 100644
--- a/fp/pick.js
+++ b/fp/pick.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('pick', require('../pick'));
+var convert = require('./convert'),
+ func = convert('pick', require('../pick'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/pickBy.js b/fp/pickBy.js
index 4d14a0b58..d832d16b6 100644
--- a/fp/pickBy.js
+++ b/fp/pickBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('pickBy', require('../pickBy'));
+var convert = require('./convert'),
+ func = convert('pickBy', require('../pickBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/placeholder.js b/fp/placeholder.js
new file mode 100644
index 000000000..1ce17393b
--- /dev/null
+++ b/fp/placeholder.js
@@ -0,0 +1,6 @@
+/**
+ * The default argument placeholder value for methods.
+ *
+ * @type {Object}
+ */
+module.exports = {};
diff --git a/fp/plant.js b/fp/plant.js
index c85596a0c..eca8f32b4 100644
--- a/fp/plant.js
+++ b/fp/plant.js
@@ -1 +1,5 @@
-module.exports = require('../plant');
+var convert = require('./convert'),
+ func = convert('plant', require('../plant'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/property.js b/fp/property.js
index fab6f239f..d832fbba3 100644
--- a/fp/property.js
+++ b/fp/property.js
@@ -1 +1,5 @@
-module.exports = require('../property');
+var convert = require('./convert'),
+ func = convert('property', require('../property'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/propertyOf.js b/fp/propertyOf.js
index d941cdbf5..3cfdef790 100644
--- a/fp/propertyOf.js
+++ b/fp/propertyOf.js
@@ -1 +1,5 @@
-module.exports = require('../propertyOf');
+var convert = require('./convert'),
+ func = convert('propertyOf', require('../propertyOf'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/pull.js b/fp/pull.js
index 47f49aefc..8d7084f07 100644
--- a/fp/pull.js
+++ b/fp/pull.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('pull', require('../pull'));
+var convert = require('./convert'),
+ func = convert('pull', require('../pull'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/pullAll.js b/fp/pullAll.js
index ffb663bc6..98d5c9a73 100644
--- a/fp/pullAll.js
+++ b/fp/pullAll.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('pullAll', require('../pullAll'));
+var convert = require('./convert'),
+ func = convert('pullAll', require('../pullAll'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/pullAllBy.js b/fp/pullAllBy.js
index 23b11b7b3..876bc3bf1 100644
--- a/fp/pullAllBy.js
+++ b/fp/pullAllBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('pullAllBy', require('../pullAllBy'));
+var convert = require('./convert'),
+ func = convert('pullAllBy', require('../pullAllBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/pullAllWith.js b/fp/pullAllWith.js
index 495d57497..f71ba4d73 100644
--- a/fp/pullAllWith.js
+++ b/fp/pullAllWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('pullAllWith', require('../pullAllWith'));
+var convert = require('./convert'),
+ func = convert('pullAllWith', require('../pullAllWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/pullAt.js b/fp/pullAt.js
index 5836d2dda..e8b3bb612 100644
--- a/fp/pullAt.js
+++ b/fp/pullAt.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('pullAt', require('../pullAt'));
+var convert = require('./convert'),
+ func = convert('pullAt', require('../pullAt'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/random.js b/fp/random.js
index 607d63a19..99d852e4a 100644
--- a/fp/random.js
+++ b/fp/random.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('random', require('../random'));
+var convert = require('./convert'),
+ func = convert('random', require('../random'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/range.js b/fp/range.js
index 1142304e5..a6bb59118 100644
--- a/fp/range.js
+++ b/fp/range.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('range', require('../range'));
+var convert = require('./convert'),
+ func = convert('range', require('../range'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/rangeRight.js b/fp/rangeRight.js
index 22482877d..fdb712f94 100644
--- a/fp/rangeRight.js
+++ b/fp/rangeRight.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('rangeRight', require('../rangeRight'));
+var convert = require('./convert'),
+ func = convert('rangeRight', require('../rangeRight'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/rearg.js b/fp/rearg.js
index b2753e9e0..678e02a32 100644
--- a/fp/rearg.js
+++ b/fp/rearg.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('rearg', require('../rearg'));
+var convert = require('./convert'),
+ func = convert('rearg', require('../rearg'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/reduce.js b/fp/reduce.js
index 2f1b42510..4cef0a008 100644
--- a/fp/reduce.js
+++ b/fp/reduce.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('reduce', require('../reduce'));
+var convert = require('./convert'),
+ func = convert('reduce', require('../reduce'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/reduceRight.js b/fp/reduceRight.js
index b110e9e9b..caf5bb515 100644
--- a/fp/reduceRight.js
+++ b/fp/reduceRight.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('reduceRight', require('../reduceRight'));
+var convert = require('./convert'),
+ func = convert('reduceRight', require('../reduceRight'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/reject.js b/fp/reject.js
index 30bd3bc7d..c16327386 100644
--- a/fp/reject.js
+++ b/fp/reject.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('reject', require('../reject'));
+var convert = require('./convert'),
+ func = convert('reject', require('../reject'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/remove.js b/fp/remove.js
index 4b67a9431..e9d132736 100644
--- a/fp/remove.js
+++ b/fp/remove.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('remove', require('../remove'));
+var convert = require('./convert'),
+ func = convert('remove', require('../remove'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/repeat.js b/fp/repeat.js
index bc0704b3a..08470f247 100644
--- a/fp/repeat.js
+++ b/fp/repeat.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('repeat', require('../repeat'));
+var convert = require('./convert'),
+ func = convert('repeat', require('../repeat'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/replace.js b/fp/replace.js
index a4462e7d8..2227db625 100644
--- a/fp/replace.js
+++ b/fp/replace.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('replace', require('../replace'));
+var convert = require('./convert'),
+ func = convert('replace', require('../replace'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/rest.js b/fp/rest.js
index 69dfc18a7..c1f3d64bd 100644
--- a/fp/rest.js
+++ b/fp/rest.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('rest', require('../rest'));
+var convert = require('./convert'),
+ func = convert('rest', require('../rest'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/restFrom.js b/fp/restFrom.js
index 3eff77943..714e42b5d 100644
--- a/fp/restFrom.js
+++ b/fp/restFrom.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('restFrom', require('../rest'));
+var convert = require('./convert'),
+ func = convert('restFrom', require('../rest'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/result.js b/fp/result.js
index 1d3fb58ff..f86ce0712 100644
--- a/fp/result.js
+++ b/fp/result.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('result', require('../result'));
+var convert = require('./convert'),
+ func = convert('result', require('../result'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/reverse.js b/fp/reverse.js
index a6d960de0..07c9f5e49 100644
--- a/fp/reverse.js
+++ b/fp/reverse.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('reverse', require('../reverse'));
+var convert = require('./convert'),
+ func = convert('reverse', require('../reverse'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/round.js b/fp/round.js
index 9eb69b18e..4c0e5c829 100644
--- a/fp/round.js
+++ b/fp/round.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('round', require('../round'));
+var convert = require('./convert'),
+ func = convert('round', require('../round'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sample.js b/fp/sample.js
index 008cb0683..6bea1254d 100644
--- a/fp/sample.js
+++ b/fp/sample.js
@@ -1 +1,5 @@
-module.exports = require('../sample');
+var convert = require('./convert'),
+ func = convert('sample', require('../sample'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sampleSize.js b/fp/sampleSize.js
index 920c075ff..359ed6fcd 100644
--- a/fp/sampleSize.js
+++ b/fp/sampleSize.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('sampleSize', require('../sampleSize'));
+var convert = require('./convert'),
+ func = convert('sampleSize', require('../sampleSize'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/set.js b/fp/set.js
index fc2a75b36..0b56a56c8 100644
--- a/fp/set.js
+++ b/fp/set.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('set', require('../set'));
+var convert = require('./convert'),
+ func = convert('set', require('../set'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/setWith.js b/fp/setWith.js
index fd836ea40..0b584952b 100644
--- a/fp/setWith.js
+++ b/fp/setWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('setWith', require('../setWith'));
+var convert = require('./convert'),
+ func = convert('setWith', require('../setWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/shuffle.js b/fp/shuffle.js
index 85d569921..aa3a1ca5b 100644
--- a/fp/shuffle.js
+++ b/fp/shuffle.js
@@ -1 +1,5 @@
-module.exports = require('../shuffle');
+var convert = require('./convert'),
+ func = convert('shuffle', require('../shuffle'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/size.js b/fp/size.js
index efba2ca65..7490136e1 100644
--- a/fp/size.js
+++ b/fp/size.js
@@ -1 +1,5 @@
-module.exports = require('../size');
+var convert = require('./convert'),
+ func = convert('size', require('../size'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/slice.js b/fp/slice.js
index 6fb1898f9..15945d321 100644
--- a/fp/slice.js
+++ b/fp/slice.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('slice', require('../slice'));
+var convert = require('./convert'),
+ func = convert('slice', require('../slice'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/snakeCase.js b/fp/snakeCase.js
index 2893f7bda..a0ff7808e 100644
--- a/fp/snakeCase.js
+++ b/fp/snakeCase.js
@@ -1 +1,5 @@
-module.exports = require('../snakeCase');
+var convert = require('./convert'),
+ func = convert('snakeCase', require('../snakeCase'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/some.js b/fp/some.js
index 64727fe38..a4fa2d006 100644
--- a/fp/some.js
+++ b/fp/some.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('some', require('../some'));
+var convert = require('./convert'),
+ func = convert('some', require('../some'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sortBy.js b/fp/sortBy.js
index 80fe4dd37..e0790ad5b 100644
--- a/fp/sortBy.js
+++ b/fp/sortBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('sortBy', require('../sortBy'));
+var convert = require('./convert'),
+ func = convert('sortBy', require('../sortBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sortedIndex.js b/fp/sortedIndex.js
index 509dcb879..364a05435 100644
--- a/fp/sortedIndex.js
+++ b/fp/sortedIndex.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('sortedIndex', require('../sortedIndex'));
+var convert = require('./convert'),
+ func = convert('sortedIndex', require('../sortedIndex'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sortedIndexBy.js b/fp/sortedIndexBy.js
index aa2d21969..9593dbd13 100644
--- a/fp/sortedIndexBy.js
+++ b/fp/sortedIndexBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('sortedIndexBy', require('../sortedIndexBy'));
+var convert = require('./convert'),
+ func = convert('sortedIndexBy', require('../sortedIndexBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sortedIndexOf.js b/fp/sortedIndexOf.js
index c12742010..c9084cab6 100644
--- a/fp/sortedIndexOf.js
+++ b/fp/sortedIndexOf.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('sortedIndexOf', require('../sortedIndexOf'));
+var convert = require('./convert'),
+ func = convert('sortedIndexOf', require('../sortedIndexOf'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sortedLastIndex.js b/fp/sortedLastIndex.js
index 7ec9e3359..47fe241af 100644
--- a/fp/sortedLastIndex.js
+++ b/fp/sortedLastIndex.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('sortedLastIndex', require('../sortedLastIndex'));
+var convert = require('./convert'),
+ func = convert('sortedLastIndex', require('../sortedLastIndex'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sortedLastIndexBy.js b/fp/sortedLastIndexBy.js
index e03f1853e..0f9a34732 100644
--- a/fp/sortedLastIndexBy.js
+++ b/fp/sortedLastIndexBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('sortedLastIndexBy', require('../sortedLastIndexBy'));
+var convert = require('./convert'),
+ func = convert('sortedLastIndexBy', require('../sortedLastIndexBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sortedLastIndexOf.js b/fp/sortedLastIndexOf.js
index 0130801e9..0d4d93278 100644
--- a/fp/sortedLastIndexOf.js
+++ b/fp/sortedLastIndexOf.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('sortedLastIndexOf', require('../sortedLastIndexOf'));
+var convert = require('./convert'),
+ func = convert('sortedLastIndexOf', require('../sortedLastIndexOf'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sortedUniq.js b/fp/sortedUniq.js
index c0df750ee..882d28370 100644
--- a/fp/sortedUniq.js
+++ b/fp/sortedUniq.js
@@ -1 +1,5 @@
-module.exports = require('../sortedUniq');
+var convert = require('./convert'),
+ func = convert('sortedUniq', require('../sortedUniq'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sortedUniqBy.js b/fp/sortedUniqBy.js
index f5c65ad6b..033db91ca 100644
--- a/fp/sortedUniqBy.js
+++ b/fp/sortedUniqBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('sortedUniqBy', require('../sortedUniqBy'));
+var convert = require('./convert'),
+ func = convert('sortedUniqBy', require('../sortedUniqBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/split.js b/fp/split.js
index 79f269393..14de1a7ef 100644
--- a/fp/split.js
+++ b/fp/split.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('split', require('../split'));
+var convert = require('./convert'),
+ func = convert('split', require('../split'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/spread.js b/fp/spread.js
index 0348df25c..2d11b7072 100644
--- a/fp/spread.js
+++ b/fp/spread.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('spread', require('../spread'));
+var convert = require('./convert'),
+ func = convert('spread', require('../spread'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/spreadFrom.js b/fp/spreadFrom.js
index 7108befeb..0b630df1b 100644
--- a/fp/spreadFrom.js
+++ b/fp/spreadFrom.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('spreadFrom', require('../spread'));
+var convert = require('./convert'),
+ func = convert('spreadFrom', require('../spread'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/startCase.js b/fp/startCase.js
index 2a6a66ef1..ada98c943 100644
--- a/fp/startCase.js
+++ b/fp/startCase.js
@@ -1 +1,5 @@
-module.exports = require('../startCase');
+var convert = require('./convert'),
+ func = convert('startCase', require('../startCase'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/startsWith.js b/fp/startsWith.js
index 730a141f6..985e2f294 100644
--- a/fp/startsWith.js
+++ b/fp/startsWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('startsWith', require('../startsWith'));
+var convert = require('./convert'),
+ func = convert('startsWith', require('../startsWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/subtract.js b/fp/subtract.js
index 46b83db36..d32b16d47 100644
--- a/fp/subtract.js
+++ b/fp/subtract.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('subtract', require('../subtract'));
+var convert = require('./convert'),
+ func = convert('subtract', require('../subtract'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sum.js b/fp/sum.js
index e8a59c5d0..5cce12b32 100644
--- a/fp/sum.js
+++ b/fp/sum.js
@@ -1 +1,5 @@
-module.exports = require('../sum');
+var convert = require('./convert'),
+ func = convert('sum', require('../sum'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/sumBy.js b/fp/sumBy.js
index 2692dc1e4..c8826565f 100644
--- a/fp/sumBy.js
+++ b/fp/sumBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('sumBy', require('../sumBy'));
+var convert = require('./convert'),
+ func = convert('sumBy', require('../sumBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/tail.js b/fp/tail.js
index 36c6494a6..f122f0ac3 100644
--- a/fp/tail.js
+++ b/fp/tail.js
@@ -1 +1,5 @@
-module.exports = require('../tail');
+var convert = require('./convert'),
+ func = convert('tail', require('../tail'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/take.js b/fp/take.js
index e0984a4d2..9af98a7bd 100644
--- a/fp/take.js
+++ b/fp/take.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('take', require('../take'));
+var convert = require('./convert'),
+ func = convert('take', require('../take'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/takeRight.js b/fp/takeRight.js
index 7b7c3ce70..b82950a69 100644
--- a/fp/takeRight.js
+++ b/fp/takeRight.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('takeRight', require('../takeRight'));
+var convert = require('./convert'),
+ func = convert('takeRight', require('../takeRight'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/takeRightWhile.js b/fp/takeRightWhile.js
index 305b254a1..8ffb0a285 100644
--- a/fp/takeRightWhile.js
+++ b/fp/takeRightWhile.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('takeRightWhile', require('../takeRightWhile'));
+var convert = require('./convert'),
+ func = convert('takeRightWhile', require('../takeRightWhile'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/takeWhile.js b/fp/takeWhile.js
index a90126db0..28136644f 100644
--- a/fp/takeWhile.js
+++ b/fp/takeWhile.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('takeWhile', require('../takeWhile'));
+var convert = require('./convert'),
+ func = convert('takeWhile', require('../takeWhile'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/tap.js b/fp/tap.js
index 3bec2bdb2..d33ad6ec1 100644
--- a/fp/tap.js
+++ b/fp/tap.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('tap', require('../tap'));
+var convert = require('./convert'),
+ func = convert('tap', require('../tap'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/template.js b/fp/template.js
index 0130d1450..74857e1c8 100644
--- a/fp/template.js
+++ b/fp/template.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('template', require('../template'));
+var convert = require('./convert'),
+ func = convert('template', require('../template'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/templateSettings.js b/fp/templateSettings.js
index ddbbb5861..7bcc0a82b 100644
--- a/fp/templateSettings.js
+++ b/fp/templateSettings.js
@@ -1 +1,5 @@
-module.exports = require('../templateSettings');
+var convert = require('./convert'),
+ func = convert('templateSettings', require('../templateSettings'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/throttle.js b/fp/throttle.js
index 36f76d6df..77fff1428 100644
--- a/fp/throttle.js
+++ b/fp/throttle.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('throttle', require('../throttle'));
+var convert = require('./convert'),
+ func = convert('throttle', require('../throttle'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/thru.js b/fp/thru.js
index 05ddaefd8..d42b3b1d8 100644
--- a/fp/thru.js
+++ b/fp/thru.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('thru', require('../thru'));
+var convert = require('./convert'),
+ func = convert('thru', require('../thru'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/times.js b/fp/times.js
index 02fd3b70c..0dab06dad 100644
--- a/fp/times.js
+++ b/fp/times.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('times', require('../times'));
+var convert = require('./convert'),
+ func = convert('times', require('../times'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toArray.js b/fp/toArray.js
index 1ea0b5210..f0c360aca 100644
--- a/fp/toArray.js
+++ b/fp/toArray.js
@@ -1 +1,5 @@
-module.exports = require('../toArray');
+var convert = require('./convert'),
+ func = convert('toArray', require('../toArray'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toInteger.js b/fp/toInteger.js
index 17e59a3d9..e0af6a750 100644
--- a/fp/toInteger.js
+++ b/fp/toInteger.js
@@ -1 +1,5 @@
-module.exports = require('../toInteger');
+var convert = require('./convert'),
+ func = convert('toInteger', require('../toInteger'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toIterator.js b/fp/toIterator.js
index 13bf21c2a..65e6baa9d 100644
--- a/fp/toIterator.js
+++ b/fp/toIterator.js
@@ -1 +1,5 @@
-module.exports = require('../toIterator');
+var convert = require('./convert'),
+ func = convert('toIterator', require('../toIterator'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toJSON.js b/fp/toJSON.js
index 5f6cb9268..2d718d0bc 100644
--- a/fp/toJSON.js
+++ b/fp/toJSON.js
@@ -1 +1,5 @@
-module.exports = require('../toJSON');
+var convert = require('./convert'),
+ func = convert('toJSON', require('../toJSON'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toLength.js b/fp/toLength.js
index 38529fb0a..b97cdd935 100644
--- a/fp/toLength.js
+++ b/fp/toLength.js
@@ -1 +1,5 @@
-module.exports = require('../toLength');
+var convert = require('./convert'),
+ func = convert('toLength', require('../toLength'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toLower.js b/fp/toLower.js
index 01d343248..616ef36ad 100644
--- a/fp/toLower.js
+++ b/fp/toLower.js
@@ -1 +1,5 @@
-module.exports = require('../toLower');
+var convert = require('./convert'),
+ func = convert('toLower', require('../toLower'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toNumber.js b/fp/toNumber.js
index 071e320a1..d0c6f4d3d 100644
--- a/fp/toNumber.js
+++ b/fp/toNumber.js
@@ -1 +1,5 @@
-module.exports = require('../toNumber');
+var convert = require('./convert'),
+ func = convert('toNumber', require('../toNumber'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toPairs.js b/fp/toPairs.js
index 4b4dcb767..af783786e 100644
--- a/fp/toPairs.js
+++ b/fp/toPairs.js
@@ -1 +1,5 @@
-module.exports = require('../toPairs');
+var convert = require('./convert'),
+ func = convert('toPairs', require('../toPairs'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toPairsIn.js b/fp/toPairsIn.js
index 53076cc6a..66504abf1 100644
--- a/fp/toPairsIn.js
+++ b/fp/toPairsIn.js
@@ -1 +1,5 @@
-module.exports = require('../toPairsIn');
+var convert = require('./convert'),
+ func = convert('toPairsIn', require('../toPairsIn'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toPath.js b/fp/toPath.js
index 62762ecfa..b4d5e50fb 100644
--- a/fp/toPath.js
+++ b/fp/toPath.js
@@ -1 +1,5 @@
-module.exports = require('../toPath');
+var convert = require('./convert'),
+ func = convert('toPath', require('../toPath'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toPlainObject.js b/fp/toPlainObject.js
index 6a6aebd04..278bb8639 100644
--- a/fp/toPlainObject.js
+++ b/fp/toPlainObject.js
@@ -1 +1,5 @@
-module.exports = require('../toPlainObject');
+var convert = require('./convert'),
+ func = convert('toPlainObject', require('../toPlainObject'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toSafeInteger.js b/fp/toSafeInteger.js
index 3f5b8174d..367a26fdd 100644
--- a/fp/toSafeInteger.js
+++ b/fp/toSafeInteger.js
@@ -1 +1,5 @@
-module.exports = require('../toSafeInteger');
+var convert = require('./convert'),
+ func = convert('toSafeInteger', require('../toSafeInteger'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toString.js b/fp/toString.js
index c309058c0..98966d18c 100644
--- a/fp/toString.js
+++ b/fp/toString.js
@@ -1 +1,5 @@
-module.exports = require('../[object Object]');
+var convert = require('./convert'),
+ func = convert('[object Object]', require('../[object Object]'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/toUpper.js b/fp/toUpper.js
index 428eb3385..54f9a5605 100644
--- a/fp/toUpper.js
+++ b/fp/toUpper.js
@@ -1 +1,5 @@
-module.exports = require('../toUpper');
+var convert = require('./convert'),
+ func = convert('toUpper', require('../toUpper'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/transform.js b/fp/transform.js
index 30bed49a9..759d088f1 100644
--- a/fp/transform.js
+++ b/fp/transform.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('transform', require('../transform'));
+var convert = require('./convert'),
+ func = convert('transform', require('../transform'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/trim.js b/fp/trim.js
index b7cafe967..e6319a741 100644
--- a/fp/trim.js
+++ b/fp/trim.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('trim', require('../trim'));
+var convert = require('./convert'),
+ func = convert('trim', require('../trim'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/trimChars.js b/fp/trimChars.js
index 051ea1e6e..c9294de48 100644
--- a/fp/trimChars.js
+++ b/fp/trimChars.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('trimChars', require('../trim'));
+var convert = require('./convert'),
+ func = convert('trimChars', require('../trim'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/trimCharsEnd.js b/fp/trimCharsEnd.js
index 54c5cff72..284bc2f81 100644
--- a/fp/trimCharsEnd.js
+++ b/fp/trimCharsEnd.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('trimCharsEnd', require('../trimEnd'));
+var convert = require('./convert'),
+ func = convert('trimCharsEnd', require('../trimEnd'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/trimCharsStart.js b/fp/trimCharsStart.js
index 44f986650..ff0ee65df 100644
--- a/fp/trimCharsStart.js
+++ b/fp/trimCharsStart.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('trimCharsStart', require('../trimStart'));
+var convert = require('./convert'),
+ func = convert('trimCharsStart', require('../trimStart'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/trimEnd.js b/fp/trimEnd.js
index 166659666..71908805f 100644
--- a/fp/trimEnd.js
+++ b/fp/trimEnd.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('trimEnd', require('../trimEnd'));
+var convert = require('./convert'),
+ func = convert('trimEnd', require('../trimEnd'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/trimStart.js b/fp/trimStart.js
index 4921b0342..fda902c38 100644
--- a/fp/trimStart.js
+++ b/fp/trimStart.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('trimStart', require('../trimStart'));
+var convert = require('./convert'),
+ func = convert('trimStart', require('../trimStart'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/truncate.js b/fp/truncate.js
index 0c4d158f8..d265c1dec 100644
--- a/fp/truncate.js
+++ b/fp/truncate.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('truncate', require('../truncate'));
+var convert = require('./convert'),
+ func = convert('truncate', require('../truncate'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/unary.js b/fp/unary.js
index 3bc648376..286c945fb 100644
--- a/fp/unary.js
+++ b/fp/unary.js
@@ -1 +1,5 @@
-module.exports = require('../unary');
+var convert = require('./convert'),
+ func = convert('unary', require('../unary'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/unescape.js b/fp/unescape.js
index 4233b155f..fddcb46e2 100644
--- a/fp/unescape.js
+++ b/fp/unescape.js
@@ -1 +1,5 @@
-module.exports = require('../unescape');
+var convert = require('./convert'),
+ func = convert('unescape', require('../unescape'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/union.js b/fp/union.js
index 9deef1235..ef8228d74 100644
--- a/fp/union.js
+++ b/fp/union.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('union', require('../union'));
+var convert = require('./convert'),
+ func = convert('union', require('../union'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/unionBy.js b/fp/unionBy.js
index 029b35961..603687a18 100644
--- a/fp/unionBy.js
+++ b/fp/unionBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('unionBy', require('../unionBy'));
+var convert = require('./convert'),
+ func = convert('unionBy', require('../unionBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/unionWith.js b/fp/unionWith.js
index 631eda089..65bb3a792 100644
--- a/fp/unionWith.js
+++ b/fp/unionWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('unionWith', require('../unionWith'));
+var convert = require('./convert'),
+ func = convert('unionWith', require('../unionWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/uniq.js b/fp/uniq.js
index c64510f09..bc1852490 100644
--- a/fp/uniq.js
+++ b/fp/uniq.js
@@ -1 +1,5 @@
-module.exports = require('../uniq');
+var convert = require('./convert'),
+ func = convert('uniq', require('../uniq'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/uniqBy.js b/fp/uniqBy.js
index 1b6c03ff9..634c6a8bb 100644
--- a/fp/uniqBy.js
+++ b/fp/uniqBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('uniqBy', require('../uniqBy'));
+var convert = require('./convert'),
+ func = convert('uniqBy', require('../uniqBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/uniqWith.js b/fp/uniqWith.js
index be4c48def..0ec601a91 100644
--- a/fp/uniqWith.js
+++ b/fp/uniqWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('uniqWith', require('../uniqWith'));
+var convert = require('./convert'),
+ func = convert('uniqWith', require('../uniqWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/uniqueId.js b/fp/uniqueId.js
index daa41cb09..aa8fc2f73 100644
--- a/fp/uniqueId.js
+++ b/fp/uniqueId.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('uniqueId', require('../uniqueId'));
+var convert = require('./convert'),
+ func = convert('uniqueId', require('../uniqueId'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/unset.js b/fp/unset.js
index 0c4c1a690..ea203a0f3 100644
--- a/fp/unset.js
+++ b/fp/unset.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('unset', require('../unset'));
+var convert = require('./convert'),
+ func = convert('unset', require('../unset'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/unzip.js b/fp/unzip.js
index e0ac2dbf5..cc364b3c5 100644
--- a/fp/unzip.js
+++ b/fp/unzip.js
@@ -1 +1,5 @@
-module.exports = require('../unzip');
+var convert = require('./convert'),
+ func = convert('unzip', require('../unzip'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/unzipWith.js b/fp/unzipWith.js
index de25cf7a8..182eaa104 100644
--- a/fp/unzipWith.js
+++ b/fp/unzipWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('unzipWith', require('../unzipWith'));
+var convert = require('./convert'),
+ func = convert('unzipWith', require('../unzipWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/update.js b/fp/update.js
index 93e0d57ac..b8ce2cc9e 100644
--- a/fp/update.js
+++ b/fp/update.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('update', require('../update'));
+var convert = require('./convert'),
+ func = convert('update', require('../update'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/updateWith.js b/fp/updateWith.js
index a6ed49e77..d5e8282d9 100644
--- a/fp/updateWith.js
+++ b/fp/updateWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('updateWith', require('../updateWith'));
+var convert = require('./convert'),
+ func = convert('updateWith', require('../updateWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/upperCase.js b/fp/upperCase.js
index ddcb3695c..c886f2021 100644
--- a/fp/upperCase.js
+++ b/fp/upperCase.js
@@ -1 +1,5 @@
-module.exports = require('../upperCase');
+var convert = require('./convert'),
+ func = convert('upperCase', require('../upperCase'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/upperFirst.js b/fp/upperFirst.js
index 34f1e20f9..d8c04df54 100644
--- a/fp/upperFirst.js
+++ b/fp/upperFirst.js
@@ -1 +1,5 @@
-module.exports = require('../upperFirst');
+var convert = require('./convert'),
+ func = convert('upperFirst', require('../upperFirst'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/value.js b/fp/value.js
index 4dc0e7e96..555eec7a3 100644
--- a/fp/value.js
+++ b/fp/value.js
@@ -1 +1,5 @@
-module.exports = require('../value');
+var convert = require('./convert'),
+ func = convert('value', require('../value'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/valueOf.js b/fp/valueOf.js
index c309058c0..98966d18c 100644
--- a/fp/valueOf.js
+++ b/fp/valueOf.js
@@ -1 +1,5 @@
-module.exports = require('../[object Object]');
+var convert = require('./convert'),
+ func = convert('[object Object]', require('../[object Object]'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/values.js b/fp/values.js
index 384317091..2dfc56136 100644
--- a/fp/values.js
+++ b/fp/values.js
@@ -1 +1,5 @@
-module.exports = require('../values');
+var convert = require('./convert'),
+ func = convert('values', require('../values'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/valuesIn.js b/fp/valuesIn.js
index f81c171c4..a1b2bb872 100644
--- a/fp/valuesIn.js
+++ b/fp/valuesIn.js
@@ -1 +1,5 @@
-module.exports = require('../valuesIn');
+var convert = require('./convert'),
+ func = convert('valuesIn', require('../valuesIn'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/without.js b/fp/without.js
index 5238e940f..bad9e125b 100644
--- a/fp/without.js
+++ b/fp/without.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('without', require('../without'));
+var convert = require('./convert'),
+ func = convert('without', require('../without'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/words.js b/fp/words.js
index b58a485b9..4a901414b 100644
--- a/fp/words.js
+++ b/fp/words.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('words', require('../words'));
+var convert = require('./convert'),
+ func = convert('words', require('../words'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/wrap.js b/fp/wrap.js
index 56465a226..e93bd8a1d 100644
--- a/fp/wrap.js
+++ b/fp/wrap.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('wrap', require('../wrap'));
+var convert = require('./convert'),
+ func = convert('wrap', require('../wrap'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/wrapperAt.js b/fp/wrapperAt.js
index f8d37a194..8f0a310fe 100644
--- a/fp/wrapperAt.js
+++ b/fp/wrapperAt.js
@@ -1 +1,5 @@
-module.exports = require('../wrapperAt');
+var convert = require('./convert'),
+ func = convert('wrapperAt', require('../wrapperAt'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/wrapperChain.js b/fp/wrapperChain.js
index 964a846c8..2a48ea2b5 100644
--- a/fp/wrapperChain.js
+++ b/fp/wrapperChain.js
@@ -1 +1,5 @@
-module.exports = require('../wrapperChain');
+var convert = require('./convert'),
+ func = convert('wrapperChain', require('../wrapperChain'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/wrapperLodash.js b/fp/wrapperLodash.js
index d62a9969f..a7162d084 100644
--- a/fp/wrapperLodash.js
+++ b/fp/wrapperLodash.js
@@ -1 +1,5 @@
-module.exports = require('../wrapperLodash');
+var convert = require('./convert'),
+ func = convert('wrapperLodash', require('../wrapperLodash'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/wrapperReverse.js b/fp/wrapperReverse.js
index cf703886c..e1481aab9 100644
--- a/fp/wrapperReverse.js
+++ b/fp/wrapperReverse.js
@@ -1 +1,5 @@
-module.exports = require('../wrapperReverse');
+var convert = require('./convert'),
+ func = convert('wrapperReverse', require('../wrapperReverse'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/wrapperValue.js b/fp/wrapperValue.js
index 494dfb107..8eb9112f6 100644
--- a/fp/wrapperValue.js
+++ b/fp/wrapperValue.js
@@ -1 +1,5 @@
-module.exports = require('../wrapperValue');
+var convert = require('./convert'),
+ func = convert('wrapperValue', require('../wrapperValue'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/xor.js b/fp/xor.js
index 0f3e025fe..29e281948 100644
--- a/fp/xor.js
+++ b/fp/xor.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('xor', require('../xor'));
+var convert = require('./convert'),
+ func = convert('xor', require('../xor'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/xorBy.js b/fp/xorBy.js
index e48fc41c7..b355686db 100644
--- a/fp/xorBy.js
+++ b/fp/xorBy.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('xorBy', require('../xorBy'));
+var convert = require('./convert'),
+ func = convert('xorBy', require('../xorBy'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/xorWith.js b/fp/xorWith.js
index 5c2eebe67..8e05739ad 100644
--- a/fp/xorWith.js
+++ b/fp/xorWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('xorWith', require('../xorWith'));
+var convert = require('./convert'),
+ func = convert('xorWith', require('../xorWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/zip.js b/fp/zip.js
index 0cae73b0a..69e147a44 100644
--- a/fp/zip.js
+++ b/fp/zip.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('zip', require('../zip'));
+var convert = require('./convert'),
+ func = convert('zip', require('../zip'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/zipObject.js b/fp/zipObject.js
index 8c2ff3bc2..462dbb68c 100644
--- a/fp/zipObject.js
+++ b/fp/zipObject.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('zipObject', require('../zipObject'));
+var convert = require('./convert'),
+ func = convert('zipObject', require('../zipObject'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/zipObjectDeep.js b/fp/zipObjectDeep.js
index a0ee4e34e..53a5d3380 100644
--- a/fp/zipObjectDeep.js
+++ b/fp/zipObjectDeep.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('zipObjectDeep', require('../zipObjectDeep'));
+var convert = require('./convert'),
+ func = convert('zipObjectDeep', require('../zipObjectDeep'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/zipWith.js b/fp/zipWith.js
index da75f3de4..c5cf9e212 100644
--- a/fp/zipWith.js
+++ b/fp/zipWith.js
@@ -1,2 +1,5 @@
-var convert = require('./convert');
-module.exports = convert('zipWith', require('../zipWith'));
+var convert = require('./convert'),
+ func = convert('zipWith', require('../zipWith'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/groupBy.js b/groupBy.js
index 632a2c671..ec32c07be 100644
--- a/groupBy.js
+++ b/groupBy.js
@@ -8,9 +8,9 @@ var hasOwnProperty = objectProto.hasOwnProperty;
/**
* Creates an object composed of keys generated from the results of running
- * each element of `collection` through `iteratee`. The corresponding value
- * of each key is an array of elements responsible for generating the key.
- * The iteratee is invoked with one argument: (value).
+ * each element of `collection` thru `iteratee`. The corresponding value of
+ * each key is an array of elements responsible for generating the key. The
+ * iteratee is invoked with one argument: (value).
*
* @static
* @memberOf _
diff --git a/has.js b/has.js
index da1f4da1f..327eb114e 100644
--- a/has.js
+++ b/has.js
@@ -29,7 +29,7 @@ var baseHas = require('./_baseHas'),
* // => false
*/
function has(object, path) {
- return hasPath(object, path, baseHas);
+ return object != null && hasPath(object, path, baseHas);
}
module.exports = has;
diff --git a/hasIn.js b/hasIn.js
index 7d8b48c7f..2d85e00b1 100644
--- a/hasIn.js
+++ b/hasIn.js
@@ -28,7 +28,7 @@ var baseHasIn = require('./_baseHasIn'),
* // => false
*/
function hasIn(object, path) {
- return hasPath(object, path, baseHasIn);
+ return object != null && hasPath(object, path, baseHasIn);
}
module.exports = hasIn;
diff --git a/invertBy.js b/invertBy.js
index 24d9ca842..4298199cc 100644
--- a/invertBy.js
+++ b/invertBy.js
@@ -9,8 +9,8 @@ var hasOwnProperty = objectProto.hasOwnProperty;
/**
* This method is like `_.invert` except that the inverted object is generated
- * from the results of running each element of `object` through `iteratee`.
- * The corresponding inverted value of each inverted key is an array of keys
+ * from the results of running each element of `object` thru `iteratee`. The
+ * corresponding inverted value of each inverted key is an array of keys
* responsible for generating the inverted value. The iteratee is invoked
* with one argument: (value).
*
diff --git a/isArguments.js b/isArguments.js
index 4699e1dfc..3ca0d3ca1 100644
--- a/isArguments.js
+++ b/isArguments.js
@@ -10,7 +10,8 @@ var objectProto = Object.prototype;
var hasOwnProperty = objectProto.hasOwnProperty;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isArrayBuffer.js b/isArrayBuffer.js
index 671264559..0a6a8e676 100644
--- a/isArrayBuffer.js
+++ b/isArrayBuffer.js
@@ -6,7 +6,8 @@ var arrayBufferTag = '[object ArrayBuffer]';
var objectProto = Object.prototype;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isBoolean.js b/isBoolean.js
index e00d103e3..242fad1ff 100644
--- a/isBoolean.js
+++ b/isBoolean.js
@@ -7,7 +7,8 @@ var boolTag = '[object Boolean]';
var objectProto = Object.prototype;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isDate.js b/isDate.js
index 043323bc2..f85a80174 100644
--- a/isDate.js
+++ b/isDate.js
@@ -7,7 +7,8 @@ var dateTag = '[object Date]';
var objectProto = Object.prototype;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isError.js b/isError.js
index 5133aa8d1..b4a93aebe 100644
--- a/isError.js
+++ b/isError.js
@@ -7,7 +7,8 @@ var errorTag = '[object Error]';
var objectProto = Object.prototype;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isFunction.js b/isFunction.js
index 1a285c245..da02be0e1 100644
--- a/isFunction.js
+++ b/isFunction.js
@@ -8,7 +8,8 @@ var funcTag = '[object Function]',
var objectProto = Object.prototype;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isNaN.js b/isNaN.js
index dfde718cf..7d0d783ba 100644
--- a/isNaN.js
+++ b/isNaN.js
@@ -3,9 +3,10 @@ var isNumber = require('./isNumber');
/**
* Checks if `value` is `NaN`.
*
- * **Note:** This method is not the same as
- * [`isNaN`](https://es5.github.io/#x15.1.2.4) which returns `true` for
- * `undefined` and other non-numeric values.
+ * **Note:** This method is based on
+ * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
+ * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
+ * `undefined` and other non-number values.
*
* @static
* @memberOf _
diff --git a/isNative.js b/isNative.js
index b8e9c10b5..2d5149ba4 100644
--- a/isNative.js
+++ b/isNative.js
@@ -1,8 +1,12 @@
var isFunction = require('./isFunction'),
isHostObject = require('./_isHostObject'),
- isObjectLike = require('./isObjectLike');
+ isObject = require('./isObject'),
+ toSource = require('./_toSource');
-/** Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). */
+/**
+ * Used to match `RegExp`
+ * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).
+ */
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
/** Used to detect host constructors (Safari). */
@@ -42,14 +46,11 @@ var reIsNative = RegExp('^' +
* // => false
*/
function isNative(value) {
- if (value == null) {
+ if (!isObject(value)) {
return false;
}
- if (isFunction(value)) {
- return reIsNative.test(funcToString.call(value));
- }
- return isObjectLike(value) &&
- (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);
+ var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
+ return pattern.test(toSource(value));
}
module.exports = isNative;
diff --git a/isNumber.js b/isNumber.js
index 5b20e8f03..e427282ac 100644
--- a/isNumber.js
+++ b/isNumber.js
@@ -7,7 +7,8 @@ var numberTag = '[object Number]';
var objectProto = Object.prototype;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isObject.js b/isObject.js
index bc827af70..d16542f8b 100644
--- a/isObject.js
+++ b/isObject.js
@@ -1,6 +1,7 @@
/**
- * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
- * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
* @memberOf _
diff --git a/isPlainObject.js b/isPlainObject.js
index 44fe2851a..13a90e7d0 100644
--- a/isPlainObject.js
+++ b/isPlainObject.js
@@ -18,7 +18,8 @@ var hasOwnProperty = objectProto.hasOwnProperty;
var objectCtorString = funcToString.call(Object);
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isRegExp.js b/isRegExp.js
index c319aa46c..8eeb4103e 100644
--- a/isRegExp.js
+++ b/isRegExp.js
@@ -7,7 +7,8 @@ var regexpTag = '[object RegExp]';
var objectProto = Object.prototype;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isString.js b/isString.js
index a0ba11823..573de3b53 100644
--- a/isString.js
+++ b/isString.js
@@ -8,7 +8,8 @@ var stringTag = '[object String]';
var objectProto = Object.prototype;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isSymbol.js b/isSymbol.js
index 435a6f96c..21dd55927 100644
--- a/isSymbol.js
+++ b/isSymbol.js
@@ -7,7 +7,8 @@ var symbolTag = '[object Symbol]';
var objectProto = Object.prototype;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isTypedArray.js b/isTypedArray.js
index da2fe935a..0d86b90cb 100644
--- a/isTypedArray.js
+++ b/isTypedArray.js
@@ -48,7 +48,8 @@ typedArrayTags[weakMapTag] = false;
var objectProto = Object.prototype;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isWeakSet.js b/isWeakSet.js
index f53e0bf62..5395797ae 100644
--- a/isWeakSet.js
+++ b/isWeakSet.js
@@ -7,7 +7,8 @@ var weakSetTag = '[object WeakSet]';
var objectProto = Object.prototype;
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/keyBy.js b/keyBy.js
index 6a9da1f5e..97e6f4b38 100644
--- a/keyBy.js
+++ b/keyBy.js
@@ -2,8 +2,8 @@ var createAggregator = require('./_createAggregator');
/**
* Creates an object composed of keys generated from the results of running
- * each element of `collection` through `iteratee`. The corresponding value
- * of each key is the last element responsible for generating the key. The
+ * each element of `collection` thru `iteratee`. The corresponding value of
+ * each key is the last element responsible for generating the key. The
* iteratee is invoked with one argument: (value).
*
* @static
diff --git a/lodash.js b/lodash.js
index 39dba9bac..81398b40d 100644
--- a/lodash.js
+++ b/lodash.js
@@ -1,6 +1,6 @@
/**
* @license
- * lodash 4.7.0 (Custom Build)
+ * lodash 4.8.0 (Custom Build)
* Build: `lodash -d -o ./foo/lodash.js`
* Copyright jQuery Foundation and other contributors
* Released under MIT license
@@ -13,7 +13,7 @@
var undefined;
/** Used as the semantic version number. */
- var VERSION = '4.7.0';
+ var VERSION = '4.8.0';
/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;
@@ -119,7 +119,10 @@
reIsPlainProp = /^\w*$/,
rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g;
- /** Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). */
+ /**
+ * Used to match `RegExp`
+ * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).
+ */
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
reHasRegExpChar = RegExp(reRegExpChar.source);
@@ -131,7 +134,10 @@
/** Used to match backslashes in property paths. */
var reEscapeChar = /\\(\\)?/g;
- /** Used to match [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). */
+ /**
+ * Used to match
+ * [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components).
+ */
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
/** Used to match `RegExp` flags from their coerced string values. */
@@ -410,7 +416,7 @@
* @private
* @param {Function} func The function to invoke.
* @param {*} thisArg The `this` binding of `func`.
- * @param {...*} args The arguments to invoke `func` with.
+ * @param {Array} args The arguments to invoke `func` with.
* @returns {*} Returns the result of `func`.
*/
function apply(func, thisArg, args) {
@@ -1391,7 +1397,8 @@
var objectCtorString = funcToString.call(Object);
/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
@@ -1450,11 +1457,11 @@
var realNames = {};
/** Used to detect maps, sets, and weakmaps. */
- var dataViewCtorString = DataView ? (DataView + '') : '',
- mapCtorString = Map ? funcToString.call(Map) : '',
- promiseCtorString = Promise ? funcToString.call(Promise) : '',
- setCtorString = Set ? funcToString.call(Set) : '',
- weakMapCtorString = WeakMap ? funcToString.call(WeakMap) : '';
+ var dataViewCtorString = toSource(DataView),
+ mapCtorString = toSource(Map),
+ promiseCtorString = toSource(Promise),
+ setCtorString = toSource(Set),
+ weakMapCtorString = toSource(WeakMap);
/** Used to convert symbols to primitives and strings. */
var symbolProto = Symbol ? Symbol.prototype : undefined,
@@ -3190,16 +3197,7 @@
function baseMatches(source) {
var matchData = getMatchData(source);
if (matchData.length == 1 && matchData[0][2]) {
- var key = matchData[0][0],
- value = matchData[0][1];
-
- return function(object) {
- if (object == null) {
- return false;
- }
- return object[key] === value &&
- (value !== undefined || (key in Object(object)));
- };
+ return matchesStrictComparable(matchData[0][0], matchData[0][1]);
}
return function(object) {
return object === source || baseIsMatch(object, source, matchData);
@@ -3215,6 +3213,9 @@
* @returns {Function} Returns the new function.
*/
function baseMatchesProperty(path, srcValue) {
+ if (isKey(path) && isStrictComparable(srcValue)) {
+ return matchesStrictComparable(path, srcValue);
+ }
return function(object) {
var objValue = get(object, path);
return (objValue === undefined && objValue === srcValue)
@@ -4386,8 +4387,8 @@
*/
function createCtorWrapper(Ctor) {
return function() {
- // Use a `switch` statement to work with class constructors.
- // See http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
+ // Use a `switch` statement to work with class constructors. See
+ // http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
// for more details.
var args = arguments;
switch (args.length) {
@@ -4608,7 +4609,7 @@
*/
function createOver(arrayFunc) {
return rest(function(iteratees) {
- iteratees = arrayMap(baseFlatten(iteratees, 1), getIteratee());
+ iteratees = arrayMap(iteratees, getIteratee());
return rest(function(args) {
var thisArg = this;
return arrayFunc(iteratees, function(iteratee) {
@@ -4641,9 +4642,8 @@
}
/**
- * Creates a function that wraps `func` to invoke it with the optional `this`
- * binding of `thisArg` and the `partials` prepended to those provided to
- * the wrapper.
+ * Creates a function that wraps `func` to invoke it with the `this` binding
+ * of `thisArg` and `partials` prepended to the arguments it receives.
*
* @private
* @param {Function} func The function to wrap.
@@ -4986,7 +4986,8 @@
case regexpTag:
case stringTag:
// Coerce regexes to strings and treat strings, primitives and objects,
- // as equal. See https://es5.github.io/#x15.10.6.4 for more details.
+ // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring
+ // for more details.
return object == (other + '');
case mapTag:
@@ -5153,7 +5154,7 @@
/**
* Gets the appropriate "iteratee" function. If the `_.iteratee` method is
* customized this function returns the custom method, otherwise it returns
- * `baseIteratee`. If arguments are provided the chosen function is invoked
+ * `baseIteratee`. If arguments are provided, the chosen function is invoked
* with them and its result is returned.
*
* @private
@@ -5291,7 +5292,7 @@
getTag = function(value) {
var result = objectToString.call(value),
Ctor = result == objectTag ? value.constructor : null,
- ctorString = typeof Ctor == 'function' ? funcToString.call(Ctor) : '';
+ ctorString = toSource(Ctor);
if (ctorString) {
switch (ctorString) {
@@ -5344,29 +5345,25 @@
* @returns {boolean} Returns `true` if `path` exists, else `false`.
*/
function hasPath(object, path, hasFunc) {
- if (object == null) {
- return false;
- }
- var result = hasFunc(object, path);
- if (!result && !isKey(path)) {
- path = baseCastPath(path);
+ path = isKey(path, object) ? [path] : baseCastPath(path);
- var index = -1,
- length = path.length;
+ var result,
+ index = -1,
+ length = path.length;
- while (object != null && ++index < length) {
- var key = path[index];
- if (!(result = hasFunc(object, key))) {
- break;
- }
- object = object[key];
+ while (++index < length) {
+ var key = path[index];
+ if (!(result = object != null && hasFunc(object, key))) {
+ break;
}
+ object = object[key];
}
- var length = object ? object.length : undefined;
- return result || (
- !!length && isLength(length) && isIndex(path, length) &&
- (isArray(object) || isString(object) || isArguments(object))
- );
+ if (result) {
+ return result;
+ }
+ var length = object ? object.length : 0;
+ return !!length && isLength(length) && isIndex(key, length) &&
+ (isArray(object) || isString(object) || isArguments(object));
}
/**
@@ -5570,6 +5567,25 @@
return value === value && !isObject(value);
}
+ /**
+ * A specialized version of `matchesProperty` for source values suitable
+ * for strict equality comparisons, i.e. `===`.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @param {*} srcValue The value to match.
+ * @returns {Function} Returns the new function.
+ */
+ function matchesStrictComparable(key, srcValue) {
+ return function(object) {
+ if (object == null) {
+ return false;
+ }
+ return object[key] === srcValue &&
+ (srcValue !== undefined || (key in Object(object)));
+ };
+ }
+
/**
* Merges the function metadata of `source` into `data`.
*
@@ -5744,6 +5760,22 @@
return result;
});
+ /**
+ * Converts `func` to its source code.
+ *
+ * @private
+ * @param {Function} func The function to process.
+ * @returns {string} Returns the source code.
+ */
+ function toSource(func) {
+ if (isFunction(func)) {
+ try {
+ return funcToString.call(func);
+ } catch (e) {}
+ }
+ return toString(func);
+ }
+
/**
* Creates a clone of `wrapper`.
*
@@ -5774,7 +5806,8 @@
* @since 3.0.0
* @category Array
* @param {Array} array The array to process.
- * @param {number} [size=0] The length of each chunk.
+ * @param {number} [size=1] The length of each chunk
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
* @returns {Array} Returns the new array containing chunks.
* @example
*
@@ -5784,9 +5817,12 @@
* _.chunk(['a', 'b', 'c', 'd'], 3);
* // => [['a', 'b', 'c'], ['d']]
*/
- function chunk(array, size) {
- size = nativeMax(toInteger(size), 0);
-
+ function chunk(array, size, guard) {
+ if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
+ size = 1;
+ } else {
+ size = nativeMax(toInteger(size), 0);
+ }
var length = array ? array.length : 0;
if (!length || size < 1) {
return [];
@@ -7968,9 +8004,9 @@
/**
* Creates an object composed of keys generated from the results of running
- * each element of `collection` through `iteratee`. The corresponding value
- * of each key is the number of times the key was returned by `iteratee`.
- * The iteratee is invoked with one argument: (value).
+ * each element of `collection` thru `iteratee`. The corresponding value of
+ * each key is the number of times the key was returned by `iteratee`. The
+ * iteratee is invoked with one argument: (value).
*
* @static
* @memberOf _
@@ -8152,8 +8188,8 @@
/**
* Creates a flattened array of values by running each element in `collection`
- * through `iteratee` and flattening the mapped results. The iteratee is
- * invoked with three arguments: (value, index|key, collection).
+ * thru `iteratee` and flattening the mapped results. The iteratee is invoked
+ * with three arguments: (value, index|key, collection).
*
* @static
* @memberOf _
@@ -8290,9 +8326,9 @@
/**
* Creates an object composed of keys generated from the results of running
- * each element of `collection` through `iteratee`. The corresponding value
- * of each key is an array of elements responsible for generating the key.
- * The iteratee is invoked with one argument: (value).
+ * each element of `collection` thru `iteratee`. The corresponding value of
+ * each key is an array of elements responsible for generating the key. The
+ * iteratee is invoked with one argument: (value).
*
* @static
* @memberOf _
@@ -8400,8 +8436,8 @@
/**
* Creates an object composed of keys generated from the results of running
- * each element of `collection` through `iteratee`. The corresponding value
- * of each key is the last element responsible for generating the key. The
+ * each element of `collection` thru `iteratee`. The corresponding value of
+ * each key is the last element responsible for generating the key. The
* iteratee is invoked with one argument: (value).
*
* @static
@@ -8432,7 +8468,7 @@
});
/**
- * Creates an array of values by running each element in `collection` through
+ * Creates an array of values by running each element in `collection` thru
* `iteratee`. The iteratee is invoked with three arguments:
* (value, index|key, collection).
*
@@ -8440,10 +8476,10 @@
* `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
*
* The guarded methods are:
- * `ary`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, `fill`,
- * `invert`, `parseInt`, `random`, `range`, `rangeRight`, `slice`, `some`,
- * `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimEnd`, `trimStart`,
- * and `words`
+ * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
+ * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
+ * `sampleSize`, `slice`, `some`, `sortBy`, `take`, `takeRight`, `template`,
+ * `trim`, `trimEnd`, `trimStart`, and `words`
*
* @static
* @memberOf _
@@ -8565,7 +8601,7 @@
/**
* Reduces `collection` to a value which is the accumulated result of running
- * each element in `collection` through `iteratee`, where each successive
+ * each element in `collection` thru `iteratee`, where each successive
* invocation is supplied the return value of the previous. If `accumulator`
* is not given the first element of `collection` is used as the initial
* value. The iteratee is invoked with four arguments:
@@ -8706,7 +8742,8 @@
* @since 4.0.0
* @category Collection
* @param {Array|Object} collection The collection to sample.
- * @param {number} [n=0] The number of elements to sample.
+ * @param {number} [n=1] The number of elements to sample.
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
* @returns {Array} Returns the random elements.
* @example
*
@@ -8716,13 +8753,17 @@
* _.sampleSize([1, 2, 3], 4);
* // => [2, 3, 1]
*/
- function sampleSize(collection, n) {
+ function sampleSize(collection, n, guard) {
var index = -1,
result = toArray(collection),
length = result.length,
lastIndex = length - 1;
- n = baseClamp(toInteger(n), 0, length);
+ if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
+ n = 1;
+ } else {
+ n = baseClamp(toInteger(n), 0, length);
+ }
while (++index < n) {
var rand = baseRandom(index, lastIndex),
value = result[rand];
@@ -8838,7 +8879,7 @@
/**
* Creates an array of elements, sorted in ascending order by the results of
- * running each element in a collection through each iteratee. This method
+ * running each element in a collection thru each iteratee. This method
* performs a stable sort, that is, it preserves the original sort order of
* equal elements. The iteratees are invoked with one argument: (value).
*
@@ -8944,8 +8985,8 @@
}
/**
- * Creates a function that accepts up to `n` arguments, ignoring any
- * additional arguments.
+ * Creates a function that invokes `func`, with up to `n` arguments,
+ * ignoring any additional arguments.
*
* @static
* @memberOf _
@@ -9002,8 +9043,7 @@
/**
* Creates a function that invokes `func` with the `this` binding of `thisArg`
- * and prepends any additional `_.bind` arguments to those provided to the
- * bound function.
+ * and `partials` prepended to the arguments it receives.
*
* The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
* may be used as a placeholder for partially applied arguments.
@@ -9046,8 +9086,8 @@
});
/**
- * Creates a function that invokes the method at `object[key]` and prepends
- * any additional `_.bindKey` arguments to those provided to the bound function.
+ * Creates a function that invokes the method at `object[key]` with `partials`
+ * prepended to the arguments it receives.
*
* This method differs from `_.bind` by allowing bound functions to reference
* methods that may be redefined or don't yet exist. See
@@ -9553,7 +9593,7 @@
* @memberOf _
* @category Function
* @param {Function} func The function to wrap.
- * @param {...(Function|Function[])} [transforms] The functions to transform
+ * @param {...Function} [transforms] The functions to transform
* arguments, specified individually or in arrays.
* @returns {Function} Returns the new function.
* @example
@@ -9577,7 +9617,7 @@
* // => [100, 10]
*/
var overArgs = rest(function(func, transforms) {
- transforms = arrayMap(baseFlatten(transforms, 1), getIteratee());
+ transforms = arrayMap(transforms, getIteratee());
var funcsLength = transforms.length;
return rest(function(args) {
@@ -9592,9 +9632,9 @@
});
/**
- * Creates a function that invokes `func` with `partial` arguments prepended
- * to those provided to the new function. This method is like `_.bind` except
- * it does **not** alter the `this` binding.
+ * Creates a function that invokes `func` with `partials` prepended to the
+ * arguments it receives. This method is like `_.bind` except it does **not**
+ * alter the `this` binding.
*
* The `_.partial.placeholder` value, which defaults to `_` in monolithic
* builds, may be used as a placeholder for partially applied arguments.
@@ -9631,7 +9671,7 @@
/**
* This method is like `_.partial` except that partially applied arguments
- * are appended to those provided to the new function.
+ * are appended to the arguments it receives.
*
* The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
* builds, may be used as a placeholder for partially applied arguments.
@@ -9668,7 +9708,7 @@
/**
* Creates a function that invokes `func` with arguments arranged according
- * to the specified indexes where the argument value at the first index is
+ * to the specified `indexes` where the argument value at the first index is
* provided as the first argument, the argument value at the second index is
* provided as the second argument, and so on.
*
@@ -9750,7 +9790,7 @@
/**
* Creates a function that invokes `func` with the `this` binding of the
* create function and an array of arguments much like
- * [`Function#apply`](https://es5.github.io/#x15.3.4.3).
+ * [`Function#apply`](http://www.ecma-international.org/ecma-262/6.0/#sec-function.prototype.apply).
*
* **Note:** This method is based on the
* [spread operator](https://mdn.io/spread_operator).
@@ -10639,8 +10679,9 @@
}
/**
- * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
- * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
* @memberOf _
@@ -10785,9 +10826,10 @@
/**
* Checks if `value` is `NaN`.
*
- * **Note:** This method is not the same as
- * [`isNaN`](https://es5.github.io/#x15.1.2.4) which returns `true` for
- * `undefined` and other non-numeric values.
+ * **Note:** This method is based on
+ * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
+ * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
+ * `undefined` and other non-number values.
*
* @static
* @memberOf _
@@ -10835,14 +10877,11 @@
* // => false
*/
function isNative(value) {
- if (value == null) {
+ if (!isObject(value)) {
return false;
}
- if (isFunction(value)) {
- return reIsNative.test(funcToString.call(value));
- }
- return isObjectLike(value) &&
- (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);
+ var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
+ return pattern.test(toSource(value));
}
/**
@@ -11371,7 +11410,7 @@
value = isObject(other) ? (other + '') : other;
}
if (typeof value != 'string') {
- return value === 0 ? value : +value;
+ return value === 0 ? value : +value;
}
value = value.replace(reTrim, '');
var isBinary = reIsBinary.test(value);
@@ -12047,7 +12086,7 @@
* // => false
*/
function has(object, path) {
- return hasPath(object, path, baseHas);
+ return object != null && hasPath(object, path, baseHas);
}
/**
@@ -12077,7 +12116,7 @@
* // => false
*/
function hasIn(object, path) {
- return hasPath(object, path, baseHasIn);
+ return object != null && hasPath(object, path, baseHasIn);
}
/**
@@ -12104,8 +12143,8 @@
/**
* This method is like `_.invert` except that the inverted object is generated
- * from the results of running each element of `object` through `iteratee`.
- * The corresponding inverted value of each inverted key is an array of keys
+ * from the results of running each element of `object` thru `iteratee`. The
+ * corresponding inverted value of each inverted key is an array of keys
* responsible for generating the inverted value. The iteratee is invoked
* with one argument: (value).
*
@@ -12251,8 +12290,8 @@
/**
* The opposite of `_.mapValues`; this method creates an object with the
* same values as `object` and keys generated by running each own enumerable
- * string keyed property of `object` through `iteratee`. The iteratee is
- * invoked with three arguments: (value, key, object).
+ * string keyed property of `object` thru `iteratee`. The iteratee is invoked
+ * with three arguments: (value, key, object).
*
* @static
* @memberOf _
@@ -12280,8 +12319,8 @@
}
/**
- * Creates an object with the same keys as `object` and values generated by
- * running each own enumerable string keyed property of `object` through
+ * Creates an object with the same keys as `object` and values generated
+ * by running each own enumerable string keyed property of `object` thru
* `iteratee`. The iteratee is invoked with three arguments:
* (value, key, object).
*
@@ -12570,7 +12609,7 @@
* console.log(object.a[0].b.c);
* // => 4
*
- * _.set(object, 'x[0].y.z', 5);
+ * _.set(object, ['x', '0', 'y', 'z'], 5);
* console.log(object.x[0].y.z);
* // => 5
*/
@@ -12663,11 +12702,11 @@
/**
* An alternative to `_.reduce`; this method transforms `object` to a new
- * `accumulator` object which is the result of running each of its own enumerable
- * string keyed properties through `iteratee`, with each invocation potentially
- * mutating the `accumulator` object. The iteratee is invoked with four arguments:
- * (accumulator, value, key, object). Iteratee functions may exit iteration
- * early by explicitly returning `false`.
+ * `accumulator` object which is the result of running each of its own
+ * enumerable string keyed properties thru `iteratee`, with each invocation
+ * potentially mutating the `accumulator` object. The iteratee is invoked
+ * with four arguments: (accumulator, value, key, object). Iteratee functions
+ * may exit iteration early by explicitly returning `false`.
*
* @static
* @memberOf _
@@ -12733,7 +12772,7 @@
* console.log(object);
* // => { 'a': [{ 'b': {} }] };
*
- * _.unset(object, 'a[0].b.c');
+ * _.unset(object, ['a', '0', 'b', 'c']);
* // => true
*
* console.log(object);
@@ -13401,7 +13440,8 @@
* @since 3.0.0
* @category String
* @param {string} [string=''] The string to repeat.
- * @param {number} [n=0] The number of times to repeat the string.
+ * @param {number} [n=1] The number of times to repeat the string.
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
* @returns {string} Returns the repeated string.
* @example
*
@@ -13414,8 +13454,13 @@
* _.repeat('abc', 0);
* // => ''
*/
- function repeat(string, n) {
- return baseRepeat(toString(string), toInteger(n));
+ function repeat(string, n, guard) {
+ if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
+ n = 1;
+ } else {
+ n = toInteger(n);
+ }
+ return baseRepeat(toString(string), n);
}
/**
@@ -14640,14 +14685,14 @@
}
/**
- * Creates a function that invokes `iteratees` with the arguments provided
- * to the created function and returns their results.
+ * Creates a function that invokes `iteratees` with the arguments it receives
+ * and returns their results.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Util
- * @param {...(Function|Function[])} iteratees The iteratees to invoke.
+ * @param {...Function} iteratees The iteratees to invoke.
* @returns {Function} Returns the new function.
* @example
*
@@ -14660,13 +14705,13 @@
/**
* Creates a function that checks if **all** of the `predicates` return
- * truthy when invoked with the arguments provided to the created function.
+ * truthy when invoked with the arguments it receives.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Util
- * @param {...(Function|Function[])} predicates The predicates to check.
+ * @param {...Function} predicates The predicates to check.
* @returns {Function} Returns the new function.
* @example
*
@@ -14685,13 +14730,13 @@
/**
* Creates a function that checks if **any** of the `predicates` return
- * truthy when invoked with the arguments provided to the created function.
+ * truthy when invoked with the arguments it receives.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Util
- * @param {...(Function|Function[])} predicates The predicates to check.
+ * @param {...Function} predicates The predicates to check.
* @returns {Function} Returns the new function.
* @example
*
diff --git a/lodash.min.js b/lodash.min.js
index a9176a61d..5c853bbb0 100644
--- a/lodash.min.js
+++ b/lodash.min.js
@@ -1,6 +1,6 @@
/**
* @license
- * lodash 4.7.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
+ * lodash 4.8.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
* Build: `lodash -o ./dist/lodash.js`
*/
;(function(){function t(t,n){return t.set(n[0],n[1]),t}function n(t,n){return t.add(n),t}function r(t,n,r){switch(r.length){case 0:return t.call(n);case 1:return t.call(n,r[0]);case 2:return t.call(n,r[0],r[1]);case 3:return t.call(n,r[0],r[1],r[2])}return t.apply(n,r)}function e(t,n,r,e){for(var u=-1,o=t.length;++un&&!o||!u||r&&!i&&f||e&&f)return 1;if(n>t&&!r||!f||o&&!e&&u||i&&u)return-1}return 0}function W(t){return function(n,r){var e;
return n===T&&r===T?0:(n!==T&&(e=n),r!==T&&(e=e===T?r:t(e,r)),e)}}function B(t){return Mt[t]}function C(t){return Lt[t]}function z(t){return"\\"+Ft[t]}function U(t,n,r){var e=t.length;for(n+=r?0:-1;r?n--:++n-1&&0==t%1&&(null==n?9007199254740991:n)>t}function $(t){for(var n,r=[];!(n=t.next()).done;)r.push(n.value);
-return r}function D(t){var n=-1,r=Array(t.size);return t.forEach(function(t,e){r[++n]=[e,t]}),r}function F(t,n){for(var r=-1,e=t.length,u=0,o=[];++rr?false:(r==t.length-1?t.pop():Ru.call(t,r,1),true)}function qt(t,n){var r=Vt(t,n);return 0>r?T:t[r][1]}function Vt(t,n){for(var r=t.length;r--;)if(de(t[r][0],n))return r;return-1}function Kt(t,n,r){
-var e=Vt(t,n);0>e?t.push([n,r]):t[e][1]=r}function Gt(t,n,r,e){return t===T||de(t,su[r])&&!pu.call(e,r)?n:t}function Ht(t,n,r){(r===T||de(t[n],r))&&(typeof n!="number"||r!==T||n in t)||(t[n]=r)}function Qt(t,n,r){var e=t[n];pu.call(t,n)&&de(e,r)&&(r!==T||n in t)||(t[n]=r)}function Xt(t,n,r,e){return oo(t,function(t,u,o){n(e,t,r(t),o)}),e}function tn(t,n){return t&&ur(n,Te(n),t)}function nn(t,n){for(var r=-1,e=null==t,u=n.length,o=Array(u);++rr?r:t),n!==T&&(t=n>t?n:t)),t}function fn(t,n,r,e,o,i,f){var c;if(e&&(c=i?e(t,o,i,f):e(t)),c!==T)return c;if(!ke(t))return t;if(o=Yo(t)){if(c=Mr(t),!n)return er(t,c)}else{var a=zr(t),l="[object Function]"==a||"[object GeneratorFunction]"==a;if(Ho(t))return Xn(t,n);if("[object Object]"==a||"[object Arguments]"==a||l&&!i){if(M(t))return i?t:{};if(c=Lr(l?{}:t),!n)return ir(t,tn(c,t));
-}else{if(!Ut[a])return i?t:{};c=$r(t,a,fn,n)}}if(f||(f=new Ft),i=f.get(t))return i;if(f.set(t,c),!o)var s=r?bn(t,Te,Cr):Te(t);return u(s||t,function(u,o){s&&(o=u,u=t[o]),Qt(c,o,fn(u,n,r,e,o,t,f))}),c}function cn(t){var n=Te(t),r=n.length;return function(e){if(null==e)return!r;for(var u=r;u--;){var o=n[u],i=t[o],f=e[o];if(f===T&&!(o in Object(e))||!i(f))return false}return true}}function an(t){return ke(t)?Eu(t):{}}function ln(t,n,r){if(typeof t!="function")throw new au("Expected a function");return Su(function(){
-t.apply(T,r)},n)}function sn(t,n,r,e){var u=-1,o=f,i=true,l=t.length,s=[],h=n.length;if(!l)return s;r&&(n=a(n,O(r))),e?(o=c,i=false):n.length>=200&&(o=Dt,i=false,n=new $t(n));t:for(;++u0&&je(i)&&(r||Yo(i)||be(i))?n>1?_n(i,n-1,r,e):l(e,i):r||(e[e.length]=i)}return e}function vn(t,n){return t&&fo(t,n,Te)}function gn(t,n){return t&&co(t,n,Te)}function dn(t,n){return i(n,function(n){return we(t[n])})}function yn(t,n){n=Nr(n,t)?[n]:un(n);for(var r=0,e=n.length;null!=t&&e>r;)t=t[n[r++]];return r&&r==e?t:T}function bn(t,n,r){return n=n(t),Yo(t)?n:l(n,r(t))}function xn(t,n){return pu.call(t,n)||typeof t=="object"&&n in t&&null===Cu(Object(t))}function jn(t,n){return n in Object(t);
-}function mn(t,n,r){for(var e=r?c:f,u=t[0].length,o=t.length,i=o,l=Array(o),s=1/0,h=[];i--;){var p=t[i];i&&n&&(p=a(p,O(n))),s=$u(p.length,s),l[i]=r||!n&&(120>u||120>p.length)?T:new $t(i&&p)}var p=t[0],_=-1,v=l[0];t:for(;++_h.length;){var g=p[_],d=n?n(g):g;if(v?!Dt(v,d):!e(h,d,r)){for(i=o;--i;){var y=l[i];if(y?!Dt(y,d):!e(t[i],d,r))continue t}v&&v.push(d),h.push(g)}}return h}function wn(t,n,r){var e={};return vn(t,function(t,u,o){n(e,r(t),u,o)}),e}function An(t,n,e){return Nr(n,t)||(n=un(n),
-t=Vr(t,n),n=Hr(n)),n=null==t?t:t[n],null==n?T:r(n,t,e)}function On(t,n,r,e,u){if(t===n)n=true;else if(null==t||null==n||!ke(t)&&!Ee(n))n=t!==t&&n!==n;else t:{var o=Yo(t),i=Yo(n),f="[object Array]",c="[object Array]";o||(f=zr(t),f="[object Arguments]"==f?"[object Object]":f),i||(c=zr(n),c="[object Arguments]"==c?"[object Object]":c);var a="[object Object]"==f&&!M(t),i="[object Object]"==c&&!M(n);if((c=f==c)&&!a)u||(u=new Ft),n=o||ze(t)?kr(t,n,On,r,e,u):Er(t,n,f,On,r,e,u);else{if(!(2&e)&&(o=a&&pu.call(t,"__wrapped__"),
-f=i&&pu.call(n,"__wrapped__"),o||f)){t=o?t.value():t,n=f?n.value():n,u||(u=new Ft),n=On(t,n,r,e,u);break t}if(c)n:if(u||(u=new Ft),o=2&e,f=Te(t),i=f.length,c=Te(n).length,i==c||o){for(a=i;a--;){var l=f[a];if(!(o?l in n:xn(n,l))){n=false;break n}}if(c=u.get(t))n=c==n;else{c=true,u.set(t,n);for(var s=o;++ae?c*("desc"==r[e]?-1:1):c;break t}}e=t.b-n.b}return e})}function zn(t,n){return t=Object(t),s(n,function(n,r){return r in t&&(n[r]=t[r]),n},{})}function Un(t,n){for(var r=-1,e=bn(t,Ve,po),u=e.length,o={};++rn||n>9007199254740991)return r;do n%2&&(r+=t),(n=Bu(n/2))&&(t+=t);while(n);return r;
-}function Pn(t,n,r,e){n=Nr(n,t)?[n]:un(n);for(var u=-1,o=n.length,i=o-1,f=t;null!=f&&++un&&(n=-n>u?0:u+n),r=r>u?u:r,0>r&&(r+=u),u=n>r?0:r-n>>>0,n>>>=0,r=Array(u);++e=u){
-for(;u>e;){var o=e+u>>>1,i=t[o];(r?n>=i:n>i)&&null!==i?e=o+1:u=o}return u}return Vn(t,n,tu,r)}function Vn(t,n,r,e){n=r(n);for(var u=0,o=t?t.length:0,i=n!==n,f=null===n,c=n===T;o>u;){var a=Bu((u+o)/2),l=r(t[a]),s=l!==T,h=l===l;(i?h||e:f?h&&s&&(e||null!=l):c?h&&(e||s):null==l?0:e?n>=l:n>l)?u=a+1:o=a}return $u(o,4294967294)}function Kn(t,n){for(var r=0,e=t.length,u=t[0],o=n?n(u):u,i=o,f=1,c=[u];++re?n[e]:T);return i}function Xn(t,n){if(n)return t.slice();var r=new t.constructor(t.length);return t.copy(r),r}function tr(t){var n=new t.constructor(t.byteLength);return new mu(n).set(new mu(t)),n}function nr(t,n,r,e){var u=-1,o=t.length,i=r.length,f=-1,c=n.length,a=Lu(o-i,0),l=Array(c+a);for(e=!e;++fu)&&(l[r[u]]=t[u]);for(;a--;)l[f++]=t[u++];return l}function rr(t,n,r,e){var u=-1,o=t.length,i=-1,f=r.length,c=-1,a=n.length,l=Lu(o-f,0),s=Array(l+a);for(e=!e;++uu)&&(s[l+r[i]]=t[u++]);return s}function er(t,n){var r=-1,e=t.length;for(n||(n=Array(e));++r1?r[u-1]:T,i=u>2?r[2]:T,o=typeof o=="function"?(u--,o):T;for(i&&Fr(r[0],r[1],i)&&(o=3>u?T:o,u=1),n=Object(n);++ei&&f[0]!==a&&f[i-1]!==a?[]:F(f,a),i-=c.length,e>i?wr(t,n,dr,u.placeholder,T,f,c,T,T,e-i):r(this&&this!==Jt&&this instanceof u?o:t,this,f)}var o=_r(t);return u}function gr(t){return ve(function(n){n=_n(n,1);var r=n.length,e=r,u=Ot.prototype.thru;for(t&&n.reverse();e--;){var o=n[e];if(typeof o!="function")throw new au("Expected a function");if(u&&!i&&"wrapper"==Ir(o))var i=new Ot([],true)}for(e=i?e:r;++e=200)return i.plant(e).value();for(var u=0,t=r?n[u].apply(this,t):e;++ud)return j=F(b,j),wr(t,n,dr,l.placeholder,r,b,j,f,c,a-d);if(j=h?r:this,y=p?j[t]:t,d=b.length,f){x=b.length;
-for(var m=$u(f.length,x),w=er(b);m--;){var A=f[m];b[m]=L(A,x)?w[A]:T}}else v&&d>1&&b.reverse();return s&&d>c&&(b.length=c),this&&this!==Jt&&this instanceof l&&(y=g||_r(y)),y.apply(j,b)}var s=128&n,h=1&n,p=2&n,_=24&n,v=512&n,g=p?T:_r(t);return l}function yr(t,n){return function(r,e){return wn(r,t,n(e))}}function br(t){return ve(function(n){return n=a(_n(n,1),Sr()),ve(function(e){var u=this;return t(n,function(t){return r(t,u,e)})})})}function xr(t,n){n=n===T?" ":n+"";var r=n.length;return 2>r?r?Nn(n,t):n:(r=Nn(n,Wu(t/P(n))),
-St.test(n)?r.match(It).slice(0,t).join(""):r.slice(0,t))}function jr(t,n,e,u){function o(){for(var n=-1,c=arguments.length,a=-1,l=u.length,s=Array(l+c),h=this&&this!==Jt&&this instanceof o?f:t;++an?1:-1:De(e)||0;var u=-1;r=Lu(Wu((r-n)/(e||1)),0);for(var o=Array(r);r--;)o[t?r:++u]=n,
-n+=e;return o}}function wr(t,n,r,e,u,o,i,f,c,a){var l=8&n;f=f?er(f):T;var s=l?i:T;i=l?T:i;var h=l?o:T;return o=l?T:o,n=(n|(l?32:64))&~(l?64:32),4&n||(n&=-4),n=[t,n,u,h,s,o,i,f,c,a],r=r.apply(T,n),Zr(t)&&_o(r,n),r.placeholder=e,r}function Ar(t){var n=fu[t];return function(t,r){if(t=De(t),r=Le(r)){var e=(Ne(t)+"e").split("e"),e=n(e[0]+"e"+(+e[1]+r)),e=(Ne(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return n(t)}}function Or(t,n,r,e,u,o,i,f){var c=2&n;if(!c&&typeof t!="function")throw new au("Expected a function");
-var a=e?e.length:0;if(a||(n&=-97,e=u=T),i=i===T?i:Lu(Le(i),0),f=f===T?f:Le(f),a-=u?u.length:0,64&n){var l=e,s=u;e=u=T}var h=c?T:so(t);return o=[t,n,r,e,u,l,s,o,i,f],h&&(r=o[1],t=h[1],n=r|t,e=128==t&&8==r||128==t&&256==r&&h[8]>=o[7].length||384==t&&h[8]>=h[7].length&&8==r,131>n||e)&&(1&t&&(o[2]=h[2],n|=1&r?0:4),(r=h[3])&&(e=o[3],o[3]=e?nr(e,r,h[4]):er(r),o[4]=e?F(o[3],"__lodash_placeholder__"):er(h[4])),(r=h[5])&&(e=o[5],o[5]=e?rr(e,r,h[6]):er(r),o[6]=e?F(o[5],"__lodash_placeholder__"):er(h[6])),(r=h[7])&&(o[7]=er(r)),
-128&t&&(o[8]=null==o[8]?h[8]:$u(o[8],h[8])),null==o[9]&&(o[9]=h[9]),o[0]=h[0],o[1]=n),t=o[0],n=o[1],r=o[2],e=o[3],u=o[4],f=o[9]=null==o[9]?c?0:t.length:Lu(o[9]-a,0),!f&&24&n&&(n&=-25),(h?ao:_o)(n&&1!=n?8==n||16==n?vr(t,n,f):32!=n&&33!=n||u.length?dr.apply(T,o):jr(t,n,r,e):sr(t,n,r),o)}function kr(t,n,r,e,u,o){var i=-1,f=2&u,c=1&u,a=t.length,l=n.length;if(!(a==l||f&&l>a))return false;if(l=o.get(t))return l==n;for(l=true,o.set(t,n);++in?0:n,e)):[]}function Jr(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:Le(n),n=e-n,Zn(t,0,0>n?0:n)):[]}function Yr(t){return t?t[0]:T}function Hr(t){var n=t?t.length:0;return n?t[n-1]:T}function Qr(t,n){return t&&t.length&&n&&n.length?$n(t,n):t}function Xr(t){return t?Nu.call(t):t}function te(t){if(!t||!t.length)return[];var n=0;return t=i(t,function(t){
-return je(t)?(n=Lu(t.length,n),true):void 0}),w(n,function(n){return a(t,Mn(n))})}function ne(t,n){if(!t||!t.length)return[];var e=te(t);return null==n?e:a(e,function(t){return r(n,T,t)})}function re(t){return t=xt(t),t.__chain__=true,t}function ee(t,n){return n(t)}function ue(){return this}function oe(t,n){return typeof n=="function"&&Yo(t)?u(t,n):oo(t,Sr(n))}function ie(t,n){var r;if(typeof n=="function"&&Yo(t)){for(r=t.length;r--&&false!==n(t[r],r,t););r=t}else r=io(t,Sr(n));return r}function fe(t,n){
-return(Yo(t)?a:Sn)(t,Sr(n,3))}function ce(t,n){var r=-1,e=Me(t),u=e.length,o=u-1;for(n=on(Le(n),0,u);++r=t&&(n=T),r}}function se(t,n,r){return n=r?T:n,t=Or(t,8,T,T,T,T,T,n),t.placeholder=se.placeholder,t}function he(t,n,r){
-return n=r?T:n,t=Or(t,16,T,T,T,T,T,n),t.placeholder=he.placeholder,t}function pe(t,n,r){function e(n){var r=c,e=a;return c=a=T,p=n,l=t.apply(e,r)}function u(t){var r=t-h;return t-=p,!h||r>=n||0>r||false!==v&&t>=v}function o(){var t=No();if(u(t))return i(t);var r;r=t-p,t=n-(t-h),r=false===v?t:$u(t,v-r),s=Su(o,r)}function i(t){return wu(s),s=T,g&&c?e(t):(c=a=T,l)}function f(){var t=No(),r=u(t);return c=arguments,a=this,h=t,r?s===T?(p=t=h,s=Su(o,n),_?e(t):l):(wu(s),s=Su(o,n),e(h)):l}var c,a,l,s,h=0,p=0,_=false,v=false,g=true;
-if(typeof t!="function")throw new au("Expected a function");return n=De(n)||0,ke(r)&&(_=!!r.leading,v="maxWait"in r&&Lu(De(r.maxWait)||0,n),g="trailing"in r?!!r.trailing:g),f.cancel=function(){s!==T&&wu(s),h=p=0,c=a=s=T},f.flush=function(){return s===T?l:i(No())},f}function _e(t,n){function r(){var e=arguments,u=n?n.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=t.apply(this,e),r.cache=o.set(u,e),e)}if(typeof t!="function"||n&&typeof n!="function")throw new au("Expected a function");return r.cache=new(_e.Cache||Lt),
-r}function ve(t,n){if(typeof t!="function")throw new au("Expected a function");return n=Lu(n===T?t.length-1:Le(n),0),function(){for(var e=arguments,u=-1,o=Lu(e.length-n,0),i=Array(o);++un}function be(t){return je(t)&&pu.call(t,"callee")&&(!Iu.call(t,"callee")||"[object Arguments]"==gu.call(t))}function xe(t){return null!=t&&Oe(ho(t))&&!we(t)}function je(t){return Ee(t)&&xe(t)}function me(t){return Ee(t)?"[object Error]"==gu.call(t)||typeof t.message=="string"&&typeof t.name=="string":false}function we(t){return t=ke(t)?gu.call(t):"","[object Function]"==t||"[object GeneratorFunction]"==t}function Ae(t){return typeof t=="number"&&t==Le(t)}function Oe(t){return typeof t=="number"&&t>-1&&0==t%1&&9007199254740991>=t;
-}function ke(t){var n=typeof t;return!!t&&("object"==n||"function"==n)}function Ee(t){return!!t&&typeof t=="object"}function Ie(t){return null==t?false:we(t)?yu.test(hu.call(t)):Ee(t)&&(M(t)?yu:yt).test(t)}function Se(t){return typeof t=="number"||Ee(t)&&"[object Number]"==gu.call(t)}function Re(t){return!Ee(t)||"[object Object]"!=gu.call(t)||M(t)?false:(t=Cu(Object(t)),null===t?true:(t=pu.call(t,"constructor")&&t.constructor,typeof t=="function"&&t instanceof t&&hu.call(t)==vu))}function We(t){return ke(t)&&"[object RegExp]"==gu.call(t);
-}function Be(t){return typeof t=="string"||!Yo(t)&&Ee(t)&&"[object String]"==gu.call(t)}function Ce(t){return typeof t=="symbol"||Ee(t)&&"[object Symbol]"==gu.call(t)}function ze(t){return Ee(t)&&Oe(t.length)&&!!zt[gu.call(t)]}function Ue(t,n){return n>t}function Me(t){if(!t)return[];if(xe(t))return Be(t)?t.match(It):er(t);if(ku&&t[ku])return $(t[ku]());var n=zr(t);return("[object Map]"==n?D:"[object Set]"==n?N:Je)(t)}function Le(t){if(!t)return 0===t?t:0;if(t=De(t),t===V||t===-V)return 1.7976931348623157e308*(0>t?-1:1);
-var n=t%1;return t===t?n?t-n:t:0}function $e(t){return t?on(Le(t),0,4294967295):0}function De(t){if(typeof t=="number")return t;if(Ce(t))return K;if(ke(t)&&(t=we(t.valueOf)?t.valueOf():t,t=ke(t)?t+"":t),typeof t!="string")return 0===t?t:+t;t=t.replace(at,"");var n=dt.test(t);return n||bt.test(t)?Pt(t.slice(2),n?2:8):gt.test(t)?K:+t}function Fe(t){return ur(t,Ve(t))}function Ne(t){if(typeof t=="string")return t;if(null==t)return"";if(Ce(t))return uo?uo.call(t):"";var n=t+"";return"0"==n&&1/t==-V?"-0":n;
-}function Pe(t,n,r){return t=null==t?T:yn(t,n),t===T?r:t}function Ze(t,n){return Ur(t,n,xn)}function qe(t,n){return Ur(t,n,jn)}function Te(t){var n=qr(t);if(!n&&!xe(t))return Mu(Object(t));var r,e=Dr(t),u=!!e,e=e||[],o=e.length;for(r in t)!xn(t,r)||u&&("length"==r||L(r,o))||n&&"constructor"==r||e.push(r);return e}function Ve(t){for(var n=-1,r=qr(t),e=In(t),u=e.length,o=Dr(t),i=!!o,o=o||[],f=o.length;++ne.length?Kt(e,t,n):(r.array=null,r.map=new Lt(e))),(r=r.map)&&r.set(t,n),this};var oo=ar(vn),io=ar(gn,true),fo=lr(),co=lr(true);
-Au&&!Iu.call({valueOf:1},"valueOf")&&(In=function(t){return $(Au(t))});var ao=Gu?function(t,n){return Gu.set(t,n),t}:tu,lo=Tu&&2===new Tu([1,2]).size?function(t){return new Tu(t)}:eu,so=Gu?function(t){return Gu.get(t)}:eu,ho=Mn("length");Ou||(Cr=function(){return[]});var po=Ou?function(t){for(var n=[];t;)l(n,Cr(t)),t=Cu(Object(t));return n}:Cr;(Pu&&"[object DataView]"!=zr(new Pu(new ArrayBuffer(1)))||Zu&&"[object Map]"!=zr(new Zu)||qu&&"[object Promise]"!=zr(qu.resolve())||Tu&&"[object Set]"!=zr(new Tu)||Vu&&"[object WeakMap]"!=zr(new Vu))&&(zr=function(t){
-var n=gu.call(t);if(t="[object Object]"==n?t.constructor:null,t=typeof t=="function"?hu.call(t):"")switch(t){case Hu:return"[object DataView]";case Qu:return"[object Map]";case Xu:return"[object Promise]";case to:return"[object Set]";case no:return"[object WeakMap]"}return n});var _o=function(){var t=0,n=0;return function(r,e){var u=No(),o=16-(u-n);if(n=u,o>0){if(150<=++t)return r}else t=0;return ao(r,e)}}(),vo=_e(function(t){var n=[];return Ne(t).replace(it,function(t,r,e,u){n.push(e?u.replace(ht,"$1"):r||t);
-}),n}),go=ve(function(t,n){return je(t)?sn(t,_n(n,1,true)):[]}),yo=ve(function(t,n){var r=Hr(n);return je(r)&&(r=T),je(t)?sn(t,_n(n,1,true),Sr(r)):[]}),bo=ve(function(t,n){var r=Hr(n);return je(r)&&(r=T),je(t)?sn(t,_n(n,1,true),T,r):[]}),xo=ve(function(t){var n=a(t,rn);return n.length&&n[0]===t[0]?mn(n):[]}),jo=ve(function(t){var n=Hr(t),r=a(t,rn);return n===Hr(r)?n=T:r.pop(),r.length&&r[0]===t[0]?mn(r,Sr(n)):[]}),mo=ve(function(t){var n=Hr(t),r=a(t,rn);return n===Hr(r)?n=T:r.pop(),r.length&&r[0]===t[0]?mn(r,T,n):[];
-}),wo=ve(Qr),Ao=ve(function(t,n){n=a(_n(n,1),String);var r=nn(t,n);return Dn(t,n.sort(R)),r}),Oo=ve(function(t){return Gn(_n(t,1,true))}),ko=ve(function(t){var n=Hr(t);return je(n)&&(n=T),Gn(_n(t,1,true),Sr(n))}),Eo=ve(function(t){var n=Hr(t);return je(n)&&(n=T),Gn(_n(t,1,true),T,n)}),Io=ve(function(t,n){return je(t)?sn(t,n):[]}),So=ve(function(t){return Hn(i(t,je))}),Ro=ve(function(t){var n=Hr(t);return je(n)&&(n=T),Hn(i(t,je),Sr(n))}),Wo=ve(function(t){var n=Hr(t);return je(n)&&(n=T),Hn(i(t,je),T,n)}),Bo=ve(te),Co=ve(function(t){
-var n=t.length,n=n>1?t[n-1]:T,n=typeof n=="function"?(t.pop(),n):T;return ne(t,n)}),zo=ve(function(t){function n(n){return nn(n,t)}t=_n(t,1);var r=t.length,e=r?t[0]:0,u=this.__wrapped__;return 1>=r&&!this.__actions__.length&&u instanceof kt&&L(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:ee,args:[n],thisArg:T}),new Ot(u,this.__chain__).thru(function(t){return r&&!t.length&&t.push(T),t})):this.thru(n)}),Uo=fr(function(t,n,r){pu.call(t,r)?++t[r]:t[r]=1}),Mo=fr(function(t,n,r){pu.call(t,r)?t[r].push(n):t[r]=[n];
-}),Lo=ve(function(t,n,e){var u=-1,o=typeof n=="function",i=Nr(n),f=xe(t)?Array(t.length):[];return oo(t,function(t){var c=o?n:i&&null!=t?t[n]:T;f[++u]=c?r(c,t,e):An(t,n,e)}),f}),$o=fr(function(t,n,r){t[r]=n}),Do=fr(function(t,n,r){t[r?0:1].push(n)},function(){return[[],[]]}),Fo=ve(function(t,n){if(null==t)return[];var r=n.length;return r>1&&Fr(t,n[0],n[1])?n=[]:r>2&&Fr(n[0],n[1],n[2])&&(n.length=1),Cn(t,_n(n,1),[])}),No=ou.now,Po=ve(function(t,n,r){var e=1;if(r.length)var u=F(r,Br(Po)),e=32|e;return Or(t,e,n,r,u);
-}),Zo=ve(function(t,n,r){var e=3;if(r.length)var u=F(r,Br(Zo)),e=32|e;return Or(n,e,t,r,u)}),qo=ve(function(t,n){return ln(t,1,n)}),To=ve(function(t,n,r){return ln(t,De(n)||0,r)});_e.Cache=Lt;var Vo=ve(function(t,n){n=a(_n(n,1),Sr());var e=n.length;return ve(function(u){for(var o=-1,i=$u(u.length,e);++o--t?n.apply(this,arguments):void 0}},xt.ary=ae,xt.assign=Qo,xt.assignIn=Xo,xt.assignInWith=ti,xt.assignWith=ni,xt.at=ri,xt.before=le,xt.bind=Po,xt.bindAll=ji,xt.bindKey=Zo,xt.castArray=ge,xt.chain=re,xt.chunk=function(t,n){
-n=Lu(Le(n),0);var r=t?t.length:0;if(!r||1>n)return[];for(var e=0,u=0,o=Array(Wu(r/n));r>e;)o[u++]=Zn(t,e,e+=n);return o},xt.compact=function(t){for(var n=-1,r=t?t.length:0,e=0,u=[];++nt)return t?er(n):[];for(var r=Array(t-1);t--;)r[t-1]=arguments[t];for(var t=_n(r,1),r=-1,e=n.length,u=-1,o=t.length,i=Array(e+o);++rr&&(r=-r>u?0:u+r),e=e===T||e>u?u:Le(e),0>e&&(e+=u),e=r>e?0:$e(e);e>r;)t[r++]=n;return t},xt.filter=function(t,n){return(Yo(t)?i:pn)(t,Sr(n,3))},xt.flatMap=function(t,n){return _n(fe(t,n),1)},xt.flatMapDeep=function(t,n){
-return _n(fe(t,n),V)},xt.flatMapDepth=function(t,n,r){return r=r===T?1:Le(r),_n(fe(t,n),r)},xt.flatten=function(t){return t&&t.length?_n(t,1):[]},xt.flattenDeep=function(t){return t&&t.length?_n(t,V):[]},xt.flattenDepth=function(t,n){return t&&t.length?(n=n===T?1:Le(n),_n(t,n)):[]},xt.flip=function(t){return Or(t,512)},xt.flow=mi,xt.flowRight=wi,xt.fromPairs=function(t){for(var n=-1,r=t?t.length:0,e={};++nn?0:n)):[]},xt.takeRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:Le(n),n=e-n,Zn(t,0>n?0:n,e)):[]},xt.takeRightWhile=function(t,n){return t&&t.length?Jn(t,Sr(n,3),false,true):[]},xt.takeWhile=function(t,n){return t&&t.length?Jn(t,Sr(n,3)):[]},xt.tap=function(t,n){return n(t),t},xt.throttle=function(t,n,r){var e=true,u=true;if(typeof t!="function")throw new au("Expected a function");
-return ke(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),pe(t,n,{leading:e,maxWait:n,trailing:u})},xt.thru=ee,xt.toArray=Me,xt.toPairs=Ke,xt.toPairsIn=Ge,xt.toPath=function(t){return Yo(t)?a(t,en):Ce(t)?[t]:er(vo(t))},xt.toPlainObject=Fe,xt.transform=function(t,n,r){var e=Yo(t)||ze(t);if(n=Sr(n,4),null==r)if(e||ke(t)){var o=t.constructor;r=e?Yo(t)?new o:[]:we(o)?an(Cu(Object(t))):{}}else r={};return(e?u:vn)(t,function(t,e,u){return n(r,t,e,u)}),r},xt.unary=function(t){return ae(t,1);
-},xt.union=Oo,xt.unionBy=ko,xt.unionWith=Eo,xt.uniq=function(t){return t&&t.length?Gn(t):[]},xt.uniqBy=function(t,n){return t&&t.length?Gn(t,Sr(n)):[]},xt.uniqWith=function(t,n){return t&&t.length?Gn(t,T,n):[]},xt.unset=function(t,n){var r;if(null==t)r=true;else{r=t;var e=n,e=Nr(e,r)?[e]:un(e);r=Vr(r,e),e=Hr(e),r=null!=r&&Ze(r,e)?delete r[e]:true}return r},xt.unzip=te,xt.unzipWith=ne,xt.update=function(t,n,r){return null==t?t:Pn(t,n,(typeof r=="function"?r:tu)(yn(t,n)),void 0)},xt.updateWith=function(t,n,r,e){
-return e=typeof e=="function"?e:T,null!=t&&(t=Pn(t,n,(typeof r=="function"?r:tu)(yn(t,n)),e)),t},xt.values=Je,xt.valuesIn=function(t){return null==t?[]:k(t,Ve(t))},xt.without=Io,xt.words=Qe,xt.wrap=function(t,n){return n=null==n?tu:n,Ko(n,t)},xt.xor=So,xt.xorBy=Ro,xt.xorWith=Wo,xt.zip=Bo,xt.zipObject=function(t,n){return Qn(t||[],n||[],Qt)},xt.zipObjectDeep=function(t,n){return Qn(t||[],n||[],Pn)},xt.zipWith=Co,xt.entries=Ke,xt.entriesIn=Ge,xt.extend=Xo,xt.extendWith=ti,ru(xt,xt),xt.add=Wi,xt.attempt=xi,
-xt.camelCase=hi,xt.capitalize=Ye,xt.ceil=Bi,xt.clamp=function(t,n,r){return r===T&&(r=n,n=T),r!==T&&(r=De(r),r=r===r?r:0),n!==T&&(n=De(n),n=n===n?n:0),on(De(t),n,r)},xt.clone=function(t){return fn(t,false,true)},xt.cloneDeep=function(t){return fn(t,true,true)},xt.cloneDeepWith=function(t,n){return fn(t,true,true,n)},xt.cloneWith=function(t,n){return fn(t,false,true,n)},xt.deburr=He,xt.divide=Ci,xt.endsWith=function(t,n,r){t=Ne(t),n=typeof n=="string"?n:n+"";var e=t.length;return r=r===T?e:on(Le(r),0,e),r-=n.length,
-r>=0&&t.indexOf(n,r)==r},xt.eq=de,xt.escape=function(t){return(t=Ne(t))&&tt.test(t)?t.replace(Q,C):t},xt.escapeRegExp=function(t){return(t=Ne(t))&&ct.test(t)?t.replace(ft,"\\$&"):t},xt.every=function(t,n,r){var e=Yo(t)?o:hn;return r&&Fr(t,n,r)&&(n=T),e(t,Sr(n,3))},xt.find=function(t,n){if(n=Sr(n,3),Yo(t)){var r=g(t,n);return r>-1?t[r]:T}return v(t,n,oo)},xt.findIndex=function(t,n){return t&&t.length?g(t,Sr(n,3)):-1},xt.findKey=function(t,n){return v(t,Sr(n,3),vn,true)},xt.findLast=function(t,n){if(n=Sr(n,3),
-Yo(t)){var r=g(t,n,true);return r>-1?t[r]:T}return v(t,n,io)},xt.findLastIndex=function(t,n){return t&&t.length?g(t,Sr(n,3),true):-1},xt.findLastKey=function(t,n){return v(t,Sr(n,3),gn,true)},xt.floor=zi,xt.forEach=oe,xt.forEachRight=ie,xt.forIn=function(t,n){return null==t?t:fo(t,Sr(n),Ve)},xt.forInRight=function(t,n){return null==t?t:co(t,Sr(n),Ve)},xt.forOwn=function(t,n){return t&&vn(t,Sr(n))},xt.forOwnRight=function(t,n){return t&&gn(t,Sr(n))},xt.get=Pe,xt.gt=ye,xt.gte=function(t,n){return t>=n},xt.has=Ze,
-xt.hasIn=qe,xt.head=Yr,xt.identity=tu,xt.includes=function(t,n,r,e){return t=xe(t)?t:Je(t),r=r&&!e?Le(r):0,e=t.length,0>r&&(r=Lu(e+r,0)),Be(t)?e>=r&&-1r&&(r=Lu(e+r,0)),d(t,n,r)):-1},xt.inRange=function(t,n,r){return n=De(n)||0,r===T?(r=n,n=0):r=De(r)||0,t=De(t),t>=$u(n,r)&&t=-9007199254740991&&9007199254740991>=t},xt.isSet=function(t){return Ee(t)&&"[object Set]"==zr(t)},xt.isString=Be,xt.isSymbol=Ce,xt.isTypedArray=ze,xt.isUndefined=function(t){return t===T},xt.isWeakMap=function(t){return Ee(t)&&"[object WeakMap]"==zr(t)},xt.isWeakSet=function(t){return Ee(t)&&"[object WeakSet]"==gu.call(t);
-},xt.join=function(t,n){return t?Uu.call(t,n):""},xt.kebabCase=pi,xt.last=Hr,xt.lastIndexOf=function(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e;if(r!==T&&(u=Le(r),u=(0>u?Lu(e+u,0):$u(u,e-1))+1),n!==n)return U(t,u,true);for(;u--;)if(t[u]===n)return u;return-1},xt.lowerCase=_i,xt.lowerFirst=vi,xt.lt=Ue,xt.lte=function(t,n){return n>=t},xt.max=function(t){return t&&t.length?_(t,tu,ye):T},xt.maxBy=function(t,n){return t&&t.length?_(t,Sr(n),ye):T},xt.mean=function(t){return b(t,tu)},xt.meanBy=function(t,n){
-return b(t,Sr(n))},xt.min=function(t){return t&&t.length?_(t,tu,Ue):T},xt.minBy=function(t,n){return t&&t.length?_(t,Sr(n),Ue):T},xt.multiply=Ui,xt.noConflict=function(){return Jt._===this&&(Jt._=du),this},xt.noop=eu,xt.now=No,xt.pad=function(t,n,r){t=Ne(t);var e=(n=Le(n))?P(t):0;return n&&n>e?(n=(n-e)/2,xr(Bu(n),r)+t+xr(Wu(n),r)):t},xt.padEnd=function(t,n,r){t=Ne(t);var e=(n=Le(n))?P(t):0;return n&&n>e?t+xr(n-e,r):t},xt.padStart=function(t,n,r){t=Ne(t);var e=(n=Le(n))?P(t):0;return n&&n>e?xr(n-e,r)+t:t;
-},xt.parseInt=function(t,n,r){return r||null==n?n=0:n&&(n=+n),t=Ne(t).replace(at,""),Du(t,n||(vt.test(t)?16:10))},xt.random=function(t,n,r){if(r&&typeof r!="boolean"&&Fr(t,n,r)&&(n=r=T),r===T&&(typeof n=="boolean"?(r=n,n=T):typeof t=="boolean"&&(r=t,t=T)),t===T&&n===T?(t=0,n=1):(t=De(t)||0,n===T?(n=t,t=0):n=De(n)||0),t>n){var e=t;t=n,n=e}return r||t%1||n%1?(r=Fu(),$u(t+r*(n-t+Nt("1e-"+((r+"").length-1))),n)):Fn(t,n)},xt.reduce=function(t,n,r){var e=Yo(t)?s:x,u=3>arguments.length;return e(t,Sr(n,4),r,u,oo);
-},xt.reduceRight=function(t,n,r){var e=Yo(t)?h:x,u=3>arguments.length;return e(t,Sr(n,4),r,u,io)},xt.repeat=function(t,n){return Nn(Ne(t),Le(n))},xt.replace=function(){var t=arguments,n=Ne(t[0]);return 3>t.length?n:n.replace(t[1],t[2])},xt.result=function(t,n,r){n=Nr(n,t)?[n]:un(n);var e=-1,u=n.length;for(u||(t=T,u=1);++e0?t[Fn(0,n-1)]:T;
-},xt.size=function(t){if(null==t)return 0;if(xe(t)){var n=t.length;return n&&Be(t)?P(t):n}return Ee(t)&&(n=zr(t),"[object Map]"==n||"[object Set]"==n)?t.size:Te(t).length},xt.snakeCase=gi,xt.some=function(t,n,r){var e=Yo(t)?p:qn;return r&&Fr(t,n,r)&&(n=T),e(t,Sr(n,3))},xt.sortedIndex=function(t,n){return Tn(t,n)},xt.sortedIndexBy=function(t,n,r){return Vn(t,n,Sr(r))},xt.sortedIndexOf=function(t,n){var r=t?t.length:0;if(r){var e=Tn(t,n);if(r>e&&de(t[e],n))return e}return-1},xt.sortedLastIndex=function(t,n){
-return Tn(t,n,true)},xt.sortedLastIndexBy=function(t,n,r){return Vn(t,n,Sr(r),true)},xt.sortedLastIndexOf=function(t,n){if(t&&t.length){var r=Tn(t,n,true)-1;if(de(t[r],n))return r}return-1},xt.startCase=di,xt.startsWith=function(t,n,r){return t=Ne(t),r=on(Le(r),0,t.length),t.lastIndexOf(n,r)==r},xt.subtract=Li,xt.sum=function(t){return t&&t.length?m(t,tu):0},xt.sumBy=function(t,n){return t&&t.length?m(t,Sr(n)):0},xt.template=function(t,n,r){var e=xt.templateSettings;r&&Fr(t,n,r)&&(n=T),t=Ne(t),n=ti({},n,e,Gt),
-r=ti({},n.imports,e.imports,Gt);var u,o,i=Te(r),f=k(r,i),c=0;r=n.interpolate||mt;var a="__p+='";r=cu((n.escape||mt).source+"|"+r.source+"|"+(r===et?pt:mt).source+"|"+(n.evaluate||mt).source+"|$","g");var l="sourceURL"in n?"//# sourceURL="+n.sourceURL+"\n":"";if(t.replace(r,function(n,r,e,i,f,l){return e||(e=i),a+=t.slice(c,l).replace(wt,z),r&&(u=true,a+="'+__e("+r+")+'"),f&&(o=true,a+="';"+f+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+n.length,n}),a+="';",(n=n.variable)||(a="with(obj){"+a+"}"),
-a=(o?a.replace(G,""):a).replace(J,"$1").replace(Y,"$1;"),a="function("+(n||"obj")+"){"+(n?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",n=xi(function(){return Function(i,l+"return "+a).apply(T,f)}),n.source=a,me(n))throw n;return n},xt.times=function(t,n){if(t=Le(t),1>t||t>9007199254740991)return[];var r=4294967295,e=$u(t,4294967295);for(n=Sr(n),t-=4294967295,e=w(e,n);++r=o)return t;if(o=r-P(e),1>o)return e;if(r=i?i.slice(0,o).join(""):t.slice(0,o),u===T)return r+e;if(i&&(o+=r.length-o),We(u)){if(t.slice(o).search(u)){
-var f=r;for(u.global||(u=cu(u.source,Ne(_t.exec(u))+"g")),u.lastIndex=0;i=u.exec(f);)var c=i.index;r=r.slice(0,c===T?o:c)}}else t.indexOf(u,o)!=o&&(u=r.lastIndexOf(u),u>-1&&(r=r.slice(0,u)));return r+e},xt.unescape=function(t){return(t=Ne(t))&&X.test(t)?t.replace(H,Z):t},xt.uniqueId=function(t){var n=++_u;return Ne(t)+n},xt.upperCase=yi,xt.upperFirst=bi,xt.each=oe,xt.eachRight=ie,xt.first=Yr,ru(xt,function(){var t={};return vn(xt,function(n,r){pu.call(xt.prototype,r)||(t[r]=n)}),t}(),{chain:false}),
-xt.VERSION="4.7.0",u("bind bindKey curry curryRight partial partialRight".split(" "),function(t){xt[t].placeholder=xt}),u(["drop","take"],function(t,n){kt.prototype[t]=function(r){var e=this.__filtered__;if(e&&!n)return new kt(this);r=r===T?1:Lu(Le(r),0);var u=this.clone();return e?u.__takeCount__=$u(r,u.__takeCount__):u.__views__.push({size:$u(r,4294967295),type:t+(0>u.__dir__?"Right":"")}),u},kt.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse()}}),u(["filter","map","takeWhile"],function(t,n){
-var r=n+1,e=1==r||3==r;kt.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:Sr(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),u(["head","last"],function(t,n){var r="take"+(n?"Right":"");kt.prototype[t]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right");kt.prototype[t]=function(){return this.__filtered__?new kt(this):this[r](1)}}),kt.prototype.compact=function(){return this.filter(tu)},kt.prototype.find=function(t){
-return this.filter(t).head()},kt.prototype.findLast=function(t){return this.reverse().find(t)},kt.prototype.invokeMap=ve(function(t,n){return typeof t=="function"?new kt(this):this.map(function(r){return An(r,t,n)})}),kt.prototype.reject=function(t){return t=Sr(t,3),this.filter(function(n){return!t(n)})},kt.prototype.slice=function(t,n){t=Le(t);var r=this;return r.__filtered__&&(t>0||0>n)?new kt(r):(0>t?r=r.takeRight(-t):t&&(r=r.drop(t)),n!==T&&(n=Le(n),r=0>n?r.dropRight(-n):r.take(n-t)),r)},kt.prototype.takeRightWhile=function(t){
-return this.reverse().takeWhile(t).reverse()},kt.prototype.toArray=function(){return this.take(4294967295)},vn(kt.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),u=xt[e?"take"+("last"==n?"Right":""):n],o=e||/^find/.test(n);u&&(xt.prototype[n]=function(){function n(t){return t=u.apply(xt,l([t],f)),e&&h?t[0]:t}var i=this.__wrapped__,f=e?[1]:arguments,c=i instanceof kt,a=f[0],s=c||Yo(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 kt(this),i=t.apply(i,f),i.__actions__.push({func:ee,args:[n],thisArg:T}),new Ot(i,h)):a&&c?t.apply(this,f):(i=this.thru(n),a?e?i.value()[0]:i.value():i)})}),u("pop push shift sort splice unshift".split(" "),function(t){var n=lu[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);xt.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){var u=this.value();return n.apply(Yo(u)?u:[],t)}return this[r](function(r){return n.apply(Yo(r)?r:[],t)});
-}}),vn(kt.prototype,function(t,n){var r=xt[n];if(r){var e=r.name+"";(Yu[e]||(Yu[e]=[])).push({name:n,func:r})}}),Yu[dr(T,2).name]=[{name:"wrapper",func:T}],kt.prototype.clone=function(){var t=new kt(this.__wrapped__);return t.__actions__=er(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=er(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=er(this.__views__),t},kt.prototype.reverse=function(){if(this.__filtered__){var t=new kt(this);t.__dir__=-1,
-t.__filtered__=true}else t=this.clone(),t.__dir__*=-1;return t},kt.prototype.value=function(){var t,n=this.__wrapped__.value(),r=this.__dir__,e=Yo(n),u=0>r,o=e?n.length:0;t=o;for(var i=this.__views__,f=0,c=-1,a=i.length;++co||o==t&&a==t)return Yn(n,this.__actions__);
-e=[];t:for(;t--&&a>c;){for(u+=r,o=-1,l=n[u];++o=this.__values__.length,n=t?T:this.__values__[this.__index__++];return{done:t,value:n}},xt.prototype.plant=function(t){
-for(var n,r=this;r instanceof At;){var e=Kr(r);e.__index__=0,e.__values__=T,n?u.__wrapped__=e:n=e;var u=e,r=r.__wrapped__}return u.__wrapped__=t,n},xt.prototype.reverse=function(){var t=this.__wrapped__;return t instanceof kt?(this.__actions__.length&&(t=new kt(this)),t=t.reverse(),t.__actions__.push({func:ee,args:[Xr],thisArg:T}),new Ot(t,this.__chain__)):this.thru(Xr)},xt.prototype.toJSON=xt.prototype.valueOf=xt.prototype.value=function(){return Yn(this.__wrapped__,this.__actions__)},ku&&(xt.prototype[ku]=ue),
-xt}var T,V=1/0,K=NaN,G=/\b__p\+='';/g,J=/\b(__p\+=)''\+/g,Y=/(__e\(.*?\)|\b__t\))\+'';/g,H=/&(?:amp|lt|gt|quot|#39|#96);/g,Q=/[&<>"'`]/g,X=RegExp(H.source),tt=RegExp(Q.source),nt=/<%-([\s\S]+?)%>/g,rt=/<%([\s\S]+?)%>/g,et=/<%=([\s\S]+?)%>/g,ut=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ot=/^\w*$/,it=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g,ft=/[\\^$.*+?()[\]{}|]/g,ct=RegExp(ft.source),at=/^\s+|\s+$/g,lt=/^\s+/,st=/\s+$/,ht=/\\(\\)?/g,pt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_t=/\w*$/,vt=/^0x/i,gt=/^[-+]0x[0-9a-f]+$/i,dt=/^0b[01]+$/i,yt=/^\[object .+?Constructor\]$/,bt=/^0o[0-7]+$/i,xt=/^(?:0|[1-9]\d*)$/,jt=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,mt=/($^)/,wt=/['\n\r\u2028\u2029\\]/g,At="[\\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])?)*",Ot="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+At,kt="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",Et=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]","g"),It=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+kt+At,"g"),St=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),Rt=/[a-zA-Z0-9]+/g,Wt=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+",Ot].join("|"),"g"),Bt=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Ct="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise Reflect RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),zt={};
+return r}function D(t){var n=-1,r=Array(t.size);return t.forEach(function(t,e){r[++n]=[e,t]}),r}function F(t,n){for(var r=-1,e=t.length,u=0,o=[];++rr?false:(r==t.length-1?t.pop():Bu.call(t,r,1),true)}function qt(t,n){var r=Vt(t,n);return 0>r?T:t[r][1]}function Vt(t,n){for(var r=t.length;r--;)if(be(t[r][0],n))return r;return-1}function Kt(t,n,r){
+var e=Vt(t,n);0>e?t.push([n,r]):t[e][1]=r}function Gt(t,n,r,e){return t===T||be(t,pu[r])&&!vu.call(e,r)?n:t}function Ht(t,n,r){(r===T||be(t[n],r))&&(typeof n!="number"||r!==T||n in t)||(t[n]=r)}function Qt(t,n,r){var e=t[n];vu.call(t,n)&&be(e,r)&&(r!==T||n in t)||(t[n]=r)}function Xt(t,n,r,e){return fo(t,function(t,u,o){n(e,t,r(t),o)}),e}function tn(t,n){return t&&ur(n,Ke(n),t)}function nn(t,n){for(var r=-1,e=null==t,u=n.length,o=Array(u);++rr?r:t),n!==T&&(t=n>t?n:t)),t}function fn(t,n,r,e,o,i,f){var c;if(e&&(c=i?e(t,o,i,f):e(t)),c!==T)return c;if(!Ie(t))return t;if(o=Qo(t)){if(c=Mr(t),!n)return er(t,c)}else{var a=zr(t),l="[object Function]"==a||"[object GeneratorFunction]"==a;if(Xo(t))return Xn(t,n);if("[object Object]"==a||"[object Arguments]"==a||l&&!i){if(M(t))return i?t:{};if(c=Lr(l?{}:t),!n)return ir(t,tn(c,t));
+}else{if(!Ut[a])return i?t:{};c=$r(t,a,fn,n)}}if(f||(f=new Ft),i=f.get(t))return i;if(f.set(t,c),!o)var s=r?bn(t,Ke,Cr):Ke(t);return u(s||t,function(u,o){s&&(o=u,u=t[o]),Qt(c,o,fn(u,n,r,e,o,t,f))}),c}function cn(t){var n=Ke(t),r=n.length;return function(e){if(null==e)return!r;for(var u=r;u--;){var o=n[u],i=t[o],f=e[o];if(f===T&&!(o in Object(e))||!i(f))return false}return true}}function an(t){return Ie(t)?Su(t):{}}function ln(t,n,r){if(typeof t!="function")throw new su("Expected a function");return Wu(function(){
+t.apply(T,r)},n)}function sn(t,n,r,e){var u=-1,o=f,i=true,l=t.length,s=[],h=n.length;if(!l)return s;r&&(n=a(n,O(r))),e?(o=c,i=false):n.length>=200&&(o=Dt,i=false,n=new $t(n));t:for(;++u0&&we(i)&&(r||Qo(i)||je(i))?n>1?_n(i,n-1,r,e):l(e,i):r||(e[e.length]=i)}return e}function vn(t,n){return t&&ao(t,n,Ke)}function gn(t,n){return t&&lo(t,n,Ke)}function dn(t,n){return i(n,function(n){return Oe(t[n])})}function yn(t,n){n=Nr(n,t)?[n]:un(n);for(var r=0,e=n.length;null!=t&&e>r;)t=t[n[r++]];return r&&r==e?t:T}function bn(t,n,r){return n=n(t),Qo(t)?n:l(n,r(t))}function xn(t,n){return vu.call(t,n)||typeof t=="object"&&n in t&&null===Uu(Object(t))}function jn(t,n){return n in Object(t);
+}function mn(t,n,r){for(var e=r?c:f,u=t[0].length,o=t.length,i=o,l=Array(o),s=1/0,h=[];i--;){var p=t[i];i&&n&&(p=a(p,O(n))),s=Fu(p.length,s),l[i]=r||!n&&(120>u||120>p.length)?T:new $t(i&&p)}var p=t[0],_=-1,v=l[0];t:for(;++_h.length;){var g=p[_],d=n?n(g):g;if(v?!Dt(v,d):!e(h,d,r)){for(i=o;--i;){var y=l[i];if(y?!Dt(y,d):!e(t[i],d,r))continue t}v&&v.push(d),h.push(g)}}return h}function wn(t,n,r){var e={};return vn(t,function(t,u,o){n(e,r(t),u,o)}),e}function An(t,n,e){return Nr(n,t)||(n=un(n),
+t=Kr(t,n),n=Xr(n)),n=null==t?t:t[n],null==n?T:r(n,t,e)}function On(t,n,r,e,u){if(t===n)n=true;else if(null==t||null==n||!Ie(t)&&!Se(n))n=t!==t&&n!==n;else t:{var o=Qo(t),i=Qo(n),f="[object Array]",c="[object Array]";o||(f=zr(t),f="[object Arguments]"==f?"[object Object]":f),i||(c=zr(n),c="[object Arguments]"==c?"[object Object]":c);var a="[object Object]"==f&&!M(t),i="[object Object]"==c&&!M(n);if((c=f==c)&&!a)u||(u=new Ft),n=o||Me(t)?kr(t,n,On,r,e,u):Er(t,n,f,On,r,e,u);else{if(!(2&e)&&(o=a&&vu.call(t,"__wrapped__"),
+f=i&&vu.call(n,"__wrapped__"),o||f)){t=o?t.value():t,n=f?n.value():n,u||(u=new Ft),n=On(t,n,r,e,u);break t}if(c)n:if(u||(u=new Ft),o=2&e,f=Ke(t),i=f.length,c=Ke(n).length,i==c||o){for(a=i;a--;){var l=f[a];if(!(o?l in n:xn(n,l))){n=false;break n}}if(c=u.get(t))n=c==n;else{c=true,u.set(t,n);for(var s=o;++ae?c*("desc"==r[e]?-1:1):c;break t}}e=t.b-n.b}return e})}function zn(t,n){return t=Object(t),s(n,function(n,r){return r in t&&(n[r]=t[r]),n},{})}function Un(t,n){for(var r=-1,e=bn(t,Ge,vo),u=e.length,o={};++rn||n>9007199254740991)return r;do n%2&&(r+=t),(n=zu(n/2))&&(t+=t);while(n);return r}function Pn(t,n,r,e){n=Nr(n,t)?[n]:un(n);for(var u=-1,o=n.length,i=o-1,f=t;null!=f&&++un&&(n=-n>u?0:u+n),r=r>u?u:r,0>r&&(r+=u),u=n>r?0:r-n>>>0,n>>>=0,r=Array(u);++e=u){for(;u>e;){var o=e+u>>>1,i=t[o];(r?n>=i:n>i)&&null!==i?e=o+1:u=o}return u}return Vn(t,n,ru,r)}function Vn(t,n,r,e){
+n=r(n);for(var u=0,o=t?t.length:0,i=n!==n,f=null===n,c=n===T;o>u;){var a=zu((u+o)/2),l=r(t[a]),s=l!==T,h=l===l;(i?h||e:f?h&&s&&(e||null!=l):c?h&&(e||s):null==l?0:e?n>=l:n>l)?u=a+1:o=a}return Fu(o,4294967294)}function Kn(t,n){for(var r=0,e=t.length,u=t[0],o=n?n(u):u,i=o,f=1,c=[u];++re?n[e]:T);return i}function Xn(t,n){if(n)return t.slice();var r=new t.constructor(t.length);return t.copy(r),r}function tr(t){var n=new t.constructor(t.byteLength);return new Au(n).set(new Au(t)),n}function nr(t,n,r,e){var u=-1,o=t.length,i=r.length,f=-1,c=n.length,a=Du(o-i,0),l=Array(c+a);for(e=!e;++fu)&&(l[r[u]]=t[u]);for(;a--;)l[f++]=t[u++];return l}function rr(t,n,r,e){
+var u=-1,o=t.length,i=-1,f=r.length,c=-1,a=n.length,l=Du(o-f,0),s=Array(l+a);for(e=!e;++uu)&&(s[l+r[i]]=t[u++]);return s}function er(t,n){var r=-1,e=t.length;for(n||(n=Array(e));++r1?r[u-1]:T,i=u>2?r[2]:T,o=typeof o=="function"?(u--,o):T;for(i&&Fr(r[0],r[1],i)&&(o=3>u?T:o,u=1),n=Object(n);++ei&&f[0]!==a&&f[i-1]!==a?[]:F(f,a),i-=c.length,e>i?wr(t,n,dr,u.placeholder,T,f,c,T,T,e-i):r(this&&this!==Jt&&this instanceof u?o:t,this,f);
+}var o=_r(t);return u}function gr(t){return de(function(n){n=_n(n,1);var r=n.length,e=r,u=Ot.prototype.thru;for(t&&n.reverse();e--;){var o=n[e];if(typeof o!="function")throw new su("Expected a function");if(u&&!i&&"wrapper"==Ir(o))var i=new Ot([],true)}for(e=i?e:r;++e=200)return i.plant(e).value();
+for(var u=0,t=r?n[u].apply(this,t):e;++ud)return j=F(b,j),wr(t,n,dr,l.placeholder,r,b,j,f,c,a-d);if(j=h?r:this,y=p?j[t]:t,d=b.length,f){x=b.length;for(var m=Fu(f.length,x),w=er(b);m--;){var A=f[m];b[m]=L(A,x)?w[A]:T}}else v&&d>1&&b.reverse();return s&&d>c&&(b.length=c),
+this&&this!==Jt&&this instanceof l&&(y=g||_r(y)),y.apply(j,b)}var s=128&n,h=1&n,p=2&n,_=24&n,v=512&n,g=p?T:_r(t);return l}function yr(t,n){return function(r,e){return wn(r,t,n(e))}}function br(t){return de(function(n){return n=a(n,Sr()),de(function(e){var u=this;return t(n,function(t){return r(t,u,e)})})})}function xr(t,n){n=n===T?" ":n+"";var r=n.length;return 2>r?r?Nn(n,t):n:(r=Nn(n,Cu(t/P(n))),St.test(n)?r.match(It).slice(0,t).join(""):r.slice(0,t))}function jr(t,n,e,u){function o(){for(var n=-1,c=arguments.length,a=-1,l=u.length,s=Array(l+c),h=this&&this!==Jt&&this instanceof o?f:t;++an?1:-1:Ne(e)||0;var u=-1;r=Du(Cu((r-n)/(e||1)),0);for(var o=Array(r);r--;)o[t?r:++u]=n,n+=e;return o}}function wr(t,n,r,e,u,o,i,f,c,a){var l=8&n;f=f?er(f):T;var s=l?i:T;i=l?T:i;var h=l?o:T;return o=l?T:o,n=(n|(l?32:64))&~(l?64:32),4&n||(n&=-4),n=[t,n,u,h,s,o,i,f,c,a],r=r.apply(T,n),
+Zr(t)&&go(r,n),r.placeholder=e,r}function Ar(t){var n=au[t];return function(t,r){if(t=Ne(t),r=De(r)){var e=(Ze(t)+"e").split("e"),e=n(e[0]+"e"+(+e[1]+r)),e=(Ze(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return n(t)}}function Or(t,n,r,e,u,o,i,f){var c=2&n;if(!c&&typeof t!="function")throw new su("Expected a function");var a=e?e.length:0;if(a||(n&=-97,e=u=T),i=i===T?i:Du(De(i),0),f=f===T?f:De(f),a-=u?u.length:0,64&n){var l=e,s=u;e=u=T}var h=c?T:po(t);return o=[t,n,r,e,u,l,s,o,i,f],h&&(r=o[1],t=h[1],
+n=r|t,e=128==t&&8==r||128==t&&256==r&&h[8]>=o[7].length||384==t&&h[8]>=h[7].length&&8==r,131>n||e)&&(1&t&&(o[2]=h[2],n|=1&r?0:4),(r=h[3])&&(e=o[3],o[3]=e?nr(e,r,h[4]):er(r),o[4]=e?F(o[3],"__lodash_placeholder__"):er(h[4])),(r=h[5])&&(e=o[5],o[5]=e?rr(e,r,h[6]):er(r),o[6]=e?F(o[5],"__lodash_placeholder__"):er(h[6])),(r=h[7])&&(o[7]=er(r)),128&t&&(o[8]=null==o[8]?h[8]:Fu(o[8],h[8])),null==o[9]&&(o[9]=h[9]),o[0]=h[0],o[1]=n),t=o[0],n=o[1],r=o[2],e=o[3],u=o[4],f=o[9]=null==o[9]?c?0:t.length:Du(o[9]-a,0),
+!f&&24&n&&(n&=-25),(h?so:go)(n&&1!=n?8==n||16==n?vr(t,n,f):32!=n&&33!=n||u.length?dr.apply(T,o):jr(t,n,r,e):sr(t,n,r),o)}function kr(t,n,r,e,u,o){var i=-1,f=2&u,c=1&u,a=t.length,l=n.length;if(!(a==l||f&&l>a))return false;if(l=o.get(t))return l==n;for(l=true,o.set(t,n);++in?0:n,e)):[]}function Hr(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:De(n),n=e-n,Zn(t,0,0>n?0:n)):[]}function Qr(t){return t?t[0]:T}function Xr(t){var n=t?t.length:0;return n?t[n-1]:T}function te(t,n){return t&&t.length&&n&&n.length?$n(t,n):t}function ne(t){return t?Zu.call(t):t}function re(t){if(!t||!t.length)return[];var n=0;return t=i(t,function(t){return we(t)?(n=Du(t.length,n),
+!0):void 0}),w(n,function(n){return a(t,Mn(n))})}function ee(t,n){if(!t||!t.length)return[];var e=re(t);return null==n?e:a(e,function(t){return r(n,T,t)})}function ue(t){return t=xt(t),t.__chain__=true,t}function oe(t,n){return n(t)}function ie(){return this}function fe(t,n){return typeof n=="function"&&Qo(t)?u(t,n):fo(t,Sr(n))}function ce(t,n){var r;if(typeof n=="function"&&Qo(t)){for(r=t.length;r--&&false!==n(t[r],r,t););r=t}else r=co(t,Sr(n));return r}function ae(t,n){return(Qo(t)?a:Sn)(t,Sr(n,3))}function le(t,n,r){
+var e=-1,u=$e(t),o=u.length,i=o-1;for(n=(r?Fr(t,n,r):n===T)?1:on(De(n),0,o);++e=t&&(n=T),r}}function pe(t,n,r){return n=r?T:n,t=Or(t,8,T,T,T,T,T,n),t.placeholder=pe.placeholder,t}function _e(t,n,r){return n=r?T:n,
+t=Or(t,16,T,T,T,T,T,n),t.placeholder=_e.placeholder,t}function ve(t,n,r){function e(n){var r=c,e=a;return c=a=T,p=n,l=t.apply(e,r)}function u(t){var r=t-h;return t-=p,!h||r>=n||0>r||false!==v&&t>=v}function o(){var t=Zo();if(u(t))return i(t);var r;r=t-p,t=n-(t-h),r=false===v?t:Fu(t,v-r),s=Wu(o,r)}function i(t){return Ou(s),s=T,g&&c?e(t):(c=a=T,l)}function f(){var t=Zo(),r=u(t);return c=arguments,a=this,h=t,r?s===T?(p=t=h,s=Wu(o,n),_?e(t):l):(Ou(s),s=Wu(o,n),e(h)):l}var c,a,l,s,h=0,p=0,_=false,v=false,g=true;if(typeof t!="function")throw new su("Expected a function");
+return n=Ne(n)||0,Ie(r)&&(_=!!r.leading,v="maxWait"in r&&Du(Ne(r.maxWait)||0,n),g="trailing"in r?!!r.trailing:g),f.cancel=function(){s!==T&&Ou(s),h=p=0,c=a=s=T},f.flush=function(){return s===T?l:i(Zo())},f}function ge(t,n){function r(){var e=arguments,u=n?n.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=t.apply(this,e),r.cache=o.set(u,e),e)}if(typeof t!="function"||n&&typeof n!="function")throw new su("Expected a function");return r.cache=new(ge.Cache||Lt),r}function de(t,n){if(typeof t!="function")throw new su("Expected a function");
+return n=Du(n===T?t.length-1:De(n),0),function(){for(var e=arguments,u=-1,o=Du(e.length-n,0),i=Array(o);++un}function je(t){return we(t)&&vu.call(t,"callee")&&(!Ru.call(t,"callee")||"[object Arguments]"==yu.call(t));
+}function me(t){return null!=t&&Ee(_o(t))&&!Oe(t)}function we(t){return Se(t)&&me(t)}function Ae(t){return Se(t)?"[object Error]"==yu.call(t)||typeof t.message=="string"&&typeof t.name=="string":false}function Oe(t){return t=Ie(t)?yu.call(t):"","[object Function]"==t||"[object GeneratorFunction]"==t}function ke(t){return typeof t=="number"&&t==De(t)}function Ee(t){return typeof t=="number"&&t>-1&&0==t%1&&9007199254740991>=t}function Ie(t){var n=typeof t;return!!t&&("object"==n||"function"==n)}function Se(t){
+return!!t&&typeof t=="object"}function Re(t){return Ie(t)?(Oe(t)||M(t)?xu:yt).test(Gr(t)):false}function We(t){return typeof t=="number"||Se(t)&&"[object Number]"==yu.call(t)}function Be(t){return!Se(t)||"[object Object]"!=yu.call(t)||M(t)?false:(t=Uu(Object(t)),null===t?true:(t=vu.call(t,"constructor")&&t.constructor,typeof t=="function"&&t instanceof t&&_u.call(t)==du))}function Ce(t){return Ie(t)&&"[object RegExp]"==yu.call(t)}function ze(t){return typeof t=="string"||!Qo(t)&&Se(t)&&"[object String]"==yu.call(t);
+}function Ue(t){return typeof t=="symbol"||Se(t)&&"[object Symbol]"==yu.call(t)}function Me(t){return Se(t)&&Ee(t.length)&&!!zt[yu.call(t)]}function Le(t,n){return n>t}function $e(t){if(!t)return[];if(me(t))return ze(t)?t.match(It):er(t);if(Iu&&t[Iu])return $(t[Iu]());var n=zr(t);return("[object Map]"==n?D:"[object Set]"==n?N:He)(t)}function De(t){if(!t)return 0===t?t:0;if(t=Ne(t),t===V||t===-V)return 1.7976931348623157e308*(0>t?-1:1);var n=t%1;return t===t?n?t-n:t:0}function Fe(t){return t?on(De(t),0,4294967295):0;
+}function Ne(t){if(typeof t=="number")return t;if(Ue(t))return K;if(Ie(t)&&(t=Oe(t.valueOf)?t.valueOf():t,t=Ie(t)?t+"":t),typeof t!="string")return 0===t?t:+t;t=t.replace(at,"");var n=dt.test(t);return n||bt.test(t)?Pt(t.slice(2),n?2:8):gt.test(t)?K:+t}function Pe(t){return ur(t,Ge(t))}function Ze(t){if(typeof t=="string")return t;if(null==t)return"";if(Ue(t))return io?io.call(t):"";var n=t+"";return"0"==n&&1/t==-V?"-0":n}function qe(t,n,r){return t=null==t?T:yn(t,n),t===T?r:t}function Te(t,n){return null!=t&&Ur(t,n,xn);
+}function Ve(t,n){return null!=t&&Ur(t,n,jn)}function Ke(t){var n=qr(t);if(!n&&!me(t))return $u(Object(t));var r,e=Dr(t),u=!!e,e=e||[],o=e.length;for(r in t)!xn(t,r)||u&&("length"==r||L(r,o))||n&&"constructor"==r||e.push(r);return e}function Ge(t){for(var n=-1,r=qr(t),e=In(t),u=e.length,o=Dr(t),i=!!o,o=o||[],f=o.length;++ne.length?Kt(e,t,n):(r.array=null,r.map=new Lt(e))),(r=r.map)&&r.set(t,n),this};var fo=ar(vn),co=ar(gn,true),ao=lr(),lo=lr(true);ku&&!Ru.call({valueOf:1},"valueOf")&&(In=function(t){return $(ku(t))});var so=Yu?function(t,n){return Yu.set(t,n),t}:ru,ho=Ku&&2===new Ku([1,2]).size?function(t){
+return new Ku(t)}:ou,po=Yu?function(t){return Yu.get(t)}:ou,_o=Mn("length");Eu||(Cr=function(){return[]});var vo=Eu?function(t){for(var n=[];t;)l(n,Cr(t)),t=Uu(Object(t));return n}:Cr;(qu&&"[object DataView]"!=zr(new qu(new ArrayBuffer(1)))||Tu&&"[object Map]"!=zr(new Tu)||Vu&&"[object Promise]"!=zr(Vu.resolve())||Ku&&"[object Set]"!=zr(new Ku)||Gu&&"[object WeakMap]"!=zr(new Gu))&&(zr=function(t){var n=yu.call(t);if(t=Gr("[object Object]"==n?t.constructor:null))switch(t){case Xu:return"[object DataView]";
+case to:return"[object Map]";case no:return"[object Promise]";case ro:return"[object Set]";case eo:return"[object WeakMap]"}return n});var go=function(){var t=0,n=0;return function(r,e){var u=Zo(),o=16-(u-n);if(n=u,o>0){if(150<=++t)return r}else t=0;return so(r,e)}}(),yo=ge(function(t){var n=[];return Ze(t).replace(it,function(t,r,e,u){n.push(e?u.replace(ht,"$1"):r||t)}),n}),bo=de(function(t,n){return we(t)?sn(t,_n(n,1,true)):[]}),xo=de(function(t,n){var r=Xr(n);return we(r)&&(r=T),we(t)?sn(t,_n(n,1,true),Sr(r)):[];
+}),jo=de(function(t,n){var r=Xr(n);return we(r)&&(r=T),we(t)?sn(t,_n(n,1,true),T,r):[]}),mo=de(function(t){var n=a(t,rn);return n.length&&n[0]===t[0]?mn(n):[]}),wo=de(function(t){var n=Xr(t),r=a(t,rn);return n===Xr(r)?n=T:r.pop(),r.length&&r[0]===t[0]?mn(r,Sr(n)):[]}),Ao=de(function(t){var n=Xr(t),r=a(t,rn);return n===Xr(r)?n=T:r.pop(),r.length&&r[0]===t[0]?mn(r,T,n):[]}),Oo=de(te),ko=de(function(t,n){n=a(_n(n,1),String);var r=nn(t,n);return Dn(t,n.sort(R)),r}),Eo=de(function(t){return Gn(_n(t,1,true));
+}),Io=de(function(t){var n=Xr(t);return we(n)&&(n=T),Gn(_n(t,1,true),Sr(n))}),So=de(function(t){var n=Xr(t);return we(n)&&(n=T),Gn(_n(t,1,true),T,n)}),Ro=de(function(t,n){return we(t)?sn(t,n):[]}),Wo=de(function(t){return Hn(i(t,we))}),Bo=de(function(t){var n=Xr(t);return we(n)&&(n=T),Hn(i(t,we),Sr(n))}),Co=de(function(t){var n=Xr(t);return we(n)&&(n=T),Hn(i(t,we),T,n)}),zo=de(re),Uo=de(function(t){var n=t.length,n=n>1?t[n-1]:T,n=typeof n=="function"?(t.pop(),n):T;return ee(t,n)}),Mo=de(function(t){function n(n){
+return nn(n,t)}t=_n(t,1);var r=t.length,e=r?t[0]:0,u=this.__wrapped__;return 1>=r&&!this.__actions__.length&&u instanceof kt&&L(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:oe,args:[n],thisArg:T}),new Ot(u,this.__chain__).thru(function(t){return r&&!t.length&&t.push(T),t})):this.thru(n)}),Lo=fr(function(t,n,r){vu.call(t,r)?++t[r]:t[r]=1}),$o=fr(function(t,n,r){vu.call(t,r)?t[r].push(n):t[r]=[n]}),Do=de(function(t,n,e){var u=-1,o=typeof n=="function",i=Nr(n),f=me(t)?Array(t.length):[];return fo(t,function(t){
+var c=o?n:i&&null!=t?t[n]:T;f[++u]=c?r(c,t,e):An(t,n,e)}),f}),Fo=fr(function(t,n,r){t[r]=n}),No=fr(function(t,n,r){t[r?0:1].push(n)},function(){return[[],[]]}),Po=de(function(t,n){if(null==t)return[];var r=n.length;return r>1&&Fr(t,n[0],n[1])?n=[]:r>2&&Fr(n[0],n[1],n[2])&&(n.length=1),Cn(t,_n(n,1),[])}),Zo=fu.now,qo=de(function(t,n,r){var e=1;if(r.length)var u=F(r,Br(qo)),e=32|e;return Or(t,e,n,r,u)}),To=de(function(t,n,r){var e=3;if(r.length)var u=F(r,Br(To)),e=32|e;return Or(n,e,t,r,u)}),Vo=de(function(t,n){
+return ln(t,1,n)}),Ko=de(function(t,n,r){return ln(t,Ne(n)||0,r)});ge.Cache=Lt;var Go=de(function(t,n){n=a(n,Sr());var e=n.length;return de(function(u){for(var o=-1,i=Fu(u.length,e);++o--t?n.apply(this,arguments):void 0}},xt.ary=se,xt.assign=ti,xt.assignIn=ni,xt.assignInWith=ri,xt.assignWith=ei,xt.at=ui,xt.before=he,xt.bind=qo,xt.bindAll=wi,xt.bindKey=To,xt.castArray=ye,xt.chain=ue,xt.chunk=function(t,n,r){if(n=(r?Fr(t,n,r):n===T)?1:Du(De(n),0),r=t?t.length:0,!r||1>n)return[];for(var e=0,u=0,o=Array(Cu(r/n));r>e;)o[u++]=Zn(t,e,e+=n);
+return o},xt.compact=function(t){for(var n=-1,r=t?t.length:0,e=0,u=[];++nt)return t?er(n):[];for(var r=Array(t-1);t--;)r[t-1]=arguments[t];for(var t=_n(r,1),r=-1,e=n.length,u=-1,o=t.length,i=Array(e+o);++rr&&(r=-r>u?0:u+r),e=e===T||e>u?u:De(e),0>e&&(e+=u),e=r>e?0:Fe(e);e>r;)t[r++]=n;return t},xt.filter=function(t,n){return(Qo(t)?i:pn)(t,Sr(n,3))},xt.flatMap=function(t,n){return _n(ae(t,n),1)},xt.flatMapDeep=function(t,n){return _n(ae(t,n),V)},xt.flatMapDepth=function(t,n,r){return r=r===T?1:De(r),_n(ae(t,n),r)},xt.flatten=function(t){
+return t&&t.length?_n(t,1):[]},xt.flattenDeep=function(t){return t&&t.length?_n(t,V):[]},xt.flattenDepth=function(t,n){return t&&t.length?(n=n===T?1:De(n),_n(t,n)):[]},xt.flip=function(t){return Or(t,512)},xt.flow=Ai,xt.flowRight=Oi,xt.fromPairs=function(t){for(var n=-1,r=t?t.length:0,e={};++nn?0:n)):[]},xt.takeRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:De(n),n=e-n,Zn(t,0>n?0:n,e)):[]},xt.takeRightWhile=function(t,n){return t&&t.length?Jn(t,Sr(n,3),false,true):[]},xt.takeWhile=function(t,n){return t&&t.length?Jn(t,Sr(n,3)):[]},xt.tap=function(t,n){return n(t),t},xt.throttle=function(t,n,r){var e=true,u=true;if(typeof t!="function")throw new su("Expected a function");return Ie(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),ve(t,n,{leading:e,maxWait:n,
+trailing:u})},xt.thru=oe,xt.toArray=$e,xt.toPairs=Je,xt.toPairsIn=Ye,xt.toPath=function(t){return Qo(t)?a(t,en):Ue(t)?[t]:er(yo(t))},xt.toPlainObject=Pe,xt.transform=function(t,n,r){var e=Qo(t)||Me(t);if(n=Sr(n,4),null==r)if(e||Ie(t)){var o=t.constructor;r=e?Qo(t)?new o:[]:Oe(o)?an(Uu(Object(t))):{}}else r={};return(e?u:vn)(t,function(t,e,u){return n(r,t,e,u)}),r},xt.unary=function(t){return se(t,1)},xt.union=Eo,xt.unionBy=Io,xt.unionWith=So,xt.uniq=function(t){return t&&t.length?Gn(t):[]},xt.uniqBy=function(t,n){
+return t&&t.length?Gn(t,Sr(n)):[]},xt.uniqWith=function(t,n){return t&&t.length?Gn(t,T,n):[]},xt.unset=function(t,n){var r;if(null==t)r=true;else{r=t;var e=n,e=Nr(e,r)?[e]:un(e);r=Kr(r,e),e=Xr(e),r=null!=r&&Te(r,e)?delete r[e]:true}return r},xt.unzip=re,xt.unzipWith=ee,xt.update=function(t,n,r){return null==t?t:Pn(t,n,(typeof r=="function"?r:ru)(yn(t,n)),void 0)},xt.updateWith=function(t,n,r,e){return e=typeof e=="function"?e:T,null!=t&&(t=Pn(t,n,(typeof r=="function"?r:ru)(yn(t,n)),e)),t},xt.values=He,
+xt.valuesIn=function(t){return null==t?[]:k(t,Ge(t))},xt.without=Ro,xt.words=tu,xt.wrap=function(t,n){return n=null==n?ru:n,Jo(n,t)},xt.xor=Wo,xt.xorBy=Bo,xt.xorWith=Co,xt.zip=zo,xt.zipObject=function(t,n){return Qn(t||[],n||[],Qt)},xt.zipObjectDeep=function(t,n){return Qn(t||[],n||[],Pn)},xt.zipWith=Uo,xt.entries=Je,xt.entriesIn=Ye,xt.extend=ni,xt.extendWith=ri,uu(xt,xt),xt.add=Ci,xt.attempt=mi,xt.camelCase=_i,xt.capitalize=Qe,xt.ceil=zi,xt.clamp=function(t,n,r){return r===T&&(r=n,n=T),r!==T&&(r=Ne(r),
+r=r===r?r:0),n!==T&&(n=Ne(n),n=n===n?n:0),on(Ne(t),n,r)},xt.clone=function(t){return fn(t,false,true)},xt.cloneDeep=function(t){return fn(t,true,true)},xt.cloneDeepWith=function(t,n){return fn(t,true,true,n)},xt.cloneWith=function(t,n){return fn(t,false,true,n)},xt.deburr=Xe,xt.divide=Ui,xt.endsWith=function(t,n,r){t=Ze(t),n=typeof n=="string"?n:n+"";var e=t.length;return r=r===T?e:on(De(r),0,e),r-=n.length,r>=0&&t.indexOf(n,r)==r},xt.eq=be,xt.escape=function(t){return(t=Ze(t))&&tt.test(t)?t.replace(Q,C):t},xt.escapeRegExp=function(t){
+return(t=Ze(t))&&ct.test(t)?t.replace(ft,"\\$&"):t},xt.every=function(t,n,r){var e=Qo(t)?o:hn;return r&&Fr(t,n,r)&&(n=T),e(t,Sr(n,3))},xt.find=function(t,n){if(n=Sr(n,3),Qo(t)){var r=g(t,n);return r>-1?t[r]:T}return v(t,n,fo)},xt.findIndex=function(t,n){return t&&t.length?g(t,Sr(n,3)):-1},xt.findKey=function(t,n){return v(t,Sr(n,3),vn,true)},xt.findLast=function(t,n){if(n=Sr(n,3),Qo(t)){var r=g(t,n,true);return r>-1?t[r]:T}return v(t,n,co)},xt.findLastIndex=function(t,n){return t&&t.length?g(t,Sr(n,3),true):-1;
+},xt.findLastKey=function(t,n){return v(t,Sr(n,3),gn,true)},xt.floor=Mi,xt.forEach=fe,xt.forEachRight=ce,xt.forIn=function(t,n){return null==t?t:ao(t,Sr(n),Ge)},xt.forInRight=function(t,n){return null==t?t:lo(t,Sr(n),Ge)},xt.forOwn=function(t,n){return t&&vn(t,Sr(n))},xt.forOwnRight=function(t,n){return t&&gn(t,Sr(n))},xt.get=qe,xt.gt=xe,xt.gte=function(t,n){return t>=n},xt.has=Te,xt.hasIn=Ve,xt.head=Qr,xt.identity=ru,xt.includes=function(t,n,r,e){return t=me(t)?t:He(t),r=r&&!e?De(r):0,e=t.length,0>r&&(r=Du(e+r,0)),
+ze(t)?e>=r&&-1r&&(r=Du(e+r,0)),d(t,n,r)):-1},xt.inRange=function(t,n,r){return n=Ne(n)||0,r===T?(r=n,n=0):r=Ne(r)||0,t=Ne(t),t>=Fu(n,r)&&t=-9007199254740991&&9007199254740991>=t},xt.isSet=function(t){return Se(t)&&"[object Set]"==zr(t)},xt.isString=ze,xt.isSymbol=Ue,xt.isTypedArray=Me,xt.isUndefined=function(t){return t===T},xt.isWeakMap=function(t){return Se(t)&&"[object WeakMap]"==zr(t)},xt.isWeakSet=function(t){return Se(t)&&"[object WeakSet]"==yu.call(t)},xt.join=function(t,n){return t?Lu.call(t,n):""},xt.kebabCase=vi,xt.last=Xr,xt.lastIndexOf=function(t,n,r){var e=t?t.length:0;
+if(!e)return-1;var u=e;if(r!==T&&(u=De(r),u=(0>u?Du(e+u,0):Fu(u,e-1))+1),n!==n)return U(t,u,true);for(;u--;)if(t[u]===n)return u;return-1},xt.lowerCase=gi,xt.lowerFirst=di,xt.lt=Le,xt.lte=function(t,n){return n>=t},xt.max=function(t){return t&&t.length?_(t,ru,xe):T},xt.maxBy=function(t,n){return t&&t.length?_(t,Sr(n),xe):T},xt.mean=function(t){return b(t,ru)},xt.meanBy=function(t,n){return b(t,Sr(n))},xt.min=function(t){return t&&t.length?_(t,ru,Le):T},xt.minBy=function(t,n){return t&&t.length?_(t,Sr(n),Le):T;
+},xt.multiply=Li,xt.noConflict=function(){return Jt._===this&&(Jt._=bu),this},xt.noop=ou,xt.now=Zo,xt.pad=function(t,n,r){t=Ze(t);var e=(n=De(n))?P(t):0;return n&&n>e?(n=(n-e)/2,xr(zu(n),r)+t+xr(Cu(n),r)):t},xt.padEnd=function(t,n,r){t=Ze(t);var e=(n=De(n))?P(t):0;return n&&n>e?t+xr(n-e,r):t},xt.padStart=function(t,n,r){t=Ze(t);var e=(n=De(n))?P(t):0;return n&&n>e?xr(n-e,r)+t:t},xt.parseInt=function(t,n,r){return r||null==n?n=0:n&&(n=+n),t=Ze(t).replace(at,""),Nu(t,n||(vt.test(t)?16:10))},xt.random=function(t,n,r){
+if(r&&typeof r!="boolean"&&Fr(t,n,r)&&(n=r=T),r===T&&(typeof n=="boolean"?(r=n,n=T):typeof t=="boolean"&&(r=t,t=T)),t===T&&n===T?(t=0,n=1):(t=Ne(t)||0,n===T?(n=t,t=0):n=Ne(n)||0),t>n){var e=t;t=n,n=e}return r||t%1||n%1?(r=Pu(),Fu(t+r*(n-t+Nt("1e-"+((r+"").length-1))),n)):Fn(t,n)},xt.reduce=function(t,n,r){var e=Qo(t)?s:x,u=3>arguments.length;return e(t,Sr(n,4),r,u,fo)},xt.reduceRight=function(t,n,r){var e=Qo(t)?h:x,u=3>arguments.length;return e(t,Sr(n,4),r,u,co)},xt.repeat=function(t,n,r){return n=(r?Fr(t,n,r):n===T)?1:De(n),
+Nn(Ze(t),n)},xt.replace=function(){var t=arguments,n=Ze(t[0]);return 3>t.length?n:n.replace(t[1],t[2])},xt.result=function(t,n,r){n=Nr(n,t)?[n]:un(n);var e=-1,u=n.length;for(u||(t=T,u=1);++e0?t[Fn(0,n-1)]:T},xt.size=function(t){if(null==t)return 0;if(me(t)){var n=t.length;return n&&ze(t)?P(t):n}return Se(t)&&(n=zr(t),"[object Map]"==n||"[object Set]"==n)?t.size:Ke(t).length;
+},xt.snakeCase=yi,xt.some=function(t,n,r){var e=Qo(t)?p:qn;return r&&Fr(t,n,r)&&(n=T),e(t,Sr(n,3))},xt.sortedIndex=function(t,n){return Tn(t,n)},xt.sortedIndexBy=function(t,n,r){return Vn(t,n,Sr(r))},xt.sortedIndexOf=function(t,n){var r=t?t.length:0;if(r){var e=Tn(t,n);if(r>e&&be(t[e],n))return e}return-1},xt.sortedLastIndex=function(t,n){return Tn(t,n,true)},xt.sortedLastIndexBy=function(t,n,r){return Vn(t,n,Sr(r),true)},xt.sortedLastIndexOf=function(t,n){if(t&&t.length){var r=Tn(t,n,true)-1;if(be(t[r],n))return r;
+}return-1},xt.startCase=bi,xt.startsWith=function(t,n,r){return t=Ze(t),r=on(De(r),0,t.length),t.lastIndexOf(n,r)==r},xt.subtract=Di,xt.sum=function(t){return t&&t.length?m(t,ru):0},xt.sumBy=function(t,n){return t&&t.length?m(t,Sr(n)):0},xt.template=function(t,n,r){var e=xt.templateSettings;r&&Fr(t,n,r)&&(n=T),t=Ze(t),n=ri({},n,e,Gt),r=ri({},n.imports,e.imports,Gt);var u,o,i=Ke(r),f=k(r,i),c=0;r=n.interpolate||mt;var a="__p+='";r=lu((n.escape||mt).source+"|"+r.source+"|"+(r===et?pt:mt).source+"|"+(n.evaluate||mt).source+"|$","g");
+var l="sourceURL"in n?"//# sourceURL="+n.sourceURL+"\n":"";if(t.replace(r,function(n,r,e,i,f,l){return e||(e=i),a+=t.slice(c,l).replace(wt,z),r&&(u=true,a+="'+__e("+r+")+'"),f&&(o=true,a+="';"+f+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+n.length,n}),a+="';",(n=n.variable)||(a="with(obj){"+a+"}"),a=(o?a.replace(G,""):a).replace(J,"$1").replace(Y,"$1;"),a="function("+(n||"obj")+"){"+(n?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",
+n=mi(function(){return Function(i,l+"return "+a).apply(T,f)}),n.source=a,Ae(n))throw n;return n},xt.times=function(t,n){if(t=De(t),1>t||t>9007199254740991)return[];var r=4294967295,e=Fu(t,4294967295);for(n=Sr(n),t-=4294967295,e=w(e,n);++r=o)return t;if(o=r-P(e),1>o)return e;if(r=i?i.slice(0,o).join(""):t.slice(0,o),u===T)return r+e;if(i&&(o+=r.length-o),Ce(u)){if(t.slice(o).search(u)){var f=r;for(u.global||(u=lu(u.source,Ze(_t.exec(u))+"g")),u.lastIndex=0;i=u.exec(f);)var c=i.index;r=r.slice(0,c===T?o:c)}}else t.indexOf(u,o)!=o&&(u=r.lastIndexOf(u),u>-1&&(r=r.slice(0,u)));return r+e},xt.unescape=function(t){return(t=Ze(t))&&X.test(t)?t.replace(H,Z):t},xt.uniqueId=function(t){
+var n=++gu;return Ze(t)+n},xt.upperCase=xi,xt.upperFirst=ji,xt.each=fe,xt.eachRight=ce,xt.first=Qr,uu(xt,function(){var t={};return vn(xt,function(n,r){vu.call(xt.prototype,r)||(t[r]=n)}),t}(),{chain:false}),xt.VERSION="4.8.0",u("bind bindKey curry curryRight partial partialRight".split(" "),function(t){xt[t].placeholder=xt}),u(["drop","take"],function(t,n){kt.prototype[t]=function(r){var e=this.__filtered__;if(e&&!n)return new kt(this);r=r===T?1:Du(De(r),0);var u=this.clone();return e?u.__takeCount__=Fu(r,u.__takeCount__):u.__views__.push({
+size:Fu(r,4294967295),type:t+(0>u.__dir__?"Right":"")}),u},kt.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse()}}),u(["filter","map","takeWhile"],function(t,n){var r=n+1,e=1==r||3==r;kt.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:Sr(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),u(["head","last"],function(t,n){var r="take"+(n?"Right":"");kt.prototype[t]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right");
+kt.prototype[t]=function(){return this.__filtered__?new kt(this):this[r](1)}}),kt.prototype.compact=function(){return this.filter(ru)},kt.prototype.find=function(t){return this.filter(t).head()},kt.prototype.findLast=function(t){return this.reverse().find(t)},kt.prototype.invokeMap=de(function(t,n){return typeof t=="function"?new kt(this):this.map(function(r){return An(r,t,n)})}),kt.prototype.reject=function(t){return t=Sr(t,3),this.filter(function(n){return!t(n)})},kt.prototype.slice=function(t,n){
+t=De(t);var r=this;return r.__filtered__&&(t>0||0>n)?new kt(r):(0>t?r=r.takeRight(-t):t&&(r=r.drop(t)),n!==T&&(n=De(n),r=0>n?r.dropRight(-n):r.take(n-t)),r)},kt.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},kt.prototype.toArray=function(){return this.take(4294967295)},vn(kt.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),u=xt[e?"take"+("last"==n?"Right":""):n],o=e||/^find/.test(n);u&&(xt.prototype[n]=function(){
+function n(t){return t=u.apply(xt,l([t],f)),e&&h?t[0]:t}var i=this.__wrapped__,f=e?[1]:arguments,c=i instanceof kt,a=f[0],s=c||Qo(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 kt(this),i=t.apply(i,f),i.__actions__.push({func:oe,args:[n],thisArg:T}),new Ot(i,h)):a&&c?t.apply(this,f):(i=this.thru(n),a?e?i.value()[0]:i.value():i)})}),u("pop push shift sort splice unshift".split(" "),function(t){var n=hu[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);
+xt.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){var u=this.value();return n.apply(Qo(u)?u:[],t)}return this[r](function(r){return n.apply(Qo(r)?r:[],t)})}}),vn(kt.prototype,function(t,n){var r=xt[n];if(r){var e=r.name+"";(Qu[e]||(Qu[e]=[])).push({name:n,func:r})}}),Qu[dr(T,2).name]=[{name:"wrapper",func:T}],kt.prototype.clone=function(){var t=new kt(this.__wrapped__);return t.__actions__=er(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=er(this.__iteratees__),
+t.__takeCount__=this.__takeCount__,t.__views__=er(this.__views__),t},kt.prototype.reverse=function(){if(this.__filtered__){var t=new kt(this);t.__dir__=-1,t.__filtered__=true}else t=this.clone(),t.__dir__*=-1;return t},kt.prototype.value=function(){var t,n=this.__wrapped__.value(),r=this.__dir__,e=Qo(n),u=0>r,o=e?n.length:0;t=o;for(var i=this.__views__,f=0,c=-1,a=i.length;++co||o==t&&a==t)return Yn(n,this.__actions__);e=[];t:for(;t--&&a>c;){for(u+=r,o=-1,l=n[u];++o=this.__values__.length,n=t?T:this.__values__[this.__index__++];return{done:t,value:n}},xt.prototype.plant=function(t){for(var n,r=this;r instanceof At;){var e=Jr(r);e.__index__=0,e.__values__=T,n?u.__wrapped__=e:n=e;var u=e,r=r.__wrapped__}return u.__wrapped__=t,n},xt.prototype.reverse=function(){var t=this.__wrapped__;return t instanceof kt?(this.__actions__.length&&(t=new kt(this)),t=t.reverse(),t.__actions__.push({func:oe,
+args:[ne],thisArg:T}),new Ot(t,this.__chain__)):this.thru(ne)},xt.prototype.toJSON=xt.prototype.valueOf=xt.prototype.value=function(){return Yn(this.__wrapped__,this.__actions__)},Iu&&(xt.prototype[Iu]=ie),xt}var T,V=1/0,K=NaN,G=/\b__p\+='';/g,J=/\b(__p\+=)''\+/g,Y=/(__e\(.*?\)|\b__t\))\+'';/g,H=/&(?:amp|lt|gt|quot|#39|#96);/g,Q=/[&<>"'`]/g,X=RegExp(H.source),tt=RegExp(Q.source),nt=/<%-([\s\S]+?)%>/g,rt=/<%([\s\S]+?)%>/g,et=/<%=([\s\S]+?)%>/g,ut=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ot=/^\w*$/,it=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g,ft=/[\\^$.*+?()[\]{}|]/g,ct=RegExp(ft.source),at=/^\s+|\s+$/g,lt=/^\s+/,st=/\s+$/,ht=/\\(\\)?/g,pt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_t=/\w*$/,vt=/^0x/i,gt=/^[-+]0x[0-9a-f]+$/i,dt=/^0b[01]+$/i,yt=/^\[object .+?Constructor\]$/,bt=/^0o[0-7]+$/i,xt=/^(?:0|[1-9]\d*)$/,jt=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,mt=/($^)/,wt=/['\n\r\u2028\u2029\\]/g,At="[\\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])?)*",Ot="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+At,kt="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",Et=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]","g"),It=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+kt+At,"g"),St=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),Rt=/[a-zA-Z0-9]+/g,Wt=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+",Ot].join("|"),"g"),Bt=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Ct="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise Reflect RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),zt={};
zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=true,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=false;
var Ut={};Ut["[object Arguments]"]=Ut["[object Array]"]=Ut["[object ArrayBuffer]"]=Ut["[object DataView]"]=Ut["[object Boolean]"]=Ut["[object Date]"]=Ut["[object Float32Array]"]=Ut["[object Float64Array]"]=Ut["[object Int8Array]"]=Ut["[object Int16Array]"]=Ut["[object Int32Array]"]=Ut["[object Map]"]=Ut["[object Number]"]=Ut["[object Object]"]=Ut["[object RegExp]"]=Ut["[object Set]"]=Ut["[object String]"]=Ut["[object Symbol]"]=Ut["[object Uint8Array]"]=Ut["[object Uint8ClampedArray]"]=Ut["[object Uint16Array]"]=Ut["[object Uint32Array]"]=true,
Ut["[object Error]"]=Ut["[object Function]"]=Ut["[object WeakMap]"]=false;var Mt={"\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",
diff --git a/map.js b/map.js
index 6a24bc676..cca7bd023 100644
--- a/map.js
+++ b/map.js
@@ -4,7 +4,7 @@ var arrayMap = require('./_arrayMap'),
isArray = require('./isArray');
/**
- * Creates an array of values by running each element in `collection` through
+ * Creates an array of values by running each element in `collection` thru
* `iteratee`. The iteratee is invoked with three arguments:
* (value, index|key, collection).
*
@@ -12,10 +12,10 @@ var arrayMap = require('./_arrayMap'),
* `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
*
* The guarded methods are:
- * `ary`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, `fill`,
- * `invert`, `parseInt`, `random`, `range`, `rangeRight`, `slice`, `some`,
- * `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimEnd`, `trimStart`,
- * and `words`
+ * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
+ * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
+ * `sampleSize`, `slice`, `some`, `sortBy`, `take`, `takeRight`, `template`,
+ * `trim`, `trimEnd`, `trimStart`, and `words`
*
* @static
* @memberOf _
diff --git a/mapKeys.js b/mapKeys.js
index d802688da..0850afd39 100644
--- a/mapKeys.js
+++ b/mapKeys.js
@@ -4,8 +4,8 @@ var baseForOwn = require('./_baseForOwn'),
/**
* The opposite of `_.mapValues`; this method creates an object with the
* same values as `object` and keys generated by running each own enumerable
- * string keyed property of `object` through `iteratee`. The iteratee is
- * invoked with three arguments: (value, key, object).
+ * string keyed property of `object` thru `iteratee`. The iteratee is invoked
+ * with three arguments: (value, key, object).
*
* @static
* @memberOf _
diff --git a/mapValues.js b/mapValues.js
index a7e404636..c3af35e82 100644
--- a/mapValues.js
+++ b/mapValues.js
@@ -2,8 +2,8 @@ var baseForOwn = require('./_baseForOwn'),
baseIteratee = require('./_baseIteratee');
/**
- * Creates an object with the same keys as `object` and values generated by
- * running each own enumerable string keyed property of `object` through
+ * Creates an object with the same keys as `object` and values generated
+ * by running each own enumerable string keyed property of `object` thru
* `iteratee`. The iteratee is invoked with three arguments:
* (value, key, object).
*
diff --git a/over.js b/over.js
index f227a3ae7..3796c831e 100644
--- a/over.js
+++ b/over.js
@@ -2,14 +2,14 @@ var arrayMap = require('./_arrayMap'),
createOver = require('./_createOver');
/**
- * Creates a function that invokes `iteratees` with the arguments provided
- * to the created function and returns their results.
+ * Creates a function that invokes `iteratees` with the arguments it receives
+ * and returns their results.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Util
- * @param {...(Function|Function[])} iteratees The iteratees to invoke.
+ * @param {...Function} iteratees The iteratees to invoke.
* @returns {Function} Returns the new function.
* @example
*
diff --git a/overArgs.js b/overArgs.js
index 64a320679..5a2be2e4e 100644
--- a/overArgs.js
+++ b/overArgs.js
@@ -1,6 +1,5 @@
var apply = require('./_apply'),
arrayMap = require('./_arrayMap'),
- baseFlatten = require('./_baseFlatten'),
baseIteratee = require('./_baseIteratee'),
rest = require('./rest');
@@ -16,7 +15,7 @@ var nativeMin = Math.min;
* @memberOf _
* @category Function
* @param {Function} func The function to wrap.
- * @param {...(Function|Function[])} [transforms] The functions to transform
+ * @param {...Function} [transforms] The functions to transform
* arguments, specified individually or in arrays.
* @returns {Function} Returns the new function.
* @example
@@ -40,7 +39,7 @@ var nativeMin = Math.min;
* // => [100, 10]
*/
var overArgs = rest(function(func, transforms) {
- transforms = arrayMap(baseFlatten(transforms, 1), baseIteratee);
+ transforms = arrayMap(transforms, baseIteratee);
var funcsLength = transforms.length;
return rest(function(args) {
diff --git a/overEvery.js b/overEvery.js
index 82e9a368f..3ee01b6ea 100644
--- a/overEvery.js
+++ b/overEvery.js
@@ -3,13 +3,13 @@ var arrayEvery = require('./_arrayEvery'),
/**
* Creates a function that checks if **all** of the `predicates` return
- * truthy when invoked with the arguments provided to the created function.
+ * truthy when invoked with the arguments it receives.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Util
- * @param {...(Function|Function[])} predicates The predicates to check.
+ * @param {...Function} predicates The predicates to check.
* @returns {Function} Returns the new function.
* @example
*
diff --git a/overSome.js b/overSome.js
index 3ad7d2afa..fd27b1e70 100644
--- a/overSome.js
+++ b/overSome.js
@@ -3,13 +3,13 @@ var arraySome = require('./_arraySome'),
/**
* Creates a function that checks if **any** of the `predicates` return
- * truthy when invoked with the arguments provided to the created function.
+ * truthy when invoked with the arguments it receives.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Util
- * @param {...(Function|Function[])} predicates The predicates to check.
+ * @param {...Function} predicates The predicates to check.
* @returns {Function} Returns the new function.
* @example
*
diff --git a/package.json b/package.json
index 34b1b0519..a41bd36ee 100644
--- a/package.json
+++ b/package.json
@@ -1,12 +1,12 @@
{
"name": "lodash",
- "version": "4.7.0",
+ "version": "4.8.0",
"description": "Lodash modular utilities.",
"homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg",
"license": "MIT",
- "main": "lodash.js",
"private": true,
+ "main": "lodash.js",
"keywords": "modules, stdlib, util",
"author": "John-David Dalton (http://allyoucanleet.com/)",
"contributors": [
diff --git a/partial.js b/partial.js
index 9a8e6c543..149060e5a 100644
--- a/partial.js
+++ b/partial.js
@@ -7,9 +7,9 @@ var createWrapper = require('./_createWrapper'),
var PARTIAL_FLAG = 32;
/**
- * Creates a function that invokes `func` with `partial` arguments prepended
- * to those provided to the new function. This method is like `_.bind` except
- * it does **not** alter the `this` binding.
+ * Creates a function that invokes `func` with `partials` prepended to the
+ * arguments it receives. This method is like `_.bind` except it does **not**
+ * alter the `this` binding.
*
* The `_.partial.placeholder` value, which defaults to `_` in monolithic
* builds, may be used as a placeholder for partially applied arguments.
diff --git a/partialRight.js b/partialRight.js
index 2787e58d6..02d14b9a0 100644
--- a/partialRight.js
+++ b/partialRight.js
@@ -8,7 +8,7 @@ var PARTIAL_RIGHT_FLAG = 64;
/**
* This method is like `_.partial` except that partially applied arguments
- * are appended to those provided to the new function.
+ * are appended to the arguments it receives.
*
* The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
* builds, may be used as a placeholder for partially applied arguments.
diff --git a/rearg.js b/rearg.js
index 08371a436..912312843 100644
--- a/rearg.js
+++ b/rearg.js
@@ -7,7 +7,7 @@ var REARG_FLAG = 256;
/**
* Creates a function that invokes `func` with arguments arranged according
- * to the specified indexes where the argument value at the first index is
+ * to the specified `indexes` where the argument value at the first index is
* provided as the first argument, the argument value at the second index is
* provided as the second argument, and so on.
*
diff --git a/reduce.js b/reduce.js
index f56a1150e..61fd32b91 100644
--- a/reduce.js
+++ b/reduce.js
@@ -6,7 +6,7 @@ var arrayReduce = require('./_arrayReduce'),
/**
* Reduces `collection` to a value which is the accumulated result of running
- * each element in `collection` through `iteratee`, where each successive
+ * each element in `collection` thru `iteratee`, where each successive
* invocation is supplied the return value of the previous. If `accumulator`
* is not given the first element of `collection` is used as the initial
* value. The iteratee is invoked with four arguments:
diff --git a/repeat.js b/repeat.js
index d03741023..f4d8c69a0 100644
--- a/repeat.js
+++ b/repeat.js
@@ -1,4 +1,5 @@
var baseRepeat = require('./_baseRepeat'),
+ isIterateeCall = require('./_isIterateeCall'),
toInteger = require('./toInteger'),
toString = require('./toString');
@@ -10,7 +11,8 @@ var baseRepeat = require('./_baseRepeat'),
* @since 3.0.0
* @category String
* @param {string} [string=''] The string to repeat.
- * @param {number} [n=0] The number of times to repeat the string.
+ * @param {number} [n=1] The number of times to repeat the string.
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
* @returns {string} Returns the repeated string.
* @example
*
@@ -23,8 +25,13 @@ var baseRepeat = require('./_baseRepeat'),
* _.repeat('abc', 0);
* // => ''
*/
-function repeat(string, n) {
- return baseRepeat(toString(string), toInteger(n));
+function repeat(string, n, guard) {
+ if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
+ n = 1;
+ } else {
+ n = toInteger(n);
+ }
+ return baseRepeat(toString(string), n);
}
module.exports = repeat;
diff --git a/sampleSize.js b/sampleSize.js
index f7253c1ce..29df2e6f2 100644
--- a/sampleSize.js
+++ b/sampleSize.js
@@ -1,5 +1,6 @@
var baseClamp = require('./_baseClamp'),
baseRandom = require('./_baseRandom'),
+ isIterateeCall = require('./_isIterateeCall'),
toArray = require('./toArray'),
toInteger = require('./toInteger');
@@ -12,7 +13,8 @@ var baseClamp = require('./_baseClamp'),
* @since 4.0.0
* @category Collection
* @param {Array|Object} collection The collection to sample.
- * @param {number} [n=0] The number of elements to sample.
+ * @param {number} [n=1] The number of elements to sample.
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
* @returns {Array} Returns the random elements.
* @example
*
@@ -22,13 +24,17 @@ var baseClamp = require('./_baseClamp'),
* _.sampleSize([1, 2, 3], 4);
* // => [2, 3, 1]
*/
-function sampleSize(collection, n) {
+function sampleSize(collection, n, guard) {
var index = -1,
result = toArray(collection),
length = result.length,
lastIndex = length - 1;
- n = baseClamp(toInteger(n), 0, length);
+ if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
+ n = 1;
+ } else {
+ n = baseClamp(toInteger(n), 0, length);
+ }
while (++index < n) {
var rand = baseRandom(index, lastIndex),
value = result[rand];
diff --git a/set.js b/set.js
index 4df9f8cef..62cfe1128 100644
--- a/set.js
+++ b/set.js
@@ -24,7 +24,7 @@ var baseSet = require('./_baseSet');
* console.log(object.a[0].b.c);
* // => 4
*
- * _.set(object, 'x[0].y.z', 5);
+ * _.set(object, ['x', '0', 'y', 'z'], 5);
* console.log(object.x[0].y.z);
* // => 5
*/
diff --git a/sortBy.js b/sortBy.js
index 7295fc91a..17f9748aa 100644
--- a/sortBy.js
+++ b/sortBy.js
@@ -5,7 +5,7 @@ var baseFlatten = require('./_baseFlatten'),
/**
* Creates an array of elements, sorted in ascending order by the results of
- * running each element in a collection through each iteratee. This method
+ * running each element in a collection thru each iteratee. This method
* performs a stable sort, that is, it preserves the original sort order of
* equal elements. The iteratees are invoked with one argument: (value).
*
diff --git a/spread.js b/spread.js
index 7739d5c6e..c142004c1 100644
--- a/spread.js
+++ b/spread.js
@@ -12,7 +12,7 @@ var nativeMax = Math.max;
/**
* Creates a function that invokes `func` with the `this` binding of the
* create function and an array of arguments much like
- * [`Function#apply`](https://es5.github.io/#x15.3.4.3).
+ * [`Function#apply`](http://www.ecma-international.org/ecma-262/6.0/#sec-function.prototype.apply).
*
* **Note:** This method is based on the
* [spread operator](https://mdn.io/spread_operator).
diff --git a/template.js b/template.js
index 67fdc8f20..49d9aa31e 100644
--- a/template.js
+++ b/template.js
@@ -15,7 +15,10 @@ var reEmptyStringLeading = /\b__p \+= '';/g,
reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
-/** Used to match [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). */
+/**
+ * Used to match
+ * [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components).
+ */
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
/** Used to ensure capturing order of template delimiters. */
diff --git a/toNumber.js b/toNumber.js
index db84890fe..9baba7059 100644
--- a/toNumber.js
+++ b/toNumber.js
@@ -55,7 +55,7 @@ function toNumber(value) {
value = isObject(other) ? (other + '') : other;
}
if (typeof value != 'string') {
- return value === 0 ? value : +value;
+ return value === 0 ? value : +value;
}
value = value.replace(reTrim, '');
var isBinary = reIsBinary.test(value);
diff --git a/transform.js b/transform.js
index 7da7aa617..3013a83cb 100644
--- a/transform.js
+++ b/transform.js
@@ -10,11 +10,11 @@ var arrayEach = require('./_arrayEach'),
/**
* An alternative to `_.reduce`; this method transforms `object` to a new
- * `accumulator` object which is the result of running each of its own enumerable
- * string keyed properties through `iteratee`, with each invocation potentially
- * mutating the `accumulator` object. The iteratee is invoked with four arguments:
- * (accumulator, value, key, object). Iteratee functions may exit iteration
- * early by explicitly returning `false`.
+ * `accumulator` object which is the result of running each of its own
+ * enumerable string keyed properties thru `iteratee`, with each invocation
+ * potentially mutating the `accumulator` object. The iteratee is invoked
+ * with four arguments: (accumulator, value, key, object). Iteratee functions
+ * may exit iteration early by explicitly returning `false`.
*
* @static
* @memberOf _
diff --git a/unset.js b/unset.js
index 8b1972b97..723c3d44b 100644
--- a/unset.js
+++ b/unset.js
@@ -21,7 +21,7 @@ var baseUnset = require('./_baseUnset');
* console.log(object);
* // => { 'a': [{ 'b': {} }] };
*
- * _.unset(object, 'a[0].b.c');
+ * _.unset(object, ['a', '0', 'b', 'c']);
* // => true
*
* console.log(object);