| 'use strict'; | 
| var DESCRIPTORS = require('../internals/descriptors'); | 
| var fails = require('../internals/fails'); | 
| var uncurryThis = require('../internals/function-uncurry-this'); | 
| var objectGetPrototypeOf = require('../internals/object-get-prototype-of'); | 
| var objectKeys = require('../internals/object-keys'); | 
| var toIndexedObject = require('../internals/to-indexed-object'); | 
| var $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f; | 
|   | 
| var propertyIsEnumerable = uncurryThis($propertyIsEnumerable); | 
| var push = uncurryThis([].push); | 
|   | 
| // in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys | 
| // of `null` prototype objects | 
| var IE_BUG = DESCRIPTORS && fails(function () { | 
|   // eslint-disable-next-line es/no-object-create -- safe | 
|   var O = Object.create(null); | 
|   O[2] = 2; | 
|   return !propertyIsEnumerable(O, 2); | 
| }); | 
|   | 
| // `Object.{ entries, values }` methods implementation | 
| var createMethod = function (TO_ENTRIES) { | 
|   return function (it) { | 
|     var O = toIndexedObject(it); | 
|     var keys = objectKeys(O); | 
|     var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null; | 
|     var length = keys.length; | 
|     var i = 0; | 
|     var result = []; | 
|     var key; | 
|     while (length > i) { | 
|       key = keys[i++]; | 
|       if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) { | 
|         push(result, TO_ENTRIES ? [key, O[key]] : O[key]); | 
|       } | 
|     } | 
|     return result; | 
|   }; | 
| }; | 
|   | 
| module.exports = { | 
|   // `Object.entries` method | 
|   // https://tc39.es/ecma262/#sec-object.entries | 
|   entries: createMethod(true), | 
|   // `Object.values` method | 
|   // https://tc39.es/ecma262/#sec-object.values | 
|   values: createMethod(false) | 
| }; |