/** Used to detect hot functions by number of calls within a span of milliseconds. */
							 | 
						|
								var HOT_COUNT = 800,
							 | 
						|
								    HOT_SPAN = 16;
							 | 
						|
								
							 | 
						|
								/* Built-in method references for those with the same name as other `lodash` methods. */
							 | 
						|
								var nativeNow = Date.now;
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * Creates a function that'll short out and invoke `identity` instead
							 | 
						|
								 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
							 | 
						|
								 * milliseconds.
							 | 
						|
								 *
							 | 
						|
								 * @private
							 | 
						|
								 * @param {Function} func The function to restrict.
							 | 
						|
								 * @returns {Function} Returns the new shortable function.
							 | 
						|
								 */
							 | 
						|
								function shortOut(func) {
							 | 
						|
								  var count = 0,
							 | 
						|
								      lastCalled = 0;
							 | 
						|
								
							 | 
						|
								  return function() {
							 | 
						|
								    var stamp = nativeNow(),
							 | 
						|
								        remaining = HOT_SPAN - (stamp - lastCalled);
							 | 
						|
								
							 | 
						|
								    lastCalled = stamp;
							 | 
						|
								    if (remaining > 0) {
							 | 
						|
								      if (++count >= HOT_COUNT) {
							 | 
						|
								        return arguments[0];
							 | 
						|
								      }
							 | 
						|
								    } else {
							 | 
						|
								      count = 0;
							 | 
						|
								    }
							 | 
						|
								    return func.apply(undefined, arguments);
							 | 
						|
								  };
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								module.exports = shortOut;
							 |