@auth0/auth0-spa-js 1.20.1 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -139,7 +139,7 @@
139
139
 
140
140
  // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
141
141
  var global_1 =
142
- // eslint-disable-next-line es/no-global-this -- safe
142
+ // eslint-disable-next-line es-x/no-global-this -- safe
143
143
  check(typeof globalThis == 'object' && globalThis) ||
144
144
  check(typeof window == 'object' && window) ||
145
145
  // eslint-disable-next-line no-restricted-globals -- safe
@@ -158,11 +158,12 @@
158
158
 
159
159
  // Detect IE8's incomplete defineProperty implementation
160
160
  var descriptors = !fails(function () {
161
- // eslint-disable-next-line es/no-object-defineproperty -- required for testing
161
+ // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing
162
162
  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
163
163
  });
164
164
 
165
165
  var functionBindNative = !fails(function () {
166
+ // eslint-disable-next-line es-x/no-function-prototype-bind -- safe
166
167
  var test = (function () { /* empty */ }).bind();
167
168
  // eslint-disable-next-line no-prototype-builtins -- safe
168
169
  return typeof test != 'function' || test.hasOwnProperty('prototype');
@@ -175,7 +176,7 @@
175
176
  };
176
177
 
177
178
  var $propertyIsEnumerable$1 = {}.propertyIsEnumerable;
178
- // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
179
+ // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe
179
180
  var getOwnPropertyDescriptor$2 = Object.getOwnPropertyDescriptor;
180
181
 
181
182
  // Nashorn ~ JDK8 bug
@@ -297,11 +298,11 @@
297
298
 
298
299
  var engineV8Version = version$1;
299
300
 
300
- /* eslint-disable es/no-symbol -- required for testing */
301
+ /* eslint-disable es-x/no-symbol -- required for testing */
301
302
 
302
303
 
303
304
 
304
- // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
305
+ // eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing
305
306
  var nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () {
306
307
  var symbol = Symbol();
307
308
  // Chrome 38 Symbol has incorrect toString conversion
@@ -311,7 +312,7 @@
311
312
  !Symbol.sham && engineV8Version && engineV8Version < 41;
312
313
  });
313
314
 
314
- /* eslint-disable es/no-symbol -- required for testing */
315
+ /* eslint-disable es-x/no-symbol -- required for testing */
315
316
 
316
317
 
317
318
  var useSymbolAsUid = nativeSymbol
@@ -364,7 +365,7 @@
364
365
  throw TypeError$e("Can't convert object to primitive value");
365
366
  };
366
367
 
367
- // eslint-disable-next-line es/no-object-defineproperty -- safe
368
+ // eslint-disable-next-line es-x/no-object-defineproperty -- safe
368
369
  var defineProperty$6 = Object.defineProperty;
369
370
 
370
371
  var setGlobal = function (key, value) {
@@ -384,10 +385,10 @@
384
385
  (module.exports = function (key, value) {
385
386
  return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});
386
387
  })('versions', []).push({
387
- version: '3.21.1',
388
+ version: '3.22.4',
388
389
  mode: 'global',
389
390
  copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',
390
- license: 'https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE',
391
+ license: 'https://github.com/zloirock/core-js/blob/v3.22.4/LICENSE',
391
392
  source: 'https://github.com/zloirock/core-js'
392
393
  });
393
394
  });
@@ -404,6 +405,7 @@
404
405
 
405
406
  // `HasOwnProperty` abstract operation
406
407
  // https://tc39.es/ecma262/#sec-hasownproperty
408
+ // eslint-disable-next-line es-x/no-object-hasown -- safe
407
409
  var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) {
408
410
  return hasOwnProperty(toObject(it), key);
409
411
  };
@@ -435,13 +437,13 @@
435
437
  };
436
438
 
437
439
  var TypeError$d = global_1.TypeError;
438
- var TO_PRIMITIVE$1 = wellKnownSymbol('toPrimitive');
440
+ var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
439
441
 
440
442
  // `ToPrimitive` abstract operation
441
443
  // https://tc39.es/ecma262/#sec-toprimitive
442
444
  var toPrimitive = function (input, pref) {
443
445
  if (!isObject(input) || isSymbol(input)) return input;
444
- var exoticToPrim = getMethod(input, TO_PRIMITIVE$1);
446
+ var exoticToPrim = getMethod(input, TO_PRIMITIVE);
445
447
  var result;
446
448
  if (exoticToPrim) {
447
449
  if (pref === undefined) pref = 'default';
@@ -470,13 +472,13 @@
470
472
 
471
473
  // Thanks to IE8 for its funny defineProperty
472
474
  var ie8DomDefine = !descriptors && !fails(function () {
473
- // eslint-disable-next-line es/no-object-defineproperty -- required for testing
475
+ // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing
474
476
  return Object.defineProperty(documentCreateElement('div'), 'a', {
475
477
  get: function () { return 7; }
476
478
  }).a != 7;
477
479
  });
478
480
 
479
- // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
481
+ // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe
480
482
  var $getOwnPropertyDescriptor$2 = Object.getOwnPropertyDescriptor;
481
483
 
482
484
  // `Object.getOwnPropertyDescriptor` method
@@ -497,7 +499,7 @@
497
499
  // V8 ~ Chrome 36-
498
500
  // https://bugs.chromium.org/p/v8/issues/detail?id=3334
499
501
  var v8PrototypeDefineBug = descriptors && fails(function () {
500
- // eslint-disable-next-line es/no-object-defineproperty -- required for testing
502
+ // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing
501
503
  return Object.defineProperty(function () { /* empty */ }, 'prototype', {
502
504
  value: 42,
503
505
  writable: false
@@ -514,9 +516,9 @@
514
516
  };
515
517
 
516
518
  var TypeError$b = global_1.TypeError;
517
- // eslint-disable-next-line es/no-object-defineproperty -- safe
519
+ // eslint-disable-next-line es-x/no-object-defineproperty -- safe
518
520
  var $defineProperty$1 = Object.defineProperty;
519
- // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
521
+ // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe
520
522
  var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor;
521
523
  var ENUMERABLE = 'enumerable';
522
524
  var CONFIGURABLE$1 = 'configurable';
@@ -562,6 +564,21 @@
562
564
  return object;
563
565
  };
564
566
 
567
+ var FunctionPrototype$1 = Function.prototype;
568
+ // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe
569
+ var getDescriptor = descriptors && Object.getOwnPropertyDescriptor;
570
+
571
+ var EXISTS = hasOwnProperty_1(FunctionPrototype$1, 'name');
572
+ // additional protection from minified / mangled / dropped function names
573
+ var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
574
+ var CONFIGURABLE = EXISTS && (!descriptors || (descriptors && getDescriptor(FunctionPrototype$1, 'name').configurable));
575
+
576
+ var functionName = {
577
+ EXISTS: EXISTS,
578
+ PROPER: PROPER,
579
+ CONFIGURABLE: CONFIGURABLE
580
+ };
581
+
565
582
  var functionToString = functionUncurryThis(Function.toString);
566
583
 
567
584
  // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
@@ -645,50 +662,56 @@
645
662
  getterFor: getterFor
646
663
  };
647
664
 
648
- var FunctionPrototype$1 = Function.prototype;
649
- // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
650
- var getDescriptor = descriptors && Object.getOwnPropertyDescriptor;
651
-
652
- var EXISTS = hasOwnProperty_1(FunctionPrototype$1, 'name');
653
- // additional protection from minified / mangled / dropped function names
654
- var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
655
- var CONFIGURABLE = EXISTS && (!descriptors || (descriptors && getDescriptor(FunctionPrototype$1, 'name').configurable));
665
+ var makeBuiltIn_1 = createCommonjsModule(function (module) {
666
+ var defineProperty = objectDefineProperty.f;
667
+ var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE;
656
668
 
657
- var functionName = {
658
- EXISTS: EXISTS,
659
- PROPER: PROPER,
660
- CONFIGURABLE: CONFIGURABLE
661
- };
662
669
 
663
- var redefine = createCommonjsModule(function (module) {
664
- var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE;
665
670
 
666
- var getInternalState = internalState.get;
667
671
  var enforceInternalState = internalState.enforce;
672
+ var getInternalState = internalState.get;
673
+
674
+ var CONFIGURABLE_LENGTH = !fails(function () {
675
+ return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;
676
+ });
677
+
668
678
  var TEMPLATE = String(String).split('String');
669
679
 
670
- (module.exports = function (O, key, value, options) {
680
+ var makeBuiltIn = module.exports = function (value, name, options) {
681
+ if (String(name).slice(0, 7) === 'Symbol(') {
682
+ name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
683
+ }
684
+ if (options && options.getter) name = 'get ' + name;
685
+ if (options && options.setter) name = 'set ' + name;
686
+ if (!hasOwnProperty_1(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
687
+ defineProperty(value, 'name', { value: name, configurable: true });
688
+ }
689
+ if (CONFIGURABLE_LENGTH && options && hasOwnProperty_1(options, 'arity') && value.length !== options.arity) {
690
+ defineProperty(value, 'length', { value: options.arity });
691
+ }
692
+ var state = enforceInternalState(value);
693
+ if (!hasOwnProperty_1(state, 'source')) {
694
+ state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
695
+ } return value;
696
+ };
697
+
698
+ // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
699
+ // eslint-disable-next-line no-extend-native -- required
700
+ Function.prototype.toString = makeBuiltIn(function toString() {
701
+ return isCallable(this) && getInternalState(this).source || inspectSource(this);
702
+ }, 'toString');
703
+ });
704
+
705
+ var defineBuiltIn = function (O, key, value, options) {
671
706
  var unsafe = options ? !!options.unsafe : false;
672
707
  var simple = options ? !!options.enumerable : false;
673
708
  var noTargetGet = options ? !!options.noTargetGet : false;
674
709
  var name = options && options.name !== undefined ? options.name : key;
675
- var state;
676
- if (isCallable(value)) {
677
- if (String(name).slice(0, 7) === 'Symbol(') {
678
- name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
679
- }
680
- if (!hasOwnProperty_1(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
681
- createNonEnumerableProperty(value, 'name', name);
682
- }
683
- state = enforceInternalState(value);
684
- if (!state.source) {
685
- state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
686
- }
687
- }
710
+ if (isCallable(value)) makeBuiltIn_1(value, name, options);
688
711
  if (O === global_1) {
689
712
  if (simple) O[key] = value;
690
713
  else setGlobal(key, value);
691
- return;
714
+ return O;
692
715
  } else if (!unsafe) {
693
716
  delete O[key];
694
717
  } else if (!noTargetGet && O[key]) {
@@ -696,11 +719,8 @@
696
719
  }
697
720
  if (simple) O[key] = value;
698
721
  else createNonEnumerableProperty(O, key, value);
699
- // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
700
- })(Function.prototype, 'toString', function toString() {
701
- return isCallable(this) && getInternalState(this).source || inspectSource(this);
702
- });
703
- });
722
+ return O;
723
+ };
704
724
 
705
725
  var ceil = Math.ceil;
706
726
  var floor = Math.floor;
@@ -800,7 +820,7 @@
800
820
 
801
821
  // `Object.getOwnPropertyNames` method
802
822
  // https://tc39.es/ecma262/#sec-object.getownpropertynames
803
- // eslint-disable-next-line es/no-object-getownpropertynames -- safe
823
+ // eslint-disable-next-line es-x/no-object-getownpropertynames -- safe
804
824
  var f$4 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
805
825
  return objectKeysInternal(O, hiddenKeys);
806
826
  };
@@ -809,7 +829,7 @@
809
829
  f: f$4
810
830
  };
811
831
 
812
- // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
832
+ // eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe
813
833
  var f$3 = Object.getOwnPropertySymbols;
814
834
 
815
835
  var objectGetOwnPropertySymbols = {
@@ -907,8 +927,7 @@
907
927
  if (options.sham || (targetProperty && targetProperty.sham)) {
908
928
  createNonEnumerableProperty(sourceProperty, 'sham', true);
909
929
  }
910
- // extend global
911
- redefine(target, key, sourceProperty, options);
930
+ defineBuiltIn(target, key, sourceProperty, options);
912
931
  }
913
932
  };
914
933
 
@@ -990,7 +1009,7 @@
990
1009
 
991
1010
 
992
1011
 
993
- // eslint-disable-next-line es/no-string-prototype-startswith -- safe
1012
+ // eslint-disable-next-line es-x/no-string-prototype-startswith -- safe
994
1013
  var un$StartsWith = functionUncurryThis(''.startsWith);
995
1014
  var stringSlice$2 = functionUncurryThis(''.slice);
996
1015
  var min = Math.min;
@@ -1024,7 +1043,7 @@
1024
1043
 
1025
1044
  // `IsArray` abstract operation
1026
1045
  // https://tc39.es/ecma262/#sec-isarray
1027
- // eslint-disable-next-line es/no-array-isarray -- safe
1046
+ // eslint-disable-next-line es-x/no-array-isarray -- safe
1028
1047
  var isArray$1 = Array.isArray || function isArray(argument) {
1029
1048
  return classofRaw(argument) == 'Array';
1030
1049
  };
@@ -1039,7 +1058,7 @@
1039
1058
  var empty = [];
1040
1059
  var construct = getBuiltIn('Reflect', 'construct');
1041
1060
  var constructorRegExp = /^\s*(?:class|function)\b/;
1042
- var exec = functionUncurryThis(constructorRegExp.exec);
1061
+ var exec$1 = functionUncurryThis(constructorRegExp.exec);
1043
1062
  var INCORRECT_TO_STRING = !constructorRegExp.exec(noop$1);
1044
1063
 
1045
1064
  var isConstructorModern = function isConstructor(argument) {
@@ -1063,7 +1082,7 @@
1063
1082
  // we can't check .prototype since constructors produced by .bind haven't it
1064
1083
  // `Function#toString` throws on some built-it function in some legacy engines
1065
1084
  // (for example, `DOMQuad` and similar in FF41-)
1066
- return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));
1085
+ return INCORRECT_TO_STRING || !!exec$1(constructorRegExp, inspectSource(argument));
1067
1086
  } catch (error) {
1068
1087
  return true;
1069
1088
  }
