@bitgo/sdk-lib-mpc 9.7.0 → 9.8.1
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/CHANGELOG.md +14 -0
- package/dist/src/curves/secp256k1.d.ts.map +1 -1
- package/dist/src/curves/secp256k1.js +19 -39
- package/dist/src/tss/ecdsa-dkls/dkg.d.ts +1 -0
- package/dist/src/tss/ecdsa-dkls/dkg.d.ts.map +1 -1
- package/dist/src/tss/ecdsa-dkls/dkg.js +21 -9
- package/dist/src/tss/ecdsa-dkls/dsg.d.ts.map +1 -1
- package/dist/src/tss/ecdsa-dkls/dsg.js +8 -5
- package/dist/src/tss/ecdsa-dkls/types.d.ts +12 -2
- package/dist/src/tss/ecdsa-dkls/types.d.ts.map +1 -1
- package/dist/src/tss/ecdsa-dkls/types.js +43 -3
- package/dist/src/tss/ecdsa-dkls/util.d.ts +6 -1
- package/dist/src/tss/ecdsa-dkls/util.d.ts.map +1 -1
- package/dist/src/tss/ecdsa-dkls/util.js +168 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -6
|
@@ -1,11 +1,36 @@
|
|
|
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getCommonKeychain = exports.serializeBroadcastMessage = exports.serializeP2PMessage = exports.deserializeBroadcastMessage = exports.deserializeP2PMessage = exports.deserializeMessages = exports.serializeMessages = exports.DsgState = exports.DkgState = void 0;
|
|
29
|
+
exports.getDecodedReducedKeyShare = exports.getCommonKeychain = exports.serializeBroadcastMessage = exports.serializeP2PMessage = exports.deserializeBroadcastMessage = exports.deserializeP2PMessage = exports.deserializeMessages = exports.serializeMessages = exports.ReducedKeyShareType = exports.DsgState = exports.DkgState = void 0;
|
|
7
30
|
const assert_1 = __importDefault(require("assert"));
|
|
8
31
|
const cbor_x_1 = require("cbor-x");
|
|
32
|
+
const t = __importStar(require("io-ts"));
|
|
33
|
+
const Either_1 = require("fp-ts/Either");
|
|
9
34
|
var DkgState;
|
|
10
35
|
(function (DkgState) {
|
|
11
36
|
DkgState[DkgState["Uninitialized"] = 0] = "Uninitialized";
|
|
@@ -26,6 +51,13 @@ var DsgState;
|
|
|
26
51
|
DsgState[DsgState["Complete"] = 5] = "Complete";
|
|
27
52
|
DsgState[DsgState["InvalidState"] = 6] = "InvalidState";
|
|
28
53
|
})(DsgState = exports.DsgState || (exports.DsgState = {}));
|
|
54
|
+
exports.ReducedKeyShareType = t.type({
|
|
55
|
+
bigSList: t.array(t.array(t.number)),
|
|
56
|
+
xList: t.array(t.array(t.number)),
|
|
57
|
+
rootChainCode: t.array(t.number),
|
|
58
|
+
prv: t.array(t.number),
|
|
59
|
+
pub: t.array(t.number),
|
|
60
|
+
});
|
|
29
61
|
/**
|
|
30
62
|
* Serializes messages payloads to base64 strings.
|
|
31
63
|
* @param messages
|
|
@@ -101,7 +133,7 @@ exports.serializeBroadcastMessage = serializeBroadcastMessage;
|
|
|
101
133
|
/**
|
|
102
134
|
* Gets commonkeyChain from DKLS keyShare
|
|
103
135
|
* @param {Buffer} keyShare - DKLS keyShare
|
|
104
|
-
* @returns {string} commonKeychain
|
|
136
|
+
* @returns {string} commonKeychain in hex format
|
|
105
137
|
*/
|
|
106
138
|
function getCommonKeychain(keyShare) {
|
|
107
139
|
const parsedKeyShare = (0, cbor_x_1.decode)(keyShare);
|
|
@@ -112,4 +144,12 @@ function getCommonKeychain(keyShare) {
|
|
|
112
144
|
return publicKey + rootChainCode;
|
|
113
145
|
}
|
|
114
146
|
exports.getCommonKeychain = getCommonKeychain;
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VjZHNhLWRrbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1DQUFnQztBQWtCaEMsSUFBWSxRQVFYO0FBUkQsV0FBWSxRQUFRO0lBQ2xCLHlEQUFpQixDQUFBO0lBQ2pCLDJDQUFNLENBQUE7SUFDTiwyQ0FBTSxDQUFBO0lBQ04sMkNBQU0sQ0FBQTtJQUNOLDJDQUFNLENBQUE7SUFDTiwrQ0FBUSxDQUFBO0lBQ1IsdURBQVksQ0FBQTtBQUNkLENBQUMsRUFSVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQVFuQjtBQUVELElBQVksUUFRWDtBQVJELFdBQVksUUFBUTtJQUNsQix5REFBaUIsQ0FBQTtJQUNqQiwyQ0FBTSxDQUFBO0lBQ04sMkNBQU0sQ0FBQTtJQUNOLDJDQUFNLENBQUE7SUFDTiwyQ0FBTSxDQUFBO0lBQ04sK0NBQVEsQ0FBQTtJQUNSLHVEQUFZLENBQUE7QUFDZCxDQUFDLEVBUlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFRbkI7QUE0Q0Q7OztHQUdHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsUUFBOEI7SUFDOUQsT0FBTztRQUNMLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztRQUMxRCxpQkFBaUIsRUFBRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDO0tBQzdFLENBQUM7QUFDSixDQUFDO0FBTEQsOENBS0M7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxRQUE0QjtJQUM5RCxPQUFPO1FBQ0wsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDO1FBQzVELGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFH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QyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEYsT0FBTyxTQUFTLEdBQUcsYUFBYSxDQUFDO0FBQ25DLENBQUM7QUFQRCw4Q0FPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gJ2Nib3IteCc7XG5pbXBvcnQgeyBYU2hhcmUgfSBmcm9tICcuLi9lY2RzYS90eXBlcyc7XG5cbi8vIEJyb2FkY2FzdCBtZXNzYWdlIG1lYW50IHRvIGJlIHNlbnQgdG8gbXVsdGlwbGUgcGFydGllc1xuaW50ZXJmYWNlIEJyb2FkY2FzdE1lc3NhZ2U8VD4ge1xuICBwYXlsb2FkOiBUO1xuICBmcm9tOiBudW1iZXI7XG4gIHNpZ25hdHVyZVI/OiBUO1xufVxuXG4vLyBQMlAgbWVzc2FnZSBtZWFudCB0byBiZSBzZW50IHRvIGEgc3BlY2lmaWMgcGFydHlcbmludGVyZmFjZSBQMlBNZXNzYWdlPFQsIEc+IHtcbiAgcGF5bG9hZDogVDtcbiAgZnJvbTogbnVtYmVyO1xuICBjb21taXRtZW50PzogRztcbiAgdG86IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gRGtnU3RhdGUge1xuICBVbmluaXRpYWxpemVkID0gMCxcbiAgUm91bmQxLFxuICBSb3VuZDIsXG4gIFJvdW5kMyxcbiAgUm91bmQ0LFxuICBDb21wbGV0ZSxcbiAgSW52YWxpZFN0YXRlLFxufVxuXG5leHBvcnQgZW51bSBEc2dTdGF0ZSB7XG4gIFVuaW5pdGlhbGl6ZWQgPSAwLFxuICBSb3VuZDEsXG4gIFJvdW5kMixcbiAgUm91bmQzLFxuICBSb3VuZDQsXG4gIENvbXBsZXRlLFxuICBJbnZhbGlkU3RhdGUsXG59XG5cbmV4cG9ydCB0eXBlIEF1dGhFbmNNZXNzYWdlID0ge1xuICBlbmNyeXB0ZWRNZXNzYWdlOiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEF1dGhNZXNzYWdlID0ge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFBhcnR5R3BnS2V5ID0ge1xuICBwYXJ0eUlkOiBudW1iZXI7XG4gIGdwZ0tleTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIERrbHNTaWduYXR1cmU8VD4gPSB7XG4gIFI6IFQ7XG4gIFM6IFQ7XG59O1xuZXhwb3J0IHR5cGUgUmV0cm9maXREYXRhID0ge1xuICBiaWdTaUxpc3Q6IHN0cmluZ1tdO1xuICB4U2hhcmU6IFBhcnRpYWw8WFNoYXJlPjtcbiAgeGlMaXN0Pzogc3RyaW5nW107XG59O1xuZXhwb3J0IHR5cGUgU2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2UgPSBCcm9hZGNhc3RNZXNzYWdlPHN0cmluZz47XG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlID0gQnJvYWRjYXN0TWVzc2FnZTxVaW50OEFycmF5PjtcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRQMlBNZXNzYWdlID0gUDJQTWVzc2FnZTxzdHJpbmcsIHN0cmluZz47XG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRQMlBNZXNzYWdlID0gUDJQTWVzc2FnZTxVaW50OEFycmF5LCBVaW50OEFycmF5PjtcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWREa2xzU2lnbmF0dXJlID0gRGtsc1NpZ25hdHVyZTxzdHJpbmc+O1xuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkRGtsc1NpZ25hdHVyZSA9IERrbHNTaWduYXR1cmU8VWludDhBcnJheT47XG5leHBvcnQgdHlwZSBBdXRoRW5jUDJQTWVzc2FnZSA9IFAyUE1lc3NhZ2U8QXV0aEVuY01lc3NhZ2UsIHN0cmluZz47XG5leHBvcnQgdHlwZSBBdXRoQnJvYWRjYXN0TWVzc2FnZSA9IEJyb2FkY2FzdE1lc3NhZ2U8QXV0aE1lc3NhZ2U+O1xuZXhwb3J0IHR5cGUgU2VyaWFsaXplZE1lc3NhZ2VzID0ge1xuICBwMnBNZXNzYWdlczogU2VyaWFsaXplZFAyUE1lc3NhZ2VbXTtcbiAgYnJvYWRjYXN0TWVzc2FnZXM6IFNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlW107XG59O1xuZXhwb3J0IHR5cGUgQXV0aEVuY01lc3NhZ2VzID0ge1xuICBwMnBNZXNzYWdlczogQXV0aEVuY1AyUE1lc3NhZ2VbXTtcbiAgYnJvYWRjYXN0TWVzc2FnZXM6IEF1dGhCcm9hZGNhc3RNZXNzYWdlW107XG59O1xuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkTWVzc2FnZXMgPSB7XG4gIHAycE1lc3NhZ2VzOiBEZXNlcmlhbGl6ZWRQMlBNZXNzYWdlW107XG4gIGJyb2FkY2FzdE1lc3NhZ2VzOiBEZXNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlW107XG59O1xuXG4vKipcbiAqIFNlcmlhbGl6ZXMgbWVzc2FnZXMgcGF5bG9hZHMgdG8gYmFzZTY0IHN0cmluZ3MuXG4gKiBAcGFyYW0gbWVzc2FnZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZU1lc3NhZ2VzKG1lc3NhZ2VzOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyk6IFNlcmlhbGl6ZWRNZXNzYWdlcyB7XG4gIHJldHVybiB7XG4gICAgcDJwTWVzc2FnZXM6IG1lc3NhZ2VzLnAycE1lc3NhZ2VzLm1hcChzZXJpYWxpemVQMlBNZXNzYWdlKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogbWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMubWFwKHNlcmlhbGl6ZUJyb2FkY2FzdE1lc3NhZ2UpLFxuICB9O1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIG1lc3NhZ2VzIHBheWxvYWRzIHRvIFVpbnQ4QXJyYXkuXG4gKiBAcGFyYW0gbWVzc2FnZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplTWVzc2FnZXMobWVzc2FnZXM6IFNlcmlhbGl6ZWRNZXNzYWdlcyk6IERlc2VyaWFsaXplZE1lc3NhZ2VzIHtcbiAgcmV0dXJuIHtcbiAgICBwMnBNZXNzYWdlczogbWVzc2FnZXMucDJwTWVzc2FnZXMubWFwKGRlc2VyaWFsaXplUDJQTWVzc2FnZSksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IG1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzLm1hcChkZXNlcmlhbGl6ZUJyb2FkY2FzdE1lc3NhZ2UpLFxuICB9O1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBhIFAyUCBtZXNzYWdlLlxuICogQHBhcmFtIG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplUDJQTWVzc2FnZShtZXNzYWdlOiBTZXJpYWxpemVkUDJQTWVzc2FnZSk6IERlc2VyaWFsaXplZFAyUE1lc3NhZ2Uge1xuICByZXR1cm4ge1xuICAgIHRvOiBtZXNzYWdlLnRvLFxuICAgIGZyb206IG1lc3NhZ2UuZnJvbSxcbiAgICBwYXlsb2FkOiBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShtZXNzYWdlLnBheWxvYWQsICdiYXNlNjQnKSksXG4gICAgY29tbWl0bWVudDogbWVzc2FnZS5jb21taXRtZW50ID8gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20obWVzc2FnZS5jb21taXRtZW50LCAnaGV4JykpIDogdW5kZWZpbmVkLFxuICB9O1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBhIEJyb2FkY2FzdCBtZXNzYWdlLlxuICogQHBhcmFtIG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplQnJvYWRjYXN0TWVzc2FnZShtZXNzYWdlOiBTZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZSk6IERlc2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2Uge1xuICByZXR1cm4ge1xuICAgIGZyb206IG1lc3NhZ2UuZnJvbSxcbiAgICBwYXlsb2FkOiBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShtZXNzYWdlLnBheWxvYWQsICdiYXNlNjQnKSksXG4gICAgc2lnbmF0dXJlUjogbWVzc2FnZS5zaWduYXR1cmVSID8gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20obWVzc2FnZS5zaWduYXR1cmVSLCAnYmFzZTY0JykpIDogdW5kZWZpbmVkLFxuICB9O1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgYSBQMlAgbWVzc2FnZS5cbiAqIEBwYXJhbSBtZXNzYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVQMlBNZXNzYWdlKG1lc3NhZ2U6IERlc2VyaWFsaXplZFAyUE1lc3NhZ2UpOiBTZXJpYWxpemVkUDJQTWVzc2FnZSB7XG4gIHJldHVybiB7XG4gICAgdG86IG1lc3NhZ2UudG8sXG4gICAgZnJvbTogbWVzc2FnZS5mcm9tLFxuICAgIHBheWxvYWQ6IEJ1ZmZlci5mcm9tKG1lc3NhZ2UucGF5bG9hZCkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIGNvbW1pdG1lbnQ6IG1lc3NhZ2UuY29tbWl0bWVudCA/IEJ1ZmZlci5mcm9tKG1lc3NhZ2UuY29tbWl0bWVudCkudG9TdHJpbmcoJ2hleCcpIDogdW5kZWZpbmVkLFxuICB9O1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgYSBCcm9hZGNhc3QgbWVzc2FnZS5cbiAqIEBwYXJhbSBtZXNzYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVCcm9hZGNhc3RNZXNzYWdlKG1lc3NhZ2U6IERlc2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2UpOiBTZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZSB7XG4gIHJldHVybiB7XG4gICAgZnJvbTogbWVzc2FnZS5mcm9tLFxuICAgIHBheWxvYWQ6IEJ1ZmZlci5mcm9tKG1lc3NhZ2UucGF5bG9hZCkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIHNpZ25hdHVyZVI6IG1lc3NhZ2Uuc2lnbmF0dXJlUiA/IEJ1ZmZlci5mcm9tKG1lc3NhZ2Uuc2lnbmF0dXJlUikudG9TdHJpbmcoJ2Jhc2U2NCcpIDogdW5kZWZpbmVkLFxuICB9O1xufVxuXG4vKipcbiAqIEdldHMgY29tbW9ua2V5Q2hhaW4gZnJvbSBES0xTIGtleVNoYXJlXG4gKiBAcGFyYW0ge0J1ZmZlcn0ga2V5U2hhcmUgLSBES0xTIGtleVNoYXJlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBjb21tb25LZXljaGFpblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tbW9uS2V5Y2hhaW4oa2V5U2hhcmU6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnNlZEtleVNoYXJlID0gZGVjb2RlKGtleVNoYXJlKTtcbiAgYXNzZXJ0KHBhcnNlZEtleVNoYXJlLnB1YmxpY19rZXksICdwdWJsaWNfa2V5IG5vdCBmb3VuZCBpbiBrZXlTaGFyZScpO1xuICBhc3NlcnQocGFyc2VkS2V5U2hhcmUucm9vdF9jaGFpbl9jb2RlLCAncm9vdF9jaGFpbl9jb2RlIG5vdCBmb3VuZCBpbiBwdWJsaWNfa2V5Jyk7XG4gIGNvbnN0IHB1YmxpY0tleSA9IEJ1ZmZlci5mcm9tKHBhcnNlZEtleVNoYXJlLnB1YmxpY19rZXkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgY29uc3Qgcm9vdENoYWluQ29kZSA9IEJ1ZmZlci5mcm9tKHBhcnNlZEtleVNoYXJlLnJvb3RfY2hhaW5fY29kZSkudG9TdHJpbmcoJ2hleCcpO1xuICByZXR1cm4gcHVibGljS2V5ICsgcm9vdENoYWluQ29kZTtcbn1cbiJdfQ==
|
|
147
|
+
function getDecodedReducedKeyShare(reducedKeyShare) {
|
|
148
|
+
const decoded = exports.ReducedKeyShareType.decode((0, cbor_x_1.decode)(reducedKeyShare));
|
|
149
|
+
if ((0, Either_1.isLeft)(decoded)) {
|
|
150
|
+
throw new Error(`Unable to parse reducedKeyShare: ${decoded.left}`);
|
|
151
|
+
}
|
|
152
|
+
return decoded.right;
|
|
153
|
+
}
|
|
154
|
+
exports.getDecodedReducedKeyShare = getDecodedReducedKeyShare;
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VjZHNhLWRrbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsbUNBQWdDO0FBQ2hDLHlDQUEyQjtBQUUzQix5Q0FBc0M7QUFpQnRDLElBQVksUUFRWDtBQVJELFdBQVksUUFBUTtJQUNsQix5REFBaUIsQ0FBQTtJQUNqQiwyQ0FBTSxDQUFBO0lBQ04sMkNBQU0sQ0FBQTtJQUNOLDJDQUFNLENBQUE7SUFDTiwyQ0FBTSxDQUFBO0lBQ04sK0NBQVEsQ0FBQTtJQUNSLHVEQUFZLENBQUE7QUFDZCxDQUFDLEVBUlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFRbkI7QUFFRCxJQUFZLFFBUVg7QUFSRCxXQUFZLFFBQVE7SUFDbEIseURBQWlCLENBQUE7SUFDakIsMkNBQU0sQ0FBQTtJQUNOLDJDQUFNLENBQUE7SUFDTiwyQ0FBTSxDQUFBO0lBQ04sMkNBQU0sQ0FBQTtJQUNOLCtDQUFRLENBQUE7SUFDUix1REFBWSxDQUFBO0FBQ2QsQ0FBQyxFQVJXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBUW5CO0FBd0JZLFFBQUEsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2hDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxN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UUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0tBQ2hHLENBQUM7QUFDSixDQUFDO0FBTkQsOERBTUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsUUFBZ0I7SUFDaEQsTUFBTSxjQUFjLEdBQUcsSUFBQSxlQUFNLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsSUFBQSxnQkFBTSxFQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztJQUN0RSxJQUFBLGdCQUFNLEVBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSx5Q0FBeUMsQ0FBQyxDQUFDO0lBQ2xGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEYsT0FBTyxTQUFTLEdBQUcsYUFBYSxDQUFDO0FBQ25DLENBQUM7QUFQRCw4Q0FPQztBQUVELFNBQWdCLHlCQUF5QixDQUFDLGVBQW9DO0lBQzVFLE1BQU0sT0FBTyxHQUFHLDJCQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFBLGVBQU0sRUFBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLElBQUksSUFBQSxlQUFNLEVBQUMsT0FBTyxDQUFDLEVBQUU7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7S0FDckU7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDdkIsQ0FBQztBQU5ELDhEQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnY2Jvci14JztcbmltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0IHsgWFNoYXJlIH0gZnJvbSAnLi4vZWNkc2EvdHlwZXMnO1xuaW1wb3J0IHsgaXNMZWZ0IH0gZnJvbSAnZnAtdHMvRWl0aGVyJztcblxuLy8gQnJvYWRjYXN0IG1lc3NhZ2UgbWVhbnQgdG8gYmUgc2VudCB0byBtdWx0aXBsZSBwYXJ0aWVzXG5pbnRlcmZhY2UgQnJvYWRjYXN0TWVzc2FnZTxUPiB7XG4gIHBheWxvYWQ6IFQ7XG4gIGZyb206IG51bWJlcjtcbiAgc2lnbmF0dXJlUj86IFQ7XG59XG5cbi8vIFAyUCBtZXNzYWdlIG1lYW50IHRvIGJlIHNlbnQgdG8gYSBzcGVjaWZpYyBwYXJ0eVxuaW50ZXJmYWNlIFAyUE1lc3NhZ2U8VCwgRz4ge1xuICBwYXlsb2FkOiBUO1xuICBmcm9tOiBudW1iZXI7XG4gIGNvbW1pdG1lbnQ/OiBHO1xuICB0bzogbnVtYmVyO1xufVxuXG5leHBvcnQgZW51bSBEa2dTdGF0ZSB7XG4gIFVuaW5pdGlhbGl6ZWQgPSAwLFxuICBSb3VuZDEsXG4gIFJvdW5kMixcbiAgUm91bmQzLFxuICBSb3VuZDQsXG4gIENvbXBsZXRlLFxuICBJbnZhbGlkU3RhdGUsXG59XG5cbmV4cG9ydCBlbnVtIERzZ1N0YXRlIHtcbiAgVW5pbml0aWFsaXplZCA9IDAsXG4gIFJvdW5kMSxcbiAgUm91bmQyLFxuICBSb3VuZDMsXG4gIFJvdW5kNCxcbiAgQ29tcGxldGUsXG4gIEludmFsaWRTdGF0ZSxcbn1cblxuZXhwb3J0IHR5cGUgQXV0aEVuY01lc3NhZ2UgPSB7XG4gIGVuY3J5cHRlZE1lc3NhZ2U6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgQXV0aE1lc3NhZ2UgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgUGFydHlHcGdLZXkgPSB7XG4gIHBhcnR5SWQ6IG51bWJlcjtcbiAgZ3BnS2V5OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRGtsc1NpZ25hdHVyZTxUPiA9IHtcbiAgUjogVDtcbiAgUzogVDtcbn07XG5leHBvcnQgdHlwZSBSZXRyb2ZpdERhdGEgPSB7XG4gIGJpZ1NpTGlzdDogc3RyaW5nW107XG4gIHhTaGFyZTogUGFydGlhbDxYU2hhcmU+O1xuICB4aUxpc3Q/OiBudW1iZXJbXVtdO1xufTtcblxuZXhwb3J0IGNvbnN0IFJlZHVjZWRLZXlTaGFyZVR5cGUgPSB0LnR5cGUoe1xuICBiaWdTTGlzdDogdC5hcnJheSh0LmFycmF5KHQubnVtYmVyKSksXG4gIHhMaXN0OiB0LmFycmF5KHQuYXJyYXkodC5udW1iZXIpKSxcbiAgcm9vdENoYWluQ29kZTogdC5hcnJheSh0Lm51bWJlciksXG4gIHBydjogdC5hcnJheSh0Lm51bWJlciksXG4gIHB1YjogdC5hcnJheSh0Lm51bWJlciksXG59KTtcblxuZXhwb3J0IHR5cGUgUmVkdWNlZEtleVNoYXJlID0gdC5UeXBlT2Y8dHlwZW9mIFJlZHVjZWRLZXlTaGFyZVR5cGU+O1xuXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZSA9IEJyb2FkY2FzdE1lc3NhZ2U8c3RyaW5nPjtcbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2UgPSBCcm9hZGNhc3RNZXNzYWdlPFVpbnQ4QXJyYXk+O1xuZXhwb3J0IHR5cGUgU2VyaWFsaXplZFAyUE1lc3NhZ2UgPSBQMlBNZXNzYWdlPHN0cmluZywgc3RyaW5nPjtcbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZFAyUE1lc3NhZ2UgPSBQMlBNZXNzYWdlPFVpbnQ4QXJyYXksIFVpbnQ4QXJyYXk+O1xuZXhwb3J0IHR5cGUgU2VyaWFsaXplZERrbHNTaWduYXR1cmUgPSBEa2xzU2lnbmF0dXJlPHN0cmluZz47XG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWREa2xzU2lnbmF0dXJlID0gRGtsc1NpZ25hdHVyZTxVaW50OEFycmF5PjtcbmV4cG9ydCB0eXBlIEF1dGhFbmNQMlBNZXNzYWdlID0gUDJQTWVzc2FnZTxBdXRoRW5jTWVzc2FnZSwgc3RyaW5nPjtcbmV4cG9ydCB0eXBlIEF1dGhCcm9hZGNhc3RNZXNzYWdlID0gQnJvYWRjYXN0TWVzc2FnZTxBdXRoTWVzc2FnZT47XG5leHBvcnQgdHlwZSBTZXJpYWxpemVkTWVzc2FnZXMgPSB7XG4gIHAycE1lc3NhZ2VzOiBTZXJpYWxpemVkUDJQTWVzc2FnZVtdO1xuICBicm9hZGNhc3RNZXNzYWdlczogU2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2VbXTtcbn07XG5leHBvcnQgdHlwZSBBdXRoRW5jTWVzc2FnZXMgPSB7XG4gIHAycE1lc3NhZ2VzOiBBdXRoRW5jUDJQTWVzc2FnZVtdO1xuICBicm9hZGNhc3RNZXNzYWdlczogQXV0aEJyb2FkY2FzdE1lc3NhZ2VbXTtcbn07XG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRNZXNzYWdlcyA9IHtcbiAgcDJwTWVzc2FnZXM6IERlc2VyaWFsaXplZFAyUE1lc3NhZ2VbXTtcbiAgYnJvYWRjYXN0TWVzc2FnZXM6IERlc2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2VbXTtcbn07XG5cbi8qKlxuICogU2VyaWFsaXplcyBtZXNzYWdlcyBwYXlsb2FkcyB0byBiYXNlNjQgc3RyaW5ncy5cbiAqIEBwYXJhbSBtZXNzYWdlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplTWVzc2FnZXMobWVzc2FnZXM6IERlc2VyaWFsaXplZE1lc3NhZ2VzKTogU2VyaWFsaXplZE1lc3NhZ2VzIHtcbiAgcmV0dXJuIHtcbiAgICBwMnBNZXNzYWdlczogbWVzc2FnZXMucDJwTWVzc2FnZXMubWFwKHNlcmlhbGl6ZVAyUE1lc3NhZ2UpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBtZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcy5tYXAoc2VyaWFsaXplQnJvYWRjYXN0TWVzc2FnZSksXG4gIH07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgbWVzc2FnZXMgcGF5bG9hZHMgdG8gVWludDhBcnJheS5cbiAqIEBwYXJhbSBtZXNzYWdlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVNZXNzYWdlcyhtZXNzYWdlczogU2VyaWFsaXplZE1lc3NhZ2VzKTogRGVzZXJpYWxpemVkTWVzc2FnZXMge1xuICByZXR1cm4ge1xuICAgIHAycE1lc3NhZ2VzOiBtZXNzYWdlcy5wMnBNZXNzYWdlcy5tYXAoZGVzZXJpYWxpemVQMlBNZXNzYWdlKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogbWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMubWFwKGRlc2VyaWFsaXplQnJvYWRjYXN0TWVzc2FnZSksXG4gIH07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGEgUDJQIG1lc3NhZ2UuXG4gKiBAcGFyYW0gbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVQMlBNZXNzYWdlKG1lc3NhZ2U6IFNlcmlhbGl6ZWRQMlBNZXNzYWdlKTogRGVzZXJpYWxpemVkUDJQTWVzc2FnZSB7XG4gIHJldHVybiB7XG4gICAgdG86IG1lc3NhZ2UudG8sXG4gICAgZnJvbTogbWVzc2FnZS5mcm9tLFxuICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKG1lc3NhZ2UucGF5bG9hZCwgJ2Jhc2U2NCcpKSxcbiAgICBjb21taXRtZW50OiBtZXNzYWdlLmNvbW1pdG1lbnQgPyBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShtZXNzYWdlLmNvbW1pdG1lbnQsICdoZXgnKSkgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGEgQnJvYWRjYXN0IG1lc3NhZ2UuXG4gKiBAcGFyYW0gbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVCcm9hZGNhc3RNZXNzYWdlKG1lc3NhZ2U6IFNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlKTogRGVzZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZSB7XG4gIHJldHVybiB7XG4gICAgZnJvbTogbWVzc2FnZS5mcm9tLFxuICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKG1lc3NhZ2UucGF5bG9hZCwgJ2Jhc2U2NCcpKSxcbiAgICBzaWduYXR1cmVSOiBtZXNzYWdlLnNpZ25hdHVyZVIgPyBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShtZXNzYWdlLnNpZ25hdHVyZVIsICdiYXNlNjQnKSkgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBhIFAyUCBtZXNzYWdlLlxuICogQHBhcmFtIG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZVAyUE1lc3NhZ2UobWVzc2FnZTogRGVzZXJpYWxpemVkUDJQTWVzc2FnZSk6IFNlcmlhbGl6ZWRQMlBNZXNzYWdlIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogbWVzc2FnZS50byxcbiAgICBmcm9tOiBtZXNzYWdlLmZyb20sXG4gICAgcGF5bG9hZDogQnVmZmVyLmZyb20obWVzc2FnZS5wYXlsb2FkKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgY29tbWl0bWVudDogbWVzc2FnZS5jb21taXRtZW50ID8gQnVmZmVyLmZyb20obWVzc2FnZS5jb21taXRtZW50KS50b1N0cmluZygnaGV4JykgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBhIEJyb2FkY2FzdCBtZXNzYWdlLlxuICogQHBhcmFtIG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUJyb2FkY2FzdE1lc3NhZ2UobWVzc2FnZTogRGVzZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZSk6IFNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlIHtcbiAgcmV0dXJuIHtcbiAgICBmcm9tOiBtZXNzYWdlLmZyb20sXG4gICAgcGF5bG9hZDogQnVmZmVyLmZyb20obWVzc2FnZS5wYXlsb2FkKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgc2lnbmF0dXJlUjogbWVzc2FnZS5zaWduYXR1cmVSID8gQnVmZmVyLmZyb20obWVzc2FnZS5zaWduYXR1cmVSKS50b1N0cmluZygnYmFzZTY0JykgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogR2V0cyBjb21tb25rZXlDaGFpbiBmcm9tIERLTFMga2V5U2hhcmVcbiAqIEBwYXJhbSB7QnVmZmVyfSBrZXlTaGFyZSAtIERLTFMga2V5U2hhcmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IGNvbW1vbktleWNoYWluIGluIGhleCBmb3JtYXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbW1vbktleWNoYWluKGtleVNoYXJlOiBCdWZmZXIpOiBzdHJpbmcge1xuICBjb25zdCBwYXJzZWRLZXlTaGFyZSA9IGRlY29kZShrZXlTaGFyZSk7XG4gIGFzc2VydChwYXJzZWRLZXlTaGFyZS5wdWJsaWNfa2V5LCAncHVibGljX2tleSBub3QgZm91bmQgaW4ga2V5U2hhcmUnKTtcbiAgYXNzZXJ0KHBhcnNlZEtleVNoYXJlLnJvb3RfY2hhaW5fY29kZSwgJ3Jvb3RfY2hhaW5fY29kZSBub3QgZm91bmQgaW4gcHVibGljX2tleScpO1xuICBjb25zdCBwdWJsaWNLZXkgPSBCdWZmZXIuZnJvbShwYXJzZWRLZXlTaGFyZS5wdWJsaWNfa2V5KS50b1N0cmluZygnaGV4Jyk7XG4gIGNvbnN0IHJvb3RDaGFpbkNvZGUgPSBCdWZmZXIuZnJvbShwYXJzZWRLZXlTaGFyZS5yb290X2NoYWluX2NvZGUpLnRvU3RyaW5nKCdoZXgnKTtcbiAgcmV0dXJuIHB1YmxpY0tleSArIHJvb3RDaGFpbkNvZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWNvZGVkUmVkdWNlZEtleVNoYXJlKHJlZHVjZWRLZXlTaGFyZTogQnVmZmVyIHwgVWludDhBcnJheSk6IFJlZHVjZWRLZXlTaGFyZSB7XG4gIGNvbnN0IGRlY29kZWQgPSBSZWR1Y2VkS2V5U2hhcmVUeXBlLmRlY29kZShkZWNvZGUocmVkdWNlZEtleVNoYXJlKSk7XG4gIGlmIChpc0xlZnQoZGVjb2RlZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSByZWR1Y2VkS2V5U2hhcmU6ICR7ZGVjb2RlZC5sZWZ0fWApO1xuICB9XG4gIHJldHVybiBkZWNvZGVkLnJpZ2h0O1xufVxuIl19
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
|
-
import { DeserializedDklsSignature } from './types';
|
|
3
|
+
import { DeserializedDklsSignature, DeserializedMessages, RetrofitData } from './types';
|
|
4
4
|
import { Hash } from 'crypto';
|
|
5
|
+
import { Dsg } from './dsg';
|
|
6
|
+
import { Dkg } from './dkg';
|
|
5
7
|
/**
|
|
6
8
|
* Combines partial signatures from parties participating in DSG.
|
|
7
9
|
* @param round4MessagePayloads - round 4 message payloads from participating parties
|
|
@@ -20,4 +22,7 @@ export declare function combinePartialSignatures(round4MessagePayloads: Uint8Arr
|
|
|
20
22
|
* @returns {string} - serialized signature in `recid:r:s:publickey` format
|
|
21
23
|
*/
|
|
22
24
|
export declare function verifyAndConvertDklsSignature(message: Buffer, dklsSignature: DeserializedDklsSignature, commonKeychain: string, derivationPath?: string, hash?: Hash, shouldHash?: boolean): string;
|
|
25
|
+
export declare function executeTillRound(round: number, party1Dsg: Dsg, party2Dsg: Dsg): Promise<DeserializedMessages[] | DeserializedDklsSignature>;
|
|
26
|
+
export declare function generateDKGKeyShares(retrofitDataA?: RetrofitData, retrofitDataB?: RetrofitData, retrofitDataC?: RetrofitData): Promise<[Dkg, Dkg, Dkg]>;
|
|
27
|
+
export declare function generate2of2KeyShares(retrofitDataA?: RetrofitData, retrofitDataB?: RetrofitData): Promise<[Dkg, Dkg]>;
|
|
23
28
|
//# sourceMappingURL=util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/util.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/util.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGxF,OAAO,EAAc,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAK5B;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,qBAAqB,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,yBAAyB,CAgBrH;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,yBAAyB,EACxC,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,EACvB,IAAI,CAAC,EAAE,IAAI,EACX,UAAU,UAAO,GAChB,MAAM,CA6BR;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,oBAAoB,EAAE,GAAG,yBAAyB,CAAC,CAgD7D;AAED,wBAAsB,oBAAoB,CACxC,aAAa,CAAC,EAAE,YAAY,EAC5B,aAAa,CAAC,EAAE,YAAY,EAC5B,aAAa,CAAC,EAAE,YAAY,GAC3B,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAoE1B;AAED,wBAAsB,qBAAqB,CACzC,aAAa,CAAC,EAAE,YAAY,EAC5B,aAAa,CAAC,EAAE,YAAY,GAC3B,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAsCrB"}
|
|
@@ -22,14 +22,19 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.verifyAndConvertDklsSignature = exports.combinePartialSignatures = void 0;
|
|
27
|
-
const secp256k1_1 = require("@noble/secp256k1");
|
|
29
|
+
exports.generate2of2KeyShares = exports.generateDKGKeyShares = exports.executeTillRound = exports.verifyAndConvertDklsSignature = exports.combinePartialSignatures = void 0;
|
|
30
|
+
const secp256k1_1 = require("@noble/curves/secp256k1");
|
|
28
31
|
const curves_1 = require("../../curves");
|
|
29
32
|
const util_1 = require("../../util");
|
|
30
33
|
const cbor_x_1 = require("cbor-x");
|
|
31
34
|
const secp256k1 = __importStar(require("secp256k1"));
|
|
32
35
|
const crypto_1 = require("crypto");
|
|
36
|
+
const dkg_1 = require("./dkg");
|
|
37
|
+
const assert_1 = __importDefault(require("assert"));
|
|
33
38
|
const delimeter = ':';
|
|
34
39
|
/**
|
|
35
40
|
* Combines partial signatures from parties participating in DSG.
|
|
@@ -47,7 +52,7 @@ function combinePartialSignatures(round4MessagePayloads, rHex) {
|
|
|
47
52
|
const s0Sum = s0BigInts.slice(1).reduce((sumSoFar, s0) => secp256k1Curve.scalarAdd(sumSoFar, s0), s0BigInts[0]);
|
|
48
53
|
const s1Sum = s1BigInts.slice(1).reduce((sumSoFar, s1) => secp256k1Curve.scalarAdd(sumSoFar, s1), s1BigInts[0]);
|
|
49
54
|
const s = secp256k1Curve.scalarMult(s0Sum, secp256k1Curve.scalarInvert(s1Sum));
|
|
50
|
-
const sig = new secp256k1_1.Signature(r, s);
|
|
55
|
+
const sig = new secp256k1_1.secp256k1.Signature(r, s);
|
|
51
56
|
const normalizedSig = sig.normalizeS();
|
|
52
57
|
return {
|
|
53
58
|
R: new Uint8Array((0, util_1.bigIntToBufferBE)(normalizedSig.r, 32)),
|
|
@@ -94,4 +99,163 @@ function verifyAndConvertDklsSignature(message, dklsSignature, commonKeychain, d
|
|
|
94
99
|
return `${recId}${delimeter}${Buffer.from(dklsSignature.R).toString('hex')}${delimeter}${Buffer.from(dklsSignature.S).toString('hex')}${delimeter}${truePub}`;
|
|
95
100
|
}
|
|
96
101
|
exports.verifyAndConvertDklsSignature = verifyAndConvertDklsSignature;
|
|
97
|
-
|
|
102
|
+
async function executeTillRound(round, party1Dsg, party2Dsg) {
|
|
103
|
+
if (round < 1 || round > 5) {
|
|
104
|
+
throw Error('Invalid round number');
|
|
105
|
+
}
|
|
106
|
+
const party1Round1Message = await party1Dsg.init();
|
|
107
|
+
const party2Round1Message = await party2Dsg.init();
|
|
108
|
+
const party2Round2Messages = party2Dsg.handleIncomingMessages({
|
|
109
|
+
p2pMessages: [],
|
|
110
|
+
broadcastMessages: [party1Round1Message],
|
|
111
|
+
});
|
|
112
|
+
const party1Round2Messages = party1Dsg.handleIncomingMessages({
|
|
113
|
+
p2pMessages: [],
|
|
114
|
+
broadcastMessages: [party2Round1Message],
|
|
115
|
+
});
|
|
116
|
+
if (round === 2)
|
|
117
|
+
return [party1Round2Messages, party2Round2Messages];
|
|
118
|
+
const party1Round3Messages = party1Dsg.handleIncomingMessages({
|
|
119
|
+
p2pMessages: party2Round2Messages.p2pMessages,
|
|
120
|
+
broadcastMessages: [],
|
|
121
|
+
});
|
|
122
|
+
const party2Round3Messages = party2Dsg.handleIncomingMessages({
|
|
123
|
+
p2pMessages: party1Round2Messages.p2pMessages,
|
|
124
|
+
broadcastMessages: [],
|
|
125
|
+
});
|
|
126
|
+
if (round === 3)
|
|
127
|
+
return [party1Round3Messages, party2Round3Messages];
|
|
128
|
+
const party2Round4Messages = party2Dsg.handleIncomingMessages({
|
|
129
|
+
p2pMessages: party1Round3Messages.p2pMessages,
|
|
130
|
+
broadcastMessages: [],
|
|
131
|
+
});
|
|
132
|
+
const party1Round4Messages = party1Dsg.handleIncomingMessages({
|
|
133
|
+
p2pMessages: party2Round3Messages.p2pMessages,
|
|
134
|
+
broadcastMessages: [],
|
|
135
|
+
});
|
|
136
|
+
if (round === 4)
|
|
137
|
+
return [party1Round4Messages, party2Round4Messages];
|
|
138
|
+
party1Dsg.handleIncomingMessages({
|
|
139
|
+
p2pMessages: [],
|
|
140
|
+
broadcastMessages: party2Round4Messages.broadcastMessages,
|
|
141
|
+
});
|
|
142
|
+
party2Dsg.handleIncomingMessages({
|
|
143
|
+
p2pMessages: [],
|
|
144
|
+
broadcastMessages: party1Round4Messages.broadcastMessages,
|
|
145
|
+
});
|
|
146
|
+
(0, assert_1.default)(Buffer.from(party1Dsg.signature.R).toString('hex') === Buffer.from(party2Dsg.signature.R).toString('hex'));
|
|
147
|
+
(0, assert_1.default)(Buffer.from(party1Dsg.signature.S).toString('hex') === Buffer.from(party2Dsg.signature.S).toString('hex'));
|
|
148
|
+
return party1Dsg.signature;
|
|
149
|
+
}
|
|
150
|
+
exports.executeTillRound = executeTillRound;
|
|
151
|
+
async function generateDKGKeyShares(retrofitDataA, retrofitDataB, retrofitDataC) {
|
|
152
|
+
const user = new dkg_1.Dkg(3, 2, 0, retrofitDataA);
|
|
153
|
+
const backup = new dkg_1.Dkg(3, 2, 1, retrofitDataB);
|
|
154
|
+
const bitgo = new dkg_1.Dkg(3, 2, 2, retrofitDataC);
|
|
155
|
+
const userRound1Message = await user.initDkg();
|
|
156
|
+
const backupRound1Message = await backup.initDkg();
|
|
157
|
+
const bitgoRound1Message = await bitgo.initDkg();
|
|
158
|
+
const userRound2Messages = user.handleIncomingMessages({
|
|
159
|
+
p2pMessages: [],
|
|
160
|
+
broadcastMessages: [bitgoRound1Message, backupRound1Message],
|
|
161
|
+
});
|
|
162
|
+
const backupRound2Messages = backup.handleIncomingMessages({
|
|
163
|
+
p2pMessages: [],
|
|
164
|
+
broadcastMessages: [userRound1Message, bitgoRound1Message],
|
|
165
|
+
});
|
|
166
|
+
const bitgoRound2Messages = bitgo.handleIncomingMessages({
|
|
167
|
+
p2pMessages: [],
|
|
168
|
+
broadcastMessages: [userRound1Message, backupRound1Message],
|
|
169
|
+
});
|
|
170
|
+
const userRound3Messages = user.handleIncomingMessages({
|
|
171
|
+
p2pMessages: backupRound2Messages.p2pMessages
|
|
172
|
+
.filter((m) => m.to === 0)
|
|
173
|
+
.concat(bitgoRound2Messages.p2pMessages.filter((m) => m.to === 0)),
|
|
174
|
+
broadcastMessages: [],
|
|
175
|
+
});
|
|
176
|
+
const backupRound3Messages = backup.handleIncomingMessages({
|
|
177
|
+
p2pMessages: bitgoRound2Messages.p2pMessages
|
|
178
|
+
.filter((m) => m.to === 1)
|
|
179
|
+
.concat(userRound2Messages.p2pMessages.filter((m) => m.to === 1)),
|
|
180
|
+
broadcastMessages: [],
|
|
181
|
+
});
|
|
182
|
+
const bitgoRound3Messages = bitgo.handleIncomingMessages({
|
|
183
|
+
p2pMessages: backupRound2Messages.p2pMessages
|
|
184
|
+
.filter((m) => m.to === 2)
|
|
185
|
+
.concat(userRound2Messages.p2pMessages.filter((m) => m.to === 2)),
|
|
186
|
+
broadcastMessages: [],
|
|
187
|
+
});
|
|
188
|
+
const userRound4Messages = user.handleIncomingMessages({
|
|
189
|
+
p2pMessages: backupRound3Messages.p2pMessages
|
|
190
|
+
.filter((m) => m.to === 0)
|
|
191
|
+
.concat(bitgoRound3Messages.p2pMessages.filter((m) => m.to === 0)),
|
|
192
|
+
broadcastMessages: [],
|
|
193
|
+
});
|
|
194
|
+
const backupRound4Messages = backup.handleIncomingMessages({
|
|
195
|
+
p2pMessages: bitgoRound3Messages.p2pMessages
|
|
196
|
+
.filter((m) => m.to === 1)
|
|
197
|
+
.concat(userRound3Messages.p2pMessages.filter((m) => m.to === 1)),
|
|
198
|
+
broadcastMessages: [],
|
|
199
|
+
});
|
|
200
|
+
const bitgoRound4Messages = bitgo.handleIncomingMessages({
|
|
201
|
+
p2pMessages: backupRound3Messages.p2pMessages
|
|
202
|
+
.filter((m) => m.to === 2)
|
|
203
|
+
.concat(userRound3Messages.p2pMessages.filter((m) => m.to === 2)),
|
|
204
|
+
broadcastMessages: [],
|
|
205
|
+
});
|
|
206
|
+
user.handleIncomingMessages({
|
|
207
|
+
p2pMessages: [],
|
|
208
|
+
broadcastMessages: bitgoRound4Messages.broadcastMessages.concat(backupRound4Messages.broadcastMessages),
|
|
209
|
+
});
|
|
210
|
+
bitgo.handleIncomingMessages({
|
|
211
|
+
p2pMessages: [],
|
|
212
|
+
broadcastMessages: backupRound4Messages.broadcastMessages.concat(userRound4Messages.broadcastMessages),
|
|
213
|
+
});
|
|
214
|
+
backup.handleIncomingMessages({
|
|
215
|
+
p2pMessages: [],
|
|
216
|
+
broadcastMessages: bitgoRound4Messages.broadcastMessages.concat(userRound4Messages.broadcastMessages),
|
|
217
|
+
});
|
|
218
|
+
return [user, backup, bitgo];
|
|
219
|
+
}
|
|
220
|
+
exports.generateDKGKeyShares = generateDKGKeyShares;
|
|
221
|
+
async function generate2of2KeyShares(retrofitDataA, retrofitDataB) {
|
|
222
|
+
const partyA = new dkg_1.Dkg(2, 2, 0, retrofitDataA);
|
|
223
|
+
const partyB = new dkg_1.Dkg(2, 2, 1, retrofitDataB);
|
|
224
|
+
const partyARound1Message = await partyA.initDkg();
|
|
225
|
+
const partyBRound1Message = await partyB.initDkg();
|
|
226
|
+
const partyARound2Messages = partyA.handleIncomingMessages({
|
|
227
|
+
p2pMessages: [],
|
|
228
|
+
broadcastMessages: [partyBRound1Message],
|
|
229
|
+
});
|
|
230
|
+
const partyBRound2Messages = partyB.handleIncomingMessages({
|
|
231
|
+
p2pMessages: [],
|
|
232
|
+
broadcastMessages: [partyARound1Message],
|
|
233
|
+
});
|
|
234
|
+
const partyARound3Messages = partyA.handleIncomingMessages({
|
|
235
|
+
p2pMessages: partyBRound2Messages.p2pMessages.filter((m) => m.to === 0),
|
|
236
|
+
broadcastMessages: [],
|
|
237
|
+
});
|
|
238
|
+
const partyBRound3Messages = partyB.handleIncomingMessages({
|
|
239
|
+
p2pMessages: partyARound2Messages.p2pMessages.filter((m) => m.to === 1),
|
|
240
|
+
broadcastMessages: [],
|
|
241
|
+
});
|
|
242
|
+
const partyARound4Messages = partyA.handleIncomingMessages({
|
|
243
|
+
p2pMessages: partyBRound3Messages.p2pMessages.filter((m) => m.to === 0),
|
|
244
|
+
broadcastMessages: [],
|
|
245
|
+
});
|
|
246
|
+
const partyBRound4Messages = partyB.handleIncomingMessages({
|
|
247
|
+
p2pMessages: partyARound3Messages.p2pMessages.filter((m) => m.to === 1),
|
|
248
|
+
broadcastMessages: [],
|
|
249
|
+
});
|
|
250
|
+
partyA.handleIncomingMessages({
|
|
251
|
+
p2pMessages: [],
|
|
252
|
+
broadcastMessages: partyBRound4Messages.broadcastMessages,
|
|
253
|
+
});
|
|
254
|
+
partyB.handleIncomingMessages({
|
|
255
|
+
p2pMessages: [],
|
|
256
|
+
broadcastMessages: partyARound4Messages.broadcastMessages,
|
|
257
|
+
});
|
|
258
|
+
return [partyA, partyB];
|
|
259
|
+
}
|
|
260
|
+
exports.generate2of2KeyShares = generate2of2KeyShares;
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZWNkc2EtZGtscy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQTREO0FBQzVELHlDQUE0RTtBQUM1RSxxQ0FBa0U7QUFFbEUsbUNBQWdDO0FBQ2hDLHFEQUF1QztBQUN2QyxtQ0FBMEM7QUFFMUMsK0JBQTRCO0FBQzVCLG9EQUE0QjtBQUU1QixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUM7QUFFdEI7Ozs7O0dBS0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxxQkFBbUMsRUFBRSxJQUFZO0lBQ3hGLE1BQU0sQ0FBQyxHQUFHLElBQUEseUJBQWtCLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxLQUFLLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLGVBQU0sRUFBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5RCxNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsZUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUEseUJBQWtCLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBQSx5QkFBa0IsRUFBQyxNQUFNLENBQUMs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ZS9jdXJ2ZXMvc2VjcDI1NmsxJztcbmltcG9ydCB7IEhEVHJlZSwgU2VjcDI1NmsxQmlwMzJIZFRyZWUsIFNlY3AyNTZrMUN1cnZlIH0gZnJvbSAnLi4vLi4vY3VydmVzJztcbmltcG9ydCB7IGJpZ0ludEZyb21CdWZmZXJCRSwgYmlnSW50VG9CdWZmZXJCRSB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgRGVzZXJpYWxpemVkRGtsc1NpZ25hdHVyZSwgRGVzZXJpYWxpemVkTWVzc2FnZXMsIFJldHJvZml0RGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnY2Jvci14JztcbmltcG9ydCAqIGFzIHNlY3AyNTZrMSBmcm9tICdzZWNwMjU2azEnO1xuaW1wb3J0IHsgY3JlYXRlSGFzaCwgSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBEc2cgfSBmcm9tICcuL2RzZyc7XG5pbXBvcnQgeyBEa2cgfSBmcm9tICcuL2RrZyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmNvbnN0IGRlbGltZXRlciA9ICc6JztcblxuLyoqXG4gKiBDb21iaW5lcyBwYXJ0aWFsIHNpZ25hdHVyZXMgZnJvbSBwYXJ0aWVzIHBhcnRpY2lwYXRpbmcgaW4gRFNHLlxuICogQHBhcmFtIHJvdW5kNE1lc3NhZ2VQYXlsb2FkcyAtIHJvdW5kIDQgbWVzc2FnZSBwYXlsb2FkcyBmcm9tIHBhcnRpY2lwYXRpbmcgcGFydGllc1xuICogQHBhcmFtIHJIZXggLSBoZXggcmVwcmVzZW50YXRpb24gb2YgdGhlIHIgdmFsdWUgaW4gdGhlIHNpZ25hdHVyZVxuICogQHJldHVybnMge0Rlc2VyaWFsaXplZE1lc3NhZ2VzfSAtIG1lc3NhZ2VzIHRvIHNlbmQgdG8gb3RoZXIgcGFydGllcyBmb3IgdGhlIG5leHQgcm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVQYXJ0aWFsU2lnbmF0dXJlcyhyb3VuZDRNZXNzYWdlUGF5bG9hZHM6IFVpbnQ4QXJyYXlbXSwgckhleDogc3RyaW5nKTogRGVzZXJpYWxpemVkRGtsc1NpZ25hdHVyZSB7XG4gIGNvbnN0IHIgPSBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20ockhleCwgJ2hleCcpLnN1YmFycmF5KDEpKTtcbiAgY29uc3QgczBBcnIgPSByb3VuZDRNZXNzYWdlUGF5bG9hZHMubWFwKChwKSA9PiBkZWNvZGUocCkuc18wKTtcbiAgY29uc3QgczFBcnIgPSByb3VuZDRNZXNzYWdlUGF5bG9hZHMubWFwKChwKSA9PiBkZWNvZGUocCkuc18xKTtcbiAgY29uc3QgczBCaWdJbnRzID0gczBBcnIubWFwKChzMCkgPT4gYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKHMwKSkpO1xuICBjb25zdCBzMUJpZ0ludHMgPSBzMUFyci5tYXAoKHMxKSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oczEpKSk7XG4gIGNvbnN0IHNlY3AyNTZrMUN1cnZlID0gbmV3IFNlY3AyNTZrMUN1cnZlKCk7XG4gIGNvbnN0IHMwU3VtID0gczBCaWdJbnRzLnNsaWNlKDEpLnJlZHVjZSgoc3VtU29GYXIsIHMwKSA9PiBzZWNwMjU2azFDdXJ2ZS5zY2FsYXJBZGQoc3VtU29GYXIsIHMwKSwgczBCaWdJbnRzWzBdKTtcbiAgY29uc3QgczFTdW0gPSBzMUJpZ0ludHMuc2xpY2UoMSkucmVkdWNlKChzdW1Tb0ZhciwgczEpID0+IHNlY3AyNTZrMUN1cnZlLnNjYWxhckFkZChzdW1Tb0ZhciwgczEpLCBzMUJpZ0ludHNbMF0pO1xuICBjb25zdCBzID0gc2VjcDI1NmsxQ3VydmUuc2NhbGFyTXVsdChzMFN1bSwgc2VjcDI1NmsxQ3VydmUuc2NhbGFySW52ZXJ0KHMxU3VtKSk7XG4gIGNvbnN0IHNpZyA9IG5ldyBzZWNwLlNpZ25hdHVyZShyLCBzKTtcbiAgY29uc3Qgbm9ybWFsaXplZFNpZyA9IHNpZy5ub3JtYWxpemVTKCk7XG4gIHJldHVybiB7XG4gICAgUjogbmV3IFVpbnQ4QXJyYXkoYmlnSW50VG9CdWZmZXJCRShub3JtYWxpemVkU2lnLnIsIDMyKSksXG4gICAgUzogbmV3IFVpbnQ4QXJyYXkoYmlnSW50VG9CdWZmZXJCRShub3JtYWxpemVkU2lnLnMsIDMyKSksXG4gIH07XG59XG5cbi8qKlxuICogVmVyaWZ5IGEgREtMcyBTaWduYXR1cmUgYW5kIHNlcmlhbGl6ZSBpdCB0byByZWNpZDpyOnM6cHVibGlja2V5IGZvcm1hdC5cbiAqIEBwYXJhbSBtZXNzYWdlIC0gbWVzc2FnZSB0aGF0IHdhcyBzaWduZWQuXG4gKiBAcGFyYW0gZGtsc1NpZ25hdHVyZSAtIFIgYW5kIFMgdmFsdWVzIG9mIHRoZSBFQ0RTQSBzaWduYXR1cmUuXG4gKiBAcGFyYW0gY29tbW9uS2V5Y2hhaW4gLSBwdWJsaWMga2V5IGFwcGVuZGVkIHRvIGNoYWluY29kZSBpbiBoZXguXG4gKiBAcGFyYW0gZGVyaXZhdGlvblBhdGggLSBvcHRpb25hbCBkZXJpdmF0aW9uIHBhdGggdG8gZGVyaXZlIG9uIHRoZSBjb21tb25rZXljaGFpbiBiZWZvcmUgdmVyaWZpY2F0aW9uLlxuICogQHBhcmFtIGhhc2ggLSBvcHRpb25hbCBoYXNoIGZ1bmN0aW9uIHRvIGFwcGx5IG9uIG1lc3NhZ2UgYmVmb3JlIHZlcmlmeWluZy4gRGVmYXVsdCBpcyBzaGEyNTYuXG4gKiBAcGFyYW0gc2hvdWxkSGFzaCAtIGZsYWcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgbWVzc2FnZSBzaG91bGQgYmUgaGFzaGVkIGJlZm9yZSB2ZXJpZnlpbmcuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIHNlcmlhbGl6ZWQgc2lnbmF0dXJlIGluIGByZWNpZDpyOnM6cHVibGlja2V5YCBmb3JtYXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeUFuZENvbnZlcnREa2xzU2lnbmF0dXJlKFxuICBtZXNzYWdlOiBCdWZmZXIsXG4gIGRrbHNTaWduYXR1cmU6IERlc2VyaWFsaXplZERrbHNTaWduYXR1cmUsXG4gIGNvbW1vbktleWNoYWluOiBzdHJpbmcsXG4gIGRlcml2YXRpb25QYXRoPzogc3RyaW5nLFxuICBoYXNoPzogSGFzaCxcbiAgc2hvdWxkSGFzaCA9IHRydWVcbik6IHN0cmluZyB7XG4gIGxldCB0cnVlUHViID0gJyc7XG4gIGlmIChkZXJpdmF0aW9uUGF0aCAmJiBkZXJpdmF0aW9uUGF0aCAhPT0gJ20nKSB7XG4gICAgY29uc3QgaGRUcmVlOiBIRFRyZWUgPSBuZXcgU2VjcDI1NmsxQmlwMzJIZFRyZWUoKTtcbiAgICBjb25zdCBkZXJpdmVkUHViID0gaGRUcmVlLnB1YmxpY0Rlcml2ZShcbiAgICAgIHtcbiAgICAgICAgcGs6IGJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShjb21tb25LZXljaGFpbi5zbGljZSgwLCA2NiksICdoZXgnKSksXG4gICAgICAgIGNoYWluY29kZTogYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGNvbW1vbktleWNoYWluLnNsaWNlKDY2KSwgJ2hleCcpKSxcbiAgICAgIH0sXG4gICAgICBkZXJpdmF0aW9uUGF0aFxuICAgICk7XG4gICAgdHJ1ZVB1YiA9IGJpZ0ludFRvQnVmZmVyQkUoZGVyaXZlZFB1Yi5waykudG9TdHJpbmcoJ2hleCcpO1xuICB9IGVsc2Uge1xuICAgIHRydWVQdWIgPSBjb21tb25LZXljaGFpbi5zbGljZSgwLCA2Nik7XG4gIH1cbiAgY29uc3QgbWVzc2FnZVRvVmVyaWZ5ID0gc2hvdWxkSGFzaCA/IChoYXNoIHx8IGNyZWF0ZUhhc2goJ3NoYTI1NicpKS51cGRhdGUobWVzc2FnZSkuZGlnZXN0KCkgOiBtZXNzYWdlO1xuICBjb25zdCBwdWIwID0gc2VjcDI1NmsxLmVjZHNhUmVjb3ZlcihCdWZmZXIuY29uY2F0KFtka2xzU2lnbmF0dXJlLlIsIGRrbHNTaWduYXR1cmUuU10pLCAwLCBtZXNzYWdlVG9WZXJpZnksIHRydWUpO1xuICBjb25zdCBwdWIxID0gc2VjcDI1NmsxLmVjZHNhUmVjb3ZlcihCdWZmZXIuY29uY2F0KFtka2xzU2lnbmF0dXJlLlIsIGRrbHNTaWduYXR1cmUuU10pLCAxLCBtZXNzYWdlVG9WZXJpZnksIHRydWUpO1xuICBsZXQgcmVjSWQ6IG51bWJlcjtcbiAgaWYgKHRydWVQdWIgPT09IEJ1ZmZlci5mcm9tKHB1YjApLnRvU3RyaW5nKCdoZXgnKSkge1xuICAgIHJlY0lkID0gMDtcbiAgfSBlbHNlIGlmICh0cnVlUHViID09PSBCdWZmZXIuZnJvbShwdWIxKS50b1N0cmluZygnaGV4JykpIHtcbiAgICByZWNJZCA9IDE7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3IoJ0ludmFsaWQgU2lnbmF0dXJlJyk7XG4gIH1cbiAgcmV0dXJuIGAke3JlY0lkfSR7ZGVsaW1ldGVyfSR7QnVmZmVyLmZyb20oZGtsc1NpZ25hdHVyZS5SKS50b1N0cmluZygnaGV4Jyl9JHtkZWxpbWV0ZXJ9JHtCdWZmZXIuZnJvbShcbiAgICBka2xzU2lnbmF0dXJlLlNcbiAgKS50b1N0cmluZygnaGV4Jyl9JHtkZWxpbWV0ZXJ9JHt0cnVlUHVifWA7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlVGlsbFJvdW5kKFxuICByb3VuZDogbnVtYmVyLFxuICBwYXJ0eTFEc2c6IERzZyxcbiAgcGFydHkyRHNnOiBEc2dcbik6IFByb21pc2U8RGVzZXJpYWxpemVkTWVzc2FnZXNbXSB8IERlc2VyaWFsaXplZERrbHNTaWduYXR1cmU+IHtcbiAgaWYgKHJvdW5kIDwgMSB8fCByb3VuZCA+IDUpIHtcbiAgICB0aHJvdyBFcnJvcignSW52YWxpZCByb3VuZCBudW1iZXInKTtcbiAgfVxuICBjb25zdCBwYXJ0eTFSb3VuZDFNZXNzYWdlID0gYXdhaXQgcGFydHkxRHNnLmluaXQoKTtcbiAgY29uc3QgcGFydHkyUm91bmQxTWVzc2FnZSA9IGF3YWl0IHBhcnR5MkRzZy5pbml0KCk7XG5cbiAgY29uc3QgcGFydHkyUm91bmQyTWVzc2FnZXMgPSBwYXJ0eTJEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbcGFydHkxUm91bmQxTWVzc2FnZV0sXG4gIH0pO1xuICBjb25zdCBwYXJ0eTFSb3VuZDJNZXNzYWdlcyA9IHBhcnR5MURzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtwYXJ0eTJSb3VuZDFNZXNzYWdlXSxcbiAgfSk7XG4gIGlmIChyb3VuZCA9PT0gMikgcmV0dXJuIFtwYXJ0eTFSb3VuZDJNZXNzYWdlcywgcGFydHkyUm91bmQyTWVzc2FnZXNdO1xuXG4gIGNvbnN0IHBhcnR5MVJvdW5kM01lc3NhZ2VzID0gcGFydHkxRHNnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBwYXJ0eTJSb3VuZDJNZXNzYWdlcy5wMnBNZXNzYWdlcyxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBjb25zdCBwYXJ0eTJSb3VuZDNNZXNzYWdlcyA9IHBhcnR5MkRzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogcGFydHkxUm91bmQyTWVzc2FnZXMucDJwTWVzc2FnZXMsXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgaWYgKHJvdW5kID09PSAzKSByZXR1cm4gW3BhcnR5MVJvdW5kM01lc3NhZ2VzLCBwYXJ0eTJSb3VuZDNNZXNzYWdlc107XG5cbiAgY29uc3QgcGFydHkyUm91bmQ0TWVzc2FnZXMgPSBwYXJ0eTJEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5MVJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGNvbnN0IHBhcnR5MVJvdW5kNE1lc3NhZ2VzID0gcGFydHkxRHNnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBwYXJ0eTJSb3VuZDNNZXNzYWdlcy5wMnBNZXNzYWdlcyxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBpZiAocm91bmQgPT09IDQpIHJldHVybiBbcGFydHkxUm91bmQ0TWVzc2FnZXMsIHBhcnR5MlJvdW5kNE1lc3NhZ2VzXTtcblxuICBwYXJ0eTFEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBwYXJ0eTJSb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcyxcbiAgfSk7XG4gIHBhcnR5MkRzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IHBhcnR5MVJvdW5kNE1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzLFxuICB9KTtcbiAgYXNzZXJ0KEJ1ZmZlci5mcm9tKHBhcnR5MURzZy5zaWduYXR1cmUuUikudG9TdHJpbmcoJ2hleCcpID09PSBCdWZmZXIuZnJvbShwYXJ0eTJEc2cuc2lnbmF0dXJlLlIpLnRvU3RyaW5nKCdoZXgnKSk7XG4gIGFzc2VydChCdWZmZXIuZnJvbShwYXJ0eTFEc2cuc2lnbmF0dXJlLlMpLnRvU3RyaW5nKCdoZXgnKSA9PT0gQnVmZmVyLmZyb20ocGFydHkyRHNnLnNpZ25hdHVyZS5TKS50b1N0cmluZygnaGV4JykpO1xuICByZXR1cm4gcGFydHkxRHNnLnNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlREtHS2V5U2hhcmVzKFxuICByZXRyb2ZpdERhdGFBPzogUmV0cm9maXREYXRhLFxuICByZXRyb2ZpdERhdGFCPzogUmV0cm9maXREYXRhLFxuICByZXRyb2ZpdERhdGFDPzogUmV0cm9maXREYXRhXG4pOiBQcm9taXNlPFtEa2csIERrZywgRGtnXT4ge1xuICBjb25zdCB1c2VyID0gbmV3IERrZygzLCAyLCAwLCByZXRyb2ZpdERhdGFBKTtcbiAgY29uc3QgYmFja3VwID0gbmV3IERrZygzLCAyLCAxLCByZXRyb2ZpdERhdGFCKTtcbiAgY29uc3QgYml0Z28gPSBuZXcgRGtnKDMsIDIsIDIsIHJldHJvZml0RGF0YUMpO1xuICBjb25zdCB1c2VyUm91bmQxTWVzc2FnZSA9IGF3YWl0IHVzZXIuaW5pdERrZygpO1xuICBjb25zdCBiYWNrdXBSb3VuZDFNZXNzYWdlID0gYXdhaXQgYmFja3VwLmluaXREa2coKTtcbiAgY29uc3QgYml0Z29Sb3VuZDFNZXNzYWdlID0gYXdhaXQgYml0Z28uaW5pdERrZygpO1xuICBjb25zdCB1c2VyUm91bmQyTWVzc2FnZXMgPSB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW2JpdGdvUm91bmQxTWVzc2FnZSwgYmFja3VwUm91bmQxTWVzc2FnZV0sXG4gIH0pO1xuICBjb25zdCBiYWNrdXBSb3VuZDJNZXNzYWdlcyA9IGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt1c2VyUm91bmQxTWVzc2FnZSwgYml0Z29Sb3VuZDFNZXNzYWdlXSxcbiAgfSk7XG4gIGNvbnN0IGJpdGdvUm91bmQyTWVzc2FnZXMgPSBiaXRnby5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt1c2VyUm91bmQxTWVzc2FnZSwgYmFja3VwUm91bmQxTWVzc2FnZV0sXG4gIH0pO1xuICBjb25zdCB1c2VyUm91bmQzTWVzc2FnZXMgPSB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBiYWNrdXBSb3VuZDJNZXNzYWdlcy5wMnBNZXNzYWdlc1xuICAgICAgLmZpbHRlcigobSkgPT4gbS50byA9PT0gMClcbiAgICAgIC5jb25jYXQoYml0Z29Sb3VuZDJNZXNzYWdlcy5wMnBNZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0udG8gPT09IDApKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBjb25zdCBiYWNrdXBSb3VuZDNNZXNzYWdlcyA9IGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogYml0Z29Sb3VuZDJNZXNzYWdlcy5wMnBNZXNzYWdlc1xuICAgICAgLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSlcbiAgICAgIC5jb25jYXQodXNlclJvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSkpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGNvbnN0IGJpdGdvUm91bmQzTWVzc2FnZXMgPSBiaXRnby5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogYmFja3VwUm91bmQyTWVzc2FnZXMucDJwTWVzc2FnZXNcbiAgICAgIC5maWx0ZXIoKG0pID0+IG0udG8gPT09IDIpXG4gICAgICAuY29uY2F0KHVzZXJSb3VuZDJNZXNzYWdlcy5wMnBNZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0udG8gPT09IDIpKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBjb25zdCB1c2VyUm91bmQ0TWVzc2FnZXMgPSB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBiYWNrdXBSb3VuZDNNZXNzYWdlcy5wMnBNZXNzYWdlc1xuICAgICAgLmZpbHRlcigobSkgPT4gbS50byA9PT0gMClcbiAgICAgIC5jb25jYXQoYml0Z29Sb3VuZDNNZXNzYWdlcy5wMnBNZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0udG8gPT09IDApKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBjb25zdCBiYWNrdXBSb3VuZDRNZXNzYWdlcyA9IGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogYml0Z29Sb3VuZDNNZXNzYWdlcy5wMnBNZXNzYWdlc1xuICAgICAgLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSlcbiAgICAgIC5jb25jYXQodXNlclJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSkpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGNvbnN0IGJpdGdvUm91bmQ0TWVzc2FnZXMgPSBiaXRnby5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogYmFja3VwUm91bmQzTWVzc2FnZXMucDJwTWVzc2FnZXNcbiAgICAgIC5maWx0ZXIoKG0pID0+IG0udG8gPT09IDIpXG4gICAgICAuY29uY2F0KHVzZXJSb3VuZDNNZXNzYWdlcy5wMnBNZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0udG8gPT09IDIpKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogYml0Z29Sb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcy5jb25jYXQoYmFja3VwUm91bmQ0TWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMpLFxuICB9KTtcbiAgYml0Z28uaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBiYWNrdXBSb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcy5jb25jYXQodXNlclJvdW5kNE1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzKSxcbiAgfSk7XG4gIGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IGJpdGdvUm91bmQ0TWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMuY29uY2F0KHVzZXJSb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcyksXG4gIH0pO1xuICByZXR1cm4gW3VzZXIsIGJhY2t1cCwgYml0Z29dO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGUyb2YyS2V5U2hhcmVzKFxuICByZXRyb2ZpdERhdGFBPzogUmV0cm9maXREYXRhLFxuICByZXRyb2ZpdERhdGFCPzogUmV0cm9maXREYXRhXG4pOiBQcm9taXNlPFtEa2csIERrZ10+IHtcbiAgY29uc3QgcGFydHlBID0gbmV3IERrZygyLCAyLCAwLCByZXRyb2ZpdERhdGFBKTtcbiAgY29uc3QgcGFydHlCID0gbmV3IERrZygyLCAyLCAxLCByZXRyb2ZpdERhdGFCKTtcbiAgY29uc3QgcGFydHlBUm91bmQxTWVzc2FnZSA9IGF3YWl0IHBhcnR5QS5pbml0RGtnKCk7XG4gIGNvbnN0IHBhcnR5QlJvdW5kMU1lc3NhZ2UgPSBhd2FpdCBwYXJ0eUIuaW5pdERrZygpO1xuICBjb25zdCBwYXJ0eUFSb3VuZDJNZXNzYWdlcyA9IHBhcnR5QS5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtwYXJ0eUJSb3VuZDFNZXNzYWdlXSxcbiAgfSk7XG4gIGNvbnN0IHBhcnR5QlJvdW5kMk1lc3NhZ2VzID0gcGFydHlCLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3BhcnR5QVJvdW5kMU1lc3NhZ2VdLFxuICB9KTtcbiAgY29uc3QgcGFydHlBUm91bmQzTWVzc2FnZXMgPSBwYXJ0eUEuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5QlJvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMCksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgY29uc3QgcGFydHlCUm91bmQzTWVzc2FnZXMgPSBwYXJ0eUIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5QVJvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgY29uc3QgcGFydHlBUm91bmQ0TWVzc2FnZXMgPSBwYXJ0eUEuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5QlJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMCksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgY29uc3QgcGFydHlCUm91bmQ0TWVzc2FnZXMgPSBwYXJ0eUIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5QVJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgcGFydHlBLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogcGFydHlCUm91bmQ0TWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMsXG4gIH0pO1xuICBwYXJ0eUIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBwYXJ0eUFSb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcyxcbiAgfSk7XG4gIHJldHVybiBbcGFydHlBLCBwYXJ0eUJdO1xufVxuIl19
|