lodash-rails 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -18,6 +18,6 @@ Add the necessary library to `app/assets/javascripts/application.js`:
18
18
 
19
19
  ## What's included?
20
20
 
21
- * Lo-Dash 0.8.1 (lodash, lodash.min)
21
+ * Lo-Dash 0.8.2 (lodash, lodash.min)
22
22
 
23
23
  Copyright Richard Hubers, released under the MIT License.
@@ -1,5 +1,5 @@
1
1
  module LoDash
2
2
  module Rails
3
- VERSION = "0.8.1"
3
+ VERSION = "0.8.2"
4
4
  end
5
5
  end
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * Lo-Dash v0.8.1 <http://lodash.com>
2
+ * Lo-Dash v0.8.2 <http://lodash.com>
3
3
  * (c) 2012 John-David Dalton <http://allyoucanleet.com/>
4
- * Based on Underscore.js 1.4.1 <http://underscorejs.org>
4
+ * Based on Underscore.js 1.4.2 <http://underscorejs.org>
5
5
  * (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
6
6
  * Available under MIT license <http://lodash.com/license>
7
7
  */
@@ -71,7 +71,10 @@
71
71
  var templateCounter = 0;
72
72
 
73
73
  /** Native method shortcuts */
74
- var concat = ArrayProto.concat,
74
+ var ceil = Math.ceil,
75
+ concat = ArrayProto.concat,
76
+ floor = Math.floor,
77
+ getPrototypeOf = reNative.test(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf,
75
78
  hasOwnProperty = ObjectProto.hasOwnProperty,
76
79
  push = ArrayProto.push,
77
80
  propertyIsEnumerable = ObjectProto.propertyIsEnumerable,
@@ -80,8 +83,6 @@
80
83
 
81
84
  /* Native method shortcuts for methods with the same name as other `lodash` methods */
82
85
  var nativeBind = reNative.test(nativeBind = slice.bind) && nativeBind,
83
- nativeFloor = Math.floor,
84
- nativeGetPrototypeOf = reNative.test(nativeGetPrototypeOf = Object.getPrototypeOf) && nativeGetPrototypeOf,
85
86
  nativeIsArray = reNative.test(nativeIsArray = Array.isArray) && nativeIsArray,
86
87
  nativeIsFinite = window.isFinite,
87
88
  nativeKeys = reNative.test(nativeKeys = Object.keys) && nativeKeys,
@@ -235,6 +236,7 @@
235
236
  *
236
237
  * @name _
237
238
  * @constructor
239
+ * @category Chaining
238
240
  * @param {Mixed} value The value to wrap in a `lodash` instance.
239
241
  * @returns {Object} Returns a `lodash` instance.
240
242
  */
@@ -314,7 +316,7 @@
314
316
  // the `iteratee` may be reassigned by the `top` snippet
315
317
  'var index, value, iteratee = <%= firstArg %>, ' +
316
318
  // assign the `result` variable an initial value
317
- 'result<% if (init) { %> = <%= init %><% } %>;\n' +
319
+ 'result = <%= init || firstArg %>;\n' +
318
320
  // exit early if the first argument is falsey
319
321
  'if (!<%= firstArg %>) return result;\n' +
320
322
  // add code before the iteration branches
@@ -429,7 +431,6 @@
429
431
  */
430
432
  var baseIteratorOptions = {
431
433
  'args': 'collection, callback, thisArg',
432
- 'init': 'collection',
433
434
  'top': 'callback = createCallback(callback, thisArg)',
434
435
  'inLoop': 'if (callback(value, index, collection) === false) return result'
435
436
  };
@@ -454,7 +455,6 @@
454
455
  'useHas': false,
455
456
  'useStrict': false,
456
457
  'args': 'object',
457
- 'init': 'object',
458
458
  'top':
459
459
  'for (var argsIndex = 1, argsLength = arguments.length; argsIndex < argsLength; argsIndex++) {\n' +
460
460
  ' if (iteratee = arguments[argsIndex]) {',
@@ -482,7 +482,7 @@
482
482
 
483
483
  /** Reusable iterator options for `invoke`, `map`, `pluck`, and `sortBy` */
484
484
  var mapIteratorOptions = {
485
- 'init': false,
485
+ 'init': 'collection || []',
486
486
  'beforeLoop': {
487
487
  'array': 'result = Array(length)',
488
488
  'object': 'result = ' + (isKeysFast ? 'Array(length)' : '[]')
@@ -531,13 +531,11 @@
531
531
 
532
532
  if (isLarge) {
533
533
  // init value cache
534
- var key,
535
- index = fromIndex - 1;
536
-
534
+ var index = fromIndex - 1;
537
535
  while (++index < length) {
538
536
  // manually coerce `value` to string because `hasOwnProperty`, in some
539
537
  // older versions of Firefox, coerces objects incorrectly
540
- key = array[index] + '';
538
+ var key = array[index] + '';
541
539
  (hasOwnProperty.call(cache, key) ? cache[key] : (cache[key] = [])).push(array[index]);
542
540
  }
543
541
  }
@@ -666,11 +664,9 @@
666
664
  * @private
667
665
  * @param {Object} [options1, options2, ...] The compile options objects.
668
666
  *
669
- * useHas - A boolean to specify whether or not to use `hasOwnProperty` checks
670
- * in the object loop.
667
+ * useHas - A boolean to specify using `hasOwnProperty` checks in the object loop.
671
668
  *
672
- * useStrict - A boolean to specify whether or not to include the ES5
673
- * "use strict" directive.
669
+ * useStrict - A boolean to specify including the "use strict" directive.
674
670
  *
675
671
  * args - A string of comma separated arguments the iteration function will accept.
676
672
  *
@@ -690,13 +686,10 @@
690
686
  * @returns {Function} Returns the compiled function.
691
687
  */
692
688
  function createIterator() {
693
- var index = -1,
694
- length = arguments.length;
695
-
696
- // merge options into a template data object
697
689
  var data = {
698
690
  'bottom': '',
699
691
  'hasDontEnumBug': hasDontEnumBug,
692
+ 'init': '',
700
693
  'isKeysFast': isKeysFast,
701
694
  'noArgsEnum': noArgsEnum,
702
695
  'noCharByIndex': noCharByIndex,
@@ -704,12 +697,15 @@
704
697
  'top': '',
705
698
  'useHas': true,
706
699
  'useStrict': isStrictFast,
707
- 'arrayBranch': {},
708
- 'objectBranch': {}
700
+ 'arrayBranch': { 'beforeLoop': '' },
701
+ 'objectBranch': { 'beforeLoop': '' }
709
702
  };
710
703
 
711
- while (++index < length) {
712
- var object = arguments[index];
704
+ var object,
705
+ index = -1;
706
+
707
+ // merge options into a template data object
708
+ while (object = arguments[++index]) {
713
709
  for (var prop in object) {
714
710
  var value = object[prop];
715
711
  // keep this regexp explicit for the build pre-process
@@ -724,15 +720,9 @@
724
720
  }
725
721
  }
726
722
  }
727
- // set additional template `data` values
728
- var args = data.args,
729
- firstArg = /^[^,]+/.exec(args)[0],
730
- init = data.init;
731
-
732
- data.firstArg = firstArg;
733
- data.init = init == null ? firstArg : init;
734
-
735
- if (firstArg != 'collection' || !data.arrayBranch.inLoop) {
723
+ // set additional template `data` properties
724
+ var args = data.args;
725
+ if ((data.firstArg = /^[^,]+/.exec(args)[0]) != 'collection' || !data.arrayBranch.inLoop) {
736
726
  data.arrayBranch = null;
737
727
  }
738
728
  // create the function factory
@@ -910,15 +900,15 @@
910
900
  * _.isPlainObject({ 'name': 'moe', 'age': 40 });
911
901
  * // => true
912
902
  */
913
- var isPlainObject = !nativeGetPrototypeOf ? isPlainFallback : function(value) {
903
+ var isPlainObject = !getPrototypeOf ? isPlainFallback : function(value) {
914
904
  if (!(value && typeof value == 'object')) {
915
905
  return false;
916
906
  }
917
907
  var valueOf = value.valueOf,
918
- objProto = typeof valueOf == 'function' && (objProto = nativeGetPrototypeOf(valueOf)) && nativeGetPrototypeOf(objProto);
908
+ objProto = typeof valueOf == 'function' && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);
919
909
 
920
910
  return objProto
921
- ? value == objProto || (nativeGetPrototypeOf(value) == objProto && !isArguments(value))
911
+ ? value == objProto || (getPrototypeOf(value) == objProto && !isArguments(value))
922
912
  : isPlainFallback(value);
923
913
  };
924
914
 
@@ -1065,8 +1055,6 @@
1065
1055
  var ctor = value.constructor;
1066
1056
  switch (className) {
1067
1057
  case boolClass:
1068
- return new ctor(value == true);
1069
-
1070
1058
  case dateClass:
1071
1059
  return new ctor(+value);
1072
1060
 
@@ -1077,7 +1065,6 @@
1077
1065
  case regexpClass:
1078
1066
  return ctor(value.source, reFlags.exec(value));
1079
1067
  }
1080
-
1081
1068
  // check for circular references and return corresponding clone
1082
1069
  stackA || (stackA = []);
1083
1070
  stackB || (stackB = []);
@@ -1088,9 +1075,8 @@
1088
1075
  return stackB[length];
1089
1076
  }
1090
1077
  }
1091
-
1092
1078
  // init cloned object
1093
- var result = isArr ? ctor(length = value.length) : {};
1079
+ var result = isArr ? ctor(value.length) : {};
1094
1080
 
1095
1081
  // add the source value to the stack of traversed objects
1096
1082
  // and associate it with its clone
@@ -1098,16 +1084,10 @@
1098
1084
  stackB.push(result);
1099
1085
 
1100
1086
  // recursively populate clone (susceptible to call stack limits)
1101
- if (isArr) {
1102
- var index = -1;
1103
- while (++index < length) {
1104
- result[index] = clone(value[index], deep, null, stackA, stackB);
1105
- }
1106
- } else {
1107
- forOwn(value, function(objValue, key) {
1108
- result[key] = clone(objValue, deep, null, stackA, stackB);
1109
- });
1110
- }
1087
+ (isArr ? forEach : forOwn)(value, function(objValue, key) {
1088
+ result[key] = clone(objValue, deep, null, stackA, stackB);
1089
+ });
1090
+
1111
1091
  return result;
1112
1092
  }
1113
1093
 
@@ -1224,7 +1204,7 @@
1224
1204
  'useHas': false,
1225
1205
  'args': 'object',
1226
1206
  'init': '[]',
1227
- 'inLoop': 'if (isFunction(value)) result.push(index)',
1207
+ 'inLoop': 'isFunction(value) && result.push(index)',
1228
1208
  'bottom': 'result.sort()'
1229
1209
  });
1230
1210
 
@@ -1691,7 +1671,7 @@
1691
1671
  }
