@auth0/auth0-spa-js 1.21.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.
- package/README.md +1 -1
- package/dist/auth0-spa-js.development.js +132 -80
- package/dist/auth0-spa-js.development.js.map +1 -1
- package/dist/auth0-spa-js.production.esm.js +1 -1
- package/dist/auth0-spa-js.production.esm.js.map +1 -1
- package/dist/auth0-spa-js.production.js +1 -1
- package/dist/auth0-spa-js.production.js.map +1 -1
- package/dist/lib/auth0-spa-js.cjs.js +132 -80
- package/dist/lib/auth0-spa-js.cjs.js.map +1 -1
- package/dist/typings/Auth0Client.d.ts +1 -0
- package/dist/typings/constants.d.ts +1 -1
- package/dist/typings/errors.d.ts +5 -0
- package/dist/typings/global.d.ts +20 -0
- package/dist/typings/utils.d.ts +7 -0
- package/dist/typings/version.d.ts +1 -1
- package/package.json +2 -2
- package/src/Auth0Client.ts +24 -7
- package/src/constants.ts +1 -2
- package/src/errors.ts +15 -0
- package/src/global.ts +21 -0
- package/src/utils.ts +10 -0
- package/src/version.ts +1 -1
- package/src/worker/token.worker.ts +2 -2
|
@@ -406,10 +406,10 @@ var shared = createCommonjsModule(function (module) {
|
|
|
406
406
|
(module.exports = function (key, value) {
|
|
407
407
|
return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});
|
|
408
408
|
})('versions', []).push({
|
|
409
|
-
version: '3.22.
|
|
409
|
+
version: '3.22.4',
|
|
410
410
|
mode: 'global',
|
|
411
411
|
copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',
|
|
412
|
-
license: 'https://github.com/zloirock/core-js/blob/v3.22.
|
|
412
|
+
license: 'https://github.com/zloirock/core-js/blob/v3.22.4/LICENSE',
|
|
413
413
|
source: 'https://github.com/zloirock/core-js'
|
|
414
414
|
});
|
|
415
415
|
});
|
|
@@ -585,6 +585,21 @@ var createNonEnumerableProperty = descriptors ? function (object, key, value) {
|
|
|
585
585
|
return object;
|
|
586
586
|
};
|
|
587
587
|
|
|
588
|
+
var FunctionPrototype$1 = Function.prototype;
|
|
589
|
+
// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe
|
|
590
|
+
var getDescriptor = descriptors && Object.getOwnPropertyDescriptor;
|
|
591
|
+
|
|
592
|
+
var EXISTS = hasOwnProperty_1(FunctionPrototype$1, 'name');
|
|
593
|
+
// additional protection from minified / mangled / dropped function names
|
|
594
|
+
var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
|
|
595
|
+
var CONFIGURABLE = EXISTS && (!descriptors || (descriptors && getDescriptor(FunctionPrototype$1, 'name').configurable));
|
|
596
|
+
|
|
597
|
+
var functionName = {
|
|
598
|
+
EXISTS: EXISTS,
|
|
599
|
+
PROPER: PROPER,
|
|
600
|
+
CONFIGURABLE: CONFIGURABLE
|
|
601
|
+
};
|
|
602
|
+
|
|
588
603
|
var functionToString = functionUncurryThis(Function.toString);
|
|
589
604
|
|
|
590
605
|
// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
|
|
@@ -668,50 +683,56 @@ var internalState = {
|
|
|
668
683
|
getterFor: getterFor
|
|
669
684
|
};
|
|
670
685
|
|
|
671
|
-
var
|
|
672
|
-
|
|
673
|
-
var
|
|
674
|
-
|
|
675
|
-
var EXISTS = hasOwnProperty_1(FunctionPrototype$1, 'name');
|
|
676
|
-
// additional protection from minified / mangled / dropped function names
|
|
677
|
-
var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
|
|
678
|
-
var CONFIGURABLE = EXISTS && (!descriptors || (descriptors && getDescriptor(FunctionPrototype$1, 'name').configurable));
|
|
686
|
+
var makeBuiltIn_1 = createCommonjsModule(function (module) {
|
|
687
|
+
var defineProperty = objectDefineProperty.f;
|
|
688
|
+
var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE;
|
|
679
689
|
|
|
680
|
-
var functionName = {
|
|
681
|
-
EXISTS: EXISTS,
|
|
682
|
-
PROPER: PROPER,
|
|
683
|
-
CONFIGURABLE: CONFIGURABLE
|
|
684
|
-
};
|
|
685
690
|
|
|
686
|
-
var redefine = createCommonjsModule(function (module) {
|
|
687
|
-
var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE;
|
|
688
691
|
|
|
689
|
-
var getInternalState = internalState.get;
|
|
690
692
|
var enforceInternalState = internalState.enforce;
|
|
693
|
+
var getInternalState = internalState.get;
|
|
694
|
+
|
|
695
|
+
var CONFIGURABLE_LENGTH = !fails(function () {
|
|
696
|
+
return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;
|
|
697
|
+
});
|
|
698
|
+
|
|
691
699
|
var TEMPLATE = String(String).split('String');
|
|
692
700
|
|
|
693
|
-
|
|
701
|
+
var makeBuiltIn = module.exports = function (value, name, options) {
|
|
702
|
+
if (String(name).slice(0, 7) === 'Symbol(') {
|
|
703
|
+
name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
|
|
704
|
+
}
|
|
705
|
+
if (options && options.getter) name = 'get ' + name;
|
|
706
|
+
if (options && options.setter) name = 'set ' + name;
|
|
707
|
+
if (!hasOwnProperty_1(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
|
|
708
|
+
defineProperty(value, 'name', { value: name, configurable: true });
|
|
709
|
+
}
|
|
710
|
+
if (CONFIGURABLE_LENGTH && options && hasOwnProperty_1(options, 'arity') && value.length !== options.arity) {
|
|
711
|
+
defineProperty(value, 'length', { value: options.arity });
|
|
712
|
+
}
|
|
713
|
+
var state = enforceInternalState(value);
|
|
714
|
+
if (!hasOwnProperty_1(state, 'source')) {
|
|
715
|
+
state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
|
|
716
|
+
} return value;
|
|
717
|
+
};
|
|
718
|
+
|
|
719
|
+
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
|
|
720
|
+
// eslint-disable-next-line no-extend-native -- required
|
|
721
|
+
Function.prototype.toString = makeBuiltIn(function toString() {
|
|
722
|
+
return isCallable(this) && getInternalState(this).source || inspectSource(this);
|
|
723
|
+
}, 'toString');
|
|
724
|
+
});
|
|
725
|
+
|
|
726
|
+
var defineBuiltIn = function (O, key, value, options) {
|
|
694
727
|
var unsafe = options ? !!options.unsafe : false;
|
|
695
728
|
var simple = options ? !!options.enumerable : false;
|
|
696
729
|
var noTargetGet = options ? !!options.noTargetGet : false;
|
|
697
730
|
var name = options && options.name !== undefined ? options.name : key;
|
|
698
|
-
|
|
699
|
-
if (isCallable(value)) {
|
|
700
|
-
if (String(name).slice(0, 7) === 'Symbol(') {
|
|
701
|
-
name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
|
|
702
|
-
}
|
|
703
|
-
if (!hasOwnProperty_1(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
|
|
704
|
-
createNonEnumerableProperty(value, 'name', name);
|
|
705
|
-
}
|
|
706
|
-
state = enforceInternalState(value);
|
|
707
|
-
if (!state.source) {
|
|
708
|
-
state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
|
|
709
|
-
}
|
|
710
|
-
}
|
|
731
|
+
if (isCallable(value)) makeBuiltIn_1(value, name, options);
|
|
711
732
|
if (O === global_1) {
|
|
712
733
|
if (simple) O[key] = value;
|
|
713
734
|
else setGlobal(key, value);
|
|
714
|
-
return;
|
|
735
|
+
return O;
|
|
715
736
|
} else if (!unsafe) {
|
|
716
737
|
delete O[key];
|
|
717
738
|
} else if (!noTargetGet && O[key]) {
|
|
@@ -719,11 +740,8 @@ var TEMPLATE = String(String).split('String');
|
|
|
719
740
|
}
|
|
720
741
|
if (simple) O[key] = value;
|
|
721
742
|
else createNonEnumerableProperty(O, key, value);
|
|
722
|
-
|
|
723
|
-
}
|
|
724
|
-
return isCallable(this) && getInternalState(this).source || inspectSource(this);
|
|
725
|
-
});
|
|
726
|
-
});
|
|
743
|
+
return O;
|
|
744
|
+
};
|
|
727
745
|
|
|
728
746
|
var ceil = Math.ceil;
|
|
729
747
|
var floor = Math.floor;
|
|
@@ -930,8 +948,7 @@ var _export = function (options, source) {
|
|
|
930
948
|
if (options.sham || (targetProperty && targetProperty.sham)) {
|
|
931
949
|
createNonEnumerableProperty(sourceProperty, 'sham', true);
|
|
932
950
|
}
|
|
933
|
-
|
|
934
|
-
redefine(target, key, sourceProperty, options);
|
|
951
|
+
defineBuiltIn(target, key, sourceProperty, options);
|
|
935
952
|
}
|
|
936
953
|
};
|
|
937
954
|
|
|
@@ -1171,7 +1188,7 @@ var FORCED$2 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;
|
|
|
1171
1188
|
// `Array.prototype.concat` method
|
|
1172
1189
|
// https://tc39.es/ecma262/#sec-array.prototype.concat
|
|
1173
1190
|
// with adding support of @@isConcatSpreadable and @@species
|
|
1174
|
-
_export({ target: 'Array', proto: true, forced: FORCED$2 }, {
|
|
1191
|
+
_export({ target: 'Array', proto: true, arity: 1, forced: FORCED$2 }, {
|
|
1175
1192
|
// eslint-disable-next-line no-unused-vars -- required for `.length`
|
|
1176
1193
|
concat: function concat(arg) {
|
|
1177
1194
|
var O = toObject(this);
|
|
@@ -1203,7 +1220,7 @@ var objectToString = toStringTagSupport ? {}.toString : function toString() {
|
|
|
1203
1220
|
// `Object.prototype.toString` method
|
|
1204
1221
|
// https://tc39.es/ecma262/#sec-object.prototype.tostring
|
|
1205
1222
|
if (!toStringTagSupport) {
|
|
1206
|
-
|
|
1223
|
+
defineBuiltIn(Object.prototype, 'toString', objectToString, { unsafe: true });
|
|
1207
1224
|
}
|
|
1208
1225
|
|
|
1209
1226
|
// `Object.keys` method
|
|
@@ -1385,9 +1402,9 @@ var symbolDefineToPrimitive = function () {
|
|
|
1385
1402
|
// `Symbol.prototype[@@toPrimitive]` method
|
|
1386
1403
|
// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
|
|
1387
1404
|
// eslint-disable-next-line no-unused-vars -- required for .length
|
|
1388
|
-
|
|
1405
|
+
defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {
|
|
1389
1406
|
return functionCall(valueOf, this);
|
|
1390
|
-
});
|
|
1407
|
+
}, { arity: 1 });
|
|
1391
1408
|
}
|
|
1392
1409
|
};
|
|
1393
1410
|
|
|
@@ -1621,11 +1638,11 @@ if (!nativeSymbol) {
|
|
|
1621
1638
|
|
|
1622
1639
|
SymbolPrototype$1 = $Symbol[PROTOTYPE];
|
|
1623
1640
|
|
|
1624
|
-
|
|
1641
|
+
defineBuiltIn(SymbolPrototype$1, 'toString', function toString() {
|
|
1625
1642
|
return getInternalState$2(this).tag;
|
|
1626
1643
|
});
|
|
1627
1644
|
|
|
1628
|
-
|
|
1645
|
+
defineBuiltIn($Symbol, 'withoutSetter', function (description) {
|
|
1629
1646
|
return wrap(uid(description), description);
|
|
1630
1647
|
});
|
|
1631
1648
|
|
|
@@ -1649,7 +1666,7 @@ if (!nativeSymbol) {
|
|
|
1649
1666
|
}
|
|
1650
1667
|
});
|
|
1651
1668
|
{
|
|
1652
|
-
|
|
1669
|
+
defineBuiltIn(ObjectPrototype$2, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
|
|
1653
1670
|
}
|
|
1654
1671
|
}
|
|
1655
1672
|
}
|
|
@@ -1789,7 +1806,7 @@ var fixIllFormed = function (match, offset, string) {
|
|
|
1789
1806
|
if ($stringify) {
|
|
1790
1807
|
// `JSON.stringify` method
|
|
1791
1808
|
// https://tc39.es/ecma262/#sec-json.stringify
|
|
1792
|
-
_export({ target: 'JSON', stat: true, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {
|
|
1809
|
+
_export({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {
|
|
1793
1810
|
// eslint-disable-next-line no-unused-vars -- required for `.length`
|
|
1794
1811
|
stringify: function stringify(it, replacer, space) {
|
|
1795
1812
|
var args = arraySlice(arguments);
|
|
@@ -2020,7 +2037,7 @@ if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype$2 = {};
|
|
|
2020
2037
|
// `%IteratorPrototype%[@@iterator]()` method
|
|
2021
2038
|
// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator
|
|
2022
2039
|
if (!isCallable(IteratorPrototype$2[ITERATOR$4])) {
|
|
2023
|
-
|
|
2040
|
+
defineBuiltIn(IteratorPrototype$2, ITERATOR$4, function () {
|
|
2024
2041
|
return this;
|
|
2025
2042
|
});
|
|
2026
2043
|
}
|
|
@@ -2126,7 +2143,7 @@ var defineIterator = function (Iterable, NAME, IteratorConstructor, next, DEFAUL
|
|
|
2126
2143
|
if (objectSetPrototypeOf) {
|
|
2127
2144
|
objectSetPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
|
|
2128
2145
|
} else if (!isCallable(CurrentIteratorPrototype[ITERATOR$3])) {
|
|
2129
|
-
|
|
2146
|
+
defineBuiltIn(CurrentIteratorPrototype, ITERATOR$3, returnThis);
|
|
2130
2147
|
}
|
|
2131
2148
|
}
|
|
2132
2149
|
// Set @@toStringTag to native iterators
|
|
@@ -2153,14 +2170,14 @@ var defineIterator = function (Iterable, NAME, IteratorConstructor, next, DEFAUL
|
|
|
2153
2170
|
};
|
|
2154
2171
|
if (FORCED) for (KEY in methods) {
|
|
2155
2172
|
if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
|
|
2156
|
-
|
|
2173
|
+
defineBuiltIn(IterablePrototype, KEY, methods[KEY]);
|
|
2157
2174
|
}
|
|
2158
2175
|
} else _export({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
|
|
2159
2176
|
}
|
|
2160
2177
|
|
|
2161
2178
|
// define iterator
|
|
2162
2179
|
if (IterablePrototype[ITERATOR$3] !== defaultIterator) {
|
|
2163
|
-
|
|
2180
|
+
defineBuiltIn(IterablePrototype, ITERATOR$3, defaultIterator, { name: DEFAULT });
|
|
2164
2181
|
}
|
|
2165
2182
|
iterators[NAME] = defaultIterator;
|
|
2166
2183
|
|
|
@@ -2418,7 +2435,7 @@ var exportTypedArrayMethod$1 = function (KEY, property, forced, options) {
|
|
|
2418
2435
|
}
|
|
2419
2436
|
}
|
|
2420
2437
|
if (!TypedArrayPrototype[KEY] || forced) {
|
|
2421
|
-
|
|
2438
|
+
defineBuiltIn(TypedArrayPrototype, KEY, forced ? property
|
|
2422
2439
|
: NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);
|
|
2423
2440
|
}
|
|
2424
2441
|
};
|
|
@@ -2436,14 +2453,14 @@ var exportTypedArrayStaticMethod = function (KEY, property, forced) {
|
|
|
2436
2453
|
if (!TypedArray[KEY] || forced) {
|
|
2437
2454
|
// V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable
|
|
2438
2455
|
try {
|
|
2439
|
-
return
|
|
2456
|
+
return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);
|
|
2440
2457
|
} catch (error) { /* empty */ }
|
|
2441
2458
|
} else return;
|
|
2442
2459
|
}
|
|
2443
2460
|
for (ARRAY in TypedArrayConstructorsList) {
|
|
2444
2461
|
TypedArrayConstructor = global_1[ARRAY];
|
|
2445
2462
|
if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {
|
|
2446
|
-
|
|
2463
|
+
defineBuiltIn(TypedArrayConstructor, KEY, property);
|
|
2447
2464
|
}
|
|
2448
2465
|
}
|
|
2449
2466
|
};
|
|
@@ -2575,9 +2592,15 @@ var addToUnscopables = function (key) {
|
|
|
2575
2592
|
var $includes = arrayIncludes.includes;
|
|
2576
2593
|
|
|
2577
2594
|
|
|
2595
|
+
|
|
2596
|
+
// FF99+ bug
|
|
2597
|
+
var BROKEN_ON_SPARSE = fails(function () {
|
|
2598
|
+
return !Array(1).includes();
|
|
2599
|
+
});
|
|
2600
|
+
|
|
2578
2601
|
// `Array.prototype.includes` method
|
|
2579
2602
|
// https://tc39.es/ecma262/#sec-array.prototype.includes
|
|
2580
|
-
_export({ target: 'Array', proto: true }, {
|
|
2603
|
+
_export({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {
|
|
2581
2604
|
includes: function includes(el /* , fromIndex = 0 */) {
|
|
2582
2605
|
return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
|
|
2583
2606
|
}
|
|
@@ -2868,7 +2891,7 @@ var collection = function (CONSTRUCTOR_NAME, wrapper, common) {
|
|
|
2868
2891
|
|
|
2869
2892
|
var fixMethod = function (KEY) {
|
|
2870
2893
|
var uncurriedNativeMethod = functionUncurryThis(NativePrototype[KEY]);
|
|
2871
|
-
|
|
2894
|
+
defineBuiltIn(NativePrototype, KEY,
|
|
2872
2895
|
KEY == 'add' ? function add(value) {
|
|
2873
2896
|
uncurriedNativeMethod(this, value === 0 ? 0 : value);
|
|
2874
2897
|
return this;
|
|
@@ -2947,8 +2970,8 @@ var collection = function (CONSTRUCTOR_NAME, wrapper, common) {
|
|
|
2947
2970
|
return Constructor;
|
|
2948
2971
|
};
|
|
2949
2972
|
|
|
2950
|
-
var
|
|
2951
|
-
for (var key in src)
|
|
2973
|
+
var defineBuiltIns = function (target, src, options) {
|
|
2974
|
+
for (var key in src) defineBuiltIn(target, key, src[key], options);
|
|
2952
2975
|
return target;
|
|
2953
2976
|
};
|
|
2954
2977
|
|
|
@@ -3038,7 +3061,7 @@ var collectionStrong = {
|
|
|
3038
3061
|
}
|
|
3039
3062
|
};
|
|
3040
3063
|
|
|
3041
|
-
|
|
3064
|
+
defineBuiltIns(Prototype, {
|
|
3042
3065
|
// `{ Map, Set }.prototype.clear()` methods
|
|
3043
3066
|
// https://tc39.es/ecma262/#sec-map.prototype.clear
|
|
3044
3067
|
// https://tc39.es/ecma262/#sec-set.prototype.clear
|
|
@@ -3098,7 +3121,7 @@ var collectionStrong = {
|
|
|
3098
3121
|
}
|
|
3099
3122
|
});
|
|
3100
3123
|
|
|
3101
|
-
|
|
3124
|
+
defineBuiltIns(Prototype, IS_MAP ? {
|
|
3102
3125
|
// `Map.prototype.get(key)` method
|
|
3103
3126
|
// https://tc39.es/ecma262/#sec-map.prototype.get
|
|
3104
3127
|
get: function get(key) {
|
|
@@ -3885,7 +3908,7 @@ if (typeof globalNS['Promise'] !== 'function') {
|
|
|
3885
3908
|
|
|
3886
3909
|
})));
|
|
3887
3910
|
|
|
3888
|
-
var version = '1.
|
|
3911
|
+
var version = '1.22.0';
|
|
3889
3912
|
|
|
3890
3913
|
/**
|
|
3891
3914
|
* @ignore
|
|
@@ -3913,7 +3936,7 @@ var CACHE_LOCATION_MEMORY = 'memory';
|
|
|
3913
3936
|
/**
|
|
3914
3937
|
* @ignore
|
|
3915
3938
|
*/
|
|
3916
|
-
var MISSING_REFRESH_TOKEN_ERROR_MESSAGE = '
|
|
3939
|
+
var MISSING_REFRESH_TOKEN_ERROR_MESSAGE = 'Missing Refresh Token';
|
|
3917
3940
|
/**
|
|
3918
3941
|
* @ignore
|
|
3919
3942
|
*/
|
|
@@ -4048,6 +4071,20 @@ var MfaRequiredError = /** @class */ (function (_super) {
|
|
|
4048
4071
|
return _this;
|
|
4049
4072
|
}
|
|
4050
4073
|
return MfaRequiredError;
|
|
4074
|
+
}(GenericError));
|
|
4075
|
+
var MissingRefreshTokenError = /** @class */ (function (_super) {
|
|
4076
|
+
__extends(MissingRefreshTokenError, _super);
|
|
4077
|
+
/* istanbul ignore next */
|
|
4078
|
+
function MissingRefreshTokenError(audience, scope) {
|
|
4079
|
+
var _this = _super.call(this, 'missing_refresh_token', "Missing Refresh Token (audience: '".concat(valueOrEmptyString(audience, [
|
|
4080
|
+
'default'
|
|
4081
|
+
]), "', scope: '").concat(valueOrEmptyString(scope), "')")) || this;
|
|
4082
|
+
_this.audience = audience;
|
|
4083
|
+
_this.scope = scope;
|
|
4084
|
+
Object.setPrototypeOf(_this, MissingRefreshTokenError.prototype);
|
|
4085
|
+
return _this;
|
|
4086
|
+
}
|
|
4087
|
+
return MissingRefreshTokenError;
|
|
4051
4088
|
}(GenericError));
|
|
4052
4089
|
|
|
4053
4090
|
var parseQueryResult = function (queryString) {
|
|
@@ -4227,7 +4264,17 @@ var validateCrypto = function () {
|
|
|
4227
4264
|
if (typeof getCryptoSubtle() === 'undefined') {
|
|
4228
4265
|
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 ");
|
|
4229
4266
|
}
|
|
4230
|
-
};
|
|
4267
|
+
};
|
|
4268
|
+
/**
|
|
4269
|
+
* Returns an empty string when value is falsy, or when it's value is included in the exclude argument.
|
|
4270
|
+
* @param value The value to check
|
|
4271
|
+
* @param exclude An array of values that should result in an empty string.
|
|
4272
|
+
* @returns The value, or an empty string when falsy or included in the exclude argument.
|
|
4273
|
+
*/
|
|
4274
|
+
function valueOrEmptyString(value, exclude) {
|
|
4275
|
+
if (exclude === void 0) { exclude = []; }
|
|
4276
|
+
return value && !exclude.includes(value) ? value : '';
|
|
4277
|
+
}
|
|
4231
4278
|
|
|
4232
4279
|
/**
|
|
4233
4280
|
* Sends the specified message to the web worker
|
|
@@ -4989,7 +5036,7 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {
|
|
|
4989
5036
|
};
|
|
4990
5037
|
}
|
|
4991
5038
|
|
|
4992
|
-
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7DQogICAgICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7DQogICAgICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHsNCiAgICAgICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdDsNCiAgICAgICAgfTsNCiAgICAgICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7DQogICAgfTsNCg0KICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHsNCiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9DQogICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgew0KICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH0NCiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTsNCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkgew0KICAgICAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnOw0KICAgICAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgInRocm93IjogdmVyYigxKSwgInJldHVybiI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZzsNCiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9DQogICAgICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHsNCiAgICAgICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7DQogICAgICAgICAgICB3aGlsZSAoXykgdHJ5IHsNCiAgICAgICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5WyJyZXR1cm4iXSA6IG9wWzBdID8geVsidGhyb3ciXSB8fCAoKHQgPSB5WyJyZXR1cm4iXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7DQogICAgICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdOw0KICAgICAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTsNCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH0NCiAgICAgICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHsNCiAgICAgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIG9bU3ltYm9sLml0ZXJhdG9yXTsNCiAgICAgICAgaWYgKCFtKSByZXR1cm4gbzsNCiAgICAgICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH0NCiAgICAgICAgZmluYWxseSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpWyJyZXR1cm4iXSkpIG0uY2FsbChpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiBhcjsNCiAgICB9CgogICAgLyoqDQogICAgICogQGlnbm9yZQ0KICAgICAqLw0KICAgIHZhciBNSVNTSU5HX1JFRlJFU0hfVE9LRU5fRVJST1JfTUVTU0FHRSA9ICdUaGUgd2ViIHdvcmtlciBpcyBtaXNzaW5nIHRoZSByZWZyZXNoIHRva2VuJzsKCiAgICB2YXIgcmVmcmVzaFRva2VucyA9IHt9Ow0KICAgIHZhciBjYWNoZUtleSA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsgcmV0dXJuICIiLmNvbmNhdChhdWRpZW5jZSwgInwiKS5jb25jYXQoc2NvcGUpOyB9Ow0KICAgIHZhciBnZXRSZWZyZXNoVG9rZW4gPSBmdW5jdGlvbiAoYXVkaWVuY2UsIHNjb3BlKSB7DQogICAgICAgIHJldHVybiByZWZyZXNoVG9rZW5zW2NhY2hlS2V5KGF1ZGllbmNlLCBzY29wZSldOw0KICAgIH07DQogICAgdmFyIHNldFJlZnJlc2hUb2tlbiA9IGZ1bmN0aW9uIChyZWZyZXNoVG9rZW4sIGF1ZGllbmNlLCBzY29wZSkgeyByZXR1cm4gKHJlZnJlc2hUb2tlbnNbY2FjaGVLZXkoYXVkaWVuY2UsIHNjb3BlKV0gPSByZWZyZXNoVG9rZW4pOyB9Ow0KICAgIHZhciBkZWxldGVSZWZyZXNoVG9rZW4gPSBmdW5jdGlvbiAoYXVkaWVuY2UsIHNjb3BlKSB7DQogICAgICAgIHJldHVybiBkZWxldGUgcmVmcmVzaFRva2Vuc1tjYWNoZUtleShhdWRpZW5jZSwgc2NvcGUpXTsNCiAgICB9Ow0KICAgIHZhciB3YWl0ID0gZnVuY3Rpb24gKHRpbWUpIHsNCiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJldHVybiBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWUpOyB9KTsNCiAgICB9Ow0KICAgIHZhciBmb3JtRGF0YVRvT2JqZWN0ID0gZnVuY3Rpb24gKGZvcm1EYXRhKSB7DQogICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoZm9ybURhdGEpOw0KICAgICAgICB2YXIgcGFyc2VkUXVlcnkgPSB7fTsNCiAgICAgICAgcXVlcnlQYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAodmFsLCBrZXkpIHsNCiAgICAgICAgICAgIHBhcnNlZFF1ZXJ5W2tleV0gPSB2YWw7DQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4gcGFyc2VkUXVlcnk7DQogICAgfTsNCiAgICB2YXIgbWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiAoX2EpIHsNCiAgICAgICAgdmFyIF9iID0gX2EuZGF0YSwgdGltZW91dCA9IF9iLnRpbWVvdXQsIGF1dGggPSBfYi5hdXRoLCBmZXRjaFVybCA9IF9iLmZldGNoVXJsLCBmZXRjaE9wdGlvbnMgPSBfYi5mZXRjaE9wdGlvbnMsIHVzZUZvcm1EYXRhID0gX2IudXNlRm9ybURhdGEsIF9jID0gX19yZWFkKF9hLnBvcnRzLCAxKSwgcG9ydCA9IF9jWzBdOw0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHZhciBqc29uLCBfZCwgYXVkaWVuY2UsIHNjb3BlLCBib2R5LCByZWZyZXNoVG9rZW4sIGFib3J0Q29udHJvbGxlciwgcmVzcG9uc2UsIGVycm9yXzEsIGVycm9yXzI7DQogICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9lKSB7DQogICAgICAgICAgICAgICAgc3dpdGNoIChfZS5sYWJlbCkgew0KICAgICAgICAgICAgICAgICAgICBjYXNlIDA6DQogICAgICAgICAgICAgICAgICAgICAgICBfZCA9IGF1dGggfHwge30sIGF1ZGllbmNlID0gX2QuYXVkaWVuY2UsIHNjb3BlID0gX2Quc2NvcGU7DQogICAgICAgICAgICAgICAgICAgICAgICBfZS5sYWJlbCA9IDE7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMToNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLnRyeXMucHVzaChbMSwgNywgLCA4XSk7DQogICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gdXNlRm9ybURhdGENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZvcm1EYXRhVG9PYmplY3QoZmV0Y2hPcHRpb25zLmJvZHkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGZldGNoT3B0aW9ucy5ib2R5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYm9keS5yZWZyZXNoX3Rva2VuICYmIGJvZHkuZ3JhbnRfdHlwZSA9PT0gJ3JlZnJlc2hfdG9rZW4nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRva2VuID0gZ2V0UmVmcmVzaFRva2VuKGF1ZGllbmNlLCBzY29wZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWZyZXNoVG9rZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKE1JU1NJTkdfUkVGUkVTSF9UT0tFTl9FUlJPUl9NRVNTQUdFKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hPcHRpb25zLmJvZHkgPSB1c2VGb3JtRGF0YQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBVUkxTZWFyY2hQYXJhbXMoX19hc3NpZ24oX19hc3NpZ24oe30sIGJvZHkpLCB7IHJlZnJlc2hfdG9rZW46IHJlZnJlc2hUb2tlbiB9KSkudG9TdHJpbmcoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KF9fYXNzaWduKF9fYXNzaWduKHt9LCBib2R5KSwgeyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRDb250cm9sbGVyID0gdm9pZCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBBYm9ydENvbnRyb2xsZXIgPT09ICdmdW5jdGlvbicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hPcHRpb25zLnNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHZvaWQgMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLmxhYmVsID0gMjsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOg0KICAgICAgICAgICAgICAgICAgICAgICAgX2UudHJ5cy5wdXNoKFsyLCA0LCAsIDVdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIFByb21pc2UucmFjZShbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQodGltZW91dCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoKGZldGNoVXJsLCBfX2Fzc2lnbih7fSwgZmV0Y2hPcHRpb25zKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNDoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzEgPSBfZS5zZW50KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBmZXRjaCBlcnJvciwgcmVqZWN0IGBzZW5kTWVzc2FnZWAgdXNpbmcgYGVycm9yYCBrZXkgc28gdGhhdCB3ZSByZXRyeS4NCiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvcl8xLm1lc3NhZ2UNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDU6DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHJlcXVlc3QgdGltZXMgb3V0LCBhYm9ydCBpdCBhbmQgbGV0IGBzd2l0Y2hGZXRjaGAgcmFpc2UgdGhlIGVycm9yLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhYm9ydENvbnRyb2xsZXIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogIlRpbWVvdXQgd2hlbiBleGVjdXRpbmcgJ2ZldGNoJyINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCByZXNwb25zZS5qc29uKCldOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDY6DQogICAgICAgICAgICAgICAgICAgICAgICBqc29uID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24ucmVmcmVzaF90b2tlbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlZnJlc2hUb2tlbihqc29uLnJlZnJlc2hfdG9rZW4sIGF1ZGllbmNlLCBzY29wZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGpzb24ucmVmcmVzaF90b2tlbjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZVJlZnJlc2hUb2tlbihhdWRpZW5jZSwgc2NvcGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2s6IHJlc3BvbnNlLm9rLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb246IGpzb24NCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgOF07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNzoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzIgPSBfZS5zZW50KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjogew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZXJyb3JfMi5tZXNzYWdlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA4XTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzIgLypyZXR1cm4qL107DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0pOw0KICAgIH07DQogICAgLy8gRG9uJ3QgcnVuIGBhZGRFdmVudExpc3RlbmVyYCBpbiBvdXIgdGVzdHMgKHRoaXMgaXMgcmVwbGFjZWQgaW4gcm9sbHVwKQ0KICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICAqLw0KICAgIHsNCiAgICAgICAgLy8gQHRzLWlnbm9yZQ0KICAgICAgICBhZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbWVzc2FnZUhhbmRsZXIpOw0KICAgIH0KCn0pKCk7Cgo=', null, false);
|
|
5039
|
+
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KICAgIC8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovDQoNCiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHsNCiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fA0KICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fA0KICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTsNCiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7DQogICAgfTsNCg0KICAgIGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7DQogICAgICAgIGlmICh0eXBlb2YgYiAhPT0gImZ1bmN0aW9uIiAmJiBiICE9PSBudWxsKQ0KICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiICsgU3RyaW5nKGIpICsgIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7DQogICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7DQogICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQ0KICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7DQogICAgfQ0KDQogICAgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7DQogICAgICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7DQogICAgICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHsNCiAgICAgICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdDsNCiAgICAgICAgfTsNCiAgICAgICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7DQogICAgfTsNCg0KICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHsNCiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9DQogICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgew0KICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH0NCiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTsNCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkgew0KICAgICAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnOw0KICAgICAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgInRocm93IjogdmVyYigxKSwgInJldHVybiI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZzsNCiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9DQogICAgICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHsNCiAgICAgICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7DQogICAgICAgICAgICB3aGlsZSAoXykgdHJ5IHsNCiAgICAgICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5WyJyZXR1cm4iXSA6IG9wWzBdID8geVsidGhyb3ciXSB8fCAoKHQgPSB5WyJyZXR1cm4iXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7DQogICAgICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdOw0KICAgICAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTsNCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH0NCiAgICAgICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHsNCiAgICAgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIG9bU3ltYm9sLml0ZXJhdG9yXTsNCiAgICAgICAgaWYgKCFtKSByZXR1cm4gbzsNCiAgICAgICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH0NCiAgICAgICAgZmluYWxseSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpWyJyZXR1cm4iXSkpIG0uY2FsbChpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiBhcjsNCiAgICB9CgogICAgLyoqDQogICAgICogUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgd2hlbiB2YWx1ZSBpcyBmYWxzeSwgb3Igd2hlbiBpdCdzIHZhbHVlIGlzIGluY2x1ZGVkIGluIHRoZSBleGNsdWRlIGFyZ3VtZW50Lg0KICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2sNCiAgICAgKiBAcGFyYW0gZXhjbHVkZSBBbiBhcnJheSBvZiB2YWx1ZXMgdGhhdCBzaG91bGQgcmVzdWx0IGluIGFuIGVtcHR5IHN0cmluZy4NCiAgICAgKiBAcmV0dXJucyBUaGUgdmFsdWUsIG9yIGFuIGVtcHR5IHN0cmluZyB3aGVuIGZhbHN5IG9yIGluY2x1ZGVkIGluIHRoZSBleGNsdWRlIGFyZ3VtZW50Lg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHZhbHVlT3JFbXB0eVN0cmluZyh2YWx1ZSwgZXhjbHVkZSkgew0KICAgICAgICBpZiAoZXhjbHVkZSA9PT0gdm9pZCAwKSB7IGV4Y2x1ZGUgPSBbXTsgfQ0KICAgICAgICByZXR1cm4gdmFsdWUgJiYgIWV4Y2x1ZGUuaW5jbHVkZXModmFsdWUpID8gdmFsdWUgOiAnJzsNCiAgICB9CgogICAgLyoqDQogICAgICogRm9yIGNvbnRleHQgb24gdGhlIGlzdGFuYnVsIGlnbm9yZSBzdGF0ZW1lbnRzIGJlbG93LCBzZWU6DQogICAgICogaHR0cHM6Ly9naXRodWIuY29tL2dvdHdhcmxvc3QvaXN0YW5idWwvaXNzdWVzLzY5MA0KICAgICAqLw0KICAgIC8qKg0KICAgICAqIFRocm93biB3aGVuIG5ldHdvcmsgcmVxdWVzdHMgdG8gdGhlIEF1dGggc2VydmVyIGZhaWwuDQogICAgICovDQogICAgdmFyIEdlbmVyaWNFcnJvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsNCiAgICAgICAgX19leHRlbmRzKEdlbmVyaWNFcnJvciwgX3N1cGVyKTsNCiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8NCiAgICAgICAgZnVuY3Rpb24gR2VuZXJpY0Vycm9yKGVycm9yLCBlcnJvcl9kZXNjcmlwdGlvbikgew0KICAgICAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZXJyb3JfZGVzY3JpcHRpb24pIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5lcnJvciA9IGVycm9yOw0KICAgICAgICAgICAgX3RoaXMuZXJyb3JfZGVzY3JpcHRpb24gPSBlcnJvcl9kZXNjcmlwdGlvbjsNCiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgR2VuZXJpY0Vycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgR2VuZXJpY0Vycm9yLmZyb21QYXlsb2FkID0gZnVuY3Rpb24gKF9hKSB7DQogICAgICAgICAgICB2YXIgZXJyb3IgPSBfYS5lcnJvciwgZXJyb3JfZGVzY3JpcHRpb24gPSBfYS5lcnJvcl9kZXNjcmlwdGlvbjsNCiAgICAgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0Vycm9yKGVycm9yLCBlcnJvcl9kZXNjcmlwdGlvbik7DQogICAgICAgIH07DQogICAgICAgIHJldHVybiBHZW5lcmljRXJyb3I7DQogICAgfShFcnJvcikpOw0KICAgIC8qKg0KICAgICAqIFRocm93biB3aGVuIGhhbmRsaW5nIHRoZSByZWRpcmVjdCBjYWxsYmFjayBmYWlscywgd2lsbCBiZSBvbmUgb2YgQXV0aDAncw0KICAgICAqIEF1dGhlbnRpY2F0aW9uIEFQSSdzIFN0YW5kYXJkIEVycm9yIFJlc3BvbnNlczogaHR0cHM6Ly9hdXRoMC5jb20vZG9jcy9hcGkvYXV0aGVudGljYXRpb24/amF2YXNjcmlwdCNzdGFuZGFyZC1lcnJvci1yZXNwb25zZXMNCiAgICAgKi8NCiAgICAvKiogQGNsYXNzICovICgoZnVuY3Rpb24gKF9zdXBlcikgew0KICAgICAgICBfX2V4dGVuZHMoQXV0aGVudGljYXRpb25FcnJvciwgX3N1cGVyKTsNCiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8NCiAgICAgICAgZnVuY3Rpb24gQXV0aGVudGljYXRpb25FcnJvcihlcnJvciwgZXJyb3JfZGVzY3JpcHRpb24sIHN0YXRlLCBhcHBTdGF0ZSkgew0KICAgICAgICAgICAgaWYgKGFwcFN0YXRlID09PSB2b2lkIDApIHsgYXBwU3RhdGUgPSBudWxsOyB9DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBlcnJvciwgZXJyb3JfZGVzY3JpcHRpb24pIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5zdGF0ZSA9IHN0YXRlOw0KICAgICAgICAgICAgX3RoaXMuYXBwU3RhdGUgPSBhcHBTdGF0ZTsNCiAgICAgICAgICAgIC8vaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0LXdpa2kvYmxvYi9tYXN0ZXIvQnJlYWtpbmctQ2hhbmdlcy5tZCNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmsNCiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgQXV0aGVudGljYXRpb25FcnJvci5wcm90b3R5cGUpOw0KICAgICAgICAgICAgcmV0dXJuIF90aGlzOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkVycm9yOw0KICAgIH0pKEdlbmVyaWNFcnJvcikpOw0KICAgIC8qKg0KICAgICAqIFRocm93biB3aGVuIHNpbGVudCBhdXRoIHRpbWVzIG91dCAodXN1YWxseSBkdWUgdG8gYSBjb25maWd1cmF0aW9uIGlzc3VlKSBvcg0KICAgICAqIHdoZW4gbmV0d29yayByZXF1ZXN0cyB0byB0aGUgQXV0aCBzZXJ2ZXIgdGltZW91dC4NCiAgICAgKi8NCiAgICB2YXIgVGltZW91dEVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgew0KICAgICAgICBfX2V4dGVuZHMoVGltZW91dEVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBUaW1lb3V0RXJyb3IoKSB7DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCAndGltZW91dCcsICdUaW1lb3V0JykgfHwgdGhpczsNCiAgICAgICAgICAgIC8vaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0LXdpa2kvYmxvYi9tYXN0ZXIvQnJlYWtpbmctQ2hhbmdlcy5tZCNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmsNCiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgVGltZW91dEVycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIFRpbWVvdXRFcnJvcjsNCiAgICB9KEdlbmVyaWNFcnJvcikpOw0KICAgIC8qKg0KICAgICAqIEVycm9yIHRocm93biB3aGVuIHRoZSBsb2dpbiBwb3B1cCB0aW1lcyBvdXQgKGlmIHRoZSB1c2VyIGRvZXMgbm90IGNvbXBsZXRlIGF1dGgpDQogICAgICovDQogICAgLyoqIEBjbGFzcyAqLyAoKGZ1bmN0aW9uIChfc3VwZXIpIHsNCiAgICAgICAgX19leHRlbmRzKFBvcHVwVGltZW91dEVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBQb3B1cFRpbWVvdXRFcnJvcihwb3B1cCkgew0KICAgICAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpczsNCiAgICAgICAgICAgIF90aGlzLnBvcHVwID0gcG9wdXA7DQogICAgICAgICAgICAvL2h0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC13aWtpL2Jsb2IvbWFzdGVyL0JyZWFraW5nLUNoYW5nZXMubWQjZXh0ZW5kaW5nLWJ1aWx0LWlucy1saWtlLWVycm9yLWFycmF5LWFuZC1tYXAtbWF5LW5vLWxvbmdlci13b3JrDQogICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoX3RoaXMsIFBvcHVwVGltZW91dEVycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIFBvcHVwVGltZW91dEVycm9yOw0KICAgIH0pKFRpbWVvdXRFcnJvcikpOw0KICAgIC8qKiBAY2xhc3MgKi8gKChmdW5jdGlvbiAoX3N1cGVyKSB7DQogICAgICAgIF9fZXh0ZW5kcyhQb3B1cENhbmNlbGxlZEVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBQb3B1cENhbmNlbGxlZEVycm9yKHBvcHVwKSB7DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCAnY2FuY2VsbGVkJywgJ1BvcHVwIGNsb3NlZCcpIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5wb3B1cCA9IHBvcHVwOw0KICAgICAgICAgICAgLy9odHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQtd2lraS9ibG9iL21hc3Rlci9CcmVha2luZy1DaGFuZ2VzLm1kI2V4dGVuZGluZy1idWlsdC1pbnMtbGlrZS1lcnJvci1hcnJheS1hbmQtbWFwLW1heS1uby1sb25nZXItd29yaw0KICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKF90aGlzLCBQb3B1cENhbmNlbGxlZEVycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIFBvcHVwQ2FuY2VsbGVkRXJyb3I7DQogICAgfSkoR2VuZXJpY0Vycm9yKSk7DQogICAgLyoqDQogICAgICogRXJyb3IgdGhyb3duIHdoZW4gdGhlIHRva2VuIGV4Y2hhbmdlIHJlc3VsdHMgaW4gYSBgbWZhX3JlcXVpcmVkYCBlcnJvcg0KICAgICAqLw0KICAgIC8qKiBAY2xhc3MgKi8gKChmdW5jdGlvbiAoX3N1cGVyKSB7DQogICAgICAgIF9fZXh0ZW5kcyhNZmFSZXF1aXJlZEVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBNZmFSZXF1aXJlZEVycm9yKGVycm9yLCBlcnJvcl9kZXNjcmlwdGlvbiwgbWZhX3Rva2VuKSB7DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBlcnJvciwgZXJyb3JfZGVzY3JpcHRpb24pIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5tZmFfdG9rZW4gPSBtZmFfdG9rZW47DQogICAgICAgICAgICAvL2h0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC13aWtpL2Jsb2IvbWFzdGVyL0JyZWFraW5nLUNoYW5nZXMubWQjZXh0ZW5kaW5nLWJ1aWx0LWlucy1saWtlLWVycm9yLWFycmF5LWFuZC1tYXAtbWF5LW5vLWxvbmdlci13b3JrDQogICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoX3RoaXMsIE1mYVJlcXVpcmVkRXJyb3IucHJvdG90eXBlKTsNCiAgICAgICAgICAgIHJldHVybiBfdGhpczsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gTWZhUmVxdWlyZWRFcnJvcjsNCiAgICB9KShHZW5lcmljRXJyb3IpKTsNCiAgICB2YXIgTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgew0KICAgICAgICBfX2V4dGVuZHMoTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBNaXNzaW5nUmVmcmVzaFRva2VuRXJyb3IoYXVkaWVuY2UsIHNjb3BlKSB7DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCAnbWlzc2luZ19yZWZyZXNoX3Rva2VuJywgIk1pc3NpbmcgUmVmcmVzaCBUb2tlbiAoYXVkaWVuY2U6ICciLmNvbmNhdCh2YWx1ZU9yRW1wdHlTdHJpbmcoYXVkaWVuY2UsIFsNCiAgICAgICAgICAgICAgICAnZGVmYXVsdCcNCiAgICAgICAgICAgIF0pLCAiJywgc2NvcGU6ICciKS5jb25jYXQodmFsdWVPckVtcHR5U3RyaW5nKHNjb3BlKSwgIicpIikpIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5hdWRpZW5jZSA9IGF1ZGllbmNlOw0KICAgICAgICAgICAgX3RoaXMuc2NvcGUgPSBzY29wZTsNCiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIE1pc3NpbmdSZWZyZXNoVG9rZW5FcnJvcjsNCiAgICB9KEdlbmVyaWNFcnJvcikpOwoKICAgIHZhciByZWZyZXNoVG9rZW5zID0ge307DQogICAgdmFyIGNhY2hlS2V5ID0gZnVuY3Rpb24gKGF1ZGllbmNlLCBzY29wZSkgeyByZXR1cm4gIiIuY29uY2F0KGF1ZGllbmNlLCAifCIpLmNvbmNhdChzY29wZSk7IH07DQogICAgdmFyIGdldFJlZnJlc2hUb2tlbiA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsNCiAgICAgICAgcmV0dXJuIHJlZnJlc2hUb2tlbnNbY2FjaGVLZXkoYXVkaWVuY2UsIHNjb3BlKV07DQogICAgfTsNCiAgICB2YXIgc2V0UmVmcmVzaFRva2VuID0gZnVuY3Rpb24gKHJlZnJlc2hUb2tlbiwgYXVkaWVuY2UsIHNjb3BlKSB7IHJldHVybiAocmVmcmVzaFRva2Vuc1tjYWNoZUtleShhdWRpZW5jZSwgc2NvcGUpXSA9IHJlZnJlc2hUb2tlbik7IH07DQogICAgdmFyIGRlbGV0ZVJlZnJlc2hUb2tlbiA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsNCiAgICAgICAgcmV0dXJuIGRlbGV0ZSByZWZyZXNoVG9rZW5zW2NhY2hlS2V5KGF1ZGllbmNlLCBzY29wZSldOw0KICAgIH07DQogICAgdmFyIHdhaXQgPSBmdW5jdGlvbiAodGltZSkgew0KICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZSk7IH0pOw0KICAgIH07DQogICAgdmFyIGZvcm1EYXRhVG9PYmplY3QgPSBmdW5jdGlvbiAoZm9ybURhdGEpIHsNCiAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhmb3JtRGF0YSk7DQogICAgICAgIHZhciBwYXJzZWRRdWVyeSA9IHt9Ow0KICAgICAgICBxdWVyeVBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWwsIGtleSkgew0KICAgICAgICAgICAgcGFyc2VkUXVlcnlba2V5XSA9IHZhbDsNCiAgICAgICAgfSk7DQogICAgICAgIHJldHVybiBwYXJzZWRRdWVyeTsNCiAgICB9Ow0KICAgIHZhciBtZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uIChfYSkgew0KICAgICAgICB2YXIgX2IgPSBfYS5kYXRhLCB0aW1lb3V0ID0gX2IudGltZW91dCwgYXV0aCA9IF9iLmF1dGgsIGZldGNoVXJsID0gX2IuZmV0Y2hVcmwsIGZldGNoT3B0aW9ucyA9IF9iLmZldGNoT3B0aW9ucywgdXNlRm9ybURhdGEgPSBfYi51c2VGb3JtRGF0YSwgX2MgPSBfX3JlYWQoX2EucG9ydHMsIDEpLCBwb3J0ID0gX2NbMF07DQogICAgICAgIHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdmFyIGpzb24sIF9kLCBhdWRpZW5jZSwgc2NvcGUsIGJvZHksIHJlZnJlc2hUb2tlbiwgYWJvcnRDb250cm9sbGVyLCByZXNwb25zZSwgZXJyb3JfMSwgZXJyb3JfMjsNCiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2UpIHsNCiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9lLmxhYmVsKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMDoNCiAgICAgICAgICAgICAgICAgICAgICAgIF9kID0gYXV0aCB8fCB7fSwgYXVkaWVuY2UgPSBfZC5hdWRpZW5jZSwgc2NvcGUgPSBfZC5zY29wZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLmxhYmVsID0gMTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOg0KICAgICAgICAgICAgICAgICAgICAgICAgX2UudHJ5cy5wdXNoKFsxLCA3LCAsIDhdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSB1c2VGb3JtRGF0YQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZm9ybURhdGFUb09iamVjdChmZXRjaE9wdGlvbnMuYm9keSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZmV0Y2hPcHRpb25zLmJvZHkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFib2R5LnJlZnJlc2hfdG9rZW4gJiYgYm9keS5ncmFudF90eXBlID09PSAncmVmcmVzaF90b2tlbicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9rZW4gPSBnZXRSZWZyZXNoVG9rZW4oYXVkaWVuY2UsIHNjb3BlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZnJlc2hUb2tlbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yKGF1ZGllbmNlLCBzY29wZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoT3B0aW9ucy5ib2R5ID0gdXNlRm9ybURhdGENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXcgVVJMU2VhcmNoUGFyYW1zKF9fYXNzaWduKF9fYXNzaWduKHt9LCBib2R5KSwgeyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSkpLnRvU3RyaW5nKCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBKU09OLnN0cmluZ2lmeShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYm9keSksIHsgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuIH0pKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0Q29udHJvbGxlciA9IHZvaWQgMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQWJvcnRDb250cm9sbGVyID09PSAnZnVuY3Rpb24nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoT3B0aW9ucy5zaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB2b2lkIDA7DQogICAgICAgICAgICAgICAgICAgICAgICBfZS5sYWJlbCA9IDI7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMjoNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLnRyeXMucHVzaChbMiwgNCwgLCA1XSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBQcm9taXNlLnJhY2UoWw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0KHRpbWVvdXQpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaChmZXRjaFVybCwgX19hc3NpZ24oe30sIGZldGNoT3B0aW9ucykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDM6DQogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9lLnNlbnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6DQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl8xID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmV0Y2ggZXJyb3IsIHJlamVjdCBgc2VuZE1lc3NhZ2VgIHVzaW5nIGBlcnJvcmAga2V5IHNvIHRoYXQgd2UgcmV0cnkuDQogICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JfMS5tZXNzYWdlDQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA1Og0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSByZXF1ZXN0IHRpbWVzIG91dCwgYWJvcnQgaXQgYW5kIGxldCBgc3dpdGNoRmV0Y2hgIHJhaXNlIHRoZSBlcnJvci4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWJvcnRDb250cm9sbGVyKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICJUaW1lb3V0IHdoZW4gZXhlY3V0aW5nICdmZXRjaCciDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgcmVzcG9uc2UuanNvbigpXTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA2Og0KICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IF9lLnNlbnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc29uLnJlZnJlc2hfdG9rZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZWZyZXNoVG9rZW4oanNvbi5yZWZyZXNoX3Rva2VuLCBhdWRpZW5jZSwgc2NvcGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqc29uLnJlZnJlc2hfdG9rZW47DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVSZWZyZXNoVG9rZW4oYXVkaWVuY2UsIHNjb3BlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiByZXNwb25zZS5vaywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uOiBqc29uDQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDhdOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDc6DQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl8yID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb246IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGVycm9yXzIubWVzc2FnZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgOF07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgODogcmV0dXJuIFsyIC8qcmV0dXJuKi9dOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICB9Ow0KICAgIC8vIERvbid0IHJ1biBgYWRkRXZlbnRMaXN0ZW5lcmAgaW4gb3VyIHRlc3RzICh0aGlzIGlzIHJlcGxhY2VkIGluIHJvbGx1cCkNCiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAgKi8NCiAgICB7DQogICAgICAgIC8vIEB0cy1pZ25vcmUNCiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIG1lc3NhZ2VIYW5kbGVyKTsNCiAgICB9Cgp9KSgpOwoK', null, false);
|
|
4993
5040
|
/* eslint-enable */
|
|
4994
5041
|
|
|
4995
5042
|
var isIE11 = function () { return /Trident.*rv:11\.0/.test(navigator.userAgent); };
|
|
@@ -5221,6 +5268,8 @@ var Auth0Client = /** @class */ (function () {
|
|
|
5221
5268
|
this.worker = new WorkerFactory();
|
|
5222
5269
|
}
|
|
5223
5270
|
this.customOptions = getCustomInitialOptions(options);
|
|
5271
|
+
this.useRefreshTokensFallback =
|
|
5272
|
+
this.options.useRefreshTokensFallback !== false;
|
|
5224
5273
|
}
|
|
5225
5274
|
Auth0Client.prototype._url = function (path) {
|
|
5226
5275
|
var auth0Client = encodeURIComponent(btoa(JSON.stringify(this.options.auth0Client || DEFAULT_AUTH0_CLIENT)));
|
|
@@ -5948,10 +5997,12 @@ var Auth0Client = /** @class */ (function () {
|
|
|
5948
5997
|
}))];
|
|
5949
5998
|
case 1:
|
|
5950
5999
|
cache = _a.sent();
|
|
5951
|
-
if (!((!cache || !cache.refresh_token) && !this.worker)) return [3 /*break*/,
|
|
6000
|
+
if (!((!cache || !cache.refresh_token) && !this.worker)) return [3 /*break*/, 4];
|
|
6001
|
+
if (!this.useRefreshTokensFallback) return [3 /*break*/, 3];
|
|
5952
6002
|
return [4 /*yield*/, this._getTokenFromIFrame(options)];
|
|
5953
6003
|
case 2: return [2 /*return*/, _a.sent()];
|
|
5954
|
-
case 3:
|
|
6004
|
+
case 3: throw new MissingRefreshTokenError(options.audience || 'default', options.scope);
|
|
6005
|
+
case 4:
|
|
5955
6006
|
redirect_uri = options.redirect_uri ||
|
|
5956
6007
|
this.options.redirect_uri ||
|
|
5957
6008
|
window.location.origin;
|
|
@@ -5959,31 +6010,32 @@ var Auth0Client = /** @class */ (function () {
|
|
|
5959
6010
|
timeout = typeof options.timeoutInSeconds === 'number'
|
|
5960
6011
|
? options.timeoutInSeconds * 1000
|
|
5961
6012
|
: null;
|
|
5962
|
-
_a.label =
|
|
5963
|
-
case 4:
|
|
5964
|
-
_a.trys.push([4, 6, , 9]);
|
|
5965
|
-
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)];
|
|
6013
|
+
_a.label = 5;
|
|
5966
6014
|
case 5:
|
|
5967
|
-
|
|
5968
|
-
return [
|
|
6015
|
+
_a.trys.push([5, 7, , 10]);
|
|
6016
|
+
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)];
|
|
5969
6017
|
case 6:
|
|
6018
|
+
tokenResult = _a.sent();
|
|
6019
|
+
return [3 /*break*/, 10];
|
|
6020
|
+
case 7:
|
|
5970
6021
|
e_2 = _a.sent();
|
|
5971
6022
|
if (!
|
|
5972
6023
|
// The web worker didn't have a refresh token in memory so
|
|
5973
6024
|
// fallback to an iframe.
|
|
5974
|
-
(e_2.message
|
|
6025
|
+
((e_2.message.indexOf(MISSING_REFRESH_TOKEN_ERROR_MESSAGE) > -1 ||
|
|
5975
6026
|
// A refresh token was found, but is it no longer valid.
|
|
5976
6027
|
// Fallback to an iframe.
|
|
5977
6028
|
(e_2.message &&
|
|
5978
|
-
e_2.message.indexOf(INVALID_REFRESH_TOKEN_ERROR_MESSAGE) > -1))
|
|
6029
|
+
e_2.message.indexOf(INVALID_REFRESH_TOKEN_ERROR_MESSAGE) > -1)) &&
|
|
6030
|
+
this.useRefreshTokensFallback))
|
|
5979
6031
|
// The web worker didn't have a refresh token in memory so
|
|
5980
6032
|
// fallback to an iframe.
|
|
5981
|
-
return [3 /*break*/,
|
|
6033
|
+
return [3 /*break*/, 9];
|
|
5982
6034
|
return [4 /*yield*/, this._getTokenFromIFrame(options)];
|
|
5983
|
-
case
|
|
5984
|
-
case
|
|
5985
|
-
case
|
|
5986
|
-
case
|
|
6035
|
+
case 8: return [2 /*return*/, _a.sent()];
|
|
6036
|
+
case 9: throw e_2;
|
|
6037
|
+
case 10: return [4 /*yield*/, this._verifyIdToken(tokenResult.id_token)];
|
|
6038
|
+
case 11:
|
|
5987
6039
|
decodedToken = _a.sent();
|
|
5988
6040
|
return [2 /*return*/, __assign(__assign({}, tokenResult), { decodedToken: decodedToken, scope: options.scope, oauthTokenScope: tokenResult.scope, audience: options.audience || 'default' })];
|
|
5989
6041
|
}
|