| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | 
							- 'use strict';
 
- // TODO: Remove from `core-js@4` since it's moved to entry points
 
- require('../modules/es.regexp.exec');
 
- var call = require('../internals/function-call');
 
- var defineBuiltIn = require('../internals/define-built-in');
 
- var regexpExec = require('../internals/regexp-exec');
 
- var fails = require('../internals/fails');
 
- var wellKnownSymbol = require('../internals/well-known-symbol');
 
- var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
 
- var SPECIES = wellKnownSymbol('species');
 
- var RegExpPrototype = RegExp.prototype;
 
- module.exports = function (KEY, exec, FORCED, SHAM) {
 
-   var SYMBOL = wellKnownSymbol(KEY);
 
-   var DELEGATES_TO_SYMBOL = !fails(function () {
 
-     // String methods call symbol-named RegExp methods
 
-     var O = {};
 
-     O[SYMBOL] = function () { return 7; };
 
-     return ''[KEY](O) !== 7;
 
-   });
 
-   var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
 
-     // Symbol-named RegExp methods call .exec
 
-     var execCalled = false;
 
-     var re = /a/;
 
-     if (KEY === 'split') {
 
-       // We can't use real regex here since it causes deoptimization
 
-       // and serious performance degradation in V8
 
-       // https://github.com/zloirock/core-js/issues/306
 
-       re = {};
 
-       // RegExp[@@split] doesn't call the regex's exec method, but first creates
 
-       // a new one. We need to return the patched regex when creating the new one.
 
-       re.constructor = {};
 
-       re.constructor[SPECIES] = function () { return re; };
 
-       re.flags = '';
 
-       re[SYMBOL] = /./[SYMBOL];
 
-     }
 
-     re.exec = function () {
 
-       execCalled = true;
 
-       return null;
 
-     };
 
-     re[SYMBOL]('');
 
-     return !execCalled;
 
-   });
 
-   if (
 
-     !DELEGATES_TO_SYMBOL ||
 
-     !DELEGATES_TO_EXEC ||
 
-     FORCED
 
-   ) {
 
-     var nativeRegExpMethod = /./[SYMBOL];
 
-     var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
 
-       var $exec = regexp.exec;
 
-       if ($exec === regexpExec || $exec === RegExpPrototype.exec) {
 
-         if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
 
-           // The native String method already delegates to @@method (this
 
-           // polyfilled function), leasing to infinite recursion.
 
-           // We avoid it by directly calling the native @@method method.
 
-           return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };
 
-         }
 
-         return { done: true, value: call(nativeMethod, str, regexp, arg2) };
 
-       }
 
-       return { done: false };
 
-     });
 
-     defineBuiltIn(String.prototype, KEY, methods[0]);
 
-     defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);
 
-   }
 
-   if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);
 
- };
 
 
  |