1692
1672
  return object && objectTypes[type]
1693
1673
  ? nativeKeys(object)
1694
- : [];
1674
+ : [];
1695
1675
  };
1696
1676
 
1697
1677
  /**
@@ -1746,7 +1726,7 @@
1746
1726
  ' result[index] = stackB[stackLength]\n' +
1747
1727
  ' } else {\n' +
1748
1728
  ' stackA.push(source);\n' +
1749
- ' stackB.push(value = (value = result[index]) && isArr\n' +
1729
+ ' stackB.push(value = (value = result[index], isArr)\n' +
1750
1730
  ' ? (isArray(value) ? value : [])\n' +
1751
1731
  ' : (isPlainObject(value) ? value : {})\n' +
1752
1732
  ' );\n' +
@@ -1832,11 +1812,11 @@
1832
1812
  var pick = createIterator(omitIteratorOptions, {
1833
1813
  'top':
1834
1814
  'if (typeof callback != \'function\') {\n' +
1835
- ' var prop,\n' +
1815
+ ' var index = 0,\n' +
1836
1816
  ' props = concat.apply(ArrayProto, arguments),\n' +
1837
1817
  ' length = props.length;\n' +
1838
- ' for (index = 1; index < length; index++) {\n' +
1839
- ' prop = props[index];\n' +
1818
+ ' while (++index < length) {\n' +
1819
+ ' var prop = props[index];\n' +
1840
1820
  ' if (prop in object) result[prop] = object[prop]\n' +
1841
1821
  ' }\n' +
1842
1822
  '} else {\n' +
@@ -1989,7 +1969,7 @@
1989
1969
  * // => 2
1990
1970
  */
1991
1971
  var find = createIterator(baseIteratorOptions, forEachIteratorOptions, {
1992
- 'init': false,
1972
+ 'init': 'undefined',
1993
1973
  'inLoop': 'if (callback(value, index, collection)) return value'
1994
1974
  });
1995
1975
 
@@ -2108,6 +2088,98 @@
2108
2088
  */
2109
2089
  var map = createIterator(baseIteratorOptions, mapIteratorOptions);
2110
2090
 
2091
+ /**
2092
+ * Retrieves the maximum value of an `array`. If `callback` is passed,
2093
+ * it will be executed for each value in the `array` to generate the
2094
+ * criterion by which the value is ranked. The `callback` is bound to
2095
+ * `thisArg` and invoked with three arguments; (value, index, collection).
2096
+ *
2097
+ * @static
2098
+ * @memberOf _
2099
+ * @category Collections
2100
+ * @param {Array} collection The collection to iterate over.
2101
+ * @param {Function} [callback] The function called per iteration.
2102
+ * @param {Mixed} [thisArg] The `this` binding of `callback`.
2103
+ * @returns {Mixed} Returns the maximum value.
2104
+ * @example
2105
+ *
2106
+ * var stooges = [
2107
+ * { 'name': 'moe', 'age': 40 },
2108
+ * { 'name': 'larry', 'age': 50 },
2109
+ * { 'name': 'curly', 'age': 60 }
2110
+ * ];
2111
+ *
2112
+ * _.max(stooges, function(stooge) { return stooge.age; });
2113
+ * // => { 'name': 'curly', 'age': 60 };
2114
+ */
2115
+ function max(collection, callback, thisArg) {
2116
+ var computed = -Infinity,
2117
+ index = -1,
2118
+ length = collection ? collection.length : 0,
2119
+ result = computed;
2120
+
2121
+ if (callback || length !== +length) {
2122
+ callback = createCallback(callback, thisArg);
2123
+ forEach(collection, function(value, index, collection) {
2124
+ var current = callback(value, index, collection);
2125
+ if (current > computed) {
2126
+ computed = current;
2127
+ result = value;
2128
+ }
2129
+ });
2130
+ } else {
2131
+ while (++index < length) {
2132
+ if (collection[index] > result) {
2133
+ result = collection[index];
2134
+ }
2135
+ }
2136
+ }
2137
+ return result;
2138
+ }
2139
+
2140
+ /**
2141
+ * Retrieves the minimum value of an `array`. If `callback` is passed,
2142
+ * it will be executed for each value in the `array` to generate the
2143
+ * criterion by which the value is ranked. The `callback` is bound to `thisArg`
2144
+ * and invoked with three arguments; (value, index, collection).
2145
+ *
2146
+ * @static
2147
+ * @memberOf _
2148
+ * @category Collections
2149
+ * @param {Array} collection The collection to iterate over.
2150
+ * @param {Function} [callback] The function called per iteration.
2151
+ * @param {Mixed} [thisArg] The `this` binding of `callback`.
2152
+ * @returns {Mixed} Returns the minimum value.
2153
+ * @example
2154
+ *
2155
+ * _.min([10, 5, 100, 2, 1000]);
2156
+ * // => 2
2157
+ */
2158
+ function min(collection, callback, thisArg) {
2159
+ var computed = Infinity,
2160
+ index = -1,
2161
+ length = collection ? collection.length : 0,
2162
+ result = computed;
2163
+
2164
+ if (callback || length !== +length) {
2165
+ callback = createCallback(callback, thisArg);
2166
+ forEach(collection, function(value, index, collection) {
2167
+ var current = callback(value, index, collection);
2168
+ if (current < computed) {
2169
+ computed = current;
2170
+ result = value;
2171
+ }
2172
+ });
2173
+ } else {
2174
+ while (++index < length) {
2175
+ if (collection[index] < result) {
2176
+ result = collection[index];
2177
+ }
2178
+ }
2179
+ }
2180
+ return result;
2181
+ }
2182
+
2111
2183
  /**
2112
2184
  * Retrieves the value of a specified property from all elements in
2113
2185
  * the `collection`.
@@ -2235,6 +2307,32 @@
2235
2307
  'inLoop': '!' + filterIteratorOptions.inLoop
2236
2308
  });
2237
2309
 
2310
+ /**
2311
+ * Creates an array of shuffled `array` values, using a version of the
2312
+ * Fisher-Yates shuffle. See http://en.wikipedia.org/wiki/Fisher-Yates_shuffle.
2313
+ *
2314
+ * @static
2315
+ * @memberOf _
2316
+ * @category Collections
2317
+ * @param {Array} collection The collection to shuffle.
2318
+ * @returns {Array} Returns a new shuffled collection.
2319
+ * @example
2320
+ *
2321
+ * _.shuffle([1, 2, 3, 4, 5, 6]);
2322
+ * // => [4, 1, 6, 3, 5, 2]
2323
+ */
2324
+ function shuffle(collection) {
2325
+ var index = -1,
2326
+ result = Array(collection ? collection.length : 0);
2327
+
2328
+ forEach(collection, function(value) {
2329
+ var rand = floor(nativeRandom() * (++index + 1));
2330
+ result[index] = result[rand];
2331
+ result[rand] = value;
2332
+ });
2333
+ return result;
2334
+ }
2335
+
2238
2336
  /**
2239
2337
  * Gets the size of the `collection` by returning `collection.length` for arrays
2240
2338
  * and array-like objects or the number of own enumerable properties for objects.
@@ -2387,8 +2485,8 @@
2387
2485
  'forIn(properties, function(value, prop) { props.push(prop) });\n' +
2388
2486
  'var propsLength = props.length',
2389
2487
  'inLoop':
2390
- 'for (var prop, pass = true, propIndex = 0; propIndex < propsLength; propIndex++) {\n' +
2391
- ' prop = props[propIndex];\n' +
2488
+ 'for (var pass = true, propIndex = 0; propIndex < propsLength; propIndex++) {\n' +
2489
+ ' var prop = props[propIndex];\n' +
2392
2490
  ' if (!(pass = value[prop] === properties[prop])) break\n' +
2393
2491
  '}\n' +
2394
2492
  'pass && result.push(value)'
@@ -2416,8 +2514,9 @@
2416
2514
  result = [];
2417
2515
 
2418
2516
  while (++index < length) {
2419
- if (array[index]) {
2420
- result.push(array[index]);
2517
+ var value = array[index];
2518
+ if (value) {
2519
+ result.push(value);
2421
2520
  }
2422
2521
  }
2423
2522
  return result;
@@ -2502,13 +2601,12 @@
2502
2601
  * // => [1, 2, 3, [[4]]];
2503
2602
  */
