| 1234567891011121314151617181920212223242526272829 | 
							- 'use strict';
 
- /* eslint-disable no-proto -- safe */
 
- var uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');
 
- var isObject = require('../internals/is-object');
 
- var requireObjectCoercible = require('../internals/require-object-coercible');
 
- var aPossiblePrototype = require('../internals/a-possible-prototype');
 
- // `Object.setPrototypeOf` method
 
- // https://tc39.es/ecma262/#sec-object.setprototypeof
 
- // Works with __proto__ only. Old v8 can't work with null proto objects.
 
- // eslint-disable-next-line es/no-object-setprototypeof -- safe
 
- module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
 
-   var CORRECT_SETTER = false;
 
-   var test = {};
 
-   var setter;
 
-   try {
 
-     setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');
 
-     setter(test, []);
 
-     CORRECT_SETTER = test instanceof Array;
 
-   } catch (error) { /* empty */ }
 
-   return function setPrototypeOf(O, proto) {
 
-     requireObjectCoercible(O);
 
-     aPossiblePrototype(proto);
 
-     if (!isObject(O)) return O;
 
-     if (CORRECT_SETTER) setter(O, proto);
 
-     else O.__proto__ = proto;
 
-     return O;
 
-   };
 
- }() : undefined);
 
 
  |