@@ -1143,12 +1162,12 @@
1143
1162
  return spreadable !== undefined ? !!spreadable : isArray$1(O);
1144
1163
  };
1145
1164
 
1146
- var FORCED$1 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;
1165
+ var FORCED$2 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;
1147
1166
 
1148
1167
  // `Array.prototype.concat` method
1149
1168
  // https://tc39.es/ecma262/#sec-array.prototype.concat
1150
1169
  // with adding support of @@isConcatSpreadable and @@species
1151
- _export({ target: 'Array', proto: true, forced: FORCED$1 }, {
1170
+ _export({ target: 'Array', proto: true, arity: 1, forced: FORCED$2 }, {
1152
1171
  // eslint-disable-next-line no-unused-vars -- required for `.length`
1153
1172
  concat: function concat(arg) {
1154
1173
  var O = toObject(this);
@@ -1180,28 +1199,19 @@
1180
1199
  // `Object.prototype.toString` method
1181
1200
  // https://tc39.es/ecma262/#sec-object.prototype.tostring
1182
1201
  if (!toStringTagSupport) {
1183
- redefine(Object.prototype, 'toString', objectToString, { unsafe: true });
1202
+ defineBuiltIn(Object.prototype, 'toString', objectToString, { unsafe: true });
1184
1203
  }
1185
1204
 
1186
- var FunctionPrototype = Function.prototype;
1187
- var apply = FunctionPrototype.apply;
1188
- var call = FunctionPrototype.call;
1189
-
1190
- // eslint-disable-next-line es/no-reflect -- safe
1191
- var functionApply = typeof Reflect == 'object' && Reflect.apply || (functionBindNative ? call.bind(apply) : function () {
1192
- return call.apply(apply, arguments);
1193
- });
1194
-
1195
1205
  // `Object.keys` method
1196
1206
  // https://tc39.es/ecma262/#sec-object.keys
1197
- // eslint-disable-next-line es/no-object-keys -- safe
1207
+ // eslint-disable-next-line es-x/no-object-keys -- safe
1198
1208
  var objectKeys = Object.keys || function keys(O) {
1199
1209
  return objectKeysInternal(O, enumBugKeys);
1200
1210
  };
1201
1211
 
1202
1212
  // `Object.defineProperties` method
1203
1213
  // https://tc39.es/ecma262/#sec-object.defineproperties
1204
- // eslint-disable-next-line es/no-object-defineproperties -- safe
1214
+ // eslint-disable-next-line es-x/no-object-defineproperties -- safe
1205
1215
  var f$2 = descriptors && !v8PrototypeDefineBug ? Object.defineProperties : function defineProperties(O, Properties) {
1206
1216
  anObject(O);
1207
1217
  var props = toIndexedObject(Properties);
@@ -1290,6 +1300,7 @@
1290
1300
 
1291
1301
  // `Object.create` method
1292
1302
  // https://tc39.es/ecma262/#sec-object.create
1303
+ // eslint-disable-next-line es-x/no-object-create -- safe
1293
1304
  var objectCreate = Object.create || function create(O, Properties) {
1294
1305
  var result;
1295
1306
  if (O !== null) {
@@ -1315,7 +1326,7 @@
1315
1326
  return result;
1316
1327
  };
1317
1328
 
1318
- /* eslint-disable es/no-object-getownpropertynames -- safe */
1329
+ /* eslint-disable es-x/no-object-getownpropertynames -- safe */
1319
1330
 
1320
1331
 
1321
1332
  var $getOwnPropertyNames$1 = objectGetOwnPropertyNames.f;
@@ -1343,8 +1354,6 @@
1343
1354
  f: f$1
1344
1355
  };
1345
1356
 
1346
- var arraySlice = functionUncurryThis([].slice);
1347
-
1348
1357
  var f = wellKnownSymbol;
1349
1358
 
1350
1359
  var wellKnownSymbolWrapped = {
@@ -1362,6 +1371,22 @@
1362
1371
  });
1363
1372
  };
1364
1373
 
1374
+ var symbolDefineToPrimitive = function () {
1375
+ var Symbol = getBuiltIn('Symbol');
1376
+ var SymbolPrototype = Symbol && Symbol.prototype;
1377
+ var valueOf = SymbolPrototype && SymbolPrototype.valueOf;
1378
+ var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
1379
+
1380
+ if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {
1381
+ // `Symbol.prototype[@@toPrimitive]` method
1382
+ // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
1383
+ // eslint-disable-next-line no-unused-vars -- required for .length
1384
+ defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {
1385
+ return functionCall(valueOf, this);
1386
+ }, { arity: 1 });
1387
+ }
1388
+ };
1389
+
1365
1390
  var defineProperty$4 = objectDefineProperty.f;
1366
1391
 
1367
1392
 
@@ -1457,7 +1482,6 @@
1457
1482
  var HIDDEN = sharedKey('hidden');
1458
1483
  var SYMBOL = 'Symbol';
1459
1484
  var PROTOTYPE = 'prototype';
1460
- var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
1461
1485
 
1462
1486
  var setInternalState$3 = internalState.set;
1463
1487
  var getInternalState$2 = internalState.getterFor(SYMBOL);
@@ -1467,7 +1491,6 @@
1467
1491
  var SymbolPrototype$1 = $Symbol && $Symbol[PROTOTYPE];
1468
1492
  var TypeError$7 = global_1.TypeError;
1469
1493
  var QObject = global_1.QObject;
1470
- var $stringify = getBuiltIn('JSON', 'stringify');
1471
1494
  var nativeGetOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
1472
1495
  var nativeDefineProperty = objectDefineProperty.f;
1473
1496
  var nativeGetOwnPropertyNames = objectGetOwnPropertyNamesExternal.f;
@@ -1476,8 +1499,6 @@
1476
1499
 
1477
1500
  var AllSymbols = shared('symbols');
1478
1501
  var ObjectPrototypeSymbols = shared('op-symbols');
1479
- var StringToSymbolRegistry = shared('string-to-symbol-registry');
1480
- var SymbolToStringRegistry = shared('symbol-to-string-registry');
1481
1502
  var WellKnownSymbolsStore = shared('wks');
1482
1503
 
1483
1504
  // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
@@ -1566,7 +1587,7 @@
1566
1587
  return result;
1567
1588
  };
1568
1589
 
1569
- var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
1590
+ var $getOwnPropertySymbols = function (O) {
1570
1591
  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype$2;
1571
1592
  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));
1572
1593
  var result = [];
@@ -1596,11 +1617,11 @@
1596
1617
 
1597
1618
  SymbolPrototype$1 = $Symbol[PROTOTYPE];
1598
1619
 
1599
- redefine(SymbolPrototype$1, 'toString', function toString() {
1620
+ defineBuiltIn(SymbolPrototype$1, 'toString', function toString() {
1600
1621
  return getInternalState$2(this).tag;
1601
1622
  });
1602
1623
 
1603
- redefine($Symbol, 'withoutSetter', function (description) {
1624
+ defineBuiltIn($Symbol, 'withoutSetter', function (description) {
1604
1625
  return wrap(uid(description), description);
1605
1626
  });
1606
1627
 
@@ -1624,7 +1645,7 @@
1624
1645
  }
1625
1646
  });
1626
1647
  {
1627
- redefine(ObjectPrototype$2, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
1648
+ defineBuiltIn(ObjectPrototype$2, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
1628
1649
  }
1629
1650
  }
1630
1651
  }
@@ -1638,22 +1659,6 @@
1638
1659
  });
