mnemonica 1.0.1 → 1.0.7
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/.ai/AGENTS.md +1 -1
- package/.ai/ONBOARDING.md +3 -2
- package/.ai/PROTOTYPE-CHAIN.md +122 -0
- package/.ai/TACTICA-DEEP-DIVE.md +52 -49
- package/.ai/TACTICA-RULES.md +8 -8
- package/.ai/ask/AGENTS.md +15 -9
- package/.ai/rules-skill/contributing.md +1 -1
- package/.ai/rules-skill/define-patterns.md +8 -2
- package/.ai/rules-skill/ecosystem.md +4 -4
- package/.ai/rules-skill/instance-methods.md +48 -15
- package/.ai/rules-skill/lookup-typed.md +17 -19
- package/.ai/rules-skill/type-system.md +12 -2
- package/AGENTS.md +25 -15
- package/CONTRIBUTING.md +8 -2
- package/FOR_HUMANS.md +193 -218
- package/README.md +84 -47
- package/SKILL.md +4 -4
- package/build/api/errors/exceptionConstructor.js +20 -12
- package/build/api/errors/index.js +9 -5
- package/build/api/errors/throwModificationError.js +15 -9
- package/build/api/index.js +35 -2
- package/build/api/types/InstanceCreator.js +5 -2
- package/build/api/types/Mnemosyne.d.ts +6 -6
- package/build/api/types/Mnemosyne.js +43 -120
- package/build/api/types/Props.js +5 -3
- package/build/api/types/TypeProxy.js +13 -9
- package/build/api/types/compileNewModificatorFunctionBody.js +14 -8
- package/build/api/types/createInstanceModificator.js +1 -1
- package/build/api/types/index.js +56 -13
- package/build/api/utils/index.js +21 -12
- package/build/constants/index.js +11 -8
- package/build/descriptors/types/index.js +79 -26
- package/build/index.d.ts +9 -10
- package/build/index.js +65 -25
- package/build/types/index.d.ts +76 -32
- package/build/types/index.js +1 -1
- package/build/utils/clone.d.ts +1 -0
- package/build/utils/clone.js +11 -0
- package/build/utils/collectConstructors.js +5 -3
- package/build/utils/exception.d.ts +1 -0
- package/build/utils/exception.js +14 -0
- package/build/utils/extract.d.ts +2 -3
- package/build/utils/extract.js +3 -2
- package/build/utils/fork.d.ts +1 -0
- package/build/utils/fork.js +33 -0
- package/build/utils/index.d.ts +2 -3
- package/build/utils/index.js +21 -7
- package/build/utils/merge.d.ts +2 -1
- package/build/utils/merge.js +10 -6
- package/build/utils/parent.d.ts +4 -1
- package/build/utils/parent.js +7 -7
- package/build/utils/parse.d.ts +2 -12
- package/build/utils/parse.js +1 -1
- package/build/utils/pick.d.ts +4 -3
- package/build/utils/pick.js +4 -5
- package/build/utils/sibling.d.ts +1 -0
- package/build/utils/sibling.js +25 -0
- package/build/utils/toJSON.d.ts +1 -1
- package/build/utils/toJSON.js +3 -2
- package/docs/UTILS.md +184 -0
- package/docs/ai-learning-trajectory.md +9 -9
- package/docs/async-constructors.md +21 -1
- package/docs/empathy-in-ai.md +170 -0
- package/docs/hott-primer.md +47 -0
- package/docs/performance-vs-security.md +2 -2
- package/docs/prototype-chain.md +127 -0
- package/docs/purpose.md +42 -11
- package/docs/tactica-pattern.md +20 -20
- package/docs/theory-of-operations.md +224 -0
- package/docs/typed-lookup.md +30 -26
- package/module/index.js +0 -1
- package/package.json +13 -7
- package/src/api/errors/exceptionConstructor.ts +14 -9
- package/src/api/errors/index.ts +8 -4
- package/src/api/errors/throwModificationError.ts +10 -9
- package/src/api/types/InstanceCreator.ts +5 -8
- package/src/api/types/Mnemosyne.ts +72 -231
- package/src/api/types/Props.ts +4 -2
- package/src/api/types/TypeProxy.ts +7 -11
- package/src/api/types/compileNewModificatorFunctionBody.ts +13 -7
- package/src/api/types/createInstanceModificator.ts +13 -0
- package/src/api/types/index.ts +15 -8
- package/src/api/utils/index.ts +16 -14
- package/src/constants/index.ts +6 -9
- package/src/descriptors/types/index.ts +45 -25
- package/src/index.ts +60 -71
- package/src/types/index.ts +188 -70
- package/src/utils/clone.ts +11 -0
- package/src/utils/collectConstructors.ts +4 -2
- package/src/utils/exception.ts +16 -0
- package/src/utils/extract.ts +5 -2
- package/src/utils/fork.ts +57 -0
- package/src/utils/index.ts +32 -13
- package/src/utils/merge.ts +18 -6
- package/src/utils/parent.ts +16 -7
- package/src/utils/parse.ts +5 -4
- package/src/utils/pick.ts +10 -2
- package/src/utils/sibling.ts +33 -0
- package/src/utils/toJSON.ts +3 -2
package/build/api/index.js
CHANGED
|
@@ -1,9 +1,42 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.types = exports.hooks = exports.errors = void 0;
|
|
4
37
|
const hooks_1 = require("./hooks");
|
|
5
38
|
const types_1 = require("./types");
|
|
6
|
-
exports.errors = require("./errors");
|
|
39
|
+
exports.errors = __importStar(require("./errors"));
|
|
7
40
|
exports.hooks = {
|
|
8
41
|
invokeHook: hooks_1.invokeHook,
|
|
9
42
|
registerHook: hooks_1.registerHook,
|
|
@@ -13,4 +46,4 @@ exports.types = {
|
|
|
13
46
|
define: types_1.define,
|
|
14
47
|
lookup: types_1.lookup,
|
|
15
48
|
};
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVWIsbUNBSWlCO0FBQ2pCLG1DQUdpQjtBQUVqQixtREFBbUM7QUFFdEIsUUFBQSxLQUFLLEdBQUc7SUFDcEIsVUFBVSxFQUFWLGtCQUFVO0lBQ1YsWUFBWSxFQUFaLG9CQUFZO0lBQ1osbUJBQW1CLEVBQW5CLDJCQUFtQjtDQUNuQixDQUFDO0FBRVcsUUFBQSxLQUFLLEdBQUc7SUFDcEIsTUFBTSxFQUFOLGNBQU07SUFDTixNQUFNLEVBQU4sY0FBTTtDQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8vIFRPRE8gOlxuXG4vLyBldmVudHNcbi8vIGhhbmRsZXJzXG4vLyBoZWxwZXJzXG4vLyBsb2FkZXJzXG4vLyB0cmFuc2Zvcm1zXG5cbmltcG9ydCB7XG5cdGludm9rZUhvb2ssXG5cdHJlZ2lzdGVySG9vayxcblx0cmVnaXN0ZXJGbG93Q2hlY2tlcixcbn0gZnJvbSAnLi9ob29rcyc7XG5pbXBvcnQge1xuXHRkZWZpbmUsXG5cdGxvb2t1cCxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCAqIGFzIGVycm9ycyBmcm9tICcuL2Vycm9ycyc7XG5cbmV4cG9ydCBjb25zdCBob29rcyA9IHtcblx0aW52b2tlSG9vayxcblx0cmVnaXN0ZXJIb29rLFxuXHRyZWdpc3RlckZsb3dDaGVja2VyLFxufTtcblxuZXhwb3J0IGNvbnN0IHR5cGVzID0ge1xuXHRkZWZpbmUsXG5cdGxvb2t1cCxcbn07XG4iXX0=
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.InstanceCreator = void 0;
|
|
4
7
|
const constants_1 = require("../../constants");
|
|
5
8
|
const { odp, SymbolConstructorName } = constants_1.constants;
|
|
6
9
|
const errors_1 = require("../../descriptors/errors");
|
|
7
10
|
const { WRONG_MODIFICATION_PATTERN, } = errors_1.ErrorsTypes;
|
|
8
|
-
const utils_1 = require("../utils");
|
|
11
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
9
12
|
const { getExistentAsyncStack, makeErrorModificatorType, } = utils_1.default;
|
|
10
13
|
const errors_2 = require("../errors");
|
|
11
14
|
const throwModificationError_1 = require("../errors/throwModificationError");
|
|
@@ -229,4 +232,4 @@ exports.InstanceCreator = function (type, existentInstance, args, chained) {
|
|
|
229
232
|
return self.inheritedInstance;
|
|
230
233
|
};
|
|
231
234
|
Object.assign(exports.InstanceCreator.prototype, InstanceCreatorPrototype);
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdGFuY2VDcmVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9JbnN0YW5jZUNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7QUFxQmIsK0NBQTRDO0FBRTVDLE1BQU0sRUFDTCxHQUFHLEVBQ0gscUJBQXFCLEVBQ3JCLEdBQUcscUJBQVMsQ0FBQztBQUVkLHFEQUF1RDtBQUN2RCxNQUFNLEVBQUUsMEJBQTBCLEdBQUcsR0FBRyxvQkFBVyxDQUFDO0FBRXBELG9DQUFrQztBQUNsQyxNQUFNLEVBQ0wscUJBQXFCLEVBQ3JCLHdCQUF3QixHQUN4QixHQUFHLGVBQVUsQ0FBQztBQUVmLHNDQUFxQztBQUNyQyw2RUFBMEU7QUFFMUUsbUNBRWlCO0FBRWpCLCtEQUFnRTtBQUNoRSwrQ0FBNEM7QUFJNUMsTUFBTSxjQUFjLEdBQUc7SUFFdEIsTUFBTSxFQUNMLElBQUksRUFDSixnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLG1CQUFtQixFQUNuQixHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sRUFBRSxVQUFVLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFFN0IsTUFBTSxRQUFRLEdBQUc7UUFDaEIsSUFBSTtRQUNKLFFBQVEsRUFBRyxJQUFJLENBQUMsUUFBUTtRQUN4QixnQkFBZ0I7UUFDaEIsSUFBSTtRQUNKLG1CQUFtQjtLQUNuQixDQUFDO0lBRUYsVUFBVSxDQUFDLFVBQVUsQ0FDcEIsYUFBYSxFQUNiLFFBQVEsQ0FDUixDQUFDO0lBRUYsSUFBSSxDQUFDLFVBQVUsQ0FDZCxhQUFhLEVBQ2IsUUFBUSxDQUNSLENBQUM7QUFFSCxDQUFDLENBQUM7QUFJRixNQUFNLGVBQWUsR0FBRztJQUd2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDckIsTUFBTSxFQUFFLGlCQUFpQixHQUFHLEdBQUcsT0FBTyxDQUFDO0lBRXZDLE1BQU0sS0FBSyxHQUFHLElBQUEsaUJBQVMsRUFBQyxpQkFBaUIsQ0FBVSxDQUFDO0lBRXBELE1BQU0sRUFDTCxRQUFRLEVBQUUsSUFBSSxFQUNkLFVBQVUsRUFBRSxnQkFBZ0IsRUFDNUIsUUFBUSxFQUFFLElBQUksR0FDZCxHQUFHLEtBQUssQ0FBQztJQUVWLE1BQU0sRUFBRSxVQUFVLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFFN0IsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLFlBQVksS0FBSyxDQUFDLENBQUM7UUFDcEQsZUFBZSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFFbEMsTUFBTSxRQUFRLEdBQUc7UUFDaEIsSUFBSTtRQUNKLFFBQVEsRUFBRyxJQUFJLENBQUMsUUFBUTtRQUN4QixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLElBQUk7UUFDSixPQUFPO0tBQ1AsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHO1FBRWQsSUFBSSxFQUFHLElBQUksQ0FBQyxVQUFVLENBQ3JCLFFBQVEsRUFDUixRQUFRLENBQ1I7UUFFRCxVQUFVLEVBQUcsVUFBVSxDQUFDLFVBQVUsQ0FDakMsUUFBUSxFQUNSLFFBQVEsQ0FDUjtLQUVELENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUVmLENBQUMsQ0FBQztBQUlGLE1BQU0sY0FBYyxHQUFHLFVBQXlDLGNBQXdCO0lBRXZGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUNsQixNQUFNLEVBQ0wsS0FBSyxFQUNMLElBQUksRUFBRSxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQUUsRUFDUCxXQUFXLEVBQ1gsV0FBVyxFQUNYLEVBQ0QsRUFDRCxHQUFHLElBQUksQ0FBQztJQUVULElBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFHLENBQUM7UUFDM0MsTUFBTSxHQUFHLEdBQUcsd0NBQXdDLENBQUM7UUFDckQsSUFBSSxDQUFDLHNCQUFzQixDQUFFLElBQUksMEJBQTBCLENBQzFELEdBQUcsRUFDSCxLQUFLLENBQ0wsQ0FBRSxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQW1DLENBQUM7SUFDeEYsSUFBSyxDQUFDLG9CQUFvQixDQUFFLHFCQUFxQixDQUFFLEVBQUcsQ0FBQztRQUN0RCxNQUFNLEdBQUcsR0FBRyx3Q0FBd0MsQ0FBQztRQUNyRCxJQUFJLENBQUMsc0JBQXNCLENBQUUsSUFBSSwwQkFBMEIsQ0FDMUQsR0FBRyxFQUNILEtBQUssQ0FDTCxDQUFFLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSyxjQUFjLElBQUksQ0FBQyxDQUFFLElBQUksQ0FBQyxpQkFBaUIsWUFBWSxjQUFjLENBQUUsRUFBRyxDQUFDO1FBRS9FLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ3BELE1BQU0sR0FBRyxHQUFHLHVCQUF1QixjQUFjLENBQUMsUUFBUSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQzVFLElBQUksQ0FBQyxzQkFBc0IsQ0FBRSxJQUFJLDBCQUEwQixDQUMxRCxHQUFHLEVBQ0gsS0FBSyxDQUNMLENBQUUsQ0FBQztJQUVMLENBQUM7SUFFRCxJQUFJLFNBQVMsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUU5QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsWUFBWSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3RCxPQUFPO1FBQ1IsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUEsZUFBTSxFQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBa0IsQ0FBQztRQUM3RCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDMUMsTUFBTSxHQUFHLEdBQUcsbUNBQW1DLENBQUM7WUFDaEQsSUFBSSxDQUFDLHNCQUFzQixDQUFFLElBQUksMEJBQTBCLENBQzFELEdBQUcsRUFDSCxLQUFLLENBQ0wsQ0FBRSxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLElBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVyxDQUFDLFFBQVEsQ0FBQztRQUN0RCxJQUFJLFVBQVUsS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUNuQyxNQUFNLEdBQUcsR0FBRyx1QkFBdUIsY0FBYyxnQkFBZ0IsVUFBVSxFQUFFLENBQUM7WUFDOUUsSUFBSSxDQUFDLHNCQUFzQixDQUFFLElBQUksMEJBQTBCLENBQzFELEdBQUcsRUFDSCxLQUFLLENBQ0wsQ0FBRSxDQUFDO1FBQ0wsQ0FBQztJQUVGLENBQUM7SUFFRCxJQUFBLGdCQUFRLEVBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFakMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBRXhCLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxHQUFHLFVBQXlDLElBQWM7SUFHdEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBRWxCLElBQUksQ0FBQyxpQkFBaUIsR0FBSSxJQUFJLENBQUMsaUJBQXFDO1NBQ2xFLElBQUksQ0FBRSxHQUFHLEVBQUU7UUFDWCxJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLElBQUksdUJBQWUsQ0FDbEIsSUFBSSxDQUFDLE9BQWtCLEVBQ3ZCLElBQUksQ0FBQyxpQkFBMkIsRUFDaEMsSUFBSSxDQUFDLElBQUksRUFFVCxJQUFJLENBRTBCLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDL0IsQ0FBQyxDQUFFLENBQUM7QUFFTixDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxVQUF5QyxJQUFhLEVBQUUsSUFBZTtJQUcxRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsSUFBSSxDQUFDLGlCQUFpQixHQUFJLElBQUksQ0FBQyxpQkFBcUM7U0FDbEUsSUFBSSxDQUFFLENBQUUsUUFBaUIsRUFBRyxFQUFFO1FBRTlCLElBQUssT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFHLENBQUM7WUFDcEMsSUFBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRyxDQUFDO2dCQUMvQixNQUFNLEdBQUcsR0FBRyx1QkFBdUIsSUFBSSxDQUFDLFFBQVEsSUFBSTtvQkFDbkQsZUFBZSxJQUFJLENBQUMsUUFBUSwwQkFBMEIsQ0FBQztnQkFDeEQsTUFBTSxJQUFJLDBCQUEwQixDQUNuQyxHQUFHLEVBQ0gsSUFBSSxDQUFDLEtBQUssQ0FDVixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLE9BQU8sUUFBUSxDQUFDO1lBQ2pCLENBQUM7UUFDRixDQUFDO1FBRUQsSUFBSyxRQUFRLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBRSxRQUFRLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBRSxFQUFHLENBQUM7WUFFL0QsTUFBTSxHQUFHLEdBQUksUUFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2xELE1BQU0sR0FBRyxHQUFHLHVCQUF1QixJQUFJLENBQUMsUUFBUSxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sSUFBSSwwQkFBMEIsQ0FDbkMsR0FBRyxFQUNILElBQUksQ0FBQyxLQUFLLENBQ1YsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBa0IsQ0FBQztRQUU1QyxNQUFNLEtBQUssR0FBRyxJQUFBLGlCQUFTLEVBQUMsSUFBSSxDQUFDLGlCQUEyQixDQUFVLENBQUM7UUFHbkUsSUFBSyxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxpQkFBaUIsRUFBRyxDQUFDO1lBQ2pELElBQUksQ0FBQyxjQUFjLENBQUUsSUFBSSxDQUFFLENBQUM7UUFDN0IsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBRS9CLENBQUMsQ0FBRTtTQUNGLEtBQUssQ0FBRSxDQUFFLEtBQVksRUFBRyxFQUFFO1FBQzFCLElBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUcsQ0FBQztZQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUUsS0FBSyxDQUFFLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDUCxNQUFNLEtBQUssQ0FBQztRQUNiLENBQUM7SUFDRixDQUFDLENBQUUsQ0FBQztJQUVMLElBQUssSUFBSSxFQUFHLENBQUM7UUFDWixJQUFJLENBQUMsT0FBTyxDQUFFLElBQUksQ0FBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBRSxDQUFFLE9BQWUsRUFBRSxJQUFZLEVBQUcsRUFBRTtRQUV6RCxJQUFJLENBQUMsaUJBQTZDLENBQUUsSUFBSSxDQUFFLEdBQUcsQ0FBRSxHQUFHLElBQWUsRUFBRyxFQUFFO1lBQ3RGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUMzQyxPQUFrQixFQUNsQjtnQkFDQyxJQUFJO2dCQUNKLE9BQU87Z0JBQ1AsSUFBSTthQUNKLENBQ0UsQ0FBQztZQUNGLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQy9CLENBQUMsQ0FBQztJQUNILENBQUMsQ0FBRSxDQUFDO0lBRUosT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7QUFFL0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSx3QkFBd0IsR0FBRztJQUNoQyxxQkFBcUI7SUFDckIsY0FBYztJQUNkLFdBQVc7SUFDWCxPQUFPO0lBQ1AsY0FBYztJQUNkLGVBQWU7SUFDZixzQkFBc0IsRUFBdEIsK0NBQXNCO0NBQ3RCLENBQUM7QUFHRixNQUFNLFFBQVEsR0FBRyxVQUNoQixJQUE0QixFQUM1QixJQUFhLEVBQ2IsZ0JBQXdCLEVBQ3hCLElBQWUsRUFDZixPQUFnQjtJQUVoQixNQUFNLEVBQ0wsZ0JBQWdCLEVBQ2hCLEtBQUssRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxFQUNMLHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsR0FBRyxNQUFNLENBQUM7SUFFWCxNQUFNLEVBQUUsR0FBRyx1QkFBd0IsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFFM0MsTUFBTSxDQUFDLE1BQU0sQ0FDWixJQUFJLEVBQ0o7UUFDQyxJQUFJO1FBQ0osUUFBUTtRQUNSLGdCQUFnQjtRQUNoQixJQUFJLElBQUk7WUFDUCxPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7UUFDRCx1QkFBdUIsRUFBRyxFQUFFO1FBQzVCLGVBQWU7UUFDZixNQUFNO1FBQ04sS0FBSztLQUNMLENBQ0QsQ0FBQztJQUVGLElBQUssV0FBVyxJQUFJLE9BQU8sRUFBRyxDQUFDO1FBQzlCLE1BQU0sYUFBYSxHQUFhLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFFLGdCQUFnQixDQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxRyxNQUFNLEtBQUssR0FBRyx1QkFBdUIsUUFBUSxlQUFlLENBQUM7UUFDN0QsSUFBSyxXQUFXLEVBQUcsQ0FBQztZQUNuQixpQkFBUSxDQUFDLElBQUksQ0FDWixJQUFJLEVBQ0osS0FBSyxFQUNMLGFBQWEsQ0FDYixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQTRCLENBQUM7UUFDM0MsQ0FBQztJQUNGLENBQUM7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLFVBQVcsSUFBNEIsRUFBRSxJQUFlO0lBQ25GLE1BQU0sRUFDTCxNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQ25ELEdBQUcsSUFBSSxDQUFDO0lBQ1QsSUFBSyxXQUFXLElBQUksZ0JBQWdCLFlBQVksS0FBSyxFQUFHLENBQUM7UUFDeEQsSUFBSSxDQUFDLGVBQWUsR0FBRyx3QkFBd0IsQ0FBRSxRQUFRLENBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBQSw2Q0FBdUIsRUFBRSxJQUFJLENBQUUsQ0FBQztRQUMzRCxNQUFNLHdCQUF3QixHQUFHLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFFLEdBQUcsSUFBSSxDQUFFLENBQUM7UUFDekUsTUFBTSx3QkFBd0IsQ0FBQztJQUNoQyxDQUFDO0FBQ0YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsVUFBVyxJQUE0QixFQUFFLElBQWU7SUFDeEUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUEsNkNBQXVCLEVBQUUsSUFBSSxDQUFFLENBQUM7SUFFM0QsSUFBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRyxDQUFDO1FBQy9CLElBQUksQ0FBQztZQUNKLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFFLEdBQUcsSUFBSSxDQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztRQUNqQyxDQUFDO1FBQUMsT0FBUSxLQUFLLEVBQUcsQ0FBQztZQUNsQixJQUFJLENBQUMsc0JBQXNCLENBQUUsS0FBdUIsQ0FBRSxDQUFDO1FBQ3hELENBQUM7SUFDRixDQUFDO1NBQU0sQ0FBQztRQUNQLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFFLEdBQUcsSUFBSSxDQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0FBQ0YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBRyxVQUFXLElBQTRCLEVBQUUsSUFBYTtJQUM5RSxJQUFLLElBQUksQ0FBQyxpQkFBaUIsWUFBWSxPQUFPLEVBQUcsQ0FBQztRQUNqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFFLElBQUksQ0FBRSxDQUFDO1FBQ3hDLEdBQUcsQ0FDRixNQUFNLEVBQ04scUJBQXFCLEVBQ3JCO1lBQ0MsR0FBRztnQkFDRixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdEIsQ0FBQztTQUNELENBQ0QsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVXLFFBQUEsZUFBZSxHQUFHLFVBRTlCLElBQWEsRUFDYixnQkFBd0IsRUFDeEIsSUFBZSxFQUNmLE9BQWdCO0lBR2hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUdsQixRQUFRLENBQ1AsSUFBSSxFQUNKLElBQUksRUFDSixnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLE9BQU8sQ0FDUCxDQUFDO0lBR0YsbUJBQW1CLENBQ2xCLElBQUksRUFDSixJQUFJLENBQ0osQ0FBQztJQUdGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUd0QixRQUFRLENBQ1AsSUFBSSxFQUNKLElBQUksQ0FDSixDQUFDO0lBR0YsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQ25DLElBQUksRUFDSixJQUFJLENBQ0osQ0FBQztJQUNGLElBQUssV0FBVyxLQUFLLFNBQVMsRUFBRyxDQUFDO1FBQ2pDLE9BQU8sV0FBVyxDQUFDO0lBQ3BCLENBQUM7SUFHRCxJQUFJLENBQUMsY0FBYyxDQUFFLElBQUksQ0FBRSxDQUFDO0lBRzVCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0FBRS9CLENBQThELENBQUM7QUFFL0QsTUFBTSxDQUFDLE1BQU0sQ0FDWix1QkFBZSxDQUFDLFNBQVMsRUFDekIsd0JBQXdCLENBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIgIFxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEluc3RhbmNlQ3JlYXRvciBvcmNoZXN0cmF0ZXMgdGhlIGZ1bGwgaW5zdGFuY2UgY29uc3RydWN0aW9uIGxpZmVjeWNsZS5cbiAqXG4gKiBQaXBlbGluZSBzdGFnZXMgKHNlZSBhbHNvIGNyZWF0ZUluc3RhbmNlTW9kaWZpY2F0b3IudHMgYW5kIEluc3RhbmNlTW9kaWZpY2F0b3IudHMpOlxuICogICAxLiBTZXR1cCAgICAgIC0gZXh0cmFjdCB0eXBlLCBjb25maWcsIHByZXBhcmUgTW9kaWZpY2F0aW9uQ29uc3RydWN0b3JcbiAqICAgMi4gU3RhY2sgICAgICAtIGNvbGxlY3QgY3JlYXRpb24gc3RhY2sgaWYgc3VibWl0U3RhY2sgb3IgY2hhaW5lZFxuICogICAzLiBibG9ja0Vycm9ycy0gaWYgcGFyZW50IGlzIEVycm9yLCBvcHRpb25hbGx5IGJsb2NrIGZ1cnRoZXIgY29uc3RydWN0aW9uXG4gKiAgIDQuIFByZS1ob29rcyAgLSBpbnZva2UgcHJlQ3JlYXRpb24gaG9va3Mgb24gY29sbGVjdGlvbiBhbmQgdHlwZVxuICogICA1LiBCdWlsZCAgICAgIC0gbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IoKSB3aXJlcyBwcm90b3R5cGUgY2hhaW5cbiAqICAgNi4gQ29uc3RydWN0ICAtIG5ldyBJbnN0YW5jZU1vZGlmaWNhdG9yKC4uLmFyZ3MpIHJ1bnMgdXNlciBjb25zdHJ1Y3RvclxuICogICA3LiBBc3luYyAgICAgIC0gaWYgcmVzdWx0IGlzIFByb21pc2UsIGF0dGFjaCBhd2FpdGVyIGFuZCBzdWJ0eXBlIGZhY3Rvcmllc1xuICogICA4LiBQb3N0LXByb2MgIC0gdmFsaWRhdGUgaW5oZXJpdGFuY2UsIHNldCBfX3NlbGZfXywgaW52b2tlIHBvc3RDcmVhdGlvbiBob29rc1xuICovXG5cblxuaW1wb3J0IHtcblx0X0ludGVybmFsX1RDXywgSW5zdGFuY2VDcmVhdG9yQ29udGV4dCwgVGhlblNwZWMsIFR5cGVEZWYsXG5cdE1uZW1vbmljYUVycm9yLCBNbmVtb25pY2FDb25zdHJ1Y3RvclxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG5jb25zdCB7XG5cdG9kcCxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lXG59ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgeyBFcnJvcnNUeXBlcyB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3JzL2Vycm9ycyc7XG5jb25zdCB7IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOLCB9ID0gRXJyb3JzVHlwZXM7XG5cbmltcG9ydCBUeXBlc1V0aWxzIGZyb20gJy4uL3V0aWxzJztcbmNvbnN0IHtcblx0Z2V0RXhpc3RlbnRBc3luY1N0YWNrLFxuXHRtYWtlRXJyb3JNb2RpZmljYXRvclR5cGUsXG59ID0gVHlwZXNVdGlscztcblxuaW1wb3J0IHsgZ2V0U3RhY2sgfSBmcm9tICcuLi9lcnJvcnMnO1xuaW1wb3J0IHsgdGhyb3dNb2RpZmljYXRpb25FcnJvciB9IGZyb20gJy4uL2Vycm9ycy90aHJvd01vZGlmaWNhdGlvbkVycm9yJztcblxuaW1wb3J0IHtcblx0X2dldFByb3BzLCBfc2V0U2VsZiwgUHJvcHMgXG59IGZyb20gJy4vUHJvcHMnO1xuXG5pbXBvcnQgeyBtYWtlSW5zdGFuY2VNb2RpZmljYXRvciB9IGZyb20gJy4vSW5zdGFuY2VNb2RpZmljYXRvcic7XG5pbXBvcnQgeyBwYXJlbnQgfSBmcm9tICcuLi8uLi91dGlscy9wYXJlbnQnO1xuXG4vLyBpbXBvcnQgeyBNbmVtb3N5bmUgfSBmcm9tICcuL01uZW1vc3luZSc7XG4gIFxuY29uc3QgaW52b2tlUHJlSG9va3MgPSBmdW5jdGlvbiAoIHRoaXM6IEluc3RhbmNlQ3JlYXRvckNvbnRleHQgKSB7XG5cblx0Y29uc3Qge1xuXHRcdHR5cGUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdEluc3RhbmNlTW9kaWZpY2F0b3Jcblx0fSA9IHRoaXM7XG5cblx0Y29uc3QgeyBjb2xsZWN0aW9uLCB9ID0gdHlwZTtcblxuXHRjb25zdCBob29rRGF0YSA9IHtcblx0XHR0eXBlLFxuXHRcdFR5cGVOYW1lIDogdHlwZS5UeXBlTmFtZSxcblx0XHRleGlzdGVudEluc3RhbmNlLFxuXHRcdGFyZ3MsXG5cdFx0SW5zdGFuY2VNb2RpZmljYXRvclxuXHR9O1xuXG5cdGNvbGxlY3Rpb24uaW52b2tlSG9vayhcblx0XHQncHJlQ3JlYXRpb24nLFxuXHRcdGhvb2tEYXRhIFxuXHQpO1xuXG5cdHR5cGUuaW52b2tlSG9vayhcblx0XHQncHJlQ3JlYXRpb24nLFxuXHRcdGhvb2tEYXRhIFxuXHQpO1xuXG59O1xuXG5cbiAgXG5jb25zdCBpbnZva2VQb3N0SG9va3MgPSBmdW5jdGlvbiAoIHRoaXM6IEluc3RhbmNlQ3JlYXRvckNvbnRleHQgKSB7XG5cblx0IFxuXHRjb25zdCBjcmVhdG9yID0gdGhpcztcblx0Y29uc3QgeyBpbmhlcml0ZWRJbnN0YW5jZSwgfSA9IGNyZWF0b3I7XG5cblx0Y29uc3QgcHJvcHMgPSBfZ2V0UHJvcHMoaW5oZXJpdGVkSW5zdGFuY2UpIGFzIFByb3BzO1xuXG5cdGNvbnN0IHtcblx0XHRfX3R5cGVfXzogdHlwZSxcblx0XHRfX3BhcmVudF9fOiBleGlzdGVudEluc3RhbmNlLFxuXHRcdF9fYXJnc19fOiBhcmdzLFxuXHR9ID0gcHJvcHM7XG5cblx0Y29uc3QgeyBjb2xsZWN0aW9uLCB9ID0gdHlwZTtcblxuXHRjb25zdCBob29rVHlwZSA9IGluaGVyaXRlZEluc3RhbmNlIGluc3RhbmNlb2YgRXJyb3IgP1xuXHRcdCdjcmVhdGlvbkVycm9yJyA6ICdwb3N0Q3JlYXRpb24nO1xuXG5cdGNvbnN0IGhvb2tEYXRhID0ge1xuXHRcdHR5cGUsXG5cdFx0VHlwZU5hbWUgOiB0eXBlLlR5cGVOYW1lLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0aW5oZXJpdGVkSW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRjcmVhdG9yXG5cdH07XG5cblx0Y29uc3QgcmVzdWx0ID0ge1xuXG5cdFx0dHlwZSA6IHR5cGUuaW52b2tlSG9vayhcblx0XHRcdGhvb2tUeXBlLFxuXHRcdFx0aG9va0RhdGEgXG5cdFx0KSxcblxuXHRcdGNvbGxlY3Rpb24gOiBjb2xsZWN0aW9uLmludm9rZUhvb2soXG5cdFx0XHRob29rVHlwZSxcblx0XHRcdGhvb2tEYXRhIFxuXHRcdCksXG5cblx0fTtcblx0cmV0dXJuIHJlc3VsdDtcblxufTtcblxuXG4gIFxuY29uc3QgcG9zdFByb2Nlc3NpbmcgPSBmdW5jdGlvbiAoIHRoaXM6IEluc3RhbmNlQ3JlYXRvckNvbnRleHQsIGNvbnRpbnVhdGlvbk9mPzogVHlwZURlZiApIHtcblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblx0Y29uc3Qge1xuXHRcdHN0YWNrLFxuXHRcdHR5cGU6IHtcblx0XHRcdGlzU3ViVHlwZSxcblx0XHRcdGNvbmZpZzoge1xuXHRcdFx0XHRzdHJpY3RDaGFpbixcblx0XHRcdFx0YmxvY2tFcnJvcnNcblx0XHRcdH1cblx0XHR9XG5cdH0gPSBzZWxmO1xuXG5cdGlmICggIXNlbGYuaW5oZXJpdGVkSW5zdGFuY2UuY29uc3RydWN0b3IgKSB7XG5cdFx0Y29uc3QgbXNnID0gJ3Nob3VsZCBpbmhlcml0IGZyb20gbW5lbW9uaWNhIGluc3RhbmNlJztcblx0XHRzZWxmLnRocm93TW9kaWZpY2F0aW9uRXJyb3IoIG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTihcblx0XHRcdG1zZyxcblx0XHRcdHN0YWNrIFxuXHRcdCkgKTtcblx0fVxuXG5cdGNvbnN0IGluaGVyaXRlZENvbnN0cnVjdG9yID0gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZS5jb25zdHJ1Y3RvciBhcyBNbmVtb25pY2FDb25zdHJ1Y3Rvcjtcblx0aWYgKCAhaW5oZXJpdGVkQ29uc3RydWN0b3JbIFN5bWJvbENvbnN0cnVjdG9yTmFtZSBdICkge1xuXHRcdGNvbnN0IG1zZyA9ICdzaG91bGQgaW5oZXJpdCBmcm9tIG1uZW1vbmljYSBpbnN0YW5jZSc7XG5cdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oXG5cdFx0XHRtc2csXG5cdFx0XHRzdGFjayBcblx0XHQpICk7XG5cdH1cblxuXHRpZiAoIGNvbnRpbnVhdGlvbk9mICYmICEoIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgaW5zdGFuY2VvZiBjb250aW51YXRpb25PZiApICkge1xuXHRcdC8vIGRlYnVnZ2VyO1xuXHRcdGNvbnN0IGljbiA9IHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UuY29uc3RydWN0b3IubmFtZTtcblx0XHRjb25zdCBtc2cgPSBgc2hvdWxkIGluaGVyaXQgZnJvbSAke2NvbnRpbnVhdGlvbk9mLlR5cGVOYW1lfSBidXQgZ290ICR7aWNufWA7XG5cdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oXG5cdFx0XHRtc2csXG5cdFx0XHRzdGFjayBcblx0XHQpICk7XG5cdFx0Ly8gdGhyb3cgbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKG1zZywgc2VsZi5zdGFjayk7XG5cdH1cblxuXHRpZiAoaXNTdWJUeXBlICYmIHN0cmljdENoYWluKSB7XG5cdFx0XG5cdFx0aWYgKHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgaW5zdGFuY2VvZiBFcnJvciAmJiAhYmxvY2tFcnJvcnMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBwcmV2ID0gcGFyZW50KHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UpIGFzIG9iamVjdCB8IG51bGw7XG5cdFx0aWYgKCFwcmV2IHx8IChwcmV2ICYmICFwcmV2LmNvbnN0cnVjdG9yKSkge1xuXHRcdFx0Y29uc3QgbXNnID0gJ3Nob3VsZCBpbmhlcml0IGZyb20gc29tZSBpbnN0YW5jZSc7XG5cdFx0XHRzZWxmLnRocm93TW9kaWZpY2F0aW9uRXJyb3IoIG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTihcblx0XHRcdFx0bXNnLFxuXHRcdFx0XHRzdGFjayBcblx0XHRcdCkgKTtcblx0XHR9XG5cdFx0Y29uc3QgcGFyZW50TmFtZSA9IHByZXYhLmNvbnN0cnVjdG9yLm5hbWU7XG5cdFx0Y29uc3QgcGFyZW50VHlwZU5hbWUgPSBzZWxmLnR5cGUucGFyZW50VHlwZSEuVHlwZU5hbWU7XG5cdFx0aWYgKHBhcmVudE5hbWUgIT09IHBhcmVudFR5cGVOYW1lKSB7XG5cdFx0XHRjb25zdCBtc2cgPSBgc2hvdWxkIGluaGVyaXQgZnJvbSAke3BhcmVudFR5cGVOYW1lfSBidXQgbWFkZSBvbiAke3BhcmVudE5hbWV9YDtcblx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKFxuXHRcdFx0XHRtc2csXG5cdFx0XHRcdHN0YWNrIFxuXHRcdFx0KSApO1xuXHRcdH1cblxuXHR9XG5cblx0X3NldFNlbGYoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSk7XG5cblx0c2VsZi5pbnZva2VQb3N0SG9va3MoKTtcblxufTtcblxuY29uc3QgYWRkVGhlbiA9IGZ1bmN0aW9uICggdGhpczogSW5zdGFuY2VDcmVhdG9yQ29udGV4dCwgdGhlbjogVGhlblNwZWMgKSB7XG5cblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gKHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgYXMgUHJvbWlzZTxvYmplY3Q+KVxuXHRcdC50aGVuKCAoKSA9PiB7XG5cdFx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID1cblx0XHRcdG5ldyBJbnN0YW5jZUNyZWF0b3IoXG5cdFx0XHRcdHRoZW4uc3VidHlwZSBhcyBUeXBlRGVmLFxuXHRcdFx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlIGFzIG9iamVjdCxcblx0XHRcdFx0dGhlbi5hcmdzLFxuXHRcdFx0XHQvLyB3YXMgY2hhaW5lZCA6XG5cdFx0XHRcdHRydWVcblx0XHRcdFx0Ly8gc2VsZi5leGlzdGVudEluc3RhbmNlXG5cdFx0XHQpIGFzIHVua25vd24gYXMgUHJvbWlzZTxvYmplY3Q+O1xuXHRcdFx0cmV0dXJuIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2U7XG5cdFx0fSApO1xuXG59O1xuXG5jb25zdCBtYWtlQXdhaXRlciA9IGZ1bmN0aW9uICggdGhpczogSW5zdGFuY2VDcmVhdG9yQ29udGV4dCwgdHlwZTogVHlwZURlZiwgdGhlbj86IFRoZW5TcGVjICkge1xuXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IChzZWxmLmluaGVyaXRlZEluc3RhbmNlIGFzIFByb21pc2U8b2JqZWN0Pilcblx0XHQudGhlbiggKCBpbnN0YW5jZTogdW5rbm93biApID0+IHtcblxuXHRcdFx0aWYgKCB0eXBlb2YgaW5zdGFuY2UgIT09ICdvYmplY3QnICkge1xuXHRcdFx0XHRpZiAoIHNlbGYuY29uZmlnLmF3YWl0UmV0dXJuICkge1xuXHRcdFx0XHRcdGNvbnN0IG1zZyA9IGBzaG91bGQgaW5oZXJpdCBmcm9tICR7dHlwZS5UeXBlTmFtZX06IGAgK1xuXHRcdFx0XHRcdFx0YHNlZW1zIGFzeW5jICR7dHlwZS5UeXBlTmFtZX0gaGFzIG5vIHJldHVybiBzdGF0ZW1lbnRgO1xuXHRcdFx0XHRcdHRocm93IG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTihcblx0XHRcdFx0XHRcdG1zZyxcblx0XHRcdFx0XHRcdHNlbGYuc3RhY2sgXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gaW5zdGFuY2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKCBpbnN0YW5jZSA9PT0gbnVsbCB8fCAhKCBpbnN0YW5jZSBpbnN0YW5jZW9mIHNlbGYudHlwZSApICkge1xuXHRcdFx0XHQgXG5cdFx0XHRcdGNvbnN0IGljbiA9IChpbnN0YW5jZSBhcyBvYmplY3QpLmNvbnN0cnVjdG9yLm5hbWU7XG5cdFx0XHRcdGNvbnN0IG1zZyA9IGBzaG91bGQgaW5oZXJpdCBmcm9tICR7dHlwZS5UeXBlTmFtZX0gYnV0IGdvdCAke2ljbn1gO1xuXHRcdFx0XHR0aHJvdyBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oXG5cdFx0XHRcdFx0bXNnLFxuXHRcdFx0XHRcdHNlbGYuc3RhY2sgXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBpbnN0YW5jZSBhcyBvYmplY3Q7XG5cblx0XHRcdGNvbnN0IHByb3BzID0gX2dldFByb3BzKHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgYXMgb2JqZWN0KSBhcyBQcm9wcztcblxuXHRcdFx0IFxuXHRcdFx0aWYgKCBwcm9wcy5fX3NlbGZfXyAhPT0gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSApIHtcblx0XHRcdFx0c2VsZi5wb3N0UHJvY2Vzc2luZyggdHlwZSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblxuXHRcdH0gKVxuXHRcdC5jYXRjaCggKCBlcnJvcjogRXJyb3IgKSA9PiB7XG5cdFx0XHRpZiAoIHNlbGYuY29uZmlnLmJsb2NrRXJyb3JzICkge1xuXHRcdFx0XHRzZWxmLnRocm93TW9kaWZpY2F0aW9uRXJyb3IoIGVycm9yICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aHJvdyBlcnJvcjtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0aWYgKCB0aGVuICkge1xuXHRcdHNlbGYuYWRkVGhlbiggdGhlbiApO1xuXHR9XG5cblx0dHlwZS5zdWJ0eXBlcy5mb3JFYWNoKCAoIHN1YnR5cGU6IG9iamVjdCwgbmFtZTogc3RyaW5nICkgPT4ge1xuXHRcdCBcblx0XHQoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbIG5hbWUgXSA9ICggLi4uYXJnczogdW5rbm93bltdICkgPT4ge1xuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IHNlbGYubWFrZUF3YWl0ZXIoXG4gc3VidHlwZSBhcyBUeXBlRGVmLFxuIHtcbiBcdG5hbWUsXG4gXHRzdWJ0eXBlLFxuIFx0YXJncyxcbiB9IFxuXHRcdFx0KTtcblx0XHRcdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXHRcdH07XG5cdH0gKTtcblxuXHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblxufTtcblxuY29uc3QgSW5zdGFuY2VDcmVhdG9yUHJvdG90eXBlID0ge1xuXHRnZXRFeGlzdGVudEFzeW5jU3RhY2ssXG5cdHBvc3RQcm9jZXNzaW5nLFxuXHRtYWtlQXdhaXRlcixcblx0YWRkVGhlbixcblx0aW52b2tlUHJlSG9va3MsXG5cdGludm9rZVBvc3RIb29rcyxcblx0dGhyb3dNb2RpZmljYXRpb25FcnJvclxufTtcblxuICBcbmNvbnN0IHJ1blNldHVwID0gZnVuY3Rpb24gKFxuXHRzZWxmOiBJbnN0YW5jZUNyZWF0b3JDb250ZXh0LFxuXHR0eXBlOiBUeXBlRGVmLFxuXHRleGlzdGVudEluc3RhbmNlOiBvYmplY3QsXG5cdGFyZ3M6IHVua25vd25bXSxcblx0Y2hhaW5lZDogYm9vbGVhblxuKSB7XG5cdGNvbnN0IHtcblx0XHRjb25zdHJ1Y3RIYW5kbGVyLFxuXHRcdHByb3RvLFxuXHRcdGNvbmZpZyxcblx0XHRUeXBlTmFtZVxuXHR9ID0gdHlwZTtcblxuXHRjb25zdCB7XG5cdFx0TW9kaWZpY2F0aW9uQ29uc3RydWN0b3IsXG5cdFx0c3VibWl0U3RhY2tcblx0fSA9IGNvbmZpZztcblxuXHRjb25zdCBtYyA9IE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yISgpO1xuXHRjb25zdCBNb2RpZmljYXRvclR5cGUgPSBjb25zdHJ1Y3RIYW5kbGVyKCk7XG5cblx0T2JqZWN0LmFzc2lnbihcblx0XHRzZWxmLFxuXHRcdHtcblx0XHRcdHR5cGUsXG5cdFx0XHRUeXBlTmFtZSxcblx0XHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0XHRnZXQgYXJncyAoKSB7XG5cdFx0XHRcdHJldHVybiBhcmdzO1xuXHRcdFx0fSxcblx0XHRcdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yIDogbWMsXG5cdFx0XHRNb2RpZmljYXRvclR5cGUsXG5cdFx0XHRjb25maWcsXG5cdFx0XHRwcm90b1xuXHRcdH0gXG5cdCk7XG5cblx0aWYgKCBzdWJtaXRTdGFjayB8fCBjaGFpbmVkICkge1xuXHRcdGNvbnN0IHN0YWNrQWRkaXRpb246IHN0cmluZ1tdID0gY2hhaW5lZCA/IHNlbGYuZ2V0RXhpc3RlbnRBc3luY1N0YWNrKCBleGlzdGVudEluc3RhbmNlICkgYXMgc3RyaW5nW10gOiBbXTtcblx0XHRjb25zdCB0aXRsZSA9IGBcXG48LS0gY3JlYXRpb24gb2YgWyAke1R5cGVOYW1lfSBdIHRyYWNlZCAtLT5gO1xuXHRcdGlmICggc3VibWl0U3RhY2sgKSB7XG5cdFx0XHRnZXRTdGFjay5jYWxsKFxuXHRcdFx0XHRzZWxmLFxuXHRcdFx0XHR0aXRsZSxcblx0XHRcdFx0c3RhY2tBZGRpdGlvbiBcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNlbGYuc3RhY2sgPSB0aXRsZSBhcyB1bmtub3duIGFzIHN0cmluZ1tdO1xuXHRcdH1cblx0fVxufTtcblxuY29uc3QgcnVuQmxvY2tFcnJvcnNDaGVjayA9IGZ1bmN0aW9uICggc2VsZjogSW5zdGFuY2VDcmVhdG9yQ29udGV4dCwgYXJnczogdW5rbm93bltdICkge1xuXHRjb25zdCB7XG5cdFx0Y29uZmlnOiB7IGJsb2NrRXJyb3JzIH0sIFR5cGVOYW1lLCBleGlzdGVudEluc3RhbmNlIFxuXHR9ID0gc2VsZjtcblx0aWYgKCBibG9ja0Vycm9ycyAmJiBleGlzdGVudEluc3RhbmNlIGluc3RhbmNlb2YgRXJyb3IgKSB7XG5cdFx0c2VsZi5Nb2RpZmljYXRvclR5cGUgPSBtYWtlRXJyb3JNb2RpZmljYXRvclR5cGUoIFR5cGVOYW1lICk7XG5cdFx0c2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yID0gbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IoIHNlbGYgKTtcblx0XHRjb25zdCBibG9ja0Vycm9yc0Vycm9ySW5zdGFuY2UgPSBuZXcgc2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yKCAuLi5hcmdzICk7XG5cdFx0dGhyb3cgYmxvY2tFcnJvcnNFcnJvckluc3RhbmNlO1xuXHR9XG59O1xuXG5jb25zdCBydW5CdWlsZCA9IGZ1bmN0aW9uICggc2VsZjogSW5zdGFuY2VDcmVhdG9yQ29udGV4dCwgYXJnczogdW5rbm93bltdICkge1xuXHRzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IgPSBtYWtlSW5zdGFuY2VNb2RpZmljYXRvciggc2VsZiApO1xuXG5cdGlmICggc2VsZi5jb25maWcuYmxvY2tFcnJvcnMgKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGFuc3dlciA9IG5ldyBzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IoIC4uLmFyZ3MgKTtcblx0XHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBhbnN3ZXI7XG5cdFx0fSBjYXRjaCAoIGVycm9yICkge1xuXHRcdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBlcnJvciBhcyBNbmVtb25pY2FFcnJvciApO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRjb25zdCBhbnN3ZXIgPSBuZXcgc2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yKCAuLi5hcmdzICk7XG5cdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IGFuc3dlcjtcblx0fVxufTtcblxuY29uc3QgcnVuQXN5bmNIYW5kbGluZyA9IGZ1bmN0aW9uICggc2VsZjogSW5zdGFuY2VDcmVhdG9yQ29udGV4dCwgdHlwZTogVHlwZURlZiApIHtcblx0aWYgKCBzZWxmLmluaGVyaXRlZEluc3RhbmNlIGluc3RhbmNlb2YgUHJvbWlzZSApIHtcblx0XHRjb25zdCB3YWl0ZXIgPSBzZWxmLm1ha2VBd2FpdGVyKCB0eXBlICk7XG5cdFx0b2RwKFxuXHRcdFx0d2FpdGVyLFxuXHRcdFx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRcdFx0e1xuXHRcdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRcdHJldHVybiB0eXBlLlR5cGVOYW1lO1xuXHRcdFx0XHR9XG5cdFx0XHR9IFxuXHRcdCk7XG5cdFx0cmV0dXJuIHdhaXRlcjtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IEluc3RhbmNlQ3JlYXRvciA9IGZ1bmN0aW9uIChcblx0dGhpczogSW5zdGFuY2VDcmVhdG9yQ29udGV4dCxcblx0dHlwZTogVHlwZURlZixcblx0ZXhpc3RlbnRJbnN0YW5jZTogb2JqZWN0LFxuXHRhcmdzOiB1bmtub3duW10sXG5cdGNoYWluZWQ6IGJvb2xlYW5cbikge1xuXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdC8vIFBoYXNlIDE6IFNldHVwIOKAlCBiaW5kIHR5cGUsIGNvbmZpZywgYXJncywgc3RhY2sgdG8gY29udGV4dFxuXHRydW5TZXR1cChcblx0XHRzZWxmLFxuXHRcdHR5cGUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdGNoYWluZWQgXG5cdCk7XG5cblx0Ly8gUGhhc2UgMjogQ2lyY3VpdCBicmVha2VyIOKAlCBpZiBwYXJlbnQgaXMgRXJyb3IgYW5kIGJsb2NrRXJyb3JzLCBhYm9ydCBlYXJseVxuXHRydW5CbG9ja0Vycm9yc0NoZWNrKFxuXHRcdHNlbGYsXG5cdFx0YXJncyBcblx0KTtcblxuXHQvLyBQaGFzZSAzOiBQcmUtaG9va3Mg4oCUIGludm9rZSBwcmVDcmVhdGlvbiBob29rcyBvbiBjb2xsZWN0aW9uIGFuZCB0eXBlXG5cdHNlbGYuaW52b2tlUHJlSG9va3MoKTtcblxuXHQvLyBQaGFzZSA0OiBCdWlsZCDigJQgd2lyZSBwcm90b3R5cGUgY2hhaW4gYW5kIHJ1biB1c2VyIGNvbnN0cnVjdG9yXG5cdHJ1bkJ1aWxkKFxuXHRcdHNlbGYsXG5cdFx0YXJncyBcblx0KTtcblxuXHQvLyBQaGFzZSA1OiBBc3luYyBoYW5kbGluZyDigJQgaWYgUHJvbWlzZSwgZGVmZXIgdmFsaWRhdGlvbi9wb3N0SG9va3Ncblx0Y29uc3QgYXN5bmNSZXN1bHQgPSBydW5Bc3luY0hhbmRsaW5nKFxuXHRcdHNlbGYsXG5cdFx0dHlwZSBcblx0KTtcblx0aWYgKCBhc3luY1Jlc3VsdCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdHJldHVybiBhc3luY1Jlc3VsdDtcblx0fVxuXG5cdC8vIFBoYXNlIDY6IFZhbGlkYXRpb24gKyBQb3N0LWhvb2tzIOKAlCB2YWxpZGF0ZSBpbmhlcml0YW5jZSwgc2V0IF9fc2VsZl9fLCBpbnZva2UgaG9va3Ncblx0c2VsZi5wb3N0UHJvY2Vzc2luZyggdHlwZSApO1xuXG5cdC8vIFBoYXNlIDc6IFJldHVyblxuXHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblxufSBhcyB1bmtub3duIGFzIF9JbnRlcm5hbF9UQ188dHlwZW9mIEluc3RhbmNlQ3JlYXRvclByb3RvdHlwZT47XG5cbk9iamVjdC5hc3NpZ24oXG5cdEluc3RhbmNlQ3JlYXRvci5wcm90b3R5cGUsXG5cdEluc3RhbmNlQ3JlYXRvclByb3RvdHlwZSBcbik7XG4iXX0=
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdGFuY2VDcmVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9JbnN0YW5jZUNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7Ozs7QUFxQmIsK0NBQTRDO0FBRTVDLE1BQU0sRUFDTCxHQUFHLEVBQ0gscUJBQXFCLEVBQ3JCLEdBQUcscUJBQVMsQ0FBQztBQUVkLHFEQUF1RDtBQUN2RCxNQUFNLEVBQUUsMEJBQTBCLEdBQUcsR0FBRyxvQkFBVyxDQUFDO0FBRXBELHFEQUFrQztBQUNsQyxNQUFNLEVBQ0wscUJBQXFCLEVBQ3JCLHdCQUF3QixHQUN4QixHQUFHLGVBQVUsQ0FBQztBQUVmLHNDQUFxQztBQUNyQyw2RUFBMEU7QUFFMUUsbUNBRWlCO0FBRWpCLCtEQUFnRTtBQUNoRSwrQ0FBNEM7QUFJNUMsTUFBTSxjQUFjLEdBQUc7SUFFdEIsTUFBTSxFQUNMLElBQUksRUFDSixnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLG1CQUFtQixFQUNuQixHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sRUFBRSxVQUFVLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFFN0IsTUFBTSxRQUFRLEdBQUc7UUFDaEIsSUFBSTtRQUNKLFFBQVEsRUFBRyxJQUFJLENBQUMsUUFBUTtRQUN4QixnQkFBZ0I7UUFDaEIsSUFBSTtRQUNKLG1CQUFtQjtLQUNuQixDQUFDO0lBRUYsVUFBVSxDQUFDLFVBQVUsQ0FDcEIsYUFBYSxFQUNiLFFBQVEsQ0FDUixDQUFDO0lBRUYsSUFBSSxDQUFDLFVBQVUsQ0FDZCxhQUFhLEVBQ2IsUUFBUSxDQUNSLENBQUM7QUFFSCxDQUFDLENBQUM7QUFJRixNQUFNLGVBQWUsR0FBRztJQUd2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDckIsTUFBTSxFQUFFLGlCQUFpQixHQUFHLEdBQUcsT0FBTyxDQUFDO0lBRXZDLE1BQU0sS0FBSyxHQUFHLElBQUEsaUJBQVMsRUFBQyxpQkFBaUIsQ0FBVSxDQUFDO0lBRXBELE1BQU0sRUFDTCxRQUFRLEVBQUUsSUFBSSxFQUNkLFVBQVUsRUFBRSxnQkFBZ0IsRUFDNUIsUUFBUSxFQUFFLElBQUksR0FDZCxHQUFHLEtBQUssQ0FBQztJQUVWLE1BQU0sRUFBRSxVQUFVLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFFN0IsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLFlBQVksS0FBSyxDQUFDLENBQUM7UUFDcEQsZUFBZSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFFbEMsTUFBTSxRQUFRLEdBQUc7UUFDaEIsSUFBSTtRQUNKLFFBQVEsRUFBRyxJQUFJLENBQUMsUUFBUTtRQUN4QixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLElBQUk7UUFDSixPQUFPO0tBQ1AsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHO1FBRWQsSUFBSSxFQUFHLElBQUksQ0FBQyxVQUFVLENBQ3JCLFFBQVEsRUFDUixRQUFRLENBQ1I7UUFFRCxVQUFVLEVBQUcsVUFBVSxDQUFDLFVBQVUsQ0FDakMsUUFBUSxFQUNSLFFBQVEsQ0FDUjtLQUVELENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUVmLENBQUMsQ0FBQztBQUlGLE1BQU0sY0FBYyxHQUFHLFVBQXlDLGNBQXdCO0lBRXZGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUNsQixNQUFNLEVBQ0wsS0FBSyxFQUNMLElBQUksRUFBRSxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQUUsRUFDUCxXQUFXLEVBQ1gsV0FBVyxFQUNYLEVBQ0QsRUFDRCxHQUFHLElBQUksQ0FBQztJQUVULElBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFHLENBQUM7UUFDM0MsTUFBTSxHQUFHLEdBQUcsd0NBQXdDLENBQUM7UUFDckQsSUFBSSxDQUFDLHNCQUFzQixDQUFFLElBQUksMEJBQTBCLENBQzFELEdBQUcsRUFDSCxLQUFLLENBQ0wsQ0FBRSxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQW1DLENBQUM7SUFDeEYsSUFBSyxDQUFDLG9CQUFvQixDQUFFLHFCQUFxQixDQUFFLEVBQUcsQ0FBQztRQUN0RCxNQUFNLEdBQUcsR0FBRyx3Q0FBd0MsQ0FBQztRQUNyRCxJQUFJLENBQUMsc0JBQXNCLENBQUUsSUFBSSwwQkFBMEIsQ0FDMUQsR0FBRyxFQUNILEtBQUssQ0FDTCxDQUFFLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSyxjQUFjLElBQUksQ0FBQyxDQUFFLElBQUksQ0FBQyxpQkFBaUIsWUFBWSxjQUFjLENBQUUsRUFBRyxDQUFDO1FBRS9FLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ3BELE1BQU0sR0FBRyxHQUFHLHVCQUF1QixjQUFjLENBQUMsUUFBUSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQzVFLElBQUksQ0FBQyxzQkFBc0IsQ0FBRSxJQUFJLDBCQUEwQixDQUMxRCxHQUFHLEVBQ0gsS0FBSyxDQUNMLENBQUUsQ0FBQztJQUVMLENBQUM7SUFFRCxJQUFJLFNBQVMsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUU5QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsWUFBWSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3RCxPQUFPO1FBQ1IsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUEsZUFBTSxFQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBa0IsQ0FBQztRQUM3RCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDMUMsTUFBTSxHQUFHLEdBQUcsbUNBQW1DLENBQUM7WUFDaEQsSUFBSSxDQUFDLHNCQUFzQixDQUFFLElBQUksMEJBQTBCLENBQzFELEdBQUcsRUFDSCxLQUFLLENBQ0wsQ0FBRSxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLElBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVyxDQUFDLFFBQVEsQ0FBQztRQUN0RCxJQUFJLFVBQVUsS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUNuQyxNQUFNLEdBQUcsR0FBRyx1QkFBdUIsY0FBYyxnQkFBZ0IsVUFBVSxFQUFFLENBQUM7WUFDOUUsSUFBSSxDQUFDLHNCQUFzQixDQUFFLElBQUksMEJBQTBCLENBQzFELEdBQUcsRUFDSCxLQUFLLENBQ0wsQ0FBRSxDQUFDO1FBQ0wsQ0FBQztJQUVGLENBQUM7SUFFRCxJQUFBLGdCQUFRLEVBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFakMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBRXhCLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxHQUFHLFVBQXlDLElBQWM7SUFHdEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBRWxCLElBQUksQ0FBQyxpQkFBaUIsR0FBSSxJQUFJLENBQUMsaUJBQXFDO1NBQ2xFLElBQUksQ0FBRSxHQUFHLEVBQUU7UUFDWCxJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLElBQUksdUJBQWUsQ0FDbEIsSUFBSSxDQUFDLE9BQWtCLEVBQ3ZCLElBQUksQ0FBQyxpQkFBMkIsRUFDaEMsSUFBSSxDQUFDLElBQUksRUFFVCxJQUFJLENBRTBCLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDL0IsQ0FBQyxDQUFFLENBQUM7QUFFTixDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxVQUF5QyxJQUFhLEVBQUUsSUFBZTtJQUcxRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsSUFBSSxDQUFDLGlCQUFpQixHQUFJLElBQUksQ0FBQyxpQkFBcUM7U0FDbEUsSUFBSSxDQUFFLENBQUUsUUFBaUIsRUFBRyxFQUFFO1FBRTlCLElBQUssT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFHLENBQUM7WUFDcEMsSUFBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRyxDQUFDO2dCQUMvQixNQUFNLEdBQUcsR0FBRyx1QkFBdUIsSUFBSSxDQUFDLFFBQVEsSUFBSTtvQkFDbkQsZUFBZSxJQUFJLENBQUMsUUFBUSwwQkFBMEIsQ0FBQztnQkFDeEQsTUFBTSxJQUFJLDBCQUEwQixDQUNuQyxHQUFHLEVBQ0gsSUFBSSxDQUFDLEtBQUssQ0FDVixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLE9BQU8sUUFBUSxDQUFDO1lBQ2pCLENBQUM7UUFDRixDQUFDO1FBRUQsSUFBSyxRQUFRLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBRSxRQUFRLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBRSxFQUFHLENBQUM7WUFFL0QsTUFBTSxHQUFHLEdBQUksUUFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2xELE1BQU0sR0FBRyxHQUFHLHVCQUF1QixJQUFJLENBQUMsUUFBUSxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sSUFBSSwwQkFBMEIsQ0FDbkMsR0FBRyxFQUNILElBQUksQ0FBQyxLQUFLLENBQ1YsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBa0IsQ0FBQztRQUU1QyxNQUFNLEtBQUssR0FBRyxJQUFBLGlCQUFTLEVBQUMsSUFBSSxDQUFDLGlCQUEyQixDQUFVLENBQUM7UUFHbkUsSUFBSyxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxpQkFBaUIsRUFBRyxDQUFDO1lBQ2pELElBQUksQ0FBQyxjQUFjLENBQUUsSUFBSSxDQUFFLENBQUM7UUFDN0IsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBRS9CLENBQUMsQ0FBRTtTQUNGLEtBQUssQ0FBRSxDQUFFLEtBQVksRUFBRyxFQUFFO1FBQzFCLElBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUcsQ0FBQztZQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUUsS0FBSyxDQUFFLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDUCxNQUFNLEtBQUssQ0FBQztRQUNiLENBQUM7SUFDRixDQUFDLENBQUUsQ0FBQztJQUVMLElBQUssSUFBSSxFQUFHLENBQUM7UUFDWixJQUFJLENBQUMsT0FBTyxDQUFFLElBQUksQ0FBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBRSxDQUFFLE9BQWUsRUFBRSxJQUFZLEVBQUcsRUFBRTtRQUV6RCxJQUFJLENBQUMsaUJBQTZDLENBQUUsSUFBSSxDQUFFLEdBQUcsQ0FBRSxHQUFHLElBQWUsRUFBRyxFQUFFO1lBQ3RGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFFLE9BQWtCLEVBQUU7Z0JBQzlELElBQUk7Z0JBQ0osT0FBTztnQkFDUCxJQUFJO2FBQ0osQ0FBRSxDQUFDO1lBQ0osT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDL0IsQ0FBQyxDQUFDO0lBQ0gsQ0FBQyxDQUFFLENBQUM7SUFFSixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztBQUUvQixDQUFDLENBQUM7QUFFRixNQUFNLHdCQUF3QixHQUFHO0lBQ2hDLHFCQUFxQjtJQUNyQixjQUFjO0lBQ2QsV0FBVztJQUNYLE9BQU87SUFDUCxjQUFjO0lBQ2QsZUFBZTtJQUNmLHNCQUFzQixFQUF0QiwrQ0FBc0I7Q0FDdEIsQ0FBQztBQUdGLE1BQU0sUUFBUSxHQUFHLFVBQ2hCLElBQTRCLEVBQzVCLElBQWEsRUFDYixnQkFBd0IsRUFDeEIsSUFBZSxFQUNmLE9BQWdCO0lBRWhCLE1BQU0sRUFDTCxnQkFBZ0IsRUFDaEIsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxJQUFJLENBQUM7SUFFVCxNQUFNLEVBQ0wsdUJBQXVCLEVBQ3ZCLFdBQVcsRUFDWCxHQUFHLE1BQU0sQ0FBQztJQUVYLE1BQU0sRUFBRSxHQUFHLHVCQUF3QixFQUFFLENBQUM7SUFDdEMsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUUzQyxNQUFNLENBQUMsTUFBTSxDQUNaLElBQUksRUFDSjtRQUNDLElBQUk7UUFDSixRQUFRO1FBQ1IsZ0JBQWdCO1FBQ2hCLElBQUksSUFBSTtZQUNQLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUNELHVCQUF1QixFQUFHLEVBQUU7UUFDNUIsZUFBZTtRQUNmLE1BQU07UUFDTixLQUFLO0tBQ0wsQ0FDRCxDQUFDO0lBRUYsSUFBSyxXQUFXLElBQUksT0FBTyxFQUFHLENBQUM7UUFDOUIsTUFBTSxhQUFhLEdBQWEsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUUsZ0JBQWdCLENBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFHLE1BQU0sS0FBSyxHQUFHLHVCQUF1QixRQUFRLGVBQWUsQ0FBQztRQUM3RCxJQUFLLFdBQVcsRUFBRyxDQUFDO1lBQ25CLGlCQUFRLENBQUMsSUFBSSxDQUNaLElBQUksRUFDSixLQUFLLEVBQ0wsYUFBYSxDQUNiLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBNEIsQ0FBQztRQUMzQyxDQUFDO0lBQ0YsQ0FBQztBQUNGLENBQUMsQ0FBQztBQUVGLE1BQU0sbUJBQW1CLEdBQUcsVUFBVyxJQUE0QixFQUFFLElBQWU7SUFDbkYsTUFBTSxFQUNMLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFDbkQsR0FBRyxJQUFJLENBQUM7SUFDVCxJQUFLLFdBQVcsSUFBSSxnQkFBZ0IsWUFBWSxLQUFLLEVBQUcsQ0FBQztRQUN4RCxJQUFJLENBQUMsZUFBZSxHQUFHLHdCQUF3QixDQUFFLFFBQVEsQ0FBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFBLDZDQUF1QixFQUFFLElBQUksQ0FBRSxDQUFDO1FBQzNELE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUUsR0FBRyxJQUFJLENBQUUsQ0FBQztRQUN6RSxNQUFNLHdCQUF3QixDQUFDO0lBQ2hDLENBQUM7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNLFFBQVEsR0FBRyxVQUFXLElBQTRCLEVBQUUsSUFBZTtJQUN4RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBQSw2Q0FBdUIsRUFBRSxJQUFJLENBQUUsQ0FBQztJQUUzRCxJQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFHLENBQUM7UUFDL0IsSUFBSSxDQUFDO1lBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUUsR0FBRyxJQUFJLENBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDO1FBQ2pDLENBQUM7UUFBQyxPQUFRLEtBQUssRUFBRyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxzQkFBc0IsQ0FBRSxLQUF1QixDQUFFLENBQUM7UUFDeEQsQ0FBQztJQUNGLENBQUM7U0FBTSxDQUFDO1FBQ1AsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUUsR0FBRyxJQUFJLENBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDO0lBQ2pDLENBQUM7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLFVBQVcsSUFBNEIsRUFBRSxJQUFhO0lBQzlFLElBQUssSUFBSSxDQUFDLGlCQUFpQixZQUFZLE9BQU8sRUFBRyxDQUFDO1FBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUUsSUFBSSxDQUFFLENBQUM7UUFDeEMsR0FBRyxDQUNGLE1BQU0sRUFDTixxQkFBcUIsRUFDckI7WUFDQyxHQUFHO2dCQUNGLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN0QixDQUFDO1NBQ0QsQ0FDRCxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRVcsUUFBQSxlQUFlLEdBQUcsVUFFOUIsSUFBYSxFQUNiLGdCQUF3QixFQUN4QixJQUFlLEVBQ2YsT0FBZ0I7SUFHaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBR2xCLFFBQVEsQ0FDUCxJQUFJLEVBQ0osSUFBSSxFQUNKLGdCQUFnQixFQUNoQixJQUFJLEVBQ0osT0FBTyxDQUNQLENBQUM7SUFHRixtQkFBbUIsQ0FDbEIsSUFBSSxFQUNKLElBQUksQ0FDSixDQUFDO0lBR0YsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBR3RCLFFBQVEsQ0FDUCxJQUFJLEVBQ0osSUFBSSxDQUNKLENBQUM7SUFHRixNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FDbkMsSUFBSSxFQUNKLElBQUksQ0FDSixDQUFDO0lBQ0YsSUFBSyxXQUFXLEtBQUssU0FBUyxFQUFHLENBQUM7UUFDakMsT0FBTyxXQUFXLENBQUM7SUFDcEIsQ0FBQztJQUdELElBQUksQ0FBQyxjQUFjLENBQUUsSUFBSSxDQUFFLENBQUM7SUFHNUIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7QUFFL0IsQ0FBOEQsQ0FBQztBQUUvRCxNQUFNLENBQUMsTUFBTSxDQUNaLHVCQUFlLENBQUMsU0FBUyxFQUN6Qix3QkFBd0IsQ0FDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiAgXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogSW5zdGFuY2VDcmVhdG9yIG9yY2hlc3RyYXRlcyB0aGUgZnVsbCBpbnN0YW5jZSBjb25zdHJ1Y3Rpb24gbGlmZWN5Y2xlLlxuICpcbiAqIFBpcGVsaW5lIHN0YWdlcyAoc2VlIGFsc28gY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci50cyBhbmQgSW5zdGFuY2VNb2RpZmljYXRvci50cyk6XG4gKiAgIDEuIFNldHVwICAgICAgLSBleHRyYWN0IHR5cGUsIGNvbmZpZywgcHJlcGFyZSBNb2RpZmljYXRpb25Db25zdHJ1Y3RvclxuICogICAyLiBTdGFjayAgICAgIC0gY29sbGVjdCBjcmVhdGlvbiBzdGFjayBpZiBzdWJtaXRTdGFjayBvciBjaGFpbmVkXG4gKiAgIDMuIGJsb2NrRXJyb3JzLSBpZiBwYXJlbnQgaXMgRXJyb3IsIG9wdGlvbmFsbHkgYmxvY2sgZnVydGhlciBjb25zdHJ1Y3Rpb25cbiAqICAgNC4gUHJlLWhvb2tzICAtIGludm9rZSBwcmVDcmVhdGlvbiBob29rcyBvbiBjb2xsZWN0aW9uIGFuZCB0eXBlXG4gKiAgIDUuIEJ1aWxkICAgICAgLSBtYWtlSW5zdGFuY2VNb2RpZmljYXRvcigpIHdpcmVzIHByb3RvdHlwZSBjaGFpblxuICogICA2LiBDb25zdHJ1Y3QgIC0gbmV3IEluc3RhbmNlTW9kaWZpY2F0b3IoLi4uYXJncykgcnVucyB1c2VyIGNvbnN0cnVjdG9yXG4gKiAgIDcuIEFzeW5jICAgICAgLSBpZiByZXN1bHQgaXMgUHJvbWlzZSwgYXR0YWNoIGF3YWl0ZXIgYW5kIHN1YnR5cGUgZmFjdG9yaWVzXG4gKiAgIDguIFBvc3QtcHJvYyAgLSB2YWxpZGF0ZSBpbmhlcml0YW5jZSwgc2V0IF9fc2VsZl9fLCBpbnZva2UgcG9zdENyZWF0aW9uIGhvb2tzXG4gKi9cblxuXG5pbXBvcnQge1xuXHRfSW50ZXJuYWxfVENfLCBJbnN0YW5jZUNyZWF0b3JDb250ZXh0LCBUaGVuU3BlYywgVHlwZURlZixcblx0TW5lbW9uaWNhRXJyb3IsIE1uZW1vbmljYUNvbnN0cnVjdG9yXG59IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbmNvbnN0IHtcblx0b2RwLFxuXHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWVcbn0gPSBjb25zdGFudHM7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHsgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4sIH0gPSBFcnJvcnNUeXBlcztcblxuaW1wb3J0IFR5cGVzVXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuY29uc3Qge1xuXHRnZXRFeGlzdGVudEFzeW5jU3RhY2ssXG5cdG1ha2VFcnJvck1vZGlmaWNhdG9yVHlwZSxcbn0gPSBUeXBlc1V0aWxzO1xuXG5pbXBvcnQgeyBnZXRTdGFjayB9IGZyb20gJy4uL2Vycm9ycyc7XG5pbXBvcnQgeyB0aHJvd01vZGlmaWNhdGlvbkVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3Rocm93TW9kaWZpY2F0aW9uRXJyb3InO1xuXG5pbXBvcnQge1xuXHRfZ2V0UHJvcHMsIF9zZXRTZWxmLCBQcm9wcyBcbn0gZnJvbSAnLi9Qcm9wcyc7XG5cbmltcG9ydCB7IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yIH0gZnJvbSAnLi9JbnN0YW5jZU1vZGlmaWNhdG9yJztcbmltcG9ydCB7IHBhcmVudCB9IGZyb20gJy4uLy4uL3V0aWxzL3BhcmVudCc7XG5cbi8vIGltcG9ydCB7IE1uZW1vc3luZSB9IGZyb20gJy4vTW5lbW9zeW5lJztcbiAgXG5jb25zdCBpbnZva2VQcmVIb29rcyA9IGZ1bmN0aW9uICggdGhpczogSW5zdGFuY2VDcmVhdG9yQ29udGV4dCApIHtcblxuXHRjb25zdCB7XG5cdFx0dHlwZSxcblx0XHRleGlzdGVudEluc3RhbmNlLFxuXHRcdGFyZ3MsXG5cdFx0SW5zdGFuY2VNb2RpZmljYXRvclxuXHR9ID0gdGhpcztcblxuXHRjb25zdCB7IGNvbGxlY3Rpb24sIH0gPSB0eXBlO1xuXG5cdGNvbnN0IGhvb2tEYXRhID0ge1xuXHRcdHR5cGUsXG5cdFx0VHlwZU5hbWUgOiB0eXBlLlR5cGVOYW1lLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRJbnN0YW5jZU1vZGlmaWNhdG9yXG5cdH07XG5cblx0Y29sbGVjdGlvbi5pbnZva2VIb29rKFxuXHRcdCdwcmVDcmVhdGlvbicsXG5cdFx0aG9va0RhdGEgXG5cdCk7XG5cblx0dHlwZS5pbnZva2VIb29rKFxuXHRcdCdwcmVDcmVhdGlvbicsXG5cdFx0aG9va0RhdGEgXG5cdCk7XG5cbn07XG5cblxuICBcbmNvbnN0IGludm9rZVBvc3RIb29rcyA9IGZ1bmN0aW9uICggdGhpczogSW5zdGFuY2VDcmVhdG9yQ29udGV4dCApIHtcblxuXHQgXG5cdGNvbnN0IGNyZWF0b3IgPSB0aGlzO1xuXHRjb25zdCB7IGluaGVyaXRlZEluc3RhbmNlLCB9ID0gY3JlYXRvcjtcblxuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhpbmhlcml0ZWRJbnN0YW5jZSkgYXMgUHJvcHM7XG5cblx0Y29uc3Qge1xuXHRcdF9fdHlwZV9fOiB0eXBlLFxuXHRcdF9fcGFyZW50X186IGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0X19hcmdzX186IGFyZ3MsXG5cdH0gPSBwcm9wcztcblxuXHRjb25zdCB7IGNvbGxlY3Rpb24sIH0gPSB0eXBlO1xuXG5cdGNvbnN0IGhvb2tUeXBlID0gaW5oZXJpdGVkSW5zdGFuY2UgaW5zdGFuY2VvZiBFcnJvciA/XG5cdFx0J2NyZWF0aW9uRXJyb3InIDogJ3Bvc3RDcmVhdGlvbic7XG5cblx0Y29uc3QgaG9va0RhdGEgPSB7XG5cdFx0dHlwZSxcblx0XHRUeXBlTmFtZSA6IHR5cGUuVHlwZU5hbWUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRpbmhlcml0ZWRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdGNyZWF0b3Jcblx0fTtcblxuXHRjb25zdCByZXN1bHQgPSB7XG5cblx0XHR0eXBlIDogdHlwZS5pbnZva2VIb29rKFxuXHRcdFx0aG9va1R5cGUsXG5cdFx0XHRob29rRGF0YSBcblx0XHQpLFxuXG5cdFx0Y29sbGVjdGlvbiA6IGNvbGxlY3Rpb24uaW52b2tlSG9vayhcblx0XHRcdGhvb2tUeXBlLFxuXHRcdFx0aG9va0RhdGEgXG5cdFx0KSxcblxuXHR9O1xuXHRyZXR1cm4gcmVzdWx0O1xuXG59O1xuXG5cbiAgXG5jb25zdCBwb3N0UHJvY2Vzc2luZyA9IGZ1bmN0aW9uICggdGhpczogSW5zdGFuY2VDcmVhdG9yQ29udGV4dCwgY29udGludWF0aW9uT2Y/OiBUeXBlRGVmICkge1xuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXHRjb25zdCB7XG5cdFx0c3RhY2ssXG5cdFx0dHlwZToge1xuXHRcdFx0aXNTdWJUeXBlLFxuXHRcdFx0Y29uZmlnOiB7XG5cdFx0XHRcdHN0cmljdENoYWluLFxuXHRcdFx0XHRibG9ja0Vycm9yc1xuXHRcdFx0fVxuXHRcdH1cblx0fSA9IHNlbGY7XG5cblx0aWYgKCAhc2VsZi5pbmhlcml0ZWRJbnN0YW5jZS5jb25zdHJ1Y3RvciApIHtcblx0XHRjb25zdCBtc2cgPSAnc2hvdWxkIGluaGVyaXQgZnJvbSBtbmVtb25pY2EgaW5zdGFuY2UnO1xuXHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKFxuXHRcdFx0bXNnLFxuXHRcdFx0c3RhY2sgXG5cdFx0KSApO1xuXHR9XG5cblx0Y29uc3QgaW5oZXJpdGVkQ29uc3RydWN0b3IgPSBzZWxmLmluaGVyaXRlZEluc3RhbmNlLmNvbnN0cnVjdG9yIGFzIE1uZW1vbmljYUNvbnN0cnVjdG9yO1xuXHRpZiAoICFpbmhlcml0ZWRDb25zdHJ1Y3RvclsgU3ltYm9sQ29uc3RydWN0b3JOYW1lIF0gKSB7XG5cdFx0Y29uc3QgbXNnID0gJ3Nob3VsZCBpbmhlcml0IGZyb20gbW5lbW9uaWNhIGluc3RhbmNlJztcblx0XHRzZWxmLnRocm93TW9kaWZpY2F0aW9uRXJyb3IoIG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTihcblx0XHRcdG1zZyxcblx0XHRcdHN0YWNrIFxuXHRcdCkgKTtcblx0fVxuXG5cdGlmICggY29udGludWF0aW9uT2YgJiYgISggc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIGNvbnRpbnVhdGlvbk9mICkgKSB7XG5cdFx0Ly8gZGVidWdnZXI7XG5cdFx0Y29uc3QgaWNuID0gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZS5jb25zdHJ1Y3Rvci5uYW1lO1xuXHRcdGNvbnN0IG1zZyA9IGBzaG91bGQgaW5oZXJpdCBmcm9tICR7Y29udGludWF0aW9uT2YuVHlwZU5hbWV9IGJ1dCBnb3QgJHtpY259YDtcblx0XHRzZWxmLnRocm93TW9kaWZpY2F0aW9uRXJyb3IoIG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTihcblx0XHRcdG1zZyxcblx0XHRcdHN0YWNrIFxuXHRcdCkgKTtcblx0XHQvLyB0aHJvdyBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4obXNnLCBzZWxmLnN0YWNrKTtcblx0fVxuXG5cdGlmIChpc1N1YlR5cGUgJiYgc3RyaWN0Q2hhaW4pIHtcblx0XHRcblx0XHRpZiAoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIEVycm9yICYmICFibG9ja0Vycm9ycykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHByZXYgPSBwYXJlbnQoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSkgYXMgb2JqZWN0IHwgbnVsbDtcblx0XHRpZiAoIXByZXYgfHwgKHByZXYgJiYgIXByZXYuY29uc3RydWN0b3IpKSB7XG5cdFx0XHRjb25zdCBtc2cgPSAnc2hvdWxkIGluaGVyaXQgZnJvbSBzb21lIGluc3RhbmNlJztcblx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKFxuXHRcdFx0XHRtc2csXG5cdFx0XHRcdHN0YWNrIFxuXHRcdFx0KSApO1xuXHRcdH1cblx0XHRjb25zdCBwYXJlbnROYW1lID0gcHJldiEuY29uc3RydWN0b3IubmFtZTtcblx0XHRjb25zdCBwYXJlbnRUeXBlTmFtZSA9IHNlbGYudHlwZS5wYXJlbnRUeXBlIS5UeXBlTmFtZTtcblx0XHRpZiAocGFyZW50TmFtZSAhPT0gcGFyZW50VHlwZU5hbWUpIHtcblx0XHRcdGNvbnN0IG1zZyA9IGBzaG91bGQgaW5oZXJpdCBmcm9tICR7cGFyZW50VHlwZU5hbWV9IGJ1dCBtYWRlIG9uICR7cGFyZW50TmFtZX1gO1xuXHRcdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oXG5cdFx0XHRcdG1zZyxcblx0XHRcdFx0c3RhY2sgXG5cdFx0XHQpICk7XG5cdFx0fVxuXG5cdH1cblxuXHRfc2V0U2VsZihzZWxmLmluaGVyaXRlZEluc3RhbmNlKTtcblxuXHRzZWxmLmludm9rZVBvc3RIb29rcygpO1xuXG59O1xuXG5jb25zdCBhZGRUaGVuID0gZnVuY3Rpb24gKCB0aGlzOiBJbnN0YW5jZUNyZWF0b3JDb250ZXh0LCB0aGVuOiBUaGVuU3BlYyApIHtcblxuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSAoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBhcyBQcm9taXNlPG9iamVjdD4pXG5cdFx0LnRoZW4oICgpID0+IHtcblx0XHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPVxuXHRcdFx0bmV3IEluc3RhbmNlQ3JlYXRvcihcblx0XHRcdFx0dGhlbi5zdWJ0eXBlIGFzIFR5cGVEZWYsXG5cdFx0XHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgYXMgb2JqZWN0LFxuXHRcdFx0XHR0aGVuLmFyZ3MsXG5cdFx0XHRcdC8vIHdhcyBjaGFpbmVkIDpcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQvLyBzZWxmLmV4aXN0ZW50SW5zdGFuY2Vcblx0XHRcdCkgYXMgdW5rbm93biBhcyBQcm9taXNlPG9iamVjdD47XG5cdFx0XHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblx0XHR9ICk7XG5cbn07XG5cbmNvbnN0IG1ha2VBd2FpdGVyID0gZnVuY3Rpb24gKCB0aGlzOiBJbnN0YW5jZUNyZWF0b3JDb250ZXh0LCB0eXBlOiBUeXBlRGVmLCB0aGVuPzogVGhlblNwZWMgKSB7XG5cblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gKHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgYXMgUHJvbWlzZTxvYmplY3Q+KVxuXHRcdC50aGVuKCAoIGluc3RhbmNlOiB1bmtub3duICkgPT4ge1xuXG5cdFx0XHRpZiAoIHR5cGVvZiBpbnN0YW5jZSAhPT0gJ29iamVjdCcgKSB7XG5cdFx0XHRcdGlmICggc2VsZi5jb25maWcuYXdhaXRSZXR1cm4gKSB7XG5cdFx0XHRcdFx0Y29uc3QgbXNnID0gYHNob3VsZCBpbmhlcml0IGZyb20gJHt0eXBlLlR5cGVOYW1lfTogYCArXG5cdFx0XHRcdFx0XHRgc2VlbXMgYXN5bmMgJHt0eXBlLlR5cGVOYW1lfSBoYXMgbm8gcmV0dXJuIHN0YXRlbWVudGA7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKFxuXHRcdFx0XHRcdFx0bXNnLFxuXHRcdFx0XHRcdFx0c2VsZi5zdGFjayBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBpbnN0YW5jZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGluc3RhbmNlID09PSBudWxsIHx8ICEoIGluc3RhbmNlIGluc3RhbmNlb2Ygc2VsZi50eXBlICkgKSB7XG5cdFx0XHRcdCBcblx0XHRcdFx0Y29uc3QgaWNuID0gKGluc3RhbmNlIGFzIG9iamVjdCkuY29uc3RydWN0b3IubmFtZTtcblx0XHRcdFx0Y29uc3QgbXNnID0gYHNob3VsZCBpbmhlcml0IGZyb20gJHt0eXBlLlR5cGVOYW1lfSBidXQgZ290ICR7aWNufWA7XG5cdFx0XHRcdHRocm93IG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTihcblx0XHRcdFx0XHRtc2csXG5cdFx0XHRcdFx0c2VsZi5zdGFjayBcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IGluc3RhbmNlIGFzIG9iamVjdDtcblxuXHRcdFx0Y29uc3QgcHJvcHMgPSBfZ2V0UHJvcHMoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBhcyBvYmplY3QpIGFzIFByb3BzO1xuXG5cdFx0XHQgXG5cdFx0XHRpZiAoIHByb3BzLl9fc2VsZl9fICE9PSBzZWxmLmluaGVyaXRlZEluc3RhbmNlICkge1xuXHRcdFx0XHRzZWxmLnBvc3RQcm9jZXNzaW5nKCB0eXBlICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXG5cdFx0fSApXG5cdFx0LmNhdGNoKCAoIGVycm9yOiBFcnJvciApID0+IHtcblx0XHRcdGlmICggc2VsZi5jb25maWcuYmxvY2tFcnJvcnMgKSB7XG5cdFx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggZXJyb3IgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRocm93IGVycm9yO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRpZiAoIHRoZW4gKSB7XG5cdFx0c2VsZi5hZGRUaGVuKCB0aGVuICk7XG5cdH1cblxuXHR0eXBlLnN1YnR5cGVzLmZvckVhY2goICggc3VidHlwZTogb2JqZWN0LCBuYW1lOiBzdHJpbmcgKSA9PiB7XG5cdFx0IFxuXHRcdChzZWxmLmluaGVyaXRlZEluc3RhbmNlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVsgbmFtZSBdID0gKCAuLi5hcmdzOiB1bmtub3duW10gKSA9PiB7XG5cdFx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gc2VsZi5tYWtlQXdhaXRlciggc3VidHlwZSBhcyBUeXBlRGVmLCB7XG5cdFx0XHRcdG5hbWUsXG5cdFx0XHRcdHN1YnR5cGUsXG5cdFx0XHRcdGFyZ3MsXG5cdFx0XHR9ICk7XG5cdFx0XHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblx0XHR9O1xuXHR9ICk7XG5cblx0cmV0dXJuIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2U7XG5cbn07XG5cbmNvbnN0IEluc3RhbmNlQ3JlYXRvclByb3RvdHlwZSA9IHtcblx0Z2V0RXhpc3RlbnRBc3luY1N0YWNrLFxuXHRwb3N0UHJvY2Vzc2luZyxcblx0bWFrZUF3YWl0ZXIsXG5cdGFkZFRoZW4sXG5cdGludm9rZVByZUhvb2tzLFxuXHRpbnZva2VQb3N0SG9va3MsXG5cdHRocm93TW9kaWZpY2F0aW9uRXJyb3Jcbn07XG5cbiAgXG5jb25zdCBydW5TZXR1cCA9IGZ1bmN0aW9uIChcblx0c2VsZjogSW5zdGFuY2VDcmVhdG9yQ29udGV4dCxcblx0dHlwZTogVHlwZURlZixcblx0ZXhpc3RlbnRJbnN0YW5jZTogb2JqZWN0LFxuXHRhcmdzOiB1bmtub3duW10sXG5cdGNoYWluZWQ6IGJvb2xlYW5cbikge1xuXHRjb25zdCB7XG5cdFx0Y29uc3RydWN0SGFuZGxlcixcblx0XHRwcm90byxcblx0XHRjb25maWcsXG5cdFx0VHlwZU5hbWVcblx0fSA9IHR5cGU7XG5cblx0Y29uc3Qge1xuXHRcdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLFxuXHRcdHN1Ym1pdFN0YWNrXG5cdH0gPSBjb25maWc7XG5cblx0Y29uc3QgbWMgPSBNb2RpZmljYXRpb25Db25zdHJ1Y3RvciEoKTtcblx0Y29uc3QgTW9kaWZpY2F0b3JUeXBlID0gY29uc3RydWN0SGFuZGxlcigpO1xuXG5cdE9iamVjdC5hc3NpZ24oXG5cdFx0c2VsZixcblx0XHR7XG5cdFx0XHR0eXBlLFxuXHRcdFx0VHlwZU5hbWUsXG5cdFx0XHRleGlzdGVudEluc3RhbmNlLFxuXHRcdFx0Z2V0IGFyZ3MgKCkge1xuXHRcdFx0XHRyZXR1cm4gYXJncztcblx0XHRcdH0sXG5cdFx0XHRNb2RpZmljYXRpb25Db25zdHJ1Y3RvciA6IG1jLFxuXHRcdFx0TW9kaWZpY2F0b3JUeXBlLFxuXHRcdFx0Y29uZmlnLFxuXHRcdFx0cHJvdG9cblx0XHR9IFxuXHQpO1xuXG5cdGlmICggc3VibWl0U3RhY2sgfHwgY2hhaW5lZCApIHtcblx0XHRjb25zdCBzdGFja0FkZGl0aW9uOiBzdHJpbmdbXSA9IGNoYWluZWQgPyBzZWxmLmdldEV4aXN0ZW50QXN5bmNTdGFjayggZXhpc3RlbnRJbnN0YW5jZSApIGFzIHN0cmluZ1tdIDogW107XG5cdFx0Y29uc3QgdGl0bGUgPSBgXFxuPC0tIGNyZWF0aW9uIG9mIFsgJHtUeXBlTmFtZX0gXSB0cmFjZWQgLS0+YDtcblx0XHRpZiAoIHN1Ym1pdFN0YWNrICkge1xuXHRcdFx0Z2V0U3RhY2suY2FsbChcblx0XHRcdFx0c2VsZixcblx0XHRcdFx0dGl0bGUsXG5cdFx0XHRcdHN0YWNrQWRkaXRpb24gXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZWxmLnN0YWNrID0gdGl0bGUgYXMgdW5rbm93biBhcyBzdHJpbmdbXTtcblx0XHR9XG5cdH1cbn07XG5cbmNvbnN0IHJ1bkJsb2NrRXJyb3JzQ2hlY2sgPSBmdW5jdGlvbiAoIHNlbGY6IEluc3RhbmNlQ3JlYXRvckNvbnRleHQsIGFyZ3M6IHVua25vd25bXSApIHtcblx0Y29uc3Qge1xuXHRcdGNvbmZpZzogeyBibG9ja0Vycm9ycyB9LCBUeXBlTmFtZSwgZXhpc3RlbnRJbnN0YW5jZSBcblx0fSA9IHNlbGY7XG5cdGlmICggYmxvY2tFcnJvcnMgJiYgZXhpc3RlbnRJbnN0YW5jZSBpbnN0YW5jZW9mIEVycm9yICkge1xuXHRcdHNlbGYuTW9kaWZpY2F0b3JUeXBlID0gbWFrZUVycm9yTW9kaWZpY2F0b3JUeXBlKCBUeXBlTmFtZSApO1xuXHRcdHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvciA9IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yKCBzZWxmICk7XG5cdFx0Y29uc3QgYmxvY2tFcnJvcnNFcnJvckluc3RhbmNlID0gbmV3IHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvciggLi4uYXJncyApO1xuXHRcdHRocm93IGJsb2NrRXJyb3JzRXJyb3JJbnN0YW5jZTtcblx0fVxufTtcblxuY29uc3QgcnVuQnVpbGQgPSBmdW5jdGlvbiAoIHNlbGY6IEluc3RhbmNlQ3JlYXRvckNvbnRleHQsIGFyZ3M6IHVua25vd25bXSApIHtcblx0c2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yID0gbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IoIHNlbGYgKTtcblxuXHRpZiAoIHNlbGYuY29uZmlnLmJsb2NrRXJyb3JzICkge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBhbnN3ZXIgPSBuZXcgc2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yKCAuLi5hcmdzICk7XG5cdFx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gYW5zd2VyO1xuXHRcdH0gY2F0Y2ggKCBlcnJvciApIHtcblx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggZXJyb3IgYXMgTW5lbW9uaWNhRXJyb3IgKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgYW5zd2VyID0gbmV3IHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvciggLi4uYXJncyApO1xuXHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBhbnN3ZXI7XG5cdH1cbn07XG5cbmNvbnN0IHJ1bkFzeW5jSGFuZGxpbmcgPSBmdW5jdGlvbiAoIHNlbGY6IEluc3RhbmNlQ3JlYXRvckNvbnRleHQsIHR5cGU6IFR5cGVEZWYgKSB7XG5cdGlmICggc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIFByb21pc2UgKSB7XG5cdFx0Y29uc3Qgd2FpdGVyID0gc2VsZi5tYWtlQXdhaXRlciggdHlwZSApO1xuXHRcdG9kcChcblx0XHRcdHdhaXRlcixcblx0XHRcdFN5bWJvbENvbnN0cnVjdG9yTmFtZSxcblx0XHRcdHtcblx0XHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHlwZS5UeXBlTmFtZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBcblx0XHQpO1xuXHRcdHJldHVybiB3YWl0ZXI7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBJbnN0YW5jZUNyZWF0b3IgPSBmdW5jdGlvbiAoXG5cdHRoaXM6IEluc3RhbmNlQ3JlYXRvckNvbnRleHQsXG5cdHR5cGU6IFR5cGVEZWYsXG5cdGV4aXN0ZW50SW5zdGFuY2U6IG9iamVjdCxcblx0YXJnczogdW5rbm93bltdLFxuXHRjaGFpbmVkOiBib29sZWFuXG4pIHtcblxuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHQvLyBQaGFzZSAxOiBTZXR1cCDigJQgYmluZCB0eXBlLCBjb25maWcsIGFyZ3MsIHN0YWNrIHRvIGNvbnRleHRcblx0cnVuU2V0dXAoXG5cdFx0c2VsZixcblx0XHR0eXBlLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRjaGFpbmVkIFxuXHQpO1xuXG5cdC8vIFBoYXNlIDI6IENpcmN1aXQgYnJlYWtlciDigJQgaWYgcGFyZW50IGlzIEVycm9yIGFuZCBibG9ja0Vycm9ycywgYWJvcnQgZWFybHlcblx0cnVuQmxvY2tFcnJvcnNDaGVjayhcblx0XHRzZWxmLFxuXHRcdGFyZ3MgXG5cdCk7XG5cblx0Ly8gUGhhc2UgMzogUHJlLWhvb2tzIOKAlCBpbnZva2UgcHJlQ3JlYXRpb24gaG9va3Mgb24gY29sbGVjdGlvbiBhbmQgdHlwZVxuXHRzZWxmLmludm9rZVByZUhvb2tzKCk7XG5cblx0Ly8gUGhhc2UgNDogQnVpbGQg4oCUIHdpcmUgcHJvdG90eXBlIGNoYWluIGFuZCBydW4gdXNlciBjb25zdHJ1Y3RvclxuXHRydW5CdWlsZChcblx0XHRzZWxmLFxuXHRcdGFyZ3MgXG5cdCk7XG5cblx0Ly8gUGhhc2UgNTogQXN5bmMgaGFuZGxpbmcg4oCUIGlmIFByb21pc2UsIGRlZmVyIHZhbGlkYXRpb24vcG9zdEhvb2tzXG5cdGNvbnN0IGFzeW5jUmVzdWx0ID0gcnVuQXN5bmNIYW5kbGluZyhcblx0XHRzZWxmLFxuXHRcdHR5cGUgXG5cdCk7XG5cdGlmICggYXN5bmNSZXN1bHQgIT09IHVuZGVmaW5lZCApIHtcblx0XHRyZXR1cm4gYXN5bmNSZXN1bHQ7XG5cdH1cblxuXHQvLyBQaGFzZSA2OiBWYWxpZGF0aW9uICsgUG9zdC1ob29rcyDigJQgdmFsaWRhdGUgaW5oZXJpdGFuY2UsIHNldCBfX3NlbGZfXywgaW52b2tlIGhvb2tzXG5cdHNlbGYucG9zdFByb2Nlc3NpbmcoIHR5cGUgKTtcblxuXHQvLyBQaGFzZSA3OiBSZXR1cm5cblx0cmV0dXJuIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2U7XG5cbn0gYXMgdW5rbm93biBhcyBfSW50ZXJuYWxfVENfPHR5cGVvZiBJbnN0YW5jZUNyZWF0b3JQcm90b3R5cGU+O1xuXG5PYmplY3QuYXNzaWduKFxuXHRJbnN0YW5jZUNyZWF0b3IucHJvdG90eXBlLFxuXHRJbnN0YW5jZUNyZWF0b3JQcm90b3R5cGUgXG4pO1xuIl19
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { _Internal_TC_ } from '../../types';
|
|
1
|
+
import { _Internal_TC_, TypeDef } from '../../types';
|
|
2
2
|
export declare const Mnemosyne: _Internal_TC_<object>;
|
|
3
3
|
declare const _default: {
|
|
4
|
-
readonly createMnemosyne: (Uranus: unknown
|
|
5
|
-
readonly prepareSubtypeForConstruction: (subtypeName: string, inheritedInstance: unknown) =>
|
|
4
|
+
readonly createMnemosyne: (Uranus: unknown) => object;
|
|
5
|
+
readonly prepareSubtypeForConstruction: (subtypeName: string, inheritedInstance: unknown) => ((this: unknown, ..._args: unknown[]) => {
|
|
6
6
|
getExistentAsyncStack: (existentInstance: import("../utils").asyncStack) => unknown;
|
|
7
|
-
postProcessing: (this: import("../../types").InstanceCreatorContext, continuationOf?:
|
|
8
|
-
makeAwaiter: (this: import("../../types").InstanceCreatorContext, type:
|
|
7
|
+
postProcessing: (this: import("../../types").InstanceCreatorContext, continuationOf?: TypeDef) => void;
|
|
8
|
+
makeAwaiter: (this: import("../../types").InstanceCreatorContext, type: TypeDef, then?: import("../../types").ThenSpec) => object;
|
|
9
9
|
addThen: (this: import("../../types").InstanceCreatorContext, then: import("../../types").ThenSpec) => void;
|
|
10
10
|
invokePreHooks: (this: import("../../types").InstanceCreatorContext) => void;
|
|
11
11
|
invokePostHooks: (this: import("../../types").InstanceCreatorContext) => {
|
|
@@ -13,7 +13,7 @@ declare const _default: {
|
|
|
13
13
|
collection: Set<unknown>;
|
|
14
14
|
};
|
|
15
15
|
throwModificationError: (this: import("../../types").InstanceCreatorContext, error: import("../../types").MnemonicaError) => void;
|
|
16
|
-
}
|
|
16
|
+
}) | undefined;
|
|
17
17
|
readonly getDefaultPrototype: () => any;
|
|
18
18
|
};
|
|
19
19
|
export default _default;
|
|
@@ -1,89 +1,28 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.Mnemosyne = void 0;
|
|
4
7
|
const constants_1 = require("../../constants");
|
|
5
8
|
const { odp, SymbolConstructorName, MNEMONICA, } = constants_1.constants;
|
|
6
|
-
const utils_1 = require("../utils");
|
|
9
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
7
10
|
const { getTypeChecker, findSubTypeFromParent, reflectPrimitiveWrappers } = utils_1.default;
|
|
8
|
-
const extract_1 = require("../../utils/extract");
|
|
9
|
-
const parent_1 = require("../../utils/parent");
|
|
10
|
-
const pick_1 = require("../../utils/pick");
|
|
11
|
-
const exceptionConstructor_1 = require("../errors/exceptionConstructor");
|
|
12
11
|
const InstanceCreator_1 = require("./InstanceCreator");
|
|
13
12
|
const Props_1 = require("./Props");
|
|
14
13
|
const getDefaultPrototype = () => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const MnemonicaProtoProps = {
|
|
18
|
-
extract() {
|
|
19
|
-
return function () {
|
|
20
|
-
const result = (0, extract_1.extract)(this);
|
|
21
|
-
return result;
|
|
22
|
-
};
|
|
23
|
-
},
|
|
24
|
-
pick() {
|
|
25
|
-
return function (...args) {
|
|
26
|
-
const result = (0, pick_1.pick)(this, ...args);
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
|
-
},
|
|
30
|
-
parent() {
|
|
31
|
-
return function (constructorLookupPath) {
|
|
32
|
-
const result = (0, parent_1.parent)(this, constructorLookupPath);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
},
|
|
36
|
-
clone() {
|
|
37
|
-
return this.fork();
|
|
38
|
-
},
|
|
39
|
-
fork() {
|
|
40
|
-
const props = (0, Props_1._getProps)(this);
|
|
41
|
-
const { __type__: type, __collection__: collection, __parent__: existentInstance, __args__, __self__, } = props;
|
|
42
|
-
const { isSubType, TypeName } = type;
|
|
43
|
-
return function (...forkArgs) {
|
|
44
|
-
let forked;
|
|
45
|
-
const Constructor = isSubType ?
|
|
46
|
-
existentInstance :
|
|
47
|
-
collection;
|
|
48
|
-
const args = forkArgs.length ? forkArgs : __args__;
|
|
49
|
-
if (this === __self__) {
|
|
50
|
-
forked = new (Constructor[TypeName])(...args);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
forked = new InstanceCreator_1.InstanceCreator(type, reflectPrimitiveWrappers(this), args);
|
|
54
|
-
}
|
|
55
|
-
return forked;
|
|
56
|
-
};
|
|
57
|
-
},
|
|
58
|
-
[SymbolConstructorName]() {
|
|
59
|
-
return MNEMONICA;
|
|
60
|
-
},
|
|
61
|
-
exception() {
|
|
62
|
-
const self = this;
|
|
63
|
-
return function (error, ...args) {
|
|
64
|
-
const target = new.target;
|
|
65
|
-
return exceptionConstructor_1.default.call(self, target, error, ...args);
|
|
66
|
-
};
|
|
67
|
-
},
|
|
68
|
-
sibling() {
|
|
69
|
-
const siblings = (SiblingTypeName) => {
|
|
70
|
-
const props = (0, Props_1._getProps)(this);
|
|
71
|
-
const { __collection__: collection, } = props;
|
|
72
|
-
const sibling = collection[SiblingTypeName];
|
|
73
|
-
return sibling;
|
|
74
|
-
};
|
|
75
|
-
return new Proxy(siblings, {
|
|
76
|
-
get(_, prop) {
|
|
77
|
-
const result = siblings(prop);
|
|
78
|
-
return result;
|
|
79
|
-
},
|
|
80
|
-
apply(_, __, args) {
|
|
81
|
-
const result = siblings(args[0]);
|
|
82
|
-
return result;
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
}
|
|
14
|
+
const result = Object.create(null);
|
|
15
|
+
return result;
|
|
86
16
|
};
|
|
17
|
+
const mnemonicaInstanceMethodNames = [
|
|
18
|
+
'extract',
|
|
19
|
+
'pick',
|
|
20
|
+
'parent',
|
|
21
|
+
'clone',
|
|
22
|
+
'fork',
|
|
23
|
+
'exception',
|
|
24
|
+
'sibling',
|
|
25
|
+
];
|
|
87
26
|
const staticProps = [
|
|
88
27
|
'constructor',
|
|
89
28
|
'prototype',
|
|
@@ -97,7 +36,7 @@ const staticProps = [
|
|
|
97
36
|
'inspect',
|
|
98
37
|
'showDiff',
|
|
99
38
|
]
|
|
100
|
-
.concat(
|
|
39
|
+
.concat(mnemonicaInstanceMethodNames)
|
|
101
40
|
.concat(Object.getOwnPropertyNames(Object.prototype))
|
|
102
41
|
.concat(Object.getOwnPropertyNames(Function.prototype))
|
|
103
42
|
.reduce((obj, key) => {
|
|
@@ -105,27 +44,21 @@ const staticProps = [
|
|
|
105
44
|
return obj;
|
|
106
45
|
}, Object.create(null));
|
|
107
46
|
const makeSubTypeProxy = function (subtype, inheritedInstance) {
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
thisArg = inheritedInstance;
|
|
122
|
-
}
|
|
123
|
-
const existentInstance = reflectPrimitiveWrappers(thisArg);
|
|
124
|
-
const entity = new Target(subtype, existentInstance, _args);
|
|
125
|
-
return entity;
|
|
126
|
-
},
|
|
47
|
+
const SubTypeProxy = function (..._args) {
|
|
48
|
+
if (new.target) {
|
|
49
|
+
const instanceResult = new InstanceCreator_1.InstanceCreator(subtype, inheritedInstance, _args);
|
|
50
|
+
return instanceResult;
|
|
51
|
+
}
|
|
52
|
+
const thisArg = this === undefined ? inheritedInstance : this;
|
|
53
|
+
const existentInstance = reflectPrimitiveWrappers(thisArg);
|
|
54
|
+
const instance = new InstanceCreator_1.InstanceCreator(subtype, existentInstance, _args);
|
|
55
|
+
return instance;
|
|
56
|
+
};
|
|
57
|
+
const typeChecker = getTypeChecker(subtype.TypeName);
|
|
58
|
+
Object.defineProperty(SubTypeProxy, Symbol.hasInstance, {
|
|
59
|
+
value: typeChecker
|
|
127
60
|
});
|
|
128
|
-
return
|
|
61
|
+
return SubTypeProxy;
|
|
129
62
|
};
|
|
130
63
|
const prepareSubtypeForConstruction = function (subtypeName, inheritedInstance) {
|
|
131
64
|
const propInstance = Reflect.getPrototypeOf(inheritedInstance);
|
|
@@ -139,7 +72,8 @@ const prepareSubtypeForConstruction = function (subtypeName, inheritedInstance)
|
|
|
139
72
|
strictChain ?
|
|
140
73
|
undefined :
|
|
141
74
|
findSubTypeFromParent(inheritedInstance, subtypeName);
|
|
142
|
-
|
|
75
|
+
const result = subtype ? makeSubTypeProxy(subtype, inheritedInstance) : undefined;
|
|
76
|
+
return result;
|
|
143
77
|
};
|
|
144
78
|
const mnemosyneProxyHandlerGet = (target, prop, receiver) => {
|
|
145
79
|
const result = Reflect.get(target, prop, receiver);
|
|
@@ -153,9 +87,10 @@ const mnemosyneProxyHandlerGet = (target, prop, receiver) => {
|
|
|
153
87
|
return result;
|
|
154
88
|
}
|
|
155
89
|
const subtype = prepareSubtypeForConstruction(prop, receiver);
|
|
156
|
-
|
|
90
|
+
const subTypeResult = subtype || result;
|
|
91
|
+
return subTypeResult;
|
|
157
92
|
};
|
|
158
|
-
exports.Mnemosyne = function (mnemonica
|
|
93
|
+
exports.Mnemosyne = function (mnemonica) {
|
|
159
94
|
const instance = this;
|
|
160
95
|
const Mnemonica = function () {
|
|
161
96
|
odp(this, SymbolConstructorName, {
|
|
@@ -165,23 +100,11 @@ exports.Mnemosyne = function (mnemonica, exposeInstanceMethods) {
|
|
|
165
100
|
});
|
|
166
101
|
};
|
|
167
102
|
Object.setPrototypeOf(Mnemonica.prototype, mnemonica);
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
Object.getOwnPropertySymbols(MnemonicaProtoProps).forEach((symbol) => {
|
|
177
|
-
odp(Mnemonica.prototype, symbol, {
|
|
178
|
-
get() {
|
|
179
|
-
const symbolMethod = Reflect.get(MnemonicaProtoProps, symbol);
|
|
180
|
-
return symbolMethod.call(this);
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
}
|
|
103
|
+
odp(Mnemonica.prototype, SymbolConstructorName, {
|
|
104
|
+
get() {
|
|
105
|
+
return MNEMONICA;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
185
108
|
odp(Mnemonica.prototype, Symbol.hasInstance, {
|
|
186
109
|
get() {
|
|
187
110
|
const result = getTypeChecker(this.constructor.name);
|
|
@@ -191,9 +114,9 @@ exports.Mnemosyne = function (mnemonica, exposeInstanceMethods) {
|
|
|
191
114
|
const proto = new Mnemonica();
|
|
192
115
|
Reflect.setPrototypeOf(instance, proto);
|
|
193
116
|
};
|
|
194
|
-
const createMnemosyne = function (Uranus
|
|
117
|
+
const createMnemosyne = function (Uranus) {
|
|
195
118
|
const uranus = reflectPrimitiveWrappers(Uranus);
|
|
196
|
-
const mnemosyne = new exports.Mnemosyne(uranus
|
|
119
|
+
const mnemosyne = new exports.Mnemosyne(uranus);
|
|
197
120
|
const mnemosyneProxy = new Proxy(mnemosyne, {
|
|
198
121
|
get: mnemosyneProxyHandlerGet
|
|
199
122
|
});
|
|
@@ -210,4 +133,4 @@ exports.default = {
|
|
|
210
133
|
return getDefaultPrototype;
|
|
211
134
|
},
|
|
212
135
|
};
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW5lbW9zeW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9NbmVtb3N5bmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFPYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxxQkFBcUIsRUFFckIsU0FBUyxHQUVULEdBQUcscUJBQVMsQ0FBQztBQUVkLG9DQUFrQztBQUNsQyxNQUFNLEVBQ0wsY0FBYyxFQUNkLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsR0FBRyxlQUFVLENBQUM7QUFFZixpREFBOEM7QUFDOUMsK0NBQTRDO0FBQzVDLDJDQUF3QztBQUV4Qyx5RUFBa0U7QUFFbEUsdURBQW9EO0FBRXBELG1DQUVpQjtBQUVqQixNQUFNLG1CQUFtQixHQUFHLEdBQUcsRUFBRTtJQUNoQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBSUYsTUFBTSxtQkFBbUIsR0FBRztJQUUzQixPQUFPO1FBQ04sT0FBTztZQUNOLE1BQU0sTUFBTSxHQUFHLElBQUEsaUJBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJO1FBQ0gsT0FBTyxVQUF3QixHQUFHLElBQTJCO1lBQzVELE1BQU0sTUFBTSxHQUFHLElBQUEsV0FBSSxFQUNsQixJQUFJLEVBQ0osR0FBRyxJQUFJLENBQ1AsQ0FBQztZQUNGLE9BQU8sTUFBTSxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDTCxPQUFPLFVBQXdCLHFCQUE2QjtZQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGVBQU0sRUFDcEIsSUFBSSxFQUNKLHFCQUFxQixDQUNyQixDQUFDO1lBQ0YsT0FBTyxNQUFNLENBQUM7UUFDZixDQUFDLENBQUM7SUFDSCxDQUFD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QUNELElBQUksbUJBQW1CO1FBQ3RCLE9BQU8sbUJBQW1CLENBQUM7SUFDNUIsQ0FBQztDQU9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IF9JbnRlcm5hbF9UQ18gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmludGVyZmFjZSBTdWJ0eXBlRW50cnkge1xuXHRUeXBlTmFtZTogc3RyaW5nO1xufVxuaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmNvbnN0IHtcblx0b2RwLFxuXHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWUsXG5cblx0TU5FTU9OSUNBLFxuXG59ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuLi91dGlscyc7XG5jb25zdCB7XG5cdGdldFR5cGVDaGVja2VyLFxuXHRmaW5kU3ViVHlwZUZyb21QYXJlbnQsXG5cdHJlZmxlY3RQcmltaXRpdmVXcmFwcGVyc1xufSA9IFR5cGVzVXRpbHM7XG5cbmltcG9ydCB7IGV4dHJhY3QgfSBmcm9tICcuLi8uLi91dGlscy9leHRyYWN0JztcbmltcG9ydCB7IHBhcmVudCB9IGZyb20gJy4uLy4uL3V0aWxzL3BhcmVudCc7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGljayc7XG5cbmltcG9ydCBleGNlcHRpb25Db25zdHJ1Y3RvciBmcm9tICcuLi9lcnJvcnMvZXhjZXB0aW9uQ29uc3RydWN0b3InO1xuXG5pbXBvcnQgeyBJbnN0YW5jZUNyZWF0b3IgfSBmcm9tICcuL0luc3RhbmNlQ3JlYXRvcic7XG5cbmltcG9ydCB7XG5cdF9nZXRQcm9wcywgUHJvcHMgXG59IGZyb20gJy4vUHJvcHMnO1xuXG5jb25zdCBnZXREZWZhdWx0UHJvdG90eXBlID0gKCkgPT4ge1xuXHRyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtcbn07XG5cbi8vIGNvbnN0IEluc3RhbmNlUm9vdHMgPSBuZXcgV2Vha01hcDtcblxuY29uc3QgTW5lbW9uaWNhUHJvdG9Qcm9wcyA9IHtcblxuXHRleHRyYWN0ICgpIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24gKHRoaXM6IG9iamVjdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gZXh0cmFjdCh0aGlzKTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fTtcblx0fSxcblxuXHRwaWNrICgpIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24gKHRoaXM6IG9iamVjdCwgLi4uYXJnczogKHN0cmluZyB8IHN0cmluZ1tdKVtdKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBwaWNrKFxuXHRcdFx0XHR0aGlzLFxuXHRcdFx0XHQuLi5hcmdzXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9O1xuXHR9LFxuXG5cdHBhcmVudCAoKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBvYmplY3QsIGNvbnN0cnVjdG9yTG9va3VwUGF0aDogc3RyaW5nKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBwYXJlbnQoXG5cdFx0XHRcdHRoaXMsXG5cdFx0XHRcdGNvbnN0cnVjdG9yTG9va3VwUGF0aFxuXHRcdFx0KTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fTtcblx0fSxcblxuXHRjbG9uZSAodGhpczogeyBmb3JrOiAoKSA9PiBvYmplY3QgfSkge1xuXHRcdHJldHVybiB0aGlzLmZvcmsoKTtcblx0fSxcblxuXHRmb3JrICh0aGlzOiBvYmplY3QpIHtcblxuXHRcdGNvbnN0IHByb3BzID0gX2dldFByb3BzKHRoaXMpIGFzIFByb3BzO1xuXG5cdFx0Y29uc3Qge1xuXHRcdFx0X190eXBlX186IHR5cGUsXG5cdFx0XHRfX2NvbGxlY3Rpb25fXzogY29sbGVjdGlvbixcblx0XHRcdF9fcGFyZW50X186IGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0XHRfX2FyZ3NfXyxcblx0XHRcdF9fc2VsZl9fLFxuXHRcdH0gPSBwcm9wcztcblxuXHRcdGNvbnN0IHtcblx0XHRcdGlzU3ViVHlwZSxcblx0XHRcdFR5cGVOYW1lXG5cdFx0fSA9IHR5cGU7XG5cblx0XHQvLyAnZnVuY3Rpb24nLCBjYXVzZSBtaWdodCBiZSBjYWxsZWQgd2l0aCAnbmV3J1xuXHRcdCBcblx0XHRyZXR1cm4gZnVuY3Rpb24gKHRoaXM6IG9iamVjdCwgLi4uZm9ya0FyZ3M6IHVua25vd25bXSkge1xuXG5cdFx0XHRsZXQgZm9ya2VkO1xuXHRcdFx0Y29uc3QgQ29uc3RydWN0b3IgPSBpc1N1YlR5cGUgP1xuXHRcdFx0XHRleGlzdGVudEluc3RhbmNlIDpcblx0XHRcdFx0Y29sbGVjdGlvbjtcblxuXHRcdFx0Y29uc3QgYXJncyA9IGZvcmtBcmdzLmxlbmd0aCA/IGZvcmtBcmdzIDogX19hcmdzX187XG5cblxuXHRcdFx0aWYgKHRoaXMgPT09IF9fc2VsZl9fKSB7XG5cdFx0XHRcdCBcblx0XHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciAgdGhpcyBpcyBkZWZpbml0ZWx5IGEgY29uc3RydWN0b3Jcblx0XHRcdFx0Zm9ya2VkID0gbmV3IChDb25zdHJ1Y3RvclsgVHlwZU5hbWUgXSkoLi4uYXJncyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBmb3JrLmNhbGwgPyBsZXQncyBkbyBpdCAhXG5cdFx0XHRcdGZvcmtlZCA9IG5ldyBJbnN0YW5jZUNyZWF0b3IoXG5cdFx0XHRcdFx0dHlwZSxcblx0XHRcdFx0XHRyZWZsZWN0UHJpbWl0aXZlV3JhcHBlcnModGhpcyksXG5cdFx0XHRcdFx0YXJnc1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZm9ya2VkO1xuXG5cdFx0fTtcblx0fSxcblxuXHRbIFN5bWJvbENvbnN0cnVjdG9yTmFtZSBdICgpIHtcblx0XHRyZXR1cm4gTU5FTU9OSUNBO1xuXHR9LFxuXG5cdGV4Y2VwdGlvbiAoKSB7XG5cdFx0IFxuXHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xuXHRcdHJldHVybiBmdW5jdGlvbiAoZXJyb3I6IEVycm9yLCAuLi5hcmdzOiB1bmtub3duW10pIHtcblx0XHRcdGNvbnN0IHRhcmdldCA9IG5ldy50YXJnZXQ7XG5cdFx0XHRyZXR1cm4gZXhjZXB0aW9uQ29uc3RydWN0b3IuY2FsbChcblx0XHRcdFx0c2VsZixcblx0XHRcdFx0dGFyZ2V0LFxuXHRcdFx0XHRlcnJvcixcblx0XHRcdFx0Li4uYXJnc1xuXHRcdFx0KTtcblx0XHR9O1xuXHR9LFxuXG5cdHNpYmxpbmcgKCkge1xuXHRcdCBcblx0XHRjb25zdCBzaWJsaW5ncyA9IChTaWJsaW5nVHlwZU5hbWU6IHN0cmluZykgPT4ge1xuXG5cdFx0XHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyh0aGlzKSBhcyBQcm9wcztcblx0XHRcdGNvbnN0IHsgX19jb2xsZWN0aW9uX186IGNvbGxlY3Rpb24sIH0gPSBwcm9wcztcblx0XHRcdGNvbnN0IHNpYmxpbmc6IHVua25vd24gPSBjb2xsZWN0aW9uWyBTaWJsaW5nVHlwZU5hbWUgXTtcblx0XHRcdHJldHVybiBzaWJsaW5nO1xuXHRcdH07XG5cblx0XHRyZXR1cm4gbmV3IFByb3h5KFxuXHRcdFx0c2libGluZ3MsXG5cdFx0XHR7XG5cdFx0XHRcdGdldCAoXywgcHJvcDogc3RyaW5nKSB7XG5cdFx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gc2libGluZ3MocHJvcCk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdFx0fSxcblx0XHRcdFx0YXBwbHkgKF8sIF9fLCBhcmdzLCkge1xuXHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHNpYmxpbmdzKGFyZ3NbIDAgXSk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdCk7XG5cdH1cblxufTtcblxuY29uc3Qgc3RhdGljUHJvcHMgPSBbXG5cblx0Ly8gYnVpbHRpbnM6IGZ1bmN0aW9ucyArIFByb21pc2VzXG5cdCdjb25zdHJ1Y3RvcicsXG5cdCdwcm90b3R5cGUnLFxuXHQndGhlbicsXG5cblx0Ly8gYnVpbHRpbnM6IGVycm9yc1xuXHQnc3RhY2snLFxuXHQnbWVzc2FnZScsXG5cdCdkb21haW4nLFxuXG5cdC8vIGJ1aWx0aW5zOiBFdmVudEVtaXR0ZXJcblx0J29uJyxcblx0J29uY2UnLFxuXHQnb2ZmJyxcblxuXHQvLyBtb2NoYSArIGNoYWkgPT4gYnVnOiAuL3V0aWxzLmpzIC5maW5kU3ViVHlwZUZyb21QYXJlbnQgJ2luc3BlY3QnXG5cdCdpbnNwZWN0Jyxcblx0J3Nob3dEaWZmJyxcblxuXVxuXHQuY29uY2F0KE9iamVjdC5rZXlzKE1uZW1vbmljYVByb3RvUHJvcHMpKVxuXHQuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5wcm90b3R5cGUpKVxuXHQuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEZ1bmN0aW9uLnByb3RvdHlwZSkpXG5cdC5yZWR1Y2UoXG5cdFx0KG9iaiwga2V5KSA9PiB7XG5cdFx0XHRvYmpbIGtleSBdID0gdHJ1ZTtcblx0XHRcdHJldHVybiBvYmo7XG5cdFx0fSxcblx0XHRPYmplY3QuY3JlYXRlKG51bGwpXG5cdCk7XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogb25seS1hcnJvdy1mdW5jdGlvbnNcbmNvbnN0IG1ha2VTdWJUeXBlUHJveHkgPSBmdW5jdGlvbiAoc3VidHlwZTogU3VidHlwZUVudHJ5LCBpbmhlcml0ZWRJbnN0YW5jZTogdW5rbm93bikge1xuXG5cdGNvbnN0IHN1YnR5cGVQcm94eSA9IG5ldyBQcm94eShcblx0XHRJbnN0YW5jZUNyZWF0b3IsXG5cdFx0e1xuXG5cdFx0XHRnZXQgKFRhcmdldCwgX3Byb3ApIHtcblxuXHRcdFx0XHRpZiAoX3Byb3AgPT09IFN5bWJvbC5oYXNJbnN0YW5jZSkge1xuXHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGdldFR5cGVDaGVja2VyKHN1YnR5cGUuVHlwZU5hbWUpO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gUmVmbGVjdC5nZXQoXG5cdFx0XHRcdFx0VGFyZ2V0LFxuXHRcdFx0XHRcdF9wcm9wXG5cdFx0XHRcdCk7XG5cblx0XHRcdH0sXG5cblx0XHRcdGNvbnN0cnVjdCAoVGFyZ2V0LCBfYXJncykge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFRhcmdldChcblx0XHRcdFx0XHRzdWJ0eXBlLFxuXHRcdFx0XHRcdGluaGVyaXRlZEluc3RhbmNlLFxuXHRcdFx0XHRcdF9hcmdzXG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXG5cdFx0XHRhcHBseSAoVGFyZ2V0LCB0aGlzQXJnLCBfYXJncykge1xuXG5cdFx0XHRcdGlmICh0aGlzQXJnID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHR0aGlzQXJnID0gaW5oZXJpdGVkSW5zdGFuY2U7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBleGlzdGVudEluc3RhbmNlID0gcmVmbGVjdFByaW1pdGl2ZVdyYXBwZXJzKHRoaXNBcmcpO1xuXG5cdFx0XHRcdGNvbnN0IGVudGl0eSA9IG5ldyBUYXJnZXQoXG5cdFx0XHRcdFx0c3VidHlwZSxcblx0XHRcdFx0XHRleGlzdGVudEluc3RhbmNlLFxuXHRcdFx0XHRcdF9hcmdzXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBlbnRpdHk7XG5cdFx0XHR9LFxuXG5cdFx0fVxuXHQpO1xuXG5cdHJldHVybiBzdWJ0eXBlUHJveHk7XG59O1xuXG5jb25zdCBwcmVwYXJlU3VidHlwZUZvckNvbnN0cnVjdGlvbiA9IGZ1bmN0aW9uIChzdWJ0eXBlTmFtZTogc3RyaW5nLCBpbmhlcml0ZWRJbnN0YW5jZTogdW5rbm93bikge1xuXHQvLyBwcm90b3R5cGUgb2YgcHJveHlcblx0Y29uc3QgcHJvcEluc3RhbmNlID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihpbmhlcml0ZWRJbnN0YW5jZSBhcyBvYmplY3QpIGFzIG9iamVjdDtcblxuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhwcm9wSW5zdGFuY2UpIGFzIFByb3BzO1xuXHRpZiAoIXByb3BzKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0IHtcblx0XHRfX3R5cGVfXzoge1xuXHRcdFx0Y29uZmlnOiB7IHN0cmljdENoYWluIH0sXG5cdFx0XHRzdWJ0eXBlc1xuXHRcdH0sXG5cdH0gPSBwcm9wcztcblxuXG5cdGNvbnN0IHN1YnR5cGUgPSBzdWJ0eXBlcy5oYXMoc3VidHlwZU5hbWUpID9cblx0XHRzdWJ0eXBlcy5nZXQoc3VidHlwZU5hbWUpIDpcblx0XHRzdHJpY3RDaGFpbiA/XG5cdFx0XHR1bmRlZmluZWQgOlxuXHRcdFx0ZmluZFN1YlR5cGVGcm9tUGFyZW50KFxuaW5oZXJpdGVkSW5zdGFuY2UgYXMgb2JqZWN0LFxuc3VidHlwZU5hbWVcblx0XHRcdCk7XG5cblx0cmV0dXJuIHN1YnR5cGUgPyBtYWtlU3ViVHlwZVByb3h5KFxuXHRcdHN1YnR5cGUsXG5cdFx0aW5oZXJpdGVkSW5zdGFuY2Vcblx0KSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IG1uZW1vc3luZVByb3h5SGFuZGxlckdldCA9ICh0YXJnZXQ6IG9iamVjdCwgcHJvcDogc3RyaW5nLCByZWNlaXZlcjogdW5rbm93bikgPT4ge1xuXG5cdC8vIE5vZGUuanMgMjIgUmVmbGVjdC5nZXQgQmVoYXZpb3VyIENoYW5nZWQgaGVyZVxuXHQvLyBjYXVzZSBzb21ldGhpbmcgZ29uZSB3cm9uZyB3aXRoIHByb3AgYXNzaWdubWVudFxuXHQvLyBzbyBub3cgaWYgd2UgbmVlZCAuc3RhY2ssIHdlIHNob3VsZCBhdm9pZCByZWNlaXZlciBoZXJlXG5cdC8vIG5hdmUgbm90IHlldCBjaGVja2VkIG90aGVyIHN0YXRpY1Byb3BzLFxuXHQvLyBqdXN0IGZpeGVkIHRoaXMgYmVsb3dcblx0Ly8gd2hpbGUgdXNpbmcgY29uZGl0aW9uYWwgZm9yIHN0YXRpY1Byb3BzXG5cdGNvbnN0IHJlc3VsdCA9IFJlZmxlY3QuZ2V0KFxuXHRcdHRhcmdldCxcblx0XHRwcm9wLFxuXHRcdHJlY2VpdmVyXG5cdCk7XG5cblx0aWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N5bWJvbCcpIHtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0aWYgKHN0YXRpY1Byb3BzWyBwcm9wIF0pIHtcblx0XHQvKlxuXHRcdGNvbnN0IG1heUJlUmVzdWx0ID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wKTtcblx0XHRpZiAobWF5QmVSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIG1heUJlUmVzdWx0O1xuXHRcdH1cblx0XHQqL1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRjb25zdCBzdWJ0eXBlID0gcHJlcGFyZVN1YnR5cGVGb3JDb25zdHJ1Y3Rpb24oXG5cdFx0cHJvcCxcblx0XHRyZWNlaXZlclxuXHQpO1xuXHRyZXR1cm4gc3VidHlwZSB8fCByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgTW5lbW9zeW5lID0gZnVuY3Rpb24gKHRoaXM6IG9iamVjdCwgbW5lbW9uaWNhOiBvYmplY3QsIGV4cG9zZUluc3RhbmNlTWV0aG9kczogYm9vbGVhbikge1xuXHQgXG5cdGNvbnN0IGluc3RhbmNlID0gdGhpcztcblxuXHQvLyBiZWNhdXNlIHdlIG11c3QgaW5zdGFudGlhdGUgbmV3IGNoYWluIGZvciByb290XG5cdC8vIHRoZXJlZm9yZSB3ZSBjcmVhdGUgdGhpcyBjb25zdHJ1Y3RvciBpbnRlcm5hbGx5XG5cdC8vIHNvIGl0IGNhbiBub3QgYmUgYXVnbWVudGVkIGV4dGVybmFsbHkgZHVyaW5nIGluc3RhbmNlIGNyZWF0aW9uXG5cdGNvbnN0IE1uZW1vbmljYSA9IGZ1bmN0aW9uICh0aGlzOiBvYmplY3QpIHtcblx0XHRvZHAoXG5cdFx0XHR0aGlzLFxuXHRcdFx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRcdFx0e1xuXHRcdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRcdHJldHVybiBNTkVNT05JQ0E7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHQpO1xuXHR9IGFzIF9JbnRlcm5hbF9UQ188dHlwZW9mIE1uZW1vbmljYVByb3RvUHJvcHM+O1xuXHRcblx0Ly8gdGhpcyB0aHJvd3MgYW4gZXJyb3Jcblx0T2JqZWN0LnNldFByb3RvdHlwZU9mKFxuXHRcdE1uZW1vbmljYS5wcm90b3R5cGUsXG5cdFx0bW5lbW9uaWNhXG5cdCk7XG5cdC8vIHdoaWxlIHRoaXMganVzdCByZXR1cm5zIGZhbHNlLCBzaWxlbnRseSAuLi4gdW5mb3J0dW5hdGVseVxuXHQvLyBSZWZsZWN0LnNldFByb3RvdHlwZU9mKE1uZW1vbmljYS5wcm90b3R5cGUsIG1uZW1vbmljYSk7XG5cblx0Ly8gT25seSBhZGQgTW5lbW9uaWNhUHJvdG9Qcm9wcyBtZXRob2RzIGlmIGV4cG9zZUluc3RhbmNlTWV0aG9kcyBpcyB0cnVlXG5cdGlmIChleHBvc2VJbnN0YW5jZU1ldGhvZHMpIHtcblx0XHRPYmplY3QuZW50cmllcyhNbmVtb25pY2FQcm90b1Byb3BzKS5mb3JFYWNoKChbIG5hbWUsIG1ldGhvZCBdOiBbc3RyaW5nLCB1bmtub3duXSkgPT4ge1xuXHRcdFx0b2RwKFxuXHRcdFx0XHRNbmVtb25pY2EucHJvdG90eXBlLFxuXHRcdFx0XHRuYW1lLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0XHQgXG5cdFx0XHRcdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIHRoZXJlIGlzIGEgcHJveHkgYW5kIG5leHQgbGluZSBpcyBjYWxsYWJsZVxuXHRcdFx0XHRcdFx0cmV0dXJuIG1ldGhvZC5jYWxsKHRoaXMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHR9KTtcblxuXHRcdE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTW5lbW9uaWNhUHJvdG9Qcm9wcykuZm9yRWFjaCgoc3ltYm9sOiBzeW1ib2wpID0+IHtcblx0XHRcdG9kcChcblx0XHRcdFx0TW5lbW9uaWNhLnByb3RvdHlwZSxcblx0XHRcdFx0c3ltYm9sLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHN5bWJvbE1ldGhvZCA9IFJlZmxlY3QuZ2V0KFxuXHRcdFx0XHRcdFx0XHRNbmVtb25pY2FQcm90b1Byb3BzLFxuXHRcdFx0XHRcdFx0XHRzeW1ib2xcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc3ltYm9sTWV0aG9kLmNhbGwodGhpcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9XG5cblx0Ly8gaW5zdGFuY2Ugb2Ygc2VsZiBDb25zdHJ1Y3RvciB0eXBlXG5cdG9kcChcblx0XHRNbmVtb25pY2EucHJvdG90eXBlLFxuXHRcdFN5bWJvbC5oYXNJbnN0YW5jZSxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBnZXRUeXBlQ2hlY2tlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcblxuXHRjb25zdCBwcm90byA9IG5ldyBNbmVtb25pY2EoKTtcblx0UmVmbGVjdC5zZXRQcm90b3R5cGVPZihcblx0XHRpbnN0YW5jZSxcblx0XHRwcm90b1xuXHQpO1xuXG5cdC8vIEluc3RhbmNlUm9vdHMuc2V0KGluc3RhbmNlLCBwcm90byk7XG5cbn0gYXMgX0ludGVybmFsX1RDXzxvYmplY3Q+O1xuXG5jb25zdCBjcmVhdGVNbmVtb3N5bmUgPSBmdW5jdGlvbiAoVXJhbnVzOiB1bmtub3duLCBleHBvc2VJbnN0YW5jZU1ldGhvZHM6IGJvb2xlYW4pIHtcbi8vIGNvbnN0IGNyZWF0ZU1uZW1vc3luZSA9IGZ1bmN0aW9uIChVcmFudXM6IHVua25vd24sIHR5cGVQcm94eTogdW5rbm93bikge1xuLy8gXHRpZiAodHlwZW9mIFVyYW51cyA9PT0gJ3VuZGVmaW5lZCcpIHtcbi8vIFx0XHRjb25zdCB7IF9fdHlwZV9fOiB0eXBlLCBVcmFudXM6IF91cmFudXMgfSA9IHR5cGVQcm94eTtcbi8vIFx0XHRjb25zb2xlLmxvZyh0eXBlLCBfdXJhbnVzKTtcbi8vIFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZGVidWdnZXJcbi8vIFx0XHRkZWJ1Z2dlcjtcbi8vIFx0XHR0aHJvdyBuZXcgRXJyb3IoJ2NyZWF0ZU1uZW1vc3luZSBVcmFudXMgaXMgbm90IGRlZmluZWQgZm9yIHR5cGVQcm94eS4nKTtcbi8vIFx0fVxuXG5cdGNvbnN0IHVyYW51cyA9IHJlZmxlY3RQcmltaXRpdmVXcmFwcGVycyhVcmFudXMpO1xuXHRjb25zdCBtbmVtb3N5bmUgPSBuZXcgTW5lbW9zeW5lKFxuXHRcdHVyYW51cyxcblx0XHRleHBvc2VJbnN0YW5jZU1ldGhvZHNcblx0KTtcblx0Y29uc3QgbW5lbW9zeW5lUHJveHkgPSBuZXcgUHJveHkoXG5cdFx0bW5lbW9zeW5lLFxuXHRcdHtcblx0XHRcdGdldCA6IG1uZW1vc3luZVByb3h5SGFuZGxlckdldFxuXHRcdH1cblx0KTtcblxuXHRyZXR1cm4gbW5lbW9zeW5lUHJveHk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdGdldCBjcmVhdGVNbmVtb3N5bmUgKCkge1xuXHRcdHJldHVybiBjcmVhdGVNbmVtb3N5bmU7XG5cdH0sXG5cdGdldCBwcmVwYXJlU3VidHlwZUZvckNvbnN0cnVjdGlvbiAoKSB7XG5cdFx0cmV0dXJuIHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uO1xuXHR9LFxuXHRnZXQgZ2V0RGVmYXVsdFByb3RvdHlwZSAoKSB7XG5cdFx0cmV0dXJuIGdldERlZmF1bHRQcm90b3R5cGU7XG5cdH0sXG5cdC8vIGdldCBNbmVtb3N5bmVQcm90b3R5cGVLZXlzICgpIHtcblx0Ly8gXHRyZXR1cm4gTW5lbW9zeW5lUHJvdG90eXBlS2V5cztcblx0Ly8gfSxcblx0Ly8gZ2V0IEluc3RhbmNlUm9vdHMgKCkge1xuXHQvLyBcdHJldHVybiBJbnN0YW5jZVJvb3RzO1xuXHQvLyB9XG59O1xuIl19
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW5lbW9zeW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9NbmVtb3N5bmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7Ozs7QUFVYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxxQkFBcUIsRUFFckIsU0FBUyxHQUVULEdBQUcscUJBQVMsQ0FBQztBQUVkLHFEQUFrQztBQUNsQyxNQUFNLEVBQ0wsY0FBYyxFQUNkLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsR0FBRyxlQUFVLENBQUM7QUFFZix1REFBb0Q7QUFFcEQsbUNBRWlCO0FBRWpCLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxFQUFFO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsT0FBTyxNQUFNLENBQUM7QUFDZixDQUFDLENBQUM7QUFPRixNQUFNLDRCQUE0QixHQUFHO0lBQ3BDLFNBQVM7SUFDVCxNQUFNO0lBQ04sUUFBUTtJQUNSLE9BQU87SUFDUCxNQUFNO0lBQ04sV0FBVztJQUNYLFNBQVM7Q0FDVCxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUc7SUFHbkIsYUFBYTtJQUNiLFdBQVc7SUFDWCxNQUFNO0lBR04sT0FBTztJQUNQLFNBQVM7SUFDVCxRQUFRO0lBR1IsSUFBSTtJQUNKLE1BQU07SUFDTixLQUFLO0lBR0wsU0FBUztJQUNULFVBQVU7Q0FFVjtLQUNDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQztLQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNwRCxNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUN0RCxNQUFNLENBQ04sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7SUFDWixHQUFHLENB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LFNBQVMsRUFDVDtRQUNDLEdBQUcsRUFBRyx3QkFBd0I7S0FDOUIsQ0FDRCxDQUFDO0lBRUYsT0FBTyxjQUFjLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsa0JBQWU7SUFDZCxJQUFJLGVBQWU7UUFDbEIsT0FBTyxlQUFlLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksNkJBQTZCO1FBQ2hDLE9BQU8sNkJBQTZCLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksbUJBQW1CO1FBQ3RCLE9BQU8sbUJBQW1CLENBQUM7SUFDNUIsQ0FBQztDQU9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7XG5cdF9JbnRlcm5hbF9UQ18sXG5cdFR5cGVEZWZcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgU3VidHlwZUVudHJ5IHtcblx0VHlwZU5hbWU6IHN0cmluZztcbn1cbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5jb25zdCB7XG5cdG9kcCxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXG5cdE1ORU1PTklDQSxcblxufSA9IGNvbnN0YW50cztcblxuaW1wb3J0IFR5cGVzVXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuY29uc3Qge1xuXHRnZXRUeXBlQ2hlY2tlcixcblx0ZmluZFN1YlR5cGVGcm9tUGFyZW50LFxuXHRyZWZsZWN0UHJpbWl0aXZlV3JhcHBlcnNcbn0gPSBUeXBlc1V0aWxzO1xuXG5pbXBvcnQgeyBJbnN0YW5jZUNyZWF0b3IgfSBmcm9tICcuL0luc3RhbmNlQ3JlYXRvcic7XG5cbmltcG9ydCB7XG5cdF9nZXRQcm9wcywgUHJvcHNcbn0gZnJvbSAnLi9Qcm9wcyc7XG5cbmNvbnN0IGdldERlZmF1bHRQcm90b3R5cGUgPSAoKSA9PiB7XG5cdGNvbnN0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBjb25zdCBJbnN0YW5jZVJvb3RzID0gbmV3IFdlYWtNYXA7XG5cbi8vIE5hbWVzIHRoYXQgdXNlZCB0byBiZSBhdXRvLWluamVjdGVkIGluc3RhbmNlIG1ldGhvZHMuIFRoZXkgbXVzdCBzdGlsbCBiZVxuLy8gdHJlYXRlZCBhcyBzdGF0aWMvcmVzZXJ2ZWQgbmFtZXMgc28gdGhlIE1uZW1vc3luZSBwcm94eSBkb2VzIG5vdCB0cnkgdG9cbi8vIGNvbnN0cnVjdCBhIHN1YnR5cGUgd2hlbiBvbmUgb2YgdGhlbSBpcyBhY2Nlc3NlZC5cbmNvbnN0IG1uZW1vbmljYUluc3RhbmNlTWV0aG9kTmFtZXMgPSBbXG5cdCdleHRyYWN0Jyxcblx0J3BpY2snLFxuXHQncGFyZW50Jyxcblx0J2Nsb25lJyxcblx0J2ZvcmsnLFxuXHQnZXhjZXB0aW9uJyxcblx0J3NpYmxpbmcnLFxuXTtcblxuY29uc3Qgc3RhdGljUHJvcHMgPSBbXG5cblx0Ly8gYnVpbHRpbnM6IGZ1bmN0aW9ucyArIFByb21pc2VzXG5cdCdjb25zdHJ1Y3RvcicsXG5cdCdwcm90b3R5cGUnLFxuXHQndGhlbicsXG5cblx0Ly8gYnVpbHRpbnM6IGVycm9yc1xuXHQnc3RhY2snLFxuXHQnbWVzc2FnZScsXG5cdCdkb21haW4nLFxuXG5cdC8vIGJ1aWx0aW5zOiBFdmVudEVtaXR0ZXJcblx0J29uJyxcblx0J29uY2UnLFxuXHQnb2ZmJyxcblxuXHQvLyBtb2NoYSArIGNoYWkgPT4gYnVnOiAuL3V0aWxzLmpzIC5maW5kU3ViVHlwZUZyb21QYXJlbnQgJ2luc3BlY3QnXG5cdCdpbnNwZWN0Jyxcblx0J3Nob3dEaWZmJyxcblxuXVxuXHQuY29uY2F0KG1uZW1vbmljYUluc3RhbmNlTWV0aG9kTmFtZXMpXG5cdC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LnByb3RvdHlwZSkpXG5cdC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoRnVuY3Rpb24ucHJvdG90eXBlKSlcblx0LnJlZHVjZShcblx0XHQob2JqLCBrZXkpID0+IHtcblx0XHRcdG9ialsga2V5IF0gPSB0cnVlO1xuXHRcdFx0cmV0dXJuIG9iajtcblx0XHR9LFxuXHRcdE9iamVjdC5jcmVhdGUobnVsbClcblx0KTtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBvbmx5LWFycm93LWZ1bmN0aW9uc1xuY29uc3QgbWFrZVN1YlR5cGVQcm94eSA9IGZ1bmN0aW9uIChzdWJ0eXBlOiBTdWJ0eXBlRW50cnksIGluaGVyaXRlZEluc3RhbmNlOiB1bmtub3duKSB7XG5cblx0Y29uc3QgU3ViVHlwZVByb3h5ID0gZnVuY3Rpb24gKHRoaXM6IHVua25vd24sIC4uLl9hcmdzOiB1bmtub3duW10pIHtcblx0XHRpZiAobmV3LnRhcmdldCkge1xuXHRcdFx0Y29uc3QgaW5zdGFuY2VSZXN1bHQgPSBuZXcgSW5zdGFuY2VDcmVhdG9yKFxuXHRcdFx0XHRzdWJ0eXBlIGFzIFR5cGVEZWYsXG5cdFx0XHRcdGluaGVyaXRlZEluc3RhbmNlIGFzIG9iamVjdCxcblx0XHRcdFx0X2FyZ3Ncblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gaW5zdGFuY2VSZXN1bHQ7XG5cdFx0fVxuXHRcdGNvbnN0IHRoaXNBcmcgPSB0aGlzID09PSB1bmRlZmluZWQgPyBpbmhlcml0ZWRJbnN0YW5jZSA6IHRoaXM7XG5cdFx0Y29uc3QgZXhpc3RlbnRJbnN0YW5jZSA9IHJlZmxlY3RQcmltaXRpdmVXcmFwcGVycyh0aGlzQXJnKTtcblx0XHRjb25zdCBpbnN0YW5jZSA9IG5ldyBJbnN0YW5jZUNyZWF0b3IoXG5cdFx0XHRzdWJ0eXBlIGFzIFR5cGVEZWYsXG5cdFx0XHRleGlzdGVudEluc3RhbmNlIGFzIG9iamVjdCxcblx0XHRcdF9hcmdzXG5cdFx0KTtcblx0XHRyZXR1cm4gaW5zdGFuY2U7XG5cdH07XG5cblx0Y29uc3QgdHlwZUNoZWNrZXIgPSBnZXRUeXBlQ2hlY2tlcihzdWJ0eXBlLlR5cGVOYW1lKTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KFN1YlR5cGVQcm94eSwgU3ltYm9sLmhhc0luc3RhbmNlLCB7XG5cdFx0dmFsdWUgOiB0eXBlQ2hlY2tlclxuXHR9KTtcblxuXHRyZXR1cm4gU3ViVHlwZVByb3h5O1xufTtcblxuY29uc3QgcHJlcGFyZVN1YnR5cGVGb3JDb25zdHJ1Y3Rpb24gPSBmdW5jdGlvbiAoc3VidHlwZU5hbWU6IHN0cmluZywgaW5oZXJpdGVkSW5zdGFuY2U6IHVua25vd24pIHtcblx0Ly8gcHJvdG90eXBlIG9mIHByb3h5XG5cdGNvbnN0IHByb3BJbnN0YW5jZSA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoaW5oZXJpdGVkSW5zdGFuY2UgYXMgb2JqZWN0KSBhcyBvYmplY3Q7XG5cblx0Y29uc3QgcHJvcHMgPSBfZ2V0UHJvcHMocHJvcEluc3RhbmNlKSBhcyBQcm9wcztcblx0aWYgKCFwcm9wcykge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCB7XG5cdFx0X190eXBlX186IHtcblx0XHRcdGNvbmZpZzogeyBzdHJpY3RDaGFpbiB9LFxuXHRcdFx0c3VidHlwZXNcblx0XHR9LFxuXHR9ID0gcHJvcHM7XG5cblxuXHRjb25zdCBzdWJ0eXBlID0gc3VidHlwZXMuaGFzKHN1YnR5cGVOYW1lKSA/XG5cdFx0c3VidHlwZXMuZ2V0KHN1YnR5cGVOYW1lKSA6XG5cdFx0c3RyaWN0Q2hhaW4gP1xuXHRcdFx0dW5kZWZpbmVkIDpcblx0XHRcdGZpbmRTdWJUeXBlRnJvbVBhcmVudChcblx0XHRcdFx0aW5oZXJpdGVkSW5zdGFuY2UgYXMgb2JqZWN0LFxuXHRcdFx0XHRzdWJ0eXBlTmFtZVxuXHRcdFx0KTtcblxuXHRjb25zdCByZXN1bHQgPSBzdWJ0eXBlID8gbWFrZVN1YlR5cGVQcm94eShcblx0XHRzdWJ0eXBlLFxuXHRcdGluaGVyaXRlZEluc3RhbmNlXG5cdCkgOiB1bmRlZmluZWQ7XG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCBtbmVtb3N5bmVQcm94eUhhbmRsZXJHZXQgPSAodGFyZ2V0OiBvYmplY3QsIHByb3A6IHN0cmluZywgcmVjZWl2ZXI6IHVua25vd24pID0+IHtcblxuXHQvLyBOb2RlLmpzIDIyIFJlZmxlY3QuZ2V0IEJlaGF2aW91ciBDaGFuZ2VkIGhlcmVcblx0Ly8gY2F1c2Ugc29tZXRoaW5nIGdvbmUgd3Jvbmcgd2l0aCBwcm9wIGFzc2lnbm1lbnRcblx0Ly8gc28gbm93IGlmIHdlIG5lZWQgLnN0YWNrLCB3ZSBzaG91bGQgYXZvaWQgcmVjZWl2ZXIgaGVyZVxuXHQvLyBuYXZlIG5vdCB5ZXQgY2hlY2tlZCBvdGhlciBzdGF0aWNQcm9wcyxcblx0Ly8ganVzdCBmaXhlZCB0aGlzIGJlbG93XG5cdC8vIHdoaWxlIHVzaW5nIGNvbmRpdGlvbmFsIGZvciBzdGF0aWNQcm9wc1xuXHRjb25zdCByZXN1bHQgPSBSZWZsZWN0LmdldChcblx0XHR0YXJnZXQsXG5cdFx0cHJvcCxcblx0XHRyZWNlaXZlclxuXHQpO1xuXG5cdGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRpZiAodHlwZW9mIHByb3AgPT09ICdzeW1ib2wnKSB7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdGlmIChzdGF0aWNQcm9wc1sgcHJvcCBdKSB7XG5cdFx0Lypcblx0XHRjb25zdCBtYXlCZVJlc3VsdCA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCk7XG5cdFx0aWYgKG1heUJlUmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBtYXlCZVJlc3VsdDtcblx0XHR9XG5cdFx0Ki9cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0Y29uc3Qgc3VidHlwZSA9IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uKFxuXHRcdHByb3AsXG5cdFx0cmVjZWl2ZXJcblx0KTtcblx0Y29uc3Qgc3ViVHlwZVJlc3VsdCA9IHN1YnR5cGUgfHwgcmVzdWx0O1xuXHRyZXR1cm4gc3ViVHlwZVJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBNbmVtb3N5bmUgPSBmdW5jdGlvbiAodGhpczogb2JqZWN0LCBtbmVtb25pY2E6IG9iamVjdCkge1xuXG5cdGNvbnN0IGluc3RhbmNlID0gdGhpcztcblxuXHQvLyBiZWNhdXNlIHdlIG11c3QgaW5zdGFudGlhdGUgbmV3IGNoYWluIGZvciByb290XG5cdC8vIHRoZXJlZm9yZSB3ZSBjcmVhdGUgdGhpcyBjb25zdHJ1Y3RvciBpbnRlcm5hbGx5XG5cdC8vIHNvIGl0IGNhbiBub3QgYmUgYXVnbWVudGVkIGV4dGVybmFsbHkgZHVyaW5nIGluc3RhbmNlIGNyZWF0aW9uXG5cdGNvbnN0IE1uZW1vbmljYSA9IGZ1bmN0aW9uICh0aGlzOiBvYmplY3QpIHtcblx0XHRvZHAoXG5cdFx0XHR0aGlzLFxuXHRcdFx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRcdFx0e1xuXHRcdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRcdHJldHVybiBNTkVNT05JQ0E7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHQpO1xuXHR9IGFzIF9JbnRlcm5hbF9UQ188b2JqZWN0PjtcblxuXHQvLyB0aGlzIHRocm93cyBhbiBlcnJvclxuXHRPYmplY3Quc2V0UHJvdG90eXBlT2YoXG5cdFx0TW5lbW9uaWNhLnByb3RvdHlwZSxcblx0XHRtbmVtb25pY2Fcblx0KTtcblx0Ly8gd2hpbGUgdGhpcyBqdXN0IHJldHVybnMgZmFsc2UsIHNpbGVudGx5IC4uLiB1bmZvcnR1bmF0ZWx5XG5cdC8vIFJlZmxlY3Quc2V0UHJvdG90eXBlT2YoTW5lbW9uaWNhLnByb3RvdHlwZSwgbW5lbW9uaWNhKTtcblxuXHRvZHAoXG5cdFx0TW5lbW9uaWNhLnByb3RvdHlwZSxcblx0XHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWUsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIE1ORU1PTklDQTtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG5cblx0Ly8gaW5zdGFuY2Ugb2Ygc2VsZiBDb25zdHJ1Y3RvciB0eXBlXG5cdG9kcChcblx0XHRNbmVtb25pY2EucHJvdG90eXBlLFxuXHRcdFN5bWJvbC5oYXNJbnN0YW5jZSxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBnZXRUeXBlQ2hlY2tlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcblxuXHRjb25zdCBwcm90byA9IG5ldyBNbmVtb25pY2EoKTtcblx0UmVmbGVjdC5zZXRQcm90b3R5cGVPZihcblx0XHRpbnN0YW5jZSxcblx0XHRwcm90b1xuXHQpO1xuXG5cdC8vIEluc3RhbmNlUm9vdHMuc2V0KGluc3RhbmNlLCBwcm90byk7XG5cbn0gYXMgX0ludGVybmFsX1RDXzxvYmplY3Q+O1xuXG5jb25zdCBjcmVhdGVNbmVtb3N5bmUgPSBmdW5jdGlvbiAoVXJhbnVzOiB1bmtub3duKSB7XG5cdC8vIGNvbnN0IGNyZWF0ZU1uZW1vc3luZSA9IGZ1bmN0aW9uIChVcmFudXM6IHVua25vd24sIHR5cGVQcm94eTogdW5rbm93bikge1xuXHQvLyBcdGlmICh0eXBlb2YgVXJhbnVzID09PSAndW5kZWZpbmVkJykge1xuXHQvLyBcdFx0Y29uc3QgeyBfX3R5cGVfXzogdHlwZSwgVXJhbnVzOiBfdXJhbnVzIH0gPSB0eXBlUHJveHk7XG5cdC8vIFx0XHRjb25zb2xlLmxvZyh0eXBlLCBfdXJhbnVzKTtcblx0Ly8gXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kZWJ1Z2dlclxuXHQvLyBcdFx0ZGVidWdnZXI7XG5cdC8vIFx0XHR0aHJvdyBuZXcgRXJyb3IoJ2NyZWF0ZU1uZW1vc3luZSBVcmFudXMgaXMgbm90IGRlZmluZWQgZm9yIHR5cGVQcm94eS4nKTtcblx0Ly8gXHR9XG5cblx0Y29uc3QgdXJhbnVzID0gcmVmbGVjdFByaW1pdGl2ZVdyYXBwZXJzKFVyYW51cyk7XG5cdGNvbnN0IG1uZW1vc3luZSA9IG5ldyBNbmVtb3N5bmUodXJhbnVzKTtcblx0Y29uc3QgbW5lbW9zeW5lUHJveHkgPSBuZXcgUHJveHkoXG5cdFx0bW5lbW9zeW5lLFxuXHRcdHtcblx0XHRcdGdldCA6IG1uZW1vc3luZVByb3h5SGFuZGxlckdldFxuXHRcdH1cblx0KTtcblxuXHRyZXR1cm4gbW5lbW9zeW5lUHJveHk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdGdldCBjcmVhdGVNbmVtb3N5bmUgKCkge1xuXHRcdHJldHVybiBjcmVhdGVNbmVtb3N5bmU7XG5cdH0sXG5cdGdldCBwcmVwYXJlU3VidHlwZUZvckNvbnN0cnVjdGlvbiAoKSB7XG5cdFx0cmV0dXJuIHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uO1xuXHR9LFxuXHRnZXQgZ2V0RGVmYXVsdFByb3RvdHlwZSAoKSB7XG5cdFx0cmV0dXJuIGdldERlZmF1bHRQcm90b3R5cGU7XG5cdH0sXG5cdC8vIGdldCBNbmVtb3N5bmVQcm90b3R5cGVLZXlzICgpIHtcblx0Ly8gXHRyZXR1cm4gTW5lbW9zeW5lUHJvdG90eXBlS2V5cztcblx0Ly8gfSxcblx0Ly8gZ2V0IEluc3RhbmNlUm9vdHMgKCkge1xuXHQvLyBcdHJldHVybiBJbnN0YW5jZVJvb3RzO1xuXHQvLyB9XG59O1xuIl19
|
package/build/api/types/Props.js
CHANGED
|
@@ -55,7 +55,8 @@ const _addProps = function () {
|
|
|
55
55
|
const { stack } = this;
|
|
56
56
|
odp(value, '__stack__', {
|
|
57
57
|
get() {
|
|
58
|
-
|
|
58
|
+
const result = stack.join('\n');
|
|
59
|
+
return result;
|
|
59
60
|
}
|
|
60
61
|
});
|
|
61
62
|
}
|
|
@@ -121,7 +122,8 @@ const getProps = (instance) => {
|
|
|
121
122
|
const answer = {};
|
|
122
123
|
Object.defineProperties(answer, additions);
|
|
123
124
|
Object.defineProperties(answer, descriptors);
|
|
124
|
-
|
|
125
|
+
const result = answer;
|
|
126
|
+
return result;
|
|
125
127
|
}
|
|
126
128
|
else {
|
|
127
129
|
return props;
|
|
@@ -155,4 +157,4 @@ module.exports = {
|
|
|
155
157
|
getProps: exports.getProps,
|
|
156
158
|
setProps: exports.setProps
|
|
157
159
|
};
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3R5cGVzL1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsK0NBQTRDO0FBSzVDLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxxQkFBUyxDQUFDO0FBTTNCLE1BQU0sU0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFFaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsaUJBQWlCO0lBQ2pCLFVBQVU7SUFDVixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLFVBQVU7SUFDVixZQUFZO0lBQ1osV0FBVztJQUNYLGFBQWE7SUFDYixlQUFlO0lBQ2YsVUFBVTtDQUNWLENBQUMsQ0FBQztBQUVJLE1BQU0sU0FBUyxHQUFHO0lBR3hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUVsQixNQUFNLEVBQ0wsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixJQUFJLEVBQ0osTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQ3ZCLGVBQWUsRUFBRSxLQUFLLEVBQ3RCLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxFQUNMLFVBQVUsRUFDVixRQUFRLEdBQ1IsR0FBRyxJQUFJLENBQUM7SUFFVCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWxDLEdBQUcsQ0FDRixLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCO1FBQ0MsR0FBRztZQUNGLE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQztLQUNELENBQ0QsQ0FBQztJQUVGLEdBQUcsQ0FDRixLQUFLLEVBQ0wsVUFBVSxFQUNWO1FBQ0MsR0FBRztZQUNGLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztLQUNELENBQ0QsQ0FBQztJQUVGLEdBQUcsQ0FDRixLQUFLLEVBQ0wsZ0JBQWdCLEVBQ2hCO1FBQ0MsR0FBRztZQUNGLE9BQU8sVUFBVSxDQUFDO1FBQ25CLENBQUM7S0FDRCxDQUNELENBQUM7SUFFRixHQUFHLENBQ0YsS0FBSyxFQUNMLGNBQWMsRUFDZDtRQUNDLEdBQUc7WUFDRixPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDO0tBQ0QsQ0FDRCxDQUFDO0lBRUYsR0FBRyxDQUNGLEtBQUssRUFDTCxVQUFVLEVBQ1Y7UUFDQyxHQUFHO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO0tBQ0QsQ0FDRCxDQUFDO0lBRUYsR0FBRyxDQUNGLEtBQUssRUFDTCxZQUFZLEVBQ1o7UUFDQyxHQUFHO1lBQ0YsT0FBTyxnQkFBZ0IsQ0FBQztRQUN6QixDQUFDO0tBQ0QsQ0FDRCxDQUFDO0lBRUYsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNqQixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLEdBQUcsQ0FDRixLQUFLLEVBQ0wsV0FBVyxFQUNYO1lBQ0MsR0FBRztnQkFDRixPQUFPLEtBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsQ0FBQztTQUNELENBQ0QsQ0FBQztJQUNILENBQUM7SUFFRCxHQUFHLENBQ0YsS0FBSyxFQUNMLGFBQWEsRUFDYjtRQUNDLEdBQUc7WUFDRixPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7S0FDRCxDQUNELENBQUM7SUFFRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDN0IsR0FBRyxDQUNGLEtBQUssRUFDTCxlQUFlLEVBQ2Y7UUFDQyxHQUFHO1lBQ0YsT0FBTyxTQUFTLENBQUM7UUFDbEIsQ0FBQztLQUNELENBQ0QsQ0FBQztJQUdGLFNBQVMsQ0FBQyxHQUFHLENBQ2QsS0FBTSxFQUNOLEtBQUssQ0FDSCxDQUFDO0FBRUgsQ0FBQyxDQUFDO0FBeEhXLFFBQUEsU0FBUyxhQXdIcEI7QUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLFFBQWlCLEVBQUUsRUFBRTtJQUM1QyxJQUFJLFFBQVEsWUFBWSxNQUFNO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDNUMsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxJQUFJLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNsRSxPQUFPLEtBQUssQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVLLE1BQU0sU0FBUyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxJQUFhLEVBQXlCLEVBQUU7SUFDbkYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNoRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBVyxDQUFDO0lBQ3pELElBQ0MsSUFBSSxLQUFLLFNBQVM7UUFDbEIsY0FBYyxDQUFDLElBQUksQ0FBQztRQUNwQixjQUFjLENBQUMsS0FBSyxDQUFDO1FBQ3JCLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQ3ZDLENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUUxQixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ2pCLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFBLGlCQUFTLEVBQzdCLEtBQUssRUFDTCxJQUFJLENBQ0osQ0FBQztRQUNGLE9BQU8sWUFBWSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUMsQ0FBQztBQXpCVyxRQUFBLFNBQVMsYUF5QnBCO0FBRUssTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFnQixFQUFRLEVBQUU7SUFFbEQsTUFBTSxLQUFLLEdBQUcsSUFBQSxpQkFBUyxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sQ0FBQyxjQUFjLENBQ3BCLEtBQUssRUFDTCxVQUFVLEVBQ1Y7UUFDQyxHQUFHO1lBQ0YsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQztLQUNELENBQ0QsQ0FBQztJQUNGLFNBQVMsQ0FBQyxHQUFHLENBQ1osUUFBUSxFQUNSLEtBQUssQ0FDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBaEJXLFFBQUEsUUFBUSxZQWdCbkI7QUFFSyxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQWdCLEVBQXlCLEVBQUU7SUFDbkUsTUFBTSxLQUFLLEdBQUcsSUFBQSxpQkFBUyxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksVUFBVSxZQUFZLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDL0QsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDdEIsTUFBTSxFQUNOLFNBQVMsQ0FDVCxDQUFDO1lBQ0YsTUFBTSxDQUFDLGdCQUFnQixDQUN0QixNQUFNLEVBQ04sV0FBVyxDQUNYLENBQUM7WUFDRixPQUFPLE1BQW1CLENBQUM7UUFDNUIsQ0FBQzthQUFNLENBQUM7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDRixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBdEJXLFFBQUEsUUFBUSxZQXNCbkI7QUFFSyxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQWdCLEVBQUUsT0FBZSxFQUFvQixFQUFFO0lBQy9FLE1BQU0sS0FBSyxHQUFHLElBQUEsaUJBQVMsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztRQUM3QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFFLElBQUksRUFBRSxLQUFLLENBQUUsRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25CLE1BQU0sQ0FBQyxjQUFjLENBQ3BCLE9BQU8sRUFDUCxJQUFJLEVBQ0osS0FBSyxDQUNMLENBQUM7WUFDSCxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsR0FBRyxDQUNaLEtBQUssRUFDTCxPQUFPLENBQ1AsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNkLENBQUMsQ0FBQztBQXZCVyxRQUFBLFFBQVEsWUF1Qm5CO0FBT0YsTUFBTSxDQUFDLE9BQU8sR0FBRztJQUNoQixTQUFTLEVBQVQsaUJBQVM7SUFDVCxTQUFTLEVBQVQsaUJBQVM7SUFDVCxRQUFRLEVBQVIsZ0JBQVE7SUFDUixRQUFRLEVBQVIsZ0JBQVE7SUFDUixRQUFRLEVBQVIsZ0JBQVE7Q0FDUixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1xuXHRDb2xsZWN0aW9uRGVmLCBJbnN0YW5jZUNyZWF0b3JDb250ZXh0LCBQcm9wcyBhcyBQcm9wc1R5cGUsIFR5cGVEZWYgXG59IGZyb20gJy4uLy4uL3R5cGVzJztcblxuY29uc3QgeyBvZHAsIH0gPSBjb25zdGFudHM7XG5cbi8vIEV4dGVybmFsIHByb3BzIHN0b3JhZ2UgdmlhIFdlYWtNYXAga2VlcHMgaW5zdGFuY2UgZW51bWVyYXRpb24gY2xlYW4uXG4vLyBJbnN0YW5jZSBtZXRhZGF0YSAoX190eXBlX18sIF9fcGFyZW50X18sIF9fYXJnc19fLCBldGMuKSBpcyBzdG9yZWRcbi8vIGFnYWluc3QgdGhlIHByb3RvdHlwZSBvYmplY3QsIG5vdCB0aGUgaW5zdGFuY2UgaXRzZWxmLCBzbyBpdCBuZXZlclxuLy8gc2hvd3MgdXAgaW4gZm9yLi4uaW4sIE9iamVjdC5rZXlzLCBvciBKU09OLnN0cmluZ2lmeS5cbmNvbnN0IF9fcHJvcHNfXyA9IG5ldyBXZWFrTWFwKCk7XG5cbmNvbnN0IG5hdGl2ZVByb3BzID0gbmV3IFNldChbXG5cdCdfX3Byb3RvX3Byb3RvX18nLFxuXHQnX19hcmdzX18nLFxuXHQnX19jb2xsZWN0aW9uX18nLFxuXHQnX19zdWJ0eXBlc19fJyxcblx0J19fdHlwZV9fJyxcblx0J19fcGFyZW50X18nLFxuXHQnX19zdGFja19fJyxcblx0J19fY3JlYXRvcl9fJyxcblx0J19fdGltZXN0YW1wX18nLFxuXHQnX19zZWxmX18nLFxuXSk7XG5cbmV4cG9ydCBjb25zdCBfYWRkUHJvcHMgPSBmdW5jdGlvbiAodGhpczogSW5zdGFuY2VDcmVhdG9yQ29udGV4dCk6IHZvaWQge1xuXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0Y29uc3Qge1xuXHRcdHR5cGUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdGNvbmZpZzogeyBzdWJtaXRTdGFjayB9LFxuXHRcdF9fcHJvdG9fcHJvdG9fXzogcHJvdG9cblx0fSA9IHNlbGY7XG5cblx0Y29uc3Qge1xuXHRcdGNvbGxlY3Rpb24sXG5cdFx0c3VidHlwZXMsXG5cdH0gPSB0eXBlO1xuXG5cdGNvbnN0IHZhbHVlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuXHRvZHAoXG5cdFx0dmFsdWUsXG5cdFx0J19fcHJvdG9fcHJvdG9fXycsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIHByb3RvO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcblxuXHRvZHAoXG5cdFx0dmFsdWUsXG5cdFx0J19fYXJnc19fJyxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gYXJncztcblx0XHRcdH1cblx0XHR9XG5cdCk7XG5cblx0b2RwKFxuXHRcdHZhbHVlLFxuXHRcdCdfX2NvbGxlY3Rpb25fXycsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGNvbGxlY3Rpb247XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xuXG5cdG9kcChcblx0XHR2YWx1ZSxcblx0XHQnX19zdWJ0eXBlc19fJyxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gc3VidHlwZXM7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xuXG5cdG9kcChcblx0XHR2YWx1ZSxcblx0XHQnX190eXBlX18nLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiB0eXBlO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcblxuXHRvZHAoXG5cdFx0dmFsdWUsXG5cdFx0J19fcGFyZW50X18nLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBleGlzdGVudEluc3RhbmNlO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcblxuXHRpZiAoc3VibWl0U3RhY2spIHtcblx0XHRjb25zdCB7IHN0YWNrIH0gPSB0aGlzO1xuXHRcdG9kcChcblx0XHRcdHZhbHVlLFxuXHRcdFx0J19fc3RhY2tfXycsXG5cdFx0XHR7XG5cdFx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHN0YWNrIS5qb2luKCdcXG4nKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdCk7XG5cdH1cblxuXHRvZHAoXG5cdFx0dmFsdWUsXG5cdFx0J19fY3JlYXRvcl9fJyxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gc2VsZjtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG5cblx0Y29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblx0b2RwKFxuXHRcdHZhbHVlLFxuXHRcdCdfX3RpbWVzdGFtcF9fJyxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gdGltZXN0YW1wO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcblxuXHQvLyBfX3Byb3BzX18uc2V0KHNlbGYsIHZhbHVlKTtcblx0X19wcm9wc19fLnNldChcbnByb3RvISxcbnZhbHVlXG5cdCk7XG5cbn07XG5cbmNvbnN0IGlzT2JqZWN0TmF0dXJlID0gKGluc3RhbmNlOiB1bmtub3duKSA9PiB7XG5cdGlmIChpbnN0YW5jZSBpbnN0YW5jZW9mIE9iamVjdCkgcmV0dXJuIHRydWU7XG5cdGlmICh0eXBlb2YgaW5zdGFuY2UgPT09ICdvYmplY3QnICYmIGluc3RhbmNlICE9IG51bGwpIHJldHVybiB0cnVlO1xuXHRyZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgX2dldFByb3BzID0gKGluc3RhbmNlOiBvYmplY3QsIGJhc2U/OiBvYmplY3QpOiBQcm9wc1R5cGUgfCB1bmRlZmluZWQgPT4ge1xuXHRpZiAoIWlzT2JqZWN0TmF0dXJlKGluc3RhbmNlKSkgcmV0dXJuIHVuZGVmaW5lZDtcblx0Y29uc3QgcHJvdG8gPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKGluc3RhbmNlKSBhcyBvYmplY3Q7XG5cdGlmIChcblx0XHRiYXNlICE9PSB1bmRlZmluZWQgJiZcblx0XHRpc09iamVjdE5hdHVyZShiYXNlKSAmJlxuXHRcdGlzT2JqZWN0TmF0dXJlKHByb3RvKSAmJlxuXHRcdChiYXNlLmNvbnN0cnVjdG9yICE9PSBwcm90by5jb25zdHJ1Y3Rvcilcblx0KSB7XG5cdFx0Ly8gaGVyZSB3ZSBnb3QgcmlkIG9mIHVubmVjZXNzYXJ5IGNoYWluIGRpdmVcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGNvbnN0IHJlc3VsdCA9IF9fcHJvcHNfXy5nZXQocHJvdG8pO1xuXHRpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcblx0XHQvLyBzbyB3ZSBqdW1waW5nIGRlZXBlciBoZXJlXG5cdFx0aWYgKGJhc2UgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0YmFzZSA9IGluc3RhbmNlO1xuXHRcdH1cblx0XHRjb25zdCBuZXN0ZWRSZXN1bHQgPSBfZ2V0UHJvcHMoXG5cdFx0XHRwcm90byxcblx0XHRcdGJhc2Vcblx0XHQpO1xuXHRcdHJldHVybiBuZXN0ZWRSZXN1bHQ7XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBfc2V0U2VsZiA9IChpbnN0YW5jZTogb2JqZWN0KTogdm9pZCA9PiB7XG5cdC8vIGNvbnN0IHByb3BzID0gX19wcm9wc19fLmdldChpbnN0YW5jZSk7XG5cdGNvbnN0IHByb3BzID0gX2dldFByb3BzKGluc3RhbmNlKTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KFxuXHRcdHByb3BzLFxuXHRcdCdfX3NlbGZfXycsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGluc3RhbmNlO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcblx0X19wcm9wc19fLnNldChcblx0XHRpbnN0YW5jZSxcblx0XHRwcm9wc1xuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFByb3BzID0gKGluc3RhbmNlOiBvYmplY3QpOiBQcm9wc1R5cGUgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhpbnN0YW5jZSk7XG5cdGlmIChwcm9wcykge1xuXHRcdGNvbnN0IF9hZGRpdGlvbnMgPSBfX3Byb3BzX18uZ2V0KHByb3BzKTtcblx0XHRpZiAoX2FkZGl0aW9ucyBpbnN0YW5jZW9mIE9iamVjdCkge1xuXHRcdFx0Y29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhwcm9wcyk7XG5cdFx0XHRjb25zdCBhZGRpdGlvbnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhfYWRkaXRpb25zKTtcblx0XHRcdGNvbnN0IGFuc3dlciA9IHt9O1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoXG5cdFx0XHRcdGFuc3dlcixcblx0XHRcdFx0YWRkaXRpb25zXG5cdFx0XHQpO1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoXG5cdFx0XHRcdGFuc3dlcixcblx0XHRcdFx0ZGVzY3JpcHRvcnNcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gYW5zd2VyIGFzIFByb3BzVHlwZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHByb3BzO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFByb3BzID0gKGluc3RhbmNlOiBvYmplY3QsIF92YWx1ZXM6IG9iamVjdCk6IHN0cmluZ1tdIHwgZmFsc2UgPT4ge1xuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhpbnN0YW5jZSk7XG5cdGlmIChwcm9wcykge1xuXHRcdGNvbnN0IHZhbHVlcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKF92YWx1ZXMpO1xuXHRcdGNvbnN0IHdyaXR0ZW46IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgYWxsb3dlZCA9IHt9O1xuXHRcdE9iamVjdC5lbnRyaWVzKHZhbHVlcykuZm9yRWFjaCgoWyBuYW1lLCB2YWx1ZSBdKSA9PiB7XG5cdFx0XHRpZiAoIW5hdGl2ZVByb3BzLmhhcyhuYW1lKSkge1xuXHRcdFx0XHR3cml0dGVuLnB1c2gobmFtZSk7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShcblx0XHRcdFx0XHRhbGxvd2VkLFxuXHRcdFx0XHRcdG5hbWUsXG5cdFx0XHRcdFx0dmFsdWVcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRfX3Byb3BzX18uc2V0KFxuXHRcdFx0cHJvcHMsXG5cdFx0XHRhbGxvd2VkXG5cdFx0KTtcblx0XHRyZXR1cm4gd3JpdHRlbjtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBSZS1leHBvcnQgdHlwZXMgZnJvbSBjZW50cmFsaXplZCB0eXBlc1xuZXhwb3J0IHR5cGUge1xuXHRDb2xsZWN0aW9uRGVmLCBUeXBlRGVmLCBQcm9wc1R5cGUgYXMgUHJvcHMgXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcblx0X2FkZFByb3BzLFxuXHRfZ2V0UHJvcHMsXG5cdF9zZXRTZWxmLFxuXHRnZXRQcm9wcyxcblx0c2V0UHJvcHNcbn07XG4iXX0=
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3R5cGVzL1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsK0NBQTRDO0FBSzVDLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxxQkFBUyxDQUFDO0FBTTNCLE1BQU0sU0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFFaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsaUJBQWlCO0lBQ2pCLFVBQVU7SUFDVixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLFVBQVU7SUFDVixZQUFZO0lBQ1osV0FBVztJQUNYLGFBQWE7SUFDYixlQUFlO0lBQ2YsVUFBVTtDQUNWLENBQUMsQ0FBQztBQUVJLE1BQU0sU0FBUyxHQUFHO0lBR3hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUVsQixNQUFNLEVBQ0wsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixJQUFJLEVBQ0osTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQ3ZCLGVBQWUsRUFBRSxLQUFLLEVBQ3RCLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxFQUNMLFVBQVUsRUFDVixRQUFRLEdBQ1IsR0FBRyxJQUFJLENBQUM7SUFFVCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWxDLEdBQUcsQ0FDRixLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCO1FBQ0MsR0FBRztZQUNGLE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQztLQUNELENBQ0QsQ0FBQztJQUVGLEdBQUcsQ0FDRixLQUFLLEVBQ0wsVUFBVSxFQUNWO1FBQ0MsR0FBRztZQUNGLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztLQUNELENBQ0QsQ0FBQztJQUVGLEdBQUcsQ0FDRixLQUFLLEVBQ0wsZ0JBQWdCLEVBQ2hCO1FBQ0MsR0FBRztZQUNGLE9BQU8s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QUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RCxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFDN0IsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBRSxJQUFJLEVBQUUsS0FBSyxDQUFFLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQixNQUFNLENBQUMsY0FBYyxDQUNwQixPQUFPLEVBQ1AsSUFBSSxFQUNKLEtBQUssQ0FDTCxDQUFDO1lBQ0gsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLEdBQUcsQ0FDWixLQUFLLEVBQ0wsT0FBTyxDQUNQLENBQUM7UUFDRixPQUFPLE9BQU8sQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDLENBQUM7QUF2QlcsUUFBQSxRQUFRLFlBdUJuQjtBQU9GLE1BQU0sQ0FBQyxPQUFPLEdBQUc7SUFDaEIsU0FBUyxFQUFULGlCQUFTO0lBQ1QsU0FBUyxFQUFULGlCQUFTO0lBQ1QsUUFBUSxFQUFSLGdCQUFRO0lBQ1IsUUFBUSxFQUFSLGdCQUFRO0lBQ1IsUUFBUSxFQUFSLGdCQUFRO0NBQ1IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtcblx0Q29sbGVjdGlvbkRlZiwgSW5zdGFuY2VDcmVhdG9yQ29udGV4dCwgUHJvcHMgYXMgUHJvcHNUeXBlLCBUeXBlRGVmIFxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmNvbnN0IHsgb2RwLCB9ID0gY29uc3RhbnRzO1xuXG4vLyBFeHRlcm5hbCBwcm9wcyBzdG9yYWdlIHZpYSBXZWFrTWFwIGtlZXBzIGluc3RhbmNlIGVudW1lcmF0aW9uIGNsZWFuLlxuLy8gSW5zdGFuY2UgbWV0YWRhdGEgKF9fdHlwZV9fLCBfX3BhcmVudF9fLCBfX2FyZ3NfXywgZXRjLikgaXMgc3RvcmVkXG4vLyBhZ2FpbnN0IHRoZSBwcm90b3R5cGUgb2JqZWN0LCBub3QgdGhlIGluc3RhbmNlIGl0c2VsZiwgc28gaXQgbmV2ZXJcbi8vIHNob3dzIHVwIGluIGZvci4uLmluLCBPYmplY3Qua2V5cywgb3IgSlNPTi5zdHJpbmdpZnkuXG5jb25zdCBfX3Byb3BzX18gPSBuZXcgV2Vha01hcCgpO1xuXG5jb25zdCBuYXRpdmVQcm9wcyA9IG5ldyBTZXQoW1xuXHQnX19wcm90b19wcm90b19fJyxcblx0J19fYXJnc19fJyxcblx0J19fY29sbGVjdGlvbl9fJyxcblx0J19fc3VidHlwZXNfXycsXG5cdCdfX3R5cGVfXycsXG5cdCdfX3BhcmVudF9fJyxcblx0J19fc3RhY2tfXycsXG5cdCdfX2NyZWF0b3JfXycsXG5cdCdfX3RpbWVzdGFtcF9fJyxcblx0J19fc2VsZl9fJyxcbl0pO1xuXG5leHBvcnQgY29uc3QgX2FkZFByb3BzID0gZnVuY3Rpb24gKHRoaXM6IEluc3RhbmNlQ3JlYXRvckNvbnRleHQpOiB2b2lkIHtcblxuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdGNvbnN0IHtcblx0XHR0eXBlLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRjb25maWc6IHsgc3VibWl0U3RhY2sgfSxcblx0XHRfX3Byb3RvX3Byb3RvX186IHByb3RvXG5cdH0gPSBzZWxmO1xuXG5cdGNvbnN0IHtcblx0XHRjb2xsZWN0aW9uLFxuXHRcdHN1YnR5cGVzLFxuXHR9ID0gdHlwZTtcblxuXHRjb25zdCB2YWx1ZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cblx0b2RwKFxuXHRcdHZhbHVlLFxuXHRcdCdfX3Byb3RvX3Byb3RvX18nLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBwcm90bztcblx0XHRcdH1cblx0XHR9XG5cdCk7XG5cblx0b2RwKFxuXHRcdHZhbHVlLFxuXHRcdCdfX2FyZ3NfXycsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGFyZ3M7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xuXG5cdG9kcChcblx0XHR2YWx1ZSxcblx0XHQnX19jb2xsZWN0aW9uX18nLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBjb2xsZWN0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcblxuXHRvZHAoXG5cdFx0dmFsdWUsXG5cdFx0J19fc3VidHlwZXNfXycsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIHN1YnR5cGVzO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcblxuXHRvZHAoXG5cdFx0dmFsdWUsXG5cdFx0J19fdHlwZV9fJyxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gdHlwZTtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG5cblx0b2RwKFxuXHRcdHZhbHVlLFxuXHRcdCdfX3BhcmVudF9fJyxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gZXhpc3RlbnRJbnN0YW5jZTtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG5cblx0aWYgKHN1Ym1pdFN0YWNrKSB7XG5cdFx0Y29uc3QgeyBzdGFjayB9ID0gdGhpcztcblx0XHRvZHAoXG5cdFx0XHR2YWx1ZSxcblx0XHRcdCdfX3N0YWNrX18nLFxuXHRcdFx0e1xuXHRcdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHN0YWNrIS5qb2luKCdcXG4nKTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0KTtcblx0fVxuXG5cdG9kcChcblx0XHR2YWx1ZSxcblx0XHQnX19jcmVhdG9yX18nLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBzZWxmO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcblxuXHRjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuXHRvZHAoXG5cdFx0dmFsdWUsXG5cdFx0J19fdGltZXN0YW1wX18nLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiB0aW1lc3RhbXA7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xuXG5cdC8vIF9fcHJvcHNfXy5zZXQoc2VsZiwgdmFsdWUpO1xuXHRfX3Byb3BzX18uc2V0KFxucHJvdG8hLFxudmFsdWVcblx0KTtcblxufTtcblxuY29uc3QgaXNPYmplY3ROYXR1cmUgPSAoaW5zdGFuY2U6IHVua25vd24pID0+IHtcblx0aWYgKGluc3RhbmNlIGluc3RhbmNlb2YgT2JqZWN0KSByZXR1cm4gdHJ1ZTtcblx0aWYgKHR5cGVvZiBpbnN0YW5jZSA9PT0gJ29iamVjdCcgJiYgaW5zdGFuY2UgIT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cdHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBfZ2V0UHJvcHMgPSAoaW5zdGFuY2U6IG9iamVjdCwgYmFzZT86IG9iamVjdCk6IFByb3BzVHlwZSB8IHVuZGVmaW5lZCA9PiB7XG5cdGlmICghaXNPYmplY3ROYXR1cmUoaW5zdGFuY2UpKSByZXR1cm4gdW5kZWZpbmVkO1xuXHRjb25zdCBwcm90byA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoaW5zdGFuY2UpIGFzIG9iamVjdDtcblx0aWYgKFxuXHRcdGJhc2UgIT09IHVuZGVmaW5lZCAmJlxuXHRcdGlzT2JqZWN0TmF0dXJlKGJhc2UpICYmXG5cdFx0aXNPYmplY3ROYXR1cmUocHJvdG8pICYmXG5cdFx0KGJhc2UuY29uc3RydWN0b3IgIT09IHByb3RvLmNvbnN0cnVjdG9yKVxuXHQpIHtcblx0XHQvLyBoZXJlIHdlIGdvdCByaWQgb2YgdW5uZWNlc3NhcnkgY2hhaW4gZGl2ZVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0Y29uc3QgcmVzdWx0ID0gX19wcm9wc19fLmdldChwcm90byk7XG5cdGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuXHRcdC8vIHNvIHdlIGp1bXBpbmcgZGVlcGVyIGhlcmVcblx0XHRpZiAoYmFzZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRiYXNlID0gaW5zdGFuY2U7XG5cdFx0fVxuXHRcdGNvbnN0IG5lc3RlZFJlc3VsdCA9IF9nZXRQcm9wcyhcblx0XHRcdHByb3RvLFxuXHRcdFx0YmFzZVxuXHRcdCk7XG5cdFx0cmV0dXJuIG5lc3RlZFJlc3VsdDtcblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IF9zZXRTZWxmID0gKGluc3RhbmNlOiBvYmplY3QpOiB2b2lkID0+IHtcblx0Ly8gY29uc3QgcHJvcHMgPSBfX3Byb3BzX18uZ2V0KGluc3RhbmNlKTtcblx0Y29uc3QgcHJvcHMgPSBfZ2V0UHJvcHMoaW5zdGFuY2UpO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoXG5cdFx0cHJvcHMsXG5cdFx0J19fc2VsZl9fJyxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gaW5zdGFuY2U7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xuXHRfX3Byb3BzX18uc2V0KFxuXHRcdGluc3RhbmNlLFxuXHRcdHByb3BzXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UHJvcHMgPSAoaW5zdGFuY2U6IG9iamVjdCk6IFByb3BzVHlwZSB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IHByb3BzID0gX2dldFByb3BzKGluc3RhbmNlKTtcblx0aWYgKHByb3BzKSB7XG5cdFx0Y29uc3QgX2FkZGl0aW9ucyA9IF9fcHJvcHNfXy5nZXQocHJvcHMpO1xuXHRcdGlmIChfYWRkaXRpb25zIGluc3RhbmNlb2YgT2JqZWN0KSB7XG5cdFx0XHRjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHByb3BzKTtcblx0XHRcdGNvbnN0IGFkZGl0aW9ucyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKF9hZGRpdGlvbnMpO1xuXHRcdFx0Y29uc3QgYW5zd2VyID0ge307XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyhcblx0XHRcdFx0YW5zd2VyLFxuXHRcdFx0XHRhZGRpdGlvbnNcblx0XHRcdCk7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyhcblx0XHRcdFx0YW5zd2VyLFxuXHRcdFx0XHRkZXNjcmlwdG9yc1xuXHRcdFx0KTtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGFuc3dlciBhcyBQcm9wc1R5cGU7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gcHJvcHM7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UHJvcHMgPSAoaW5zdGFuY2U6IG9iamVjdCwgX3ZhbHVlczogb2JqZWN0KTogc3RyaW5nW10gfCBmYWxzZSA9PiB7XG5cdGNvbnN0IHByb3BzID0gX2dldFByb3BzKGluc3RhbmNlKTtcblx0aWYgKHByb3BzKSB7XG5cdFx0Y29uc3QgdmFsdWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoX3ZhbHVlcyk7XG5cdFx0Y29uc3Qgd3JpdHRlbjogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBhbGxvd2VkID0ge307XG5cdFx0T2JqZWN0LmVudHJpZXModmFsdWVzKS5mb3JFYWNoKChbIG5hbWUsIHZhbHVlIF0pID0+IHtcblx0XHRcdGlmICghbmF0aXZlUHJvcHMuaGFzKG5hbWUpKSB7XG5cdFx0XHRcdHdyaXR0ZW4ucHVzaChuYW1lKTtcblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KFxuXHRcdFx0XHRcdGFsbG93ZWQsXG5cdFx0XHRcdFx0bmFtZSxcblx0XHRcdFx0XHR2YWx1ZVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdF9fcHJvcHNfXy5zZXQoXG5cdFx0XHRwcm9wcyxcblx0XHRcdGFsbG93ZWRcblx0XHQpO1xuXHRcdHJldHVybiB3cml0dGVuO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn07XG5cbi8vIFJlLWV4cG9ydCB0eXBlcyBmcm9tIGNlbnRyYWxpemVkIHR5cGVzXG5leHBvcnQgdHlwZSB7XG5cdENvbGxlY3Rpb25EZWYsIFR5cGVEZWYsIFByb3BzVHlwZSBhcyBQcm9wcyBcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuXHRfYWRkUHJvcHMsXG5cdF9nZXRQcm9wcyxcblx0X3NldFNlbGYsXG5cdGdldFByb3BzLFxuXHRzZXRQcm9wc1xufTtcbiJdfQ==
|