@bitgo-beta/utxo-lib 8.0.3-beta.1364 → 8.0.3-beta.1365
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/dist/src/bitgo/wallet/WalletOutput.d.ts +3 -1
- package/dist/src/bitgo/wallet/WalletOutput.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/WalletOutput.js +5 -3
- package/dist/src/testutil/keys.d.ts +1 -0
- package/dist/src/testutil/keys.d.ts.map +1 -1
- package/dist/src/testutil/keys.js +6 -2
- package/dist/src/testutil/psbt.d.ts +7 -3
- package/dist/src/testutil/psbt.d.ts.map +1 -1
- package/dist/src/testutil/psbt.js +14 -2
- package/package.json +4 -4
|
@@ -66,7 +66,9 @@ export declare function updateWalletOutputForPsbt(psbt: UtxoPsbt, rootWalletKeys
|
|
|
66
66
|
* @param index derivation index for the change address
|
|
67
67
|
* @param value value of the change output
|
|
68
68
|
*/
|
|
69
|
-
export declare function addWalletOutputToPsbt(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, chain: ChainCode, index: number, value: bigint
|
|
69
|
+
export declare function addWalletOutputToPsbt(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, chain: ChainCode, index: number, value: bigint, { addDerivationInfo }?: {
|
|
70
|
+
addDerivationInfo?: boolean;
|
|
71
|
+
}): void;
|
|
70
72
|
/**
|
|
71
73
|
* Get the script id from the output.
|
|
72
74
|
* The output can have either bip32Derivation or tapBip32Derivation, but not both.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletOutput.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/WalletOutput.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAW,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAuB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3D;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,OAAO,GAChB,gBAAgB,CAqClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CA2ClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAWlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,IAAI,CAEN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"WalletOutput.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/WalletOutput.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAW,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAuB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3D;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,OAAO,GAChB,gBAAgB,CAqClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CA2ClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAWlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,IAAI,CAEN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,EAAE,iBAAwB,EAAE,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GACjE,IAAI,CAcN;AAqBD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrC,kBAAkB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACzC,GAAG,QAAQ,CAWX"}
|
|
@@ -151,7 +151,7 @@ function updateWalletOutputForPsbt(psbt, rootWalletKeys, outputIndex, chain, ind
|
|
|
151
151
|
* @param index derivation index for the change address
|
|
152
152
|
* @param value value of the change output
|
|
153
153
|
*/
|
|
154
|
-
function addWalletOutputToPsbt(psbt, rootWalletKeys, chain, index, value) {
|
|
154
|
+
function addWalletOutputToPsbt(psbt, rootWalletKeys, chain, index, value, { addDerivationInfo = true } = {}) {
|
|
155
155
|
const walletKeys = rootWalletKeys.deriveForChainAndIndex(chain, index);
|
|
156
156
|
const scriptType = (0, chains_1.scriptTypeForChain)(chain);
|
|
157
157
|
if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
|
|
@@ -162,7 +162,9 @@ function addWalletOutputToPsbt(psbt, rootWalletKeys, chain, index, value) {
|
|
|
162
162
|
const { scriptPubKey: script } = (0, outputScripts_1.createOutputScript2of3)(walletKeys.publicKeys, scriptType);
|
|
163
163
|
psbt.addOutput({ script, value });
|
|
164
164
|
}
|
|
165
|
-
|
|
165
|
+
if (addDerivationInfo) {
|
|
166
|
+
updateWalletOutputForPsbt(psbt, rootWalletKeys, psbt.data.outputs.length - 1, chain, index);
|
|
167
|
+
}
|
|
166
168
|
}
|
|
167
169
|
/**
|
|
168
170
|
* Fold the script ids into a single script id, if they are all the same.
|
|
@@ -202,4 +204,4 @@ function getScriptIdFromOutput(output) {
|
|
|
202
204
|
}
|
|
203
205
|
throw new Error('cannot get script id from output without bip32Derivation or tapBip32Derivation');
|
|
204
206
|
}
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0T3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9XYWxsZXRPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFtQkEsZ0ZBMENDO0FBWUQsOEVBaURDO0FBY0Qsa0RBaUJDO0FBZ0JELDhEQVFDO0FBZUQsc0RBa0JDO0FBNkJELHNEQWNDO0FBN1BELG1DQUFzQztBQUV0QyxpREFBaUQ7QUFJakQscUNBQXlEO0FBQ3pELHlDQUEyRDtBQUMzRCxvREFBd0g7QUFFeEg7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixrQ0FBa0MsQ0FDaEQsY0FBOEIsRUFDOUIsVUFBNkIsRUFDN0IsVUFBa0IsRUFDbEIsT0FBaUI7SUFFakIsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQztJQUVwQyxJQUFJLFVBQVUsS0FBSyxNQUFNLElBQUksVUFBVSxLQUFLLFlBQVksRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsdUJBQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU8sQ0FBQyxDQUFDLENBQUM7UUFFakYsTUFBTSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUFnQixFQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEUsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFD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Q0FBQztJQUNILE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsTUFHckM7SUFDQyxJQUFJLE1BQU0sQ0FBQyxlQUFlLElBQUksTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRkFBbUYsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQixPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSw4QkFBbUIsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlCLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsOEJBQW1CLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO0FBQ3BHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvayBhcyBhc3NlcnQgfSBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBQYXltZW50LCB0YXByb290IH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgeyBQc2J0T3V0cHV0LCBQc2J0T3V0cHV0VXBkYXRlIH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBVdHhvUHNidCB9IGZyb20gJy4uL1V0eG9Qc2J0JztcbmltcG9ydCB7IFJvb3RXYWxsZXRLZXlzLCBEZXJpdmVkV2FsbGV0S2V5cyB9IGZyb20gJy4vV2FsbGV0S2V5cyc7XG5pbXBvcnQgeyBDaGFpbkNvZGUsIHNjcmlwdFR5cGVGb3JDaGFpbiB9IGZyb20gJy4vY2hhaW5zJztcbmltcG9ydCB7IGdldFNjcmlwdElkRnJvbVBhdGgsIFNjcmlwdElkIH0gZnJvbSAnLi9TY3JpcHRJZCc7XG5pbXBvcnQgeyBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzLCBjcmVhdGVQYXltZW50UDJ0ciwgY3JlYXRlUGF5bWVudFAydHJNdXNpZzIsIHRvWE9ubHlQdWJsaWNLZXkgfSBmcm9tICcuLi9vdXRwdXRTY3JpcHRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEJJUDMyIGRlcml2YXRpb24gZGF0YSBmb3IgYSBQU0JUIG91dHB1dC5cbiAqXG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMgcm9vdCB3YWxsZXQga2V5cyB1c2VkIGZvciBtYXN0ZXIgZmluZ2VycHJpbnRzXG4gKiBAcGFyYW0gd2FsbGV0S2V5cyBkZXJpdmVkIHdhbGxldCBrZXlzIGZvciB0aGUgc3BlY2lmaWMgY2hhaW4gYW5kIGluZGV4XG4gKiBAcGFyYW0gc2NyaXB0VHlwZSB0aGUgc2NyaXB0IHR5cGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIHJlZ3VsYXIgb3IgdGFwcm9vdCBkZXJpdmF0aW9uXG4gKiBAcGFyYW0gcGF5bWVudCBvcHRpb25hbCBwYXltZW50IG9iamVjdCBmb3IgdGFwcm9vdCBzY3JpcHRzIHRvIGNhbGN1bGF0ZSBsZWFmIGhhc2hlc1xuICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgQklQMzIgZGVyaXZhdGlvbiBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQc2J0QmlwMzJEZXJpdmF0aW9uT3V0cHV0VXBkYXRlKFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIHdhbGxldEtleXM6IERlcml2ZWRXYWxsZXRLZXlzLFxuICBzY3JpcHRUeXBlOiBzdHJpbmcsXG4gIHBheW1lbnQ/OiBQYXltZW50XG4pOiBQc2J0T3V0cHV0VXBkYXRlIHtcbiAgY29uc3QgdXBkYXRlOiBQc2J0T3V0cHV0VXBkYXRlID0ge307XG5cbiAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyJyB8fCBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicpIHtcbiAgICBpZiAoIXBheW1lbnQgfHwgIXBheW1lbnQucmVkZWVtcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXltZW50IG9iamVjdCB3aXRoIHJlZGVlbXMgaXMgcmVxdWlyZWQgZm9yIHRhcHJvb3QgZGVyaXZhdGlvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbExlYWZIYXNoZXMgPSBwYXltZW50LnJlZGVlbXMubWFwKChyKSA9PiB0YXByb290Lmhhc2hUYXBMZWFmKHIub3V0cHV0ISkpO1xuXG4gICAgdXBkYXRlLnRhcEJpcDMyRGVyaXZhdGlvbiA9IFswLCAxLCAyXS5tYXAoKGlkeCkgPT4ge1xuICAgICAgY29uc3QgcHVia2V5ID0gdG9YT25seVB1YmxpY0tleSh3YWxsZXRLZXlzLnRyaXBsZVtpZHhdLnB1YmxpY0tleSk7XG4gICAgICBjb25zdCBsZWFmSGFzaGVzOiBCdWZmZXJbXSA9IFtdO1xuXG4gICAgICBhc3NlcnQocGF5bWVudC5yZWRlZW1zKTtcbiAgICAgIHBheW1lbnQucmVkZWVtcy5mb3JFYWNoKChyOiBhbnksIHJlZGVlbUlkeDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGlmIChyLnB1YmtleXMhLmZpbmQoKHBrOiBCdWZmZXIpID0+IHBrLmVxdWFscyhwdWJrZXkpKSkge1xuICAgICAgICAgIGxlYWZIYXNoZXMucHVzaChhbGxMZWFmSGFzaGVzW3JlZGVlbUlkeF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGVhZkhhc2hlcyxcbiAgICAgICAgcHVia2V5LFxuICAgICAgICBwYXRoOiB3YWxsZXRLZXlzLnBhdGhzW2lkeF0sXG4gICAgICAgIG1hc3RlckZpbmdlcnByaW50OiByb290V2FsbGV0S2V5cy50cmlwbGVbaWR4XS5maW5nZXJwcmludCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdXBkYXRlLmJpcDMyRGVyaXZhdGlvbiA9IFswLCAxLCAyXS5tYXAoKGlkeCkgPT4gKHtcbiAgICAgIHB1YmtleTogd2FsbGV0S2V5cy50cmlwbGVbaWR4XS5wdWJsaWNLZXksXG4gICAgICBwYXRoOiB3YWxsZXRLZXlzLnBhdGhzW2lkeF0sXG4gICAgICBtYXN0ZXJGaW5nZXJwcmludDogcm9vdFdhbGxldEtleXMudHJpcGxlW2lkeF0uZmluZ2VycHJpbnQsXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIFBTQlQgb3V0cHV0IHVwZGF0ZSBvYmplY3QgZnJvbSBhIFBTQlQgb3V0cHV0IGFuZCBvdXRwdXQgc2NyaXB0LlxuICpcbiAqIEBwYXJhbSBvdXRwdXQgdGhlIFBTQlQgb3V0cHV0IHRvIGdldCB1cGRhdGUgZm9yXG4gKiBAcGFyYW0gb3V0cHV0U2NyaXB0IHRoZSBvdXRwdXQgc2NyaXB0XG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMga2V5cyB0aGF0IHdpbGwgYmUgYWJsZSB0byBzcGVuZCB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gY2hhaW4gY2hhaW4gY29kZSB0byB1c2UgZm9yIGRlcml2aW5nIHNjcmlwdHMgKGFuZCB0byBkZXRlcm1pbmUgc2NyaXB0IHR5cGUpXG4gKiBAcGFyYW0gaW5kZXggZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIGNoYW5nZSBhZGRyZXNzXG4gKiBAcmV0dXJucyBQc2J0T3V0cHV0VXBkYXRlIG9iamVjdCB3aXRoIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHNidE91dHB1dFVwZGF0ZUZyb21Qc2J0T3V0cHV0KFxuICBvdXRwdXQ6IFBzYnRPdXRwdXQsXG4gIG91dHB1dFNjcmlwdDogQnVmZmVyLFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIGNoYWluOiBDaGFpbkNvZGUsXG4gIGluZGV4OiBudW1iZXJcbik6IFBzYnRPdXRwdXRVcGRhdGUge1xuICBjb25zdCB3YWxsZXRLZXlzID0gcm9vdFdhbGxldEtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbiwgaW5kZXgpO1xuICBjb25zdCBzY3JpcHRUeXBlID0gc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKTtcbiAgY29uc3QgdXBkYXRlOiBQc2J0T3V0cHV0VXBkYXRlID0ge307XG5cbiAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyJyB8fCBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicpIHtcbiAgICBjb25zdCBwYXltZW50ID1cbiAgICAgIHNjcmlwdFR5cGUgPT09ICdwMnRyJyA/IGNyZWF0ZVBheW1lbnRQMnRyKHdhbGxldEtleXMucHVibGljS2V5cykgOiBjcmVhdGVQYXltZW50UDJ0ck11c2lnMih3YWxsZXRLZXlzLnB1YmxpY0tleXMpO1xuICAgIGlmICghcGF5bWVudC5vdXRwdXQgfHwgIXBheW1lbnQub3V0cHV0LmVxdWFscyhvdXRwdXRTY3JpcHQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNhbm5vdCB1cGRhdGUgYSBwMnRyIG91dHB1dCB3aGVyZSB0aGUgc2NyaXB0cyBkbyBub3QgbWF0Y2ggLSBGYWlsaW5nLmApO1xuICAgIH1cblxuICAgIGlmICghb3V0cHV0LnRhcFRyZWUpIHtcbiAgICAgIHVwZGF0ZS50YXBUcmVlID0gcGF5bWVudC50YXBUcmVlO1xuICAgIH1cbiAgICBpZiAoIW91dHB1dC50YXBJbnRlcm5hbEtleSkge1xuICAgICAgdXBkYXRlLnRhcEludGVybmFsS2V5ID0gcGF5bWVudC5pbnRlcm5hbFB1YmtleTtcbiAgICB9XG5cbiAgICBpZiAoIW91dHB1dC50YXBCaXAzMkRlcml2YXRpb24pIHtcbiAgICAgIGNvbnN0IGRlcml2YXRpb25VcGRhdGUgPSBnZXRQc2J0QmlwMzJEZXJpdmF0aW9uT3V0cHV0VXBkYXRlKHJvb3RXYWxsZXRLZXlzLCB3YWxsZXRLZXlzLCBzY3JpcHRUeXBlLCBwYXltZW50KTtcbiAgICAgIHVwZGF0ZS50YXBCaXAzMkRlcml2YXRpb24gPSBkZXJpdmF0aW9uVXBkYXRlLnRhcEJpcDMyRGVyaXZhdGlvbjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyBzY3JpcHRQdWJLZXksIHdpdG5lc3NTY3JpcHQsIHJlZGVlbVNjcmlwdCB9ID0gY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyh3YWxsZXRLZXlzLnB1YmxpY0tleXMsIHNjcmlwdFR5cGUpO1xuICAgIGlmICghc2NyaXB0UHViS2V5LmVxdWFscyhvdXRwdXRTY3JpcHQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNhbm5vdCB1cGRhdGUgYW4gb3V0cHV0IHdoZXJlIHRoZSBzY3JpcHRzIGRvIG5vdCBtYXRjaCAtIEZhaWxpbmcuYCk7XG4gICAgfVxuXG4gICAgaWYgKCFvdXRwdXQuYmlwMzJEZXJpdmF0aW9uKSB7XG4gICAgICBjb25zdCBkZXJpdmF0aW9uVXBkYXRlID0gZ2V0UHNidEJpcDMyRGVyaXZhdGlvbk91dHB1dFVwZGF0ZShyb290V2FsbGV0S2V5cywgd2FsbGV0S2V5cywgc2NyaXB0VHlwZSk7XG4gICAgICB1cGRhdGUuYmlwMzJEZXJpdmF0aW9uID0gZGVyaXZhdGlvblVwZGF0ZS5iaXAzMkRlcml2YXRpb247XG4gICAgfVxuXG4gICAgaWYgKCFvdXRwdXQud2l0bmVzc1NjcmlwdCAmJiB3aXRuZXNzU2NyaXB0KSB7XG4gICAgICB1cGRhdGUud2l0bmVzc1NjcmlwdCA9IHdpdG5lc3NTY3JpcHQ7XG4gICAgfVxuICAgIGlmICghb3V0cHV0LnJlZGVlbVNjcmlwdCAmJiByZWRlZW1TY3JpcHQpIHtcbiAgICAgIHVwZGF0ZS5yZWRlZW1TY3JpcHQgPSByZWRlZW1TY3JpcHQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIFBTQlQgb3V0cHV0IHVwZGF0ZSBvYmplY3Qgd2l0aCB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24uXG4gKlxuICogQHBhcmFtIHBzYnQgdGhlIFBTQlQgdG8gZ2V0IG91dHB1dCB1cGRhdGUgZm9yXG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMga2V5cyB0aGF0IHdpbGwgYmUgYWJsZSB0byBzcGVuZCB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gb3V0cHV0SW5kZXggb3V0cHV0IGluZGV4IHdoZXJlIHRvIHVwZGF0ZSB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gY2hhaW4gY2hhaW4gY29kZSB0byB1c2UgZm9yIGRlcml2aW5nIHNjcmlwdHMgKGFuZCB0byBkZXRlcm1pbmUgc2NyaXB0XG4gKiAgICAgICAgICAgICAgdHlwZSkgY2hhaW4gaXMgYW4gQVBJIHBhcmFtZXRlciBpbiB0aGUgQml0R28gQVBJLCBhbmQgbWF5IGJlXG4gKiAgICAgICAgICAgICAgYW55IHZhbGlkIENoYWluQ29kZVxuICogQHBhcmFtIGluZGV4IGRlcml2YXRpb24gaW5kZXggZm9yIHRoZSBjaGFuZ2UgYWRkcmVzc1xuICogQHJldHVybnMgUHNidE91dHB1dFVwZGF0ZSBvYmplY3Qgd2l0aCB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBzYnRPdXRwdXRVcGRhdGUoXG4gIHBzYnQ6IFV0eG9Qc2J0LFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIG91dHB1dEluZGV4OiBudW1iZXIsXG4gIGNoYWluOiBDaGFpbkNvZGUsXG4gIGluZGV4OiBudW1iZXJcbik6IFBzYnRPdXRwdXRVcGRhdGUge1xuICBpZiAocHNidC5kYXRhLm91dHB1dHMubGVuZ3RoIDw9IG91dHB1dEluZGV4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYG91dHB1dEluZGV4ICgke291dHB1dEluZGV4fSkgaXMgdG9vIGxhcmdlIGZvciB0aGUgbnVtYmVyIG9mIG91dHB1dHMgKCR7cHNidC5kYXRhLm91dHB1dHMubGVuZ3RofSlgXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG91dHB1dFNjcmlwdCA9IHBzYnQuZ2V0T3V0cHV0U2NyaXB0KG91dHB1dEluZGV4KTtcbiAgY29uc3Qgb3V0cHV0ID0gcHNidC5kYXRhLm91dHB1dHNbb3V0cHV0SW5kZXhdO1xuXG4gIHJldHVybiBnZXRQc2J0T3V0cHV0VXBkYXRlRnJvbVBzYnRPdXRwdXQob3V0cHV0LCBvdXRwdXRTY3JpcHQsIHJvb3RXYWxsZXRLZXlzLCBjaGFpbiwgaW5kZXgpO1xufVxuXG4vKipcbiAqIFVwZGF0ZSB0aGUgd2FsbGV0IG91dHB1dCB3aXRoIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbiB3aGVuIG5lY2Vzc2FyeS4gSWYgdGhlXG4gKiBpbmZvcm1hdGlvbiBpcyB0aGVyZSBhbHJlYWR5LCBpdCB3aWxsIHNraXAgb3ZlciBpdC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCB0aGUgb3V0cHV0IHNjcmlwdCBhbmQgdmFsdWUgaGF2ZSBhbHJlYWR5IGJlZW4gc2V0LlxuICpcbiAqIEBwYXJhbSBwc2J0IHRoZSBQU0JUIHRvIHVwZGF0ZSBjaGFuZ2Ugb3V0cHV0IGF0XG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMga2V5cyB0aGF0IHdpbGwgYmUgYWJsZSB0byBzcGVuZCB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gb3V0cHV0SW5kZXggb3V0cHV0IGluZGV4IHdoZXJlIHRvIHVwZGF0ZSB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gY2hhaW4gY2hhaW4gY29kZSB0byB1c2UgZm9yIGRlcml2aW5nIHNjcmlwdHMgKGFuZCB0byBkZXRlcm1pbmUgc2NyaXB0XG4gKiAgICAgICAgICAgICAgdHlwZSkgY2hhaW4gaXMgYW4gQVBJIHBhcmFtZXRlciBpbiB0aGUgQml0R28gQVBJLCBhbmQgbWF5IGJlXG4gKiAgICAgICAgICAgICAgYW55IHZhbGlkIENoYWluQ29kZVxuICogQHBhcmFtIGluZGV4IGRlcml2YXRpb24gaW5kZXggZm9yIHRoZSBjaGFuZ2UgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlV2FsbGV0T3V0cHV0Rm9yUHNidChcbiAgcHNidDogVXR4b1BzYnQsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgb3V0cHV0SW5kZXg6IG51bWJlcixcbiAgY2hhaW46IENoYWluQ29kZSxcbiAgaW5kZXg6IG51bWJlclxuKTogdm9pZCB7XG4gIHBzYnQudXBkYXRlT3V0cHV0KG91dHB1dEluZGV4LCBnZXRQc2J0T3V0cHV0VXBkYXRlKHBzYnQsIHJvb3RXYWxsZXRLZXlzLCBvdXRwdXRJbmRleCwgY2hhaW4sIGluZGV4KSk7XG59XG5cbi8qKlxuICogQWRkIGEgdmVyaWZpYWJsZSB3YWxsZXQgb3V0cHV0IHRvIHRoZSBQU0JULiBUaGUgb3V0cHV0IGFuZCBhbGwgZGF0YVxuICogbmVlZGVkIHRvIHZlcmlmeSBpdCBmcm9tIHB1YmxpYyBrZXlzIG9ubHkgYXJlIGFkZGVkIHRvIHRoZSBQU0JULlxuICogVHlwaWNhbGx5IHRoZXNlIGFyZSBjaGFuZ2Ugb3V0cHV0cy5cbiAqXG4gKiBAcGFyYW0gcHNidCB0aGUgUFNCVCB0byBhZGQgY2hhbmdlIG91dHB1dCB0b1xuICogQHBhcmFtIHJvb3RXYWxsZXRLZXlzIGtleXMgdGhhdCB3aWxsIGJlIGFibGUgdG8gc3BlbmQgdGhlIG91dHB1dFxuICogQHBhcmFtIGNoYWluIGNoYWluIGNvZGUgdG8gdXNlIGZvciBkZXJpdmluZyBzY3JpcHRzIChhbmQgdG8gZGV0ZXJtaW5lIHNjcmlwdFxuICogICAgICAgICAgICAgIHR5cGUpIGNoYWluIGlzIGFuIEFQSSBwYXJhbWV0ZXIgaW4gdGhlIEJpdEdvIEFQSSwgYW5kIG1heSBiZVxuICogICAgICAgICAgICAgIGFueSB2YWxpZCBDaGFpbkNvZGVcbiAqIEBwYXJhbSBpbmRleCBkZXJpdmF0aW9uIGluZGV4IGZvciB0aGUgY2hhbmdlIGFkZHJlc3NcbiAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSBvZiB0aGUgY2hhbmdlIG91dHB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkV2FsbGV0T3V0cHV0VG9Qc2J0KFxuICBwc2J0OiBVdHhvUHNidCxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBjaGFpbjogQ2hhaW5Db2RlLFxuICBpbmRleDogbnVtYmVyLFxuICB2YWx1ZTogYmlnaW50XG4pOiB2b2lkIHtcbiAgY29uc3Qgd2FsbGV0S2V5cyA9IHJvb3RXYWxsZXRLZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW4sIGluZGV4KTtcbiAgY29uc3Qgc2NyaXB0VHlwZSA9IHNjcmlwdFR5cGVGb3JDaGFpbihjaGFpbik7XG4gIGlmIChzY3JpcHRUeXBlID09PSAncDJ0cicgfHwgc2NyaXB0VHlwZSA9PT0gJ3AydHJNdXNpZzInKSB7XG4gICAgY29uc3QgcGF5bWVudCA9XG4gICAgICBzY3JpcHRUeXBlID09PSAncDJ0cicgPyBjcmVhdGVQYXltZW50UDJ0cih3YWxsZXRLZXlzLnB1YmxpY0tleXMpIDogY3JlYXRlUGF5bWVudFAydHJNdXNpZzIod2FsbGV0S2V5cy5wdWJsaWNLZXlzKTtcbiAgICBwc2J0LmFkZE91dHB1dCh7IHNjcmlwdDogcGF5bWVudC5vdXRwdXQhLCB2YWx1ZSB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IHNjcmlwdFB1YktleTogc2NyaXB0IH0gPSBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzKHdhbGxldEtleXMucHVibGljS2V5cywgc2NyaXB0VHlwZSk7XG4gICAgcHNidC5hZGRPdXRwdXQoeyBzY3JpcHQsIHZhbHVlIH0pO1xuICB9XG4gIHVwZGF0ZVdhbGxldE91dHB1dEZvclBzYnQocHNidCwgcm9vdFdhbGxldEtleXMsIHBzYnQuZGF0YS5vdXRwdXRzLmxlbmd0aCAtIDEsIGNoYWluLCBpbmRleCk7XG59XG5cbi8qKlxuICogRm9sZCB0aGUgc2NyaXB0IGlkcyBpbnRvIGEgc2luZ2xlIHNjcmlwdCBpZCwgaWYgdGhleSBhcmUgYWxsIHRoZSBzYW1lLlxuICogQHBhcmFtIHNjcmlwdElkc1xuICovXG5mdW5jdGlvbiBmb2xkU2NyaXB0SWRzKHNjcmlwdElkczogU2NyaXB0SWRbXSk6IFNjcmlwdElkIHtcbiAgaWYgKHNjcmlwdElkcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBmb2xkIGVtcHR5IHNjcmlwdCBpZHMnKTtcbiAgfVxuICBzY3JpcHRJZHMuZm9yRWFjaCgoc2NyaXB0SWQsIGkpID0+IHtcbiAgICBpZiAoc2NyaXB0SWQuY2hhaW4gIT09IHNjcmlwdElkc1swXS5jaGFpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjaGFpbiBtaXNtYXRjaDogJHtzY3JpcHRJZC5jaGFpbn0gIT0gJHtzY3JpcHRJZHNbMF0uY2hhaW59YCk7XG4gICAgfVxuICAgIGlmIChzY3JpcHRJZC5pbmRleCAhPT0gc2NyaXB0SWRzWzBdLmluZGV4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGluZGV4IG1pc21hdGNoOiAke3NjcmlwdElkLmluZGV4fSAhPSAke3NjcmlwdElkc1swXS5pbmRleH1gKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc2NyaXB0SWRzWzBdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgc2NyaXB0IGlkIGZyb20gdGhlIG91dHB1dC5cbiAqIFRoZSBvdXRwdXQgY2FuIGhhdmUgZWl0aGVyIGJpcDMyRGVyaXZhdGlvbiBvciB0YXBCaXAzMkRlcml2YXRpb24sIGJ1dCBub3QgYm90aC5cbiAqIEBwYXJhbSBvdXRwdXRcbiAqIEB0aHJvd3MgRXJyb3IgaWYgbmVpdGhlciBvciBib3RoIGJpcDMyRGVyaXZhdGlvbiBhbmQgdGFwQmlwMzJEZXJpdmF0aW9uIGFyZSBwcmVzZW50XG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBvdXRwdXQgaXMgZW1wdHlcbiAqIEB0aHJvd3MgRXJyb3IgaWYgd2UgY2Fubm90IGZvbGQgdGhlIHNjcmlwdCBpZHMgaW50byBhIHNpbmdsZSBzY3JpcHQgaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcmlwdElkRnJvbU91dHB1dChvdXRwdXQ6IHtcbiAgYmlwMzJEZXJpdmF0aW9uPzogeyBwYXRoOiBzdHJpbmcgfVtdO1xuICB0YXBCaXAzMkRlcml2YXRpb24/OiB7IHBhdGg6IHN0cmluZyB9W107XG59KTogU2NyaXB0SWQge1xuICBpZiAob3V0cHV0LmJpcDMyRGVyaXZhdGlvbiAmJiBvdXRwdXQudGFwQmlwMzJEZXJpdmF0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgZ2V0IHNjcmlwdCBpZCBmcm9tIG91dHB1dCB3aXRoIGJvdGggYmlwMzJEZXJpdmF0aW9uIGFuZCB0YXBCaXAzMkRlcml2YXRpb24nKTtcbiAgfVxuICBpZiAob3V0cHV0LmJpcDMyRGVyaXZhdGlvbikge1xuICAgIHJldHVybiBmb2xkU2NyaXB0SWRzKG91dHB1dC5iaXAzMkRlcml2YXRpb24ubWFwKChkKSA9PiBnZXRTY3JpcHRJZEZyb21QYXRoKGQucGF0aCkpKTtcbiAgfVxuICBpZiAob3V0cHV0LnRhcEJpcDMyRGVyaXZhdGlvbikge1xuICAgIHJldHVybiBmb2xkU2NyaXB0SWRzKG91dHB1dC50YXBCaXAzMkRlcml2YXRpb24ubWFwKChkKSA9PiBnZXRTY3JpcHRJZEZyb21QYXRoKGQucGF0aCkpKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBnZXQgc2NyaXB0IGlkIGZyb20gb3V0cHV0IHdpdGhvdXQgYmlwMzJEZXJpdmF0aW9uIG9yIHRhcEJpcDMyRGVyaXZhdGlvbicpO1xufVxuIl19
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0T3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9XYWxsZXRPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFtQkEsZ0ZBMENDO0FBWUQsOEVBaURDO0FBY0Qsa0RBaUJDO0FBZ0JELDhEQVFDO0FBZUQsc0RBcUJDO0FBNkJELHNEQWNDO0FBaFFELG1DQUFzQztBQUV0QyxpREFBaUQ7QUFJakQscUNBQXlEO0FBQ3pELHlDQUEyRDtBQUMzRCxvREFBd0g7QUFFeEg7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixrQ0FBa0MsQ0FDaEQsY0FBOEIsRUFDOUIsVUFBNkIsRUFDN0IsVUFBa0IsRUFDbEIsT0FBaUI7SUFFakIsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQztJQUVwQyxJQUFJLFVBQVUsS0FBSyxNQUFNLElBQUksVUFBVSxLQUFLLFlBQVksRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsdUJBQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU8sQ0FBQyxDQUFDLENBQUM7UUFFakYsTUFBTSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUFnQixFQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEUsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFD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LE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDaEYsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxNQUdyQztJQUNDLElBQUksTUFBTSxDQUFDLGVBQWUsSUFBSSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLElBQUksS0FBSyxDQUFDLG1GQUFtRixDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNCLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLDhCQUFtQixFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDOUIsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSw4QkFBbUIsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdGQUFnRixDQUFDLENBQUM7QUFDcEcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG9rIGFzIGFzc2VydCB9IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IFBheW1lbnQsIHRhcHJvb3QgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IFBzYnRPdXRwdXQsIFBzYnRPdXRwdXRVcGRhdGUgfSBmcm9tICdiaXAxNzQvc3JjL2xpYi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFV0eG9Qc2J0IH0gZnJvbSAnLi4vVXR4b1BzYnQnO1xuaW1wb3J0IHsgUm9vdFdhbGxldEtleXMsIERlcml2ZWRXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IENoYWluQ29kZSwgc2NyaXB0VHlwZUZvckNoYWluIH0gZnJvbSAnLi9jaGFpbnMnO1xuaW1wb3J0IHsgZ2V0U2NyaXB0SWRGcm9tUGF0aCwgU2NyaXB0SWQgfSBmcm9tICcuL1NjcmlwdElkJztcbmltcG9ydCB7IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMsIGNyZWF0ZVBheW1lbnRQMnRyLCBjcmVhdGVQYXltZW50UDJ0ck11c2lnMiwgdG9YT25seVB1YmxpY0tleSB9IGZyb20gJy4uL291dHB1dFNjcmlwdHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQklQMzIgZGVyaXZhdGlvbiBkYXRhIGZvciBhIFBTQlQgb3V0cHV0LlxuICpcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyByb290IHdhbGxldCBrZXlzIHVzZWQgZm9yIG1hc3RlciBmaW5nZXJwcmludHNcbiAqIEBwYXJhbSB3YWxsZXRLZXlzIGRlcml2ZWQgd2FsbGV0IGtleXMgZm9yIHRoZSBzcGVjaWZpYyBjaGFpbiBhbmQgaW5kZXhcbiAqIEBwYXJhbSBzY3JpcHRUeXBlIHRoZSBzY3JpcHQgdHlwZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byB1c2UgcmVndWxhciBvciB0YXByb290IGRlcml2YXRpb25cbiAqIEBwYXJhbSBwYXltZW50IG9wdGlvbmFsIHBheW1lbnQgb2JqZWN0IGZvciB0YXByb290IHNjcmlwdHMgdG8gY2FsY3VsYXRlIGxlYWYgaGFzaGVzXG4gKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyBCSVAzMiBkZXJpdmF0aW9uIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBzYnRCaXAzMkRlcml2YXRpb25PdXRwdXRVcGRhdGUoXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgd2FsbGV0S2V5czogRGVyaXZlZFdhbGxldEtleXMsXG4gIHNjcmlwdFR5cGU6IHN0cmluZyxcbiAgcGF5bWVudD86IFBheW1lbnRcbik6IFBzYnRPdXRwdXRVcGRhdGUge1xuICBjb25zdCB1cGRhdGU6IFBzYnRPdXRwdXRVcGRhdGUgPSB7fTtcblxuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHInIHx8IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgIGlmICghcGF5bWVudCB8fCAhcGF5bWVudC5yZWRlZW1zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BheW1lbnQgb2JqZWN0IHdpdGggcmVkZWVtcyBpcyByZXF1aXJlZCBmb3IgdGFwcm9vdCBkZXJpdmF0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYWxsTGVhZkhhc2hlcyA9IHBheW1lbnQucmVkZWVtcy5tYXAoKHIpID0+IHRhcHJvb3QuaGFzaFRhcExlYWYoci5vdXRwdXQhKSk7XG5cbiAgICB1cGRhdGUudGFwQmlwMzJEZXJpdmF0aW9uID0gWzAsIDEsIDJdLm1hcCgoaWR4KSA9PiB7XG4gICAgICBjb25zdCBwdWJrZXkgPSB0b1hPbmx5UHVibGljS2V5KHdhbGxldEtleXMudHJpcGxlW2lkeF0ucHVibGljS2V5KTtcbiAgICAgIGNvbnN0IGxlYWZIYXNoZXM6IEJ1ZmZlcltdID0gW107XG5cbiAgICAgIGFzc2VydChwYXltZW50LnJlZGVlbXMpO1xuICAgICAgcGF5bWVudC5yZWRlZW1zLmZvckVhY2goKHI6IGFueSwgcmVkZWVtSWR4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHIucHVia2V5cyEuZmluZCgocGs6IEJ1ZmZlcikgPT4gcGsuZXF1YWxzKHB1YmtleSkpKSB7XG4gICAgICAgICAgbGVhZkhhc2hlcy5wdXNoKGFsbExlYWZIYXNoZXNbcmVkZWVtSWR4XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWFmSGFzaGVzLFxuICAgICAgICBwdWJrZXksXG4gICAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHJvb3RXYWxsZXRLZXlzLnRyaXBsZVtpZHhdLmZpbmdlcnByaW50LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGUuYmlwMzJEZXJpdmF0aW9uID0gWzAsIDEsIDJdLm1hcCgoaWR4KSA9PiAoe1xuICAgICAgcHVia2V5OiB3YWxsZXRLZXlzLnRyaXBsZVtpZHhdLnB1YmxpY0tleSxcbiAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgIG1hc3RlckZpbmdlcnByaW50OiByb290V2FsbGV0S2V5cy50cmlwbGVbaWR4XS5maW5nZXJwcmludCxcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gdXBkYXRlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgUFNCVCBvdXRwdXQgdXBkYXRlIG9iamVjdCBmcm9tIGEgUFNCVCBvdXRwdXQgYW5kIG91dHB1dCBzY3JpcHQuXG4gKlxuICogQHBhcmFtIG91dHB1dCB0aGUgUFNCVCBvdXRwdXQgdG8gZ2V0IHVwZGF0ZSBmb3JcbiAqIEBwYXJhbSBvdXRwdXRTY3JpcHQgdGhlIG91dHB1dCBzY3JpcHRcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHQgdHlwZSlcbiAqIEBwYXJhbSBpbmRleCBkZXJpdmF0aW9uIGluZGV4IGZvciB0aGUgY2hhbmdlIGFkZHJlc3NcbiAqIEByZXR1cm5zIFBzYnRPdXRwdXRVcGRhdGUgb2JqZWN0IHdpdGggdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQc2J0T3V0cHV0VXBkYXRlRnJvbVBzYnRPdXRwdXQoXG4gIG91dHB1dDogUHNidE91dHB1dCxcbiAgb3V0cHV0U2NyaXB0OiBCdWZmZXIsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgY2hhaW46IENoYWluQ29kZSxcbiAgaW5kZXg6IG51bWJlclxuKTogUHNidE91dHB1dFVwZGF0ZSB7XG4gIGNvbnN0IHdhbGxldEtleXMgPSByb290V2FsbGV0S2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCk7XG4gIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuICBjb25zdCB1cGRhdGU6IFBzYnRPdXRwdXRVcGRhdGUgPSB7fTtcblxuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHInIHx8IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgIGNvbnN0IHBheW1lbnQgPVxuICAgICAgc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gY3JlYXRlUGF5bWVudFAydHIod2FsbGV0S2V5cy5wdWJsaWNLZXlzKSA6IGNyZWF0ZVBheW1lbnRQMnRyTXVzaWcyKHdhbGxldEtleXMucHVibGljS2V5cyk7XG4gICAgaWYgKCFwYXltZW50Lm91dHB1dCB8fCAhcGF5bWVudC5vdXRwdXQuZXF1YWxzKG91dHB1dFNjcmlwdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IHVwZGF0ZSBhIHAydHIgb3V0cHV0IHdoZXJlIHRoZSBzY3JpcHRzIGRvIG5vdCBtYXRjaCAtIEZhaWxpbmcuYCk7XG4gICAgfVxuXG4gICAgaWYgKCFvdXRwdXQudGFwVHJlZSkge1xuICAgICAgdXBkYXRlLnRhcFRyZWUgPSBwYXltZW50LnRhcFRyZWU7XG4gICAgfVxuICAgIGlmICghb3V0cHV0LnRhcEludGVybmFsS2V5KSB7XG4gICAgICB1cGRhdGUudGFwSW50ZXJuYWxLZXkgPSBwYXltZW50LmludGVybmFsUHVia2V5O1xuICAgIH1cblxuICAgIGlmICghb3V0cHV0LnRhcEJpcDMyRGVyaXZhdGlvbikge1xuICAgICAgY29uc3QgZGVyaXZhdGlvblVwZGF0ZSA9IGdldFBzYnRCaXAzMkRlcml2YXRpb25PdXRwdXRVcGRhdGUocm9vdFdhbGxldEtleXMsIHdhbGxldEtleXMsIHNjcmlwdFR5cGUsIHBheW1lbnQpO1xuICAgICAgdXBkYXRlLnRhcEJpcDMyRGVyaXZhdGlvbiA9IGRlcml2YXRpb25VcGRhdGUudGFwQmlwMzJEZXJpdmF0aW9uO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IHNjcmlwdFB1YktleSwgd2l0bmVzc1NjcmlwdCwgcmVkZWVtU2NyaXB0IH0gPSBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzKHdhbGxldEtleXMucHVibGljS2V5cywgc2NyaXB0VHlwZSk7XG4gICAgaWYgKCFzY3JpcHRQdWJLZXkuZXF1YWxzKG91dHB1dFNjcmlwdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IHVwZGF0ZSBhbiBvdXRwdXQgd2hlcmUgdGhlIHNjcmlwdHMgZG8gbm90IG1hdGNoIC0gRmFpbGluZy5gKTtcbiAgICB9XG5cbiAgICBpZiAoIW91dHB1dC5iaXAzMkRlcml2YXRpb24pIHtcbiAgICAgIGNvbnN0IGRlcml2YXRpb25VcGRhdGUgPSBnZXRQc2J0QmlwMzJEZXJpdmF0aW9uT3V0cHV0VXBkYXRlKHJvb3RXYWxsZXRLZXlzLCB3YWxsZXRLZXlzLCBzY3JpcHRUeXBlKTtcbiAgICAgIHVwZGF0ZS5iaXAzMkRlcml2YXRpb24gPSBkZXJpdmF0aW9uVXBkYXRlLmJpcDMyRGVyaXZhdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoIW91dHB1dC53aXRuZXNzU2NyaXB0ICYmIHdpdG5lc3NTY3JpcHQpIHtcbiAgICAgIHVwZGF0ZS53aXRuZXNzU2NyaXB0ID0gd2l0bmVzc1NjcmlwdDtcbiAgICB9XG4gICAgaWYgKCFvdXRwdXQucmVkZWVtU2NyaXB0ICYmIHJlZGVlbVNjcmlwdCkge1xuICAgICAgdXBkYXRlLnJlZGVlbVNjcmlwdCA9IHJlZGVlbVNjcmlwdDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdXBkYXRlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgUFNCVCBvdXRwdXQgdXBkYXRlIG9iamVjdCB3aXRoIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAcGFyYW0gcHNidCB0aGUgUFNCVCB0byBnZXQgb3V0cHV0IHVwZGF0ZSBmb3JcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBvdXRwdXRJbmRleCBvdXRwdXQgaW5kZXggd2hlcmUgdG8gdXBkYXRlIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHRcbiAqICAgICAgICAgICAgICB0eXBlKSBjaGFpbiBpcyBhbiBBUEkgcGFyYW1ldGVyIGluIHRoZSBCaXRHbyBBUEksIGFuZCBtYXkgYmVcbiAqICAgICAgICAgICAgICBhbnkgdmFsaWQgQ2hhaW5Db2RlXG4gKiBAcGFyYW0gaW5kZXggZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIGNoYW5nZSBhZGRyZXNzXG4gKiBAcmV0dXJucyBQc2J0T3V0cHV0VXBkYXRlIG9iamVjdCB3aXRoIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHNidE91dHB1dFVwZGF0ZShcbiAgcHNidDogVXR4b1BzYnQsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgb3V0cHV0SW5kZXg6IG51bWJlcixcbiAgY2hhaW46IENoYWluQ29kZSxcbiAgaW5kZXg6IG51bWJlclxuKTogUHNidE91dHB1dFVwZGF0ZSB7XG4gIGlmIChwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGggPD0gb3V0cHV0SW5kZXgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgb3V0cHV0SW5kZXggKCR7b3V0cHV0SW5kZXh9KSBpcyB0b28gbGFyZ2UgZm9yIHRoZSBudW1iZXIgb2Ygb3V0cHV0cyAoJHtwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGh9KWBcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgb3V0cHV0U2NyaXB0ID0gcHNidC5nZXRPdXRwdXRTY3JpcHQob3V0cHV0SW5kZXgpO1xuICBjb25zdCBvdXRwdXQgPSBwc2J0LmRhdGEub3V0cHV0c1tvdXRwdXRJbmRleF07XG5cbiAgcmV0dXJuIGdldFBzYnRPdXRwdXRVcGRhdGVGcm9tUHNidE91dHB1dChvdXRwdXQsIG91dHB1dFNjcmlwdCwgcm9vdFdhbGxldEtleXMsIGNoYWluLCBpbmRleCk7XG59XG5cbi8qKlxuICogVXBkYXRlIHRoZSB3YWxsZXQgb3V0cHV0IHdpdGggdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIHdoZW4gbmVjZXNzYXJ5LiBJZiB0aGVcbiAqIGluZm9ybWF0aW9uIGlzIHRoZXJlIGFscmVhZHksIGl0IHdpbGwgc2tpcCBvdmVyIGl0LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZSBvdXRwdXQgc2NyaXB0IGFuZCB2YWx1ZSBoYXZlIGFscmVhZHkgYmVlbiBzZXQuXG4gKlxuICogQHBhcmFtIHBzYnQgdGhlIFBTQlQgdG8gdXBkYXRlIGNoYW5nZSBvdXRwdXQgYXRcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBvdXRwdXRJbmRleCBvdXRwdXQgaW5kZXggd2hlcmUgdG8gdXBkYXRlIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHRcbiAqICAgICAgICAgICAgICB0eXBlKSBjaGFpbiBpcyBhbiBBUEkgcGFyYW1ldGVyIGluIHRoZSBCaXRHbyBBUEksIGFuZCBtYXkgYmVcbiAqICAgICAgICAgICAgICBhbnkgdmFsaWQgQ2hhaW5Db2RlXG4gKiBAcGFyYW0gaW5kZXggZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIGNoYW5nZSBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVXYWxsZXRPdXRwdXRGb3JQc2J0KFxuICBwc2J0OiBVdHhvUHNidCxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBvdXRwdXRJbmRleDogbnVtYmVyLFxuICBjaGFpbjogQ2hhaW5Db2RlLFxuICBpbmRleDogbnVtYmVyXG4pOiB2b2lkIHtcbiAgcHNidC51cGRhdGVPdXRwdXQob3V0cHV0SW5kZXgsIGdldFBzYnRPdXRwdXRVcGRhdGUocHNidCwgcm9vdFdhbGxldEtleXMsIG91dHB1dEluZGV4LCBjaGFpbiwgaW5kZXgpKTtcbn1cblxuLyoqXG4gKiBBZGQgYSB2ZXJpZmlhYmxlIHdhbGxldCBvdXRwdXQgdG8gdGhlIFBTQlQuIFRoZSBvdXRwdXQgYW5kIGFsbCBkYXRhXG4gKiBuZWVkZWQgdG8gdmVyaWZ5IGl0IGZyb20gcHVibGljIGtleXMgb25seSBhcmUgYWRkZWQgdG8gdGhlIFBTQlQuXG4gKiBUeXBpY2FsbHkgdGhlc2UgYXJlIGNoYW5nZSBvdXRwdXRzLlxuICpcbiAqIEBwYXJhbSBwc2J0IHRoZSBQU0JUIHRvIGFkZCBjaGFuZ2Ugb3V0cHV0IHRvXG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMga2V5cyB0aGF0IHdpbGwgYmUgYWJsZSB0byBzcGVuZCB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gY2hhaW4gY2hhaW4gY29kZSB0byB1c2UgZm9yIGRlcml2aW5nIHNjcmlwdHMgKGFuZCB0byBkZXRlcm1pbmUgc2NyaXB0XG4gKiAgICAgICAgICAgICAgdHlwZSkgY2hhaW4gaXMgYW4gQVBJIHBhcmFtZXRlciBpbiB0aGUgQml0R28gQVBJLCBhbmQgbWF5IGJlXG4gKiAgICAgICAgICAgICAgYW55IHZhbGlkIENoYWluQ29kZVxuICogQHBhcmFtIGluZGV4IGRlcml2YXRpb24gaW5kZXggZm9yIHRoZSBjaGFuZ2UgYWRkcmVzc1xuICogQHBhcmFtIHZhbHVlIHZhbHVlIG9mIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRXYWxsZXRPdXRwdXRUb1BzYnQoXG4gIHBzYnQ6IFV0eG9Qc2J0LFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIGNoYWluOiBDaGFpbkNvZGUsXG4gIGluZGV4OiBudW1iZXIsXG4gIHZhbHVlOiBiaWdpbnQsXG4gIHsgYWRkRGVyaXZhdGlvbkluZm8gPSB0cnVlIH06IHsgYWRkRGVyaXZhdGlvbkluZm8/OiBib29sZWFuIH0gPSB7fVxuKTogdm9pZCB7XG4gIGNvbnN0IHdhbGxldEtleXMgPSByb290V2FsbGV0S2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCk7XG4gIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHInIHx8IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgIGNvbnN0IHBheW1lbnQgPVxuICAgICAgc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gY3JlYXRlUGF5bWVudFAydHIod2FsbGV0S2V5cy5wdWJsaWNLZXlzKSA6IGNyZWF0ZVBheW1lbnRQMnRyTXVzaWcyKHdhbGxldEtleXMucHVibGljS2V5cyk7XG4gICAgcHNidC5hZGRPdXRwdXQoeyBzY3JpcHQ6IHBheW1lbnQub3V0cHV0ISwgdmFsdWUgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyBzY3JpcHRQdWJLZXk6IHNjcmlwdCB9ID0gY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyh3YWxsZXRLZXlzLnB1YmxpY0tleXMsIHNjcmlwdFR5cGUpO1xuICAgIHBzYnQuYWRkT3V0cHV0KHsgc2NyaXB0LCB2YWx1ZSB9KTtcbiAgfVxuICBpZiAoYWRkRGVyaXZhdGlvbkluZm8pIHtcbiAgICB1cGRhdGVXYWxsZXRPdXRwdXRGb3JQc2J0KHBzYnQsIHJvb3RXYWxsZXRLZXlzLCBwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGggLSAxLCBjaGFpbiwgaW5kZXgpO1xuICB9XG59XG5cbi8qKlxuICogRm9sZCB0aGUgc2NyaXB0IGlkcyBpbnRvIGEgc2luZ2xlIHNjcmlwdCBpZCwgaWYgdGhleSBhcmUgYWxsIHRoZSBzYW1lLlxuICogQHBhcmFtIHNjcmlwdElkc1xuICovXG5mdW5jdGlvbiBmb2xkU2NyaXB0SWRzKHNjcmlwdElkczogU2NyaXB0SWRbXSk6IFNjcmlwdElkIHtcbiAgaWYgKHNjcmlwdElkcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBmb2xkIGVtcHR5IHNjcmlwdCBpZHMnKTtcbiAgfVxuICBzY3JpcHRJZHMuZm9yRWFjaCgoc2NyaXB0SWQsIGkpID0+IHtcbiAgICBpZiAoc2NyaXB0SWQuY2hhaW4gIT09IHNjcmlwdElkc1swXS5jaGFpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjaGFpbiBtaXNtYXRjaDogJHtzY3JpcHRJZC5jaGFpbn0gIT0gJHtzY3JpcHRJZHNbMF0uY2hhaW59YCk7XG4gICAgfVxuICAgIGlmIChzY3JpcHRJZC5pbmRleCAhPT0gc2NyaXB0SWRzWzBdLmluZGV4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGluZGV4IG1pc21hdGNoOiAke3NjcmlwdElkLmluZGV4fSAhPSAke3NjcmlwdElkc1swXS5pbmRleH1gKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc2NyaXB0SWRzWzBdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgc2NyaXB0IGlkIGZyb20gdGhlIG91dHB1dC5cbiAqIFRoZSBvdXRwdXQgY2FuIGhhdmUgZWl0aGVyIGJpcDMyRGVyaXZhdGlvbiBvciB0YXBCaXAzMkRlcml2YXRpb24sIGJ1dCBub3QgYm90aC5cbiAqIEBwYXJhbSBvdXRwdXRcbiAqIEB0aHJvd3MgRXJyb3IgaWYgbmVpdGhlciBvciBib3RoIGJpcDMyRGVyaXZhdGlvbiBhbmQgdGFwQmlwMzJEZXJpdmF0aW9uIGFyZSBwcmVzZW50XG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBvdXRwdXQgaXMgZW1wdHlcbiAqIEB0aHJvd3MgRXJyb3IgaWYgd2UgY2Fubm90IGZvbGQgdGhlIHNjcmlwdCBpZHMgaW50byBhIHNpbmdsZSBzY3JpcHQgaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcmlwdElkRnJvbU91dHB1dChvdXRwdXQ6IHtcbiAgYmlwMzJEZXJpdmF0aW9uPzogeyBwYXRoOiBzdHJpbmcgfVtdO1xuICB0YXBCaXAzMkRlcml2YXRpb24/OiB7IHBhdGg6IHN0cmluZyB9W107XG59KTogU2NyaXB0SWQge1xuICBpZiAob3V0cHV0LmJpcDMyRGVyaXZhdGlvbiAmJiBvdXRwdXQudGFwQmlwMzJEZXJpdmF0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgZ2V0IHNjcmlwdCBpZCBmcm9tIG91dHB1dCB3aXRoIGJvdGggYmlwMzJEZXJpdmF0aW9uIGFuZCB0YXBCaXAzMkRlcml2YXRpb24nKTtcbiAgfVxuICBpZiAob3V0cHV0LmJpcDMyRGVyaXZhdGlvbikge1xuICAgIHJldHVybiBmb2xkU2NyaXB0SWRzKG91dHB1dC5iaXAzMkRlcml2YXRpb24ubWFwKChkKSA9PiBnZXRTY3JpcHRJZEZyb21QYXRoKGQucGF0aCkpKTtcbiAgfVxuICBpZiAob3V0cHV0LnRhcEJpcDMyRGVyaXZhdGlvbikge1xuICAgIHJldHVybiBmb2xkU2NyaXB0SWRzKG91dHB1dC50YXBCaXAzMkRlcml2YXRpb24ubWFwKChkKSA9PiBnZXRTY3JpcHRJZEZyb21QYXRoKGQucGF0aCkpKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBnZXQgc2NyaXB0IGlkIGZyb20gb3V0cHV0IHdpdGhvdXQgYmlwMzJEZXJpdmF0aW9uIG9yIHRhcEJpcDMyRGVyaXZhdGlvbicpO1xufVxuIl19
|
|
@@ -8,5 +8,6 @@ export declare function getKeyTriple(seed: string): KeyTriple;
|
|
|
8
8
|
export declare function getUncompressedKeyTriple(inputs: Triple<number>): UncompressedKeyTriple;
|
|
9
9
|
export declare function getKeyName(triple: Triple<BIP32Interface>, k: BIP32Interface): string | undefined;
|
|
10
10
|
export declare function getDefaultCosigner<T>(keyset: Triple<T>, signer: T): T;
|
|
11
|
+
export declare function getWalletKeysForSeed(seed: string): RootWalletKeys;
|
|
11
12
|
export declare function getDefaultWalletKeys(): RootWalletKeys;
|
|
12
13
|
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/testutil/keys.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAA0B,cAAc,EAAe,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7G,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/C,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAE5D,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAEnD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEpD;AAaD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAEtF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAEhG;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAarE;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/testutil/keys.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAA0B,cAAc,EAAe,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7G,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/C,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAE5D,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAEnD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEpD;AAaD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAEtF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAEhG;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAarE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAEjE;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
|
|
@@ -5,6 +5,7 @@ exports.getKeyTriple = getKeyTriple;
|
|
|
5
5
|
exports.getUncompressedKeyTriple = getUncompressedKeyTriple;
|
|
6
6
|
exports.getKeyName = getKeyName;
|
|
7
7
|
exports.getDefaultCosigner = getDefaultCosigner;
|
|
8
|
+
exports.getWalletKeysForSeed = getWalletKeysForSeed;
|
|
8
9
|
exports.getDefaultWalletKeys = getDefaultWalletKeys;
|
|
9
10
|
const crypto = require("crypto");
|
|
10
11
|
const WalletKeys_1 = require("../bitgo/wallet/WalletKeys");
|
|
@@ -47,7 +48,10 @@ function getDefaultCosigner(keyset, signer) {
|
|
|
47
48
|
}
|
|
48
49
|
throw new Error(`signer not in pubkeys`);
|
|
49
50
|
}
|
|
51
|
+
function getWalletKeysForSeed(seed) {
|
|
52
|
+
return new WalletKeys_1.RootWalletKeys(getKeyTriple(seed));
|
|
53
|
+
}
|
|
50
54
|
function getDefaultWalletKeys() {
|
|
51
|
-
return
|
|
55
|
+
return getWalletKeysForSeed('default');
|
|
52
56
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0dXRpbC9rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsd0JBRUM7QUFFRCxvQ0FFQztBQWFELDREQUVDO0FBRUQsZ0NBRUM7QUFFRCxnREFhQztBQUVELG9EQUVDO0FBRUQsb0RBRUM7QUE1REQsaUNBQWlDO0FBR2pDLDJEQUE0RDtBQUM1RCxxREFBNkc7QUFDN0csMENBQXVDO0FBRXZDLE1BQU0sS0FBSyxHQUFhLElBQUEsd0JBQVksRUFBQyxlQUFHLENBQUMsQ0FBQztBQUsxQyxTQUFnQixNQUFNLENBQUMsSUFBWTtJQUNqQyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUMzRSxDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLElBQVk7SUFDdkMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsS0FBSztJQUMvQiwyQ0FBMkM7SUFDM0MsT0FBTyxrQkFBTSxDQUFDLFVBQVUsQ0FBQztRQUN2QixVQUFVLEVBQUUsS0FBSztRQUNqQixPQUFPLEVBQUUsbUJBQVEsQ0FBQyxPQUFPO1FBQ3pCLEdBQUcsRUFBRSxHQUFXLEVBQUU7WUFDaEIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQWdCLHdCQUF3QixDQUFDLE1BQXNCO0lBQzdELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZHLENBQUM7QUFFRCxTQUFnQixVQUFVLENBQUMsTUFBOEIsRUFBRSxDQUFpQjtJQUMxRSxPQUFPLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVELFNBQWdCLGtCQUFrQixDQUFJLE1BQWlCLEVBQUUsTUFBUztJQUNoRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUksRUFBRSxDQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUNyQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNyQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVELFNBQWdCLG9CQUFvQixDQUFDLElBQVk7SUFDL0MsT0FBTyxJQUFJLDJCQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVELFNBQWdCLG9CQUFvQjtJQUNsQyxPQUFPLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHsgVHJpcGxlIH0gZnJvbSAnLi4vYml0Z28vdHlwZXMnO1xuaW1wb3J0IHsgUm9vdFdhbGxldEtleXMgfSBmcm9tICcuLi9iaXRnby93YWxsZXQvV2FsbGV0S2V5cyc7XG5pbXBvcnQgeyBCSVAzMkFQSSwgQklQMzJGYWN0b3J5LCBCSVAzMkludGVyZmFjZSwgZWNjLCBFQ1BhaXIsIEVDUGFpckludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBuZXR3b3JrcyB9IGZyb20gJy4uL25ldHdvcmtzJztcblxuY29uc3QgYmlwMzI6IEJJUDMyQVBJID0gQklQMzJGYWN0b3J5KGVjYyk7XG5cbmV4cG9ydCB0eXBlIEtleVRyaXBsZSA9IFRyaXBsZTxCSVAzMkludGVyZmFjZT47XG5leHBvcnQgdHlwZSBVbmNvbXByZXNzZWRLZXlUcmlwbGUgPSBUcmlwbGU8RUNQYWlySW50ZXJmYWNlPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEtleShzZWVkOiBzdHJpbmcpOiBCSVAzMkludGVyZmFjZSB7XG4gIHJldHVybiBiaXAzMi5mcm9tU2VlZChjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHNlZWQpLmRpZ2VzdCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEtleVRyaXBsZShzZWVkOiBzdHJpbmcpOiBLZXlUcmlwbGUge1xuICByZXR1cm4gW2dldEtleShzZWVkICsgJy4wJyksIGdldEtleShzZWVkICsgJy4xJyksIGdldEtleShzZWVkICsgJy4yJyldO1xufVxuXG5mdW5jdGlvbiBnZXRVbmNvbXByZXNzZWRLZXkoaW5wdXQpIHtcbiAgLy8gVXNpbmcgaW5wdXQgZm9yIGRldGVybWluaXN0aWMgcmFuZG9tbmVzc1xuICByZXR1cm4gRUNQYWlyLm1ha2VSYW5kb20oe1xuICAgIGNvbXByZXNzZWQ6IGZhbHNlLFxuICAgIG5ldHdvcms6IG5ldHdvcmtzLnRlc3RuZXQsXG4gICAgcm5nOiAoKTogQnVmZmVyID0+IHtcbiAgICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMzIsIGlucHV0KTtcbiAgICB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVuY29tcHJlc3NlZEtleVRyaXBsZShpbnB1dHM6IFRyaXBsZTxudW1iZXI+KTogVW5jb21wcmVzc2VkS2V5VHJpcGxlIHtcbiAgcmV0dXJuIFtnZXRVbmNvbXByZXNzZWRLZXkoaW5wdXRzWzBdKSwgZ2V0VW5jb21wcmVzc2VkS2V5KGlucHV0c1sxXSksIGdldFVuY29tcHJlc3NlZEtleShpbnB1dHNbMl0pXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEtleU5hbWUodHJpcGxlOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+LCBrOiBCSVAzMkludGVyZmFjZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBbJ3VzZXInLCAnYmFja3VwJywgJ2JpdGdvJ11bdHJpcGxlLmluZGV4T2YoayldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdENvc2lnbmVyPFQ+KGtleXNldDogVHJpcGxlPFQ+LCBzaWduZXI6IFQpOiBUIHtcbiAgY29uc3QgZXEgPSAoYTogVCwgYjogVCkgPT4gYSA9PT0gYiB8fCAoQnVmZmVyLmlzQnVmZmVyKGEpICYmIEJ1ZmZlci5pc0J1ZmZlcihiKSAmJiBhLmVxdWFscyhiKSk7XG4gIGNvbnN0IFt1c2VyLCBiYWNrdXAsIGJpdGdvXSA9IGtleXNldDtcbiAgaWYgKGVxKHNpZ25lciwgdXNlcikpIHtcbiAgICByZXR1cm4gYml0Z287XG4gIH1cbiAgaWYgKGVxKHNpZ25lciwgYmFja3VwKSkge1xuICAgIHJldHVybiBiaXRnbztcbiAgfVxuICBpZiAoZXEoc2lnbmVyLCBiaXRnbykpIHtcbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYHNpZ25lciBub3QgaW4gcHVia2V5c2ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2FsbGV0S2V5c0ZvclNlZWQoc2VlZDogc3RyaW5nKTogUm9vdFdhbGxldEtleXMge1xuICByZXR1cm4gbmV3IFJvb3RXYWxsZXRLZXlzKGdldEtleVRyaXBsZShzZWVkKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0V2FsbGV0S2V5cygpOiBSb290V2FsbGV0S2V5cyB7XG4gIHJldHVybiBnZXRXYWxsZXRLZXlzRm9yU2VlZCgnZGVmYXVsdCcpO1xufVxuIl19
|
|
@@ -2,9 +2,10 @@ import { ScriptType, ScriptType2Of3 } from '../bitgo/outputScripts';
|
|
|
2
2
|
import { KeyName, RootWalletKeys, Unspent, UtxoPsbt, UtxoTransaction } from '../bitgo';
|
|
3
3
|
import { Network } from '../networks';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* This is a bit of a misnomer, as it actually specifies the spend type of the input.
|
|
6
|
+
* This makes a difference for p2trMusig2 inputs, as they can be spent either by key path or script path.
|
|
7
|
+
* The value p2trMusig2 is used for p2trMusig2 script path.
|
|
8
|
+
* The value taprootKeyPathSpend is used for p2trMusig2 key path.
|
|
8
9
|
*/
|
|
9
10
|
export type InputScriptType = ScriptType | 'taprootKeyPathSpend';
|
|
10
11
|
export type OutputScriptType = ScriptType2Of3;
|
|
@@ -21,12 +22,15 @@ export type Input = {
|
|
|
21
22
|
export type Output = {
|
|
22
23
|
value: bigint;
|
|
23
24
|
isInternalAddress?: boolean;
|
|
25
|
+
walletKeys?: RootWalletKeys | null;
|
|
24
26
|
} & ({
|
|
25
27
|
scriptType: OutputScriptType;
|
|
26
28
|
} | {
|
|
27
29
|
address: string;
|
|
28
30
|
} | {
|
|
29
31
|
script: string;
|
|
32
|
+
} | {
|
|
33
|
+
opReturn: string;
|
|
30
34
|
});
|
|
31
35
|
/**
|
|
32
36
|
* array of supported input script types.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../../../src/testutil/psbt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../../../src/testutil/psbt.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ exports.signPsbtInput = signPsbtInput;
|
|
|
7
7
|
exports.signAllPsbtInputs = signAllPsbtInputs;
|
|
8
8
|
exports.constructPsbt = constructPsbt;
|
|
9
9
|
exports.verifyFullySignedSignatures = verifyFullySignedSignatures;
|
|
10
|
+
const bitcoinjslib = require("bitcoinjs-lib");
|
|
10
11
|
const assert_1 = require("assert");
|
|
11
12
|
const outputScripts_1 = require("../bitgo/outputScripts");
|
|
12
13
|
const bitgo_1 = require("../bitgo");
|
|
@@ -103,16 +104,27 @@ function constructPsbt(inputs, outputs, network, rootWalletKeys, sign, params) {
|
|
|
103
104
|
});
|
|
104
105
|
outputs.forEach((output, i) => {
|
|
105
106
|
if ('scriptType' in output) {
|
|
106
|
-
(0, bitgo_1.addWalletOutputToPsbt)(psbt, rootWalletKeys, output.isInternalAddress ? (0, bitgo_1.getInternalChainCode)(output.scriptType) : (0, bitgo_1.getExternalChainCode)(output.scriptType), i, output.value);
|
|
107
|
+
(0, bitgo_1.addWalletOutputToPsbt)(psbt, output.walletKeys ?? rootWalletKeys, output.isInternalAddress ? (0, bitgo_1.getInternalChainCode)(output.scriptType) : (0, bitgo_1.getExternalChainCode)(output.scriptType), i, output.value, { addDerivationInfo: output.walletKeys !== null });
|
|
108
|
+
return;
|
|
107
109
|
}
|
|
108
110
|
else if ('address' in output) {
|
|
109
111
|
const { address, value } = output;
|
|
110
112
|
psbt.addOutput({ script: (0, address_1.toOutputScript)(address, network), value });
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
else if ('opReturn' in output) {
|
|
116
|
+
const { opReturn, value } = output;
|
|
117
|
+
const script = bitcoinjslib.payments.embed({ data: [Buffer.from(opReturn, 'ascii')] }).output;
|
|
118
|
+
(0, assert_1.ok)(script, 'script is required');
|
|
119
|
+
psbt.addOutput({ script, value });
|
|
120
|
+
return;
|
|
111
121
|
}
|
|
112
122
|
else if ('script' in output) {
|
|
113
123
|
const { script, value } = output;
|
|
114
124
|
psbt.addOutput({ script: Buffer.from(script, 'hex'), value });
|
|
125
|
+
return;
|
|
115
126
|
}
|
|
127
|
+
throw new Error('invalid output');
|
|
116
128
|
});
|
|
117
129
|
if (sign === 'unsigned') {
|
|
118
130
|
return psbt;
|
|
@@ -155,4 +167,4 @@ function verifyFullySignedSignatures(tx, unspents, walletKeys, signer, cosigner)
|
|
|
155
167
|
}
|
|
156
168
|
});
|
|
157
169
|
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0dXRpbC9wc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXdFQSw4QkFpQkM7QUFRRCxnQ0FLQztBQU1ELHNDQXlCQztBQU1ELDhDQWdCQztBQUtELHNDQXNFQztBQU1ELGtFQXVCQztBQW5RRCxtQ0FBc0M7QUFFdEMsMERBTWdDO0FBQ2hDLG9DQWtCa0I7QUFFbEIsaUNBQXdFO0FBQ3hFLHdDQUE0QztBQTJCNUM7Ozs7R0FJRztBQUNVLFFBQUEsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLCtCQUFlLEVBQUUscUJBQXFCLEVBQUUsa0NBQWtCLENBQVUsQ0FBQztBQUV6Rzs7R0FFRztBQUNVLFFBQUEsaUJBQWlCLEdBQUcsK0JBQWUsQ0FBQztBQUVqRDs7R0FFRztBQUNILFNBQWdCLFNBQVMsQ0FDdkIsS0FBWSxFQUNaLEtBQWEsRUFDYixPQUFnQixFQUNoQixjQUE4QjtJQUU5QixJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDcEMsT0FBTyxJQUFBLGtDQUEyQixFQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN6RyxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sS0FBSyxHQUFHLElBQUEsNEJBQW9CLEVBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakgsT0FBTyxJQUFBLHdCQUFpQixFQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQzdDLEtBQUs7WUFDTCxJQUFJLEVBQUUsS0FBSztZQUNYLElBQUksRUFBRSxjQUFjO1lBQ3BCLEtBQUs7U0FD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Q0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3BELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxNQUFNLEdBQUcsSUFBQSxrQ0FBMEIsRUFBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxRQUFRLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxJQUFJLFFBQVEsS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUMvRixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUMsQ0FBQztpQkFBTSxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN4RyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG9rIGFzIGFzc2VydCB9IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7XG4gIGNyZWF0ZU91dHB1dFNjcmlwdFAyc2hQMnBrLFxuICBTY3JpcHRUeXBlLFxuICBTY3JpcHRUeXBlMk9mMyxcbiAgc2NyaXB0VHlwZVAyc2hQMnBrLFxuICBzY3JpcHRUeXBlczJPZjMsXG59IGZyb20gJy4uL2JpdGdvL291dHB1dFNjcmlwdHMnO1xuaW1wb3J0IHtcbiAgYWRkUmVwbGF5UHJvdGVjdGlvblVuc3BlbnRUb1BzYnQsXG4gIGFkZFdhbGxldE91dHB1dFRvUHNidCxcbiAgYWRkV2FsbGV0VW5zcGVudFRvUHNidCxcbiAgY3JlYXRlUHNidEZvck5ldHdvcmssXG4gIGdldEV4dGVybmFsQ2hhaW5Db2RlLFxuICBnZXRJbnRlcm5hbENoYWluQ29kZSxcbiAgZ2V0U2lnbmF0dXJlVmVyaWZpY2F0aW9ucyxcbiAgaXNXYWxsZXRVbnNwZW50LFxuICBLZXlOYW1lLFxuICBwYXJzZVNpZ25hdHVyZVNjcmlwdDJPZjMsXG4gIFJvb3RXYWxsZXRLZXlzLFxuICB0b091dHB1dCxcbiAgVW5zcGVudCxcbiAgVXR4b1BzYnQsXG4gIFV0eG9UcmFuc2FjdGlvbixcbiAgdmVyaWZ5U2lnbmF0dXJlV2l0aFVuc3BlbnQsXG4gIGFkZFhwdWJzVG9Qc2J0LFxufSBmcm9tICcuLi9iaXRnbyc7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4vbmV0d29ya3MnO1xuaW1wb3J0IHsgbW9ja1JlcGxheVByb3RlY3Rpb25VbnNwZW50LCBtb2NrV2FsbGV0VW5zcGVudCB9IGZyb20gJy4vbW9jayc7XG5pbXBvcnQgeyB0b091dHB1dFNjcmlwdCB9IGZyb20gJy4uL2FkZHJlc3MnO1xuXG4vKipcbiAqIGlucHV0IHNjcmlwdCB0eXBlIGFuZCB2YWx1ZS5cbiAqIHVzZSBwMnRyTXVzaWcyIGZvciBwMnRyTXVzaWcyIHNjcmlwdCBwYXRoLlxuICogdXNlIHRhcHJvb3RLZXlQYXRoU3BlbmQgZm9yIHAydHJNdXNpZzIga2V5IHBhdGguXG4gKi9cbmV4cG9ydCB0eXBlIElucHV0U2NyaXB0VHlwZSA9IFNjcmlwdFR5cGUgfCAndGFwcm9vdEtleVBhdGhTcGVuZCc7XG5leHBvcnQgdHlwZSBPdXRwdXRTY3JpcHRUeXBlID0gU2NyaXB0VHlwZTJPZjM7XG5cbi8qKlxuICogaW5wdXQgc2NyaXB0IHR5cGUgYW5kIHZhbHVlXG4gKi9cbmV4cG9ydCB0eXBlIElucHV0ID0ge1xuICBzY3JpcHRUeXBlOiBJbnB1dFNjcmlwdFR5cGU7XG4gIHZhbHVlOiBiaWdpbnQ7XG59O1xuXG4vKipcbiAqIFNldCBpc0ludGVybmFsQWRkcmVzcz10cnVlIGZvciBpbnRlcm5hbCBvdXRwdXQgYWRkcmVzc1xuICovXG4vLyBNYWtlIHNjcmlwdDogc3RyaW5nIGFzIGluc3RlYWQgb2Ygc2NyaXB0VHlwZSBvciBhZGRyZXNzXG5leHBvcnQgdHlwZSBPdXRwdXQgPSB7XG4gIHZhbHVlOiBiaWdpbnQ7XG4gIGlzSW50ZXJuYWxBZGRyZXNzPzogYm9vbGVhbjtcbn0gJiAoeyBzY3JpcHRUeXBlOiBPdXRwdXRTY3JpcHRUeXBlIH0gfCB7IGFkZHJlc3M6IHN0cmluZyB9IHwgeyBzY3JpcHQ6IHN0cmluZyB9KTtcblxuLyoqXG4gKiBhcnJheSBvZiBzdXBwb3J0ZWQgaW5wdXQgc2NyaXB0IHR5cGVzLlxuICogdXNlIHAydHJNdXNpZzIgZm9yIHAydHJNdXNpZzIgc2NyaXB0IHBhdGguXG4gKiB1c2UgdGFwcm9vdEtleVBhdGhTcGVuZCBmb3IgcDJ0ck11c2lnMiBrZXkgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IGlucHV0U2NyaXB0VHlwZXMgPSBbLi4uc2NyaXB0VHlwZXMyT2YzLCAndGFwcm9vdEtleVBhdGhTcGVuZCcsIHNjcmlwdFR5cGVQMnNoUDJwa10gYXMgY29uc3Q7XG5cbi8qKlxuICogYXJyYXkgb2Ygc3VwcG9ydGVkIG91dHB1dCBzY3JpcHQgdHlwZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBvdXRwdXRTY3JpcHRUeXBlcyA9IHNjcmlwdFR5cGVzMk9mMztcblxuLyoqXG4gKiBjcmVhdGUgdW5zcGVudCBvYmplY3QgZnJvbSBpbnB1dCBzY3JpcHQgdHlwZSwgaW5kZXgsIG5ldHdvcmsgYW5kIHJvb3Qgd2FsbGV0IGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvVW5zcGVudChcbiAgaW5wdXQ6IElucHV0LFxuICBpbmRleDogbnVtYmVyLFxuICBuZXR3b3JrOiBOZXR3b3JrLFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXNcbik6IFVuc3BlbnQ8YmlnaW50PiB7XG4gIGlmIChpbnB1dC5zY3JpcHRUeXBlID09PSAncDJzaFAycGsnKSB7XG4gICAgcmV0dXJuIG1vY2tSZXBsYXlQcm90ZWN0aW9uVW5zcGVudChuZXR3b3JrLCBpbnB1dC52YWx1ZSwgeyBrZXk6IHJvb3RXYWxsZXRLZXlzWyd1c2VyJ10sIHZvdXQ6IGluZGV4IH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNoYWluID0gZ2V0SW50ZXJuYWxDaGFpbkNvZGUoaW5wdXQuc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnID8gJ3AydHJNdXNpZzInIDogaW5wdXQuc2NyaXB0VHlwZSk7XG4gICAgcmV0dXJuIG1vY2tXYWxsZXRVbnNwZW50KG5ldHdvcmssIGlucHV0LnZhbHVlLCB7XG4gICAgICBjaGFpbixcbiAgICAgIHZvdXQ6IGluZGV4LFxuICAgICAga2V5czogcm9vdFdhbGxldEtleXMsXG4gICAgICBpbmRleCxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIHJldHVybnMgc2lnbmVyIGFuZCBjb3NpZ25lciBuYW1lcyBmb3IgSW5wdXRTY3JpcHRUeXBlLlxuICogdXNlciBhbmQgdW5kZWZpbmVkIGFzIHNpZ25lciBhbmQgY29zaWduZXIgcmVzcGVjdGl2ZWx5IGZvciBwMnNoUDJway5cbiAqIHVzZXIgYW5kIGJhY2t1cCBhcyBzaWduZXIgYW5kIGNvc2lnbmVyIHJlc3BlY3RpdmVseSBmb3IgcDJ0ck11c2lnMi5cbiAqIHVzZXIgYW5kIGJpdGdvIGFzIHNpZ25lciBhbmQgY29zaWduZXIgcmVzcGVjdGl2ZWx5IGZvciBvdGhlciBpbnB1dCBzY3JpcHQgdHlwZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaWduZXJzKGlucHV0VHlwZTogSW5wdXRTY3JpcHRUeXBlKTogeyBzaWduZXJOYW1lOiBLZXlOYW1lOyBjb3NpZ25lck5hbWU/OiBLZXlOYW1lIH0ge1xuICByZXR1cm4ge1xuICAgIHNpZ25lck5hbWU6ICd1c2VyJyxcbiAgICBjb3NpZ25lck5hbWU6IGlucHV0VHlwZSA9PT0gJ3Ayc2hQMnBrJyA/IHVuZGVmaW5lZCA6IGlucHV0VHlwZSA9PT0gJ3AydHJNdXNpZzInID8gJ2JhY2t1cCcgOiAnYml0Z28nLFxuICB9O1xufVxuXG4vKipcbiAqIHNpZ25zIHdpdGggZmlyc3Qgb3Igc2Vjb25kIHNpZ25hdHVyZSBmb3Igc2luZ2xlIGlucHV0LlxuICogcDJzaFAycGsgaXMgc2lnbmVkIG9ubHkgd2l0aCBmaXJzdCBzaWduLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnblBzYnRJbnB1dChcbiAgcHNidDogVXR4b1BzYnQsXG4gIGlucHV0OiBJbnB1dCxcbiAgaW5wdXRJbmRleDogbnVtYmVyLFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIHNpZ246ICdoYWxmc2lnbmVkJyB8ICdmdWxsc2lnbmVkJyxcbiAgcGFyYW1zPzoge1xuICAgIHNpZ25lcnM/OiB7IHNpZ25lck5hbWU6IEtleU5hbWU7IGNvc2lnbmVyTmFtZT86IEtleU5hbWUgfTtcbiAgICBkZXRlcm1pbmlzdGljPzogYm9vbGVhbjtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkga2VlcCB0aGlzIGhlcmUuXG4gICAgc2tpcE5vbldpdG5lc3NVdHhvPzogYm9vbGVhbjtcbiAgfVxuKTogdm9pZCB7XG4gIGNvbnN0IHsgc2lnbmVycywgZGV0ZXJtaW5pc3RpYyB9ID0gcGFyYW1zID8/IHt9O1xuICBjb25zdCB7IHNpZ25lck5hbWUsIGNvc2lnbmVyTmFtZSB9ID0gc2lnbmVycyA/IHNpZ25lcnMgOiBnZXRTaWduZXJzKGlucHV0LnNjcmlwdFR5cGUpO1xuICBpZiAoc2lnbiA9PT0gJ2hhbGZzaWduZWQnKSB7XG4gICAgaWYgKGlucHV0LnNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycpIHtcbiAgICAgIHBzYnQuc2lnbklucHV0KGlucHV0SW5kZXgsIHJvb3RXYWxsZXRLZXlzW3NpZ25lck5hbWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHNidC5zaWduSW5wdXRIRChpbnB1dEluZGV4LCByb290V2FsbGV0S2V5c1tzaWduZXJOYW1lXSk7XG4gICAgfVxuICB9XG4gIGlmIChzaWduID09PSAnZnVsbHNpZ25lZCcgJiYgY29zaWduZXJOYW1lICYmIGlucHV0LnNjcmlwdFR5cGUgIT09ICdwMnNoUDJwaycpIHtcbiAgICBwc2J0LnNpZ25JbnB1dEhEKGlucHV0SW5kZXgsIHJvb3RXYWxsZXRLZXlzW2Nvc2lnbmVyTmFtZV0sIHsgZGV0ZXJtaW5pc3RpYyB9KTtcbiAgfVxufVxuXG4vKipcbiAqIHNpZ25zIHdpdGggZmlyc3Qgb3Igc2Vjb25kIHNpZ25hdHVyZSBmb3IgYWxsIGlucHV0cy5cbiAqIHAyc2hQMnBrIGlzIHNpZ25lZCBvbmx5IHdpdGggZmlyc3Qgc2lnbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25BbGxQc2J0SW5wdXRzKFxuICBwc2J0OiBVdHhvUHNidCxcbiAgaW5wdXRzOiBJbnB1dFtdLFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIHNpZ246ICdoYWxmc2lnbmVkJyB8ICdmdWxsc2lnbmVkJyxcbiAgcGFyYW1zPzoge1xuICAgIHNpZ25lcnM/OiB7IHNpZ25lck5hbWU6IEtleU5hbWU7IGNvc2lnbmVyTmFtZT86IEtleU5hbWUgfTtcbiAgICBkZXRlcm1pbmlzdGljPzogYm9vbGVhbjtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkga2VlcCB0aGlzIGhlcmUuXG4gICAgc2tpcE5vbldpdG5lc3NVdHhvPzogYm9vbGVhbjtcbiAgfVxuKTogdm9pZCB7XG4gIGNvbnN0IHsgc2lnbmVycywgZGV0ZXJtaW5pc3RpYyB9ID0gcGFyYW1zID8/IHt9O1xuICBpbnB1dHMuZm9yRWFjaCgoaW5wdXQsIGlucHV0SW5kZXgpID0+IHtcbiAgICBzaWduUHNidElucHV0KHBzYnQsIGlucHV0LCBpbnB1dEluZGV4LCByb290V2FsbGV0S2V5cywgc2lnbiwgeyBzaWduZXJzLCBkZXRlcm1pbmlzdGljIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBjb25zdHJ1Y3QgcHNidCBmb3IgZ2l2ZW4gaW5wdXRzLCBvdXRwdXRzLCBuZXR3b3JrIGFuZCByb290IHdhbGxldCBrZXlzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0UHNidChcbiAgaW5wdXRzOiBJbnB1dFtdLFxuICBvdXRwdXRzOiBPdXRwdXRbXSxcbiAgbmV0d29yazogTmV0d29yayxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBzaWduOiAndW5zaWduZWQnIHwgJ2hhbGZzaWduZWQnIHwgJ2Z1bGxzaWduZWQnLFxuICBwYXJhbXM/OiB7XG4gICAgc2lnbmVycz86IHsgc2lnbmVyTmFtZTogS2V5TmFtZTsgY29zaWduZXJOYW1lPzogS2V5TmFtZSB9O1xuICAgIGRldGVybWluaXN0aWM/OiBib29sZWFuO1xuICAgIHNraXBOb25XaXRuZXNzVXR4bz86IGJvb2xlYW47XG4gICAgYWRkR2xvYmFsWFB1YnM/OiBib29sZWFuO1xuICB9XG4pOiBVdHhvUHNidCB7XG4gIGNvbnN0IHsgc2lnbmVycywgZGV0ZXJtaW5pc3RpYywgc2tpcE5vbldpdG5lc3NVdHhvIH0gPSBwYXJhbXMgPz8ge307XG4gIGNvbnN0IHRvdGFsSW5wdXRBbW91bnQgPSBpbnB1dHMucmVkdWNlKChzdW0sIGlucHV0KSA9PiBzdW0gKyBpbnB1dC52YWx1ZSwgQmlnSW50KDApKTtcbiAgY29uc3Qgb3V0cHV0SW5wdXRBbW91bnQgPSBvdXRwdXRzLnJlZHVjZSgoc3VtLCBvdXRwdXQpID0+IHN1bSArIG91dHB1dC52YWx1ZSwgQmlnSW50KDApKTtcbiAgYXNzZXJ0KHRvdGFsSW5wdXRBbW91bnQgPj0gb3V0cHV0SW5wdXRBbW91bnQsICd0b3RhbCBvdXRwdXQgY2FuIG5vdCBleGNlZWQgdG90YWwgaW5wdXQnKTtcblxuICBjb25zdCBwc2J0ID0gY3JlYXRlUHNidEZvck5ldHdvcmsoeyBuZXR3b3JrIH0pO1xuICBjb25zdCB1bnNwZW50cyA9IGlucHV0cy5tYXAoKGlucHV0LCBpKSA9PiB0b1Vuc3BlbnQoaW5wdXQsIGksIG5ldHdvcmssIHJvb3RXYWxsZXRLZXlzKSk7XG5cbiAgdW5zcGVudHMuZm9yRWFjaCgodSwgaSkgPT4ge1xuICAgIGNvbnN0IHsgc2lnbmVyTmFtZSwgY29zaWduZXJOYW1lIH0gPSBzaWduZXJzID8gc2lnbmVycyA6IGdldFNpZ25lcnMoaW5wdXRzW2ldLnNjcmlwdFR5cGUpO1xuICAgIGlmIChpc1dhbGxldFVuc3BlbnQodSkgJiYgY29zaWduZXJOYW1lKSB7XG4gICAgICBhZGRXYWxsZXRVbnNwZW50VG9Qc2J0KHBzYnQsIHUsIHJvb3RXYWxsZXRLZXlzLCBzaWduZXJOYW1lLCBjb3NpZ25lck5hbWUsIHsgc2tpcE5vbldpdG5lc3NVdHhvIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IHJlZGVlbVNjcmlwdCB9ID0gY3JlYXRlT3V0cHV0U2NyaXB0UDJzaFAycGsocm9vdFdhbGxldEtleXNbc2lnbmVyTmFtZV0ucHVibGljS2V5KTtcbiAgICAgIGFzc2VydChyZWRlZW1TY3JpcHQpO1xuICAgICAgYWRkUmVwbGF5UHJvdGVjdGlvblVuc3BlbnRUb1BzYnQocHNidCwgdSwgcmVkZWVtU2NyaXB0LCB7IHNraXBOb25XaXRuZXNzVXR4byB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIG91dHB1dHMuZm9yRWFjaCgob3V0cHV0LCBpKSA9PiB7XG4gICAgaWYgKCdzY3JpcHRUeXBlJyBpbiBvdXRwdXQpIHtcbiAgICAgIGFkZFdhbGxldE91dHB1dFRvUHNidChcbiAgICAgICAgcHNidCxcbiAgICAgICAgcm9vdFdhbGxldEtleXMsXG4gICAgICAgIG91dHB1dC5pc0ludGVybmFsQWRkcmVzcyA/IGdldEludGVybmFsQ2hhaW5Db2RlKG91dHB1dC5zY3JpcHRUeXBlKSA6IGdldEV4dGVybmFsQ2hhaW5Db2RlKG91dHB1dC5zY3JpcHRUeXBlKSxcbiAgICAgICAgaSxcbiAgICAgICAgb3V0cHV0LnZhbHVlXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoJ2FkZHJlc3MnIGluIG91dHB1dCkge1xuICAgICAgY29uc3QgeyBhZGRyZXNzLCB2YWx1ZSB9ID0gb3V0cHV0O1xuICAgICAgcHNidC5hZGRPdXRwdXQoeyBzY3JpcHQ6IHRvT3V0cHV0U2NyaXB0KGFkZHJlc3MsIG5ldHdvcmspLCB2YWx1ZSB9KTtcbiAgICB9IGVsc2UgaWYgKCdzY3JpcHQnIGluIG91dHB1dCkge1xuICAgICAgY29uc3QgeyBzY3JpcHQsIHZhbHVlIH0gPSBvdXRwdXQ7XG4gICAgICBwc2J0LmFkZE91dHB1dCh7IHNjcmlwdDogQnVmZmVyLmZyb20oc2NyaXB0LCAnaGV4JyksIHZhbHVlIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHNpZ24gPT09ICd1bnNpZ25lZCcpIHtcbiAgICByZXR1cm4gcHNidDtcbiAgfVxuXG4gIC8qIHVzZSBmaXhlZCBzZXNzaW9uSWQgZm9yIGRldGVybWluaXN0aWMgbm9uY2UgY3JlYXRpb24gKi9cbiAgY29uc3Qgc2Vzc2lvbklkID0gQnVmZmVyLmFsbG9jKDMyKTtcbiAgcHNidC5zZXRBbGxJbnB1dHNNdXNpZzJOb25jZUhEKHJvb3RXYWxsZXRLZXlzWyd1c2VyJ10sIHsgc2Vzc2lvbklkIH0pO1xuICBwc2J0LnNldEFsbElucHV0c011c2lnMk5vbmNlSEQocm9vdFdhbGxldEtleXNbJ2JpdGdvJ10sIHsgZGV0ZXJtaW5pc3RpYyB9KTtcblxuICBzaWduQWxsUHNidElucHV0cyhwc2J0LCBpbnB1dHMsIHJvb3RXYWxsZXRLZXlzLCAnaGFsZnNpZ25lZCcsIHsgc2lnbmVycywgc2tpcE5vbldpdG5lc3NVdHhvIH0pO1xuXG4gIGlmIChzaWduID09PSAnZnVsbHNpZ25lZCcpIHtcbiAgICBzaWduQWxsUHNidElucHV0cyhwc2J0LCBpbnB1dHMsIHJvb3RXYWxsZXRLZXlzLCBzaWduLCB7IHNpZ25lcnMsIGRldGVybWluaXN0aWMsIHNraXBOb25XaXRuZXNzVXR4byB9KTtcbiAgfVxuXG4gIGlmIChwYXJhbXM/LmFkZEdsb2JhbFhQdWJzKSB7XG4gICAgYWRkWHB1YnNUb1BzYnQocHNidCwgcm9vdFdhbGxldEtleXMpO1xuICB9XG5cbiAgcmV0dXJuIHBzYnQ7XG59XG5cbi8qKlxuICogVmVyaWZpZXMgc2lnbmF0dXJlcyBvZiBmdWxseSBzaWduZWQgdHggKHdpdGggdGFwcm9vdCBrZXkgcGF0aCBzdXBwb3J0KS5cbiAqIE5PVEU6IHRhcHJvb3Qga2V5IHBhdGggdHggY2FuIG9ubHkgYmUgYnVpbHQgYW5kIHNpZ25lZCB3aXRoIFBTQlQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlGdWxseVNpZ25lZFNpZ25hdHVyZXMoXG4gIHR4OiBVdHhvVHJhbnNhY3Rpb248YmlnaW50PixcbiAgdW5zcGVudHM6IFVuc3BlbnQ8YmlnaW50PltdLFxuICB3YWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgc2lnbmVyOiBLZXlOYW1lLFxuICBjb3NpZ25lcjogS2V5TmFtZVxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHByZXZPdXRwdXRzID0gdW5zcGVudHMubWFwKCh1KSA9PiB0b091dHB1dCh1LCB0eC5uZXR3b3JrKSk7XG4gIHJldHVybiB1bnNwZW50cy5ldmVyeSgodSwgaW5kZXgpID0+IHtcbiAgICBpZiAocGFyc2VTaWduYXR1cmVTY3JpcHQyT2YzKHR4Lmluc1tpbmRleF0pLnNjcmlwdFR5cGUgPT09ICd0YXByb290S2V5UGF0aFNwZW5kJykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0U2lnbmF0dXJlVmVyaWZpY2F0aW9ucyh0eCwgaW5kZXgsIHUudmFsdWUsIHVuZGVmaW5lZCwgcHJldk91dHB1dHMpO1xuICAgICAgcmV0dXJuIHJlc3VsdC5sZW5ndGggPT09IDEgJiYgcmVzdWx0WzBdLnNpZ25hdHVyZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdmVyaWZ5U2lnbmF0dXJlV2l0aFVuc3BlbnQodHgsIGluZGV4LCB1bnNwZW50cywgd2FsbGV0S2V5cyk7XG4gICAgICBpZiAoKHNpZ25lciA9PT0gJ3VzZXInICYmIGNvc2lnbmVyID09PSAnYml0Z28nKSB8fCAoc2lnbmVyID09PSAnYml0Z28nICYmIGNvc2lnbmVyID09PSAndXNlcicpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHRbMF0gJiYgIXJlc3VsdFsxXSAmJiByZXN1bHRbMl07XG4gICAgICB9IGVsc2UgaWYgKChzaWduZXIgPT09ICd1c2VyJyAmJiBjb3NpZ25lciA9PT0gJ2JhY2t1cCcpIHx8IChzaWduZXIgPT09ICdiYWNrdXAnICYmIGNvc2lnbmVyID09PSAndXNlcicpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHRbMF0gJiYgcmVzdWx0WzFdICYmICFyZXN1bHRbMl07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gIXJlc3VsdFswXSAmJiByZXN1bHRbMV0gJiYgcmVzdWx0WzJdO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0dXRpbC9wc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQThFQSw4QkFpQkM7QUFRRCxnQ0FLQztBQU1ELHNDQXlCQztBQU1ELDhDQWdCQztBQUtELHNDQWtGQztBQU1ELGtFQXVCQztBQXJSRCw4Q0FBOEM7QUFDOUMsbUNBQXNDO0FBRXRDLDBEQU1nQztBQUNoQyxvQ0FrQmtCO0FBRWxCLGlDQUF3RTtBQUN4RSx3Q0FBNEM7QUFnQzVDOzs7O0dBSUc7QUFDVSxRQUFBLGdCQUFnQixHQUFHLENBQUMsR0FBRywrQkFBZSxFQUFFLHFCQUFxQixFQUFFLGtDQUFrQixDQUFVLENBQUM7QUFFekc7O0dBRUc7QUFDVSxRQUFBLGlCQUFpQixHQUFHLCtCQUFlLENBQUM7QUFFakQ7O0dBRUc7QUFDSCxTQUFnQixTQUFTLENBQ3ZCLEtBQVksRUFDWixLQUFhLEVBQ2IsT0FBZ0IsRUFDaEIsY0FBOEI7SUFFOUIsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBQSxrQ0FBMkIsRUFBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekcsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLEtBQUssR0FBRyxJQUFBLDRCQUFvQixFQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUsscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pILE9BQU8sSUFBQSx3QkFBaUIsRUFBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRTtZQUM3QyxLQUFLO1lBQ0wsSUFBSSxFQUFFLEtBQUs7WUFDWCxJQUFJLEVBQUUsY0FBYztZ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UUFBUSxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDeEcsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiaXRjb2luanNsaWIgZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgeyBvayBhcyBhc3NlcnQgfSBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQge1xuICBjcmVhdGVPdXRwdXRTY3JpcHRQMnNoUDJwayxcbiAgU2NyaXB0VHlwZSxcbiAgU2NyaXB0VHlwZTJPZjMsXG4gIHNjcmlwdFR5cGVQMnNoUDJwayxcbiAgc2NyaXB0VHlwZXMyT2YzLFxufSBmcm9tICcuLi9iaXRnby9vdXRwdXRTY3JpcHRzJztcbmltcG9ydCB7XG4gIGFkZFJlcGxheVByb3RlY3Rpb25VbnNwZW50VG9Qc2J0LFxuICBhZGRXYWxsZXRPdXRwdXRUb1BzYnQsXG4gIGFkZFdhbGxldFVuc3BlbnRUb1BzYnQsXG4gIGNyZWF0ZVBzYnRGb3JOZXR3b3JrLFxuICBnZXRFeHRlcm5hbENoYWluQ29kZSxcbiAgZ2V0SW50ZXJuYWxDaGFpbkNvZGUsXG4gIGdldFNpZ25hdHVyZVZlcmlmaWNhdGlvbnMsXG4gIGlzV2FsbGV0VW5zcGVudCxcbiAgS2V5TmFtZSxcbiAgcGFyc2VTaWduYXR1cmVTY3JpcHQyT2YzLFxuICBSb290V2FsbGV0S2V5cyxcbiAgdG9PdXRwdXQsXG4gIFVuc3BlbnQsXG4gIFV0eG9Qc2J0LFxuICBVdHhvVHJhbnNhY3Rpb24sXG4gIHZlcmlmeVNpZ25hdHVyZVdpdGhVbnNwZW50LFxuICBhZGRYcHVic1RvUHNidCxcbn0gZnJvbSAnLi4vYml0Z28nO1xuaW1wb3J0IHsgTmV0d29yayB9IGZyb20gJy4uL25ldHdvcmtzJztcbmltcG9ydCB7IG1vY2tSZXBsYXlQcm90ZWN0aW9uVW5zcGVudCwgbW9ja1dhbGxldFVuc3BlbnQgfSBmcm9tICcuL21vY2snO1xuaW1wb3J0IHsgdG9PdXRwdXRTY3JpcHQgfSBmcm9tICcuLi9hZGRyZXNzJztcblxuLyoqXG4gKiBUaGlzIGlzIGEgYml0IG9mIGEgbWlzbm9tZXIsIGFzIGl0IGFjdHVhbGx5IHNwZWNpZmllcyB0aGUgc3BlbmQgdHlwZSBvZiB0aGUgaW5wdXQuXG4gKiBUaGlzIG1ha2VzIGEgZGlmZmVyZW5jZSBmb3IgcDJ0ck11c2lnMiBpbnB1dHMsIGFzIHRoZXkgY2FuIGJlIHNwZW50IGVpdGhlciBieSBrZXkgcGF0aCBvciBzY3JpcHQgcGF0aC5cbiAqIFRoZSB2YWx1ZSBwMnRyTXVzaWcyIGlzIHVzZWQgZm9yIHAydHJNdXNpZzIgc2NyaXB0IHBhdGguXG4gKiBUaGUgdmFsdWUgdGFwcm9vdEtleVBhdGhTcGVuZCBpcyB1c2VkIGZvciBwMnRyTXVzaWcyIGtleSBwYXRoLlxuICovXG5leHBvcnQgdHlwZSBJbnB1dFNjcmlwdFR5cGUgPSBTY3JpcHRUeXBlIHwgJ3RhcHJvb3RLZXlQYXRoU3BlbmQnO1xuZXhwb3J0IHR5cGUgT3V0cHV0U2NyaXB0VHlwZSA9IFNjcmlwdFR5cGUyT2YzO1xuXG4vKipcbiAqIGlucHV0IHNjcmlwdCB0eXBlIGFuZCB2YWx1ZVxuICovXG5leHBvcnQgdHlwZSBJbnB1dCA9IHtcbiAgc2NyaXB0VHlwZTogSW5wdXRTY3JpcHRUeXBlO1xuICB2YWx1ZTogYmlnaW50O1xufTtcblxuLyoqXG4gKiBTZXQgaXNJbnRlcm5hbEFkZHJlc3M9dHJ1ZSBmb3IgaW50ZXJuYWwgb3V0cHV0IGFkZHJlc3NcbiAqL1xuLy8gTWFrZSBzY3JpcHQ6IHN0cmluZyBhcyBpbnN0ZWFkIG9mIHNjcmlwdFR5cGUgb3IgYWRkcmVzc1xuZXhwb3J0IHR5cGUgT3V0cHV0ID0ge1xuICB2YWx1ZTogYmlnaW50O1xuICAvLyBEZXRlcm1pbmVzIGNoYWluIGNvZGUgZm9yIHRoZSBvdXRwdXRcbiAgaXNJbnRlcm5hbEFkZHJlc3M/OiBib29sZWFuO1xuICAvLyBEZXRlcm1pbmVzIHRoZSB3YWxsZXQga2V5cyB0byB1c2UgZm9yIHRoZSBvdXRwdXQuIEJ5IGRlZmF1bHQgdXNlIHJvb3Qgd2FsbGV0IGtleXMgdXNlZCBmb3IgdGhlIGlucHV0cy5cbiAgLy8gV2hlbiBzZXQgdG8gbnVsbCwgb21pdHMgdGhlIGRlcml2YXRpb24gaW5mbyBhbmQgZWZmZWN0aXZlbHkgbWFrZXMgdGhlIG91dHB1dCBub24td2FsbGV0IG91dHB1dC5cbiAgd2FsbGV0S2V5cz86IFJvb3RXYWxsZXRLZXlzIHwgbnVsbDtcbn0gJiAoeyBzY3JpcHRUeXBlOiBPdXRwdXRTY3JpcHRUeXBlIH0gfCB7IGFkZHJlc3M6IHN0cmluZyB9IHwgeyBzY3JpcHQ6IHN0cmluZyB9IHwgeyBvcFJldHVybjogc3RyaW5nIH0pO1xuXG4vKipcbiAqIGFycmF5IG9mIHN1cHBvcnRlZCBpbnB1dCBzY3JpcHQgdHlwZXMuXG4gKiB1c2UgcDJ0ck11c2lnMiBmb3IgcDJ0ck11c2lnMiBzY3JpcHQgcGF0aC5cbiAqIHVzZSB0YXByb290S2V5UGF0aFNwZW5kIGZvciBwMnRyTXVzaWcyIGtleSBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgaW5wdXRTY3JpcHRUeXBlcyA9IFsuLi5zY3JpcHRUeXBlczJPZjMsICd0YXByb290S2V5UGF0aFNwZW5kJywgc2NyaXB0VHlwZVAyc2hQMnBrXSBhcyBjb25zdDtcblxuLyoqXG4gKiBhcnJheSBvZiBzdXBwb3J0ZWQgb3V0cHV0IHNjcmlwdCB0eXBlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IG91dHB1dFNjcmlwdFR5cGVzID0gc2NyaXB0VHlwZXMyT2YzO1xuXG4vKipcbiAqIGNyZWF0ZSB1bnNwZW50IG9iamVjdCBmcm9tIGlucHV0IHNjcmlwdCB0eXBlLCBpbmRleCwgbmV0d29yayBhbmQgcm9vdCB3YWxsZXQga2V5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9VbnNwZW50KFxuICBpbnB1dDogSW5wdXQsXG4gIGluZGV4OiBudW1iZXIsXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5c1xuKTogVW5zcGVudDxiaWdpbnQ+IHtcbiAgaWYgKGlucHV0LnNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycpIHtcbiAgICByZXR1cm4gbW9ja1JlcGxheVByb3RlY3Rpb25VbnNwZW50KG5ldHdvcmssIGlucHV0LnZhbHVlLCB7IGtleTogcm9vdFdhbGxldEtleXNbJ3VzZXInXSwgdm91dDogaW5kZXggfSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY2hhaW4gPSBnZXRJbnRlcm5hbENoYWluQ29kZShpbnB1dC5zY3JpcHRUeXBlID09PSAndGFwcm9vdEtleVBhdGhTcGVuZCcgPyAncDJ0ck11c2lnMicgOiBpbnB1dC5zY3JpcHRUeXBlKTtcbiAgICByZXR1cm4gbW9ja1dhbGxldFVuc3BlbnQobmV0d29yaywgaW5wdXQudmFsdWUsIHtcbiAgICAgIGNoYWluLFxuICAgICAgdm91dDogaW5kZXgsXG4gICAgICBrZXlzOiByb290V2FsbGV0S2V5cyxcbiAgICAgIGluZGV4LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogcmV0dXJucyBzaWduZXIgYW5kIGNvc2lnbmVyIG5hbWVzIGZvciBJbnB1dFNjcmlwdFR5cGUuXG4gKiB1c2VyIGFuZCB1bmRlZmluZWQgYXMgc2lnbmVyIGFuZCBjb3NpZ25lciByZXNwZWN0aXZlbHkgZm9yIHAyc2hQMnBrLlxuICogdXNlciBhbmQgYmFja3VwIGFzIHNpZ25lciBhbmQgY29zaWduZXIgcmVzcGVjdGl2ZWx5IGZvciBwMnRyTXVzaWcyLlxuICogdXNlciBhbmQgYml0Z28gYXMgc2lnbmVyIGFuZCBjb3NpZ25lciByZXNwZWN0aXZlbHkgZm9yIG90aGVyIGlucHV0IHNjcmlwdCB0eXBlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNpZ25lcnMoaW5wdXRUeXBlOiBJbnB1dFNjcmlwdFR5cGUpOiB7IHNpZ25lck5hbWU6IEtleU5hbWU7IGNvc2lnbmVyTmFtZT86IEtleU5hbWUgfSB7XG4gIHJldHVybiB7XG4gICAgc2lnbmVyTmFtZTogJ3VzZXInLFxuICAgIGNvc2lnbmVyTmFtZTogaW5wdXRUeXBlID09PSAncDJzaFAycGsnID8gdW5kZWZpbmVkIDogaW5wdXRUeXBlID09PSAncDJ0ck11c2lnMicgPyAnYmFja3VwJyA6ICdiaXRnbycsXG4gIH07XG59XG5cbi8qKlxuICogc2lnbnMgd2l0aCBmaXJzdCBvciBzZWNvbmQgc2lnbmF0dXJlIGZvciBzaW5nbGUgaW5wdXQuXG4gKiBwMnNoUDJwayBpcyBzaWduZWQgb25seSB3aXRoIGZpcnN0IHNpZ24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduUHNidElucHV0KFxuICBwc2J0OiBVdHhvUHNidCxcbiAgaW5wdXQ6IElucHV0LFxuICBpbnB1dEluZGV4OiBudW1iZXIsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgc2lnbjogJ2hhbGZzaWduZWQnIHwgJ2Z1bGxzaWduZWQnLFxuICBwYXJhbXM/OiB7XG4gICAgc2lnbmVycz86IHsgc2lnbmVyTmFtZTogS2V5TmFtZTsgY29zaWduZXJOYW1lPzogS2V5TmFtZSB9O1xuICAgIGRldGVybWluaXN0aWM/OiBib29sZWFuO1xuICAgIC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBrZWVwIHRoaXMgaGVyZS5cbiAgICBza2lwTm9uV2l0bmVzc1V0eG8/OiBib29sZWFuO1xuICB9XG4pOiB2b2lkIHtcbiAgY29uc3QgeyBzaWduZXJzLCBkZXRlcm1pbmlzdGljIH0gPSBwYXJhbXMgPz8ge307XG4gIGNvbnN0IHsgc2lnbmVyTmFtZSwgY29zaWduZXJOYW1lIH0gPSBzaWduZXJzID8gc2lnbmVycyA6IGdldFNpZ25lcnMoaW5wdXQuc2NyaXB0VHlwZSk7XG4gIGlmIChzaWduID09PSAnaGFsZnNpZ25lZCcpIHtcbiAgICBpZiAoaW5wdXQuc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMnBrJykge1xuICAgICAgcHNidC5zaWduSW5wdXQoaW5wdXRJbmRleCwgcm9vdFdhbGxldEtleXNbc2lnbmVyTmFtZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwc2J0LnNpZ25JbnB1dEhEKGlucHV0SW5kZXgsIHJvb3RXYWxsZXRLZXlzW3NpZ25lck5hbWVdKTtcbiAgICB9XG4gIH1cbiAgaWYgKHNpZ24gPT09ICdmdWxsc2lnbmVkJyAmJiBjb3NpZ25lck5hbWUgJiYgaW5wdXQuc2NyaXB0VHlwZSAhPT0gJ3Ayc2hQMnBrJykge1xuICAgIHBzYnQuc2lnbklucHV0SEQoaW5wdXRJbmRleCwgcm9vdFdhbGxldEtleXNbY29zaWduZXJOYW1lXSwgeyBkZXRlcm1pbmlzdGljIH0pO1xuICB9XG59XG5cbi8qKlxuICogc2lnbnMgd2l0aCBmaXJzdCBvciBzZWNvbmQgc2lnbmF0dXJlIGZvciBhbGwgaW5wdXRzLlxuICogcDJzaFAycGsgaXMgc2lnbmVkIG9ubHkgd2l0aCBmaXJzdCBzaWduLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbkFsbFBzYnRJbnB1dHMoXG4gIHBzYnQ6IFV0eG9Qc2J0LFxuICBpbnB1dHM6IElucHV0W10sXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgc2lnbjogJ2hhbGZzaWduZWQnIHwgJ2Z1bGxzaWduZWQnLFxuICBwYXJhbXM/OiB7XG4gICAgc2lnbmVycz86IHsgc2lnbmVyTmFtZTogS2V5TmFtZTsgY29zaWduZXJOYW1lPzogS2V5TmFtZSB9O1xuICAgIGRldGVybWluaXN0aWM/OiBib29sZWFuO1xuICAgIC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBrZWVwIHRoaXMgaGVyZS5cbiAgICBza2lwTm9uV2l0bmVzc1V0eG8/OiBib29sZWFuO1xuICB9XG4pOiB2b2lkIHtcbiAgY29uc3QgeyBzaWduZXJzLCBkZXRlcm1pbmlzdGljIH0gPSBwYXJhbXMgPz8ge307XG4gIGlucHV0cy5mb3JFYWNoKChpbnB1dCwgaW5wdXRJbmRleCkgPT4ge1xuICAgIHNpZ25Qc2J0SW5wdXQocHNidCwgaW5wdXQsIGlucHV0SW5kZXgsIHJvb3RXYWxsZXRLZXlzLCBzaWduLCB7IHNpZ25lcnMsIGRldGVybWluaXN0aWMgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIGNvbnN0cnVjdCBwc2J0IGZvciBnaXZlbiBpbnB1dHMsIG91dHB1dHMsIG5ldHdvcmsgYW5kIHJvb3Qgd2FsbGV0IGtleXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RQc2J0KFxuICBpbnB1dHM6IElucHV0W10sXG4gIG91dHB1dHM6IE91dHB1dFtdLFxuICBuZXR3b3JrOiBOZXR3b3JrLFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIHNpZ246ICd1bnNpZ25lZCcgfCAnaGFsZnNpZ25lZCcgfCAnZnVsbHNpZ25lZCcsXG4gIHBhcmFtcz86IHtcbiAgICBzaWduZXJzPzogeyBzaWduZXJOYW1lOiBLZXlOYW1lOyBjb3NpZ25lck5hbWU/OiBLZXlOYW1lIH07XG4gICAgZGV0ZXJtaW5pc3RpYz86IGJvb2xlYW47XG4gICAgc2tpcE5vbldpdG5lc3NVdHhvPzogYm9vbGVhbjtcbiAgICBhZGRHbG9iYWxYUHVicz86IGJvb2xlYW47XG4gIH1cbik6IFV0eG9Qc2J0IHtcbiAgY29uc3QgeyBzaWduZXJzLCBkZXRlcm1pbmlzdGljLCBza2lwTm9uV2l0bmVzc1V0eG8gfSA9IHBhcmFtcyA/PyB7fTtcbiAgY29uc3QgdG90YWxJbnB1dEFtb3VudCA9IGlucHV0cy5yZWR1Y2UoKHN1bSwgaW5wdXQpID0+IHN1bSArIGlucHV0LnZhbHVlLCBCaWdJbnQoMCkpO1xuICBjb25zdCBvdXRwdXRJbnB1dEFtb3VudCA9IG91dHB1dHMucmVkdWNlKChzdW0sIG91dHB1dCkgPT4gc3VtICsgb3V0cHV0LnZhbHVlLCBCaWdJbnQoMCkpO1xuICBhc3NlcnQodG90YWxJbnB1dEFtb3VudCA+PSBvdXRwdXRJbnB1dEFtb3VudCwgJ3RvdGFsIG91dHB1dCBjYW4gbm90IGV4Y2VlZCB0b3RhbCBpbnB1dCcpO1xuXG4gIGNvbnN0IHBzYnQgPSBjcmVhdGVQc2J0Rm9yTmV0d29yayh7IG5ldHdvcmsgfSk7XG4gIGNvbnN0IHVuc3BlbnRzID0gaW5wdXRzLm1hcCgoaW5wdXQsIGkpID0+IHRvVW5zcGVudChpbnB1dCwgaSwgbmV0d29yaywgcm9vdFdhbGxldEtleXMpKTtcblxuICB1bnNwZW50cy5mb3JFYWNoKCh1LCBpKSA9PiB7XG4gICAgY29uc3QgeyBzaWduZXJOYW1lLCBjb3NpZ25lck5hbWUgfSA9IHNpZ25lcnMgPyBzaWduZXJzIDogZ2V0U2lnbmVycyhpbnB1dHNbaV0uc2NyaXB0VHlwZSk7XG4gICAgaWYgKGlzV2FsbGV0VW5zcGVudCh1KSAmJiBjb3NpZ25lck5hbWUpIHtcbiAgICAgIGFkZFdhbGxldFVuc3BlbnRUb1BzYnQocHNidCwgdSwgcm9vdFdhbGxldEtleXMsIHNpZ25lck5hbWUsIGNvc2lnbmVyTmFtZSwgeyBza2lwTm9uV2l0bmVzc1V0eG8gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgcmVkZWVtU2NyaXB0IH0gPSBjcmVhdGVPdXRwdXRTY3JpcHRQMnNoUDJwayhyb290V2FsbGV0S2V5c1tzaWduZXJOYW1lXS5wdWJsaWNLZXkpO1xuICAgICAgYXNzZXJ0KHJlZGVlbVNjcmlwdCk7XG4gICAgICBhZGRSZXBsYXlQcm90ZWN0aW9uVW5zcGVudFRvUHNidChwc2J0LCB1LCByZWRlZW1TY3JpcHQsIHsgc2tpcE5vbldpdG5lc3NVdHhvIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgb3V0cHV0cy5mb3JFYWNoKChvdXRwdXQsIGkpID0+IHtcbiAgICBpZiAoJ3NjcmlwdFR5cGUnIGluIG91dHB1dCkge1xuICAgICAgYWRkV2FsbGV0T3V0cHV0VG9Qc2J0KFxuICAgICAgICBwc2J0LFxuICAgICAgICBvdXRwdXQud2FsbGV0S2V5cyA/PyByb290V2FsbGV0S2V5cyxcbiAgICAgICAgb3V0cHV0LmlzSW50ZXJuYWxBZGRyZXNzID8gZ2V0SW50ZXJuYWxDaGFpbkNvZGUob3V0cHV0LnNjcmlwdFR5cGUpIDogZ2V0RXh0ZXJuYWxDaGFpbkNvZGUob3V0cHV0LnNjcmlwdFR5cGUpLFxuICAgICAgICBpLFxuICAgICAgICBvdXRwdXQudmFsdWUsXG4gICAgICAgIHsgYWRkRGVyaXZhdGlvbkluZm86IG91dHB1dC53YWxsZXRLZXlzICE9PSBudWxsIH1cbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICgnYWRkcmVzcycgaW4gb3V0cHV0KSB7XG4gICAgICBjb25zdCB7IGFkZHJlc3MsIHZhbHVlIH0gPSBvdXRwdXQ7XG4gICAgICBwc2J0LmFkZE91dHB1dCh7IHNjcmlwdDogdG9PdXRwdXRTY3JpcHQoYWRkcmVzcywgbmV0d29yayksIHZhbHVlIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoJ29wUmV0dXJuJyBpbiBvdXRwdXQpIHtcbiAgICAgIGNvbnN0IHsgb3BSZXR1cm4sIHZhbHVlIH0gPSBvdXRwdXQ7XG4gICAgICBjb25zdCBzY3JpcHQgPSBiaXRjb2luanNsaWIucGF5bWVudHMuZW1iZWQoeyBkYXRhOiBbQnVmZmVyLmZyb20ob3BSZXR1cm4sICdhc2NpaScpXSB9KS5vdXRwdXQ7XG4gICAgICBhc3NlcnQoc2NyaXB0LCAnc2NyaXB0IGlzIHJlcXVpcmVkJyk7XG4gICAgICBwc2J0LmFkZE91dHB1dCh7IHNjcmlwdCwgdmFsdWUgfSk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICgnc2NyaXB0JyBpbiBvdXRwdXQpIHtcbiAgICAgIGNvbnN0IHsgc2NyaXB0LCB2YWx1ZSB9ID0gb3V0cHV0O1xuICAgICAgcHNidC5hZGRPdXRwdXQoeyBzY3JpcHQ6IEJ1ZmZlci5mcm9tKHNjcmlwdCwgJ2hleCcpLCB2YWx1ZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgb3V0cHV0Jyk7XG4gIH0pO1xuXG4gIGlmIChzaWduID09PSAndW5zaWduZWQnKSB7XG4gICAgcmV0dXJuIHBzYnQ7XG4gIH1cblxuICAvKiB1c2UgZml4ZWQgc2Vzc2lvbklkIGZvciBkZXRlcm1pbmlzdGljIG5vbmNlIGNyZWF0aW9uICovXG4gIGNvbnN0IHNlc3Npb25JZCA9IEJ1ZmZlci5hbGxvYygzMik7XG4gIHBzYnQuc2V0QWxsSW5wdXRzTXVzaWcyTm9uY2VIRChyb290V2FsbGV0S2V5c1sndXNlciddLCB7IHNlc3Npb25JZCB9KTtcbiAgcHNidC5zZXRBbGxJbnB1dHNNdXNpZzJOb25jZUhEKHJvb3RXYWxsZXRLZXlzWydiaXRnbyddLCB7IGRldGVybWluaXN0aWMgfSk7XG5cbiAgc2lnbkFsbFBzYnRJbnB1dHMocHNidCwgaW5wdXRzLCByb290V2FsbGV0S2V5cywgJ2hhbGZzaWduZWQnLCB7IHNpZ25lcnMsIHNraXBOb25XaXRuZXNzVXR4byB9KTtcblxuICBpZiAoc2lnbiA9PT0gJ2Z1bGxzaWduZWQnKSB7XG4gICAgc2lnbkFsbFBzYnRJbnB1dHMocHNidCwgaW5wdXRzLCByb290V2FsbGV0S2V5cywgc2lnbiwgeyBzaWduZXJzLCBkZXRlcm1pbmlzdGljLCBza2lwTm9uV2l0bmVzc1V0eG8gfSk7XG4gIH1cblxuICBpZiAocGFyYW1zPy5hZGRHbG9iYWxYUHVicykge1xuICAgIGFkZFhwdWJzVG9Qc2J0KHBzYnQsIHJvb3RXYWxsZXRLZXlzKTtcbiAgfVxuXG4gIHJldHVybiBwc2J0O1xufVxuXG4vKipcbiAqIFZlcmlmaWVzIHNpZ25hdHVyZXMgb2YgZnVsbHkgc2lnbmVkIHR4ICh3aXRoIHRhcHJvb3Qga2V5IHBhdGggc3VwcG9ydCkuXG4gKiBOT1RFOiB0YXByb290IGtleSBwYXRoIHR4IGNhbiBvbmx5IGJlIGJ1aWx0IGFuZCBzaWduZWQgd2l0aCBQU0JULlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5RnVsbHlTaWduZWRTaWduYXR1cmVzKFxuICB0eDogVXR4b1RyYW5zYWN0aW9uPGJpZ2ludD4sXG4gIHVuc3BlbnRzOiBVbnNwZW50PGJpZ2ludD5bXSxcbiAgd2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIHNpZ25lcjogS2V5TmFtZSxcbiAgY29zaWduZXI6IEtleU5hbWVcbik6IGJvb2xlYW4ge1xuICBjb25zdCBwcmV2T3V0cHV0cyA9IHVuc3BlbnRzLm1hcCgodSkgPT4gdG9PdXRwdXQodSwgdHgubmV0d29yaykpO1xuICByZXR1cm4gdW5zcGVudHMuZXZlcnkoKHUsIGluZGV4KSA9PiB7XG4gICAgaWYgKHBhcnNlU2lnbmF0dXJlU2NyaXB0Mk9mMyh0eC5pbnNbaW5kZXhdKS5zY3JpcHRUeXBlID09PSAndGFwcm9vdEtleVBhdGhTcGVuZCcpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFNpZ25hdHVyZVZlcmlmaWNhdGlvbnModHgsIGluZGV4LCB1LnZhbHVlLCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgICAgIHJldHVybiByZXN1bHQubGVuZ3RoID09PSAxICYmIHJlc3VsdFswXS5zaWduYXR1cmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHZlcmlmeVNpZ25hdHVyZVdpdGhVbnNwZW50KHR4LCBpbmRleCwgdW5zcGVudHMsIHdhbGxldEtleXMpO1xuICAgICAgaWYgKChzaWduZXIgPT09ICd1c2VyJyAmJiBjb3NpZ25lciA9PT0gJ2JpdGdvJykgfHwgKHNpZ25lciA9PT0gJ2JpdGdvJyAmJiBjb3NpZ25lciA9PT0gJ3VzZXInKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0WzBdICYmICFyZXN1bHRbMV0gJiYgcmVzdWx0WzJdO1xuICAgICAgfSBlbHNlIGlmICgoc2lnbmVyID09PSAndXNlcicgJiYgY29zaWduZXIgPT09ICdiYWNrdXAnKSB8fCAoc2lnbmVyID09PSAnYmFja3VwJyAmJiBjb3NpZ25lciA9PT0gJ3VzZXInKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0WzBdICYmIHJlc3VsdFsxXSAmJiAhcmVzdWx0WzJdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICFyZXN1bHRbMF0gJiYgcmVzdWx0WzFdICYmIHJlc3VsdFsyXTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/utxo-lib",
|
|
3
|
-
"version": "8.0.3-beta.
|
|
3
|
+
"version": "8.0.3-beta.1365",
|
|
4
4
|
"description": "Client-side Bitcoin JavaScript library",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"engines": {
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"dist/src"
|
|
47
47
|
],
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@bitgo-beta/blake2b": "3.0.4-beta.
|
|
50
|
-
"@bitgo-beta/secp256k1": "1.0.2-beta.
|
|
49
|
+
"@bitgo-beta/blake2b": "3.0.4-beta.1602",
|
|
50
|
+
"@bitgo-beta/secp256k1": "1.0.2-beta.1391",
|
|
51
51
|
"@brandonblack/musig": "^0.0.1-alpha.0",
|
|
52
52
|
"bech32": "^2.0.0",
|
|
53
53
|
"bip174": "npm:@bitgo-forks/bip174@3.1.0-master.4",
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
},
|
|
78
78
|
"author": "BitGo SDK Team <sdkteam@bitgo.com>",
|
|
79
79
|
"license": "MIT",
|
|
80
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "dce4dda5dc83d4d294f4e74c0b10746d56e33ecf"
|
|
81
81
|
}
|