1639
1660
 
1640
1661
  _export({ target: SYMBOL, stat: true, forced: !nativeSymbol }, {
1641
- // `Symbol.for` method
1642
- // https://tc39.es/ecma262/#sec-symbol.for
1643
- 'for': function (key) {
1644
- var string = toString_1(key);
1645
- if (hasOwnProperty_1(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
1646
- var symbol = $Symbol(string);
1647
- StringToSymbolRegistry[string] = symbol;
1648
- SymbolToStringRegistry[symbol] = string;
1649
- return symbol;
1650
- },
1651
- // `Symbol.keyFor` method
1652
- // https://tc39.es/ecma262/#sec-symbol.keyfor
1653
- keyFor: function keyFor(sym) {
1654
- if (!isSymbol(sym)) throw TypeError$7(sym + ' is not a symbol');
1655
- if (hasOwnProperty_1(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
1656
- },
1657
1662
  useSetter: function () { USE_SETTER = true; },
1658
1663
  useSimple: function () { USE_SETTER = false; }
1659
1664
  });
@@ -1676,64 +1681,132 @@
1676
1681
  _export({ target: 'Object', stat: true, forced: !nativeSymbol }, {
1677
1682
  // `Object.getOwnPropertyNames` method
1678
1683
  // https://tc39.es/ecma262/#sec-object.getownpropertynames
1679
- getOwnPropertyNames: $getOwnPropertyNames,
1680
- // `Object.getOwnPropertySymbols` method
1681
- // https://tc39.es/ecma262/#sec-object.getownpropertysymbols
1682
- getOwnPropertySymbols: $getOwnPropertySymbols
1684
+ getOwnPropertyNames: $getOwnPropertyNames
1683
1685
  });
1684
1686
 
1685
- // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
1686
- // https://bugs.chromium.org/p/v8/issues/detail?id=3443
1687
- _export({ target: 'Object', stat: true, forced: fails(function () { objectGetOwnPropertySymbols.f(1); }) }, {
1688
- getOwnPropertySymbols: function getOwnPropertySymbols(it) {
1689
- return objectGetOwnPropertySymbols.f(toObject(it));
1687
+ // `Symbol.prototype[@@toPrimitive]` method
1688
+ // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
1689
+ symbolDefineToPrimitive();
1690
+
1691
+ // `Symbol.prototype[@@toStringTag]` property
1692
+ // https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag
1693
+ setToStringTag($Symbol, SYMBOL);
1694
+
1695
+ hiddenKeys$1[HIDDEN] = true;
1696
+
1697
+ /* eslint-disable es-x/no-symbol -- safe */
1698
+ var nativeSymbolRegistry = nativeSymbol && !!Symbol['for'] && !!Symbol.keyFor;
1699
+
1700
+ var StringToSymbolRegistry = shared('string-to-symbol-registry');
1701
+ var SymbolToStringRegistry$1 = shared('symbol-to-string-registry');
1702
+
1703
+ // `Symbol.for` method
1704
+ // https://tc39.es/ecma262/#sec-symbol.for
1705
+ _export({ target: 'Symbol', stat: true, forced: !nativeSymbolRegistry }, {
1706
+ 'for': function (key) {
1707
+ var string = toString_1(key);
1708
+ if (hasOwnProperty_1(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
1709
+ var symbol = getBuiltIn('Symbol')(string);
1710
+ StringToSymbolRegistry[string] = symbol;
1711
+ SymbolToStringRegistry$1[symbol] = string;
1712
+ return symbol;
1690
1713
  }
1691
1714
  });
1692
1715
 
1693
- // `JSON.stringify` method behavior with symbols
1694
- // https://tc39.es/ecma262/#sec-json.stringify
1695
- if ($stringify) {
1696
- var FORCED_JSON_STRINGIFY = !nativeSymbol || fails(function () {
1697
- var symbol = $Symbol();
1698
- // MS Edge converts symbol values to JSON as {}
1699
- return $stringify([symbol]) != '[null]'
1700
- // WebKit converts symbol values to JSON as null
1701
- || $stringify({ a: symbol }) != '{}'
1702
- // V8 throws on boxed symbols
1703
- || $stringify(Object(symbol)) != '{}';
1704
- });
1716
+ var SymbolToStringRegistry = shared('symbol-to-string-registry');
1705
1717
 
1706
- _export({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {
1718
+ // `Symbol.keyFor` method
1719
+ // https://tc39.es/ecma262/#sec-symbol.keyfor
1720
+ _export({ target: 'Symbol', stat: true, forced: !nativeSymbolRegistry }, {
1721
+ keyFor: function keyFor(sym) {
1722
+ if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');
1723
+ if (hasOwnProperty_1(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
1724
+ }
1725
+ });
1726
+
1727
+ var FunctionPrototype = Function.prototype;
1728
+ var apply = FunctionPrototype.apply;
1729
+ var call = FunctionPrototype.call;
1730
+
1731
+ // eslint-disable-next-line es-x/no-reflect -- safe
1732
+ var functionApply = typeof Reflect == 'object' && Reflect.apply || (functionBindNative ? call.bind(apply) : function () {
1733
+ return call.apply(apply, arguments);
1734
+ });
1735
+
1736
+ var arraySlice = functionUncurryThis([].slice);
1737
+
1738
+ var $stringify = getBuiltIn('JSON', 'stringify');
1739
+ var exec = functionUncurryThis(/./.exec);
1740
+ var charAt$2 = functionUncurryThis(''.charAt);
1741
+ var charCodeAt$1 = functionUncurryThis(''.charCodeAt);
1742
+ var replace$1 = functionUncurryThis(''.replace);
1743
+ var numberToString = functionUncurryThis(1.0.toString);
1744
+
1745
+ var tester = /[\uD800-\uDFFF]/g;
1746
+ var low = /^[\uD800-\uDBFF]$/;
1747
+ var hi = /^[\uDC00-\uDFFF]$/;
1748
+
1749
+ var WRONG_SYMBOLS_CONVERSION = !nativeSymbol || fails(function () {
1750
+ var symbol = getBuiltIn('Symbol')();
1751
+ // MS Edge converts symbol values to JSON as {}
1752
+ return $stringify([symbol]) != '[null]'
1753
+ // WebKit converts symbol values to JSON as null
1754
+ || $stringify({ a: symbol }) != '{}'
1755
+ // V8 throws on boxed symbols
1756
+ || $stringify(Object(symbol)) != '{}';
1757
+ });
1758
+
1759
+ // https://github.com/tc39/proposal-well-formed-stringify
1760
+ var ILL_FORMED_UNICODE = fails(function () {
1761
+ return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"'
1762
+ || $stringify('\uDEAD') !== '"\\udead"';
1763
+ });
1764
+
1765
+ var stringifyWithSymbolsFix = function (it, replacer) {
1766
+ var args = arraySlice(arguments);
1767
+ var $replacer = replacer;
1768
+ if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
1769
+ if (!isArray$1(replacer)) replacer = function (key, value) {
1770
+ if (isCallable($replacer)) value = functionCall($replacer, this, key, value);
1771
+ if (!isSymbol(value)) return value;
1772
+ };
1773
+ args[1] = replacer;
1774
+ return functionApply($stringify, null, args);
1775
+ };
1776
+
1777
+ var fixIllFormed = function (match, offset, string) {
1778
+ var prev = charAt$2(string, offset - 1);
1779
+ var next = charAt$2(string, offset + 1);
1780
+ if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {
1781
+ return '\\u' + numberToString(charCodeAt$1(match, 0), 16);
1782
+ } return match;
1783
+ };
1784
+
1785
+ if ($stringify) {
1786
+ // `JSON.stringify` method
1787
+ // https://tc39.es/ecma262/#sec-json.stringify
1788
+ _export({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {
1707
1789
  // eslint-disable-next-line no-unused-vars -- required for `.length`
1708
1790
  stringify: function stringify(it, replacer, space) {
1709
1791
  var args = arraySlice(arguments);
1710
- var $replacer = replacer;
1711
- if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
1712
- if (!isArray$1(replacer)) replacer = function (key, value) {
1713
- if (isCallable($replacer)) value = functionCall($replacer, this, key, value);
1714
- if (!isSymbol(value)) return value;
1715
- };
1716
- args[1] = replacer;
1717
- return functionApply($stringify, null, args);
1792
+ var result = functionApply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);
1793
+ return ILL_FORMED_UNICODE && typeof result == 'string' ? replace$1(result, tester, fixIllFormed) : result;
1718
1794
  }
1719
1795
  });
1720
1796
  }
1721
1797
 
1722
- // `Symbol.prototype[@@toPrimitive]` method
1723
- // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
1724
- if (!SymbolPrototype$1[TO_PRIMITIVE]) {
1725
- var valueOf = SymbolPrototype$1.valueOf;
1726
- // eslint-disable-next-line no-unused-vars -- required for .length
1727
- redefine(SymbolPrototype$1, TO_PRIMITIVE, function (hint) {
1728
- // TODO: improve hint logic
1729
- return functionCall(valueOf, this);
1730
- });
1731
- }
1732
- // `Symbol.prototype[@@toStringTag]` property
1733
- // https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag
1734
- setToStringTag($Symbol, SYMBOL);
1798
+ // V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
1799
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3443
1800
+ var FORCED$1 = !nativeSymbol || fails(function () { objectGetOwnPropertySymbols.f(1); });
1735
1801
 
1736
- hiddenKeys$1[HIDDEN] = true;
1802
+ // `Object.getOwnPropertySymbols` method
1803
+ // https://tc39.es/ecma262/#sec-object.getownpropertysymbols
1804
+ _export({ target: 'Object', stat: true, forced: FORCED$1 }, {
1805
+ getOwnPropertySymbols: function getOwnPropertySymbols(it) {
1806
+ var $getOwnPropertySymbols = objectGetOwnPropertySymbols.f;
1807
+ return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];
1808
+ }
1809
+ });
1737
1810
 
1738
1811
  // `Symbol.asyncIterator` well-known symbol
1739
1812
  // https://tc39.es/ecma262/#sec-symbol.asynciterator
@@ -1828,10 +1901,18 @@
1828
1901
  // https://tc39.es/ecma262/#sec-symbol.toprimitive
1829
1902
  defineWellKnownSymbol('toPrimitive');
1830
1903
 
1904
+ // `Symbol.prototype[@@toPrimitive]` method
1905
+ // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
1906
+ symbolDefineToPrimitive();
1907
+
1831
1908
  // `Symbol.toStringTag` well-known symbol
1832
1909
  // https://tc39.es/ecma262/#sec-symbol.tostringtag
1833
1910
  defineWellKnownSymbol('toStringTag');
1834
1911
 
1912
+ // `Symbol.prototype[@@toStringTag]` property
1913
+ // https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag
1914
+ setToStringTag(getBuiltIn('Symbol'), 'Symbol');
1915
+
1835
1916
  // `Symbol.unscopables` well-known symbol
1836
1917
  // https://tc39.es/ecma262/#sec-symbol.unscopables
1837
1918
  defineWellKnownSymbol('unscopables');
@@ -1887,7 +1968,7 @@
1887
1968
  var correctPrototypeGetter = !fails(function () {
1888
1969
  function F() { /* empty */ }
1889
1970
  F.prototype.constructor = null;
1890
- // eslint-disable-next-line es/no-object-getprototypeof -- required for testing
1971
+ // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing
1891
1972
  return Object.getPrototypeOf(new F()) !== F.prototype;
1892
1973
  });
1893
1974
 
@@ -1913,7 +1994,7 @@
1913
1994
  // https://tc39.es/ecma262/#sec-%iteratorprototype%-object
1914
1995
  var IteratorPrototype$2, PrototypeOfArrayIteratorPrototype, arrayIterator;
1915
1996
 
1916
- /* eslint-disable es/no-array-prototype-keys -- safe */
1997
+ /* eslint-disable es-x/no-array-prototype-keys -- safe */
1917
1998
  if ([].keys) {
1918
1999
  arrayIterator = [].keys();
1919
2000
  // Safari 8 has buggy iterators w/o `next`
@@ -1935,7 +2016,7 @@
1935
2016
  // `%IteratorPrototype%[@@iterator]()` method
1936
2017
  // https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator
1937
2018
  if (!isCallable(IteratorPrototype$2[ITERATOR$4])) {
1938
- redefine(IteratorPrototype$2, ITERATOR$4, function () {
2019
+ defineBuiltIn(IteratorPrototype$2, ITERATOR$4, function () {
1939
2020
  return this;
1940
2021
  });
1941
2022
  }
@@ -1979,13 +2060,13 @@
1979
2060
  // `Object.setPrototypeOf` method
1980
2061
  // https://tc39.es/ecma262/#sec-object.setprototypeof
1981
2062
  // Works with __proto__ only. Old v8 can't work with null proto objects.
1982
- // eslint-disable-next-line es/no-object-setprototypeof -- safe
2063
+ // eslint-disable-next-line es-x/no-object-setprototypeof -- safe
1983
2064
  var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () {
1984
2065
  var CORRECT_SETTER = false;
1985
2066
  var test = {};
1986
2067
  var setter;
1987
2068
  try {
1988
- // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
2069
+ // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe
1989
2070
  setter = functionUncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);
1990
2071
  setter(test, []);
1991
2072
  CORRECT_SETTER = test instanceof Array;
@@ -2041,7 +2122,7 @@
2041
2122
  if (objectSetPrototypeOf) {
2042
2123
  objectSetPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
2043
2124
  } else if (!isCallable(CurrentIteratorPrototype[ITERATOR$3])) {
2044
- redefine(CurrentIteratorPrototype, ITERATOR$3, returnThis);
2125
+ defineBuiltIn(CurrentIteratorPrototype, ITERATOR$3, returnThis);
2045
2126
  }
2046
2127
  }
2047
2128
  // Set @@toStringTag to native iterators
@@ -2068,14 +2149,14 @@
2068
2149
  };
2069
2150
  if (FORCED) for (KEY in methods) {
2070
2151
  if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
2071
- redefine(IterablePrototype, KEY, methods[KEY]);
2152
+ defineBuiltIn(IterablePrototype, KEY, methods[KEY]);
2072
2153
  }
2073
2154
  } else _export({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
2074
2155
  }
2075
2156
 
2076
2157
  // define iterator
2077
2158
  if (IterablePrototype[ITERATOR$3] !== defaultIterator) {
2078
- redefine(IterablePrototype, ITERATOR$3, defaultIterator, { name: DEFAULT });
2159
+ defineBuiltIn(IterablePrototype, ITERATOR$3, defaultIterator, { name: DEFAULT });
2079
2160
  }
2080
2161
  iterators[NAME] = defaultIterator;
2081
2162
 
@@ -2216,7 +2297,7 @@
2216
2297
  iteratorWithReturn[ITERATOR] = function () {
2217
2298
  return this;
2218
2299
  };
2219
- // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing
2300
+ // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing
2220
2301
  Array.from(iteratorWithReturn, function () { throw 2; });
2221
2302
  } catch (error) { /* empty */ }
2222
2303
 
@@ -2238,7 +2319,7 @@
2238
2319
  };
2239
2320
 
2240
2321
  var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {
2241
- // eslint-disable-next-line es/no-array-from -- required for testing
2322
+ // eslint-disable-next-line es-x/no-array-from -- required for testing
2242
2323
  Array.from(iterable);
2243
2324
  });
2244
2325
 
@@ -2250,7 +2331,7 @@
2250
2331
 
2251
2332
  path.Array.from;
2252
2333
 
2253
- // eslint-disable-next-line es/no-typed-arrays -- safe
2334
+ // eslint-disable-next-line es-x/no-typed-arrays -- safe
2254
2335
  var arrayBufferNative = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';
2255
2336
 
2256
2337
  var defineProperty$2 = objectDefineProperty.f;
@@ -2333,7 +2414,7 @@
2333
2414
  }
2334
2415
  }
2335
2416
  if (!TypedArrayPrototype[KEY] || forced) {
2336
- redefine(TypedArrayPrototype, KEY, forced ? property
2417
+ defineBuiltIn(TypedArrayPrototype, KEY, forced ? property
2337
2418
  : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);
2338
2419
  }
2339
2420
  };
@@ -2351,14 +2432,14 @@
2351
2432
  if (!TypedArray[KEY] || forced) {
2352
2433
  // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable
2353
2434
  try {
2354
- return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);
2435
+ return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);
2355
2436
  } catch (error) { /* empty */ }
2356
2437
  } else return;
2357
2438
  }
2358
2439
  for (ARRAY in TypedArrayConstructorsList) {
2359
2440
  TypedArrayConstructor = global_1[ARRAY];
2360
2441
  if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {
2361
- redefine(TypedArrayConstructor, KEY, property);
2442
+ defineBuiltIn(TypedArrayConstructor, KEY, property);
2362
2443
  }
2363
2444
  }
2364
2445
  };
@@ -2454,7 +2535,7 @@
2454
2535
  var exportTypedArrayMethod = arrayBufferViewCore.exportTypedArrayMethod;
2455
2536
 
2456
2537
  var FORCED = fails(function () {
2457
- // eslint-disable-next-line es/no-typed-arrays -- required for testing
2538
+ // eslint-disable-next-line es-x/no-typed-arrays -- required for testing
2458
2539
  new Int8Array(1).slice();
2459
2540
  });
2460
2541
 
@@ -2490,9 +2571,15 @@
2490
2571
  var $includes = arrayIncludes.includes;
2491
2572
 
2492
2573
 
2574
+
2575
+ // FF99+ bug
2576
+ var BROKEN_ON_SPARSE = fails(function () {
2577
+ return !Array(1).includes();
2578
+ });
2579
+
2493
2580
  // `Array.prototype.includes` method
2494
2581
  // https://tc39.es/ecma262/#sec-array.prototype.includes
2495
- _export({ target: 'Array', proto: true }, {
2582
+ _export({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {
2496
2583
  includes: function includes(el /* , fromIndex = 0 */) {
2497
2584
  return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
2498
2585
  }
@@ -2582,12 +2669,12 @@
2582
2669
  var arrayBufferNonExtensible = fails(function () {
2583
2670
  if (typeof ArrayBuffer == 'function') {
2584
2671
  var buffer = new ArrayBuffer(8);
2585
- // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe
2672
+ // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe
2586
2673
  if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });
2587
2674
  }
2588
2675
  });
2589
2676
 
2590
- // eslint-disable-next-line es/no-object-isextensible -- safe
2677
+ // eslint-disable-next-line es-x/no-object-isextensible -- safe
2591
2678
  var $isExtensible = Object.isExtensible;
2592
2679
  var FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });
2593
2680
 
@@ -2600,7 +2687,7 @@
2600
2687
  } : $isExtensible;
2601
2688
 
2602
2689
  var freezing = !fails(function () {
2603
- // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing
2690
+ // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing
2604
2691
  return Object.isExtensible(Object.preventExtensions({}));
2605
2692
  });
2606
2693
 
@@ -2783,7 +2870,7 @@
2783
2870
 
2784
2871
  var fixMethod = function (KEY) {
2785
2872
  var uncurriedNativeMethod = functionUncurryThis(NativePrototype[KEY]);
2786
- redefine(NativePrototype, KEY,
2873
+ defineBuiltIn(NativePrototype, KEY,
2787
2874
  KEY == 'add' ? function add(value) {
2788
2875
  uncurriedNativeMethod(this, value === 0 ? 0 : value);
2789
2876
  return this;
@@ -2862,8 +2949,8 @@
2862
2949
  return Constructor;
2863
2950
  };
2864
2951
 
2865
- var redefineAll = function (target, src, options) {
2866
- for (var key in src) redefine(target, key, src[key], options);
2952
+ var defineBuiltIns = function (target, src, options) {
2953
+ for (var key in src) defineBuiltIn(target, key, src[key], options);
2867
2954
  return target;
2868
2955
  };
2869
2956
 
@@ -2953,7 +3040,7 @@
2953
3040
  }
2954
3041
  };
2955
3042
 
2956
- redefineAll(Prototype, {
3043
+ defineBuiltIns(Prototype, {
2957
3044
  // `{ Map, Set }.prototype.clear()` methods
2958
3045
  // https://tc39.es/ecma262/#sec-map.prototype.clear
2959
3046
  // https://tc39.es/ecma262/#sec-set.prototype.clear
@@ -3013,7 +3100,7 @@
3013
3100
  }
3014
3101
  });
3015
3102
 
3016
- redefineAll(Prototype, IS_MAP ? {
3103
+ defineBuiltIns(Prototype, IS_MAP ? {
3017
3104
  // `Map.prototype.get(key)` method
3018
3105
  // https://tc39.es/ecma262/#sec-map.prototype.get
3019
3106
  get: function get(key) {
@@ -3168,8 +3255,6 @@
3168
3255
  // Store setTimeout reference so promise-polyfill will be unaffected by
3169
3256
  // other code modifying setTimeout (like sinon.useFakeTimers())
3170
3257
  var setTimeoutFunc = setTimeout;
3171
- // @ts-ignore
3172
- var setImmediateFunc = typeof setImmediate !== 'undefined' ? setImmediate : null;
3173
3258
 
3174
3259
  function isArray(x) {
3175
3260
  return Boolean(x && typeof x.length !== 'undefined');
@@ -3403,10 +3488,10 @@
3403
3488
  // Use polyfill for setImmediate for performance gains
3404
3489
  Promise$1._immediateFn =
3405
3490
  // @ts-ignore
3406
- (typeof setImmediateFunc === 'function' &&
3491
+ (typeof setImmediate === 'function' &&
3407
3492
  function(fn) {
3408
3493
  // @ts-ignore
3409
- setImmediateFunc(fn);
3494
+ setImmediate(fn);
3410
3495
  }) ||
3411
3496
  function(fn) {
3412
3497
  setTimeoutFunc(fn, 0);
@@ -4225,7 +4310,7 @@
4225
4310
 
4226
4311
  var Lock = unwrapExports(browserTabsLock);
4227
4312
 
4228
- var version = '1.20.1';
4313
+ var version = '1.22.0';
4229
4314
 
4230
4315
  /**
4231
4316
  * @ignore
@@ -4253,7 +4338,7 @@
4253
4338
  /**
4254
4339
  * @ignore
4255
4340
  */
4256
- var MISSING_REFRESH_TOKEN_ERROR_MESSAGE = 'The web worker is missing the refresh token';
4341
+ var MISSING_REFRESH_TOKEN_ERROR_MESSAGE = 'Missing Refresh Token';
4257
4342
  /**
4258
4343
  * @ignore
4259
4344
  */
@@ -4388,6 +4473,20 @@
4388
4473
  return _this;
4389
4474
  }
4390
4475
  return MfaRequiredError;
4476
+ }(GenericError));
4477
+ var MissingRefreshTokenError = /** @class */ (function (_super) {
4478
+ __extends(MissingRefreshTokenError, _super);
4479
+ /* istanbul ignore next */
4480
+ function MissingRefreshTokenError(audience, scope) {
4481
+ var _this = _super.call(this, 'missing_refresh_token', "Missing Refresh Token (audience: '".concat(valueOrEmptyString(audience, [
4482
+ 'default'
4483
+ ]), "', scope: '").concat(valueOrEmptyString(scope), "')")) || this;
4484
+ _this.audience = audience;
4485
+ _this.scope = scope;
4486
+ Object.setPrototypeOf(_this, MissingRefreshTokenError.prototype);
4487
+ return _this;
4488
+ }
4489
+ return MissingRefreshTokenError;
4391
4490
  }(GenericError));
4392
4491
 
4393
4492
  var parseQueryResult = function (queryString) {
@@ -4567,7 +4666,17 @@
4567
4666
  if (typeof getCryptoSubtle() === 'undefined') {
4568
4667
  throw new Error("\n auth0-spa-js must run on a secure origin. See https://github.com/auth0/auth0-spa-js/blob/master/FAQ.md#why-do-i-get-auth0-spa-js-must-run-on-a-secure-origin for more information.\n ");
4569
4668
  }
4570
- };
4669
+ };
4670
+ /**
4671
+ * Returns an empty string when value is falsy, or when it's value is included in the exclude argument.
4672
+ * @param value The value to check
4673
+ * @param exclude An array of values that should result in an empty string.
4674
+ * @returns The value, or an empty string when falsy or included in the exclude argument.
4675
+ */
4676
+ function valueOrEmptyString(value, exclude) {
4677
+ if (exclude === void 0) { exclude = []; }
4678
+ return value && !exclude.includes(value) ? value : '';
4679
+ }
4571
4680
 
4572
4681
  function fetch(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return {ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||"get",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+","+t:t;}),t(a());},s.onerror=r,s.withCredentials="include"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null);})}
4573
4682
 
@@ -5329,6 +5438,9 @@
5329
5438
  if (options === null || options === void 0 ? void 0 : options.daysUntilExpire) {
5330
5439
  cookieAttributes.expires = options.daysUntilExpire;
5331
5440
  }
5441
+ if (options === null || options === void 0 ? void 0 : options.cookieDomain) {
5442
+ cookieAttributes.domain = options.cookieDomain;
5443
+ }
5332
5444
  esCookie_5(key, JSON.stringify(value), cookieAttributes);
5333
5445
  },
5334
5446
  remove: function (key) {
@@ -5420,7 +5532,7 @@
5420
5532
  };
5421
5533
  }
5422
5534
 
5423
- var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7DQogICAgICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7DQogICAgICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHsNCiAgICAgICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdDsNCiAgICAgICAgfTsNCiAgICAgICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7DQogICAgfTsNCg0KICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHsNCiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9DQogICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgew0KICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH0NCiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTsNCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkgew0KICAgICAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnOw0KICAgICAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgInRocm93IjogdmVyYigxKSwgInJldHVybiI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZzsNCiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9DQogICAgICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHsNCiAgICAgICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7DQogICAgICAgICAgICB3aGlsZSAoXykgdHJ5IHsNCiAgICAgICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5WyJyZXR1cm4iXSA6IG9wWzBdID8geVsidGhyb3ciXSB8fCAoKHQgPSB5WyJyZXR1cm4iXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7DQogICAgICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdOw0KICAgICAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTsNCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH0NCiAgICAgICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHsNCiAgICAgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIG9bU3ltYm9sLml0ZXJhdG9yXTsNCiAgICAgICAgaWYgKCFtKSByZXR1cm4gbzsNCiAgICAgICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH0NCiAgICAgICAgZmluYWxseSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpWyJyZXR1cm4iXSkpIG0uY2FsbChpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiBhcjsNCiAgICB9CgogICAgLyoqDQogICAgICogQGlnbm9yZQ0KICAgICAqLw0KICAgIHZhciBNSVNTSU5HX1JFRlJFU0hfVE9LRU5fRVJST1JfTUVTU0FHRSA9ICdUaGUgd2ViIHdvcmtlciBpcyBtaXNzaW5nIHRoZSByZWZyZXNoIHRva2VuJzsKCiAgICB2YXIgcmVmcmVzaFRva2VucyA9IHt9Ow0KICAgIHZhciBjYWNoZUtleSA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsgcmV0dXJuICIiLmNvbmNhdChhdWRpZW5jZSwgInwiKS5jb25jYXQoc2NvcGUpOyB9Ow0KICAgIHZhciBnZXRSZWZyZXNoVG9rZW4gPSBmdW5jdGlvbiAoYXVkaWVuY2UsIHNjb3BlKSB7DQogICAgICAgIHJldHVybiByZWZyZXNoVG9rZW5zW2NhY2hlS2V5KGF1ZGllbmNlLCBzY29wZSldOw0KICAgIH07DQogICAgdmFyIHNldFJlZnJlc2hUb2tlbiA9IGZ1bmN0aW9uIChyZWZyZXNoVG9rZW4sIGF1ZGllbmNlLCBzY29wZSkgeyByZXR1cm4gKHJlZnJlc2hUb2tlbnNbY2FjaGVLZXkoYXVkaWVuY2UsIHNjb3BlKV0gPSByZWZyZXNoVG9rZW4pOyB9Ow0KICAgIHZhciBkZWxldGVSZWZyZXNoVG9rZW4gPSBmdW5jdGlvbiAoYXVkaWVuY2UsIHNjb3BlKSB7DQogICAgICAgIHJldHVybiBkZWxldGUgcmVmcmVzaFRva2Vuc1tjYWNoZUtleShhdWRpZW5jZSwgc2NvcGUpXTsNCiAgICB9Ow0KICAgIHZhciB3YWl0ID0gZnVuY3Rpb24gKHRpbWUpIHsNCiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJldHVybiBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWUpOyB9KTsNCiAgICB9Ow0KICAgIHZhciBmb3JtRGF0YVRvT2JqZWN0ID0gZnVuY3Rpb24gKGZvcm1EYXRhKSB7DQogICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoZm9ybURhdGEpOw0KICAgICAgICB2YXIgcGFyc2VkUXVlcnkgPSB7fTsNCiAgICAgICAgcXVlcnlQYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAodmFsLCBrZXkpIHsNCiAgICAgICAgICAgIHBhcnNlZFF1ZXJ5W2tleV0gPSB2YWw7DQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4gcGFyc2VkUXVlcnk7DQogICAgfTsNCiAgICB2YXIgbWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiAoX2EpIHsNCiAgICAgICAgdmFyIF9iID0gX2EuZGF0YSwgdGltZW91dCA9IF9iLnRpbWVvdXQsIGF1dGggPSBfYi5hdXRoLCBmZXRjaFVybCA9IF9iLmZldGNoVXJsLCBmZXRjaE9wdGlvbnMgPSBfYi5mZXRjaE9wdGlvbnMsIHVzZUZvcm1EYXRhID0gX2IudXNlRm9ybURhdGEsIF9jID0gX19yZWFkKF9hLnBvcnRzLCAxKSwgcG9ydCA9IF9jWzBdOw0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHZhciBqc29uLCBfZCwgYXVkaWVuY2UsIHNjb3BlLCBib2R5LCByZWZyZXNoVG9rZW4sIGFib3J0Q29udHJvbGxlciwgcmVzcG9uc2UsIGVycm9yXzEsIGVycm9yXzI7DQogICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9lKSB7DQogICAgICAgICAgICAgICAgc3dpdGNoIChfZS5sYWJlbCkgew0KICAgICAgICAgICAgICAgICAgICBjYXNlIDA6DQogICAgICAgICAgICAgICAgICAgICAgICBfZCA9IGF1dGggfHwge30sIGF1ZGllbmNlID0gX2QuYXVkaWVuY2UsIHNjb3BlID0gX2Quc2NvcGU7DQogICAgICAgICAgICAgICAgICAgICAgICBfZS5sYWJlbCA9IDE7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMToNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLnRyeXMucHVzaChbMSwgNywgLCA4XSk7DQogICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gdXNlRm9ybURhdGENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZvcm1EYXRhVG9PYmplY3QoZmV0Y2hPcHRpb25zLmJvZHkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGZldGNoT3B0aW9ucy5ib2R5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYm9keS5yZWZyZXNoX3Rva2VuICYmIGJvZHkuZ3JhbnRfdHlwZSA9PT0gJ3JlZnJlc2hfdG9rZW4nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRva2VuID0gZ2V0UmVmcmVzaFRva2VuKGF1ZGllbmNlLCBzY29wZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWZyZXNoVG9rZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKE1JU1NJTkdfUkVGUkVTSF9UT0tFTl9FUlJPUl9NRVNTQUdFKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hPcHRpb25zLmJvZHkgPSB1c2VGb3JtRGF0YQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBVUkxTZWFyY2hQYXJhbXMoX19hc3NpZ24oX19hc3NpZ24oe30sIGJvZHkpLCB7IHJlZnJlc2hfdG9rZW46IHJlZnJlc2hUb2tlbiB9KSkudG9TdHJpbmcoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KF9fYXNzaWduKF9fYXNzaWduKHt9LCBib2R5KSwgeyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRDb250cm9sbGVyID0gdm9pZCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBBYm9ydENvbnRyb2xsZXIgPT09ICdmdW5jdGlvbicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hPcHRpb25zLnNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHZvaWQgMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLmxhYmVsID0gMjsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOg0KICAgICAgICAgICAgICAgICAgICAgICAgX2UudHJ5cy5wdXNoKFsyLCA0LCAsIDVdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIFByb21pc2UucmFjZShbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQodGltZW91dCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoKGZldGNoVXJsLCBfX2Fzc2lnbih7fSwgZmV0Y2hPcHRpb25zKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNDoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzEgPSBfZS5zZW50KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBmZXRjaCBlcnJvciwgcmVqZWN0IGBzZW5kTWVzc2FnZWAgdXNpbmcgYGVycm9yYCBrZXkgc28gdGhhdCB3ZSByZXRyeS4NCiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvcl8xLm1lc3NhZ2UNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDU6DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHJlcXVlc3QgdGltZXMgb3V0LCBhYm9ydCBpdCBhbmQgbGV0IGBzd2l0Y2hGZXRjaGAgcmFpc2UgdGhlIGVycm9yLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhYm9ydENvbnRyb2xsZXIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogIlRpbWVvdXQgd2hlbiBleGVjdXRpbmcgJ2ZldGNoJyINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCByZXNwb25zZS5qc29uKCldOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDY6DQogICAgICAgICAgICAgICAgICAgICAgICBqc29uID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24ucmVmcmVzaF90b2tlbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlZnJlc2hUb2tlbihqc29uLnJlZnJlc2hfdG9rZW4sIGF1ZGllbmNlLCBzY29wZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGpzb24ucmVmcmVzaF90b2tlbjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZVJlZnJlc2hUb2tlbihhdWRpZW5jZSwgc2NvcGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2s6IHJlc3BvbnNlLm9rLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb246IGpzb24NCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgOF07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNzoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzIgPSBfZS5zZW50KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjogew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZXJyb3JfMi5tZXNzYWdlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA4XTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzIgLypyZXR1cm4qL107DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0pOw0KICAgIH07DQogICAgLy8gRG9uJ3QgcnVuIGBhZGRFdmVudExpc3RlbmVyYCBpbiBvdXIgdGVzdHMgKHRoaXMgaXMgcmVwbGFjZWQgaW4gcm9sbHVwKQ0KICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICAqLw0KICAgIHsNCiAgICAgICAgLy8gQHRzLWlnbm9yZQ0KICAgICAgICBhZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbWVzc2FnZUhhbmRsZXIpOw0KICAgIH0KCn0pKCk7Cgo=', null, false);
5535
+ var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KICAgIC8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovDQoNCiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHsNCiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fA0KICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fA0KICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTsNCiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7DQogICAgfTsNCg0KICAgIGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7DQogICAgICAgIGlmICh0eXBlb2YgYiAhPT0gImZ1bmN0aW9uIiAmJiBiICE9PSBudWxsKQ0KICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiICsgU3RyaW5nKGIpICsgIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7DQogICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7DQogICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQ0KICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7DQogICAgfQ0KDQogICAgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7DQogICAgICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7DQogICAgICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHsNCiAgICAgICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdDsNCiAgICAgICAgfTsNCiAgICAgICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7DQogICAgfTsNCg0KICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHsNCiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9DQogICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgew0KICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH0NCiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTsNCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkgew0KICAgICAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnOw0KICAgICAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgInRocm93IjogdmVyYigxKSwgInJldHVybiI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZzsNCiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9DQogICAgICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHsNCiAgICAgICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7DQogICAgICAgICAgICB3aGlsZSAoXykgdHJ5IHsNCiAgICAgICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5WyJyZXR1cm4iXSA6IG9wWzBdID8geVsidGhyb3ciXSB8fCAoKHQgPSB5WyJyZXR1cm4iXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7DQogICAgICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdOw0KICAgICAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTsNCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH0NCiAgICAgICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHsNCiAgICAgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIG9bU3ltYm9sLml0ZXJhdG9yXTsNCiAgICAgICAgaWYgKCFtKSByZXR1cm4gbzsNCiAgICAgICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH0NCiAgICAgICAgZmluYWxseSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpWyJyZXR1cm4iXSkpIG0uY2FsbChpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiBhcjsNCiAgICB9CgogICAgLyoqDQogICAgICogUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgd2hlbiB2YWx1ZSBpcyBmYWxzeSwgb3Igd2hlbiBpdCdzIHZhbHVlIGlzIGluY2x1ZGVkIGluIHRoZSBleGNsdWRlIGFyZ3VtZW50Lg0KICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2sNCiAgICAgKiBAcGFyYW0gZXhjbHVkZSBBbiBhcnJheSBvZiB2YWx1ZXMgdGhhdCBzaG91bGQgcmVzdWx0IGluIGFuIGVtcHR5IHN0cmluZy4NCiAgICAgKiBAcmV0dXJucyBUaGUgdmFsdWUsIG9yIGFuIGVtcHR5IHN0cmluZyB3aGVuIGZhbHN5IG9yIGluY2x1ZGVkIGluIHRoZSBleGNsdWRlIGFyZ3VtZW50Lg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHZhbHVlT3JFbXB0eVN0cmluZyh2YWx1ZSwgZXhjbHVkZSkgew0KICAgICAgICBpZiAoZXhjbHVkZSA9PT0gdm9pZCAwKSB7IGV4Y2x1ZGUgPSBbXTsgfQ0KICAgICAgICByZXR1cm4gdmFsdWUgJiYgIWV4Y2x1ZGUuaW5jbHVkZXModmFsdWUpID8gdmFsdWUgOiAnJzsNCiAgICB9CgogICAgLyoqDQogICAgICogRm9yIGNvbnRleHQgb24gdGhlIGlzdGFuYnVsIGlnbm9yZSBzdGF0ZW1lbnRzIGJlbG93LCBzZWU6DQogICAgICogaHR0cHM6Ly9naXRodWIuY29tL2dvdHdhcmxvc3QvaXN0YW5idWwvaXNzdWVzLzY5MA0KICAgICAqLw0KICAgIC8qKg0KICAgICAqIFRocm93biB3aGVuIG5ldHdvcmsgcmVxdWVzdHMgdG8gdGhlIEF1dGggc2VydmVyIGZhaWwuDQogICAgICovDQogICAgdmFyIEdlbmVyaWNFcnJvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsNCiAgICAgICAgX19leHRlbmRzKEdlbmVyaWNFcnJvciwgX3N1cGVyKTsNCiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8NCiAgICAgICAgZnVuY3Rpb24gR2VuZXJpY0Vycm9yKGVycm9yLCBlcnJvcl9kZXNjcmlwdGlvbikgew0KICAgICAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZXJyb3JfZGVzY3JpcHRpb24pIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5lcnJvciA9IGVycm9yOw0KICAgICAgICAgICAgX3RoaXMuZXJyb3JfZGVzY3JpcHRpb24gPSBlcnJvcl9kZXNjcmlwdGlvbjsNCiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgR2VuZXJpY0Vycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgR2VuZXJpY0Vycm9yLmZyb21QYXlsb2FkID0gZnVuY3Rpb24gKF9hKSB7DQogICAgICAgICAgICB2YXIgZXJyb3IgPSBfYS5lcnJvciwgZXJyb3JfZGVzY3JpcHRpb24gPSBfYS5lcnJvcl9kZXNjcmlwdGlvbjsNCiAgICAgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0Vycm9yKGVycm9yLCBlcnJvcl9kZXNjcmlwdGlvbik7DQogICAgICAgIH07DQogICAgICAgIHJldHVybiBHZW5lcmljRXJyb3I7DQogICAgfShFcnJvcikpOw0KICAgIC8qKg0KICAgICAqIFRocm93biB3aGVuIGhhbmRsaW5nIHRoZSByZWRpcmVjdCBjYWxsYmFjayBmYWlscywgd2lsbCBiZSBvbmUgb2YgQXV0aDAncw0KICAgICAqIEF1dGhlbnRpY2F0aW9uIEFQSSdzIFN0YW5kYXJkIEVycm9yIFJlc3BvbnNlczogaHR0cHM6Ly9hdXRoMC5jb20vZG9jcy9hcGkvYXV0aGVudGljYXRpb24/amF2YXNjcmlwdCNzdGFuZGFyZC1lcnJvci1yZXNwb25zZXMNCiAgICAgKi8NCiAgICAvKiogQGNsYXNzICovICgoZnVuY3Rpb24gKF9zdXBlcikgew0KICAgICAgICBfX2V4dGVuZHMoQXV0aGVudGljYXRpb25FcnJvciwgX3N1cGVyKTsNCiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8NCiAgICAgICAgZnVuY3Rpb24gQXV0aGVudGljYXRpb25FcnJvcihlcnJvciwgZXJyb3JfZGVzY3JpcHRpb24sIHN0YXRlLCBhcHBTdGF0ZSkgew0KICAgICAgICAgICAgaWYgKGFwcFN0YXRlID09PSB2b2lkIDApIHsgYXBwU3RhdGUgPSBudWxsOyB9DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBlcnJvciwgZXJyb3JfZGVzY3JpcHRpb24pIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5zdGF0ZSA9IHN0YXRlOw0KICAgICAgICAgICAgX3RoaXMuYXBwU3RhdGUgPSBhcHBTdGF0ZTsNCiAgICAgICAgICAgIC8vaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0LXdpa2kvYmxvYi9tYXN0ZXIvQnJlYWtpbmctQ2hhbmdlcy5tZCNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmsNCiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgQXV0aGVudGljYXRpb25FcnJvci5wcm90b3R5cGUpOw0KICAgICAgICAgICAgcmV0dXJuIF90aGlzOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkVycm9yOw0KICAgIH0pKEdlbmVyaWNFcnJvcikpOw0KICAgIC8qKg0KICAgICAqIFRocm93biB3aGVuIHNpbGVudCBhdXRoIHRpbWVzIG91dCAodXN1YWxseSBkdWUgdG8gYSBjb25maWd1cmF0aW9uIGlzc3VlKSBvcg0KICAgICAqIHdoZW4gbmV0d29yayByZXF1ZXN0cyB0byB0aGUgQXV0aCBzZXJ2ZXIgdGltZW91dC4NCiAgICAgKi8NCiAgICB2YXIgVGltZW91dEVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgew0KICAgICAgICBfX2V4dGVuZHMoVGltZW91dEVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBUaW1lb3V0RXJyb3IoKSB7DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCAndGltZW91dCcsICdUaW1lb3V0JykgfHwgdGhpczsNCiAgICAgICAgICAgIC8vaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0LXdpa2kvYmxvYi9tYXN0ZXIvQnJlYWtpbmctQ2hhbmdlcy5tZCNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmsNCiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgVGltZW91dEVycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIFRpbWVvdXRFcnJvcjsNCiAgICB9KEdlbmVyaWNFcnJvcikpOw0KICAgIC8qKg0KICAgICAqIEVycm9yIHRocm93biB3aGVuIHRoZSBsb2dpbiBwb3B1cCB0aW1lcyBvdXQgKGlmIHRoZSB1c2VyIGRvZXMgbm90IGNvbXBsZXRlIGF1dGgpDQogICAgICovDQogICAgLyoqIEBjbGFzcyAqLyAoKGZ1bmN0aW9uIChfc3VwZXIpIHsNCiAgICAgICAgX19leHRlbmRzKFBvcHVwVGltZW91dEVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBQb3B1cFRpbWVvdXRFcnJvcihwb3B1cCkgew0KICAgICAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpczsNCiAgICAgICAgICAgIF90aGlzLnBvcHVwID0gcG9wdXA7DQogICAgICAgICAgICAvL2h0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC13aWtpL2Jsb2IvbWFzdGVyL0JyZWFraW5nLUNoYW5nZXMubWQjZXh0ZW5kaW5nLWJ1aWx0LWlucy1saWtlLWVycm9yLWFycmF5LWFuZC1tYXAtbWF5LW5vLWxvbmdlci13b3JrDQogICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoX3RoaXMsIFBvcHVwVGltZW91dEVycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIFBvcHVwVGltZW91dEVycm9yOw0KICAgIH0pKFRpbWVvdXRFcnJvcikpOw0KICAgIC8qKiBAY2xhc3MgKi8gKChmdW5jdGlvbiAoX3N1cGVyKSB7DQogICAgICAgIF9fZXh0ZW5kcyhQb3B1cENhbmNlbGxlZEVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBQb3B1cENhbmNlbGxlZEVycm9yKHBvcHVwKSB7DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCAnY2FuY2VsbGVkJywgJ1BvcHVwIGNsb3NlZCcpIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5wb3B1cCA9IHBvcHVwOw0KICAgICAgICAgICAgLy9odHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQtd2lraS9ibG9iL21hc3Rlci9CcmVha2luZy1DaGFuZ2VzLm1kI2V4dGVuZGluZy1idWlsdC1pbnMtbGlrZS1lcnJvci1hcnJheS1hbmQtbWFwLW1heS1uby1sb25nZXItd29yaw0KICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKF90aGlzLCBQb3B1cENhbmNlbGxlZEVycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIFBvcHVwQ2FuY2VsbGVkRXJyb3I7DQogICAgfSkoR2VuZXJpY0Vycm9yKSk7DQogICAgLyoqDQogICAgICogRXJyb3IgdGhyb3duIHdoZW4gdGhlIHRva2VuIGV4Y2hhbmdlIHJlc3VsdHMgaW4gYSBgbWZhX3JlcXVpcmVkYCBlcnJvcg0KICAgICAqLw0KICAgIC8qKiBAY2xhc3MgKi8gKChmdW5jdGlvbiAoX3N1cGVyKSB7DQogICAgICAgIF9fZXh0ZW5kcyhNZmFSZXF1aXJlZEVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBNZmFSZXF1aXJlZEVycm9yKGVycm9yLCBlcnJvcl9kZXNjcmlwdGlvbiwgbWZhX3Rva2VuKSB7DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBlcnJvciwgZXJyb3JfZGVzY3JpcHRpb24pIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5tZmFfdG9rZW4gPSBtZmFfdG9rZW47DQogICAgICAgICAgICAvL2h0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC13aWtpL2Jsb2IvbWFzdGVyL0JyZWFraW5nLUNoYW5nZXMubWQjZXh0ZW5kaW5nLWJ1aWx0LWlucy1saWtlLWVycm9yLWFycmF5LWFuZC1tYXAtbWF5LW5vLWxvbmdlci13b3JrDQogICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoX3RoaXMsIE1mYVJlcXVpcmVkRXJyb3IucHJvdG90eXBlKTsNCiAgICAgICAgICAgIHJldHVybiBfdGhpczsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gTWZhUmVxdWlyZWRFcnJvcjsNCiAgICB9KShHZW5lcmljRXJyb3IpKTsNCiAgICB2YXIgTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgew0KICAgICAgICBfX2V4dGVuZHMoTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBNaXNzaW5nUmVmcmVzaFRva2VuRXJyb3IoYXVkaWVuY2UsIHNjb3BlKSB7DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCAnbWlzc2luZ19yZWZyZXNoX3Rva2VuJywgIk1pc3NpbmcgUmVmcmVzaCBUb2tlbiAoYXVkaWVuY2U6ICciLmNvbmNhdCh2YWx1ZU9yRW1wdHlTdHJpbmcoYXVkaWVuY2UsIFsNCiAgICAgICAgICAgICAgICAnZGVmYXVsdCcNCiAgICAgICAgICAgIF0pLCAiJywgc2NvcGU6ICciKS5jb25jYXQodmFsdWVPckVtcHR5U3RyaW5nKHNjb3BlKSwgIicpIikpIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5hdWRpZW5jZSA9IGF1ZGllbmNlOw0KICAgICAgICAgICAgX3RoaXMuc2NvcGUgPSBzY29wZTsNCiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIE1pc3NpbmdSZWZyZXNoVG9rZW5FcnJvcjsNCiAgICB9KEdlbmVyaWNFcnJvcikpOwoKICAgIHZhciByZWZyZXNoVG9rZW5zID0ge307DQogICAgdmFyIGNhY2hlS2V5ID0gZnVuY3Rpb24gKGF1ZGllbmNlLCBzY29wZSkgeyByZXR1cm4gIiIuY29uY2F0KGF1ZGllbmNlLCAifCIpLmNvbmNhdChzY29wZSk7IH07DQogICAgdmFyIGdldFJlZnJlc2hUb2tlbiA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsNCiAgICAgICAgcmV0dXJuIHJlZnJlc2hUb2tlbnNbY2FjaGVLZXkoYXVkaWVuY2UsIHNjb3BlKV07DQogICAgfTsNCiAgICB2YXIgc2V0UmVmcmVzaFRva2VuID0gZnVuY3Rpb24gKHJlZnJlc2hUb2tlbiwgYXVkaWVuY2UsIHNjb3BlKSB7IHJldHVybiAocmVmcmVzaFRva2Vuc1tjYWNoZUtleShhdWRpZW5jZSwgc2NvcGUpXSA9IHJlZnJlc2hUb2tlbik7IH07DQogICAgdmFyIGRlbGV0ZVJlZnJlc2hUb2tlbiA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsNCiAgICAgICAgcmV0dXJuIGRlbGV0ZSByZWZyZXNoVG9rZW5zW2NhY2hlS2V5KGF1ZGllbmNlLCBzY29wZSldOw0KICAgIH07DQogICAgdmFyIHdhaXQgPSBmdW5jdGlvbiAodGltZSkgew0KICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZSk7IH0pOw0KICAgIH07DQogICAgdmFyIGZvcm1EYXRhVG9PYmplY3QgPSBmdW5jdGlvbiAoZm9ybURhdGEpIHsNCiAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhmb3JtRGF0YSk7DQogICAgICAgIHZhciBwYXJzZWRRdWVyeSA9IHt9Ow0KICAgICAgICBxdWVyeVBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWwsIGtleSkgew0KICAgICAgICAgICAgcGFyc2VkUXVlcnlba2V5XSA9IHZhbDsNCiAgICAgICAgfSk7DQogICAgICAgIHJldHVybiBwYXJzZWRRdWVyeTsNCiAgICB9Ow0KICAgIHZhciBtZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uIChfYSkgew0KICAgICAgICB2YXIgX2IgPSBfYS5kYXRhLCB0aW1lb3V0ID0gX2IudGltZW91dCwgYXV0aCA9IF9iLmF1dGgsIGZldGNoVXJsID0gX2IuZmV0Y2hVcmwsIGZldGNoT3B0aW9ucyA9IF9iLmZldGNoT3B0aW9ucywgdXNlRm9ybURhdGEgPSBfYi51c2VGb3JtRGF0YSwgX2MgPSBfX3JlYWQoX2EucG9ydHMsIDEpLCBwb3J0ID0gX2NbMF07DQogICAgICAgIHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdmFyIGpzb24sIF9kLCBhdWRpZW5jZSwgc2NvcGUsIGJvZHksIHJlZnJlc2hUb2tlbiwgYWJvcnRDb250cm9sbGVyLCByZXNwb25zZSwgZXJyb3JfMSwgZXJyb3JfMjsNCiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2UpIHsNCiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9lLmxhYmVsKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMDoNCiAgICAgICAgICAgICAgICAgICAgICAgIF9kID0gYXV0aCB8fCB7fSwgYXVkaWVuY2UgPSBfZC5hdWRpZW5jZSwgc2NvcGUgPSBfZC5zY29wZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLmxhYmVsID0gMTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOg0KICAgICAgICAgICAgICAgICAgICAgICAgX2UudHJ5cy5wdXNoKFsxLCA3LCAsIDhdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSB1c2VGb3JtRGF0YQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZm9ybURhdGFUb09iamVjdChmZXRjaE9wdGlvbnMuYm9keSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZmV0Y2hPcHRpb25zLmJvZHkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFib2R5LnJlZnJlc2hfdG9rZW4gJiYgYm9keS5ncmFudF90eXBlID09PSAncmVmcmVzaF90b2tlbicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9rZW4gPSBnZXRSZWZyZXNoVG9rZW4oYXVkaWVuY2UsIHNjb3BlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZnJlc2hUb2tlbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yKGF1ZGllbmNlLCBzY29wZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoT3B0aW9ucy5ib2R5ID0gdXNlRm9ybURhdGENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXcgVVJMU2VhcmNoUGFyYW1zKF9fYXNzaWduKF9fYXNzaWduKHt9LCBib2R5KSwgeyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSkpLnRvU3RyaW5nKCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBKU09OLnN0cmluZ2lmeShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYm9keSksIHsgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuIH0pKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0Q29udHJvbGxlciA9IHZvaWQgMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQWJvcnRDb250cm9sbGVyID09PSAnZnVuY3Rpb24nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoT3B0aW9ucy5zaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB2b2lkIDA7DQogICAgICAgICAgICAgICAgICAgICAgICBfZS5sYWJlbCA9IDI7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMjoNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLnRyeXMucHVzaChbMiwgNCwgLCA1XSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBQcm9taXNlLnJhY2UoWw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0KHRpbWVvdXQpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaChmZXRjaFVybCwgX19hc3NpZ24oe30sIGZldGNoT3B0aW9ucykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDM6DQogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9lLnNlbnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6DQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl8xID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmV0Y2ggZXJyb3IsIHJlamVjdCBgc2VuZE1lc3NhZ2VgIHVzaW5nIGBlcnJvcmAga2V5IHNvIHRoYXQgd2UgcmV0cnkuDQogICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JfMS5tZXNzYWdlDQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA1Og0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSByZXF1ZXN0IHRpbWVzIG91dCwgYWJvcnQgaXQgYW5kIGxldCBgc3dpdGNoRmV0Y2hgIHJhaXNlIHRoZSBlcnJvci4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWJvcnRDb250cm9sbGVyKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICJUaW1lb3V0IHdoZW4gZXhlY3V0aW5nICdmZXRjaCciDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgcmVzcG9uc2UuanNvbigpXTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA2Og0KICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IF9lLnNlbnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc29uLnJlZnJlc2hfdG9rZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZWZyZXNoVG9rZW4oanNvbi5yZWZyZXNoX3Rva2VuLCBhdWRpZW5jZSwgc2NvcGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqc29uLnJlZnJlc2hfdG9rZW47DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVSZWZyZXNoVG9rZW4oYXVkaWVuY2UsIHNjb3BlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiByZXNwb25zZS5vaywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uOiBqc29uDQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDhdOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDc6DQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl8yID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb246IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGVycm9yXzIubWVzc2FnZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgOF07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgODogcmV0dXJuIFsyIC8qcmV0dXJuKi9dOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICB9Ow0KICAgIC8vIERvbid0IHJ1biBgYWRkRXZlbnRMaXN0ZW5lcmAgaW4gb3VyIHRlc3RzICh0aGlzIGlzIHJlcGxhY2VkIGluIHJvbGx1cCkNCiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAgKi8NCiAgICB7DQogICAgICAgIC8vIEB0cy1pZ25vcmUNCiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIG1lc3NhZ2VIYW5kbGVyKTsNCiAgICB9Cgp9KSgpOwoK', null, false);
5424
5536
  /* eslint-enable */
5425
5537
 
5426
5538
  var isIE11 = function () { return /Trident.*rv:11\.0/.test(navigator.userAgent); };
@@ -5652,6 +5764,8 @@
5652
5764
  this.worker = new WorkerFactory();
5653
5765
  }
5654
5766
  this.customOptions = getCustomInitialOptions(options);
5767
+ this.useRefreshTokensFallback =
5768
+ this.options.useRefreshTokensFallback !== false;
5655
5769
  }
5656
5770
  Auth0Client.prototype._url = function (path) {
5657
5771
  var auth0Client = encodeURIComponent(btoa(JSON.stringify(this.options.auth0Client || DEFAULT_AUTH0_CLIENT)));
@@ -5698,7 +5812,8 @@
5698
5812
  Auth0Client.prototype._processOrgIdHint = function (organizationId) {
5699
5813
  if (organizationId) {
5700
5814
  this.cookieStorage.save(this.orgHintCookieName, organizationId, {
5701
- daysUntilExpire: this.sessionCheckExpiryDays
5815
+ daysUntilExpire: this.sessionCheckExpiryDays,
5816
+ cookieDomain: this.options.cookieDomain
5702
5817
  });
5703
5818
  }
5704
5819
  else {
@@ -5774,6 +5889,9 @@
5774
5889
  config = config || {};
5775
5890
  if (!config.popup) {
5776
5891
  config.popup = openPopup('');
5892
+ if (!config.popup) {
5893
+ throw new Error('Unable to open a popup for loginWithPopup - window.open returned `null`');
5894
+ }
5777
5895
  }
5778
5896
  authorizeOptions = __rest(options, []);
5779
5897
  stateIn = encode(createRandomString());
@@ -5818,7 +5936,8 @@
5818
5936
  case 5:
5819
5937
  _a.sent();
5820
5938
  this.cookieStorage.save(this.isAuthenticatedCookieName, true, {
5821
- daysUntilExpire: this.sessionCheckExpiryDays
5939
+ daysUntilExpire: this.sessionCheckExpiryDays,
5940
+ cookieDomain: this.options.cookieDomain
5822
5941
  });
5823
5942
  this._processOrgIdHint(decodedToken.claims.org_id);
5824
5943
  return [2 /*return*/];
@@ -5982,7 +6101,8 @@
5982
6101
  case 3:
5983
6102
  _b.sent();
5984
6103
  this.cookieStorage.save(this.isAuthenticatedCookieName, true, {
5985
- daysUntilExpire: this.sessionCheckExpiryDays
6104
+ daysUntilExpire: this.sessionCheckExpiryDays,
6105
+ cookieDomain: this.options.cookieDomain
5986
6106
  });
5987
6107
  this._processOrgIdHint(decodedToken.claims.org_id);
5988
6108
  return [2 /*return*/, {
@@ -6030,7 +6150,8 @@
6030
6150
  else {
6031
6151
  // Migrate the existing cookie to the new name scoped by client ID
6032
6152
  this.cookieStorage.save(this.isAuthenticatedCookieName, true, {
6033
- daysUntilExpire: this.sessionCheckExpiryDays
6153
+ daysUntilExpire: this.sessionCheckExpiryDays,
6154
+ cookieDomain: this.options.cookieDomain
6034
6155
  });
6035
6156
  this.cookieStorage.remove(OLD_IS_AUTHENTICATED_COOKIE_NAME);
6036
6157
  }
@@ -6066,7 +6187,7 @@
6066
6187
  *
6067
6188
  * A new token will be obtained either by opening an iframe or a
6068
6189
  * refresh token (if `useRefreshTokens` is `true`)
6069
-
6190
+
6070
6191
  * If iframes are used, opens an iframe with the `/authorize` URL
6071
6192
  * using the parameters provided as arguments. Random and secure `state`
6072
6193
  * and `nonce` parameters will be auto-generated. If the response is successful,
@@ -6156,7 +6277,8 @@
6156
6277
  case 11:
6157
6278
  _b.sent();
6158
6279
  this.cookieStorage.save(this.isAuthenticatedCookieName, true, {
6159
- daysUntilExpire: this.sessionCheckExpiryDays
6280
+ daysUntilExpire: this.sessionCheckExpiryDays,
6281
+ cookieDomain: this.options.cookieDomain
6160
6282
  });
6161
6283
  if (options.detailedResponse) {
6162
6284
  id_token = authResult.id_token, access_token = authResult.access_token, oauthTokenScope = authResult.oauthTokenScope, expires_in = authResult.expires_in;
@@ -6371,10 +6493,12 @@
6371
6493
  }))];
6372
6494
  case 1:
6373
6495
  cache = _a.sent();
6374
- if (!((!cache || !cache.refresh_token) && !this.worker)) return [3 /*break*/, 3];
6496
+ if (!((!cache || !cache.refresh_token) && !this.worker)) return [3 /*break*/, 4];
6497
+ if (!this.useRefreshTokensFallback) return [3 /*break*/, 3];
6375
6498
  return [4 /*yield*/, this._getTokenFromIFrame(options)];
6376
6499
  case 2: return [2 /*return*/, _a.sent()];
6377
- case 3:
6500
+ case 3: throw new MissingRefreshTokenError(options.audience || 'default', options.scope);
6501
+ case 4:
6378
6502
  redirect_uri = options.redirect_uri ||
6379
6503
  this.options.redirect_uri ||
6380
6504
  window.location.origin;
@@ -6382,31 +6506,32 @@
6382
6506
  timeout = typeof options.timeoutInSeconds === 'number'
6383
6507
  ? options.timeoutInSeconds * 1000
6384
6508
  : null;
6385
- _a.label = 4;
6386
- case 4:
6387
- _a.trys.push([4, 6, , 9]);
6388
- return [4 /*yield*/, oauthToken(__assign(__assign(__assign(__assign(__assign({}, this.customOptions), customOptions), { audience: audience, scope: scope, baseUrl: this.domainUrl, client_id: this.options.client_id, grant_type: 'refresh_token', refresh_token: cache && cache.refresh_token, redirect_uri: redirect_uri }), (timeout && { timeout: timeout })), { auth0Client: this.options.auth0Client, useFormData: this.options.useFormData, timeout: this.httpTimeoutMs }), this.worker)];
6509
+ _a.label = 5;
6389
6510
  case 5:
6390
- tokenResult = _a.sent();
6391
- return [3 /*break*/, 9];
6511
+ _a.trys.push([5, 7, , 10]);
6512
+ return [4 /*yield*/, oauthToken(__assign(__assign(__assign(__assign(__assign({}, this.customOptions), customOptions), { audience: audience, scope: scope, baseUrl: this.domainUrl, client_id: this.options.client_id, grant_type: 'refresh_token', refresh_token: cache && cache.refresh_token, redirect_uri: redirect_uri }), (timeout && { timeout: timeout })), { auth0Client: this.options.auth0Client, useFormData: this.options.useFormData, timeout: this.httpTimeoutMs }), this.worker)];
6392
6513
  case 6:
6514
+ tokenResult = _a.sent();
6515
+ return [3 /*break*/, 10];
6516
+ case 7:
6393
6517
  e_2 = _a.sent();
6394
6518
  if (!
6395
6519
  // The web worker didn't have a refresh token in memory so
6396
6520
  // fallback to an iframe.
6397
- (e_2.message === MISSING_REFRESH_TOKEN_ERROR_MESSAGE ||
6521
+ ((e_2.message.indexOf(MISSING_REFRESH_TOKEN_ERROR_MESSAGE) > -1 ||
6398
6522
  // A refresh token was found, but is it no longer valid.
6399
6523
  // Fallback to an iframe.
6400
6524
  (e_2.message &&
6401
- e_2.message.indexOf(INVALID_REFRESH_TOKEN_ERROR_MESSAGE) > -1)))
6525
+ e_2.message.indexOf(INVALID_REFRESH_TOKEN_ERROR_MESSAGE) > -1)) &&
6526
+ this.useRefreshTokensFallback))
6402
6527
  // The web worker didn't have a refresh token in memory so
6403
6528
  // fallback to an iframe.
6404
- return [3 /*break*/, 8];
6529
+ return [3 /*break*/, 9];
6405
6530
  return [4 /*yield*/, this._getTokenFromIFrame(options)];
6406
- case 7: return [2 /*return*/, _a.sent()];
6407
- case 8: throw e_2;
6408
- case 9: return [4 /*yield*/, this._verifyIdToken(tokenResult.id_token)];
6409
- case 10:
6531
+ case 8: return [2 /*return*/, _a.sent()];
6532
+ case 9: throw e_2;
6533
+ case 10: return [4 /*yield*/, this._verifyIdToken(tokenResult.id_token)];
6534
+ case 11:
6410
6535
  decodedToken = _a.sent();
6411
6536
  return [2 /*return*/, __assign(__assign({}, tokenResult), { decodedToken: decodedToken, scope: options.scope, oauthTokenScope: tokenResult.scope, audience: options.audience || 'default' })];
6412
6537
  }