{"errors":[],"warnings":[],"version":"3.10.0","hash":"cc8a739dbcdb3dff7e00","publicPath":"","assetsByChunkName":{"main":["cin7-react-virtualized-tree.min.js","cin7-react-virtualized-tree.min.js.map"]},"assets":[{"name":"cin7-react-virtualized-tree.min.js","size":174802,"chunks":[0],"chunkNames":["main"],"emitted":true},{"name":"cin7-react-virtualized-tree.min.js.map","size":206511,"chunks":[0],"chunkNames":["main"],"emitted":true},{"name":"/stats.json","size":0,"chunks":[],"chunkNames":[]}],"filteredAssets":0,"entrypoints":{"main":{"chunks":[0],"assets":["cin7-react-virtualized-tree.min.js","cin7-react-virtualized-tree.min.js.map"]}},"chunks":[{"id":0,"rendered":true,"initial":true,"entry":true,"extraAsync":false,"size":154339,"names":["main"],"files":["cin7-react-virtualized-tree.min.js","cin7-react-virtualized-tree.min.js.map"],"hash":"ced89a4f594f9e116e94","parents":[],"modules":[{"id":0,"identifier":"external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","name":"external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","index":3,"index2":0,"size":42,"cacheable":false,"built":false,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","issuerId":13,"issuerName":"./src/TreeContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"react","loc":"13:0-26"},{"moduleId":16,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","module":"./src/Tree.js","moduleName":"./src/Tree.js","type":"harmony import","userRequest":"react","loc":"9:0-26"},{"moduleId":23,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","module":"./src/renderers/Deletable.js","moduleName":"./src/renderers/Deletable.js","type":"harmony import","userRequest":"react","loc":"3:0-26"},{"moduleId":24,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Expandable.js","module":"./src/renderers/Expandable.js","moduleName":"./src/renderers/Expandable.js","type":"harmony import","userRequest":"react","loc":"3:0-26"},{"moduleId":25,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Favorite.js","module":"./src/renderers/Favorite.js","moduleName":"./src/renderers/Favorite.js","type":"harmony import","userRequest":"react","loc":"3:0-26"},{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"react","loc":"9:0-26"},{"moduleId":28,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\filtering\\DefaultGroupRenderer.js","module":"./src/filtering/DefaultGroupRenderer.js","moduleName":"./src/filtering/DefaultGroupRenderer.js","type":"harmony import","userRequest":"react","loc":"1:0-26"}],"usedExports":["default"],"providedExports":null,"optimizationBailout":[],"depth":3},{"id":1,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","name":"./src/selectors/nodes.js","index":12,"index2":13,"size":4163,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","issuerId":12,"issuerName":"./src/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":12,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","module":"./src/index.js","moduleName":"./src/index.js","type":"harmony import","userRequest":"./selectors/nodes","loc":"2:0-47"},{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"./selectors/nodes","loc":"19:0-95"},{"moduleId":18,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\state\\TreeState.js","module":"./src/state/TreeState.js","moduleName":"./src/state/TreeState.js","type":"harmony import","userRequest":"../selectors/nodes","loc":"8:0-53"},{"moduleId":23,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","module":"./src/renderers/Deletable.js","moduleName":"./src/renderers/Deletable.js","type":"harmony import","userRequest":"../selectors/nodes","loc":"8:0-70"},{"moduleId":24,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Expandable.js","module":"./src/renderers/Expandable.js","moduleName":"./src/renderers/Expandable.js","type":"harmony import","userRequest":"../selectors/nodes","loc":"8:0-70"},{"moduleId":25,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Favorite.js","module":"./src/renderers/Favorite.js","moduleName":"./src/renderers/Favorite.js","type":"harmony import","userRequest":"../selectors/nodes","loc":"8:0-70"}],"usedExports":true,"providedExports":["getFlattenedTree","getNodeRenderOptions","replaceNodeFromTree","deleteNodeFromTree","updateNode","deleteNode","addNode","getRowIndexFromId","getNodeFromPath"],"optimizationBailout":[],"depth":2,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport { createSelector } from 'reselect';\nimport omit from 'lodash.omit';\nimport findIndex from 'lodash.findindex';\n\nimport { UPDATE_TYPE } from '../contants';\n\nexport { getFlattenedTree } from './getFlattenedTree';\n\nexport var getNodeRenderOptions = createSelector(function (node) {\n  return (node.state || {}).expanded;\n}, function (node) {\n  return (node.state || {}).favorite;\n}, function (node) {\n  return (node.state || {}).deletable;\n}, function (node) {\n  return node.children;\n}, function (expanded, favorite, deletable) {\n  var children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n  return {\n    hasChildren: !!children.length,\n    isExpanded: !!expanded,\n    isFavorite: !!favorite,\n    isDeletable: !!deletable\n  };\n});\n\nvar FLATTEN_TREE_PROPERTIES = ['deepness', 'parents'];\n\nvar NODE_OPERATION_TYPES = {\n  CHANGE_NODE: 'CHANGE_NODE',\n  DELETE_NODE: 'DELETE_NODE'\n};\n\nvar NODE_CHANGE_OPERATIONS = {\n  CHANGE_NODE: function CHANGE_NODE(nodes, updatedNode) {\n    return nodes.map(function (n) {\n      return n.id === updatedNode.id ? omit(_extends({}, updatedNode, n.children && { children: [].concat(n.children) }), FLATTEN_TREE_PROPERTIES) : n;\n    });\n  },\n  DELETE_NODE: function DELETE_NODE(nodes, updatedNode) {\n    return nodes.filter(function (n) {\n      return n.id !== updatedNode.id;\n    });\n  }\n};\n\nexport var replaceNodeFromTree = function replaceNodeFromTree(nodes, updatedNode) {\n  var operation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NODE_OPERATION_TYPES.CHANGE_NODE;\n\n  if (!NODE_CHANGE_OPERATIONS[operation]) {\n    return nodes;\n  }\n\n  var parents = updatedNode.parents;\n\n\n  if (!parents.length) {\n    return NODE_CHANGE_OPERATIONS[operation](nodes, updatedNode);\n  }\n\n  var parentIndex = findIndex(nodes, function (n) {\n    return n.id === parents[0];\n  });\n  var preSiblings = nodes.slice(0, parentIndex);\n  var postSiblings = nodes.slice(parentIndex + 1);\n\n  return [].concat(preSiblings, [_extends({}, nodes[parentIndex], nodes[parentIndex].children ? {\n    children: replaceNodeFromTree(nodes[parentIndex].children, _extends({}, updatedNode, { parents: parents.slice(1) }), operation)\n  } : {})], postSiblings);\n};\n\nexport var deleteNodeFromTree = function deleteNodeFromTree(nodes, deletedNode) {\n  return replaceNodeFromTree(nodes, deletedNode, NODE_OPERATION_TYPES.DELETE_NODE);\n};\n\nexport var updateNode = function updateNode(originalNode, newState) {\n  return {\n    node: _extends({}, originalNode, {\n      state: _extends({}, originalNode.state, newState)\n    }),\n    type: UPDATE_TYPE.UPDATE\n  };\n};\n\nexport var deleteNode = function deleteNode(node) {\n  return {\n    node: node,\n    type: UPDATE_TYPE.DELETE\n  };\n};\n\nexport var addNode = function addNode(node) {\n  return {\n    node: node,\n    type: UPDATE_TYPE.ADD\n  };\n};\n\nexport var getRowIndexFromId = function getRowIndexFromId(flattenedTree, id) {\n  return findIndex(flattenedTree, function (node) {\n    return node.id === id;\n  });\n};\n\n/**\n * Gets a node in the original tree from a provided path.\n *\n * @param {number|string[]} path - The id path to the node\n * @param {Object[]} tree - The Original tree\n */\nexport var getNodeFromPath = function getNodeFromPath(path, tree) {\n  var node = void 0;\n  var nextLevel = tree;\n\n  if (!Array.isArray(path)) {\n    throw new Error('path is not an array');\n  }\n\n  var _loop = function _loop(i) {\n    var id = path[i];\n\n    var nextNode = nextLevel.find(function (n) {\n      return n.id === id;\n    });\n\n    if (!nextNode) {\n      throw new Error('Could not find node at ' + path.join(','));\n    }\n\n    if (i === path.length - 1 && nextNode.id === id) {\n      node = nextNode;\n    } else {\n      nextLevel = nextNode.children;\n    }\n  };\n\n  for (var i = 0; i < path.length; i++) {\n    _loop(i);\n  }\n\n  if (!node) {\n    throw new Error('Could not find node at ' + path.join(','));\n  }\n\n  return node;\n};"},{"id":2,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\index.js","name":"./node_modules/prop-types/index.js","index":4,"index2":3,"size":710,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","issuerId":13,"issuerName":"./src/TreeContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":3,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\shapes\\nodeShapes.js","module":"./src/shapes/nodeShapes.js","moduleName":"./src/shapes/nodeShapes.js","type":"harmony import","userRequest":"prop-types","loc":"3:0-35"},{"moduleId":9,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\shapes\\rendererShapes.js","module":"./src/shapes/rendererShapes.js","moduleName":"./src/shapes/rendererShapes.js","type":"harmony import","userRequest":"prop-types","loc":"1:0-35"},{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"prop-types","loc":"14:0-35"},{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"prop-types","loc":"10:0-35"}],"usedExports":["default"],"providedExports":null,"optimizationBailout":[],"depth":3,"source":"/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n"},{"id":3,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\shapes\\nodeShapes.js","name":"./src/shapes/nodeShapes.js","index":9,"index2":5,"size":857,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","issuerId":13,"issuerName":"./src/TreeContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":9,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\shapes\\rendererShapes.js","module":"./src/shapes/rendererShapes.js","moduleName":"./src/shapes/rendererShapes.js","type":"harmony import","userRequest":"./nodeShapes","loc":"3:0-45"},{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"./shapes/nodeShapes","loc":"20:0-43"},{"moduleId":16,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","module":"./src/Tree.js","moduleName":"./src/Tree.js","type":"harmony import","userRequest":"./shapes/nodeShapes","loc":"13:0-52"},{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"./shapes/nodeShapes","loc":"15:0-43"}],"usedExports":["FlattenedNode","Node"],"providedExports":["NodeState","Node","FlattenedNode"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport PropTypes from 'prop-types';\n\nexport var NodeState = {\n  expanded: PropTypes.bool,\n  deletable: PropTypes.bool,\n  favorite: PropTypes.bool\n};\n\nvar BasicNode = {\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  name: PropTypes.string,\n  state: PropTypes.shape(NodeState)\n};\n\nexport var Node = _extends({}, BasicNode);\n\nNode.children = PropTypes.arrayOf(PropTypes.shape(Node));\n\nexport var FlattenedNode = _extends({}, BasicNode, {\n  deepness: PropTypes.number.isRequired,\n  parents: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]))\n});"},{"id":4,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\classnames\\index.js","name":"./node_modules/classnames/index.js","index":21,"index2":17,"size":1198,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","issuerId":26,"issuerName":"./src/FilteringContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":23,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","module":"./src/renderers/Deletable.js","moduleName":"./src/renderers/Deletable.js","type":"harmony import","userRequest":"classnames","loc":"4:0-36"},{"moduleId":24,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Expandable.js","module":"./src/renderers/Expandable.js","moduleName":"./src/renderers/Expandable.js","type":"harmony import","userRequest":"classnames","loc":"4:0-36"},{"moduleId":25,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Favorite.js","module":"./src/renderers/Favorite.js","moduleName":"./src/renderers/Favorite.js","type":"harmony import","userRequest":"classnames","loc":"4:0-36"},{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"classnames","loc":"12:0-36"}],"usedExports":["default"],"providedExports":null,"optimizationBailout":[],"depth":3,"source":"/*!\n  Copyright (c) 2017 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n"},{"id":5,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\getFlattenedTree.js","name":"./src/selectors/getFlattenedTree.js","index":11,"index2":6,"size":2098,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","issuerId":13,"issuerName":"./src/TreeContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":1,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","module":"./src/selectors/nodes.js","moduleName":"./src/selectors/nodes.js","type":"harmony import","userRequest":"./getFlattenedTree","loc":"9:0-54"},{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"./selectors/getFlattenedTree","loc":"18:0-64"},{"moduleId":18,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\state\\TreeState.js","module":"./src/state/TreeState.js","moduleName":"./src/state/TreeState.js","type":"harmony import","userRequest":"../selectors/getFlattenedTree","loc":"7:0-70"}],"usedExports":["getFlattenedTree","getFlattenedTreePaths"],"providedExports":["isNodeExpanded","nodeHasChildren","getFlattenedTree","getFlattenedTreePaths","doesChangeAffectFlattenedTree"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexport var isNodeExpanded = function isNodeExpanded(node) {\n  return node.state && node.state.expanded;\n};\nexport var nodeHasChildren = function nodeHasChildren(node) {\n  return node.children && node.children.length;\n};\n\nexport var getFlattenedTree = function getFlattenedTree(nodes) {\n  var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  return nodes.reduce(function (flattenedTree, node) {\n    var deepness = parents.length;\n    var nodeWithHelpers = _extends({}, node, { deepness: deepness, parents: parents });\n\n    if (!nodeHasChildren(node) || !isNodeExpanded(node)) {\n      return [].concat(flattenedTree, [nodeWithHelpers]);\n    }\n\n    return [].concat(flattenedTree, [nodeWithHelpers], getFlattenedTree(node.children, [].concat(parents, [node.id])));\n  }, []);\n};\n\nexport var getFlattenedTreePaths = function getFlattenedTreePaths(nodes) {\n  var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n  var paths = [];\n\n  for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n    var _ref;\n\n    if (_isArray) {\n      if (_i >= _iterator.length) break;\n      _ref = _iterator[_i++];\n    } else {\n      _i = _iterator.next();\n      if (_i.done) break;\n      _ref = _i.value;\n    }\n\n    var node = _ref;\n    var id = node.id;\n\n\n    if (!nodeHasChildren(node) || !isNodeExpanded(node)) {\n      paths.push(parents.concat(id));\n    } else {\n      paths.push(parents.concat(id));\n      paths.push.apply(paths, getFlattenedTreePaths(node.children, [].concat(parents, [id])));\n    }\n  }\n\n  return paths;\n};\n\nexport var doesChangeAffectFlattenedTree = function doesChangeAffectFlattenedTree(previousNode, nextNode) {\n  return isNodeExpanded(previousNode) !== isNodeExpanded(nextNode);\n};"},{"id":6,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\webpack\\buildin\\global.js","name":"(webpack)/buildin/global.js","index":15,"index2":8,"size":509,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.debounce\\index.js","issuerId":27,"issuerName":"./node_modules/lodash.debounce/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":19,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.omit\\index.js","module":"./node_modules/lodash.omit/index.js","moduleName":"./node_modules/lodash.omit/index.js","type":"cjs require","userRequest":"global","loc":"1:0-41"},{"moduleId":20,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.findindex\\index.js","module":"./node_modules/lodash.findindex/index.js","moduleName":"./node_modules/lodash.findindex/index.js","type":"cjs require","userRequest":"global","loc":"1:0-41"},{"moduleId":27,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.debounce\\index.js","module":"./node_modules/lodash.debounce/index.js","moduleName":"./node_modules/lodash.debounce/index.js","type":"cjs require","userRequest":"global","loc":"1:0-41"}],"usedExports":true,"providedExports":null,"optimizationBailout":[],"depth":4,"source":"var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n"},{"id":7,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\contants.js","name":"./src/contants.js","index":18,"index2":12,"size":64,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","issuerId":12,"issuerName":"./src/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":1,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","module":"./src/selectors/nodes.js","moduleName":"./src/selectors/nodes.js","type":"harmony import","userRequest":"../contants","loc":"7:0-42"},{"moduleId":12,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","module":"./src/index.js","moduleName":"./src/index.js","type":"harmony import","userRequest":"./contants","loc":"4:0-40"},{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"./contants","loc":"17:0-41"}],"usedExports":true,"providedExports":["UPDATE_TYPE"],"optimizationBailout":[],"depth":2,"source":"export var UPDATE_TYPE = {\n  ADD: 0,\n  DELETE: 1,\n  UPDATE: 2\n};"},{"id":8,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\eventWrappers.js","name":"./src/eventWrappers.js","index":22,"index2":18,"size":1869,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","issuerId":23,"issuerName":"./src/renderers/Deletable.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":23,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","module":"./src/renderers/Deletable.js","moduleName":"./src/renderers/Deletable.js","type":"harmony import","userRequest":"../eventWrappers","loc":"7:0-47"},{"moduleId":24,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Expandable.js","module":"./src/renderers/Expandable.js","moduleName":"./src/renderers/Expandable.js","type":"harmony import","userRequest":"../eventWrappers","loc":"7:0-47"},{"moduleId":25,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Favorite.js","module":"./src/renderers/Favorite.js","moduleName":"./src/renderers/Favorite.js","type":"harmony import","userRequest":"../eventWrappers","loc":"7:0-47"}],"usedExports":["submitEvent"],"providedExports":["wrapKeyDownEvent","KEY_CODES","submitEvent"],"optimizationBailout":[],"depth":4,"source":"var _wrapKeyDownEvent;\n\nexport var wrapKeyDownEvent = function wrapKeyDownEvent(availablekeys) {\n  return function (handler) {\n    return function (_ref) {\n      for (var _len = arguments.length, params = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        params[_key - 1] = arguments[_key];\n      }\n\n      var keyCode = _ref.keyCode;\n\n      if (keyCode in availablekeys) {\n        handler.apply(undefined, params);\n      }\n    };\n  };\n};\n\nexport var KEY_CODES = {\n  Backspace: 8,\n  Tab: 9,\n  Enter: 13,\n  Shift: 16,\n  Ctrl: 17,\n  Alt: 18,\n  PauseBreak: 19,\n  CapsLock: 20,\n  Escape: 27,\n  PageUp: 33,\n  PageDown: 34,\n  End: 35,\n  Home: 36,\n  LeftArrow: 37,\n  UpArrow: 38,\n  RightArrow: 39,\n  DownArrow: 40,\n  Insert: 45,\n  Delete: 46,\n  0: 48,\n  1: 49,\n  2: 50,\n  3: 51,\n  4: 52,\n  5: 53,\n  6: 54,\n  7: 55,\n  8: 56,\n  9: 57,\n  a: 65,\n  b: 66,\n  c: 67,\n  d: 68,\n  e: 69,\n  f: 70,\n  g: 71,\n  h: 72,\n  i: 73,\n  j: 74,\n  k: 75,\n  l: 76,\n  m: 77,\n  n: 78,\n  o: 79,\n  p: 80,\n  q: 81,\n  r: 82,\n  s: 83,\n  t: 84,\n  u: 85,\n  v: 86,\n  w: 87,\n  x: 88,\n  y: 89,\n  z: 90,\n  LeftWindowKey: 91,\n  RightWindowKey: 92,\n  SelectKey: 93,\n  NumPad0: 96,\n  NumPad1: 97,\n  NumPad2: 98,\n  NumPad3: 99,\n  NumPad4: 100,\n  NumPad5: 101,\n  NumPad6: 102,\n  NumPad7: 103,\n  NumPad8: 104,\n  NumPad9: 105,\n  Multiply: 106,\n  Add: 107,\n  Subtract: 109,\n  DecimalPoint: 110,\n  Divide: 111,\n  F1: 112,\n  F2: 113,\n  F3: 114,\n  F4: 115,\n  F5: 116,\n  F6: 117,\n  F7: 118,\n  F8: 119,\n  F9: 120,\n  F10: 121,\n  F12: 123,\n  NumLock: 144,\n  ScrollLock: 145,\n  SemiColon: 186,\n  EqualSign: 187,\n  Comma: 188,\n  Dash: 189,\n  Period: 190,\n  ForwardSlash: 191,\n  GraveAccent: 192,\n  OpenBracket: 219,\n  BackSlash: 220,\n  CloseBracket: 221,\n  SingleQuote: 222\n};\n\nexport var submitEvent = wrapKeyDownEvent((_wrapKeyDownEvent = {}, _wrapKeyDownEvent[KEY_CODES.Enter] = null, _wrapKeyDownEvent));"},{"id":9,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\shapes\\rendererShapes.js","name":"./src/shapes/rendererShapes.js","index":23,"index2":19,"size":253,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","issuerId":23,"issuerName":"./src/renderers/Deletable.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":23,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","module":"./src/renderers/Deletable.js","moduleName":"./src/renderers/Deletable.js","type":"harmony import","userRequest":"../shapes/rendererShapes","loc":"9:0-52"},{"moduleId":24,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Expandable.js","module":"./src/renderers/Expandable.js","moduleName":"./src/renderers/Expandable.js","type":"harmony import","userRequest":"../shapes/rendererShapes","loc":"9:0-52"},{"moduleId":25,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Favorite.js","module":"./src/renderers/Favorite.js","moduleName":"./src/renderers/Favorite.js","type":"harmony import","userRequest":"../shapes/rendererShapes","loc":"9:0-52"}],"usedExports":false,"providedExports":["Renderer"],"optimizationBailout":[],"depth":4,"source":"import PropTypes from 'prop-types';\n\nimport { FlattenedNode } from './nodeShapes';\n\nexport var Renderer = {\n  measure: PropTypes.func,\n  onChange: PropTypes.func.isRequired,\n  node: PropTypes.shape(FlattenedNode),\n  index: PropTypes.number.isRequired\n};"},{"id":10,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\reselect\\lib\\index.js","name":"./node_modules/reselect/lib/index.js","index":13,"index2":7,"size":4136,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","issuerId":13,"issuerName":"./src/TreeContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":1,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","module":"./src/selectors/nodes.js","moduleName":"./src/selectors/nodes.js","type":"harmony import","userRequest":"reselect","loc":"3:0-42"},{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"reselect","loc":"21:0-42"}],"usedExports":["createSelector"],"providedExports":null,"optimizationBailout":[],"depth":3,"source":"'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n  return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n  if (prev === null || next === null || prev.length !== next.length) {\n    return false;\n  }\n\n  // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n  var length = prev.length;\n  for (var i = 0; i < length; i++) {\n    if (!equalityCheck(prev[i], next[i])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction defaultMemoize(func) {\n  var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n  var lastArgs = null;\n  var lastResult = null;\n  // we reference arguments instead of spreading them for performance reasons\n  return function () {\n    if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n      // apply arguments instead of spreading for performance.\n      lastResult = func.apply(null, arguments);\n    }\n\n    lastArgs = arguments;\n    return lastResult;\n  };\n}\n\nfunction getDependencies(funcs) {\n  var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n  if (!dependencies.every(function (dep) {\n    return typeof dep === 'function';\n  })) {\n    var dependencyTypes = dependencies.map(function (dep) {\n      return typeof dep;\n    }).join(', ');\n    throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n  }\n\n  return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n  for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    memoizeOptions[_key - 1] = arguments[_key];\n  }\n\n  return function () {\n    for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      funcs[_key2] = arguments[_key2];\n    }\n\n    var recomputations = 0;\n    var resultFunc = funcs.pop();\n    var dependencies = getDependencies(funcs);\n\n    var memoizedResultFunc = memoize.apply(undefined, [function () {\n      recomputations++;\n      // apply arguments instead of spreading for performance.\n      return resultFunc.apply(null, arguments);\n    }].concat(memoizeOptions));\n\n    // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n    var selector = defaultMemoize(function () {\n      var params = [];\n      var length = dependencies.length;\n\n      for (var i = 0; i < length; i++) {\n        // apply arguments instead of spreading and mutate a local list of params for performance.\n        params.push(dependencies[i].apply(null, arguments));\n      }\n\n      // apply arguments instead of spreading for performance.\n      return memoizedResultFunc.apply(null, params);\n    });\n\n    selector.resultFunc = resultFunc;\n    selector.recomputations = function () {\n      return recomputations;\n    };\n    selector.resetRecomputations = function () {\n      return recomputations = 0;\n    };\n    return selector;\n  };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n  var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n  if (typeof selectors !== 'object') {\n    throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n  }\n  var objectKeys = Object.keys(selectors);\n  return selectorCreator(objectKeys.map(function (key) {\n    return selectors[key];\n  }), function () {\n    for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      values[_key3] = arguments[_key3];\n    }\n\n    return values.reduce(function (composition, value, index) {\n      composition[objectKeys[index]] = value;\n      return composition;\n    }, {});\n  });\n}"},{"id":11,"identifier":"multi C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","name":"multi ./src/index.js","index":0,"index2":29,"size":28,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":null,"issuerId":null,"issuerName":null,"failed":false,"errors":0,"warnings":0,"reasons":[],"usedExports":true,"providedExports":null,"optimizationBailout":[],"depth":0},{"id":12,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","name":"./src/index.js","index":1,"index2":28,"size":302,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"multi C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","issuerId":11,"issuerName":"multi ./src/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":11,"moduleIdentifier":"multi C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","module":"multi ./src/index.js","moduleName":"multi ./src/index.js","type":"single entry","userRequest":"C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","loc":"main:100000"}],"usedExports":true,"providedExports":["default","selectors","renderers","constants","FilteringContainer"],"optimizationBailout":[],"depth":1,"source":"import Tree from './TreeContainer';\nimport * as selectors from './selectors/nodes';\nimport renderers from './renderers';\nimport * as constants from './contants';\nimport FilteringContainer from './FilteringContainer';\n\nexport default Tree;\nexport { selectors, renderers, constants, FilteringContainer };"},{"id":13,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","name":"./src/TreeContainer.js","index":2,"index2":16,"size":4485,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","issuerId":12,"issuerName":"./src/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":12,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","module":"./src/index.js","moduleName":"./src/index.js","type":"harmony import","userRequest":"./TreeContainer","loc":"1:0-35"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":2,"source":"var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _DEFAULT_UPDATE_TYPES, _class, _temp2;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Tree from './Tree';\nimport { UPDATE_TYPE } from './contants';\nimport { getFlattenedTree } from './selectors/getFlattenedTree';\nimport { deleteNodeFromTree, replaceNodeFromTree, getRowIndexFromId } from './selectors/nodes';\nimport { Node } from './shapes/nodeShapes';\nimport { createSelector } from 'reselect';\n\nvar DEFAULT_UPDATE_TYPES = (_DEFAULT_UPDATE_TYPES = {}, _DEFAULT_UPDATE_TYPES[UPDATE_TYPE.DELETE] = deleteNodeFromTree, _DEFAULT_UPDATE_TYPES[UPDATE_TYPE.UPDATE] = replaceNodeFromTree, _DEFAULT_UPDATE_TYPES);\n\nvar getExtensions = createSelector(function (e) {\n  return e;\n}, function () {\n  var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _extensions$updateTyp = extensions.updateTypeHandlers,\n      updateTypeHandlers = _extensions$updateTyp === undefined ? {} : _extensions$updateTyp;\n\n\n  return {\n    updateTypeHandlers: _extends({}, DEFAULT_UPDATE_TYPES, updateTypeHandlers)\n  };\n});\n\nvar TreeContainer = (_temp2 = _class = function (_React$Component) {\n  _inherits(TreeContainer, _React$Component);\n\n  function TreeContainer() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, TreeContainer);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleChange = function (_ref) {\n      var node = _ref.node,\n          type = _ref.type;\n\n      var updatedNodes = getExtensions(_this.props.extensions).updateTypeHandlers[type](_this.nodes, node);\n\n      _this.props.onChange(updatedNodes);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  TreeContainer.prototype.render = function render() {\n    var flattenedTree = getFlattenedTree(this.props.nodes);\n    var rowIndex = getRowIndexFromId(flattenedTree, this.props.scrollToId);\n    return React.createElement(Tree, {\n      nodeMarginLeft: this.props.nodeMarginLeft,\n      nodes: flattenedTree,\n      onChange: this.handleChange,\n      NodeRenderer: this.props.children,\n      scrollToIndex: rowIndex,\n      scrollToAlignment: this.props.scrollToAlignment,\n      width: this.props.width\n    });\n  };\n\n  _createClass(TreeContainer, [{\n    key: 'nodes',\n    get: function get() {\n      return this.context.unfilteredNodes || this.props.nodes;\n    }\n  }]);\n\n  return TreeContainer;\n}(React.Component), _class.contextTypes = {\n  unfilteredNodes: PropTypes.arrayOf(PropTypes.shape(Node))\n}, _temp2);\nexport { TreeContainer as default };\n\n\nTreeContainer.defaultProps = {\n  nodeMarginLeft: 30\n};"},{"id":14,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\factoryWithThrowingShims.js","name":"./node_modules/prop-types/factoryWithThrowingShims.js","index":5,"index2":2,"size":1621,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\index.js","issuerId":2,"issuerName":"./node_modules/prop-types/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":2,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\index.js","module":"./node_modules/prop-types/index.js","moduleName":"./node_modules/prop-types/index.js","type":"cjs require","userRequest":"./factoryWithThrowingShims","loc":"18:19-56"}],"usedExports":true,"providedExports":null,"optimizationBailout":[],"depth":4,"source":"/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n"},{"id":15,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\lib\\ReactPropTypesSecret.js","name":"./node_modules/prop-types/lib/ReactPropTypesSecret.js","index":6,"index2":1,"size":314,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\factoryWithThrowingShims.js","issuerId":14,"issuerName":"./node_modules/prop-types/factoryWithThrowingShims.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":14,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\factoryWithThrowingShims.js","module":"./node_modules/prop-types/factoryWithThrowingShims.js","moduleName":"./node_modules/prop-types/factoryWithThrowingShims.js","type":"cjs require","userRequest":"./lib/ReactPropTypesSecret","loc":"10:27-64"}],"usedExports":true,"providedExports":null,"optimizationBailout":[],"depth":5,"source":"/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n"},{"id":16,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","name":"./src/Tree.js","index":7,"index2":15,"size":4951,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","issuerId":13,"issuerName":"./src/TreeContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"./Tree","loc":"16:0-26"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\n\nimport { AutoSizer, List, CellMeasurerCache, CellMeasurer } from 'react-virtualized';\n\nimport { FlattenedNode } from './shapes/nodeShapes';\nimport TreeState, { State } from './state/TreeState';\n\nvar Tree = function (_React$Component) {\n  _inherits(Tree, _React$Component);\n\n  function Tree() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Tree);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._cache = new CellMeasurerCache({\n      fixedWidth: true,\n      minHeight: 20\n    }), _this.getRowCount = function () {\n      var nodes = _this.props.nodes;\n\n\n      return nodes instanceof State ? nodes.flattenedTree.length : nodes.length;\n    }, _this.getNodeDeepness = function (node, index) {\n      var nodes = _this.props.nodes;\n\n\n      if (nodes instanceof State) {\n        TreeState.getNodeDeepness(nodes, index);\n      }\n\n      return nodes instanceof State ? TreeState.getNodeDeepness(nodes, index) : node.deepness;\n    }, _this.getNode = function (index) {\n      var nodes = _this.props.nodes;\n\n\n      return nodes instanceof State ? _extends({}, TreeState.getNodeAt(nodes, index), { deepness: _this.getNodeDeepness({}, index) }) : nodes[index];\n    }, _this.rowRenderer = function (_ref) {\n      var node = _ref.node,\n          key = _ref.key,\n          measure = _ref.measure,\n          style = _ref.style,\n          NodeRenderer = _ref.NodeRenderer,\n          index = _ref.index;\n      var nodeMarginLeft = _this.props.nodeMarginLeft;\n\n\n      return React.createElement(NodeRenderer, {\n        key: key,\n        style: _extends({}, style, {\n          marginLeft: node.deepness * nodeMarginLeft,\n          userSelect: 'none',\n          cursor: 'pointer'\n        }),\n        node: node,\n        onChange: _this.props.onChange,\n        measure: measure,\n        index: index\n      });\n    }, _this.measureRowRenderer = function (nodes) {\n      return function (_ref2) {\n        var key = _ref2.key,\n            index = _ref2.index,\n            style = _ref2.style,\n            parent = _ref2.parent;\n        var NodeRenderer = _this.props.NodeRenderer;\n\n        var node = _this.getNode(index);\n\n        return React.createElement(\n          CellMeasurer,\n          { cache: _this._cache, columnIndex: 0, key: key, rowIndex: index, parent: parent },\n          function (m) {\n            return _this.rowRenderer(_extends({}, m, { index: index, node: node, key: key, style: style, NodeRenderer: NodeRenderer }));\n          }\n        );\n      };\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Tree.prototype.render = function render() {\n    var _this2 = this;\n\n    var _props = this.props,\n        nodes = _props.nodes,\n        width = _props.width,\n        scrollToIndex = _props.scrollToIndex,\n        scrollToAlignment = _props.scrollToAlignment;\n\n\n    return React.createElement(\n      AutoSizer,\n      { disableWidth: Boolean(width) },\n      function (_ref3) {\n        var height = _ref3.height,\n            autoWidth = _ref3.width;\n        return React.createElement(List, {\n          deferredMeasurementCache: _this2._cache,\n          ref: function ref(r) {\n            return _this2._list = r;\n          },\n          height: height,\n          rowCount: _this2.getRowCount(),\n          rowHeight: _this2._cache.rowHeight,\n          rowRenderer: _this2.measureRowRenderer(nodes),\n          width: width || autoWidth,\n          scrollToIndex: scrollToIndex,\n          scrollToAlignment: scrollToAlignment\n        });\n      }\n    );\n  };\n\n  return Tree;\n}(React.Component);\n\nexport { Tree as default };"},{"id":17,"identifier":"external {\"root\":\"ReactVirtualized\",\"commonjs2\":\"react-virtualized\",\"commonjs\":\"react-virtualized\",\"amd\":\"react-virtualized\"}","name":"external {\"root\":\"ReactVirtualized\",\"commonjs2\":\"react-virtualized\",\"commonjs\":\"react-virtualized\",\"amd\":\"react-virtualized\"}","index":8,"index2":4,"size":42,"cacheable":false,"built":false,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","issuerId":16,"issuerName":"./src/Tree.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":16,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","module":"./src/Tree.js","moduleName":"./src/Tree.js","type":"harmony import","userRequest":"react-virtualized","loc":"11:0-85"}],"usedExports":["AutoSizer","CellMeasurer","CellMeasurerCache","List"],"providedExports":null,"optimizationBailout":[],"depth":4},{"id":18,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\state\\TreeState.js","name":"./src/state/TreeState.js","index":10,"index2":14,"size":2657,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","issuerId":16,"issuerName":"./src/Tree.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":16,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","module":"./src/Tree.js","moduleName":"./src/Tree.js","type":"harmony import","userRequest":"./state/TreeState","loc":"14:0-53"}],"usedExports":["State","default"],"providedExports":["State","validateState","default"],"optimizationBailout":[],"depth":4,"source":"var _class2, _temp;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { getFlattenedTreePaths } from '../selectors/getFlattenedTree';\nimport { getNodeFromPath } from '../selectors/nodes';\n\nexport var State = function State(tree, flattenedTree) {\n  _classCallCheck(this, State);\n\n  this.flattenedTree = null;\n  this.tree = null;\n\n  this.tree = tree;\n  this.flattenedTree = flattenedTree || getFlattenedTreePaths(tree);\n};\n\nexport var validateState = function validateState(state) {\n  if (!(state instanceof State)) {\n    throw new Error('Expected a State instance but got ' + (typeof state === 'undefined' ? 'undefined' : _typeof(state)));\n  }\n};\n\n/**\n * Immutable structure that represents the TreeState.\n */\nvar TreeState = (_temp = _class2 = function TreeState() {\n  _classCallCheck(this, TreeState);\n}, _class2.getNodeAt = function (state, index) {\n  validateState(state);\n\n  var rowPath = state.flattenedTree[index];\n\n  if (!rowPath) {\n    throw Error('Tried to get node at row \"' + index + '\" but got nothing, the tree are ' + state.flattenedTree.length + ' visible rows');\n  }\n\n  return getNodeFromPath(rowPath, state.tree);\n}, _class2.getNodeDeepness = function (state, index) {\n  validateState(state);\n\n  var rowPath = state.flattenedTree[index];\n\n  if (!rowPath) {\n    throw Error('Tried to get node at row \"' + index + '\" but got nothing, the tree are ' + state.flattenedTree.length + ' visible rows');\n  }\n\n  return rowPath.length - 1;\n}, _class2.getNumberOfVisibleDescendants = function (state, index) {\n  var _TreeState$getNodeAt = TreeState.getNodeAt(state, index),\n      id = _TreeState$getNodeAt.id;\n\n  var flattenedTree = state.flattenedTree;\n\n  var i = void 0;\n\n  for (i = index; i < flattenedTree.length; i++) {\n    var path = flattenedTree[i];\n\n    if (!path.some(function (p) {\n      return p === id;\n    })) {\n      break;\n    }\n  }\n\n  return Math.max(i - 1 - index, 0);\n}, _class2.getTree = function (state) {\n  validateState(state);\n\n  return state.tree;\n}, _class2.createFromTree = function (tree) {\n  if (!tree) {\n    throw Error('A falsy tree was supplied in tree creation');\n  }\n\n  if (!Array.isArray(tree)) {\n    throw Error('An invalid tree was supplied in creation');\n  }\n\n  return new State(tree);\n}, _temp);\nexport { TreeState as default };"},{"id":19,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.omit\\index.js","name":"./node_modules/lodash.omit/index.js","index":14,"index2":9,"size":37758,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","issuerId":1,"issuerName":"./src/selectors/nodes.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":1,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","module":"./src/selectors/nodes.js","moduleName":"./src/selectors/nodes.js","type":"harmony import","userRequest":"lodash.omit","loc":"4:0-31"}],"usedExports":["default"],"providedExports":null,"optimizationBailout":[],"depth":3,"source":"/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array ? array.length : 0;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  if (value !== value) {\n    return baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n  object = Object(object);\n  return basePickBy(object, props, function(value, key) {\n    return key in object;\n  });\n}\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick from.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, props, predicate) {\n  var index = -1,\n      length = props.length,\n      result = {};\n\n  while (++index < length) {\n    var key = props[index],\n        value = object[key];\n\n    if (predicate(value, key)) {\n      result[key] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Creates an array of the own and inherited enumerable symbol properties\n * of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable string keyed properties of `object` that are\n * not omitted.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property identifiers to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = baseRest(function(object, props) {\n  if (object == null) {\n    return {};\n  }\n  props = arrayMap(baseFlatten(props, 1), toKey);\n  return basePick(object, baseDifference(getAllKeysIn(object), props));\n});\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = omit;\n"},{"id":20,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.findindex\\index.js","name":"./node_modules/lodash.findindex/index.js","index":16,"index2":11,"size":63884,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","issuerId":1,"issuerName":"./src/selectors/nodes.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":1,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","module":"./src/selectors/nodes.js","moduleName":"./src/selectors/nodes.js","type":"harmony import","userRequest":"lodash.findindex","loc":"5:0-41"}],"usedExports":["default"],"providedExports":null,"optimizationBailout":[],"depth":3,"source":"/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n    PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\n    rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n    nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var cache = this.__data__;\n  if (cache instanceof ListCache) {\n    var pairs = cache.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      return this;\n    }\n    cache = this.__data__ = new MapCache(pairs);\n  }\n  cache.set(key, value);\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n *  The bitmask may be composed of the following flags:\n *     1 - Unordered comparison\n *     2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = arrayTag,\n      othTag = arrayTag;\n\n  if (!objIsArr) {\n    objTag = getTag(object);\n    objTag = objTag == argsTag ? objectTag : objTag;\n  }\n  if (!othIsArr) {\n    othTag = getTag(other);\n    othTag = othTag == argsTag ? objectTag : othTag;\n  }\n  var objIsObj = objTag == objectTag && !isHostObject(object),\n      othIsObj = othTag == objectTag && !isHostObject(other),\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n  }\n  if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n  };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!seen.has(othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n              return seen.add(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, customizer, bitmask, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= UNORDERED_COMPARE_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      objProps = keys(object),\n      objLength = objProps.length,\n      othProps = keys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = objectToString.call(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : undefined;\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var result,\n      index = -1,\n      length = path.length;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result) {\n    return result;\n  }\n  var length = object ? object.length : 0;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity]\n *  The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n  var length = array ? array.length : 0;\n  if (!length) {\n    return -1;\n  }\n  var index = fromIndex == null ? 0 : toInteger(fromIndex);\n  if (index < 0) {\n    index = nativeMax(length + index, 0);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = findIndex;\n"},{"id":21,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\webpack\\buildin\\module.js","name":"(webpack)/buildin/module.js","index":17,"index2":10,"size":517,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.findindex\\index.js","issuerId":20,"issuerName":"./node_modules/lodash.findindex/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":20,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.findindex\\index.js","module":"./node_modules/lodash.findindex/index.js","moduleName":"./node_modules/lodash.findindex/index.js","type":"cjs require","userRequest":"module","loc":"1:0-41"}],"usedExports":true,"providedExports":null,"optimizationBailout":[],"depth":4,"source":"module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n"},{"id":22,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","name":"./src/renderers/index.js","index":19,"index2":23,"size":196,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","issuerId":12,"issuerName":"./src/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":12,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","module":"./src/index.js","moduleName":"./src/index.js","type":"harmony import","userRequest":"./renderers","loc":"3:0-36"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":2,"source":"import Deletable from './Deletable';\nimport Expandable from './Expandable';\nimport Favorite from './Favorite';\n\nexport default { Deletable: Deletable, Expandable: Expandable, Favorite: Favorite };"},{"id":23,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","name":"./src/renderers/Deletable.js","index":20,"index2":20,"size":1451,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","issuerId":22,"issuerName":"./src/renderers/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":22,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","module":"./src/renderers/index.js","moduleName":"./src/renderers/index.js","type":"harmony import","userRequest":"./Deletable","loc":"1:0-36"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport classNames from 'classnames';\n\n\nimport { submitEvent } from '../eventWrappers';\nimport { getNodeRenderOptions, deleteNode } from '../selectors/nodes';\nimport { Renderer } from '../shapes/rendererShapes';\n\nvar Deletable = function Deletable(_ref) {\n  var _classNames;\n\n  var onChange = _ref.onChange,\n      node = _ref.node,\n      _ref$iconsClassNameMa = _ref.iconsClassNameMap,\n      iconsClassNameMap = _ref$iconsClassNameMa === undefined ? {\n    delete: 'mi mi-delete'\n  } : _ref$iconsClassNameMa,\n      children = _ref.children,\n      index = _ref.index;\n\n  var _getNodeRenderOptions = getNodeRenderOptions(node),\n      isDeletable = _getNodeRenderOptions.isDeletable;\n\n  var className = classNames((_classNames = {}, _classNames[iconsClassNameMap.delete] = isDeletable, _classNames));\n\n  var handleChange = function handleChange() {\n    return onChange(_extends({}, deleteNode(node), { index: index }));\n  };\n\n  return React.createElement(\n    'span',\n    null,\n    isDeletable && React.createElement('i', { tabIndex: 0, onKeyDown: submitEvent(handleChange), onClick: handleChange, className: className }),\n    children\n  );\n};\n\nexport default Deletable;"},{"id":24,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Expandable.js","name":"./src/renderers/Expandable.js","index":24,"index2":21,"size":1784,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","issuerId":22,"issuerName":"./src/renderers/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":22,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","module":"./src/renderers/index.js","moduleName":"./src/renderers/index.js","type":"harmony import","userRequest":"./Expandable","loc":"2:0-38"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport classNames from 'classnames';\n\n\nimport { submitEvent } from '../eventWrappers';\nimport { getNodeRenderOptions, updateNode } from '../selectors/nodes';\nimport { Renderer } from '../shapes/rendererShapes';\n\nvar Expandable = function Expandable(_ref) {\n  var _classNames;\n\n  var onChange = _ref.onChange,\n      node = _ref.node,\n      children = _ref.children,\n      index = _ref.index,\n      _ref$iconsClassNameMa = _ref.iconsClassNameMap,\n      iconsClassNameMap = _ref$iconsClassNameMa === undefined ? {\n    expanded: 'mi mi-keyboard-arrow-down',\n    collapsed: 'mi mi-keyboard-arrow-right',\n    lastChild: ''\n  } : _ref$iconsClassNameMa;\n\n  var _getNodeRenderOptions = getNodeRenderOptions(node),\n      hasChildren = _getNodeRenderOptions.hasChildren,\n      isExpanded = _getNodeRenderOptions.isExpanded;\n\n  var className = classNames((_classNames = {}, _classNames[iconsClassNameMap.expanded] = hasChildren && isExpanded, _classNames[iconsClassNameMap.collapsed] = hasChildren && !isExpanded, _classNames[iconsClassNameMap.lastChild] = !hasChildren, _classNames));\n\n  var handleChange = function handleChange() {\n    return onChange(_extends({}, updateNode(node, { expanded: !isExpanded }), { index: index }));\n  };\n\n  return React.createElement(\n    'span',\n    { onDoubleClick: handleChange },\n    hasChildren && React.createElement('i', { tabIndex: 0, onKeyDown: submitEvent(handleChange), onClick: handleChange, className: className }),\n    children\n  );\n};\n\nexport default Expandable;"},{"id":25,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Favorite.js","name":"./src/renderers/Favorite.js","index":25,"index2":22,"size":1555,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","issuerId":22,"issuerName":"./src/renderers/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":22,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","module":"./src/renderers/index.js","moduleName":"./src/renderers/index.js","type":"harmony import","userRequest":"./Favorite","loc":"3:0-34"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport classNames from 'classnames';\n\n\nimport { submitEvent } from '../eventWrappers';\nimport { getNodeRenderOptions, updateNode } from '../selectors/nodes';\nimport { Renderer } from '../shapes/rendererShapes';\n\nvar Favorite = function Favorite(_ref) {\n  var _classNames;\n\n  var onChange = _ref.onChange,\n      node = _ref.node,\n      _ref$iconsClassNameMa = _ref.iconsClassNameMap,\n      iconsClassNameMap = _ref$iconsClassNameMa === undefined ? {\n    favorite: 'mi mi-star',\n    notFavorite: 'mi mi-star-border'\n  } : _ref$iconsClassNameMa,\n      children = _ref.children,\n      index = _ref.index;\n\n  var _getNodeRenderOptions = getNodeRenderOptions(node),\n      isFavorite = _getNodeRenderOptions.isFavorite;\n\n  var className = classNames((_classNames = {}, _classNames[iconsClassNameMap.favorite] = isFavorite, _classNames[iconsClassNameMap.notFavorite] = !isFavorite, _classNames));\n\n  var handleChange = function handleChange() {\n    return onChange(_extends({}, updateNode(node, { favorite: !isFavorite }), { index: index }));\n  };\n\n  return React.createElement(\n    'span',\n    null,\n    React.createElement('i', { tabIndex: 0, onKeyDown: submitEvent(handleChange), onClick: handleChange, className: className }),\n    children\n  );\n};\n\nexport default Favorite;"},{"id":26,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","name":"./src/FilteringContainer.js","index":26,"index2":27,"size":4359,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","issuerId":12,"issuerName":"./src/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":12,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","module":"./src/index.js","moduleName":"./src/index.js","type":"harmony import","userRequest":"./FilteringContainer","loc":"5:0-54"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":2,"source":"var _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport classNames from 'classnames';\n\nimport DefaultGroupRenderer from './filtering/DefaultGroupRenderer';\nimport { Node } from './shapes/nodeShapes';\nimport { filterNodes } from './selectors/filtering';\n\nvar indexByName = function indexByName(searchTerm) {\n  return function (_ref) {\n    var name = _ref.name;\n\n    var upperCaseName = name.toUpperCase();\n    var upperCaseSearchTerm = searchTerm.toUpperCase();\n\n    return upperCaseName.indexOf(upperCaseSearchTerm.trim()) > -1;\n  };\n};\n\nvar FilteringContainer = (_temp = _class = function (_React$Component) {\n  _inherits(FilteringContainer, _React$Component);\n\n  function FilteringContainer(props) {\n    _classCallCheck(this, FilteringContainer);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));\n\n    _this.state = {\n      filterText: '',\n      filterTerm: ''\n    };\n\n    _this.getChildContext = function () {\n      return { unfilteredNodes: _this.props.nodes };\n    };\n\n    _this.handleFilterTextChange = function (e) {\n      var filterText = e.target.value;\n\n      _this.setState({ filterText: filterText });\n\n      _this.setFilterTerm();\n    };\n\n    _this.setFilterTerm = props.debouncer(_this.setFilterTerm, 300);\n    return _this;\n  }\n\n  FilteringContainer.prototype.setFilterTerm = function setFilterTerm() {\n    this.setState(function (ps) {\n      return { filterTerm: ps.filterText };\n    });\n  };\n\n  FilteringContainer.prototype.render = function render() {\n    var _state = this.state,\n        filterTerm = _state.filterTerm,\n        filterText = _state.filterText;\n    var _props = this.props,\n        nodes = _props.nodes,\n        treeRenderer = _props.children,\n        groups = _props.groups,\n        selectedGroup = _props.selectedGroup,\n        GroupRenderer = _props.groupRenderer,\n        onSelectedGroupChange = _props.onSelectedGroupChange,\n        indexSearch = _props.indexSearch,\n        placeholder = _props.placeholder;\n\n\n    var relevantNodes = groups && selectedGroup && groups[selectedGroup] ? filterNodes(groups[selectedGroup].filter, nodes) : { nodes: nodes, nodeParentMappings: {} };\n\n    var _ref2 = filterTerm ? filterNodes(indexSearch(filterTerm, relevantNodes.nodes), relevantNodes.nodes) : relevantNodes,\n        filteredNodes = _ref2.nodes,\n        nodeParentMappings = _ref2.nodeParentMappings;\n\n    return React.createElement(\n      'div',\n      { className: 'tree-filter-container' },\n      React.createElement(\n        'div',\n        { className: classNames('tree-lookup-input', { group: !!groups }) },\n        React.createElement('input', { value: filterText, onChange: this.handleFilterTextChange, placeholder: placeholder }),\n        React.createElement('i', { 'aria-hidden': 'true', className: 'mi mi-11 mi-search' }),\n        groups && React.createElement(GroupRenderer, { groups: groups, selectedGroup: selectedGroup, onChange: onSelectedGroupChange })\n      ),\n      treeRenderer({ nodes: filteredNodes, nodeParentMappings: nodeParentMappings })\n    );\n  };\n\n  return FilteringContainer;\n}(React.Component), _class.childContextTypes = {\n  unfilteredNodes: PropTypes.arrayOf(PropTypes.shape(Node)).isRequired\n}, _class.defaultProps = {\n  debouncer: debounce,\n  groupRenderer: DefaultGroupRenderer,\n  indexSearch: indexByName,\n  placeholder: 'Search...'\n}, _temp);\nexport { FilteringContainer as default };"},{"id":27,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.debounce\\index.js","name":"./node_modules/lodash.debounce/index.js","index":27,"index2":24,"size":10784,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","issuerId":26,"issuerName":"./src/FilteringContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"lodash.debounce","loc":"11:0-39"}],"usedExports":["default"],"providedExports":null,"optimizationBailout":[],"depth":3,"source":"/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n"},{"id":28,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\filtering\\DefaultGroupRenderer.js","name":"./src/filtering/DefaultGroupRenderer.js","index":28,"index2":25,"size":640,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","issuerId":26,"issuerName":"./src/FilteringContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"./filtering/DefaultGroupRenderer","loc":"14:0-68"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":3,"source":"import React from 'react';\n\nvar DefaultGroupRenderer = function DefaultGroupRenderer(_ref) {\n  var _onChange = _ref.onChange,\n      groups = _ref.groups,\n      selectedGroup = _ref.selectedGroup;\n\n  return React.createElement(\n    \"select\",\n    {\n      className: \"tree-group\",\n      onChange: function onChange(_ref2) {\n        var value = _ref2.target.value;\n\n        _onChange(value);\n      },\n      value: selectedGroup\n    },\n    Object.keys(groups).map(function (g) {\n      return React.createElement(\n        \"option\",\n        { key: g, value: g },\n        groups[g].name\n      );\n    })\n  );\n};\n\nexport default DefaultGroupRenderer;"},{"id":29,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\filtering.js","name":"./src/selectors/filtering.js","index":29,"index2":26,"size":1112,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","issuerId":26,"issuerName":"./src/FilteringContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"./selectors/filtering","loc":"16:0-52"}],"usedExports":["filterNodes"],"providedExports":["filterNodes"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar INITIAL_FILTERED_VALUE = { nodes: [], nodeParentMappings: {} };\n\nexport var filterNodes = function filterNodes(filter, nodes) {\n  var parents = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n  return nodes.reduce(function (filtered, n) {\n    var _extends2;\n\n    var _ref = n.children ? filterNodes(filter, n.children, [].concat(parents, [n.id])) : INITIAL_FILTERED_VALUE,\n        filteredChildren = _ref.nodes,\n        childrenNodeMappings = _ref.nodeParentMappings;\n\n    return !(filter(n) || filteredChildren.length) ? filtered : {\n      nodes: [].concat(filtered.nodes, [_extends({}, n, {\n        children: filteredChildren\n      })]),\n      nodeParentMappings: _extends({}, filtered.nodeParentMappings, childrenNodeMappings, (_extends2 = {}, _extends2[n.id] = parents, _extends2))\n    };\n  }, INITIAL_FILTERED_VALUE);\n};"}],"filteredModules":0,"origins":[{"moduleId":11,"module":"multi C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","moduleIdentifier":"multi C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","moduleName":"multi ./src/index.js","loc":"","name":"main","reasons":[]}]}],"modules":[{"id":0,"identifier":"external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","name":"external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","index":3,"index2":0,"size":42,"cacheable":false,"built":false,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","issuerId":13,"issuerName":"./src/TreeContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"react","loc":"13:0-26"},{"moduleId":16,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","module":"./src/Tree.js","moduleName":"./src/Tree.js","type":"harmony import","userRequest":"react","loc":"9:0-26"},{"moduleId":23,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","module":"./src/renderers/Deletable.js","moduleName":"./src/renderers/Deletable.js","type":"harmony import","userRequest":"react","loc":"3:0-26"},{"moduleId":24,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Expandable.js","module":"./src/renderers/Expandable.js","moduleName":"./src/renderers/Expandable.js","type":"harmony import","userRequest":"react","loc":"3:0-26"},{"moduleId":25,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Favorite.js","module":"./src/renderers/Favorite.js","moduleName":"./src/renderers/Favorite.js","type":"harmony import","userRequest":"react","loc":"3:0-26"},{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"react","loc":"9:0-26"},{"moduleId":28,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\filtering\\DefaultGroupRenderer.js","module":"./src/filtering/DefaultGroupRenderer.js","moduleName":"./src/filtering/DefaultGroupRenderer.js","type":"harmony import","userRequest":"react","loc":"1:0-26"}],"usedExports":["default"],"providedExports":null,"optimizationBailout":[],"depth":3},{"id":1,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","name":"./src/selectors/nodes.js","index":12,"index2":13,"size":4163,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","issuerId":12,"issuerName":"./src/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":12,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","module":"./src/index.js","moduleName":"./src/index.js","type":"harmony import","userRequest":"./selectors/nodes","loc":"2:0-47"},{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"./selectors/nodes","loc":"19:0-95"},{"moduleId":18,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\state\\TreeState.js","module":"./src/state/TreeState.js","moduleName":"./src/state/TreeState.js","type":"harmony import","userRequest":"../selectors/nodes","loc":"8:0-53"},{"moduleId":23,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","module":"./src/renderers/Deletable.js","moduleName":"./src/renderers/Deletable.js","type":"harmony import","userRequest":"../selectors/nodes","loc":"8:0-70"},{"moduleId":24,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Expandable.js","module":"./src/renderers/Expandable.js","moduleName":"./src/renderers/Expandable.js","type":"harmony import","userRequest":"../selectors/nodes","loc":"8:0-70"},{"moduleId":25,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Favorite.js","module":"./src/renderers/Favorite.js","moduleName":"./src/renderers/Favorite.js","type":"harmony import","userRequest":"../selectors/nodes","loc":"8:0-70"}],"usedExports":true,"providedExports":["getFlattenedTree","getNodeRenderOptions","replaceNodeFromTree","deleteNodeFromTree","updateNode","deleteNode","addNode","getRowIndexFromId","getNodeFromPath"],"optimizationBailout":[],"depth":2,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport { createSelector } from 'reselect';\nimport omit from 'lodash.omit';\nimport findIndex from 'lodash.findindex';\n\nimport { UPDATE_TYPE } from '../contants';\n\nexport { getFlattenedTree } from './getFlattenedTree';\n\nexport var getNodeRenderOptions = createSelector(function (node) {\n  return (node.state || {}).expanded;\n}, function (node) {\n  return (node.state || {}).favorite;\n}, function (node) {\n  return (node.state || {}).deletable;\n}, function (node) {\n  return node.children;\n}, function (expanded, favorite, deletable) {\n  var children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n  return {\n    hasChildren: !!children.length,\n    isExpanded: !!expanded,\n    isFavorite: !!favorite,\n    isDeletable: !!deletable\n  };\n});\n\nvar FLATTEN_TREE_PROPERTIES = ['deepness', 'parents'];\n\nvar NODE_OPERATION_TYPES = {\n  CHANGE_NODE: 'CHANGE_NODE',\n  DELETE_NODE: 'DELETE_NODE'\n};\n\nvar NODE_CHANGE_OPERATIONS = {\n  CHANGE_NODE: function CHANGE_NODE(nodes, updatedNode) {\n    return nodes.map(function (n) {\n      return n.id === updatedNode.id ? omit(_extends({}, updatedNode, n.children && { children: [].concat(n.children) }), FLATTEN_TREE_PROPERTIES) : n;\n    });\n  },\n  DELETE_NODE: function DELETE_NODE(nodes, updatedNode) {\n    return nodes.filter(function (n) {\n      return n.id !== updatedNode.id;\n    });\n  }\n};\n\nexport var replaceNodeFromTree = function replaceNodeFromTree(nodes, updatedNode) {\n  var operation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NODE_OPERATION_TYPES.CHANGE_NODE;\n\n  if (!NODE_CHANGE_OPERATIONS[operation]) {\n    return nodes;\n  }\n\n  var parents = updatedNode.parents;\n\n\n  if (!parents.length) {\n    return NODE_CHANGE_OPERATIONS[operation](nodes, updatedNode);\n  }\n\n  var parentIndex = findIndex(nodes, function (n) {\n    return n.id === parents[0];\n  });\n  var preSiblings = nodes.slice(0, parentIndex);\n  var postSiblings = nodes.slice(parentIndex + 1);\n\n  return [].concat(preSiblings, [_extends({}, nodes[parentIndex], nodes[parentIndex].children ? {\n    children: replaceNodeFromTree(nodes[parentIndex].children, _extends({}, updatedNode, { parents: parents.slice(1) }), operation)\n  } : {})], postSiblings);\n};\n\nexport var deleteNodeFromTree = function deleteNodeFromTree(nodes, deletedNode) {\n  return replaceNodeFromTree(nodes, deletedNode, NODE_OPERATION_TYPES.DELETE_NODE);\n};\n\nexport var updateNode = function updateNode(originalNode, newState) {\n  return {\n    node: _extends({}, originalNode, {\n      state: _extends({}, originalNode.state, newState)\n    }),\n    type: UPDATE_TYPE.UPDATE\n  };\n};\n\nexport var deleteNode = function deleteNode(node) {\n  return {\n    node: node,\n    type: UPDATE_TYPE.DELETE\n  };\n};\n\nexport var addNode = function addNode(node) {\n  return {\n    node: node,\n    type: UPDATE_TYPE.ADD\n  };\n};\n\nexport var getRowIndexFromId = function getRowIndexFromId(flattenedTree, id) {\n  return findIndex(flattenedTree, function (node) {\n    return node.id === id;\n  });\n};\n\n/**\n * Gets a node in the original tree from a provided path.\n *\n * @param {number|string[]} path - The id path to the node\n * @param {Object[]} tree - The Original tree\n */\nexport var getNodeFromPath = function getNodeFromPath(path, tree) {\n  var node = void 0;\n  var nextLevel = tree;\n\n  if (!Array.isArray(path)) {\n    throw new Error('path is not an array');\n  }\n\n  var _loop = function _loop(i) {\n    var id = path[i];\n\n    var nextNode = nextLevel.find(function (n) {\n      return n.id === id;\n    });\n\n    if (!nextNode) {\n      throw new Error('Could not find node at ' + path.join(','));\n    }\n\n    if (i === path.length - 1 && nextNode.id === id) {\n      node = nextNode;\n    } else {\n      nextLevel = nextNode.children;\n    }\n  };\n\n  for (var i = 0; i < path.length; i++) {\n    _loop(i);\n  }\n\n  if (!node) {\n    throw new Error('Could not find node at ' + path.join(','));\n  }\n\n  return node;\n};"},{"id":2,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\index.js","name":"./node_modules/prop-types/index.js","index":4,"index2":3,"size":710,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","issuerId":13,"issuerName":"./src/TreeContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":3,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\shapes\\nodeShapes.js","module":"./src/shapes/nodeShapes.js","moduleName":"./src/shapes/nodeShapes.js","type":"harmony import","userRequest":"prop-types","loc":"3:0-35"},{"moduleId":9,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\shapes\\rendererShapes.js","module":"./src/shapes/rendererShapes.js","moduleName":"./src/shapes/rendererShapes.js","type":"harmony import","userRequest":"prop-types","loc":"1:0-35"},{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"prop-types","loc":"14:0-35"},{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"prop-types","loc":"10:0-35"}],"usedExports":["default"],"providedExports":null,"optimizationBailout":[],"depth":3,"source":"/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n"},{"id":3,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\shapes\\nodeShapes.js","name":"./src/shapes/nodeShapes.js","index":9,"index2":5,"size":857,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","issuerId":13,"issuerName":"./src/TreeContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":9,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\shapes\\rendererShapes.js","module":"./src/shapes/rendererShapes.js","moduleName":"./src/shapes/rendererShapes.js","type":"harmony import","userRequest":"./nodeShapes","loc":"3:0-45"},{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"./shapes/nodeShapes","loc":"20:0-43"},{"moduleId":16,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","module":"./src/Tree.js","moduleName":"./src/Tree.js","type":"harmony import","userRequest":"./shapes/nodeShapes","loc":"13:0-52"},{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"./shapes/nodeShapes","loc":"15:0-43"}],"usedExports":["FlattenedNode","Node"],"providedExports":["NodeState","Node","FlattenedNode"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport PropTypes from 'prop-types';\n\nexport var NodeState = {\n  expanded: PropTypes.bool,\n  deletable: PropTypes.bool,\n  favorite: PropTypes.bool\n};\n\nvar BasicNode = {\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  name: PropTypes.string,\n  state: PropTypes.shape(NodeState)\n};\n\nexport var Node = _extends({}, BasicNode);\n\nNode.children = PropTypes.arrayOf(PropTypes.shape(Node));\n\nexport var FlattenedNode = _extends({}, BasicNode, {\n  deepness: PropTypes.number.isRequired,\n  parents: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]))\n});"},{"id":4,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\classnames\\index.js","name":"./node_modules/classnames/index.js","index":21,"index2":17,"size":1198,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","issuerId":26,"issuerName":"./src/FilteringContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":23,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","module":"./src/renderers/Deletable.js","moduleName":"./src/renderers/Deletable.js","type":"harmony import","userRequest":"classnames","loc":"4:0-36"},{"moduleId":24,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Expandable.js","module":"./src/renderers/Expandable.js","moduleName":"./src/renderers/Expandable.js","type":"harmony import","userRequest":"classnames","loc":"4:0-36"},{"moduleId":25,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Favorite.js","module":"./src/renderers/Favorite.js","moduleName":"./src/renderers/Favorite.js","type":"harmony import","userRequest":"classnames","loc":"4:0-36"},{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"classnames","loc":"12:0-36"}],"usedExports":["default"],"providedExports":null,"optimizationBailout":[],"depth":3,"source":"/*!\n  Copyright (c) 2017 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n"},{"id":5,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\getFlattenedTree.js","name":"./src/selectors/getFlattenedTree.js","index":11,"index2":6,"size":2098,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","issuerId":13,"issuerName":"./src/TreeContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":1,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","module":"./src/selectors/nodes.js","moduleName":"./src/selectors/nodes.js","type":"harmony import","userRequest":"./getFlattenedTree","loc":"9:0-54"},{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"./selectors/getFlattenedTree","loc":"18:0-64"},{"moduleId":18,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\state\\TreeState.js","module":"./src/state/TreeState.js","moduleName":"./src/state/TreeState.js","type":"harmony import","userRequest":"../selectors/getFlattenedTree","loc":"7:0-70"}],"usedExports":["getFlattenedTree","getFlattenedTreePaths"],"providedExports":["isNodeExpanded","nodeHasChildren","getFlattenedTree","getFlattenedTreePaths","doesChangeAffectFlattenedTree"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexport var isNodeExpanded = function isNodeExpanded(node) {\n  return node.state && node.state.expanded;\n};\nexport var nodeHasChildren = function nodeHasChildren(node) {\n  return node.children && node.children.length;\n};\n\nexport var getFlattenedTree = function getFlattenedTree(nodes) {\n  var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  return nodes.reduce(function (flattenedTree, node) {\n    var deepness = parents.length;\n    var nodeWithHelpers = _extends({}, node, { deepness: deepness, parents: parents });\n\n    if (!nodeHasChildren(node) || !isNodeExpanded(node)) {\n      return [].concat(flattenedTree, [nodeWithHelpers]);\n    }\n\n    return [].concat(flattenedTree, [nodeWithHelpers], getFlattenedTree(node.children, [].concat(parents, [node.id])));\n  }, []);\n};\n\nexport var getFlattenedTreePaths = function getFlattenedTreePaths(nodes) {\n  var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n  var paths = [];\n\n  for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n    var _ref;\n\n    if (_isArray) {\n      if (_i >= _iterator.length) break;\n      _ref = _iterator[_i++];\n    } else {\n      _i = _iterator.next();\n      if (_i.done) break;\n      _ref = _i.value;\n    }\n\n    var node = _ref;\n    var id = node.id;\n\n\n    if (!nodeHasChildren(node) || !isNodeExpanded(node)) {\n      paths.push(parents.concat(id));\n    } else {\n      paths.push(parents.concat(id));\n      paths.push.apply(paths, getFlattenedTreePaths(node.children, [].concat(parents, [id])));\n    }\n  }\n\n  return paths;\n};\n\nexport var doesChangeAffectFlattenedTree = function doesChangeAffectFlattenedTree(previousNode, nextNode) {\n  return isNodeExpanded(previousNode) !== isNodeExpanded(nextNode);\n};"},{"id":6,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\webpack\\buildin\\global.js","name":"(webpack)/buildin/global.js","index":15,"index2":8,"size":509,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.debounce\\index.js","issuerId":27,"issuerName":"./node_modules/lodash.debounce/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":19,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.omit\\index.js","module":"./node_modules/lodash.omit/index.js","moduleName":"./node_modules/lodash.omit/index.js","type":"cjs require","userRequest":"global","loc":"1:0-41"},{"moduleId":20,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.findindex\\index.js","module":"./node_modules/lodash.findindex/index.js","moduleName":"./node_modules/lodash.findindex/index.js","type":"cjs require","userRequest":"global","loc":"1:0-41"},{"moduleId":27,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.debounce\\index.js","module":"./node_modules/lodash.debounce/index.js","moduleName":"./node_modules/lodash.debounce/index.js","type":"cjs require","userRequest":"global","loc":"1:0-41"}],"usedExports":true,"providedExports":null,"optimizationBailout":[],"depth":4,"source":"var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n"},{"id":7,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\contants.js","name":"./src/contants.js","index":18,"index2":12,"size":64,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","issuerId":12,"issuerName":"./src/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":1,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","module":"./src/selectors/nodes.js","moduleName":"./src/selectors/nodes.js","type":"harmony import","userRequest":"../contants","loc":"7:0-42"},{"moduleId":12,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","module":"./src/index.js","moduleName":"./src/index.js","type":"harmony import","userRequest":"./contants","loc":"4:0-40"},{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"./contants","loc":"17:0-41"}],"usedExports":true,"providedExports":["UPDATE_TYPE"],"optimizationBailout":[],"depth":2,"source":"export var UPDATE_TYPE = {\n  ADD: 0,\n  DELETE: 1,\n  UPDATE: 2\n};"},{"id":8,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\eventWrappers.js","name":"./src/eventWrappers.js","index":22,"index2":18,"size":1869,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","issuerId":23,"issuerName":"./src/renderers/Deletable.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":23,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","module":"./src/renderers/Deletable.js","moduleName":"./src/renderers/Deletable.js","type":"harmony import","userRequest":"../eventWrappers","loc":"7:0-47"},{"moduleId":24,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Expandable.js","module":"./src/renderers/Expandable.js","moduleName":"./src/renderers/Expandable.js","type":"harmony import","userRequest":"../eventWrappers","loc":"7:0-47"},{"moduleId":25,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Favorite.js","module":"./src/renderers/Favorite.js","moduleName":"./src/renderers/Favorite.js","type":"harmony import","userRequest":"../eventWrappers","loc":"7:0-47"}],"usedExports":["submitEvent"],"providedExports":["wrapKeyDownEvent","KEY_CODES","submitEvent"],"optimizationBailout":[],"depth":4,"source":"var _wrapKeyDownEvent;\n\nexport var wrapKeyDownEvent = function wrapKeyDownEvent(availablekeys) {\n  return function (handler) {\n    return function (_ref) {\n      for (var _len = arguments.length, params = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        params[_key - 1] = arguments[_key];\n      }\n\n      var keyCode = _ref.keyCode;\n\n      if (keyCode in availablekeys) {\n        handler.apply(undefined, params);\n      }\n    };\n  };\n};\n\nexport var KEY_CODES = {\n  Backspace: 8,\n  Tab: 9,\n  Enter: 13,\n  Shift: 16,\n  Ctrl: 17,\n  Alt: 18,\n  PauseBreak: 19,\n  CapsLock: 20,\n  Escape: 27,\n  PageUp: 33,\n  PageDown: 34,\n  End: 35,\n  Home: 36,\n  LeftArrow: 37,\n  UpArrow: 38,\n  RightArrow: 39,\n  DownArrow: 40,\n  Insert: 45,\n  Delete: 46,\n  0: 48,\n  1: 49,\n  2: 50,\n  3: 51,\n  4: 52,\n  5: 53,\n  6: 54,\n  7: 55,\n  8: 56,\n  9: 57,\n  a: 65,\n  b: 66,\n  c: 67,\n  d: 68,\n  e: 69,\n  f: 70,\n  g: 71,\n  h: 72,\n  i: 73,\n  j: 74,\n  k: 75,\n  l: 76,\n  m: 77,\n  n: 78,\n  o: 79,\n  p: 80,\n  q: 81,\n  r: 82,\n  s: 83,\n  t: 84,\n  u: 85,\n  v: 86,\n  w: 87,\n  x: 88,\n  y: 89,\n  z: 90,\n  LeftWindowKey: 91,\n  RightWindowKey: 92,\n  SelectKey: 93,\n  NumPad0: 96,\n  NumPad1: 97,\n  NumPad2: 98,\n  NumPad3: 99,\n  NumPad4: 100,\n  NumPad5: 101,\n  NumPad6: 102,\n  NumPad7: 103,\n  NumPad8: 104,\n  NumPad9: 105,\n  Multiply: 106,\n  Add: 107,\n  Subtract: 109,\n  DecimalPoint: 110,\n  Divide: 111,\n  F1: 112,\n  F2: 113,\n  F3: 114,\n  F4: 115,\n  F5: 116,\n  F6: 117,\n  F7: 118,\n  F8: 119,\n  F9: 120,\n  F10: 121,\n  F12: 123,\n  NumLock: 144,\n  ScrollLock: 145,\n  SemiColon: 186,\n  EqualSign: 187,\n  Comma: 188,\n  Dash: 189,\n  Period: 190,\n  ForwardSlash: 191,\n  GraveAccent: 192,\n  OpenBracket: 219,\n  BackSlash: 220,\n  CloseBracket: 221,\n  SingleQuote: 222\n};\n\nexport var submitEvent = wrapKeyDownEvent((_wrapKeyDownEvent = {}, _wrapKeyDownEvent[KEY_CODES.Enter] = null, _wrapKeyDownEvent));"},{"id":9,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\shapes\\rendererShapes.js","name":"./src/shapes/rendererShapes.js","index":23,"index2":19,"size":253,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","issuerId":23,"issuerName":"./src/renderers/Deletable.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":23,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","module":"./src/renderers/Deletable.js","moduleName":"./src/renderers/Deletable.js","type":"harmony import","userRequest":"../shapes/rendererShapes","loc":"9:0-52"},{"moduleId":24,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Expandable.js","module":"./src/renderers/Expandable.js","moduleName":"./src/renderers/Expandable.js","type":"harmony import","userRequest":"../shapes/rendererShapes","loc":"9:0-52"},{"moduleId":25,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Favorite.js","module":"./src/renderers/Favorite.js","moduleName":"./src/renderers/Favorite.js","type":"harmony import","userRequest":"../shapes/rendererShapes","loc":"9:0-52"}],"usedExports":false,"providedExports":["Renderer"],"optimizationBailout":[],"depth":4,"source":"import PropTypes from 'prop-types';\n\nimport { FlattenedNode } from './nodeShapes';\n\nexport var Renderer = {\n  measure: PropTypes.func,\n  onChange: PropTypes.func.isRequired,\n  node: PropTypes.shape(FlattenedNode),\n  index: PropTypes.number.isRequired\n};"},{"id":10,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\reselect\\lib\\index.js","name":"./node_modules/reselect/lib/index.js","index":13,"index2":7,"size":4136,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","issuerId":13,"issuerName":"./src/TreeContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":1,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","module":"./src/selectors/nodes.js","moduleName":"./src/selectors/nodes.js","type":"harmony import","userRequest":"reselect","loc":"3:0-42"},{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"reselect","loc":"21:0-42"}],"usedExports":["createSelector"],"providedExports":null,"optimizationBailout":[],"depth":3,"source":"'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n  return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n  if (prev === null || next === null || prev.length !== next.length) {\n    return false;\n  }\n\n  // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n  var length = prev.length;\n  for (var i = 0; i < length; i++) {\n    if (!equalityCheck(prev[i], next[i])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction defaultMemoize(func) {\n  var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n  var lastArgs = null;\n  var lastResult = null;\n  // we reference arguments instead of spreading them for performance reasons\n  return function () {\n    if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n      // apply arguments instead of spreading for performance.\n      lastResult = func.apply(null, arguments);\n    }\n\n    lastArgs = arguments;\n    return lastResult;\n  };\n}\n\nfunction getDependencies(funcs) {\n  var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n  if (!dependencies.every(function (dep) {\n    return typeof dep === 'function';\n  })) {\n    var dependencyTypes = dependencies.map(function (dep) {\n      return typeof dep;\n    }).join(', ');\n    throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n  }\n\n  return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n  for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    memoizeOptions[_key - 1] = arguments[_key];\n  }\n\n  return function () {\n    for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      funcs[_key2] = arguments[_key2];\n    }\n\n    var recomputations = 0;\n    var resultFunc = funcs.pop();\n    var dependencies = getDependencies(funcs);\n\n    var memoizedResultFunc = memoize.apply(undefined, [function () {\n      recomputations++;\n      // apply arguments instead of spreading for performance.\n      return resultFunc.apply(null, arguments);\n    }].concat(memoizeOptions));\n\n    // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n    var selector = defaultMemoize(function () {\n      var params = [];\n      var length = dependencies.length;\n\n      for (var i = 0; i < length; i++) {\n        // apply arguments instead of spreading and mutate a local list of params for performance.\n        params.push(dependencies[i].apply(null, arguments));\n      }\n\n      // apply arguments instead of spreading for performance.\n      return memoizedResultFunc.apply(null, params);\n    });\n\n    selector.resultFunc = resultFunc;\n    selector.recomputations = function () {\n      return recomputations;\n    };\n    selector.resetRecomputations = function () {\n      return recomputations = 0;\n    };\n    return selector;\n  };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n  var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n  if (typeof selectors !== 'object') {\n    throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n  }\n  var objectKeys = Object.keys(selectors);\n  return selectorCreator(objectKeys.map(function (key) {\n    return selectors[key];\n  }), function () {\n    for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      values[_key3] = arguments[_key3];\n    }\n\n    return values.reduce(function (composition, value, index) {\n      composition[objectKeys[index]] = value;\n      return composition;\n    }, {});\n  });\n}"},{"id":11,"identifier":"multi C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","name":"multi ./src/index.js","index":0,"index2":29,"size":28,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":null,"issuerId":null,"issuerName":null,"failed":false,"errors":0,"warnings":0,"reasons":[],"usedExports":true,"providedExports":null,"optimizationBailout":[],"depth":0},{"id":12,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","name":"./src/index.js","index":1,"index2":28,"size":302,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"multi C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","issuerId":11,"issuerName":"multi ./src/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":11,"moduleIdentifier":"multi C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","module":"multi ./src/index.js","moduleName":"multi ./src/index.js","type":"single entry","userRequest":"C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","loc":"main:100000"}],"usedExports":true,"providedExports":["default","selectors","renderers","constants","FilteringContainer"],"optimizationBailout":[],"depth":1,"source":"import Tree from './TreeContainer';\nimport * as selectors from './selectors/nodes';\nimport renderers from './renderers';\nimport * as constants from './contants';\nimport FilteringContainer from './FilteringContainer';\n\nexport default Tree;\nexport { selectors, renderers, constants, FilteringContainer };"},{"id":13,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","name":"./src/TreeContainer.js","index":2,"index2":16,"size":4485,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","issuerId":12,"issuerName":"./src/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":12,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","module":"./src/index.js","moduleName":"./src/index.js","type":"harmony import","userRequest":"./TreeContainer","loc":"1:0-35"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":2,"source":"var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _DEFAULT_UPDATE_TYPES, _class, _temp2;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Tree from './Tree';\nimport { UPDATE_TYPE } from './contants';\nimport { getFlattenedTree } from './selectors/getFlattenedTree';\nimport { deleteNodeFromTree, replaceNodeFromTree, getRowIndexFromId } from './selectors/nodes';\nimport { Node } from './shapes/nodeShapes';\nimport { createSelector } from 'reselect';\n\nvar DEFAULT_UPDATE_TYPES = (_DEFAULT_UPDATE_TYPES = {}, _DEFAULT_UPDATE_TYPES[UPDATE_TYPE.DELETE] = deleteNodeFromTree, _DEFAULT_UPDATE_TYPES[UPDATE_TYPE.UPDATE] = replaceNodeFromTree, _DEFAULT_UPDATE_TYPES);\n\nvar getExtensions = createSelector(function (e) {\n  return e;\n}, function () {\n  var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _extensions$updateTyp = extensions.updateTypeHandlers,\n      updateTypeHandlers = _extensions$updateTyp === undefined ? {} : _extensions$updateTyp;\n\n\n  return {\n    updateTypeHandlers: _extends({}, DEFAULT_UPDATE_TYPES, updateTypeHandlers)\n  };\n});\n\nvar TreeContainer = (_temp2 = _class = function (_React$Component) {\n  _inherits(TreeContainer, _React$Component);\n\n  function TreeContainer() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, TreeContainer);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleChange = function (_ref) {\n      var node = _ref.node,\n          type = _ref.type;\n\n      var updatedNodes = getExtensions(_this.props.extensions).updateTypeHandlers[type](_this.nodes, node);\n\n      _this.props.onChange(updatedNodes);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  TreeContainer.prototype.render = function render() {\n    var flattenedTree = getFlattenedTree(this.props.nodes);\n    var rowIndex = getRowIndexFromId(flattenedTree, this.props.scrollToId);\n    return React.createElement(Tree, {\n      nodeMarginLeft: this.props.nodeMarginLeft,\n      nodes: flattenedTree,\n      onChange: this.handleChange,\n      NodeRenderer: this.props.children,\n      scrollToIndex: rowIndex,\n      scrollToAlignment: this.props.scrollToAlignment,\n      width: this.props.width\n    });\n  };\n\n  _createClass(TreeContainer, [{\n    key: 'nodes',\n    get: function get() {\n      return this.context.unfilteredNodes || this.props.nodes;\n    }\n  }]);\n\n  return TreeContainer;\n}(React.Component), _class.contextTypes = {\n  unfilteredNodes: PropTypes.arrayOf(PropTypes.shape(Node))\n}, _temp2);\nexport { TreeContainer as default };\n\n\nTreeContainer.defaultProps = {\n  nodeMarginLeft: 30\n};"},{"id":14,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\factoryWithThrowingShims.js","name":"./node_modules/prop-types/factoryWithThrowingShims.js","index":5,"index2":2,"size":1621,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\index.js","issuerId":2,"issuerName":"./node_modules/prop-types/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":2,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\index.js","module":"./node_modules/prop-types/index.js","moduleName":"./node_modules/prop-types/index.js","type":"cjs require","userRequest":"./factoryWithThrowingShims","loc":"18:19-56"}],"usedExports":true,"providedExports":null,"optimizationBailout":[],"depth":4,"source":"/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n"},{"id":15,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\lib\\ReactPropTypesSecret.js","name":"./node_modules/prop-types/lib/ReactPropTypesSecret.js","index":6,"index2":1,"size":314,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\factoryWithThrowingShims.js","issuerId":14,"issuerName":"./node_modules/prop-types/factoryWithThrowingShims.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":14,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\prop-types\\factoryWithThrowingShims.js","module":"./node_modules/prop-types/factoryWithThrowingShims.js","moduleName":"./node_modules/prop-types/factoryWithThrowingShims.js","type":"cjs require","userRequest":"./lib/ReactPropTypesSecret","loc":"10:27-64"}],"usedExports":true,"providedExports":null,"optimizationBailout":[],"depth":5,"source":"/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n"},{"id":16,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","name":"./src/Tree.js","index":7,"index2":15,"size":4951,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","issuerId":13,"issuerName":"./src/TreeContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":13,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\TreeContainer.js","module":"./src/TreeContainer.js","moduleName":"./src/TreeContainer.js","type":"harmony import","userRequest":"./Tree","loc":"16:0-26"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\n\nimport { AutoSizer, List, CellMeasurerCache, CellMeasurer } from 'react-virtualized';\n\nimport { FlattenedNode } from './shapes/nodeShapes';\nimport TreeState, { State } from './state/TreeState';\n\nvar Tree = function (_React$Component) {\n  _inherits(Tree, _React$Component);\n\n  function Tree() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Tree);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._cache = new CellMeasurerCache({\n      fixedWidth: true,\n      minHeight: 20\n    }), _this.getRowCount = function () {\n      var nodes = _this.props.nodes;\n\n\n      return nodes instanceof State ? nodes.flattenedTree.length : nodes.length;\n    }, _this.getNodeDeepness = function (node, index) {\n      var nodes = _this.props.nodes;\n\n\n      if (nodes instanceof State) {\n        TreeState.getNodeDeepness(nodes, index);\n      }\n\n      return nodes instanceof State ? TreeState.getNodeDeepness(nodes, index) : node.deepness;\n    }, _this.getNode = function (index) {\n      var nodes = _this.props.nodes;\n\n\n      return nodes instanceof State ? _extends({}, TreeState.getNodeAt(nodes, index), { deepness: _this.getNodeDeepness({}, index) }) : nodes[index];\n    }, _this.rowRenderer = function (_ref) {\n      var node = _ref.node,\n          key = _ref.key,\n          measure = _ref.measure,\n          style = _ref.style,\n          NodeRenderer = _ref.NodeRenderer,\n          index = _ref.index;\n      var nodeMarginLeft = _this.props.nodeMarginLeft;\n\n\n      return React.createElement(NodeRenderer, {\n        key: key,\n        style: _extends({}, style, {\n          marginLeft: node.deepness * nodeMarginLeft,\n          userSelect: 'none',\n          cursor: 'pointer'\n        }),\n        node: node,\n        onChange: _this.props.onChange,\n        measure: measure,\n        index: index\n      });\n    }, _this.measureRowRenderer = function (nodes) {\n      return function (_ref2) {\n        var key = _ref2.key,\n            index = _ref2.index,\n            style = _ref2.style,\n            parent = _ref2.parent;\n        var NodeRenderer = _this.props.NodeRenderer;\n\n        var node = _this.getNode(index);\n\n        return React.createElement(\n          CellMeasurer,\n          { cache: _this._cache, columnIndex: 0, key: key, rowIndex: index, parent: parent },\n          function (m) {\n            return _this.rowRenderer(_extends({}, m, { index: index, node: node, key: key, style: style, NodeRenderer: NodeRenderer }));\n          }\n        );\n      };\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Tree.prototype.render = function render() {\n    var _this2 = this;\n\n    var _props = this.props,\n        nodes = _props.nodes,\n        width = _props.width,\n        scrollToIndex = _props.scrollToIndex,\n        scrollToAlignment = _props.scrollToAlignment;\n\n\n    return React.createElement(\n      AutoSizer,\n      { disableWidth: Boolean(width) },\n      function (_ref3) {\n        var height = _ref3.height,\n            autoWidth = _ref3.width;\n        return React.createElement(List, {\n          deferredMeasurementCache: _this2._cache,\n          ref: function ref(r) {\n            return _this2._list = r;\n          },\n          height: height,\n          rowCount: _this2.getRowCount(),\n          rowHeight: _this2._cache.rowHeight,\n          rowRenderer: _this2.measureRowRenderer(nodes),\n          width: width || autoWidth,\n          scrollToIndex: scrollToIndex,\n          scrollToAlignment: scrollToAlignment\n        });\n      }\n    );\n  };\n\n  return Tree;\n}(React.Component);\n\nexport { Tree as default };"},{"id":17,"identifier":"external {\"root\":\"ReactVirtualized\",\"commonjs2\":\"react-virtualized\",\"commonjs\":\"react-virtualized\",\"amd\":\"react-virtualized\"}","name":"external {\"root\":\"ReactVirtualized\",\"commonjs2\":\"react-virtualized\",\"commonjs\":\"react-virtualized\",\"amd\":\"react-virtualized\"}","index":8,"index2":4,"size":42,"cacheable":false,"built":false,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","issuerId":16,"issuerName":"./src/Tree.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":16,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","module":"./src/Tree.js","moduleName":"./src/Tree.js","type":"harmony import","userRequest":"react-virtualized","loc":"11:0-85"}],"usedExports":["AutoSizer","CellMeasurer","CellMeasurerCache","List"],"providedExports":null,"optimizationBailout":[],"depth":4},{"id":18,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\state\\TreeState.js","name":"./src/state/TreeState.js","index":10,"index2":14,"size":2657,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","issuerId":16,"issuerName":"./src/Tree.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":16,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\Tree.js","module":"./src/Tree.js","moduleName":"./src/Tree.js","type":"harmony import","userRequest":"./state/TreeState","loc":"14:0-53"}],"usedExports":["State","default"],"providedExports":["State","validateState","default"],"optimizationBailout":[],"depth":4,"source":"var _class2, _temp;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { getFlattenedTreePaths } from '../selectors/getFlattenedTree';\nimport { getNodeFromPath } from '../selectors/nodes';\n\nexport var State = function State(tree, flattenedTree) {\n  _classCallCheck(this, State);\n\n  this.flattenedTree = null;\n  this.tree = null;\n\n  this.tree = tree;\n  this.flattenedTree = flattenedTree || getFlattenedTreePaths(tree);\n};\n\nexport var validateState = function validateState(state) {\n  if (!(state instanceof State)) {\n    throw new Error('Expected a State instance but got ' + (typeof state === 'undefined' ? 'undefined' : _typeof(state)));\n  }\n};\n\n/**\n * Immutable structure that represents the TreeState.\n */\nvar TreeState = (_temp = _class2 = function TreeState() {\n  _classCallCheck(this, TreeState);\n}, _class2.getNodeAt = function (state, index) {\n  validateState(state);\n\n  var rowPath = state.flattenedTree[index];\n\n  if (!rowPath) {\n    throw Error('Tried to get node at row \"' + index + '\" but got nothing, the tree are ' + state.flattenedTree.length + ' visible rows');\n  }\n\n  return getNodeFromPath(rowPath, state.tree);\n}, _class2.getNodeDeepness = function (state, index) {\n  validateState(state);\n\n  var rowPath = state.flattenedTree[index];\n\n  if (!rowPath) {\n    throw Error('Tried to get node at row \"' + index + '\" but got nothing, the tree are ' + state.flattenedTree.length + ' visible rows');\n  }\n\n  return rowPath.length - 1;\n}, _class2.getNumberOfVisibleDescendants = function (state, index) {\n  var _TreeState$getNodeAt = TreeState.getNodeAt(state, index),\n      id = _TreeState$getNodeAt.id;\n\n  var flattenedTree = state.flattenedTree;\n\n  var i = void 0;\n\n  for (i = index; i < flattenedTree.length; i++) {\n    var path = flattenedTree[i];\n\n    if (!path.some(function (p) {\n      return p === id;\n    })) {\n      break;\n    }\n  }\n\n  return Math.max(i - 1 - index, 0);\n}, _class2.getTree = function (state) {\n  validateState(state);\n\n  return state.tree;\n}, _class2.createFromTree = function (tree) {\n  if (!tree) {\n    throw Error('A falsy tree was supplied in tree creation');\n  }\n\n  if (!Array.isArray(tree)) {\n    throw Error('An invalid tree was supplied in creation');\n  }\n\n  return new State(tree);\n}, _temp);\nexport { TreeState as default };"},{"id":19,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.omit\\index.js","name":"./node_modules/lodash.omit/index.js","index":14,"index2":9,"size":37758,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","issuerId":1,"issuerName":"./src/selectors/nodes.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":1,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","module":"./src/selectors/nodes.js","moduleName":"./src/selectors/nodes.js","type":"harmony import","userRequest":"lodash.omit","loc":"4:0-31"}],"usedExports":["default"],"providedExports":null,"optimizationBailout":[],"depth":3,"source":"/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array ? array.length : 0;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  if (value !== value) {\n    return baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n  object = Object(object);\n  return basePickBy(object, props, function(value, key) {\n    return key in object;\n  });\n}\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick from.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, props, predicate) {\n  var index = -1,\n      length = props.length,\n      result = {};\n\n  while (++index < length) {\n    var key = props[index],\n        value = object[key];\n\n    if (predicate(value, key)) {\n      result[key] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Creates an array of the own and inherited enumerable symbol properties\n * of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable string keyed properties of `object` that are\n * not omitted.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property identifiers to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = baseRest(function(object, props) {\n  if (object == null) {\n    return {};\n  }\n  props = arrayMap(baseFlatten(props, 1), toKey);\n  return basePick(object, baseDifference(getAllKeysIn(object), props));\n});\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = omit;\n"},{"id":20,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.findindex\\index.js","name":"./node_modules/lodash.findindex/index.js","index":16,"index2":11,"size":63884,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","issuerId":1,"issuerName":"./src/selectors/nodes.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":1,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\nodes.js","module":"./src/selectors/nodes.js","moduleName":"./src/selectors/nodes.js","type":"harmony import","userRequest":"lodash.findindex","loc":"5:0-41"}],"usedExports":["default"],"providedExports":null,"optimizationBailout":[],"depth":3,"source":"/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n    PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\n    rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n    nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var cache = this.__data__;\n  if (cache instanceof ListCache) {\n    var pairs = cache.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      return this;\n    }\n    cache = this.__data__ = new MapCache(pairs);\n  }\n  cache.set(key, value);\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n *  The bitmask may be composed of the following flags:\n *     1 - Unordered comparison\n *     2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = arrayTag,\n      othTag = arrayTag;\n\n  if (!objIsArr) {\n    objTag = getTag(object);\n    objTag = objTag == argsTag ? objectTag : objTag;\n  }\n  if (!othIsArr) {\n    othTag = getTag(other);\n    othTag = othTag == argsTag ? objectTag : othTag;\n  }\n  var objIsObj = objTag == objectTag && !isHostObject(object),\n      othIsObj = othTag == objectTag && !isHostObject(other),\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n  }\n  if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n  };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!seen.has(othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n              return seen.add(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, customizer, bitmask, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= UNORDERED_COMPARE_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      objProps = keys(object),\n      objLength = objProps.length,\n      othProps = keys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = objectToString.call(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : undefined;\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var result,\n      index = -1,\n      length = path.length;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result) {\n    return result;\n  }\n  var length = object ? object.length : 0;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity]\n *  The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n  var length = array ? array.length : 0;\n  if (!length) {\n    return -1;\n  }\n  var index = fromIndex == null ? 0 : toInteger(fromIndex);\n  if (index < 0) {\n    index = nativeMax(length + index, 0);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = findIndex;\n"},{"id":21,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\webpack\\buildin\\module.js","name":"(webpack)/buildin/module.js","index":17,"index2":10,"size":517,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.findindex\\index.js","issuerId":20,"issuerName":"./node_modules/lodash.findindex/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":20,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.findindex\\index.js","module":"./node_modules/lodash.findindex/index.js","moduleName":"./node_modules/lodash.findindex/index.js","type":"cjs require","userRequest":"module","loc":"1:0-41"}],"usedExports":true,"providedExports":null,"optimizationBailout":[],"depth":4,"source":"module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n"},{"id":22,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","name":"./src/renderers/index.js","index":19,"index2":23,"size":196,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","issuerId":12,"issuerName":"./src/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":12,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","module":"./src/index.js","moduleName":"./src/index.js","type":"harmony import","userRequest":"./renderers","loc":"3:0-36"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":2,"source":"import Deletable from './Deletable';\nimport Expandable from './Expandable';\nimport Favorite from './Favorite';\n\nexport default { Deletable: Deletable, Expandable: Expandable, Favorite: Favorite };"},{"id":23,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Deletable.js","name":"./src/renderers/Deletable.js","index":20,"index2":20,"size":1451,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","issuerId":22,"issuerName":"./src/renderers/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":22,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","module":"./src/renderers/index.js","moduleName":"./src/renderers/index.js","type":"harmony import","userRequest":"./Deletable","loc":"1:0-36"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport classNames from 'classnames';\n\n\nimport { submitEvent } from '../eventWrappers';\nimport { getNodeRenderOptions, deleteNode } from '../selectors/nodes';\nimport { Renderer } from '../shapes/rendererShapes';\n\nvar Deletable = function Deletable(_ref) {\n  var _classNames;\n\n  var onChange = _ref.onChange,\n      node = _ref.node,\n      _ref$iconsClassNameMa = _ref.iconsClassNameMap,\n      iconsClassNameMap = _ref$iconsClassNameMa === undefined ? {\n    delete: 'mi mi-delete'\n  } : _ref$iconsClassNameMa,\n      children = _ref.children,\n      index = _ref.index;\n\n  var _getNodeRenderOptions = getNodeRenderOptions(node),\n      isDeletable = _getNodeRenderOptions.isDeletable;\n\n  var className = classNames((_classNames = {}, _classNames[iconsClassNameMap.delete] = isDeletable, _classNames));\n\n  var handleChange = function handleChange() {\n    return onChange(_extends({}, deleteNode(node), { index: index }));\n  };\n\n  return React.createElement(\n    'span',\n    null,\n    isDeletable && React.createElement('i', { tabIndex: 0, onKeyDown: submitEvent(handleChange), onClick: handleChange, className: className }),\n    children\n  );\n};\n\nexport default Deletable;"},{"id":24,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Expandable.js","name":"./src/renderers/Expandable.js","index":24,"index2":21,"size":1784,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","issuerId":22,"issuerName":"./src/renderers/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":22,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","module":"./src/renderers/index.js","moduleName":"./src/renderers/index.js","type":"harmony import","userRequest":"./Expandable","loc":"2:0-38"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport classNames from 'classnames';\n\n\nimport { submitEvent } from '../eventWrappers';\nimport { getNodeRenderOptions, updateNode } from '../selectors/nodes';\nimport { Renderer } from '../shapes/rendererShapes';\n\nvar Expandable = function Expandable(_ref) {\n  var _classNames;\n\n  var onChange = _ref.onChange,\n      node = _ref.node,\n      children = _ref.children,\n      index = _ref.index,\n      _ref$iconsClassNameMa = _ref.iconsClassNameMap,\n      iconsClassNameMap = _ref$iconsClassNameMa === undefined ? {\n    expanded: 'mi mi-keyboard-arrow-down',\n    collapsed: 'mi mi-keyboard-arrow-right',\n    lastChild: ''\n  } : _ref$iconsClassNameMa;\n\n  var _getNodeRenderOptions = getNodeRenderOptions(node),\n      hasChildren = _getNodeRenderOptions.hasChildren,\n      isExpanded = _getNodeRenderOptions.isExpanded;\n\n  var className = classNames((_classNames = {}, _classNames[iconsClassNameMap.expanded] = hasChildren && isExpanded, _classNames[iconsClassNameMap.collapsed] = hasChildren && !isExpanded, _classNames[iconsClassNameMap.lastChild] = !hasChildren, _classNames));\n\n  var handleChange = function handleChange() {\n    return onChange(_extends({}, updateNode(node, { expanded: !isExpanded }), { index: index }));\n  };\n\n  return React.createElement(\n    'span',\n    { onDoubleClick: handleChange },\n    hasChildren && React.createElement('i', { tabIndex: 0, onKeyDown: submitEvent(handleChange), onClick: handleChange, className: className }),\n    children\n  );\n};\n\nexport default Expandable;"},{"id":25,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\Favorite.js","name":"./src/renderers/Favorite.js","index":25,"index2":22,"size":1555,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","issuerId":22,"issuerName":"./src/renderers/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":22,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\renderers\\index.js","module":"./src/renderers/index.js","moduleName":"./src/renderers/index.js","type":"harmony import","userRequest":"./Favorite","loc":"3:0-34"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport classNames from 'classnames';\n\n\nimport { submitEvent } from '../eventWrappers';\nimport { getNodeRenderOptions, updateNode } from '../selectors/nodes';\nimport { Renderer } from '../shapes/rendererShapes';\n\nvar Favorite = function Favorite(_ref) {\n  var _classNames;\n\n  var onChange = _ref.onChange,\n      node = _ref.node,\n      _ref$iconsClassNameMa = _ref.iconsClassNameMap,\n      iconsClassNameMap = _ref$iconsClassNameMa === undefined ? {\n    favorite: 'mi mi-star',\n    notFavorite: 'mi mi-star-border'\n  } : _ref$iconsClassNameMa,\n      children = _ref.children,\n      index = _ref.index;\n\n  var _getNodeRenderOptions = getNodeRenderOptions(node),\n      isFavorite = _getNodeRenderOptions.isFavorite;\n\n  var className = classNames((_classNames = {}, _classNames[iconsClassNameMap.favorite] = isFavorite, _classNames[iconsClassNameMap.notFavorite] = !isFavorite, _classNames));\n\n  var handleChange = function handleChange() {\n    return onChange(_extends({}, updateNode(node, { favorite: !isFavorite }), { index: index }));\n  };\n\n  return React.createElement(\n    'span',\n    null,\n    React.createElement('i', { tabIndex: 0, onKeyDown: submitEvent(handleChange), onClick: handleChange, className: className }),\n    children\n  );\n};\n\nexport default Favorite;"},{"id":26,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","name":"./src/FilteringContainer.js","index":26,"index2":27,"size":4359,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","issuerId":12,"issuerName":"./src/index.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":12,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\index.js","module":"./src/index.js","moduleName":"./src/index.js","type":"harmony import","userRequest":"./FilteringContainer","loc":"5:0-54"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":2,"source":"var _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport classNames from 'classnames';\n\nimport DefaultGroupRenderer from './filtering/DefaultGroupRenderer';\nimport { Node } from './shapes/nodeShapes';\nimport { filterNodes } from './selectors/filtering';\n\nvar indexByName = function indexByName(searchTerm) {\n  return function (_ref) {\n    var name = _ref.name;\n\n    var upperCaseName = name.toUpperCase();\n    var upperCaseSearchTerm = searchTerm.toUpperCase();\n\n    return upperCaseName.indexOf(upperCaseSearchTerm.trim()) > -1;\n  };\n};\n\nvar FilteringContainer = (_temp = _class = function (_React$Component) {\n  _inherits(FilteringContainer, _React$Component);\n\n  function FilteringContainer(props) {\n    _classCallCheck(this, FilteringContainer);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));\n\n    _this.state = {\n      filterText: '',\n      filterTerm: ''\n    };\n\n    _this.getChildContext = function () {\n      return { unfilteredNodes: _this.props.nodes };\n    };\n\n    _this.handleFilterTextChange = function (e) {\n      var filterText = e.target.value;\n\n      _this.setState({ filterText: filterText });\n\n      _this.setFilterTerm();\n    };\n\n    _this.setFilterTerm = props.debouncer(_this.setFilterTerm, 300);\n    return _this;\n  }\n\n  FilteringContainer.prototype.setFilterTerm = function setFilterTerm() {\n    this.setState(function (ps) {\n      return { filterTerm: ps.filterText };\n    });\n  };\n\n  FilteringContainer.prototype.render = function render() {\n    var _state = this.state,\n        filterTerm = _state.filterTerm,\n        filterText = _state.filterText;\n    var _props = this.props,\n        nodes = _props.nodes,\n        treeRenderer = _props.children,\n        groups = _props.groups,\n        selectedGroup = _props.selectedGroup,\n        GroupRenderer = _props.groupRenderer,\n        onSelectedGroupChange = _props.onSelectedGroupChange,\n        indexSearch = _props.indexSearch,\n        placeholder = _props.placeholder;\n\n\n    var relevantNodes = groups && selectedGroup && groups[selectedGroup] ? filterNodes(groups[selectedGroup].filter, nodes) : { nodes: nodes, nodeParentMappings: {} };\n\n    var _ref2 = filterTerm ? filterNodes(indexSearch(filterTerm, relevantNodes.nodes), relevantNodes.nodes) : relevantNodes,\n        filteredNodes = _ref2.nodes,\n        nodeParentMappings = _ref2.nodeParentMappings;\n\n    return React.createElement(\n      'div',\n      { className: 'tree-filter-container' },\n      React.createElement(\n        'div',\n        { className: classNames('tree-lookup-input', { group: !!groups }) },\n        React.createElement('input', { value: filterText, onChange: this.handleFilterTextChange, placeholder: placeholder }),\n        React.createElement('i', { 'aria-hidden': 'true', className: 'mi mi-11 mi-search' }),\n        groups && React.createElement(GroupRenderer, { groups: groups, selectedGroup: selectedGroup, onChange: onSelectedGroupChange })\n      ),\n      treeRenderer({ nodes: filteredNodes, nodeParentMappings: nodeParentMappings })\n    );\n  };\n\n  return FilteringContainer;\n}(React.Component), _class.childContextTypes = {\n  unfilteredNodes: PropTypes.arrayOf(PropTypes.shape(Node)).isRequired\n}, _class.defaultProps = {\n  debouncer: debounce,\n  groupRenderer: DefaultGroupRenderer,\n  indexSearch: indexByName,\n  placeholder: 'Search...'\n}, _temp);\nexport { FilteringContainer as default };"},{"id":27,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\lodash.debounce\\index.js","name":"./node_modules/lodash.debounce/index.js","index":27,"index2":24,"size":10784,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","issuerId":26,"issuerName":"./src/FilteringContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"lodash.debounce","loc":"11:0-39"}],"usedExports":["default"],"providedExports":null,"optimizationBailout":[],"depth":3,"source":"/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n"},{"id":28,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\filtering\\DefaultGroupRenderer.js","name":"./src/filtering/DefaultGroupRenderer.js","index":28,"index2":25,"size":640,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","issuerId":26,"issuerName":"./src/FilteringContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"./filtering/DefaultGroupRenderer","loc":"14:0-68"}],"usedExports":["default"],"providedExports":["default"],"optimizationBailout":[],"depth":3,"source":"import React from 'react';\n\nvar DefaultGroupRenderer = function DefaultGroupRenderer(_ref) {\n  var _onChange = _ref.onChange,\n      groups = _ref.groups,\n      selectedGroup = _ref.selectedGroup;\n\n  return React.createElement(\n    \"select\",\n    {\n      className: \"tree-group\",\n      onChange: function onChange(_ref2) {\n        var value = _ref2.target.value;\n\n        _onChange(value);\n      },\n      value: selectedGroup\n    },\n    Object.keys(groups).map(function (g) {\n      return React.createElement(\n        \"option\",\n        { key: g, value: g },\n        groups[g].name\n      );\n    })\n  );\n};\n\nexport default DefaultGroupRenderer;"},{"id":29,"identifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\selectors\\filtering.js","name":"./src/selectors/filtering.js","index":29,"index2":26,"size":1112,"cacheable":true,"built":true,"optional":false,"prefetched":false,"chunks":[0],"assets":[],"issuer":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","issuerId":26,"issuerName":"./src/FilteringContainer.js","failed":false,"errors":0,"warnings":0,"reasons":[{"moduleId":26,"moduleIdentifier":"C:\\Users\\JoshHunt\\react-virtualized-tree\\node_modules\\babel-loader\\lib\\index.js??ref--0!C:\\Users\\JoshHunt\\react-virtualized-tree\\src\\FilteringContainer.js","module":"./src/FilteringContainer.js","moduleName":"./src/FilteringContainer.js","type":"harmony import","userRequest":"./selectors/filtering","loc":"16:0-52"}],"usedExports":["filterNodes"],"providedExports":["filterNodes"],"optimizationBailout":[],"depth":3,"source":"var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar INITIAL_FILTERED_VALUE = { nodes: [], nodeParentMappings: {} };\n\nexport var filterNodes = function filterNodes(filter, nodes) {\n  var parents = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n  return nodes.reduce(function (filtered, n) {\n    var _extends2;\n\n    var _ref = n.children ? filterNodes(filter, n.children, [].concat(parents, [n.id])) : INITIAL_FILTERED_VALUE,\n        filteredChildren = _ref.nodes,\n        childrenNodeMappings = _ref.nodeParentMappings;\n\n    return !(filter(n) || filteredChildren.length) ? filtered : {\n      nodes: [].concat(filtered.nodes, [_extends({}, n, {\n        children: filteredChildren\n      })]),\n      nodeParentMappings: _extends({}, filtered.nodeParentMappings, childrenNodeMappings, (_extends2 = {}, _extends2[n.id] = parents, _extends2))\n    };\n  }, INITIAL_FILTERED_VALUE);\n};"}],"filteredModules":0,"children":[]}