PageRenderTime 29ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/files/clappr/0.0.110/clappr.js

https://gitlab.com/Mirros/jsdelivr
JavaScript | 1588 lines | 643 code | 145 blank | 800 comment | 278 complexity | 77d6ffb82ff609eb0716549023973581 MD5 | raw file
  1. require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
  2. // Copyright 2014 Globo.com Player authors. All rights reserved.
  3. // Use of this source code is governed by a BSD-style
  4. // license that can be found in the LICENSE file.
  5. "use strict";
  6. var Player = require("./components/player");
  7. var Mediator = require("mediator");
  8. var Events = require("events");
  9. window.DEBUG = false;
  10. window.Clappr = { Player: Player, Mediator: Mediator, Events: Events };
  11. window.Clappr.version = "0.0.110";
  12. module.exports = window.Clappr;
  13. },{"./components/player":59,"events":"events","mediator":"mediator"}],2:[function(require,module,exports){
  14. /**
  15. * lodash 3.0.0 (Custom Build) <https://lodash.com/>
  16. * Build: `lodash modern modularize exports="npm" -o ./`
  17. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  18. * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
  19. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  20. * Available under MIT license <https://lodash.com/license>
  21. */
  22. var baseAssign = require('lodash._baseassign'),
  23. createAssigner = require('lodash._createassigner');
  24. /**
  25. * Assigns own enumerable properties of source object(s) to the destination
  26. * object. Subsequent sources overwrite property assignments of previous sources.
  27. * If `customizer` is provided it is invoked to produce the assigned values.
  28. * The `customizer` is bound to `thisArg` and invoked with five arguments;
  29. * (objectValue, sourceValue, key, object, source).
  30. *
  31. * @static
  32. * @memberOf _
  33. * @alias extend
  34. * @category Object
  35. * @param {Object} object The destination object.
  36. * @param {...Object} [sources] The source objects.
  37. * @param {Function} [customizer] The function to customize assigning values.
  38. * @param {*} [thisArg] The `this` binding of `customizer`.
  39. * @returns {Object} Returns `object`.
  40. * @example
  41. *
  42. * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });
  43. * // => { 'user': 'fred', 'age': 40 }
  44. *
  45. * // using a customizer callback
  46. * var defaults = _.partialRight(_.assign, function(value, other) {
  47. * return typeof value == 'undefined' ? other : value;
  48. * });
  49. *
  50. * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });
  51. * // => { 'user': 'barney', 'age': 36 }
  52. */
  53. var assign = createAssigner(baseAssign);
  54. module.exports = assign;
  55. },{"lodash._baseassign":3,"lodash._createassigner":9}],3:[function(require,module,exports){
  56. /**
  57. * lodash 3.0.2 (Custom Build) <https://lodash.com/>
  58. * Build: `lodash modern modularize exports="npm" -o ./`
  59. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  60. * Based on Underscore.js 1.8.2 <http://underscorejs.org/LICENSE>
  61. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  62. * Available under MIT license <https://lodash.com/license>
  63. */
  64. var baseCopy = require('lodash._basecopy'),
  65. keys = require('lodash.keys');
  66. /**
  67. * The base implementation of `_.assign` without support for argument juggling,
  68. * multiple sources, and `this` binding `customizer` functions.
  69. *
  70. * @private
  71. * @param {Object} object The destination object.
  72. * @param {Object} source The source object.
  73. * @param {Function} [customizer] The function to customize assigning values.
  74. * @returns {Object} Returns the destination object.
  75. */
  76. function baseAssign(object, source, customizer) {
  77. var props = keys(source);
  78. if (!customizer) {
  79. return baseCopy(source, object, props);
  80. }
  81. var index = -1,
  82. length = props.length;
  83. while (++index < length) {
  84. var key = props[index],
  85. value = object[key],
  86. result = customizer(value, source[key], key, object, source);
  87. if ((result === result ? (result !== value) : (value === value)) ||
  88. (typeof value == 'undefined' && !(key in object))) {
  89. object[key] = result;
  90. }
  91. }
  92. return object;
  93. }
  94. module.exports = baseAssign;
  95. },{"lodash._basecopy":4,"lodash.keys":5}],4:[function(require,module,exports){
  96. /**
  97. * lodash 3.0.0 (Custom Build) <https://lodash.com/>
  98. * Build: `lodash modern modularize exports="npm" -o ./`
  99. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  100. * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
  101. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  102. * Available under MIT license <https://lodash.com/license>
  103. */
  104. /**
  105. * Copies the properties of `source` to `object`.
  106. *
  107. * @private
  108. * @param {Object} source The object to copy properties from.
  109. * @param {Object} [object={}] The object to copy properties to.
  110. * @param {Array} props The property names to copy.
  111. * @returns {Object} Returns `object`.
  112. */
  113. function baseCopy(source, object, props) {
  114. if (!props) {
  115. props = object;
  116. object = {};
  117. }
  118. var index = -1,
  119. length = props.length;
  120. while (++index < length) {
  121. var key = props[index];
  122. object[key] = source[key];
  123. }
  124. return object;
  125. }
  126. module.exports = baseCopy;
  127. },{}],5:[function(require,module,exports){
  128. /**
  129. * lodash 3.0.4 (Custom Build) <https://lodash.com/>
  130. * Build: `lodash modern modularize exports="npm" -o ./`
  131. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  132. * Based on Underscore.js 1.8.2 <http://underscorejs.org/LICENSE>
  133. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  134. * Available under MIT license <https://lodash.com/license>
  135. */
  136. var isArguments = require('lodash.isarguments'),
  137. isArray = require('lodash.isarray'),
  138. isNative = require('lodash.isnative');
  139. /** Used for native method references. */
  140. var objectProto = Object.prototype;
  141. /** Used to check objects for own properties. */
  142. var hasOwnProperty = objectProto.hasOwnProperty;
  143. /** Native method references. */
  144. var propertyIsEnumerable = objectProto.propertyIsEnumerable;
  145. /* Native method references for those with the same name as other `lodash` methods. */
  146. var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys;
  147. /**
  148. * Used as the maximum length of an array-like value.
  149. * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
  150. * for more details.
  151. */
  152. var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
  153. /**
  154. * An object environment feature flags.
  155. *
  156. * @static
  157. * @memberOf _
  158. * @type Object
  159. */
  160. var support = {};
  161. (function(x) {
  162. /**
  163. * Detect if `arguments` object indexes are non-enumerable.
  164. *
  165. * In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object
  166. * indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat
  167. * `arguments` object indexes as non-enumerable and fail `hasOwnProperty`
  168. * checks for indexes that exceed their function's formal parameters with
  169. * associated values of `0`.
  170. *
  171. * @memberOf _.support
  172. * @type boolean
  173. */
  174. try {
  175. support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1);
  176. } catch(e) {
  177. support.nonEnumArgs = true;
  178. }
  179. }(0, 0));
  180. /**
  181. * Checks if `value` is a valid array-like index.
  182. *
  183. * @private
  184. * @param {*} value The value to check.
  185. * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
  186. * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
  187. */
  188. function isIndex(value, length) {
  189. value = +value;
  190. length = length == null ? MAX_SAFE_INTEGER : length;
  191. return value > -1 && value % 1 == 0 && value < length;
  192. }
  193. /**
  194. * Checks if `value` is a valid array-like length.
  195. *
  196. * **Note:** This function is based on ES `ToLength`. See the
  197. * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)
  198. * for more details.
  199. *
  200. * @private
  201. * @param {*} value The value to check.
  202. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
  203. */
  204. function isLength(value) {
  205. return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  206. }
  207. /**
  208. * A fallback implementation of `Object.keys` which creates an array of the
  209. * own enumerable property names of `object`.
  210. *
  211. * @private
  212. * @param {Object} object The object to inspect.
  213. * @returns {Array} Returns the array of property names.
  214. */
  215. function shimKeys(object) {
  216. var props = keysIn(object),
  217. propsLength = props.length,
  218. length = propsLength && object.length;
  219. var allowIndexes = length && isLength(length) &&
  220. (isArray(object) || (support.nonEnumArgs && isArguments(object)));
  221. var index = -1,
  222. result = [];
  223. while (++index < propsLength) {
  224. var key = props[index];
  225. if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
  226. result.push(key);
  227. }
  228. }
  229. return result;
  230. }
  231. /**
  232. * Checks if `value` is the language type of `Object`.
  233. * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
  234. *
  235. * **Note:** See the [ES5 spec](https://es5.github.io/#x8) for more details.
  236. *
  237. * @static
  238. * @memberOf _
  239. * @category Lang
  240. * @param {*} value The value to check.
  241. * @returns {boolean} Returns `true` if `value` is an object, else `false`.
  242. * @example
  243. *
  244. * _.isObject({});
  245. * // => true
  246. *
  247. * _.isObject([1, 2, 3]);
  248. * // => true
  249. *
  250. * _.isObject(1);
  251. * // => false
  252. */
  253. function isObject(value) {
  254. // Avoid a V8 JIT bug in Chrome 19-20.
  255. // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
  256. var type = typeof value;
  257. return type == 'function' || (value && type == 'object') || false;
  258. }
  259. /**
  260. * Creates an array of the own enumerable property names of `object`.
  261. *
  262. * **Note:** Non-object values are coerced to objects. See the
  263. * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)
  264. * for more details.
  265. *
  266. * @static
  267. * @memberOf _
  268. * @category Object
  269. * @param {Object} object The object to inspect.
  270. * @returns {Array} Returns the array of property names.
  271. * @example
  272. *
  273. * function Foo() {
  274. * this.a = 1;
  275. * this.b = 2;
  276. * }
  277. *
  278. * Foo.prototype.c = 3;
  279. *
  280. * _.keys(new Foo);
  281. * // => ['a', 'b'] (iteration order is not guaranteed)
  282. *
  283. * _.keys('hi');
  284. * // => ['0', '1']
  285. */
  286. var keys = !nativeKeys ? shimKeys : function(object) {
  287. if (object) {
  288. var Ctor = object.constructor,
  289. length = object.length;
  290. }
  291. if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
  292. (typeof object != 'function' && (length && isLength(length)))) {
  293. return shimKeys(object);
  294. }
  295. return isObject(object) ? nativeKeys(object) : [];
  296. };
  297. /**
  298. * Creates an array of the own and inherited enumerable property names of `object`.
  299. *
  300. * **Note:** Non-object values are coerced to objects.
  301. *
  302. * @static
  303. * @memberOf _
  304. * @category Object
  305. * @param {Object} object The object to inspect.
  306. * @returns {Array} Returns the array of property names.
  307. * @example
  308. *
  309. * function Foo() {
  310. * this.a = 1;
  311. * this.b = 2;
  312. * }
  313. *
  314. * Foo.prototype.c = 3;
  315. *
  316. * _.keysIn(new Foo);
  317. * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
  318. */
  319. function keysIn(object) {
  320. if (object == null) {
  321. return [];
  322. }
  323. if (!isObject(object)) {
  324. object = Object(object);
  325. }
  326. var length = object.length;
  327. length = (length && isLength(length) &&
  328. (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0;
  329. var Ctor = object.constructor,
  330. index = -1,
  331. isProto = typeof Ctor == 'function' && Ctor.prototype === object,
  332. result = Array(length),
  333. skipIndexes = length > 0;
  334. while (++index < length) {
  335. result[index] = (index + '');
  336. }
  337. for (var key in object) {
  338. if (!(skipIndexes && isIndex(key, length)) &&
  339. !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
  340. result.push(key);
  341. }
  342. }
  343. return result;
  344. }
  345. module.exports = keys;
  346. },{"lodash.isarguments":6,"lodash.isarray":7,"lodash.isnative":8}],6:[function(require,module,exports){
  347. /**
  348. * lodash 3.0.0 (Custom Build) <https://lodash.com/>
  349. * Build: `lodash modern modularize exports="npm" -o ./`
  350. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  351. * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
  352. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  353. * Available under MIT license <https://lodash.com/license>
  354. */
  355. /** `Object#toString` result references. */
  356. var argsTag = '[object Arguments]';
  357. /**
  358. * Checks if `value` is object-like.
  359. *
  360. * @private
  361. * @param {*} value The value to check.
  362. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  363. */
  364. function isObjectLike(value) {
  365. return (value && typeof value == 'object') || false;
  366. }
  367. /** Used for native method references. */
  368. var objectProto = Object.prototype;
  369. /**
  370. * Used to resolve the `toStringTag` of values.
  371. * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
  372. * for more details.
  373. */
  374. var objToString = objectProto.toString;
  375. /**
  376. * Used as the maximum length of an array-like value.
  377. * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)
  378. * for more details.
  379. */
  380. var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
  381. /**
  382. * Checks if `value` is a valid array-like length.
  383. *
  384. * @private
  385. * @param {*} value The value to check.
  386. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
  387. */
  388. function isLength(value) {
  389. return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  390. }
  391. /**
  392. * Checks if `value` is classified as an `arguments` object.
  393. *
  394. * @static
  395. * @memberOf _
  396. * @category Lang
  397. * @param {*} value The value to check.
  398. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
  399. * @example
  400. *
  401. * (function() { return _.isArguments(arguments); })();
  402. * // => true
  403. *
  404. * _.isArguments([1, 2, 3]);
  405. * // => false
  406. */
  407. function isArguments(value) {
  408. var length = isObjectLike(value) ? value.length : undefined;
  409. return (isLength(length) && objToString.call(value) == argsTag) || false;
  410. }
  411. module.exports = isArguments;
  412. },{}],7:[function(require,module,exports){
  413. /**
  414. * lodash 3.0.0 (Custom Build) <https://lodash.com/>
  415. * Build: `lodash modern modularize exports="npm" -o ./`
  416. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  417. * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
  418. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  419. * Available under MIT license <https://lodash.com/license>
  420. */
  421. /** `Object#toString` result references. */
  422. var arrayTag = '[object Array]',
  423. funcTag = '[object Function]';
  424. /** Used to detect host constructors (Safari > 5). */
  425. var reHostCtor = /^\[object .+?Constructor\]$/;
  426. /**
  427. * Used to match `RegExp` special characters.
  428. * See this [article on `RegExp` characters](http://www.regular-expressions.info/characters.html#special)
  429. * for more details.
  430. */
  431. var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
  432. reHasRegExpChars = RegExp(reRegExpChars.source);
  433. /**
  434. * Converts `value` to a string if it is not one. An empty string is returned
  435. * for `null` or `undefined` values.
  436. *
  437. * @private
  438. * @param {*} value The value to process.
  439. * @returns {string} Returns the string.
  440. */
  441. function baseToString(value) {
  442. if (typeof value == 'string') {
  443. return value;
  444. }
  445. return value == null ? '' : (value + '');
  446. }
  447. /**
  448. * Checks if `value` is object-like.
  449. *
  450. * @private
  451. * @param {*} value The value to check.
  452. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  453. */
  454. function isObjectLike(value) {
  455. return (value && typeof value == 'object') || false;
  456. }
  457. /** Used for native method references. */
  458. var objectProto = Object.prototype;
  459. /** Used to resolve the decompiled source of functions. */
  460. var fnToString = Function.prototype.toString;
  461. /**
  462. * Used to resolve the `toStringTag` of values.
  463. * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
  464. * for more details.
  465. */
  466. var objToString = objectProto.toString;
  467. /** Used to detect if a method is native. */
  468. var reNative = RegExp('^' +
  469. escapeRegExp(objToString)
  470. .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
  471. );
  472. /* Native method references for those with the same name as other `lodash` methods. */
  473. var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray;
  474. /**
  475. * Used as the maximum length of an array-like value.
  476. * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)
  477. * for more details.
  478. */
  479. var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
  480. /**
  481. * Checks if `value` is a valid array-like length.
  482. *
  483. * @private
  484. * @param {*} value The value to check.
  485. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
  486. */
  487. function isLength(value) {
  488. return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  489. }
  490. /**
  491. * Checks if `value` is classified as an `Array` object.
  492. *
  493. * @static
  494. * @memberOf _
  495. * @category Lang
  496. * @param {*} value The value to check.
  497. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
  498. * @example
  499. *
  500. * _.isArray([1, 2, 3]);
  501. * // => true
  502. *
  503. * (function() { return _.isArray(arguments); })();
  504. * // => false
  505. */
  506. var isArray = nativeIsArray || function(value) {
  507. return (isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag) || false;
  508. };
  509. /**
  510. * Checks if `value` is a native function.
  511. *
  512. * @static
  513. * @memberOf _
  514. * @category Lang
  515. * @param {*} value The value to check.
  516. * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
  517. * @example
  518. *
  519. * _.isNative(Array.prototype.push);
  520. * // => true
  521. *
  522. * _.isNative(_);
  523. * // => false
  524. */
  525. function isNative(value) {
  526. if (value == null) {
  527. return false;
  528. }
  529. if (objToString.call(value) == funcTag) {
  530. return reNative.test(fnToString.call(value));
  531. }
  532. return (isObjectLike(value) && reHostCtor.test(value)) || false;
  533. }
  534. /**
  535. * Escapes the `RegExp` special characters "\", "^", "$", ".", "|", "?", "*",
  536. * "+", "(", ")", "[", "]", "{" and "}" in `string`.
  537. *
  538. * @static
  539. * @memberOf _
  540. * @category String
  541. * @param {string} [string=''] The string to escape.
  542. * @returns {string} Returns the escaped string.
  543. * @example
  544. *
  545. * _.escapeRegExp('[lodash](https://lodash.com/)');
  546. * // => '\[lodash\]\(https://lodash\.com/\)'
  547. */
  548. function escapeRegExp(string) {
  549. string = baseToString(string);
  550. return (string && reHasRegExpChars.test(string))
  551. ? string.replace(reRegExpChars, '\\$&')
  552. : string;
  553. }
  554. module.exports = isArray;
  555. },{}],8:[function(require,module,exports){
  556. /**
  557. * lodash 3.0.0 (Custom Build) <https://lodash.com/>
  558. * Build: `lodash modern modularize exports="npm" -o ./`
  559. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  560. * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
  561. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  562. * Available under MIT license <https://lodash.com/license>
  563. */
  564. /** `Object#toString` result references. */
  565. var funcTag = '[object Function]';
  566. /** Used to detect host constructors (Safari > 5). */
  567. var reHostCtor = /^\[object .+?Constructor\]$/;
  568. /**
  569. * Used to match `RegExp` special characters.
  570. * See this [article on `RegExp` characters](http://www.regular-expressions.info/characters.html#special)
  571. * for more details.
  572. */
  573. var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
  574. reHasRegExpChars = RegExp(reRegExpChars.source);
  575. /**
  576. * Converts `value` to a string if it is not one. An empty string is returned
  577. * for `null` or `undefined` values.
  578. *
  579. * @private
  580. * @param {*} value The value to process.
  581. * @returns {string} Returns the string.
  582. */
  583. function baseToString(value) {
  584. if (typeof value == 'string') {
  585. return value;
  586. }
  587. return value == null ? '' : (value + '');
  588. }
  589. /**
  590. * Checks if `value` is object-like.
  591. *
  592. * @private
  593. * @param {*} value The value to check.
  594. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  595. */
  596. function isObjectLike(value) {
  597. return (value && typeof value == 'object') || false;
  598. }
  599. /** Used for native method references. */
  600. var objectProto = Object.prototype;
  601. /** Used to resolve the decompiled source of functions. */
  602. var fnToString = Function.prototype.toString;
  603. /**
  604. * Used to resolve the `toStringTag` of values.
  605. * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
  606. * for more details.
  607. */
  608. var objToString = objectProto.toString;
  609. /** Used to detect if a method is native. */
  610. var reNative = RegExp('^' +
  611. escapeRegExp(objToString)
  612. .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
  613. );
  614. /**
  615. * Checks if `value` is a native function.
  616. *
  617. * @static
  618. * @memberOf _
  619. * @category Lang
  620. * @param {*} value The value to check.
  621. * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
  622. * @example
  623. *
  624. * _.isNative(Array.prototype.push);
  625. * // => true
  626. *
  627. * _.isNative(_);
  628. * // => false
  629. */
  630. function isNative(value) {
  631. if (value == null) {
  632. return false;
  633. }
  634. if (objToString.call(value) == funcTag) {
  635. return reNative.test(fnToString.call(value));
  636. }
  637. return (isObjectLike(value) && reHostCtor.test(value)) || false;
  638. }
  639. /**
  640. * Escapes the `RegExp` special characters "\", "^", "$", ".", "|", "?", "*",
  641. * "+", "(", ")", "[", "]", "{" and "}" in `string`.
  642. *
  643. * @static
  644. * @memberOf _
  645. * @category String
  646. * @param {string} [string=''] The string to escape.
  647. * @returns {string} Returns the escaped string.
  648. * @example
  649. *
  650. * _.escapeRegExp('[lodash](https://lodash.com/)');
  651. * // => '\[lodash\]\(https://lodash\.com/\)'
  652. */
  653. function escapeRegExp(string) {
  654. string = baseToString(string);
  655. return (string && reHasRegExpChars.test(string))
  656. ? string.replace(reRegExpChars, '\\$&')
  657. : string;
  658. }
  659. module.exports = isNative;
  660. },{}],9:[function(require,module,exports){
  661. /**
  662. * lodash 3.0.1 (Custom Build) <https://lodash.com/>
  663. * Build: `lodash modern modularize exports="npm" -o ./`
  664. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  665. * Based on Underscore.js 1.8.2 <http://underscorejs.org/LICENSE>
  666. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  667. * Available under MIT license <https://lodash.com/license>
  668. */
  669. var bindCallback = require('lodash._bindcallback'),
  670. isIterateeCall = require('lodash._isiterateecall');
  671. /**
  672. * Creates a function that assigns properties of source object(s) to a given
  673. * destination object.
  674. *
  675. * @private
  676. * @param {Function} assigner The function to assign values.
  677. * @returns {Function} Returns the new assigner function.
  678. */
  679. function createAssigner(assigner) {
  680. return function() {
  681. var args = arguments,
  682. length = args.length,
  683. object = args[0];
  684. if (length < 2 || object == null) {
  685. return object;
  686. }
  687. var customizer = args[length - 2],
  688. thisArg = args[length - 1],
  689. guard = args[3];
  690. if (length > 3 && typeof customizer == 'function') {
  691. customizer = bindCallback(customizer, thisArg, 5);
  692. length -= 2;
  693. } else {
  694. customizer = (length > 2 && typeof thisArg == 'function') ? thisArg : null;
  695. length -= (customizer ? 1 : 0);
  696. }
  697. if (guard && isIterateeCall(args[1], args[2], guard)) {
  698. customizer = length == 3 ? null : customizer;
  699. length = 2;
  700. }
  701. var index = 0;
  702. while (++index < length) {
  703. var source = args[index];
  704. if (source) {
  705. assigner(object, source, customizer);
  706. }
  707. }
  708. return object;
  709. };
  710. }
  711. module.exports = createAssigner;
  712. },{"lodash._bindcallback":10,"lodash._isiterateecall":11}],10:[function(require,module,exports){
  713. /**
  714. * lodash 3.0.0 (Custom Build) <https://lodash.com/>
  715. * Build: `lodash modern modularize exports="npm" -o ./`
  716. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  717. * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
  718. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  719. * Available under MIT license <https://lodash.com/license>
  720. */
  721. /**
  722. * A specialized version of `baseCallback` which only supports `this` binding
  723. * and specifying the number of arguments to provide to `func`.
  724. *
  725. * @private
  726. * @param {Function} func The function to bind.
  727. * @param {*} thisArg The `this` binding of `func`.
  728. * @param {number} [argCount] The number of arguments to provide to `func`.
  729. * @returns {Function} Returns the callback.
  730. */
  731. function bindCallback(func, thisArg, argCount) {
  732. if (typeof func != 'function') {
  733. return identity;
  734. }
  735. if (typeof thisArg == 'undefined') {
  736. return func;
  737. }
  738. switch (argCount) {
  739. case 1: return function(value) {
  740. return func.call(thisArg, value);
  741. };
  742. case 3: return function(value, index, collection) {
  743. return func.call(thisArg, value, index, collection);
  744. };
  745. case 4: return function(accumulator, value, index, collection) {
  746. return func.call(thisArg, accumulator, value, index, collection);
  747. };
  748. case 5: return function(value, other, key, object, source) {
  749. return func.call(thisArg, value, other, key, object, source);
  750. };
  751. }
  752. return function() {
  753. return func.apply(thisArg, arguments);
  754. };
  755. }
  756. /**
  757. * This method returns the first argument provided to it.
  758. *
  759. * @static
  760. * @memberOf _
  761. * @category Utility
  762. * @param {*} value Any value.
  763. * @returns {*} Returns `value`.
  764. * @example
  765. *
  766. * var object = { 'user': 'fred' };
  767. * _.identity(object) === object;
  768. * // => true
  769. */
  770. function identity(value) {
  771. return value;
  772. }
  773. module.exports = bindCallback;
  774. },{}],11:[function(require,module,exports){
  775. /**
  776. * lodash 3.0.4 (Custom Build) <https://lodash.com/>
  777. * Build: `lodash modern modularize exports="npm" -o ./`
  778. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  779. * Based on Underscore.js 1.8.2 <http://underscorejs.org/LICENSE>
  780. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  781. * Available under MIT license <https://lodash.com/license>
  782. */
  783. /**
  784. * Used as the maximum length of an array-like value.
  785. * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
  786. * for more details.
  787. */
  788. var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
  789. /**
  790. * Checks if `value` is a valid array-like index.
  791. *
  792. * @private
  793. * @param {*} value The value to check.
  794. * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
  795. * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
  796. */
  797. function isIndex(value, length) {
  798. value = +value;
  799. length = length == null ? MAX_SAFE_INTEGER : length;
  800. return value > -1 && value % 1 == 0 && value < length;
  801. }
  802. /**
  803. * Checks if the provided arguments are from an iteratee call.
  804. *
  805. * @private
  806. * @param {*} value The potential iteratee value argument.
  807. * @param {*} index The potential iteratee index or key argument.
  808. * @param {*} object The potential iteratee object argument.
  809. * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.
  810. */
  811. function isIterateeCall(value, index, object) {
  812. if (!isObject(object)) {
  813. return false;
  814. }
  815. var type = typeof index;
  816. if (type == 'number') {
  817. var length = object.length,
  818. prereq = isLength(length) && isIndex(index, length);
  819. } else {
  820. prereq = type == 'string' && index in object;
  821. }
  822. if (prereq) {
  823. var other = object[index];
  824. return value === value ? (value === other) : (other !== other);
  825. }
  826. return false;
  827. }
  828. /**
  829. * Checks if `value` is a valid array-like length.
  830. *
  831. * **Note:** This function is based on ES `ToLength`. See the
  832. * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)
  833. * for more details.
  834. *
  835. * @private
  836. * @param {*} value The value to check.
  837. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
  838. */
  839. function isLength(value) {
  840. return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  841. }
  842. /**
  843. * Checks if `value` is the language type of `Object`.
  844. * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
  845. *
  846. * **Note:** See the [ES5 spec](https://es5.github.io/#x8) for more details.
  847. *
  848. * @static
  849. * @memberOf _
  850. * @category Lang
  851. * @param {*} value The value to check.
  852. * @returns {boolean} Returns `true` if `value` is an object, else `false`.
  853. * @example
  854. *
  855. * _.isObject({});
  856. * // => true
  857. *
  858. * _.isObject([1, 2, 3]);
  859. * // => true
  860. *
  861. * _.isObject(1);
  862. * // => false
  863. */
  864. function isObject(value) {
  865. // Avoid a V8 JIT bug in Chrome 19-20.
  866. // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
  867. var type = typeof value;
  868. return type == 'function' || (value && type == 'object') || false;
  869. }
  870. module.exports = isIterateeCall;
  871. },{}],12:[function(require,module,exports){
  872. /**
  873. * lodash 3.0.0 (Custom Build) <https://lodash.com/>
  874. * Build: `lodash modern modularize exports="npm" -o ./`
  875. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  876. * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
  877. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  878. * Available under MIT license <https://lodash.com/license>
  879. */
  880. var baseCallback = require('lodash._basecallback'),
  881. baseEach = require('lodash._baseeach'),
  882. baseFind = require('lodash._basefind'),
  883. findIndex = require('lodash.findindex'),
  884. isArray = require('lodash.isarray');
  885. /**
  886. * Iterates over elements of `collection`, returning the first element
  887. * `predicate` returns truthy for. The predicate is bound to `thisArg` and
  888. * invoked with three arguments; (value, index|key, collection).
  889. *
  890. * If a property name is provided for `predicate` the created "_.property"
  891. * style callback returns the property value of the given element.
  892. *
  893. * If an object is provided for `predicate` the created "_.matches" style
  894. * callback returns `true` for elements that have the properties of the given
  895. * object, else `false`.
  896. *
  897. * @static
  898. * @memberOf _
  899. * @alias detect
  900. * @category Collection
  901. * @param {Array|Object|string} collection The collection to search.
  902. * @param {Function|Object|string} [predicate=_.identity] The function invoked
  903. * per iteration. If a property name or object is provided it is used to
  904. * create a "_.property" or "_.matches" style callback respectively.
  905. * @param {*} [thisArg] The `this` binding of `predicate`.
  906. * @returns {*} Returns the matched element, else `undefined`.
  907. * @example
  908. *
  909. * var users = [
  910. * { 'user': 'barney', 'age': 36, 'active': false },
  911. * { 'user': 'fred', 'age': 40, 'active': true },
  912. * { 'user': 'pebbles', 'age': 1, 'active': false }
  913. * ];
  914. *
  915. * _.result(_.find(users, function(chr) { return chr.age < 40; }), 'user');
  916. * // => 'barney'
  917. *
  918. * // using the "_.matches" callback shorthand
  919. * _.result(_.find(users, { 'age': 1 }), 'user');
  920. * // => 'pebbles'
  921. *
  922. * // using the "_.property" callback shorthand
  923. * _.result(_.find(users, 'active'), 'user');
  924. * // => 'fred'
  925. */
  926. function find(collection, predicate, thisArg) {
  927. if (isArray(collection)) {
  928. var index = findIndex(collection, predicate, thisArg);
  929. return index > -1 ? collection[index] : undefined;
  930. }
  931. predicate = baseCallback(predicate, thisArg, 3);
  932. return baseFind(collection, predicate, baseEach);
  933. }
  934. module.exports = find;
  935. },{"lodash._basecallback":13,"lodash._baseeach":20,"lodash._basefind":24,"lodash.findindex":25,"lodash.isarray":26}],13:[function(require,module,exports){
  936. /**
  937. * lodash 3.1.2 (Custom Build) <https://lodash.com/>
  938. * Build: `lodash modern modularize exports="npm" -o ./`
  939. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  940. * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
  941. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  942. * Available under MIT license <https://lodash.com/license>
  943. */
  944. var baseIsEqual = require('lodash._baseisequal'),
  945. bindCallback = require('lodash._bindcallback'),
  946. keys = require('lodash.keys');
  947. /** Used for native method references. */
  948. var objectProto = Object.prototype;
  949. /** Used to check objects for own properties. */
  950. var hasOwnProperty = objectProto.hasOwnProperty;
  951. /**
  952. * The base implementation of `_.callback` which supports specifying the
  953. * number of arguments to provide to `func`.
  954. *
  955. * @private
  956. * @param {*} [func=_.identity] The value to convert to a callback.
  957. * @param {*} [thisArg] The `this` binding of `func`.
  958. * @param {number} [argCount] The number of arguments to provide to `func`.
  959. * @returns {Function} Returns the callback.
  960. */
  961. function baseCallback(func, thisArg, argCount) {
  962. var type = typeof func;
  963. if (type == 'function') {
  964. return (typeof thisArg != 'undefined')
  965. ? bindCallback(func, thisArg, argCount)
  966. : func;
  967. }
  968. if (func == null) {
  969. return identity;
  970. }
  971. if (type == 'object') {
  972. return baseMatches(func);
  973. }
  974. return typeof thisArg == 'undefined'
  975. ? baseProperty(func + '')
  976. : baseMatchesProperty(func + '', thisArg);
  977. }
  978. /**
  979. * The base implementation of `_.isMatch` without support for callback
  980. * shorthands or `this` binding.
  981. *
  982. * @private
  983. * @param {Object} object The object to inspect.
  984. * @param {Array} props The source property names to match.
  985. * @param {Array} values The source values to match.
  986. * @param {Array} strictCompareFlags Strict comparison flags for source values.
  987. * @param {Function} [customizer] The function to customize comparing objects.
  988. * @returns {boolean} Returns `true` if `object` is a match, else `false`.
  989. */
  990. function baseIsMatch(object, props, values, strictCompareFlags, customizer) {
  991. var length = props.length;
  992. if (object == null) {
  993. return !length;
  994. }
  995. var index = -1,
  996. noCustomizer = !customizer;
  997. while (++index < length) {
  998. if ((noCustomizer && strictCompareFlags[index])
  999. ? values[index] !== object[props[index]]
  1000. : !hasOwnProperty.call(object, props[index])
  1001. ) {
  1002. return false;
  1003. }
  1004. }
  1005. index = -1;
  1006. while (++index < length) {
  1007. var key = props[index];
  1008. if (noCustomizer && strictCompareFlags[index]) {
  1009. var result = hasOwnProperty.call(object, key);
  1010. } else {
  1011. var objValue = object[key],
  1012. srcValue = values[index];
  1013. result = customizer ? customizer(objValue, srcValue, key) : undefined;
  1014. if (typeof result == 'undefined') {
  1015. result = baseIsEqual(srcValue, objValue, customizer, true);
  1016. }
  1017. }
  1018. if (!result) {
  1019. return false;
  1020. }
  1021. }
  1022. return true;
  1023. }
  1024. /**
  1025. * The base implementation of `_.matches` which does not clone `source`.
  1026. *
  1027. * @private
  1028. * @param {Object} source The object of property values to match.
  1029. * @returns {Function} Returns the new function.
  1030. */
  1031. function baseMatches(source) {
  1032. var props = keys(source),
  1033. length = props.length;
  1034. if (length == 1) {
  1035. var key = props[0],
  1036. value = source[key];
  1037. if (isStrictComparable(value)) {
  1038. return function(object) {
  1039. return object != null && object[key] === value && hasOwnProperty.call(object, key);
  1040. };
  1041. }
  1042. }
  1043. var values = Array(length),
  1044. strictCompareFlags = Array(length);
  1045. while (length--) {
  1046. value = source[props[length]];
  1047. values[length] = value;
  1048. strictCompareFlags[length] = isStrictComparable(value);
  1049. }
  1050. return function(object) {
  1051. return baseIsMatch(object, props, values, strictCompareFlags);
  1052. };
  1053. }
  1054. /**
  1055. * The base implementation of `_.matchesProperty` which does not coerce `key`
  1056. * to a string.
  1057. *
  1058. * @private
  1059. * @param {string} key The key of the property to get.
  1060. * @param {*} value The value to compare.
  1061. * @returns {Function} Returns the new function.
  1062. */
  1063. function baseMatchesProperty(key, value) {
  1064. if (isStrictComparable(value)) {
  1065. return function(object) {
  1066. return object != null && object[key] === value;
  1067. };
  1068. }
  1069. return function(object) {
  1070. return object != null && baseIsEqual(value, object[key], null, true);
  1071. };
  1072. }
  1073. /**
  1074. * The base implementation of `_.property` which does not coerce `key` to a string.
  1075. *
  1076. * @private
  1077. * @param {string} key The key of the property to get.
  1078. * @returns {Function} Returns the new function.
  1079. */
  1080. function baseProperty(key) {
  1081. return function(object) {
  1082. return object == null ? undefined : object[key];
  1083. };
  1084. }
  1085. /**
  1086. * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
  1087. *
  1088. * @private
  1089. * @param {*} value The value to check.
  1090. * @returns {boolean} Returns `true` if `value` if suitable for strict
  1091. * equality comparisons, else `false`.
  1092. */
  1093. function isStrictComparable(value) {
  1094. return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value));
  1095. }
  1096. /**
  1097. * Checks if `value` is the language type of `Object`.
  1098. * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
  1099. *
  1100. * **Note:** See the [ES5 spec](https://es5.github.io/#x8) for more details.
  1101. *
  1102. * @static
  1103. * @memberOf _
  1104. * @category Lang
  1105. * @param {*} value The value to check.
  1106. * @returns {boolean} Returns `true` if `value` is an object, else `false`.
  1107. * @example
  1108. *
  1109. * _.isObject({});
  1110. * // => true
  1111. *
  1112. * _.isObject([1, 2, 3]);
  1113. * // => true
  1114. *
  1115. * _.isObject(1);
  1116. * // => false
  1117. */
  1118. function isObject(value) {
  1119. // Avoid a V8 JIT bug in Chrome 19-20.
  1120. // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
  1121. var type = typeof value;
  1122. return type == 'function' || (value && type == 'object') || false;
  1123. }
  1124. /**
  1125. * This method returns the first argument provided to it.
  1126. *
  1127. * @static
  1128. * @memberOf _
  1129. * @category Utility
  1130. * @param {*} value Any value.
  1131. * @returns {*} Returns `value`.
  1132. * @example
  1133. *
  1134. * var object = { 'user': 'fred' };
  1135. * _.identity(object) === object;
  1136. * // => true
  1137. */
  1138. function identity(value) {
  1139. return value;
  1140. }
  1141. module.exports = baseCallback;
  1142. },{"lodash._baseisequal":14,"lodash._bindcallback":16,"lodash.keys":17}],14:[function(require,module,exports){
  1143. /**
  1144. * lodash 3.0.2 (Custom Build) <https://lodash.com/>
  1145. * Build: `lodash modern modularize exports="npm" -o ./`
  1146. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  1147. * Based on Underscore.js 1.8.2 <http://underscorejs.org/LICENSE>
  1148. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  1149. * Available under MIT license <https://lodash.com/license>
  1150. */
  1151. var isArray = require('lodash.isarray'),
  1152. isTypedArray = require('lodash.istypedarray'),
  1153. keys = require('lodash.keys');
  1154. /** `Object#toString` result references. */
  1155. var argsTag = '[object Arguments]',
  1156. arrayTag = '[object Array]',
  1157. boolTag = '[object Boolean]',
  1158. dateTag = '[object Date]',
  1159. errorTag = '[object Error]',
  1160. numberTag = '[object Number]',
  1161. objectTag = '[object Object]',
  1162. regexpTag = '[object RegExp]',
  1163. stringTag = '[object String]';
  1164. /** Used for native method references. */
  1165. var objectProto = Object.prototype;
  1166. /** Used to check objects for own properties. */
  1167. var hasOwnProperty = objectProto.hasOwnProperty;
  1168. /**
  1169. * Used to resolve the `toStringTag` of values.
  1170. * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
  1171. * for more details.
  1172. */
  1173. var objToString = objectProto.toString;
  1174. /**
  1175. * The base implementation of `_.isEqual` without support for `this` binding
  1176. * `customizer` functions.
  1177. *
  1178. * @private
  1179. * @param {*} value The value to compare.
  1180. * @param {*} other The other value to compare.
  1181. * @param {Function} [customizer] The function to customize comparing values.
  1182. * @param {boolean} [isWhere] Specify performing partial comparisons.
  1183. * @param {Array} [stackA] Tracks traversed `value` objects.
  1184. * @param {Array} [stackB] Tracks traversed `other` objects.
  1185. * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
  1186. */
  1187. function baseIsEqual(value, other, customizer, isWhere, stackA, stackB) {
  1188. // Exit early for identical values.
  1189. if (value === other) {
  1190. // Treat `+0` vs. `-0` as not equal.
  1191. return value !== 0 || (1 / value == 1 / other);
  1192. }
  1193. var valType = typeof value,
  1194. othType = typeof other;
  1195. // Exit early for unlike primitive values.
  1196. if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') ||
  1197. value == null || other == null) {
  1198. // Return `false` unless both values are `NaN`.
  1199. return value !== value && other !== other;
  1200. }
  1201. return baseIsEqualDeep(value, other, baseIsEqual, customizer, isWhere, stackA, stackB);
  1202. }
  1203. /**
  1204. * A specialized version of `baseIsEqual` for arrays and objects which performs
  1205. * deep comparisons and tracks traversed objects enabling objects with circular
  1206. * references to be compared.
  1207. *
  1208. * @private
  1209. * @param {Object} object The object to compare.
  1210. * @param {Object} other The other object to compare.
  1211. * @param {Function} equalFunc The function to determine equivalents of values.
  1212. * @param {Function} [customizer] The function to customize comparing objects.
  1213. * @param {boolean} [isWhere] Specify performing partial comparisons.
  1214. * @param {Array} [stackA=[]] Tracks traversed `value` objects.
  1215. * @param {Array} [stackB=[]] Tracks traversed `other` objects.
  1216. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
  1217. */
  1218. function baseIsEqualDeep(object, other, equalFunc, customizer, isWhere, stackA, stackB) {
  1219. var objIsArr = isArray(object),
  1220. othIsArr = isArray(other),
  1221. objTag = arrayTag,
  1222. othTag = arrayTag;
  1223. if (!objIsArr) {
  1224. objTag = objToString.call(object);
  1225. if (objTag == argsTag) {
  1226. objTag = objectTag;
  1227. } else if (objTag != objectTag) {
  1228. objIsArr = isTypedArray(object);
  1229. }
  1230. }
  1231. if (!othIsArr) {
  1232. othTag = objToString.call(other);
  1233. if (othTag == argsTag) {
  1234. othTag = objectTag;
  1235. } else if (othTag != objectTag) {
  1236. othIsArr = isTypedArray(other);
  1237. }
  1238. }
  1239. var objIsObj = objTag == objectTag,
  1240. othIsObj = othTag == objectTag,
  1241. isSameTag = objTag == othTag;
  1242. if (isSameTag && !(objIsArr || objIsObj)) {
  1243. return equalByTag(object, other, objTag);
  1244. }
  1245. var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
  1246. othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
  1247. if (valWrapped || othWrapped) {
  1248. return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isWhere, stackA, stackB);
  1249. }
  1250. if (!isSameTag) {
  1251. return false;
  1252. }
  1253. // Assume cyclic values are equal.
  1254. // For more information on detecting circular references see https://es5.github.io/#JO.
  1255. stackA || (stackA = []);
  1256. stackB || (stackB = []);
  1257. var length = stackA.length;
  1258. while (length--) {
  1259. if (stackA[length] == object) {
  1260. return stackB[length] == other;
  1261. }
  1262. }
  1263. // Add `object` and `other` to the stack of traversed objects.
  1264. stackA.push(object);
  1265. stackB.push(other);
  1266. var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isWhere, stackA, stackB);
  1267. stackA.pop();
  1268. stackB.pop();
  1269. return result;
  1270. }
  1271. /**
  1272. * A specialized version of `baseIsEqualDeep` for arrays with support for
  1273. * partial deep comparisons.
  1274. *
  1275. * @private
  1276. * @param {Array} array The array to compare.
  1277. * @param {Array} other The other array to compare.
  1278. * @param {Function} equalFunc The function to determine equivalents of values.
  1279. * @param {Function} [customizer] The function to customize comparing arrays.
  1280. * @param {boolean} [isWhere] Specify performing partial comparisons.
  1281. * @param {Array} [stackA] Tracks traversed `value` objects.
  1282. * @param {Array} [stackB] Tracks traversed `other` objects.
  1283. * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
  1284. */
  1285. function equalArrays(array, other, equalFunc, customizer, isWhere, stackA, stackB) {
  1286. var index = -1,
  1287. arrLength = array.length,
  1288. othLength = other.length,
  1289. result = true;
  1290. if (arrLength != othLength && !(isWhere && othLength > arrLength)) {
  1291. return false;
  1292. }
  1293. // Deep compare the contents, ignoring non-numeric properties.
  1294. while (result && ++index < arrLength) {
  1295. var arrValue = array[index],
  1296. othValue = other[index];
  1297. result = undefined;
  1298. if (customizer) {
  1299. result = isWhere
  1300. ? customizer(othValue, arrValue, index)
  1301. : customizer(arrValue, othValue, index);
  1302. }
  1303. if (typeof result == 'undefined') {
  1304. // Recursively compare arrays (susceptible to call stack limits).
  1305. if (isWhere) {
  1306. var othIndex = othLength;
  1307. while (othIndex--) {
  1308. othValue = other[othIndex];
  1309. result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB);
  1310. if (result) {
  1311. break;
  1312. }
  1313. }
  1314. } else {
  1315. result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB);
  1316. }
  1317. }
  1318. }
  1319. return !!result;
  1320. }
  1321. /**
  1322. * A specialized version of `baseIsEqualDeep` for comparing objects of
  1323. * the same `toStringTag`.
  1324. *
  1325. * **Note:** This function only supports comparing values with tags of
  1326. * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
  1327. *
  1328. * @private
  1329. * @param {Object} value The object to compare.
  1330. * @param {Object} other The other object to compare.
  1331. * @param {string} tag The `toStringTag` of the objects to compare.
  1332. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
  1333. */
  1334. function equalByTag(object, other, tag) {
  1335. switch (tag) {
  1336. case boolTag:
  1337. case dateTag:
  1338. // Coerce dates and booleans to numbers, dates to milliseconds and booleans
  1339. // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.
  1340. return +object == +other;
  1341. case errorTag:
  1342. return object.name == other.name && object.message == other.message;
  1343. case numberTag:
  1344. // Treat `NaN` vs. `NaN` as equal.
  1345. return (object != +object)
  1346. ? other != +other
  1347. // But, treat `-0` vs. `+0` as not equal.
  1348. : (object == 0 ? ((1 / object) == (1 / other)) : object == +other);
  1349. case regexpTag:
  1350. case stringTag:
  1351. // Coerce regexes to strings and treat strings primitives and string
  1352. // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.
  1353. return object == (other + '');
  1354. }
  1355. return false;
  1356. }
  1357. /**
  1358. * A specialized version of `baseIsEqualDeep` for objects with support for
  1359. * partial deep comparisons.
  1360. *
  1361. * @private
  1362. * @param {Object} object The object to compare.
  1363. * @param {Object} other The other object to compare.
  1364. * @param {Function} equalFunc The function to determine equivalents of values.
  1365. * @param {Function} [customizer] The function to customize comparing values.
  1366. * @param {boolean} [isWhere] Specify performing partial comparisons.
  1367. * @param {Array} [stackA] Tracks traversed `value` objects.
  1368. * @param {Array} [stackB] Tracks traversed `other` objects.
  1369. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
  1370. */
  1371. function equalObjects(object, other, equalFunc, customizer, isWhere, stackA, stackB) {
  1372. var objProps = keys(object),
  1373. objLength = objProps.length,
  1374. othProps = keys(other),
  1375. othLength = othProps.length;
  1376. if (objLength != othLength && !isWhere) {
  1377. return false;
  1378. }
  1379. var hasCtor,
  1380. index = -1;
  1381. while (++index < objLength) {
  1382. var key = objProps[index],
  1383. result = hasOwnProperty.call(other, key);
  1384. if (result) {
  1385. var objValue = object[key],
  1386. othValue = other[key];
  1387. result = undefined;
  1388. if (customizer) {
  1389. result = isWhere
  1390. ? customizer(othValue, objValue, key)
  1391. : customizer(objValue, othValue, key);
  1392. }
  1393. if (typeof result == 'undefined') {
  1394. // Recursively compare objects (susceptible to call stack limits).
  1395. result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isWhere, stackA, stackB);
  1396. }
  1397. }
  1398. if (!result) {
  1399. return false;
  1400. }
  1401. hasCtor || (hasCtor = key == 'constructor');
  1402. }
  1403. if (!hasCtor) {
  1404. var objCtor = object.constructor,
  1405. othCtor = other.constructor;
  1406. // Non `Object` object instances with different constructors are not equal.
  1407. if (objCtor != othCtor &&
  1408. ('constructor' in object && 'constructor' in other) &&
  1409. !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
  1410. typeof othCtor == 'function' && othCtor instanceof othCtor)) {
  1411. return false;
  1412. }
  1413. }
  1414. return true;
  1415. }
  1416. module.exports = baseIsEqual;
  1417. },{"lodash.isarray":26,"lodash.istypedarray":15,"lodash.keys":17}],15:[function(require,module,exports){
  1418. /**
  1419. * lodash 3.0.0 (Custom Build) <https://lodash.com/>
  1420. * Build: `lodash modern modularize exports="npm" -o ./`
  1421. * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
  1422. * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
  1423. * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  1424. * Available under MIT license <https://lodash.com/license>
  1425. */
  1426. /** `Object#toString` result references. */
  1427. var argsTag = '[object Arguments]',
  1428. arrayTag = '[object Array]',
  1429. boolTag = '[object Boolean]',
  1430. dateTag = '[object Date]',
  1431. errorTag = '[object Error]',
  1432. funcTag = '[object Function]',
  1433. mapTag = '[object Map]',
  1434. numberTag = '[object Number]',
  1435. objectTag = '[object Object]',
  1436. regexpTag = '[object RegExp]',
  1437. setTag = '[object Set]',
  1438. stringTag = '[object String]',
  1439. weakMapTag = '[object WeakMap]';
  1440. var arrayBufferTag = '[object ArrayBuffer]',
  1441. float32Tag = '[object Float32Array]',
  1442. float64Tag = '[object Float64Array]',
  1443. int8Tag = '[object Int8Ar