2504
2603
  function flatten(array, shallow) {
2505
- var value,
2506
- index = -1,
2604
+ var index = -1,
2507
2605
  length = array ? array.length : 0,
2508
2606
  result = [];
2509
2607
 
2510
2608
  while (++index < length) {
2511
- value = array[index];
2609
+ var value = array[index];
2512
2610
 
2513
2611
  // recursively flatten arrays (susceptible to call stack limits)
2514
2612
  if (isArray(value)) {
@@ -2523,7 +2621,7 @@
2523
2621
  /**
2524
2622
  * Gets the index at which the first occurrence of `value` is found using
2525
2623
  * strict equality for comparisons, i.e. `===`. If the `array` is already
2526
- * sorted, passing `true` for `isSorted` will run a faster binary search.
2624
+ * sorted, passing `true` for `fromIndex` will run a faster binary search.
2527
2625
  *
2528
2626
  * @static
2529
2627
  * @memberOf _
@@ -2678,84 +2776,6 @@
2678
2776
  return -1;
2679
2777
  }
2680
2778
 
2681
- /**
2682
- * Retrieves the maximum value of an `array`. If `callback` is passed,
2683
- * it will be executed for each value in the `array` to generate the
2684
- * criterion by which the value is ranked. The `callback` is bound to
2685
- * `thisArg` and invoked with three arguments; (value, index, array).
2686
- *
2687
- * @static
2688
- * @memberOf _
2689
- * @category Arrays
2690
- * @param {Array} array The array to iterate over.
2691
- * @param {Function} [callback] The function called per iteration.
2692
- * @param {Mixed} [thisArg] The `this` binding of `callback`.
2693
- * @returns {Mixed} Returns the maximum value.
2694
- * @example
2695
- *
2696
- * var stooges = [
2697
- * { 'name': 'moe', 'age': 40 },
2698
- * { 'name': 'larry', 'age': 50 },
2699
- * { 'name': 'curly', 'age': 60 }
2700
- * ];
2701
- *
2702
- * _.max(stooges, function(stooge) { return stooge.age; });
2703
- * // => { 'name': 'curly', 'age': 60 };
2704
- */
2705
- function max(array, callback, thisArg) {
2706
- var current,
2707
- computed = -Infinity,
2708
- index = -1,
2709
- length = array ? array.length : 0,
2710
- result = computed;
2711
-
2712
- callback = createCallback(callback, thisArg);
2713
- while (++index < length) {
2714
- current = callback(array[index], index, array);
2715
- if (current > computed) {
2716
- computed = current;
2717
- result = array[index];
2718
- }
2719
- }
2720
- return result;
2721
- }
2722
-
2723
- /**
2724
- * Retrieves the minimum value of an `array`. If `callback` is passed,
2725
- * it will be executed for each value in the `array` to generate the
2726
- * criterion by which the value is ranked. The `callback` is bound to `thisArg`
2727
- * and invoked with three arguments; (value, index, array).
2728
- *
2729
- * @static
2730
- * @memberOf _
2731
- * @category Arrays
2732
- * @param {Array} array The array to iterate over.
2733
- * @param {Function} [callback] The function called per iteration.
2734
- * @param {Mixed} [thisArg] The `this` binding of `callback`.
2735
- * @returns {Mixed} Returns the minimum value.
2736
- * @example
2737
- *
2738
- * _.min([10, 5, 100, 2, 1000]);
2739
- * // => 2
2740
- */
2741
- function min(array, callback, thisArg) {
2742
- var current,
2743
- computed = Infinity,
2744
- index = -1,
2745
- length = array ? array.length : 0,
2746
- result = computed;
2747
-
2748
- callback = createCallback(callback, thisArg);
2749
- while (++index < length) {
2750
- current = callback(array[index], index, array);
2751
- if (current < computed) {
2752
- computed = current;
2753
- result = array[index];
2754
- }
2755
- }
2756
- return result;
2757
- }
2758
-
2759
2779
  /**
2760
2780
  * Creates an object composed from arrays of `keys` and `values`. Pass either
2761
2781
  * a single two dimensional array, i.e. `[[key1, value1], [key2, value2]]`, or
@@ -2779,10 +2799,11 @@
2779
2799
  result = {};
2780
2800
 
2781
2801
  while (++index < length) {
2802
+ var key = keys[index];
2782
2803
  if (values) {
2783
- result[keys[index]] = values[index];
2804
+ result[key] = values[index];
2784
2805
  } else {
2785
- result[keys[index][0]] = keys[index][1];
2806
+ result[key[0]] = key[1];
2786
2807
  }
2787
2808
  }
2788
2809
  return result;
@@ -2828,7 +2849,7 @@
2828
2849
  // use `Array(length)` so V8 will avoid the slower "dictionary" mode
2829
2850
  // http://www.youtube.com/watch?v=XAqIpGU8ZZk#t=16m27s
2830
2851
  var index = -1,
2831
- length = nativeMax(0, Math.ceil((end - start) / step)),
2852
+ length = nativeMax(0, ceil((end - start) / step)),
2832
2853
  result = Array(length);
2833
2854
 
2834
2855
  while (++index < length) {
@@ -2862,33 +2883,6 @@
2862
2883
  : [];
2863
2884
  }
2864
2885
 
2865
- /**
2866
- * Creates an array of shuffled `array` values, using a version of the
2867
- * Fisher-Yates shuffle. See http://en.wikipedia.org/wiki/Fisher-Yates_shuffle.
2868
- *
2869
- * @static
2870
- * @memberOf _
2871
- * @category Arrays
2872
- * @param {Array} array The array to shuffle.
2873
- * @returns {Array} Returns a new shuffled array.
2874
- * @example
2875
- *
2876
- * _.shuffle([1, 2, 3, 4, 5, 6]);
2877
- * // => [4, 1, 6, 3, 5, 2]
2878
- */
2879
- function shuffle(array) {
2880
- var index = -1,
2881
- length = array ? array.length : 0,
2882
- result = Array(length);
2883
-
2884
- while (++index < length) {
2885
- var rand = nativeFloor(nativeRandom() * (index + 1));
2886
- result[index] = result[rand];
2887
- result[rand] = array[index];
2888
- }
2889
- return result;
2890
- }
2891
-
2892
2886
  /**
2893
2887
  * Uses a binary search to determine the smallest index at which the `value`
2894
2888
  * should be inserted into `array` in order to maintain the sort order of the
@@ -2933,11 +2927,18 @@
2933
2927
  var low = 0,
2934
2928
  high = array ? array.length : low;
2935
2929
 
2936
- callback = createCallback(callback, thisArg);
2937
- value = callback(value);
2938
- while (low < high) {
2939
- var mid = (low + high) >>> 1;
2940
- callback(array[mid]) < value ? low = mid + 1 : high = mid;
2930
+ if (callback) {
2931
+ callback = createCallback(callback, thisArg);
2932
+ value = callback(value);
2933
+ while (low < high) {
2934
+ var mid = (low + high) >>> 1;
2935
+ callback(array[mid]) < value ? low = mid + 1 : high = mid;
2936
+ }
2937
+ } else {
2938
+ while (low < high) {
2939
+ var mid = (low + high) >>> 1;
2940
+ array[mid] < value ? low = mid + 1 : high = mid;
2941
+ }
2941
2942
  }
2942
2943
  return low;
2943
2944
  }
@@ -2964,8 +2965,9 @@
2964
2965
  result = [];
2965
2966
 
2966
2967
  while (++index < length) {
2967
- if (indexOf(result, flattened[index]) < 0) {
2968
- result.push(flattened[index]);
2968
+ var value = flattened[index];
2969
+ if (indexOf(result, value) < 0) {
2970
+ result.push(value);
2969
2971
  }
2970
2972
  }
2971
2973
  return result;
@@ -3174,17 +3176,16 @@
3174
3176
  'args': 'object',
3175
3177
  'top':
3176
3178
  'var funcs = arguments,\n' +
3179
+ ' index = 0,\n' +
3177
3180
  ' length = funcs.length;\n' +
3178
3181
  'if (length > 1) {\n' +
3179
- ' for (var index = 1; index < length; index++) {\n' +
3182
+ ' while (++index < length) {\n' +
3180
3183
  ' result[funcs[index]] = bind(result[funcs[index]], result)\n' +
3181
3184
  ' }\n' +
3182
3185
  ' return result\n' +
3183
3186
  '}',
3184
3187
  'inLoop':
3185
- 'if (isFunction(value)) {\n' +
3186
- ' result[index] = bind(value, result)\n' +
3187
- '}'
3188
+ 'if (isFunction(value)) result[index] = bind(value, result)'
3188
3189
  });
3189
3190
 
3190
3191
  /**
@@ -3467,6 +3468,7 @@
3467
3468
  thisArg = this;
3468
3469
 
3469
3470
  if (remain <= 0) {
3471
+ clearTimeout(timeoutId);
3470
3472
  lastCalled = now;
3471
3473
  result = func.apply(thisArg, args);
3472
3474
  }
@@ -3632,7 +3634,7 @@
3632
3634
  max = min;
3633
3635
  min = 0;
3634
3636
  }
3635
- return min + nativeFloor(nativeRandom() * ((+max || 0) - min + 1));
3637
+ return min + floor(nativeRandom() * ((+max || 0) - min + 1));
3636
3638
  }
3637
3639
 
3638
3640
  /**
@@ -3737,7 +3739,7 @@
3737
3739
  // http://ejohn.org/blog/javascript-micro-templating/
3738
3740
  // and Laura Doktorova's doT.js
3739
3741
  // https://github.com/olado/doT
3740
- text += '';
3742
+ text || (text = '');
3741
3743
  options || (options = {});
3742
3744
 
3743
3745
  var isEvaluating,
@@ -3999,7 +4001,7 @@
3999
4001
  * @memberOf _
4000
4002
  * @type String
4001
4003
  */
4002
- lodash.VERSION = '0.8.1';
4004
+ lodash.VERSION = '0.8.2';
4003
4005
 
4004
4006
  // assign static methods
4005
4007
  lodash.after = after;
@@ -1,39 +1,39 @@
1
1
  /*!
2
- Lo-Dash 0.8.1 lodash.com/license
3
- Underscore.js 1.4.1 underscorejs.org/LICENSE
2
+ Lo-Dash 0.8.2 lodash.com/license
3
+ Underscore.js 1.4.2 underscorejs.org/LICENSE
4
4
  */
5
- ;(function(e,t){function s(e){if(e&&e.__wrapped__)return e;if(!(this instanceof s))return new s(e);this.__wrapped__=e}function o(e,t,n){t||(t=0);var r=e.length,i=r-t>=(n||H),s=i?{}:e;if(i)for(var o=t-1;++o<r;)n=e[o]+"",(Q.call(s,n)?s[n]:s[n]=[]).push(e[o]);return function(e){if(i){var n=e+"";return Q.call(s,n)&&-1<x(s[n],e)}return-1<x(s,e,t)}}function u(e,n){var r=e.b,i=n.b,e=e.a,n=n.a;if(e!==n){if(e>n||e===t)return 1;if(e<n||n===t)return-1}return r<i?-1:1}function a(e,t,n){function r(){var u=arguments
6
- ,a=s?this:t;return i||(e=t[o]),n.length&&(u=u.length?n.concat(Z.call(u)):n),this instanceof r?(p.prototype=e.prototype,a=new p,(u=e.apply(a,u))&&Pt[typeof u]?u:a):e.apply(a,u)}var i=m(e),s=!n,o=e;return s&&(n=t),r}function f(e,n){return e?"function"!=typeof e?function(t){return t[e]}:n!==t?function(t,r,i){return e.call(n,t,r,i)}:e:A}function l(){for(var e=-1,t=arguments.length,i={e:"",g:wt,j:Ot,m:xt,n:Ct,o:J,p:"",q:n,r:Mt,c:{},l:{}};++e<t;){var s=arguments[e],o;for(o in s){var a=s[o];/d|h/.test(o
7
- )?("string"==typeof a&&(a={b:a,k:a}),i.c[o]=a.b,i.l[o]=a.k):i[o]=a}}e=i.a,t=/^[^,]+/.exec(e)[0],s=i.i,i.f=t,i.i=s==r?t:s;if("d"!=t||!i.c.h)i.c=r;t="",i.r&&(t+="'use strict';"),t+="var i,A,j="+i.f+",t",i.i&&(t+="="+i.i),t+=";if(!"+i.f+")return t;"+i.p+";",i.c&&(t+="var k=j.length;i=-1;",i.l&&(t+="if(k===+k){"),i.n&&(t+="if(y.call(j)==w){j=j.split('')}"),t+=i.c.d+";while(++i<k){A=j[i];"+i.c.h+"}",i.l&&(t+="}"));if(i.l){i.c?t+="else {":i.m&&(t+="var k=j.length;i=-1;if(k&&O(j)){while(++i<k){A=j[i+=''];"+
8
- i.l.h+"}}else {"),i.g||(t+="var u=typeof j=='function'&&q.call(j,'prototype');");if(i.j&&i.q)t+="var n=-1,o=Y[typeof j]?l(j):[],k=o.length;"+i.l.d+";while(++n<k){i=o[n];",i.g||(t+="if(!(u&&i=='prototype')){"),t+="A=j[i];"+i.l.h+"",i.g||(t+="}");else{t+=i.l.d+";for(i in j){";if(!i.g||i.q)t+="if(",i.g||(t+="!(u&&i=='prototype')"),!i.g&&i.q&&(t+="&&"),i.q&&(t+="h.call(j,i)"),t+="){";t+="A=j[i];"+i.l.h+";";if(!i.g||i.q)t+="}"}t+="}";if(i.g){t+="var g=j.constructor;";for(s=0;7>s;s++)t+="i='"+i.o[s]+"';if("
9
- ,"constructor"==i.o[s]&&(t+="!(g&&g.prototype===j)&&"),t+="h.call(j,i)){A=j[i];"+i.l.h+"}"}if(i.c||i.m)t+="}"}return t+=i.e+";return t",Function("D,E,F,I,e,f,J,h,M,O,Q,S,T,X,Y,l,q,v,w,y,z","var G=function("+e+"){"+t+"};return G")(_t,_,L,u,K,f,Zt,Q,x,v,Vt,m,$t,vt,Pt,ot,Y,Z,gt,et)}function c(e){return"\\"+Ht[e]}function h(e){return Kt[e]}function p(){}function d(e){return Qt[e]}function v(e){return et.call(e)==lt}function m(e){return"function"==typeof e}function g(e){var t=i;if(!e||"object"!=typeof
10
- e||v(e))return t;var n=e.constructor;return(!kt||"function"==typeof e.toString||"string"!=typeof (e+""))&&(!m(n)||n instanceof n)?St?(Zt(e,function(e,n,r){return t=!Q.call(r,n),i}),t===i):(Zt(e,function(e,n){t=n}),t===i||Q.call(e,t)):t}function y(e,t,s,o,u){if(e==r)return e;s&&(t=i);if(s=Pt[typeof e]){var a=et.call(e);if(!Dt[a]||Tt&&v(e))return e;var f=a==ct,s=f||(a==vt?$t(e):s)}if(!s||!t)return s?f?Z.call(e):Yt({},e):e;s=e.constructor;switch(a){case ht:return new s(e==n);case pt:return new s(+e)
11
- ;case dt:case gt:return new s(e);case mt:return s(e.source,U.exec(e))}o||(o=[]),u||(u=[]);for(a=o.length;a--;)if(o[a]==e)return u[a];var l=f?s(a=e.length):{};o.push(e),u.push(l);if(f)for(f=-1;++f<a;)l[f]=y(e[f],t,r,o,u);else en(e,function(e,n){l[n]=y(e,t,r,o,u)});return l}function b(e,t,s,o){if(e==r||t==r)return e===t;if(e===t)return 0!==e||1/e==1/t;if(Pt[typeof e]||Pt[typeof t])e=e.__wrapped__||e,t=t.__wrapped__||t;var u=et.call(e);if(u!=et.call(t))return i;switch(u){case ht:case pt:return+e==+t
12
- ;case dt:return e!=+e?t!=+t:0==e?1/e==1/t:e==+t;case mt:case gt:return e==t+""}var a=_t[u];if(Tt&&!a&&(a=v(e))&&!v(t)||!a&&(u!=vt||kt&&("function"!=typeof e.toString&&"string"==typeof (e+"")||"function"!=typeof t.toString&&"string"==typeof (t+""))))return i;s||(s=[]),o||(o=[]);for(u=s.length;u--;)if(s[u]==e)return o[u]==t;var u=-1,f=n,l=0;s.push(e),o.push(t);if(a){l=e.length;if(f=l==t.length)for(;l--&&(f=b(e[l],t[l],s,o)););return f}a=e.constructor,f=t.constructor;if(a!=f&&(!m(a)||!(a instanceof
13
- a&&m(f)&&f instanceof f)))return i;for(var c in e)if(Q.call(e,c)&&(l++,!Q.call(t,c)||!b(e[c],t[c],s,o)))return i;for(c in t)if(Q.call(t,c)&&!(l--))return i;if(wt)for(;7>++u;)if(c=J[u],Q.call(e,c)&&(!Q.call(t,c)||!b(e[c],t[c],s,o)))return i;return n}function w(e,t,n,r){var s=e,o=e?e.length:0,u=3>arguments.length;if(o!==+o)var a=rn(e),o=a.length;else Ct&&et.call(e)==gt&&(s=e.split(""));return vn(e,function(e,f,l){f=a?a[--o]:--o,n=u?(u=i,s[f]):t.call(r,n,s[f],f,l)}),n}function E(e,t,n){if(e)return t==
14
- r||n?e[0]:Z.call(e,0,t)}function S(e,t){for(var n,r=-1,i=e?e.length:0,s=[];++r<i;)n=e[r],Vt(n)?G.apply(s,t?n:S(n)):s.push(n);return s}function x(e,t,n){var r=-1,i=e?e.length:0;if("number"==typeof n)r=(0>n?ut(0,i+n):n||0)-1;else if(n)return r=C(e,t),e[r]===t?r:-1;for(;++r<i;)if(e[r]===t)return r;return-1}function T(e,t,n){for(var r=-Infinity,i=-1,s=e?e.length:0,o=r,t=f(t,n);++i<s;)n=t(e[i],i,e),n>r&&(r=n,o=e[i]);return o}function N(e,t,n){return e?Z.call(e,t==r||n?1:t):[]}function C(e,t,n,r){for(var i=0
15
- ,s=e?e.length:i,n=f(n,r),t=n(t);i<s;)r=i+s>>>1,n(e[r])<t?i=r+1:s=r;return i}function k(e,t,n,r){var s=-1,o=e?e.length:0,u=[],a=[];"function"==typeof t&&(r=n,n=t,t=i);for(n=f(n,r);++s<o;)if(r=n(e[s],s,e),t?!s||a[a.length-1]!==r:0>x(a,r))a.push(r),u.push(e[s]);return u}function L(e,t){return At||tt&&2<arguments.length?tt.call.apply(tt,arguments):a(e,t,Z.call(arguments,2))}function A(e){return e}function O(e){vn(tn(e),function(t){var r=s[t]=e[t];s.prototype[t]=function(){var e=[this.__wrapped__];return arguments
16
- .length&&G.apply(e,arguments),e=r.apply(s,e),this.__chain__&&(e=new s(e),e.__chain__=n),e}})}var n=!0,r=null,i=!1,M="object"==typeof exports&&exports&&("object"==typeof global&&global&&global==global.global&&(e=global),exports),_=Array.prototype,D=Object.prototype,P=0,H=30,B=e._,j=/[-?+=!~*%&^<>|{(\/]|\[\D|\b(?:delete|in|instanceof|new|typeof|void)\b/,F=/&(?:amp|lt|gt|quot|#x27);/g,I=/\b__p\+='';/g,q=/\b(__p\+=)''\+/g,R=/(__e\(.*?\)|\b__t\))\+'';/g,U=/\w*$/,z=/(?:__e|__t=)\(\s*(?![\d\s"']|this\.)/g
17
- ,W=RegExp("^"+(D.valueOf+"").replace(/[.*+?^=!:${}()|[\]\/\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),X=/($^)/,V=/[&<>"']/g,$=/['\n\r\t\u2028\u2029\\]/g,J="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),K=_.concat,Q=D.hasOwnProperty,G=_.push,Y=D.propertyIsEnumerable,Z=_.slice,et=D.toString,tt=W.test(tt=Z.bind)&&tt,nt=Math.floor,rt=W.test(rt=Object.getPrototypeOf)&&rt,it=W.test(it=Array.isArray)&&it,st=e.isFinite,ot=W.test(ot=Object
18
- .keys)&&ot,ut=Math.max,at=Math.min,ft=Math.random,lt="[object Arguments]",ct="[object Array]",ht="[object Boolean]",pt="[object Date]",dt="[object Number]",vt="[object Object]",mt="[object RegExp]",gt="[object String]",yt=e.clearTimeout,bt=e.setTimeout,wt,Et,St,xt=n;(function(){function e(){this.x=1}var t={0:1,length:1},n=[];e.prototype={valueOf:1,y:1};for(var r in new e)n.push(r);for(r in arguments)xt=!r;wt=4>(n+"").length,St="x"!=n[0],Et=(n.splice.call(t,0,1),t[0])})(1);var Tt=!v(arguments),Nt="x"!=
19
- Z.call("x")[0],Ct="xx"!="x"[0]+Object("x")[0];try{var kt=("[object Object]",et.call(e.document||0)==vt)}catch(Lt){}var At=tt&&/\n|Opera/.test(tt+et.call(e.opera)),Ot=ot&&/^.+$|true/.test(ot+!!e.attachEvent),Mt=!At,_t={};_t[ht]=_t[pt]=_t["[object Function]"]=_t[dt]=_t[vt]=_t[mt]=i,_t[lt]=_t[ct]=_t[gt]=n;var Dt={};Dt[lt]=Dt["[object Function]"]=i,Dt[ct]=Dt[ht]=Dt[pt]=Dt[dt]=Dt[vt]=Dt[mt]=Dt[gt]=n;var Pt={"boolean":i,"function":n,object:n,number:i,string:i,"undefined":i,unknown:n},Ht={"\\":"\\","'":"'"
20
- ,"\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"};s.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""};var Bt={a:"d,c,x",i:"d",p:"c=f(c,x)",h:"if(c(A,i,d)===false)return t"},jt={i:"{}",p:"c=f(c,x)",h:"var p=c(A,i,d);(h.call(t,p)?t[p]++:t[p]=1)"},Ft={i:"true",h:"if(!c(A,i,d))return!t"},It={q:i,r:i,a:"m",i:"m",p:"for(var a=1,b=arguments.length;a<b;a++){if(j=arguments[a]){",h:"t[i]=A",e:"}}"},qt={i:"[]",h:"c(A,i,d)&&t.push(A)"
21
- },Rt={p:"c=f(c,x)"},Ut={h:{k:Bt.h}},zt={i:i,d:{b:"t=Array(k)",k:"t="+(Ot?"Array(k)":"[]")},h:{b:"t[i]=c(A,i,d)",k:"t"+(Ot?"[n]=":".push")+"(c(A,i,d))"}},Wt={q:i,a:"m,c,x",i:"{}",p:"var R=typeof c=='function';if(R)c=f(c,x);else var s=e.apply(E,arguments)",h:"if(R?!c(A,i,m):M(s,i)<0)t[i]=A"},Xt=l({a:"m",i:"{}",h:"t[A]=i"});Tt&&(v=function(e){return e?Q.call(e,"callee"):i});var Vt=it||function(e){return et.call(e)==ct};m(/x/)&&(m=function(e){return"[object Function]"==et.call(e)});var $t=rt?function(
22
- e){if(!e||"object"!=typeof e)return i;var t=e.valueOf,n="function"==typeof t&&(n=rt(t))&&rt(n);return n?e==n||rt(e)==n&&!v(e):g(e)}:g,Jt=l({a:"m",i:"[]",h:"t.push(i)"}),Kt={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"},Qt=Xt(Kt),Gt=l(It,{h:"if(t[i]==null)"+It.h}),Yt=l(It),Zt=l(Bt,Rt,Ut,{q:i}),en=l(Bt,Rt,Ut),tn=l({q:i,a:"m",i:"[]",h:"if(S(A))t.push(i)",e:"t.sort()"}),nn=l({a:"A",i:"true",p:"var H=y.call(A),k=A.length;if(D[H]"+(Tt?"||O(A)":"")+"||(H==X&&k===+k&&S(A.splice)))return!k"
23
- ,h:{k:"return false"}}),rn=ot?function(e){var t=typeof e;return"function"==t&&Y.call(e,"prototype")?Jt(e):e&&Pt[t]?ot(e):[]}:Jt,sn=l(It,{a:"m,dd,N",p:"var P,C=arguments,a=0;if(N==I){var b=2,ee=C[3],ff=C[4]}else var b=C.length,ee=[],ff=[];while(++a<b){if(j=C[a]){",h:"if((dd=A)&&((P=Q(dd))||T(dd))){var K=false,gg=ee.length;while(gg--)if(K=ee[gg]==dd)break;if(K){t[i]=ff[gg]}else {ee.push(dd);ff.push(A=(A=t[i])&&P?(Q(A)?A:[]):(T(A)?A:{}));t[i]=G(A,dd,I,ee,ff)}}else if(dd!=null)t[i]=dd"}),on=l(Wt),un=
24
- l({a:"m",i:"[]",h:"t"+(Ot?"[n]=":".push")+"([i,A])"}),an=l(Wt,{p:"if(typeof c!='function'){var p,s=e.apply(E,arguments),k=s.length;for(i=1;i<k;i++){p=s[i];if(p in m)t[p]=m[p]}}else {c=f(c,x)",h:"if(c(A,i,m))t[i]=A",e:"}"}),fn=l({a:"m",i:"[]",h:"t.push(A)"}),ln=l({a:"d,hh",i:"false",n:i,d:{b:"if(y.call(d)==w)return d.indexOf(hh)>-1"},h:"if(A===hh)return true"}),cn=l(Bt,jt),hn=l(Bt,Ft),pn=l(Bt,qt),dn=l(Bt,Rt,{i:i,h:"if(c(A,i,d))return A"}),vn=l(Bt,Rt),mn=l(Bt,jt,{h:"var p=c(A,i,d);(h.call(t,p)?t[p]:t[p]=[]).push(A)"
25
- }),gn=l(zt,{a:"d,U",p:"var C=v.call(arguments,2),R=typeof U=='function'",h:{b:"t[i]=(R?U:A[U]).apply(A,C)",k:"t"+(Ot?"[n]=":".push")+"((R?U:A[U]).apply(A,C))"}}),yn=l(Bt,zt),bn=l(zt,{a:"d,bb",h:{b:"t[i]=A[bb]",k:"t"+(Ot?"[n]=":".push")+"(A[bb])"}}),wn=l({a:"d,c,B,x",i:"B",p:"var V=arguments.length<3;c=f(c,x)",d:{b:"if(V)t=j[++i]"},h:{b:"t=c(t,A,i,d)",k:"t=V?(V=false,A):c(t,A,i,d)"}}),En=l(Bt,qt,{h:"!"+qt.h}),Sn=l(Bt,Ft,{i:"false",h:Ft.h.replace("!","")}),xn=l(Bt,jt,zt,{h:{b:"t[i]={a:c(A,i,d),b:i,c:A}"
26
- ,k:"t"+(Ot?"[n]=":".push")+"({a:c(A,i,d),b:i,c:A})"},e:"t.sort(I);k=t.length;while(k--)t[k]=t[k].c"}),Tn=l(qt,{a:"d,aa",p:"var s=[];J(aa,function(A,p){s.push(p)});var cc=s.length",h:"for(var p,Z=true,r=0;r<cc;r++){p=s[r];if(!(Z=A[p]===aa[p]))break}Z&&t.push(A)"}),Nn=l({q:i,r:i,a:"m",p:"var L=arguments,k=L.length;if(k>1){for(var i=1;i<k;i++)t[L[i]]=F(t[L[i]],t);return t}",h:"if(S(A))t[i]=F(A,t)"});s.VERSION="0.8.1",s.after=function(e,t){return 1>e?t():function(){if(1>--e)return t.apply(this,arguments
27
- )}},s.bind=L,s.bindAll=Nn,s.chain=function(e){return e=new s(e),e.__chain__=n,e},s.clone=y,s.compact=function(e){for(var t=-1,n=e?e.length:0,r=[];++t<n;)e[t]&&r.push(e[t]);return r},s.compose=function(){var e=arguments;return function(){for(var t=arguments,n=e.length;n--;)t=[e[n].apply(this,t)];return t[0]}},s.contains=ln,s.countBy=cn,s.debounce=function(e,t,n){function i(){a=r,n||(o=e.apply(u,s))}var s,o,u,a;return function(){var r=n&&!a;return s=arguments,u=this,yt(a),a=bt(i,t),r&&(o=e.apply(u,
28
- s)),o}},s.defaults=Gt,s.defer=function(e){var n=Z.call(arguments,1);return bt(function(){return e.apply(t,n)},1)},s.delay=function(e,n){var r=Z.call(arguments,2);return bt(function(){return e.apply(t,r)},n)},s.difference=function(e){var t=[];if(!e)return t;for(var n=-1,r=e.length,i=K.apply(_,arguments),i=o(i,r);++n<r;){var s=e[n];i(s)||t.push(s)}return t},s.escape=function(e){return e==r?"":(e+"").replace(V,h)},s.every=hn,s.extend=Yt,s.filter=pn,s.find=dn,s.first=E,s.flatten=S,s.forEach=vn,s.forIn=
29
- Zt,s.forOwn=en,s.functions=tn,s.groupBy=mn,s.has=function(e,t){return e?Q.call(e,t):i},s.identity=A,s.indexOf=x,s.initial=function(e,t,n){return e?Z.call(e,0,-(t==r||n?1:t)):[]},s.intersection=function(e){var t=arguments.length,n=[],r=-1,i=e?e.length:0,s=[];e:for(;++r<i;){var u=e[r];if(0>x(s,u)){for(var a=1;a<t;a++)if(!(n[a]||(n[a]=o(arguments[a])))(u))continue e;s.push(u)}}return s},s.invert=Xt,s.invoke=gn,s.isArguments=v,s.isArray=Vt,s.isBoolean=function(e){return e===n||e===i||et.call(e)==ht},
30
- s.isDate=function(e){return et.call(e)==pt},s.isElement=function(e){return e?1===e.nodeType:i},s.isEmpty=nn,s.isEqual=b,s.isFinite=function(e){return st(e)&&et.call(e)==dt},s.isFunction=m,s.isNaN=function(e){return et.call(e)==dt&&e!=+e},s.isNull=function(e){return e===r},s.isNumber=function(e){return et.call(e)==dt},s.isObject=function(e){return e?Pt[typeof e]:i},s.isPlainObject=$t,s.isRegExp=function(e){return et.call(e)==mt},s.isString=function(e){return et.call(e)==gt},s.isUndefined=function(
31
- e){return e===t},s.keys=rn,s.last=function(e,t,n){if(e){var i=e.length;return t==r||n?e[i-1]:Z.call(e,-t||i)}},s.lastIndexOf=function(e,t,n){var r=e?e.length:0;for("number"==typeof n&&(r=(0>n?ut(0,r+n):at(n,r-1))+1);r--;)if(e[r]===t)return r;return-1},s.lateBind=function(e,t){return a(t,e,Z.call(arguments,2))},s.map=yn,s.max=T,s.memoize=function(e,t){var n={};return function(){var r=t?t.apply(this,arguments):arguments[0];return Q.call(n,r)?n[r]:n[r]=e.apply(this,arguments)}},s.merge=sn,s.min=function(
32
- e,t,n){for(var r=Infinity,i=-1,s=e?e.length:0,o=r,t=f(t,n);++i<s;)n=t(e[i],i,e),n<r&&(r=n,o=e[i]);return o},s.mixin=O,s.noConflict=function(){return e._=B,this},s.object=function(e,t){for(var n=-1,r=e?e.length:0,i={};++n<r;)t?i[e[n]]=t[n]:i[e[n][0]]=e[n][1];return i},s.omit=on,s.once=function(e){var t,s=i;return function(){return s?t:(s=n,t=e.apply(this,arguments),e=r,t)}},s.pairs=un,s.partial=function(e){return a(e,Z.call(arguments,1))},s.pick=an,s.pluck=bn,s.random=function(e,t){return e==r&&t==
33
- r&&(t=1),e=+e||0,t==r&&(t=e,e=0),e+nt(ft()*((+t||0)-e+1))},s.range=function(e,t,n){e=+e||0,n=+n||1,t==r&&(t=e,e=0);for(var i=-1,t=ut(0,Math.ceil((t-e)/n)),s=Array(t);++i<t;)s[i]=e,e+=n;return s},s.reduce=wn,s.reduceRight=w,s.reject=En,s.rest=N,s.result=function(e,t){var n=e?e[t]:r;return m(n)?e[t]():n},s.shuffle=function(e){for(var t=-1,n=e?e.length:0,r=Array(n);++t<n;){var i=nt(ft()*(t+1));r[t]=r[i],r[i]=e[t]}return r},s.size=function(e){var t=e?e.length:0;return t===+t?t:rn(e).length},s.some=Sn
34
- ,s.sortBy=xn,s.sortedIndex=C,s.tap=function(e,t){return t(e),e},s.template=function(e,t,n){e+="",n||(n={});var r,i,o=0,u=s.templateSettings,a="__p += '",f=n.variable||u.variable,l=f;e.replace(RegExp((n.escape||u.escape||X).source+"|"+(n.interpolate||u.interpolate||X).source+"|"+(n.evaluate||u.evaluate||X).source+"|$","g"),function(t,n,i,s,u){a+=e.slice(o,u).replace($,c),a+=n?"'+__e("+n+")+'":s?"';"+s+";__p+='":i?"'+((__t=("+i+"))==null?'':__t)+'":"",r||(r=s||j.test(n||i)),o=u+t.length}),a+="';",l||
35
- (f="obj",r?a="with("+f+"){"+a+"}":(n=RegExp("(\\(\\s*)"+f+"\\."+f+"\\b","g"),a=a.replace(z,"$&"+f+".").replace(n,"$1__d"))),a=(r?a.replace(I,""):a).replace(q,"$1").replace(R,"$1;"),a="function("+f+"){"+(l?"":f+"||("+f+"={});")+"var __t,__p='',__e=_.escape"+(r?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":(l?"":",__d="+f+"."+f+"||"+f)+";")+a+"return __p}";try{i=Function("_","return "+a)(s)}catch(h){throw h.source=a,h}return t?i(t):(i.source=a,i)},s.throttle=function(e,t
36
- ){function n(){a=new Date,u=r,s=e.apply(o,i)}var i,s,o,u,a=0;return function(){var r=new Date,f=t-(r-a);return i=arguments,o=this,0>=f?(a=r,s=e.apply(o,i)):u||(u=bt(n,f)),s}},s.times=function(e,t,n){for(var e=+e||0,r=-1,i=Array(e);++r<e;)i[r]=t.call(n,r);return i},s.toArray=function(e){if(!e)return[];var t=e.length;return t===+t?(Nt?et.call(e)==gt:"string"==typeof e)?e.split(""):Z.call(e):fn(e)},s.unescape=function(e){return e==r?"":(e+"").replace(F,d)},s.union=function(){for(var e=-1,t=K.apply(_
37
- ,arguments),n=t.length,r=[];++e<n;)0>x(r,t[e])&&r.push(t[e]);return r},s.uniq=k,s.uniqueId=function(e){var t=P++;return e?e+t:t},s.values=fn,s.where=Tn,s.without=function(e){for(var t=-1,n=e?e.length:0,r=o(arguments,1,20),i=[];++t<n;){var s=e[t];r(s)||i.push(s)}return i},s.wrap=function(e,t){return function(){var n=[e];return arguments.length&&G.apply(n,arguments),t.apply(this,n)}},s.zip=function(e){for(var t=-1,n=e?T(bn(arguments,"length")):0,r=Array(n);++t<n;)r[t]=bn(arguments,t);return r},s.all=
38
- hn,s.any=Sn,s.collect=yn,s.detect=dn,s.drop=N,s.each=vn,s.foldl=wn,s.foldr=w,s.head=E,s.include=ln,s.inject=wn,s.methods=tn,s.select=pn,s.tail=N,s.take=E,s.unique=k,O(s),s.prototype.chain=function(){return this.__chain__=n,this},s.prototype.value=function(){return this.__wrapped__},vn("pop push reverse shift sort splice unshift".split(" "),function(e){var t=_[e];s.prototype[e]=function(){var e=this.__wrapped__;return t.apply(e,arguments),Et&&e.length===0&&delete e[0],this.__chain__&&(e=new s(e),e
39
- .__chain__=n),e}}),vn(["concat","join","slice"],function(e){var t=_[e];s.prototype[e]=function(){var e=t.apply(this.__wrapped__,arguments);return this.__chain__&&(e=new s(e),e.__chain__=n),e}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(e._=s,define(function(){return s})):M?"object"==typeof module&&module&&module.exports==M?(module.exports=s)._=s:M._=s:e._=s})(this);
5
+ ;(function(e,t){function s(e){if(e&&e.__wrapped__)return e;if(!(this instanceof s))return new s(e);this.__wrapped__=e}function o(e,t,n){t||(t=0);var r=e.length,i=r-t>=(n||H),s=i?{}:e;if(i)for(n=t-1;++n<r;){var o=e[n]+"";(Z.call(s,o)?s[o]:s[o]=[]).push(e[n])}return function(e){if(i){var n=e+"";return Z.call(s,n)&&-1<T(s[n],e)}return-1<T(s,e,t)}}function u(e,n){var r=e.b,i=n.b,e=e.a,n=n.a;if(e!==n){if(e>n||e===t)return 1;if(e<n||n===t)return-1}return r<i?-1:1}function a(e,t,n){function r(){var u=arguments
6
+ ,a=s?this:t;return i||(e=t[o]),n.length&&(u=u.length?n.concat(nt.call(u)):n),this instanceof r?(p.prototype=e.prototype,a=new p,(u=e.apply(a,u))&&Ht[typeof u]?u:a):e.apply(a,u)}var i=m(e),s=!n,o=e;return s&&(n=t),r}function f(e,n){return e?"function"!=typeof e?function(t){return t[e]}:n!==t?function(t,r,i){return e.call(n,t,r,i)}:e:A}function l(){for(var e={e:"",g:Et,i:"",j:Mt,m:Tt,n:kt,o:J,p:"",q:n,r:_t,c:{d:""},l:{d:""}},t,i=-1;t=arguments[++i];)for(var s in t){var o=t[s];/d|h/.test(s)?("string"==typeof
7
+ o&&(o={b:o,k:o}),e.c[s]=o.b,e.l[s]=o.k):e[s]=o}t=e.a;if("d"!=(e.f=/^[^,]+/.exec(t)[0])||!e.c.h)e.c=r;i="",e.r&&(i+="'use strict';"),i+="var i,A,j="+e.f+",t="+(e.i||e.f)+";if(!"+e.f+")return t;"+e.p+";",e.c&&(i+="var k=j.length;i=-1;",e.l&&(i+="if(k===+k){"),e.n&&(i+="if(y.call(j)==w){j=j.split('')}"),i+=e.c.d+";while(++i<k){A=j[i];"+e.c.h+"}",e.l&&(i+="}"));if(e.l){e.c?i+="else {":e.m&&(i+="var k=j.length;i=-1;if(k&&O(j)){while(++i<k){A=j[i+=''];"+e.l.h+"}}else {"),e.g||(i+="var u=typeof j=='function'&&q.call(j,'prototype');"
8
+ );if(e.j&&e.q)i+="var n=-1,o=Y[typeof j]?l(j):[],k=o.length;"+e.l.d+";while(++n<k){i=o[n];",e.g||(i+="if(!(u&&i=='prototype')){"),i+="A=j[i];"+e.l.h+"",e.g||(i+="}");else{i+=e.l.d+";for(i in j){";if(!e.g||e.q)i+="if(",e.g||(i+="!(u&&i=='prototype')"),!e.g&&e.q&&(i+="&&"),e.q&&(i+="h.call(j,i)"),i+="){";i+="A=j[i];"+e.l.h+";";if(!e.g||e.q)i+="}"}i+="}";if(e.g){i+="var g=j.constructor;";for(s=0;7>s;s++)i+="i='"+e.o[s]+"';if(","constructor"==e.o[s]&&(i+="!(g&&g.prototype===j)&&"),i+="h.call(j,i)){A=j[i];"+
9
+ e.l.h+"}"}if(e.c||e.m)i+="}"}return i+=e.e+";return t",Function("D,E,F,I,e,f,J,h,M,O,Q,S,T,X,Y,l,q,v,w,y,z","var G=function("+t+"){"+i+"};return G")(Dt,_,L,u,Q,f,en,Z,T,v,$t,m,Jt,mt,Ht,ut,tt,nt,yt,rt)}function c(e){return"\\"+Bt[e]}function h(e){return Qt[e]}function p(){}function d(e){return Gt[e]}function v(e){return rt.call(e)==ct}function m(e){return"function"==typeof e}function g(e){var t=i;if(!e||"object"!=typeof e||v(e))return t;var n=e.constructor;return(!Lt||"function"==typeof e.toString||"string"!=typeof
10
+ (e+""))&&(!m(n)||n instanceof n)?xt?(en(e,function(e,n,r){return t=!Z.call(r,n),i}),t===i):(en(e,function(e,n){t=n}),t===i||Z.call(e,t)):t}function y(e,t,n,s,o){if(e==r)return e;n&&(t=i);if(n=Ht[typeof e]){var u=rt.call(e);if(!Pt[u]||Nt&&v(e))return e;var a=u==ht,n=a||(u==mt?Jt(e):n)}if(!n||!t)return n?a?nt.call(e):Zt({},e):e;n=e.constructor;switch(u){case pt:case dt:return new n(+e);case vt:case yt:return new n(e);case gt:return n(e.source,U.exec(e))}s||(s=[]),o||(o=[]);for(u=s.length;u--;)if(s[
11
+ u]==e)return o[u];var f=a?n(e.length):{};return s.push(e),o.push(f),(a?mn:tn)(e,function(e,n){f[n]=y(e,t,r,s,o)}),f}function b(e,t,s,o){if(e==r||t==r)return e===t;if(e===t)return 0!==e||1/e==1/t;if(Ht[typeof e]||Ht[typeof t])e=e.__wrapped__||e,t=t.__wrapped__||t;var u=rt.call(e);if(u!=rt.call(t))return i;switch(u){case pt:case dt:return+e==+t;case vt:return e!=+e?t!=+t:0==e?1/e==1/t:e==+t;case gt:case yt:return e==t+""}var a=Dt[u];if(Nt&&!a&&(a=v(e))&&!v(t)||!a&&(u!=mt||Lt&&("function"!=typeof e.
12
+ toString&&"string"==typeof (e+"")||"function"!=typeof t.toString&&"string"==typeof (t+""))))return i;s||(s=[]),o||(o=[]);for(u=s.length;u--;)if(s[u]==e)return o[u]==t;var u=-1,f=n,l=0;s.push(e),o.push(t);if(a){l=e.length;if(f=l==t.length)for(;l--&&(f=b(e[l],t[l],s,o)););return f}a=e.constructor,f=t.constructor;if(a!=f&&(!m(a)||!(a instanceof a&&m(f)&&f instanceof f)))return i;for(var c in e)if(Z.call(e,c)&&(l++,!Z.call(t,c)||!b(e[c],t[c],s,o)))return i;for(c in t)if(Z.call(t,c)&&!(l--))return i;if(
13
+ Et)for(;7>++u;)if(c=J[u],Z.call(e,c)&&(!Z.call(t,c)||!b(e[c],t[c],s,o)))return i;return n}function w(e,t,n){var r=-Infinity,i=-1,s=e?e.length:0,o=r;if(t||s!==+s)t=f(t,n),mn(e,function(e,n,i){n=t(e,n,i),n>r&&(r=n,o=e)});else for(;++i<s;)e[i]>o&&(o=e[i]);return o}function E(e,t,n,r){var s=e,o=e?e.length:0,u=3>arguments.length;if(o!==+o)var a=sn(e),o=a.length;else kt&&rt.call(e)==yt&&(s=e.split(""));return mn(e,function(e,f,l){f=a?a[--o]:--o,n=u?(u=i,s[f]):t.call(r,n,s[f],f,l)}),n}function S(e,t,n){
14
+ if(e)return t==r||n?e[0]:nt.call(e,0,t)}function x(e,t){for(var n=-1,r=e?e.length:0,i=[];++n<r;){var s=e[n];$t(s)?et.apply(i,t?s:x(s)):i.push(s)}return i}function T(e,t,n){var r=-1,i=e?e.length:0;if("number"==typeof n)r=(0>n?at(0,i+n):n||0)-1;else if(n)return r=C(e,t),e[r]===t?r:-1;for(;++r<i;)if(e[r]===t)return r;return-1}function N(e,t,n){return e?nt.call(e,t==r||n?1:t):[]}function C(e,t,n,r){var i=0,s=e?e.length:i;if(n){n=f(n,r);for(t=n(t);i<s;)r=i+s>>>1,n(e[r])<t?i=r+1:s=r}else for(;i<s;)r=i+
15
+ s>>>1,e[r]<t?i=r+1:s=r;return i}function k(e,t,n,r){var s=-1,o=e?e.length:0,u=[],a=[];"function"==typeof t&&(r=n,n=t,t=i);for(n=f(n,r);++s<o;)if(r=n(e[s],s,e),t?!s||a[a.length-1]!==r:0>T(a,r))a.push(r),u.push(e[s]);return u}function L(e,t){return Ot||it&&2<arguments.length?it.call.apply(it,arguments):a(e,t,nt.call(arguments,2))}function A(e){return e}function O(e){mn(nn(e),function(t){var r=s[t]=e[t];s.prototype[t]=function(){var e=[this.__wrapped__];return arguments.length&&et.apply(e,arguments)
16
+ ,e=r.apply(s,e),this.__chain__&&(e=new s(e),e.__chain__=n),e}})}var n=!0,r=null,i=!1,M="object"==typeof exports&&exports&&("object"==typeof global&&global&&global==global.global&&(e=global),exports),_=Array.prototype,D=Object.prototype,P=0,H=30,B=e._,j=/[-?+=!~*%&^<>|{(\/]|\[\D|\b(?:delete|in|instanceof|new|typeof|void)\b/,F=/&(?:amp|lt|gt|quot|#x27);/g,I=/\b__p\+='';/g,q=/\b(__p\+=)''\+/g,R=/(__e\(.*?\)|\b__t\))\+'';/g,U=/\w*$/,z=/(?:__e|__t=)\(\s*(?![\d\s"']|this\.)/g,W=RegExp("^"+(D.valueOf+""
17
+ ).replace(/[.*+?^=!:${}()|[\]\/\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),X=/($^)/,V=/[&<>"']/g,$=/['\n\r\t\u2028\u2029\\]/g,J="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),K=Math.ceil,Q=_.concat,G=Math.floor,Y=W.test(Y=Object.getPrototypeOf)&&Y,Z=D.hasOwnProperty,et=_.push,tt=D.propertyIsEnumerable,nt=_.slice,rt=D.toString,it=W.test(it=nt.bind)&&it,st=W.test(st=Array.isArray)&&st,ot=e.isFinite,ut=W.test(ut=Object.keys)&&ut
18
+ ,at=Math.max,ft=Math.min,lt=Math.random,ct="[object Arguments]",ht="[object Array]",pt="[object Boolean]",dt="[object Date]",vt="[object Number]",mt="[object Object]",gt="[object RegExp]",yt="[object String]",bt=e.clearTimeout,wt=e.setTimeout,Et,St,xt,Tt=n;(function(){function e(){this.x=1}var t={0:1,length:1},n=[];e.prototype={valueOf:1,y:1};for(var r in new e)n.push(r);for(r in arguments)Tt=!r;Et=4>(n+"").length,xt="x"!=n[0],St=(n.splice.call(t,0,1),t[0])})(1);var Nt=!v(arguments),Ct="x"!=nt.call("x"
19
+ )[0],kt="xx"!="x"[0]+Object("x")[0];try{var Lt=("[object Object]",rt.call(e.document||0)==mt)}catch(At){}var Ot=it&&/\n|Opera/.test(it+rt.call(e.opera)),Mt=ut&&/^.+$|true/.test(ut+!!e.attachEvent),_t=!Ot,Dt={};Dt[pt]=Dt[dt]=Dt["[object Function]"]=Dt[vt]=Dt[mt]=Dt[gt]=i,Dt[ct]=Dt[ht]=Dt[yt]=n;var Pt={};Pt[ct]=Pt["[object Function]"]=i,Pt[ht]=Pt[pt]=Pt[dt]=Pt[vt]=Pt[mt]=Pt[gt]=Pt[yt]=n;var Ht={"boolean":i,"function":n,object:n,number:i,string:i,"undefined":i,unknown:n},Bt={"\\":"\\","'":"'","\n":"n"
20
+ ,"\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"};s.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""};var jt={a:"d,c,x",p:"c=f(c,x)",h:"if(c(A,i,d)===false)return t"},Ft={i:"{}",p:"c=f(c,x)",h:"var p=c(A,i,d);(h.call(t,p)?t[p]++:t[p]=1)"},It={i:"true",h:"if(!c(A,i,d))return!t"},qt={q:i,r:i,a:"m",p:"for(var a=1,b=arguments.length;a<b;a++){if(j=arguments[a]){",h:"t[i]=A",e:"}}"},Rt={i:"[]",h:"c(A,i,d)&&t.push(A)"},Ut={p:"c=f(c,x)"}
21
+ ,zt={h:{k:jt.h}},Wt={i:"d||[]",d:{b:"t=Array(k)",k:"t="+(Mt?"Array(k)":"[]")},h:{b:"t[i]=c(A,i,d)",k:"t"+(Mt?"[n]=":".push")+"(c(A,i,d))"}},Xt={q:i,a:"m,c,x",i:"{}",p:"var R=typeof c=='function';if(R)c=f(c,x);else var s=e.apply(E,arguments)",h:"if(R?!c(A,i,m):M(s,i)<0)t[i]=A"},Vt=l({a:"m",i:"{}",h:"t[A]=i"});Nt&&(v=function(e){return e?Z.call(e,"callee"):i});var $t=st||function(e){return rt.call(e)==ht};m(/x/)&&(m=function(e){return"[object Function]"==rt.call(e)});var Jt=Y?function(e){if(!e||"object"!=typeof
22
+ e)return i;var t=e.valueOf,n="function"==typeof t&&(n=Y(t))&&Y(n);return n?e==n||Y(e)==n&&!v(e):g(e)}:g,Kt=l({a:"m",i:"[]",h:"t.push(i)"}),Qt={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"},Gt=Vt(Qt),Yt=l(qt,{h:"if(t[i]==null)"+qt.h}),Zt=l(qt),en=l(jt,Ut,zt,{q:i}),tn=l(jt,Ut,zt),nn=l({q:i,a:"m",i:"[]",h:"S(A)&&t.push(i)",e:"t.sort()"}),rn=l({a:"A",i:"true",p:"var H=y.call(A),k=A.length;if(D[H]"+(Nt?"||O(A)":"")+"||(H==X&&k===+k&&S(A.splice)))return!k",h:{k:"return false"}}),sn=ut?function(
23
+ e){var t=typeof e;return"function"==t&&tt.call(e,"prototype")?Kt(e):e&&Ht[t]?ut(e):[]}:Kt,on=l(qt,{a:"m,dd,N",p:"var P,C=arguments,a=0;if(N==I){var b=2,ee=C[3],ff=C[4]}else var b=C.length,ee=[],ff=[];while(++a<b){if(j=C[a]){",h:"if((dd=A)&&((P=Q(dd))||T(dd))){var K=false,gg=ee.length;while(gg--)if(K=ee[gg]==dd)break;if(K){t[i]=ff[gg]}else {ee.push(dd);ff.push(A=(A=t[i],P)?(Q(A)?A:[]):(T(A)?A:{}));t[i]=G(A,dd,I,ee,ff)}}else if(dd!=null)t[i]=dd"}),un=l(Xt),an=l({a:"m",i:"[]",h:"t"+(Mt?"[n]=":".push"
24
+ )+"([i,A])"}),fn=l(Xt,{p:"if(typeof c!='function'){var i=0,s=e.apply(E,arguments),k=s.length;while(++i<k){var p=s[i];if(p in m)t[p]=m[p]}}else {c=f(c,x)",h:"if(c(A,i,m))t[i]=A",e:"}"}),ln=l({a:"m",i:"[]",h:"t.push(A)"}),cn=l({a:"d,hh",i:"false",n:i,d:{b:"if(y.call(d)==w)return d.indexOf(hh)>-1"},h:"if(A===hh)return true"}),hn=l(jt,Ft),pn=l(jt,It),dn=l(jt,Rt),vn=l(jt,Ut,{i:"z",h:"if(c(A,i,d))return A"}),mn=l(jt,Ut),gn=l(jt,Ft,{h:"var p=c(A,i,d);(h.call(t,p)?t[p]:t[p]=[]).push(A)"}),yn=l(Wt,{a:"d,U"
25
+ ,p:"var C=v.call(arguments,2),R=typeof U=='function'",h:{b:"t[i]=(R?U:A[U]).apply(A,C)",k:"t"+(Mt?"[n]=":".push")+"((R?U:A[U]).apply(A,C))"}}),bn=l(jt,Wt),wn=l(Wt,{a:"d,bb",h:{b:"t[i]=A[bb]",k:"t"+(Mt?"[n]=":".push")+"(A[bb])"}}),En=l({a:"d,c,B,x",i:"B",p:"var V=arguments.length<3;c=f(c,x)",d:{b:"if(V)t=j[++i]"},h:{b:"t=c(t,A,i,d)",k:"t=V?(V=false,A):c(t,A,i,d)"}}),Sn=l(jt,Rt,{h:"!"+Rt.h}),xn=l(jt,It,{i:"false",h:It.h.replace("!","")}),Tn=l(jt,Ft,Wt,{h:{b:"t[i]={a:c(A,i,d),b:i,c:A}",k:"t"+(Mt?"[n]="
26
+ :".push")+"({a:c(A,i,d),b:i,c:A})"},e:"t.sort(I);k=t.length;while(k--)t[k]=t[k].c"}),Nn=l(Rt,{a:"d,aa",p:"var s=[];J(aa,function(A,p){s.push(p)});var cc=s.length",h:"for(var Z=true,r=0;r<cc;r++){var p=s[r];if(!(Z=A[p]===aa[p]))break}Z&&t.push(A)"}),Cn=l({q:i,r:i,a:"m",p:"var L=arguments,i=0,k=L.length;if(k>1){while(++i<k)t[L[i]]=F(t[L[i]],t);return t}",h:"if(S(A))t[i]=F(A,t)"});s.VERSION="0.8.2",s.after=function(e,t){return 1>e?t():function(){if(1>--e)return t.apply(this,arguments)}},s.bind=L,s.bindAll=
27
+ Cn,s.chain=function(e){return e=new s(e),e.__chain__=n,e},s.clone=y,s.compact=function(e){for(var t=-1,n=e?e.length:0,r=[];++t<n;){var i=e[t];i&&r.push(i)}return r},s.compose=function(){var e=arguments;return function(){for(var t=arguments,n=e.length;n--;)t=[e[n].apply(this,t)];return t[0]}},s.contains=cn,s.countBy=hn,s.debounce=function(e,t,n){function i(){a=r,n||(o=e.apply(u,s))}var s,o,u,a;return function(){var r=n&&!a;return s=arguments,u=this,bt(a),a=wt(i,t),r&&(o=e.apply(u,s)),o}},s.defaults=
28
+ Yt,s.defer=function(e){var n=nt.call(arguments,1);return wt(function(){return e.apply(t,n)},1)},s.delay=function(e,n){var r=nt.call(arguments,2);return wt(function(){return e.apply(t,r)},n)},s.difference=function(e){var t=[];if(!e)return t;for(var n=-1,r=e.length,i=Q.apply(_,arguments),i=o(i,r);++n<r;){var s=e[n];i(s)||t.push(s)}return t},s.escape=function(e){return e==r?"":(e+"").replace(V,h)},s.every=pn,s.extend=Zt,s.filter=dn,s.find=vn,s.first=S,s.flatten=x,s.forEach=mn,s.forIn=en,s.forOwn=tn,
29
+ s.functions=nn,s.groupBy=gn,s.has=function(e,t){return e?Z.call(e,t):i},s.identity=A,s.indexOf=T,s.initial=function(e,t,n){return e?nt.call(e,0,-(t==r||n?1:t)):[]},s.intersection=function(e){var t=arguments.length,n=[],r=-1,i=e?e.length:0,s=[];e:for(;++r<i;){var u=e[r];if(0>T(s,u)){for(var a=1;a<t;a++)if(!(n[a]||(n[a]=o(arguments[a])))(u))continue e;s.push(u)}}return s},s.invert=Vt,s.invoke=yn,s.isArguments=v,s.isArray=$t,s.isBoolean=function(e){return e===n||e===i||rt.call(e)==pt},s.isDate=function(
30
+ e){return rt.call(e)==dt},s.isElement=function(e){return e?1===e.nodeType:i},s.isEmpty=rn,s.isEqual=b,s.isFinite=function(e){return ot(e)&&rt.call(e)==vt},s.isFunction=m,s.isNaN=function(e){return rt.call(e)==vt&&e!=+e},s.isNull=function(e){return e===r},s.isNumber=function(e){return rt.call(e)==vt},s.isObject=function(e){return e?Ht[typeof e]:i},s.isPlainObject=Jt,s.isRegExp=function(e){return rt.call(e)==gt},s.isString=function(e){return rt.call(e)==yt},s.isUndefined=function(e){return e===t},s
31
+ .keys=sn,s.last=function(e,t,n){if(e){var i=e.length;return t==r||n?e[i-1]:nt.call(e,-t||i)}},s.lastIndexOf=function(e,t,n){var r=e?e.length:0;for("number"==typeof n&&(r=(0>n?at(0,r+n):ft(n,r-1))+1);r--;)if(e[r]===t)return r;return-1},s.lateBind=function(e,t){return a(t,e,nt.call(arguments,2))},s.map=bn,s.max=w,s.memoize=function(e,t){var n={};return function(){var r=t?t.apply(this,arguments):arguments[0];return Z.call(n,r)?n[r]:n[r]=e.apply(this,arguments)}},s.merge=on,s.min=function(e,t,n){var r=
32
+ Infinity,i=-1,s=e?e.length:0,o=r;if(t||s!==+s)t=f(t,n),mn(e,function(e,n,i){n=t(e,n,i),n<r&&(r=n,o=e)});else for(;++i<s;)e[i]<o&&(o=e[i]);return o},s.mixin=O,s.noConflict=function(){return e._=B,this},s.object=function(e,t){for(var n=-1,r=e?e.length:0,i={};++n<r;){var s=e[n];t?i[s]=t[n]:i[s[0]]=s[1]}return i},s.omit=un,s.once=function(e){var t,s=i;return function(){return s?t:(s=n,t=e.apply(this,arguments),e=r,t)}},s.pairs=an,s.partial=function(e){return a(e,nt.call(arguments,1))},s.pick=fn,s.pluck=
33
+ wn,s.random=function(e,t){return e==r&&t==r&&(t=1),e=+e||0,t==r&&(t=e,e=0),e+G(lt()*((+t||0)-e+1))},s.range=function(e,t,n){e=+e||0,n=+n||1,t==r&&(t=e,e=0);for(var i=-1,t=at(0,K((t-e)/n)),s=Array(t);++i<t;)s[i]=e,e+=n;return s},s.reduce=En,s.reduceRight=E,s.reject=Sn,s.rest=N,s.result=function(e,t){var n=e?e[t]:r;return m(n)?e[t]():n},s.shuffle=function(e){var t=-1,n=Array(e?e.length:0);return mn(e,function(e){var r=G(lt()*(++t+1));n[t]=n[r],n[r]=e}),n},s.size=function(e){var t=e?e.length:0;return t===+
34
+ t?t:sn(e).length},s.some=xn,s.sortBy=Tn,s.sortedIndex=C,s.tap=function(e,t){return t(e),e},s.template=function(e,t,n){e||(e=""),n||(n={});var r,i,o=0,u=s.templateSettings,a="__p += '",f=n.variable||u.variable,l=f;e.replace(RegExp((n.escape||u.escape||X).source+"|"+(n.interpolate||u.interpolate||X).source+"|"+(n.evaluate||u.evaluate||X).source+"|$","g"),function(t,n,i,s,u){a+=e.slice(o,u).replace($,c),a+=n?"'+__e("+n+")+'":s?"';"+s+";__p+='":i?"'+((__t=("+i+"))==null?'':__t)+'":"",r||(r=s||j.test(
35
+ n||i)),o=u+t.length}),a+="';",l||(f="obj",r?a="with("+f+"){"+a+"}":(n=RegExp("(\\(\\s*)"+f+"\\."+f+"\\b","g"),a=a.replace(z,"$&"+f+".").replace(n,"$1__d"))),a=(r?a.replace(I,""):a).replace(q,"$1").replace(R,"$1;"),a="function("+f+"){"+(l?"":f+"||("+f+"={});")+"var __t,__p='',__e=_.escape"+(r?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":(l?"":",__d="+f+"."+f+"||"+f)+";")+a+"return __p}";try{i=Function("_","return "+a)(s)}catch(h){throw h.source=a,h}return t?i(t):(i.source=
36
+ a,i)},s.throttle=function(e,t){function n(){a=new Date,u=r,s=e.apply(o,i)}var i,s,o,u,a=0;return function(){var r=new Date,f=t-(r-a);return i=arguments,o=this,0>=f?(bt(u),a=r,s=e.apply(o,i)):u||(u=wt(n,f)),s}},s.times=function(e,t,n){for(var e=+e||0,r=-1,i=Array(e);++r<e;)i[r]=t.call(n,r);return i},s.toArray=function(e){if(!e)return[];var t=e.length;return t===+t?(Ct?rt.call(e)==yt:"string"==typeof e)?e.split(""):nt.call(e):ln(e)},s.unescape=function(e){return e==r?"":(e+"").replace(F,d)},s.union=
37
+ function(){for(var e=-1,t=Q.apply(_,arguments),n=t.length,r=[];++e<n;){var i=t[e];0>T(r,i)&&r.push(i)}return r},s.uniq=k,s.uniqueId=function(e){var t=P++;return e?e+t:t},s.values=ln,s.where=Nn,s.without=function(e){for(var t=-1,n=e?e.length:0,r=o(arguments,1,20),i=[];++t<n;){var s=e[t];r(s)||i.push(s)}return i},s.wrap=function(e,t){return function(){var n=[e];return arguments.length&&et.apply(n,arguments),t.apply(this,n)}},s.zip=function(e){for(var t=-1,n=e?w(wn(arguments,"length")):0,r=Array(n);++
38
+ t<n;)r[t]=wn(arguments,t);return r},s.all=pn,s.any=xn,s.collect=bn,s.detect=vn,s.drop=N,s.each=mn,s.foldl=En,s.foldr=E,s.head=S,s.include=cn,s.inject=En,s.methods=nn,s.select=dn,s.tail=N,s.take=S,s.unique=k,O(s),s.prototype.chain=function(){return this.__chain__=n,this},s.prototype.value=function(){return this.__wrapped__},mn("pop push reverse shift sort splice unshift".split(" "),function(e){var t=_[e];s.prototype[e]=function(){var e=this.__wrapped__;return t.apply(e,arguments),St&&e.length===0&&delete
39
+ e[0],this.__chain__&&(e=new s(e),e.__chain__=n),e}}),mn(["concat","join","slice"],function(e){var t=_[e];s.prototype[e]=function(){var e=t.apply(this.__wrapped__,arguments);return this.__chain__&&(e=new s(e),e.__chain__=n),e}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(e._=s,define(function(){return s})):M?"object"==typeof module&&module&&module.exports==M?(module.exports=s)._=s:M._=s:e._=s})(this);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lodash-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-09 00:00:00.000000000 Z
12
+ date: 2012-10-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties