{"ScriptPreparationCode":"/**\r\n * lodash (Custom Build) \u003Chttps://lodash.com/\u003E\r\n * Build: \u0060lodash modularize exports=\u0022npm\u0022 -o ./\u0060\r\n * Copyright jQuery Foundation and other contributors \u003Chttps://jquery.org/\u003E\r\n * Released under MIT license \u003Chttps://lodash.com/license\u003E\r\n * Based on Underscore.js 1.8.3 \u003Chttp://underscorejs.org/LICENSE\u003E\r\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters \u0026 Editors\r\n */\r\n\r\n/** Used as references for various \u0060Number\u0060 constants. */\r\nvar INFINITY = 1 / 0,\r\n MAX_SAFE_INTEGER = 9007199254740991;\r\n\r\n/** \u0060Object#toString\u0060 result references. */\r\nvar argsTag = \u0027[object Arguments]\u0027,\r\n funcTag = \u0027[object Function]\u0027,\r\n genTag = \u0027[object GeneratorFunction]\u0027,\r\n symbolTag = \u0027[object Symbol]\u0027;\r\n\r\n/** Detect free variable \u0060global\u0060 from Node.js. */\r\nvar freeGlobal = typeof global == \u0027object\u0027 \u0026\u0026 global \u0026\u0026 global.Object === Object \u0026\u0026 global;\r\n\r\n/** Detect free variable \u0060self\u0060. */\r\nvar freeSelf = typeof self == \u0027object\u0027 \u0026\u0026 self \u0026\u0026 self.Object === Object \u0026\u0026 self;\r\n\r\n/** Used as a reference to the global object. */\r\nvar root = freeGlobal || freeSelf || Function(\u0027return this\u0027)();\r\n\r\n/**\r\n * A faster alternative to \u0060Function#apply\u0060, this function invokes \u0060func\u0060\r\n * with the \u0060this\u0060 binding of \u0060thisArg\u0060 and the arguments of \u0060args\u0060.\r\n *\r\n * @private\r\n * @param {Function} func The function to invoke.\r\n * @param {*} thisArg The \u0060this\u0060 binding of \u0060func\u0060.\r\n * @param {Array} args The arguments to invoke \u0060func\u0060 with.\r\n * @returns {*} Returns the result of \u0060func\u0060.\r\n */\r\nfunction apply(func, thisArg, args) {\r\n switch (args.length) {\r\n case 0:\r\n return func.call(thisArg);\r\n case 1:\r\n return func.call(thisArg, args[0]);\r\n case 2:\r\n return func.call(thisArg, args[0], args[1]);\r\n case 3:\r\n return func.call(thisArg, args[0], args[1], args[2]);\r\n }\r\n return func.apply(thisArg, args);\r\n}\r\n\r\n/**\r\n * A specialized version of \u0060_.map\u0060 for arrays without support for iteratee\r\n * shorthands.\r\n *\r\n * @private\r\n * @param {Array} [array] The array to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @returns {Array} Returns the new mapped array.\r\n */\r\nfunction arrayMap(array, iteratee) {\r\n var index = -1,\r\n length = array ? array.length : 0,\r\n result = Array(length);\r\n\r\n while (\u002B\u002Bindex \u003C length) {\r\n result[index] = iteratee(array[index], index, array);\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * Appends the elements of \u0060values\u0060 to \u0060array\u0060.\r\n *\r\n * @private\r\n * @param {Array} array The array to modify.\r\n * @param {Array} values The values to append.\r\n * @returns {Array} Returns \u0060array\u0060.\r\n */\r\nfunction arrayPush(array, values) {\r\n var index = -1,\r\n length = values.length,\r\n offset = array.length;\r\n\r\n while (\u002B\u002Bindex \u003C length) {\r\n array[offset \u002B index] = values[index];\r\n }\r\n return array;\r\n}\r\n\r\n/** Used for built-in method references. */\r\nvar objectProto = Object.prototype;\r\n\r\n/** Used to check objects for own properties. */\r\nvar hasOwnProperty = objectProto.hasOwnProperty;\r\n\r\n/**\r\n * Used to resolve the\r\n * [\u0060toStringTag\u0060](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\r\n * of values.\r\n */\r\nvar objectToString = objectProto.toString;\r\n\r\n/** Built-in value references. */\r\nvar Symbol = root.Symbol,\r\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\r\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\r\n\r\n/* Built-in method references for those with the same name as other \u0060lodash\u0060 methods. */\r\nvar nativeMax = Math.max;\r\n\r\n/**\r\n * The base implementation of \u0060_.flatten\u0060 with support for restricting flattening.\r\n *\r\n * @private\r\n * @param {Array} array The array to flatten.\r\n * @param {number} depth The maximum recursion depth.\r\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\r\n * @param {boolean} [isStrict] Restrict to values that pass \u0060predicate\u0060 checks.\r\n * @param {Array} [result=[]] The initial result value.\r\n * @returns {Array} Returns the new flattened array.\r\n */\r\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\r\n var index = -1,\r\n length = array.length;\r\n\r\n predicate || (predicate = isFlattenable);\r\n result || (result = []);\r\n\r\n while (\u002B\u002Bindex \u003C length) {\r\n var value = array[index];\r\n if (depth \u003E 0 \u0026\u0026 predicate(value)) {\r\n if (depth \u003E 1) {\r\n // Recursively flatten arrays (susceptible to call stack limits).\r\n baseFlatten(value, depth - 1, predicate, isStrict, result);\r\n } else {\r\n arrayPush(result, value);\r\n }\r\n } else if (!isStrict) {\r\n result[result.length] = value;\r\n }\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * The base implementation of \u0060_.pick\u0060 without support for individual\r\n * property identifiers.\r\n *\r\n * @private\r\n * @param {Object} object The source object.\r\n * @param {string[]} props The property identifiers to pick.\r\n * @returns {Object} Returns the new object.\r\n */\r\nfunction basePick(object, props) {\r\n object = Object(object);\r\n return basePickBy(object, props, function(value, key) {\r\n return key in object;\r\n });\r\n}\r\n\r\n/**\r\n * The base implementation of \u0060_.pickBy\u0060 without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Object} object The source object.\r\n * @param {string[]} props The property identifiers to pick from.\r\n * @param {Function} predicate The function invoked per property.\r\n * @returns {Object} Returns the new object.\r\n */\r\nfunction basePickBy(object, props, predicate) {\r\n var index = -1,\r\n length = props.length,\r\n result = {};\r\n\r\n while (\u002B\u002Bindex \u003C length) {\r\n var key = props[index],\r\n value = object[key];\r\n\r\n if (predicate(value, key)) {\r\n result[key] = value;\r\n }\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * The base implementation of \u0060_.rest\u0060 which doesn\u0027t validate or coerce arguments.\r\n *\r\n * @private\r\n * @param {Function} func The function to apply a rest parameter to.\r\n * @param {number} [start=func.length-1] The start position of the rest parameter.\r\n * @returns {Function} Returns the new function.\r\n */\r\nfunction baseRest(func, start) {\r\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\r\n return function() {\r\n var args = arguments,\r\n index = -1,\r\n length = nativeMax(args.length - start, 0),\r\n array = Array(length);\r\n\r\n while (\u002B\u002Bindex \u003C length) {\r\n array[index] = args[start \u002B index];\r\n }\r\n index = -1;\r\n var otherArgs = Array(start \u002B 1);\r\n while (\u002B\u002Bindex \u003C start) {\r\n otherArgs[index] = args[index];\r\n }\r\n otherArgs[start] = array;\r\n return apply(func, this, otherArgs);\r\n };\r\n}\r\n\r\n/**\r\n * Checks if \u0060value\u0060 is a flattenable \u0060arguments\u0060 object or array.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns \u0060true\u0060 if \u0060value\u0060 is flattenable, else \u0060false\u0060.\r\n */\r\nfunction isFlattenable(value) {\r\n return isArray(value) || isArguments(value) ||\r\n !!(spreadableSymbol \u0026\u0026 value \u0026\u0026 value[spreadableSymbol]);\r\n}\r\n\r\n/**\r\n * Converts \u0060value\u0060 to a string key if it\u0027s not a string or symbol.\r\n *\r\n * @private\r\n * @param {*} value The value to inspect.\r\n * @returns {string|symbol} Returns the key.\r\n */\r\nfunction toKey(value) {\r\n if (typeof value == \u0027string\u0027 || isSymbol(value)) {\r\n return value;\r\n }\r\n var result = (value \u002B \u0027\u0027);\r\n return (result == \u00270\u0027 \u0026\u0026 (1 / value) == -INFINITY) ? \u0027-0\u0027 : result;\r\n}\r\n\r\n/**\r\n * Checks if \u0060value\u0060 is likely an \u0060arguments\u0060 object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns \u0060true\u0060 if \u0060value\u0060 is an \u0060arguments\u0060 object,\r\n * else \u0060false\u0060.\r\n * @example\r\n *\r\n * _.isArguments(function() { return arguments; }());\r\n * // =\u003E true\r\n *\r\n * _.isArguments([1, 2, 3]);\r\n * // =\u003E false\r\n */\r\nfunction isArguments(value) {\r\n // Safari 8.1 makes \u0060arguments.callee\u0060 enumerable in strict mode.\r\n return isArrayLikeObject(value) \u0026\u0026 hasOwnProperty.call(value, \u0027callee\u0027) \u0026\u0026\r\n (!propertyIsEnumerable.call(value, \u0027callee\u0027) || objectToString.call(value) == argsTag);\r\n}\r\n\r\n/**\r\n * Checks if \u0060value\u0060 is classified as an \u0060Array\u0060 object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns \u0060true\u0060 if \u0060value\u0060 is an array, else \u0060false\u0060.\r\n * @example\r\n *\r\n * _.isArray([1, 2, 3]);\r\n * // =\u003E true\r\n *\r\n * _.isArray(document.body.children);\r\n * // =\u003E false\r\n *\r\n * _.isArray(\u0027abc\u0027);\r\n * // =\u003E false\r\n *\r\n * _.isArray(_.noop);\r\n * // =\u003E false\r\n */\r\nvar isArray = Array.isArray;\r\n\r\n/**\r\n * Checks if \u0060value\u0060 is array-like. A value is considered array-like if it\u0027s\r\n * not a function and has a \u0060value.length\u0060 that\u0027s an integer greater than or\r\n * equal to \u00600\u0060 and less than or equal to \u0060Number.MAX_SAFE_INTEGER\u0060.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns \u0060true\u0060 if \u0060value\u0060 is array-like, else \u0060false\u0060.\r\n * @example\r\n *\r\n * _.isArrayLike([1, 2, 3]);\r\n * // =\u003E true\r\n *\r\n * _.isArrayLike(document.body.children);\r\n * // =\u003E true\r\n *\r\n * _.isArrayLike(\u0027abc\u0027);\r\n * // =\u003E true\r\n *\r\n * _.isArrayLike(_.noop);\r\n * // =\u003E false\r\n */\r\nfunction isArrayLike(value) {\r\n return value != null \u0026\u0026 isLength(value.length) \u0026\u0026 !isFunction(value);\r\n}\r\n\r\n/**\r\n * This method is like \u0060_.isArrayLike\u0060 except that it also checks if \u0060value\u0060\r\n * is an object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns \u0060true\u0060 if \u0060value\u0060 is an array-like object,\r\n * else \u0060false\u0060.\r\n * @example\r\n *\r\n * _.isArrayLikeObject([1, 2, 3]);\r\n * // =\u003E true\r\n *\r\n * _.isArrayLikeObject(document.body.children);\r\n * // =\u003E true\r\n *\r\n * _.isArrayLikeObject(\u0027abc\u0027);\r\n * // =\u003E false\r\n *\r\n * _.isArrayLikeObject(_.noop);\r\n * // =\u003E false\r\n */\r\nfunction isArrayLikeObject(value) {\r\n return isObjectLike(value) \u0026\u0026 isArrayLike(value);\r\n}\r\n\r\n/**\r\n * Checks if \u0060value\u0060 is classified as a \u0060Function\u0060 object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns \u0060true\u0060 if \u0060value\u0060 is a function, else \u0060false\u0060.\r\n * @example\r\n *\r\n * _.isFunction(_);\r\n * // =\u003E true\r\n *\r\n * _.isFunction(/abc/);\r\n * // =\u003E false\r\n */\r\nfunction isFunction(value) {\r\n // The use of \u0060Object#toString\u0060 avoids issues with the \u0060typeof\u0060 operator\r\n // in Safari 8-9 which returns \u0027object\u0027 for typed array and other constructors.\r\n var tag = isObject(value) ? objectToString.call(value) : \u0027\u0027;\r\n return tag == funcTag || tag == genTag;\r\n}\r\n\r\n/**\r\n * Checks if \u0060value\u0060 is a valid array-like length.\r\n *\r\n * **Note:** This method is loosely based on\r\n * [\u0060ToLength\u0060](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns \u0060true\u0060 if \u0060value\u0060 is a valid length, else \u0060false\u0060.\r\n * @example\r\n *\r\n * _.isLength(3);\r\n * // =\u003E true\r\n *\r\n * _.isLength(Number.MIN_VALUE);\r\n * // =\u003E false\r\n *\r\n * _.isLength(Infinity);\r\n * // =\u003E false\r\n *\r\n * _.isLength(\u00273\u0027);\r\n * // =\u003E false\r\n */\r\nfunction isLength(value) {\r\n return typeof value == \u0027number\u0027 \u0026\u0026\r\n value \u003E -1 \u0026\u0026 value % 1 == 0 \u0026\u0026 value \u003C= MAX_SAFE_INTEGER;\r\n}\r\n\r\n/**\r\n * Checks if \u0060value\u0060 is the\r\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\r\n * of \u0060Object\u0060. (e.g. arrays, functions, objects, regexes, \u0060new Number(0)\u0060, and \u0060new String(\u0027\u0027)\u0060)\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns \u0060true\u0060 if \u0060value\u0060 is an object, else \u0060false\u0060.\r\n * @example\r\n *\r\n * _.isObject({});\r\n * // =\u003E true\r\n *\r\n * _.isObject([1, 2, 3]);\r\n * // =\u003E true\r\n *\r\n * _.isObject(_.noop);\r\n * // =\u003E true\r\n *\r\n * _.isObject(null);\r\n * // =\u003E false\r\n */\r\nfunction isObject(value) {\r\n var type = typeof value;\r\n return !!value \u0026\u0026 (type == \u0027object\u0027 || type == \u0027function\u0027);\r\n}\r\n\r\n/**\r\n * Checks if \u0060value\u0060 is object-like. A value is object-like if it\u0027s not \u0060null\u0060\r\n * and has a \u0060typeof\u0060 result of \u0022object\u0022.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns \u0060true\u0060 if \u0060value\u0060 is object-like, else \u0060false\u0060.\r\n * @example\r\n *\r\n * _.isObjectLike({});\r\n * // =\u003E true\r\n *\r\n * _.isObjectLike([1, 2, 3]);\r\n * // =\u003E true\r\n *\r\n * _.isObjectLike(_.noop);\r\n * // =\u003E false\r\n *\r\n * _.isObjectLike(null);\r\n * // =\u003E false\r\n */\r\nfunction isObjectLike(value) {\r\n return !!value \u0026\u0026 typeof value == \u0027object\u0027;\r\n}\r\n\r\n/**\r\n * Checks if \u0060value\u0060 is classified as a \u0060Symbol\u0060 primitive or object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns \u0060true\u0060 if \u0060value\u0060 is a symbol, else \u0060false\u0060.\r\n * @example\r\n *\r\n * _.isSymbol(Symbol.iterator);\r\n * // =\u003E true\r\n *\r\n * _.isSymbol(\u0027abc\u0027);\r\n * // =\u003E false\r\n */\r\nfunction isSymbol(value) {\r\n return typeof value == \u0027symbol\u0027 ||\r\n (isObjectLike(value) \u0026\u0026 objectToString.call(value) == symbolTag);\r\n}\r\n\r\n/**\r\n * Creates an object composed of the picked \u0060object\u0060 properties.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category Object\r\n * @param {Object} object The source object.\r\n * @param {...(string|string[])} [props] The property identifiers to pick.\r\n * @returns {Object} Returns the new object.\r\n * @example\r\n *\r\n * var object = { \u0027a\u0027: 1, \u0027b\u0027: \u00272\u0027, \u0027c\u0027: 3 };\r\n *\r\n * _.pick(object, [\u0027a\u0027, \u0027c\u0027]);\r\n * // =\u003E { \u0027a\u0027: 1, \u0027c\u0027: 3 }\r\n */\r\nvar pick = baseRest(function(object, props) {\r\n return object == null ? {} : basePick(object, arrayMap(baseFlatten(props, 1), toKey));\r\n});\r\n\r\nvar payload = Array(50000)\r\n .fill(1)\r\n .map((x, i) =\u003E ({\r\n key: i,\r\n value: \u0027any\u0027,\r\n }));\r\n\r\nfunction filterObjectByKeysList(object, keysList) {\r\n return Object.keys(object).reduce((newContext, key) =\u003E {\r\n if (keysList.includes(key)) {\r\n return {\r\n ...newContext,\r\n [key]: object[key]\r\n };\r\n }\r\n return newContext;\r\n }, {});\r\n}\r\n\r\n\r\n","TestCases":[{"Name":"reduce","Code":"filterObjectByKeysList(payload, [1,4,6])","IsDeferred":false},{"Name":"pick","Code":" pick(payload, [1,4,6])","IsDeferred":false}]}