@bitgo/sdk-core 7.0.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/dist/src/account-lib/baseCoin/enum.d.ts +1 -1
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/enum.js +3 -3
- package/dist/src/account-lib/mpc/index.d.ts +2 -2
- package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/index.js +3 -2
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +103 -113
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +6 -6
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
- package/dist/src/account-lib/util/crypto.d.ts +5 -0
- package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
- package/dist/src/account-lib/util/crypto.js +22 -6
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +9 -1
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +11 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +13 -4
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/config.d.ts +6 -0
- package/dist/src/bitgo/config.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +2 -2
- package/dist/src/bitgo/errors.d.ts +3 -0
- package/dist/src/bitgo/errors.d.ts.map +1 -1
- package/dist/src/bitgo/errors.js +8 -2
- package/dist/src/bitgo/index.d.ts +1 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +2 -1
- package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts +59 -0
- package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts.map +1 -0
- package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.js +3 -0
- package/dist/src/bitgo/inscriptionBuilder/index.d.ts +2 -0
- package/dist/src/bitgo/inscriptionBuilder/index.d.ts.map +1 -0
- package/dist/src/bitgo/inscriptionBuilder/index.js +14 -0
- package/dist/src/bitgo/staking/iStakingWallet.d.ts +12 -1
- package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
- package/dist/src/bitgo/staking/stakingWallet.d.ts +9 -2
- package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/stakingWallet.js +10 -1
- package/dist/src/bitgo/trading/iTradingAccount.d.ts +1 -1
- package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
- package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
- package/dist/src/bitgo/trading/tradingAccount.d.ts +2 -2
- package/dist/src/bitgo/trading/tradingAccount.js +4 -4
- package/dist/src/bitgo/tss/common.js +2 -2
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +4 -3
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +3 -3
- package/dist/src/bitgo/tss/ecdsa/types.d.ts +1 -0
- package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/types.js +1 -1
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/mpcUtils.js +3 -1
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +4 -0
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +9 -4
- package/dist/src/bitgo/wallet/iWallet.d.ts +10 -4
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts +1 -4
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +66 -12
- package/dist/tsconfig.tsbuildinfo +214 -97
- package/package.json +4 -4
|
@@ -141,14 +141,14 @@ exports.createUserOmicronAndDeltaShare = createUserOmicronAndDeltaShare;
|
|
|
141
141
|
* @param {Buffer} message message to perform sign
|
|
142
142
|
* @returns {Promise<createUserSignShareRT>}
|
|
143
143
|
*/
|
|
144
|
-
async function createUserSignatureShare(oShare, dShare, message) {
|
|
144
|
+
async function createUserSignatureShare(oShare, dShare, message, hash = keccak_1.default('keccak256')) {
|
|
145
145
|
if (oShare.i !== types_2.ShareKeyPosition.USER) {
|
|
146
146
|
throw new Error(`Invalid OShare, doesn't belong to the User`);
|
|
147
147
|
}
|
|
148
148
|
if (dShare.i !== types_2.ShareKeyPosition.USER || dShare.j !== types_2.ShareKeyPosition.BITGO) {
|
|
149
149
|
throw new Error(`Invalid DShare, doesn't seem to be from BitGo`);
|
|
150
150
|
}
|
|
151
|
-
return MPC.sign(message, oShare, dShare,
|
|
151
|
+
return MPC.sign(message, oShare, dShare, hash);
|
|
152
152
|
}
|
|
153
153
|
exports.createUserSignatureShare = createUserSignatureShare;
|
|
154
154
|
/**
|
|
@@ -804,4 +804,4 @@ async function verifyWalletSignature(params) {
|
|
|
804
804
|
Buffer.from(rawNotations[publicUValueRawNotationIndex].value).toString(), 'bitgo share mismatch');
|
|
805
805
|
}
|
|
806
806
|
exports.verifyWalletSignature = verifyWalletSignature;
|
|
807
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL2VjZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3REFBdUQ7QUFDdkQsbUNBeUJpQjtBQUNqQix5Q0FBd0c7QUFDeEcsb0NBQTRDO0FBRzVDLHNDQUEwRjtBQUMxRixvREFBc0M7QUFDdEMsb0RBQTRCO0FBQzVCLDhDQUE2QztBQUM3Qyw2Q0FBK0I7QUFDL0IsZ0RBQXdCO0FBR3hCLE1BQU0sR0FBRyxHQUFHLElBQUksV0FBSyxFQUFFLENBQUM7QUFFeEI7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLFFBQWtCLEVBQ2xCLGdCQUFxQyxFQUNyQyxjQUFzQjtJQUV0QixNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7SUFFN0IsSUFBSSxXQUErQixDQUFDO0lBQ3BDLElBQUksVUFBOEIsQ0FBQztJQUNuQyxJQUFJLFlBQWdDLENBQUM7SUFFckMsS0FBSyxNQUFNLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRTtRQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLGFBQWEsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRW5GLFFBQVEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7WUFDaEMsS0FBSyxDQUFDO2dCQUNKLFVBQVUsR0FBRyxNQUFNLENBQUM7Z0JBQ3BCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osWUFBWSxHQUFHLE1BQU0sQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixXQUFXLEdBQUcsTUFBTSxDQUFDO2dCQUNyQixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN0QjtJQUVELElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tBQzFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssY0FBYyxFQUFFO1FBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztLQUNsRDtJQUVELE1BQU0sZUFBZSxHQUFvQjtRQUN2QyxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07UUFDdkIsV0FBVztRQUNYLFlBQVk7UUFDWixVQUFVO0tBQ1gsQ0FBQztJQUVGLE9BQU87UUFDTCxlQUFlO1FBQ2YsY0FBYztLQUNmLENBQUM7QUFDSixDQUFDO0FBbkRELDhDQW1EQztBQUVEOzs7OztHQUtHO0FBQ0ksS0FBSyxVQUFVLG1CQUFtQixDQUN2QyxNQUFpQyxFQUNqQyxNQUFpQztJQUVqQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEtBQUssd0JBQWdCLENBQUMsSUFBSSxFQUFFO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztLQUN0RTtJQUVELElBQUksTUFBTSxDQUFDLENBQUMsS0FBSyx3QkFBZ0IsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsS0FBSyx3QkFBZ0IsQ0FBQyxLQUFLLEVBQUU7UUFDN0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0QsT0FBTyxNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFaRCxrREFZQztBQUVEOzs7OztHQUtHO0FBQ0ksS0FBSyxVQUFVLHlCQUF5QixDQUFDLE1BQWMsRUFBRSxNQUFjO0lBQzVFLElBQUksTUFBTSxDQUFDLENBQUMsS0FBSyx3QkFBZ0IsQ0FBQyxJQUFJLEVBQUU7UUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0tBQy9EO0lBQ0QsSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLHdCQUFnQixDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLHdCQUFnQixDQUFDLEtBQUssRUFBRTtRQUM3RSxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7S0FDOUQ7SUFFRCxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBVEQsOERBU0M7QUFFRDs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLDhCQUE4QixDQUFDLE1BQWM7SUFDakUsSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLHdCQUFnQixDQUFDLElBQUksRUFBRTtRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7S0FDL0Q7SUFDRCxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUM7UUFDckIsTUFBTSxFQUFFLE1BQU07UUFDZCxTQUFTLEVBQUU7WUFDVCxDQUFDLEVBQUUsd0JBQWdCLENBQUMsS0FBSztZQUN6QixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDWjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFYRCx3RUFXQztBQUVEOzs7Ozs7R0FNRztBQUNJLEtBQUssVUFBVSx3QkFBd0IsQ0FDNUMsTUFBYyxFQUNkLE1BQWMsRUFDZCxPQUFlO0lBRWYsSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLHdCQUFnQixDQUFDLElBQUksRUFBRTtRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7S0FDL0Q7SUFFRCxJQUFJLE1BQU0sQ0FBQyxDQUFDLEtBQUssd0JBQWdCLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEtBQUssd0JBQWdCLENBQUMsS0FBSyxFQUFFO1FBQzdFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztLQUNsRTtJQUNELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFiRCw0REFhQztBQUlEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0ksS0FBSyxVQUFVLGdCQUFnQixDQUNwQyxLQUFnQixFQUNoQixRQUFnQixFQUNoQixXQUFtQixFQUNuQixXQUF3QixFQUN4QixTQUF3QixFQUN4QixLQUFpQyxFQUNqQyxXQUFvQixFQUNwQixRQUFpQixFQUNqQixpQkFBMEIsRUFDMUIsV0FBb0IsRUFDcEIsZ0JBQXlCO0lBRXpCLElBQUksU0FBUyxLQUFLLHFCQUFhLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLEtBQUssd0JBQWdCLENBQUMsS0FBSyxFQUFFO1FBQzVFLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztLQUM3RDtJQUNELElBQUksY0FBb0MsQ0FBQztJQUN6QyxJQUFJLGlCQUFxQyxDQUFDO0lBRTFDLFFBQVEsU0FBUyxFQUFFO1FBQ2pCLEtBQUsscUJBQWEsQ0FBQyxNQUFNO1lBQ3ZCLGdCQUFNLENBQUMsV0FBVyxFQUFFLDhCQUE4QixDQUFDLENBQUM7WUFDcEQsTUFBTSxNQUFNLEdBQUcsS0FBZSxDQUFDO1lBQy9CLGNBQWMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkMsY0FBYyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDbkMsY0FBYyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7WUFDekMsY0FBYyxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1lBQ3JELE1BQU0sMkJBQWtCLENBQ3RCLEtBQUssRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLGNBQWMsRUFDZCxXQUFXLEVBQ1gsV0FBVyxFQUNYLE9BQU8sRUFDUCxNQUFNLEVBQ04sZ0JBQWdCLENBQ2pCLENBQUM7WUFDRixpQkFBaUIsR0FBRyxNQUFNLHlCQUF5QixDQUNqRCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCx5QkFBaUIsQ0FBQyxNQUFNLEVBQ3hCLFdBQVcsQ0FDWixDQUFDO1lBQ0YsTUFBTTtRQUNSLEtBQUsscUJBQWEsQ0FBQyxPQUFPO1lBQ3hCLE1BQU0sV0FBVyxHQUFHLEtBQWlCLENBQUM7WUFDdEMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRCxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZELGNBQWMsR0FBRztnQkFDZixFQUFFLEVBQUUsMEJBQWtCLENBQUMsS0FBSztnQkFDNUIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxLQUFLLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxHQUFHLDBCQUFrQixHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUU7YUFDMUUsQ0FBQztZQUNGLE1BQU0sMkJBQWtCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDMUcsaUJBQWlCLEdBQUcsTUFBTSx5QkFBeUIsQ0FDakQsS0FBSyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gseUJBQWlCLENBQUMsTUFBTSxFQUN4QixXQUFXLENBQ1osQ0FBQztZQUNGLE1BQU07UUFDUixLQUFLLHFCQUFhLENBQUMsTUFBTTtZQUN2QixNQUFNLE1BQU0sR0FBRyxLQUFlLENBQUM7WUFDL0IsY0FBYyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckQsTUFBTSwyQkFBa0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMxRyxpQkFBaUIsR0FBRyxNQUFNLENBQUM7WUFDM0IsTUFBTTtRQUNSO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ2xEO0lBRUQsT0FBTyxpQkFBaUIsQ0FBQztBQUMzQixDQUFDO0FBM0VELDRDQTJFQztBQUVEOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUseUJBQXlCLENBQzdDLEtBQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLFdBQW1CLEVBQ25CLFNBQTRCLEVBQzVCLFdBQXdCO0lBRXhCLElBQUksaUJBQXFDLENBQUM7SUFDMUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxxQkFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbkUsSUFBSSxVQUFVLENBQUM7SUFDZixRQUFRLFdBQVcsRUFBRTtRQUNuQixLQUFLLG1CQUFXLENBQUMsRUFBRTtZQUNqQixnQkFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsNENBQTRDLENBQUMsQ0FBQztZQUM3RSxVQUFVLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7WUFDdkQsTUFBTTtRQUNSLEtBQUssbUJBQVcsQ0FBQyxPQUFPO1lBQ3RCLGdCQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSx3Q0FBd0MsQ0FBQyxDQUFDO1lBQ3JFLFVBQVUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUNuRCxNQUFNO0tBQ1Q7SUFDRCxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtRQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7S0FDOUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RCxRQUFRLFNBQVMsRUFBRTtRQUNqQixLQUFLLHlCQUFpQixDQUFDLE1BQU07WUFDM0IsaUJBQWlCLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdDLE1BQU07UUFDUixLQUFLLHlCQUFpQixDQUFDLE1BQU07WUFDM0IsaUJBQWlCLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdDLE1BQU07UUFDUixLQUFLLHlCQUFpQixDQUFDLFNBQVM7WUFDOUIsaUJBQWlCLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckQsTUFBTTtRQUNSO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0tBQzdDO0lBRUQsT0FBTyxpQkFBaUIsQ0FBQztBQUMzQixDQUFDO0FBeENELDhEQXdDQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSSxLQUFLLFVBQVUsYUFBYSxDQUNqQyxRQUFrQixFQUNsQixjQUFzQixFQUN0Qix1QkFBK0IsRUFDL0IsWUFBMkMsRUFDM0MsYUFBYSxHQUFHLElBQUk7SUFFcEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRCxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0tBQ3RDO0lBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQztLQUM5QyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRW5CLElBQUksWUFBWSxDQUFDO0lBQ2pCLElBQUksYUFBYSxFQUFFO1FBQ2pCLFlBQVksR0FBRyxnQkFBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDcEg7U0FBTTtRQUNMLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3BIO0lBQ0QsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO0lBRXRGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDL0MsT0FBTyxFQUFFLE1BQU0sR0FBRyxDQUFDLGFBQWEsQ0FBQztZQUMvQixJQUFJLEVBQUUsWUFBWTtTQUNuQixDQUFDO1FBQ0YsY0FBYyxFQUFFLENBQUMsa0JBQWtCLENBQUM7S0FDckMsQ0FBQyxDQUFXLENBQUM7SUFFZCxPQUFPO1FBQ0wsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ1gsV0FBVztRQUNYLHFCQUFxQjtRQUNyQixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDWCxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEIsaUJBQWlCLEVBQUUsTUFBTSx3QkFBZ0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO0tBQ3RGLENBQUM7QUFDSixDQUFDO0FBekNELHNDQXlDQztBQUVEOzs7Ozs7R0FNRztBQUNJLEtBQUssVUFBVSwwQkFBMEIsQ0FBQyxRQUFxQjs7SUFDcEUsT0FBTztRQUNMLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ25DLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3JDLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztRQUNqQyxxQkFBcUIsRUFBRSxRQUFRLENBQUMsWUFBWTtRQUM1QyxDQUFDLEVBQUUsTUFBQSxRQUFRLENBQUMsQ0FBQyxtQ0FBSSxFQUFFO1FBQ25CLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxpQkFBaUI7UUFDN0MsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO0tBQzVCLENBQUM7QUFDSixDQUFDO0FBVkQsZ0VBVUM7QUFFRDs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLGFBQWEsQ0FBQyxlQUFrQyxFQUFFLGFBQWEsR0FBRyxJQUFJO0lBQzFGLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFDckcsTUFBTSxHQUFHLEdBQUcsQ0FDVixNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDaEIsT0FBTyxFQUFFLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLGNBQWMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDaEcsY0FBYyxFQUFFLENBQUMsbUJBQXFDLENBQUM7S0FDeEQsQ0FBQyxDQUNILENBQUMsSUFBYyxDQUFDO0lBRWpCLElBQUksQ0FBUyxDQUFDO0lBQ2QsSUFBSSxhQUFhLEVBQUU7UUFDakIsTUFBTSxZQUFZLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ2pDO1NBQU07UUFDTCxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDdEI7SUFFRCxNQUFNLE1BQU0sR0FBVztRQUNyQixDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLENBQUMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDbEQsQ0FBQyxFQUFFLENBQUM7UUFDSixTQUFTLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7UUFDNUQsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUTtLQUNuQyxDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQTVCRCxzQ0E0QkM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLGNBQXNCO0lBQ2pELE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUZELG9DQUVDO0FBRVksUUFBQSxTQUFTLEdBQUcsR0FBRyxDQUFDO0FBQ2hCLFFBQUEsa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBRXRDLFNBQVMsb0JBQW9CLENBQUMsTUFBZ0IsRUFBRSxjQUFzQixFQUFFLFNBQWlCO0lBQ3ZGLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxjQUFjLEVBQUU7UUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFNBQVMsUUFBUSxDQUFDLENBQUM7S0FDL0M7QUFDSCxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxNQUFnQixFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUUsU0FBaUIsRUFBRSxTQUFpQjtJQUNoSCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNoQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDZDthQUFNLElBQUksS0FBSyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLFNBQVMsYUFBYSxTQUFTLFFBQVEsQ0FBQyxDQUFDO1NBQ25GO0tBQ0Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLEtBQTJCO0lBQ3JELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGlCQUFTLENBQUMsQ0FBQztJQUU1QyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVyRSxJQUFJLEtBQUssQ0FBQztJQUNWLElBQUksUUFBUSxFQUFFO1FBQ1osS0FBSyxHQUFHO1lBQ04sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDWixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNaLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDWixFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNiLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1NBQ2YsQ0FBQztLQUNIO0lBRUQsT0FBTztRQUNMLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2hDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ2xDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ1osQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDWixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNqQixFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNiLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2IsS0FBSztLQUNOLENBQUM7QUFDSixDQUFDO0FBNUJELGtDQTRCQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixhQUFhLENBQUMsS0FBYTs7SUFDekMsT0FBTztRQUNMLEVBQUUsRUFBRSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsaUJBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLGlCQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxpQkFBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLEdBQUcsaUJBQVMsR0FDbkcsS0FBSyxDQUFDLEVBQ1IsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsS0FBSywwQ0FBRSxDQUFDLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxLQUFLLDBDQUFFLENBQUMsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FDaEYsQ0FBQSxNQUFBLEtBQUssQ0FBQyxLQUFLLDBDQUFFLENBQUMsS0FBSSxFQUNwQixHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxLQUFLLDBDQUFFLENBQUMsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsRUFBRSxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsS0FBSywwQ0FBRSxFQUFFLEtBQUksRUFBRSxFQUFFO0tBQzlHLENBQUM7QUFDSixDQUFDO0FBVkQsc0NBVUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLEtBQTJCO0lBQ3JELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGlCQUFTLENBQUMsQ0FBQztJQUM1QyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRSxNQUFNLGFBQWEsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDaEYsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXhFLElBQUksS0FBSyxDQUFDO0lBQ1YsSUFBSSxRQUFRLEVBQUU7UUFDWixLQUFLLEdBQUc7WUFDTixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNaLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDWixDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNiLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2QsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7U0FDZixDQUFDO0tBQ0g7SUFFRCxJQUFJLFVBQVUsQ0FBQztJQUNmLElBQUksYUFBYSxFQUFFO1FBQ2pCLFVBQVUsR0FBRztZQUNYLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDYixDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNiLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDYixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNkLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2QsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDZCxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNkLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7U0FDZCxDQUFDO0tBQ0g7SUFFRCxJQUFJLE1BQU0sQ0FBQztJQUNYLElBQUksU0FBUyxFQUFFO1FBQ2IsTUFBTSxHQUFHO1lBQ1AsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDYixJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNoQixDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNiLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDYixDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNiLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2QsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDZCxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNkLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2QsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDYixDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztTQUNkLENBQUM7S0FDSDtJQUVELE9BQU87UUFDTCxDQUFDLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNsQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDWixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNqQixFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNiLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2IsS0FBSztRQUNMLFVBQVU7UUFDVixNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUM7QUFyRUQsa0NBcUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxLQUFhOztJQUN6QyxPQUFPO1FBQ0wsRUFBRSxFQUFFLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxFQUFFLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEMsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxpQkFBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsaUJBQVMsR0FBRyxLQUFLLENBQUMsRUFBRSxHQUFHLGlCQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxpQkFBUyxHQUNsRyxLQUFLLENBQUMsTUFDUixHQUFHLGlCQUFTLEdBQUcsS0FBSyxDQUFDLEVBQUUsR0FBRyxpQkFBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsQ0FBQyxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUMzRixDQUFBLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsQ0FBQyxLQUFJLEVBQ3BCLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsQ0FBQyxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsS0FBSywwQ0FBRSxDQUFDLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQ2hGLENBQUEsTUFBQSxLQUFLLENBQUMsS0FBSywwQ0FBRSxFQUFFLEtBQUksRUFDckIsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsS0FBSywwQ0FBRSxFQUFFLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLENBQUMsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FDdEYsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLElBQUksS0FBSSxFQUM1QixHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLENBQUMsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsQ0FBQyxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUMxRixDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsQ0FBQyxLQUFJLEVBQ3pCLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsQ0FBQyxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxFQUFFLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQzNGLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxFQUFFLEtBQUksRUFDMUIsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxFQUFFLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLEVBQUUsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FDNUYsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLENBQUMsS0FBSSxFQUN6QixHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLENBQUMsS0FB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RyxDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsQ0FBQyxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxDQUFDLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQzFGLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxDQUFDLEtBQUksRUFDekIsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxDQUFDLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLEVBQUUsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FDM0YsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLEVBQUUsS0FBSSxFQUMxQixHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLEVBQUUsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsRUFBRSxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUM1RixDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsQ0FBQyxLQUFJLEVBQ3pCLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsQ0FBQyxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsTUFBTSwwQ0FBRSxDQUFDLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQ3RGLENBQUEsTUFBQSxLQUFLLENBQUMsTUFBTSwwQ0FBRSxJQUFJLEtBQUksRUFDeEIsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsTUFBTSwwQ0FBRSxDQUFDLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxNQUFNLDBDQUFFLENBQUMsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FDbEYsQ0FBQSxNQUFBLEtBQUssQ0FBQyxN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LEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUMxRSxzQkFBc0IsQ0FDdkIsQ0FBQztBQUNKLENBQUM7QUFyQkQsc0RBcUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWNkc2EgfSBmcm9tICcuLy4uLy4uLy4uL2FjY291bnQtbGliL21wYy90c3MnO1xuaW1wb3J0IHtcbiAgRGVjcnlwdGFibGVOU2hhcmUsXG4gIENvbWJpbmVkS2V5LFxuICBTaWduaW5nTWF0ZXJpYWwsXG4gIEVuY3J5cHRlZE5TaGFyZSxcbiAgQVNoYXJlLFxuICBDcmVhdGVVc2VyR2FtbWFBbmRNdVNoYXJlUlQsXG4gIENyZWF0ZVVzZXJPbWljcm9uQW5kRGVsdGFTaGFyZVJULFxuICBEU2hhcmUsXG4gIEdTaGFyZSxcbiAgS2V5U2hhcmUsXG4gIE5TaGFyZSxcbiAgT1NoYXJlLFxuICBTZW5kU2hhcmVUeXBlLFxuICBTaWduYXR1cmVTaGFyZSxcbiAgU2lnblNoYXJlLFxuICBXU2hhcmUsXG4gIFhTaGFyZSxcbiAgWFNoYXJlV2l0aE5UaWxkZSxcbiAgWVNoYXJlLFxuICBZU2hhcmVXaXRoTlRpbGRlLFxuICBTZW5kU2hhcmVUb0JpdGdvUlQsXG4gIFJlY2VpdmVkU2hhcmVUeXBlLFxuICBCU2hhcmUsXG4gIFNpZ25hdHVyZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBTaWduYXR1cmVTaGFyZVJlY29yZCwgU2lnbmF0dXJlU2hhcmVUeXBlLCBSZXF1ZXN0VHlwZSwgY3JlYXRlU2hhcmVQcm9vZiB9IGZyb20gJy4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgU2hhcmVLZXlQb3NpdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uLy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBLU2hhcmUsIE1VU2hhcmUsIFNTaGFyZSB9IGZyb20gJy4uLy4uLy4uL2FjY291bnQtbGliL21wYy90c3MvZWNkc2EvdHlwZXMnO1xuaW1wb3J0IHsgY29tbW9uVmVyaWZ5V2FsbGV0U2lnbmF0dXJlLCBnZXRUeFJlcXVlc3QsIHNlbmRTaWduYXR1cmVTaGFyZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgY3JlYXRlS2VjY2FrSGFzaCBmcm9tICdrZWNjYWsnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgYmlwMzIsIGVjYyB9IGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgKiBhcyBwZ3AgZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcbmltcG9ydCB7IEFwaUtleVNoYXJlIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW4nO1xuXG5jb25zdCBNUEMgPSBuZXcgRWNkc2EoKTtcblxuLyoqXG4gKiBDb21iaW5lcyBOU2hhcmVzIHRvIGNvbWJpbmUgdGhlIGZpbmFsIFRTUyBrZXlcbiAqIFRoaXMgY2FuIG9ubHkgYmUgdXNlZCB0byBjcmVhdGUgdGhlIFVzZXIgb3IgQmFja3VwIGtleSBzaW5jZSBpdCByZXF1aXJlcyB0aGUgY29tbW9uIGtleWNoYWluIGZyb20gQml0R28gZmlyc3RcbiAqXG4gKiBAcGFyYW0ga2V5U2hhcmUgLSBUU1Mga2V5IHNoYXJlXG4gKiBAcGFyYW0gZW5jcnlwdGVkTlNoYXJlcyAtIGVuY3J5cHRlZCBOU2hhcmVzIHdpdGggaW5mb3JtYXRpb24gb24gaG93IHRvIGRlY3J5cHRcbiAqIEBwYXJhbSBjb21tb25LZXljaGFpbiAtIGV4cGVjdGVkIGNvbW1vbiBrZXljaGFpbiBvZiB0aGUgY29tYmluZWQga2V5XG4gKiBAcmV0dXJucyB7Q29tYmluZWRLZXl9IGNvbWJpbmVkIFRTUyBrZXlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbWJpbmVkS2V5KFxuICBrZXlTaGFyZTogS2V5U2hhcmUsXG4gIGVuY3J5cHRlZE5TaGFyZXM6IERlY3J5cHRhYmxlTlNoYXJlW10sXG4gIGNvbW1vbktleWNoYWluOiBzdHJpbmdcbik6IFByb21pc2U8Q29tYmluZWRLZXk+IHtcbiAgY29uc3QgblNoYXJlczogTlNoYXJlW10gPSBbXTtcblxuICBsZXQgYml0Z29OU2hhcmU6IE5TaGFyZSB8IHVuZGVmaW5lZDtcbiAgbGV0IHVzZXJOU2hhcmU6IE5TaGFyZSB8IHVuZGVmaW5lZDtcbiAgbGV0IGJhY2t1cE5TaGFyZTogTlNoYXJlIHwgdW5kZWZpbmVkO1xuXG4gIGZvciAoY29uc3QgZW5jcnlwdGVkTlNoYXJlIG9mIGVuY3J5cHRlZE5TaGFyZXMpIHtcbiAgICBjb25zdCBuU2hhcmUgPSBhd2FpdCBkZWNyeXB0TlNoYXJlKGVuY3J5cHRlZE5TaGFyZSwgZW5jcnlwdGVkTlNoYXJlLmlzYnM1OEVuY29kZWQpO1xuXG4gICAgc3dpdGNoIChlbmNyeXB0ZWROU2hhcmUublNoYXJlLmopIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdXNlck5TaGFyZSA9IG5TaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGJhY2t1cE5TaGFyZSA9IG5TaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGJpdGdvTlNoYXJlID0gblNoYXJlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBOU2hhcmUgaW5kZXgnKTtcbiAgICB9XG5cbiAgICBuU2hhcmVzLnB1c2goblNoYXJlKTtcbiAgfVxuXG4gIGlmICghYml0Z29OU2hhcmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgQml0R28gTiBTaGFyZScpO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWRLZXkgPSBNUEMua2V5Q29tYmluZShrZXlTaGFyZS5wU2hhcmUsIG5TaGFyZXMpO1xuICBpZiAoY29tYmluZWRLZXkueFNoYXJlLnkgKyBjb21iaW5lZEtleS54U2hhcmUuY2hhaW5jb2RlICE9PSBjb21tb25LZXljaGFpbikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29tbW9uIGtleWNoYWlucyBkbyBub3QgbWF0Y2gnKTtcbiAgfVxuXG4gIGNvbnN0IHNpZ25pbmdNYXRlcmlhbDogU2lnbmluZ01hdGVyaWFsID0ge1xuICAgIHBTaGFyZToga2V5U2hhcmUucFNoYXJlLFxuICAgIGJpdGdvTlNoYXJlLFxuICAgIGJhY2t1cE5TaGFyZSxcbiAgICB1c2VyTlNoYXJlLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc2lnbmluZ01hdGVyaWFsLFxuICAgIGNvbW1vbktleWNoYWluLFxuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIFNpZ25TaGFyZSB3aXRoIFVzZXIgWFNoYXJlIGFuZCBZU2hhcmUgQ29ycmVzcG9uZGluZyB0byBCaXRHb1xuICogQHBhcmFtIHtYU2hhcmV9IHhTaGFyZSBVc2VyIHNlY3JldCB4U2hhcmVcbiAqIEBwYXJhbSB7WVNoYXJlfSB5U2hhcmUgWVNoYXJlIGZyb20gQml0Z29cbiAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25TaGFyZT59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVVc2VyU2lnblNoYXJlKFxuICB4U2hhcmU6IFhTaGFyZSB8IFhTaGFyZVdpdGhOVGlsZGUsXG4gIHlTaGFyZTogWVNoYXJlIHwgWVNoYXJlV2l0aE5UaWxkZVxuKTogUHJvbWlzZTxTaWduU2hhcmU+IHtcbiAgaWYgKHhTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgWFNoYXJlLCBYU2hhcmUgZG9lc24ndCBiZWxvbmcgdG8gdGhlIFVzZXJgKTtcbiAgfVxuXG4gIGlmICh5U2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSIHx8IHlTaGFyZS5qICE9PSBTaGFyZUtleVBvc2l0aW9uLkJJVEdPKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFlTaGFyZSBwcm92aWRlZCBmb3Igc2lnbicpO1xuICB9XG4gIHJldHVybiBhd2FpdCBNUEMuc2lnblNoYXJlKHhTaGFyZSwgeVNoYXJlKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBHYW1tYSBTaGFyZSBhbmQgTXVTaGFyZSB3aXRoIFVzZXIgV1NoYXJlIGFuZCBBU2hhcmUgRnJvbSBCaXRHb1xuICogQHBhcmFtIHtXU2hhcmV9IHdTaGFyZSBVc2VyIFdTaGFyZVxuICogQHBhcmFtIHtBU2hhcmV9IGFTaGFyZSBBU2hhcmUgZnJvbSBCaXRnb1xuICogQHJldHVybnMge1Byb21pc2U8Q3JlYXRlVXNlckdhbW1hQW5kTXVTaGFyZVJUPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVVzZXJHYW1tYUFuZE11U2hhcmUod1NoYXJlOiBXU2hhcmUsIGFTaGFyZTogQVNoYXJlKTogUHJvbWlzZTxDcmVhdGVVc2VyR2FtbWFBbmRNdVNoYXJlUlQ+IHtcbiAgaWYgKHdTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgV1NoYXJlLCBkb2Vzbid0IGJlbG9uZyB0byB0aGUgVXNlcmApO1xuICB9XG4gIGlmIChhU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSIHx8IGFTaGFyZS5qICE9PSBTaGFyZUtleVBvc2l0aW9uLkJJVEdPKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEFTaGFyZSwgaXMgbm90IGZyb20gQml0Z28gdG8gVXNlcicpO1xuICB9XG5cbiAgcmV0dXJuIE1QQy5zaWduQ29udmVydCh7IHdTaGFyZSwgYVNoYXJlIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIE9taWNyb24gU2hhcmUgYW5kIERlbHRhIHNoYXJlIHdpdGggdXNlciBHU2hhcmVcbiAqIEBwYXJhbSB7R1NoYXJlfSBnU2hhcmUgVXNlciBHU2hhcmVcbiAqIEByZXR1cm5zIHtQcm9taXNlPENyZWF0ZVVzZXJPbWljcm9uQW5kRGVsdGFTaGFyZVJUPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVVzZXJPbWljcm9uQW5kRGVsdGFTaGFyZShnU2hhcmU6IEdTaGFyZSk6IFByb21pc2U8Q3JlYXRlVXNlck9taWNyb25BbmREZWx0YVNoYXJlUlQ+IHtcbiAgaWYgKGdTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgR1NoYXJlLCBkb2Vzbid0IGJlbG9uZyB0byB0aGUgVXNlcmApO1xuICB9XG4gIHJldHVybiBNUEMuc2lnbkNvbWJpbmUoe1xuICAgIGdTaGFyZTogZ1NoYXJlLFxuICAgIHNpZ25JbmRleDoge1xuICAgICAgaTogU2hhcmVLZXlQb3NpdGlvbi5CSVRHTyxcbiAgICAgIGo6IGdTaGFyZS5pLFxuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIFNpZ25hdHVyZSBTaGFyZSB3aXRoIFVzZXIgT1NoYXJlIGFuZCBEU2hhcmUgRnJvbSBCaXRHb1xuICogQHBhcmFtIHtPU2hhcmV9IG9TaGFyZSBVc2VyIE9TaGFyZVxuICogQHBhcmFtIHtEU2hhcmV9IGRTaGFyZSBEU2hhcmUgZnJvbSBiaXRnb1xuICogQHBhcmFtIHtCdWZmZXJ9IG1lc3NhZ2UgbWVzc2FnZSB0byBwZXJmb3JtIHNpZ25cbiAqIEByZXR1cm5zIHtQcm9taXNlPGNyZWF0ZVVzZXJTaWduU2hhcmVSVD59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVVc2VyU2lnbmF0dXJlU2hhcmUoXG4gIG9TaGFyZTogT1NoYXJlLFxuICBkU2hhcmU6IERTaGFyZSxcbiAgbWVzc2FnZTogQnVmZmVyXG4pOiBQcm9taXNlPFNpZ25hdHVyZVNoYXJlPiB7XG4gIGlmIChvU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIE9TaGFyZSwgZG9lc24ndCBiZWxvbmcgdG8gdGhlIFVzZXJgKTtcbiAgfVxuXG4gIGlmIChkU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSIHx8IGRTaGFyZS5qICE9PSBTaGFyZUtleVBvc2l0aW9uLkJJVEdPKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIERTaGFyZSwgZG9lc24ndCBzZWVtIHRvIGJlIGZyb20gQml0R29gKTtcbiAgfVxuICByZXR1cm4gTVBDLnNpZ24obWVzc2FnZSwgb1NoYXJlLCBkU2hhcmUsIGNyZWF0ZUtlY2Nha0hhc2goJ2tlY2NhazI1NicpKTtcbn1cblxuZXhwb3J0IHR5cGUgTXVEU2hhcmUgPSB7IG11U2hhcmU6IE1VU2hhcmU7IGRTaGFyZTogRFNoYXJlOyBpOiBTaGFyZUtleVBvc2l0aW9uIH07XG5cbi8qKlxuICogU2VuZHMgU2hhcmUgVG8gQml0Z29cbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyAtIHRoZSBiaXRnbyBpbnN0YW5jZVxuICogQHBhcmFtIHtTdHJpbmd9IHdhbGxldElkIC0gdGhlIHdhbGxldCBpZCAgKlxuICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICogQHBhcmFtIHJlcXVlc3RUeXBlIC0gdGhlIHR5cGUgb2YgcmVxdWVzdCBiZWluZyBzdWJtaXR0ZWQgKGVpdGhlciB0eCBvciBtZXNzYWdlIGZvciBzaWduaW5nKVxuICogQHBhcmFtIHNoYXJlVHlwZVxuICogQHBhcmFtIHNoYXJlXG4gKiBAcGFyYW0gc2lnbmVyU2hhcmVcbiAqIEBwYXJhbSB2c3NQcm9vZiAtIHRoZSB2IHZhbHVlIG9mIHRoZSBzaGFyZVxuICogQHBhcmFtIHByaXZhdGVTaGFyZVByb29mIC0gdGhlIHVTaWcgb2YgdGhlIHNoYXJlXG4gKiBAcGFyYW0gcHVibGljU2hhcmUgLSB0aGUgeSB2YWx1ZSBvZiB0aGUgc2hhcmVcbiAqIEBwYXJhbSB1c2VyUHVibGljR3BnS2V5IC0gdGhlIHB1YmxpYyBrZXkgb2YgdGhlIGdwZyBrZXkgdXNlZCBmb3IgY3JlYXRpbmcgdGhlIHByaXZhdGVTaGFyZVByb29mXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD59IC0gYSBTaWduYXR1cmUgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRTaGFyZVRvQml0Z28oXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHdhbGxldElkOiBzdHJpbmcsXG4gIHR4UmVxdWVzdElkOiBzdHJpbmcsXG4gIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZSxcbiAgc2hhcmVUeXBlOiBTZW5kU2hhcmVUeXBlLFxuICBzaGFyZTogU1NoYXJlIHwgTXVEU2hhcmUgfCBLU2hhcmUsXG4gIHNpZ25lclNoYXJlPzogc3RyaW5nLFxuICB2c3NQcm9vZj86IHN0cmluZyxcbiAgcHJpdmF0ZVNoYXJlUHJvb2Y/OiBzdHJpbmcsXG4gIHB1YmxpY1NoYXJlPzogc3RyaW5nLFxuICB1c2VyUHVibGljR3BnS2V5Pzogc3RyaW5nXG4pOiBQcm9taXNlPFNlbmRTaGFyZVRvQml0Z29SVD4ge1xuICBpZiAoc2hhcmVUeXBlICE9PSBTZW5kU2hhcmVUeXBlLlNTaGFyZSAmJiBzaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLkJJVEdPKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFNoYXJlLCBpcyBub3QgZnJvbSBVc2VyIHRvIEJpdGdvJyk7XG4gIH1cbiAgbGV0IHNpZ25hdHVyZVNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZDtcbiAgbGV0IHJlc3BvbnNlRnJvbUJpdGdvOiBTZW5kU2hhcmVUb0JpdGdvUlQ7XG5cbiAgc3dpdGNoIChzaGFyZVR5cGUpIHtcbiAgICBjYXNlIFNlbmRTaGFyZVR5cGUuS1NoYXJlOlxuICAgICAgYXNzZXJ0KHNpZ25lclNoYXJlLCBgc2lnbmVyIHNoYXJlIG11c3QgYmUgcHJlc2VudGApO1xuICAgICAgY29uc3Qga1NoYXJlID0gc2hhcmUgYXMgS1NoYXJlO1xuICAgICAgc2lnbmF0dXJlU2hhcmUgPSBjb252ZXJ0S1NoYXJlKGtTaGFyZSk7XG4gICAgICBzaWduYXR1cmVTaGFyZS52c3NQcm9vZiA9IHZzc1Byb29mO1xuICAgICAgc2lnbmF0dXJlU2hhcmUucHVibGljU2hhcmUgPSBwdWJsaWNTaGFyZTtcbiAgICAgIHNpZ25hdHVyZVNoYXJlLnByaXZhdGVTaGFyZVByb29mID0gcHJpdmF0ZVNoYXJlUHJvb2Y7XG4gICAgICBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmUoXG4gICAgICAgIGJpdGdvLFxuICAgICAgICB3YWxsZXRJZCxcbiAgICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICAgIHNpZ25hdHVyZVNoYXJlLFxuICAgICAgICByZXF1ZXN0VHlwZSxcbiAgICAgICAgc2lnbmVyU2hhcmUsXG4gICAgICAgICdlY2RzYScsXG4gICAgICAgICdmdWxsJyxcbiAgICAgICAgdXNlclB1YmxpY0dwZ0tleVxuICAgICAgKTtcbiAgICAgIHJlc3BvbnNlRnJvbUJpdGdvID0gYXdhaXQgZ2V0Qml0Z29Ub1VzZXJMYXRlc3RTaGFyZShcbiAgICAgICAgYml0Z28sXG4gICAgICAgIHdhbGxldElkLFxuICAgICAgICB0eFJlcXVlc3RJZCxcbiAgICAgICAgUmVjZWl2ZWRTaGFyZVR5cGUuQVNoYXJlLFxuICAgICAgICByZXF1ZXN0VHlwZVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU2VuZFNoYXJlVHlwZS5NVVNoYXJlOlxuICAgICAgY29uc3Qgc2hhcmVUb1NlbmQgPSBzaGFyZSBhcyBNdURTaGFyZTtcbiAgICAgIGNvbnN0IG11U2hhcmVSZWNvcmQgPSBjb252ZXJ0TXVTaGFyZShzaGFyZVRvU2VuZC5tdVNoYXJlKTtcbiAgICAgIGNvbnN0IGRTaGFyZVJlY29yZCA9IGNvbnZlcnREU2hhcmUoc2hhcmVUb1NlbmQuZFNoYXJlKTtcbiAgICAgIHNpZ25hdHVyZVNoYXJlID0ge1xuICAgICAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgICAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZVRvU2VuZC5kU2hhcmUuaiksXG4gICAgICAgIHNoYXJlOiBgJHttdVNoYXJlUmVjb3JkLnNoYXJlfSR7c2Vjb25kYXJ5RGVsaW1ldGVyfSR7ZFNoYXJlUmVjb3JkLnNoYXJlfWAsXG4gICAgICB9O1xuICAgICAgYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlKGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQsIHNpZ25hdHVyZVNoYXJlLCByZXF1ZXN0VHlwZSwgc2lnbmVyU2hhcmUsICdlY2RzYScpO1xuICAgICAgcmVzcG9uc2VGcm9tQml0Z28gPSBhd2FpdCBnZXRCaXRnb1RvVXNlckxhdGVzdFNoYXJlKFxuICAgICAgICBiaXRnbyxcbiAgICAgICAgd2FsbGV0SWQsXG4gICAgICAgIHR4UmVxdWVzdElkLFxuICAgICAgICBSZWNlaXZlZFNoYXJlVHlwZS5EU2hhcmUsXG4gICAgICAgIHJlcXVlc3RUeXBlXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTZW5kU2hhcmVUeXBlLlNTaGFyZTpcbiAgICAgIGNvbnN0IHNTaGFyZSA9IHNoYXJlIGFzIFNTaGFyZTtcbiAgICAgIHNpZ25hdHVyZVNoYXJlID0gY29udmVydFNpZ25hdHVyZVNoYXJlKHNTaGFyZSwgMSwgMyk7XG4gICAgICBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmUoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCwgc2lnbmF0dXJlU2hhcmUsIHJlcXVlc3RUeXBlLCBzaWduZXJTaGFyZSwgJ2VjZHNhJyk7XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IHNTaGFyZTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2hhcmUgZ2l2ZW4gdG8gc2VuZCcpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlRnJvbUJpdGdvO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGxhdGVzdCB1c2VyJ3Mgc2hhcmUgZnJvbSBiaXRnbyBuZWVkZWQgdG8gY29udGludWUgc2lnbmluZyBmbG93XG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z28gLSB0aGUgYml0Z28gaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB3YWxsZXRJZCAtIHRoZSB3YWxsZXQgaWQgICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAqIEBwYXJhbSB7UmVjZWl2ZWRTaGFyZVR5cGV9IHNoYXJlVHlwZSAtIHRoZSBleGNwZWN0ZWQgc2hhcmUgdHlwZVxuICogQHJldHVybnMge1Byb21pc2U8U2VuZFNoYXJlVG9CaXRnb1JUPn0gLSBzaGFyZSBmcm9tIGJpdGdvIHRvIHVzZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJpdGdvVG9Vc2VyTGF0ZXN0U2hhcmUoXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHdhbGxldElkOiBzdHJpbmcsXG4gIHR4UmVxdWVzdElkOiBzdHJpbmcsXG4gIHNoYXJlVHlwZTogUmVjZWl2ZWRTaGFyZVR5cGUsXG4gIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZVxuKTogUHJvbWlzZTxTZW5kU2hhcmVUb0JpdGdvUlQ+IHtcbiAgbGV0IHJlc3BvbnNlRnJvbUJpdGdvOiBTZW5kU2hhcmVUb0JpdGdvUlQ7XG4gIGNvbnN0IHR4UmVxdWVzdCA9IGF3YWl0IGdldFR4UmVxdWVzdChiaXRnbywgd2FsbGV0SWQsIHR4UmVxdWVzdElkKTtcbiAgbGV0IHVzZXJTaGFyZXM7XG4gIHN3aXRjaCAocmVxdWVzdFR5cGUpIHtcbiAgICBjYXNlIFJlcXVlc3RUeXBlLnR4OlxuICAgICAgYXNzZXJ0KHR4UmVxdWVzdC50cmFuc2FjdGlvbnMsICd0cmFuc2FjdGlvbnMgcmVxdWlyZWQgYXMgcGFydCBvZiB0eFJlcXVlc3QnKTtcbiAgICAgIHVzZXJTaGFyZXMgPSB0eFJlcXVlc3QudHJhbnNhY3Rpb25zWzBdLnNpZ25hdHVyZVNoYXJlcztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUmVxdWVzdFR5cGUubWVzc2FnZTpcbiAgICAgIGFzc2VydCh0eFJlcXVlc3QubWVzc2FnZXMsICdtZXNzYWdlcyByZXF1aXJlZCBhcyBwYXJ0IG9mIHR4UmVxdWVzdCcpO1xuICAgICAgdXNlclNoYXJlcyA9IHR4UmVxdWVzdC5tZXNzYWdlc1swXS5zaWduYXR1cmVTaGFyZXM7XG4gICAgICBicmVhaztcbiAgfVxuICBpZiAoIXVzZXJTaGFyZXMgfHwgIXVzZXJTaGFyZXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VyIHNoYXJlIGlzIG5vdCBwcmVzZW50Jyk7XG4gIH1cblxuICBjb25zdCBzaGFyZVJlY29yZCA9IHVzZXJTaGFyZXNbdXNlclNoYXJlcy5sZW5ndGggLSAxXTtcbiAgc3dpdGNoIChzaGFyZVR5cGUpIHtcbiAgICBjYXNlIFJlY2VpdmVkU2hhcmVUeXBlLkFTaGFyZTpcbiAgICAgIHJlc3BvbnNlRnJvbUJpdGdvID0gcGFyc2VBU2hhcmUoc2hhcmVSZWNvcmQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBSZWNlaXZlZFNoYXJlVHlwZS5EU2hhcmU6XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IHBhcnNlRFNoYXJlKHNoYXJlUmVjb3JkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUmVjZWl2ZWRTaGFyZVR5cGUuU2lnbmF0dXJlOlxuICAgICAgcmVzcG9uc2VGcm9tQml0Z28gPSBwYXJzZVNpZ25hdHVyZVNoYXJlKHNoYXJlUmVjb3JkKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2hhcmUgcmVjZWl2ZWQnKTtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZUZyb21CaXRnbztcbn1cblxuLyoqXG4gKiBQcmVwYXJlcyBhIE5TaGFyZSB0byBiZSBleGNoYW5nZWQgd2l0aCBvdGhlciBrZXkgaG9sZGVycy5cbiAqIE91dHB1dCBpcyBpbiBhIGZvcm1hdCB0aGF0IGlzIHVzYWJsZSB3aXRoaW4gQml0R28ncyBlY29zeXN0ZW0uXG4gKlxuICogQHBhcmFtIGtleVNoYXJlIC0gVFNTIGtleSBzaGFyZSBvZiB0aGUgcGFydHkgcHJlcGFyaW5nIGV4Y2hhbmdlIG1hdGVyaWFsc1xuICogQHBhcmFtIHJlY2lwaWVudEluZGV4IC0gaW5kZXggb2YgdGhlIHJlY2lwaWVudCAoMSwgMiwgb3IgMylcbiAqIEBwYXJhbSByZWNpcGllbnRHcGdQdWJsaWNBcm1vciAtIHJlY2lwaWVudCdzIHB1YmxpYyBncGcga2V5IGluIGFybW9yIGZvcm1hdFxuICogQHBhcmFtIHNlbmRlckdwZ0tleSAtIGVwaGVtZXJhbCBHUEcga2V5IHRvIGVuY3J5cHQgLyBkZWNyeXB0IHNlbnNpdHZlIGRhdGEgZXhjaGFuZ2VkIGJldHdlZW4gdXNlciBhbmQgc2VydmVyXG4gKiBAcGFyYW0gaXNiczU4RW5jb2RlZCAtIGlzIGJzNTggZW5jb2RlZCBvciBub3RcbiAqIEByZXR1cm5zIGVuY3J5cHRlZCBOIFNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmNyeXB0TlNoYXJlKFxuICBrZXlTaGFyZTogS2V5U2hhcmUsXG4gIHJlY2lwaWVudEluZGV4OiBudW1iZXIsXG4gIHJlY2lwaWVudEdwZ1B1YmxpY0FybW9yOiBzdHJpbmcsXG4gIHNlbmRlckdwZ0tleTogcGdwLlNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gIGlzYnM1OEVuY29kZWQgPSB0cnVlXG4pOiBQcm9taXNlPEVuY3J5cHRlZE5TaGFyZT4ge1xuICBjb25zdCBuU2hhcmUgPSBrZXlTaGFyZS5uU2hhcmVzW3JlY2lwaWVudEluZGV4XTtcbiAgaWYgKCFuU2hhcmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVjaXBpZW50Jyk7XG4gIH1cblxuICBjb25zdCBwdWJsaWNTaGFyZSA9IEJ1ZmZlci5jb25jYXQoW1xuICAgIEJ1ZmZlci5mcm9tKGtleVNoYXJlLnBTaGFyZS55LCAnaGV4JyksXG4gICAgQnVmZmVyLmZyb20oa2V5U2hhcmUucFNoYXJlLmNoYWluY29kZSwgJ2hleCcpLFxuICBdKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgbGV0IHByaXZhdGVTaGFyZTtcbiAgaWYgKGlzYnM1OEVuY29kZWQpIHtcbiAgICBwcml2YXRlU2hhcmUgPSBiaXAzMi5mcm9tUHJpdmF0ZUtleShCdWZmZXIuZnJvbShuU2hhcmUudSwgJ2hleCcpLCBCdWZmZXIuZnJvbShuU2hhcmUuY2hhaW5jb2RlLCAnaGV4JykpLnRvQmFzZTU4KCk7XG4gIH0gZWxzZSB7XG4gICAgcHJpdmF0ZVNoYXJlID0gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oblNoYXJlLnUsICdoZXgnKSwgQnVmZmVyLmZyb20oblNoYXJlLmNoYWluY29kZSwgJ2hleCcpXSkudG9TdHJpbmcoJ2hleCcpO1xuICB9XG4gIGNvbnN0IHJlY2lwaWVudFB1YmxpY0tleSA9IGF3YWl0IHBncC5yZWFkS2V5KHsgYXJtb3JlZEtleTogcmVjaXBpZW50R3BnUHVibGljQXJtb3IgfSk7XG5cbiAgY29uc3QgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlID0gKGF3YWl0IHBncC5lbmNyeXB0KHtcbiAgICBtZXNzYWdlOiBhd2FpdCBwZ3AuY3JlYXRlTWVzc2FnZSh7XG4gICAgICB0ZXh0OiBwcml2YXRlU2hhcmUsXG4gICAgfSksXG4gICAgZW5jcnlwdGlvbktleXM6IFtyZWNpcGllbnRQdWJsaWNLZXldLFxuICB9KSkgYXMgc3RyaW5nO1xuXG4gIHJldHVybiB7XG4gICAgaTogblNoYXJlLmksXG4gICAgajogblNoYXJlLmosXG4gICAgcHVibGljU2hhcmUsXG4gICAgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlLFxuICAgIG46IG5TaGFyZS5uLFxuICAgIHZzc1Byb29mOiBuU2hhcmUudixcbiAgICBwcml2YXRlU2hhcmVQcm9vZjogYXdhaXQgY3JlYXRlU2hhcmVQcm9vZihzZW5kZXJHcGdLZXkucHJpdmF0ZUtleSwgblNoYXJlLnUsICdlY2RzYScpLFxuICB9O1xufVxuXG4vKipcbiAqIFByZXBhcmVzIGEgTlNoYXJlIHRvIGJlIGV4Y2hhbmdlZCB3aXRoIG90aGVyIGtleSBob2xkZXJzLlxuICogQW4gQVBJIGtleSBzaGFyZSByZWNlaXZlZCBmcm9tIGEgdGhpcmQgcGFydHkgc2hvdWxkIGFscmVhZHkgYmUgZW5jcnlwdGVkXG4gKlxuICogQHBhcmFtIGtleVNoYXJlIC0gVFNTIGtleSBzaGFyZSBvZiB0aGUgcGFydHkgcHJlcGFyaW5nIGV4Y2hhbmdlIG1hdGVyaWFsc1xuICogQHJldHVybnMgZW5jcnlwdGVkIE4gU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkTlNoYXJlRnJvbUFQSUtleVNoYXJlKGtleVNoYXJlOiBBcGlLZXlTaGFyZSk6IFByb21pc2U8RW5jcnlwdGVkTlNoYXJlPiB7XG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljaXBhbnRJbmRleChrZXlTaGFyZS50byksXG4gICAgajogZ2V0UGFydGljaXBhbnRJbmRleChrZXlTaGFyZS5mcm9tKSxcbiAgICBwdWJsaWNTaGFyZToga2V5U2hhcmUucHVibGljU2hhcmUsXG4gICAgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlOiBrZXlTaGFyZS5wcml2YXRlU2hhcmUsXG4gICAgbjoga2V5U2hhcmUubiA/PyAnJywgLy8gdGhpcyBpcyBub3QgY3VycmVudGx5IG5lZWRlZCBmb3Iga2V5IGNyZWF0aW9uXG4gICAgcHJpdmF0ZVNoYXJlUHJvb2Y6IGtleVNoYXJlLnByaXZhdGVTaGFyZVByb29mLFxuICAgIHZzc1Byb29mOiBrZXlTaGFyZS52c3NQcm9vZixcbiAgfTtcbn1cblxuLyoqXG4gKiBEZWNyeXB0cyBlbmNyeXB0ZWQgbiBzaGFyZVxuICogQHBhcmFtIGVuY3J5cHRlZE5TaGFyZSAtIGRlY3J5cHRhYmxlIG4gc2hhcmUgd2l0aCByZWNpcGllbnQgcHJpdmF0ZSBncGcga2V5IGFybW9yIGFuZCBzZW5kZXIgcHVibGljIGdwZyBrZXlcbiAqIEByZXR1cm5zIE4gc2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlY3J5cHROU2hhcmUoZW5jcnlwdGVkTlNoYXJlOiBEZWNyeXB0YWJsZU5TaGFyZSwgaXNiczU4RW5jb2RlZCA9IHRydWUpOiBQcm9taXNlPE5TaGFyZT4ge1xuICBjb25zdCByZWNpcGllbnRQcml2YXRlS2V5ID0gYXdhaXQgcGdwLnJlYWRLZXkoeyBhcm1vcmVkS2V5OiBlbmNyeXB0ZWROU2hhcmUucmVjaXBpZW50UHJpdmF0ZUFybW9yIH0pO1xuICBjb25zdCBwcnYgPSAoXG4gICAgYXdhaXQgcGdwLmRlY3J5cHQoe1xuICAgICAgbWVzc2FnZTogYXdhaXQgcGdwLnJlYWRNZXNzYWdlKHsgYXJtb3JlZE1lc3NhZ2U6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUuZW5jcnlwdGVkUHJpdmF0ZVNoYXJlIH0pLFxuICAgICAgZGVjcnlwdGlvbktleXM6IFtyZWNpcGllbnRQcml2YXRlS2V5IGFzIHBncC5Qcml2YXRlS2V5XSxcbiAgICB9KVxuICApLmRhdGEgYXMgc3RyaW5nO1xuXG4gIGxldCB1OiBzdHJpbmc7XG4gIGlmIChpc2JzNThFbmNvZGVkKSB7XG4gICAgY29uc3QgcHJpdmF0ZVNoYXJlID0gYnM1OC5kZWNvZGUocHJ2KS50b1N0cmluZygnaGV4Jyk7XG4gICAgdSA9IHByaXZhdGVTaGFyZS5zbGljZSg5MiwgMTU2KTtcbiAgfSBlbHNlIHtcbiAgICB1ID0gcHJ2LnNsaWNlKDAsIDY0KTtcbiAgfVxuXG4gIGNvbnN0IG5TaGFyZTogTlNoYXJlID0ge1xuICAgIGk6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUuaSxcbiAgICBqOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmosXG4gICAgbjogZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5uLFxuICAgIHk6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUucHVibGljU2hhcmUuc2xpY2UoMCwgNjYpLFxuICAgIHU6IHUsXG4gICAgY2hhaW5jb2RlOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLnB1YmxpY1NoYXJlLnNsaWNlKDY2LCAxMzApLFxuICAgIHY6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUudnNzUHJvb2YsXG4gIH07XG5cbiAgcmV0dXJuIG5TaGFyZTtcbn1cblxuLyoqXG4gKiBHZXRzIHB1YmxpYyBrZXkgZnJvbSBjb21tb24ga2V5IGNoYWluXG4gKiBAcGFyYW0gY29tbW9uS2V5Q2hhaW4gLSBjb21tb24ga2V5IGNoYWluIG9mIGVjZHNhIHRzc1xuICogQHJldHVybnMgcHVibGljIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHVibGljS2V5KGNvbW1vbktleUNoYWluOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY29tbW9uS2V5Q2hhaW4uc2xpY2UoMCwgNjYpO1xufVxuXG5leHBvcnQgY29uc3QgZGVsaW1ldGVyID0gJzonO1xuZXhwb3J0IGNvbnN0IHNlY29uZGFyeURlbGltZXRlciA9ICctJztcblxuZnVuY3Rpb24gdmFsaWRhdGVTaGFyZXNMZW5ndGgoc2hhcmVzOiBzdHJpbmdbXSwgZXhwZWN0ZWRMZW5ndGg6IG51bWJlciwgc2hhcmVOYW1lOiBzdHJpbmcpIHtcbiAgaWYgKHNoYXJlcy5sZW5ndGggPCBleHBlY3RlZExlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCAke3NoYXJlTmFtZX0gc2hhcmVgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZU9wdGlvbmFsVmFsdWVzKHNoYXJlczogc3RyaW5nW10sIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCBzaGFyZU5hbWU6IHN0cmluZywgdmFsdWVOYW1lOiBzdHJpbmcpIHtcbiAgbGV0IGZvdW5kID0gZmFsc2U7XG4gIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XG4gICAgaWYgKHNoYXJlc1tpXSkge1xuICAgICAgZm91bmQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZm91bmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW5jb25zaXN0ZW50IG9wdGlvbmFsICR7dmFsdWVOYW1lfSB2YWx1ZSBpbiAke3NoYXJlTmFtZX0gc2hhcmVgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZvdW5kO1xufVxuXG4vKipcbiAqIHBhcnNlcyBLIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgSyBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VLU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogS1NoYXJlIHtcbiAgY29uc3Qgc2hhcmVzID0gc2hhcmUuc2hhcmUuc3BsaXQoZGVsaW1ldGVyKTtcblxuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDExLCAnSycpO1xuICBjb25zdCBoYXNQcm9vZiA9IHZhbGlkYXRlT3B0aW9uYWxWYWx1ZXMoc2hhcmVzLCA1LCAxMSwgJ0snLCAncHJvb2YnKTtcblxuICBsZXQgcHJvb2Y7XG4gIGlmIChoYXNQcm9vZikge1xuICAgIHByb29mID0ge1xuICAgICAgejogc2hhcmVzWzVdLFxuICAgICAgdTogc2hhcmVzWzZdLFxuICAgICAgdzogc2hhcmVzWzddLFxuICAgICAgczogc2hhcmVzWzhdLFxuICAgICAgczE6IHNoYXJlc1s5XSxcbiAgICAgIHMyOiBzaGFyZXNbMTBdLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGk6IGdldFBhcnRpY2lwYW50SW5kZXgoc2hhcmUudG8pLFxuICAgIGo6IGdldFBhcnRpY2lwYW50SW5kZXgoc2hhcmUuZnJvbSksXG4gICAgazogc2hhcmVzWzBdLFxuICAgIG46IHNoYXJlc1sxXSxcbiAgICBudGlsZGU6IHNoYXJlc1syXSxcbiAgICBoMTogc2hhcmVzWzNdLFxuICAgIGgyOiBzaGFyZXNbNF0sXG4gICAgcHJvb2YsXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydCBLIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIEsgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRLU2hhcmUoc2hhcmU6IEtTaGFyZSk6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuaSksXG4gICAgZnJvbTogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuaiksXG4gICAgc2hhcmU6IGAke3NoYXJlLmt9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5ufSR7ZGVsaW1ldGVyfSR7c2hhcmUubnRpbGRlfSR7ZGVsaW1ldGVyfSR7c2hhcmUuaDF9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLmgyXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUucHJvb2Y/LnogfHwgJyd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5wcm9vZj8udSB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUucHJvb2Y/LncgfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5wcm9vZj8ucyB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLnByb29mPy5zMSB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLnByb29mPy5zMiB8fCAnJ31gLFxuICB9O1xufVxuXG4vKipcbiAqIHBhcnNlcyBBIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgQSBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogQVNoYXJlIHtcbiAgY29uc3Qgc2hhcmVzID0gc2hhcmUuc2hhcmUuc3BsaXQoZGVsaW1ldGVyKTtcbiAgdmFsaWRhdGVTaGFyZXNMZW5ndGgoc2hhcmVzLCAzNywgJ0EnKTtcbiAgY29uc3QgaGFzUHJvb2YgPSB2YWxpZGF0ZU9wdGlvbmFsVmFsdWVzKHNoYXJlcywgNywgMTMsICdBJywgJ3Byb29mJyk7XG4gIGNvbnN0IGhhc0dhbW1hUHJvb2YgPSB2YWxpZGF0ZU9wdGlvbmFsVmFsdWVzKHNoYXJlcywgMTMsIDI1LCAnQScsICdnYW1tYVByb29mJyk7XG4gIGNvbnN0IGhhc1dQcm9vZiA9IHZhbGlkYXRlT3B0aW9uYWxWYWx1ZXMoc2hhcmVzLCAyNSwgMzcsICdBJywgJ3dQcm9vZicpO1xuXG4gIGxldCBwcm9vZjtcbiAgaWYgKGhhc1Byb29mKSB7XG4gICAgcHJvb2YgPSB7XG4gICAgICB6OiBzaGFyZXNbN10sXG4gICAgICB1OiBzaGFyZXNbOF0sXG4gICAgICB3OiBzaGFyZXNbOV0sXG4gICAgICBzOiBzaGFyZXNbMTBdLFxuICAgICAgczE6IHNoYXJlc1sxMV0sXG4gICAgICBzMjogc2hhcmVzWzEyXSxcbiAgICB9O1xuICB9XG5cbiAgbGV0IGdhbW1hUHJvb2Y7XG4gIGlmIChoYXNHYW1tYVByb29mKSB7XG4gICAgZ2FtbWFQcm9vZiA9IHtcbiAgICAgIHo6IHNoYXJlc1sxM10sXG4gICAgICB6cHJtOiBzaGFyZXNbMTRdLFxuICAgICAgdDogc2hhcmVzWzE1XSxcbiAgICAgIHY6IHNoYXJlc1sxNl0sXG4gICAgICB3OiBzaGFyZXNbMTddLFxuICAgICAgczogc2hhcmVzWzE4XSxcbiAgICAgIHMxOiBzaGFyZXNbMTldLFxuICAgICAgczI6IHNoYXJlc1syMF0sXG4gICAgICB0MTogc2hhcmVzWzIxXSxcbiAgICAgIHQyOiBzaGFyZXNbMjJdLFxuICAgICAgdTogc2hhcmVzWzIzXSxcbiAgICAgIHg6IHNoYXJlc1syNF0sXG4gICAgfTtcbiAgfVxuXG4gIGxldCB3UHJvb2Y7XG4gIGlmIChoYXNXUHJvb2YpIHtcbiAgICB3UHJvb2YgPSB7XG4gICAgICB6OiBzaGFyZXNbMjVdLFxuICAgICAgenBybTogc2hhcmVzWzI2XSxcbiAgICAgIHQ6IHNoYXJlc1syN10sXG4gICAgICB2OiBzaGFyZXNbMjhdLFxuICAgICAgdzogc2hhcmVzWzI5XSxcbiAgICAgIHM6IHNoYXJlc1szMF0sXG4gICAgICBzMTogc2hhcmVzWzMxXSxcbiAgICAgIHMyOiBzaGFyZXNbMzJdLFxuICAgICAgdDE6IHNoYXJlc1szM10sXG4gICAgICB0Mjogc2hhcmVzWzM0XSxcbiAgICAgIHU6IHNoYXJlc1szNV0sXG4gICAgICB4OiBzaGFyZXNbMzZdLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGk6IGdldFBhcnRpY2lwYW50SW5kZXgoc2hhcmUudG8pLFxuICAgIGo6IGdldFBhcnRpY2lwYW50SW5kZXgoc2hhcmUuZnJvbSksXG4gICAgazogc2hhcmVzWzBdLFxuICAgIGFscGhhOiBzaGFyZXNbMV0sXG4gICAgbXU6IHNoYXJlc1syXSxcbiAgICBuOiBzaGFyZXNbM10sXG4gICAgbnRpbGRlOiBzaGFyZXNbNF0sXG4gICAgaDE6IHNoYXJlc1s1XSxcbiAgICBoMjogc2hhcmVzWzZdLFxuICAgIHByb29mLFxuICAgIGdhbW1hUHJvb2YsXG4gICAgd1Byb29mLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgQSBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBBIHNoYXJlXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0QVNoYXJlKHNoYXJlOiBBU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmopLFxuICAgIHNoYXJlOiBgJHtzaGFyZS5rfSR7ZGVsaW1ldGVyfSR7c2hhcmUuYWxwaGF9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5tdX0ke2RlbGltZXRlcn0ke3NoYXJlLm59JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLm50aWxkZVxuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLmgxfSR7ZGVsaW1ldGVyfSR7c2hhcmUuaDJ9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5wcm9vZj8ueiB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUucHJvb2Y/LnUgfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5wcm9vZj8udyB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLnByb29mPy5zIHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS5wcm9vZj8uczEgfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5wcm9vZj8uczIgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5nYW1tYVByb29mPy56IHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS5nYW1tYVByb29mPy56cHJtIHx8ICcnXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUuZ2FtbWFQcm9vZj8udCB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hUHJvb2Y/LnYgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLmdhbW1hUHJvb2Y/LncgfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5nYW1tYVByb29mPy5zIHx8ICcnfSR7ZGVsaW1ldGVyfSR7c2hhcmUuZ2FtbWFQcm9vZj8uczEgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLmdhbW1hUHJvb2Y/LnMyIHx8ICcnXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUuZ2FtbWFQcm9vZj8udDEgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5nYW1tYVByb29mPy50MiB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUuZ2FtbWFQcm9vZj8udSB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hUHJvb2Y/LnggfHwgJyd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS53UHJvb2Y/LnogfHwgJyd9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLndQcm9vZj8uenBybSB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLndQcm9vZj8udCB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLndQcm9vZj8udiB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUud1Byb29mPy53IHx8ICcnXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUud1Byb29mPy5zIHx8ICcnfSR7ZGVsaW1ldGVyfSR7c2hhcmUud1Byb29mPy5zMSB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUud1Byb29mPy5zMiB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLndQcm9vZj8udDEgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS53UHJvb2Y/LnQyIHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS53UHJvb2Y/LnUgfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS53UHJvb2Y/LnggfHwgJyd9YCxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgTXUgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBNdSBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNdVNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IE1VU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDI2LCAnTXUnKTtcbiAgY29uc3QgaGFzR2FtbWFQcm9vZiA9IHZhbGlkYXRlT3B0aW9uYWxWYWx1ZXMoc2hhcmVzLCAyLCAxNCwgJ011JywgJ2dhbW1hUHJvb2YnKTtcbiAgY29uc3QgaGFzV1Byb29mID0gdmFsaWRhdGVPcHRpb25hbFZhbHVlcyhzaGFyZXMsIDE0LCAyNiwgJ011JywgJ3dQcm9vZicpO1xuXG4gIGxldCBnYW1tYVByb29mO1xuICBpZiAoaGFzR2FtbWFQcm9vZikge1xuICAgIGdhbW1hUHJvb2YgPSB7XG4gICAgICB6OiBzaGFyZXNbMl0sXG4gICAgICB6cHJtOiBzaGFyZXNbM10sXG4gICAgICB0OiBzaGFyZXNbNF0sXG4gICAgICB2OiBzaGFyZXNbNV0sXG4gICAgICB3OiBzaGFyZXNbNl0sXG4gICAgICBzOiBzaGFyZXNbN10sXG4gICAgICBzMTogc2hhcmVzWzhdLFxuICAgICAgczI6IHNoYXJlc1s5XSxcbiAgICAgIHQxOiBzaGFyZXNbMTBdLFxuICAgICAgdDI6IHNoYXJlc1sxMV0sXG4gICAgICB1OiBzaGFyZXNbMTJdLFxuICAgICAgeDogc2hhcmVzWzEzXSxcbiAgICB9O1xuICB9XG5cbiAgbGV0IHdQcm9vZjtcbiAgaWYgKGhhc1dQcm9vZikge1xuICAgIHdQcm9vZiA9IHtcbiAgICAgIHo6IHNoYXJlc1sxNF0sXG4gICAgICB6cHJtOiBzaGFyZXNbMTVdLFxuICAgICAgdDogc2hhcmVzWzE2XSxcbiAgICAgIHY6IHNoYXJlc1sxN10sXG4gICAgICB3OiBzaGFyZXNbMThdLFxuICAgICAgczogc2hhcmVzWzE5XSxcbiAgICAgIHMxOiBzaGFyZXNbMjBdLFxuICAgICAgczI6IHNoYXJlc1syMV0sXG4gICAgICB0MTogc2hhcmVzWzIyXSxcbiAgICAgIHQyOiBzaGFyZXNbMjNdLFxuICAgICAgdTogc2hhcmVzWzI0XSxcbiAgICAgIHg6IHNoYXJlc1syNV0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS50byksXG4gICAgajogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS5mcm9tKSxcbiAgICBhbHBoYTogc2hhcmVzWzBdLFxuICAgIG11OiBzaGFyZXNbMV0sXG4gICAgZ2FtbWFQcm9vZixcbiAgICB3UHJvb2YsXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydCBNdSBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBNdSBzaGFyZVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydE11U2hhcmUoc2hhcmU6IE1VU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmopLFxuICAgIHNoYXJlOiBgJHtzaGFyZS5hbHBoYX0ke2RlbGltZXRlcn0ke3NoYXJlLm11fSR7ZGVsaW1ldGVyfSR7c2hhcmUuZ2FtbWFQcm9vZj8ueiB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUuZ2FtbWFQcm9vZj8uenBybSB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hUHJvb2Y/LnQgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5nYW1tYVByb29mPy52IHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS5nYW1tYVByb29mPy53IHx8ICcnXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUuZ2FtbWFQcm9vZj8ucyB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hUHJvb2Y/LnMxIHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS5nYW1tYVByb29mPy5zMiB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hUHJvb2Y/LnQxIHx8ICcnfSR7ZGVsaW1ldGVyfSR7c2hhcmUuZ2FtbWFQcm9vZj8udDIgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLmdhbW1hUHJvb2Y/LnUgfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5nYW1tYVByb29mPy54IHx8ICcnfSR7ZGVsaW1ldGVyfSR7c2hhcmUud1Byb29mPy56IHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS53UHJvb2Y/Lnpwcm0gfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS53UHJvb2Y/LnQgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS53UHJvb2Y/LnYgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLndQcm9vZj8udyB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLndQcm9vZj8ucyB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLndQcm9vZj8uczEgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLndQcm9vZj8uczIgfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS53UHJvb2Y/LnQxIHx8ICcnfSR7ZGVsaW1ldGVyfSR7c2hhcmUud1Byb29mPy50MiB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUud1Byb29mPy51IHx8ICcnXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUud1Byb29mPy54IHx8ICcnfWAsXG4gIH07XG59XG5cbi8qKlxuICogcGFyc2VzIEQgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBEIFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBEU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDIsICdEJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBqOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLmZyb20pLFxuICAgIGRlbHRhOiBzaGFyZXNbMF0sXG4gICAgR2FtbWE6IHNoYXJlc1sxXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IEQgc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gRCBzaGFyZVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERTaGFyZShzaGFyZTogRFNoYXJlKTogU2lnbmF0dXJlU2hhcmVSZWNvcmQge1xuICByZXR1cm4ge1xuICAgIHRvOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5qKSxcbiAgICBzaGFyZTogYCR7c2hhcmUuZGVsdGF9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5HYW1tYX1gLFxuICB9O1xufVxuXG4vKipcbiAqIHBhcnNlcyBTIGFuZCBEIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgUyBhbmQgRCBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTRFNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IHsgc1NoYXJlOiBTaWduYXR1cmVTaGFyZTsgZFNoYXJlOiBEU2hhcmUgfSB7XG4gIGNvbnN0IHNoYXJlcyA9IHNoYXJlLnNoYXJlLnNwbGl0KHNlY29uZGFyeURlbGltZXRlcik7XG4gIHZhbGlkYXRlU2hhcmVzTGVuZ3RoKHNoYXJlcywgMiwgJ1NEJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBzU2hhcmU6IHBhcnNlU2lnbmF0dXJlU2hhcmUoeyB0bzogc2hhcmUudG8sIGZyb206IHNoYXJlLmZyb20sIHNoYXJlOiBzaGFyZXNbMF0gfSksXG4gICAgZFNoYXJlOiBwYXJzZURTaGFyZSh7IHRvOiBzaGFyZS50bywgZnJvbTogc2hhcmUuZnJvbSwgc2hhcmU6IHNoYXJlc1sxXSB9KSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IFMgYW5kIEQgc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gUyBhbmQgRCBzaGFyZSBpbiBhIG9iamVjdFxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFNEU2hhcmUoc2hhcmU6IHsgc1NoYXJlOiBTU2hhcmU7IGRTaGFyZTogRFNoYXJlIH0pOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmRTaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5kU2hhcmUuaiksXG4gICAgc2hhcmU6IGAke3NoYXJlLnNTaGFyZS5SfSR7ZGVsaW1ldGVyfSR7c2hhcmUuc1NoYXJlLnN9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5zU2hhcmUueX0ke3NlY29uZGFyeURlbGltZXRlcn0ke3NoYXJlLmRTaGFyZS5kZWx0YX0ke2RlbGltZXRlcn0ke3NoYXJlLmRTaGFyZS5HYW1tYX1gLFxuICB9O1xufVxuXG4vKipcbiAqIHBhcnNlcyBzaWduYXR1cmUgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBTaWduYXR1cmUgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2lnbmF0dXJlU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogU2lnbmF0dXJlU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDMsICdTaWduYXR1cmUnKTtcblxuICByZXR1cm4ge1xuICAgIGk6IGdldFBhcnRpY2lwYW50SW5kZXgoc2hhcmUudG8pLFxuICAgIFI6IHNoYXJlc1swXSxcbiAgICBzOiBzaGFyZXNbMV0sXG4gICAgeTogc2hhcmVzWzJdLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZldHMgY29tYmluZWQgc2lnbmF0dXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaWduYXR1cmUgLSBjb21iaW5lZCBzaWduYXR1cmUgc2hhcmVcbiAqIEBwYXJhbSB1c2VySW5kZXggLSB1c2VyIGluZGV4LCBlaXRoZXIgMSAodXNlcikgb3IgMiAoYmFja3VwKVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENvbWJpbmVkU2lnbmF0dXJlKHNpZ25hdHVyZTogU2lnbmF0dXJlLCB1c2VySW5kZXg6IG51bWJlcik6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHVzZXJJbmRleCksXG4gICAgc2hhcmU6IGAke3NpZ25hdHVyZS5yZWNpZH0ke2RlbGltZXRlcn0ke3NpZ25hdHVyZS5yfSR7ZGVsaW1ldGVyfSR7c2lnbmF0dXJlLnN9JHtkZWxpbWV0ZXJ9JHtzaWduYXR1cmUueX1gLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb21iaW5lZFNpZ25hdHVyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBTaWduYXR1cmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDMsICdTaWduYXR1cmUnKTtcblxuICByZXR1cm4ge1xuICAgIHJlY2lkOiBOdW1iZXIoc2hhcmVzWzBdKSxcbiAgICByOiBzaGFyZXNbMV0sXG4gICAgczogc2hhcmVzWzJdLFxuICAgIHk6IHNoYXJlc1szXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IHNpZ25hdHVyZSBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBTaWduYXR1cmUgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTaWduYXR1cmVTaGFyZShcbiAgc2hhcmU6IFNpZ25hdHVyZVNoYXJlLFxuICBzZW5kZXJJbmRleDogbnVtYmVyLFxuICByZWNpcGllbnRJbmRleDogbnVtYmVyXG4pOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHJlY2lwaWVudEluZGV4KSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzZW5kZXJJbmRleCksXG4gICAgc2hhcmU6IGAke3NoYXJlLlJ9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5zfSR7ZGVsaW1ldGVyfSR7c2hhcmUueX1gLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnRzIEIgc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gQiBzaGFyZVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEJTaGFyZShzaGFyZTogQlNoYXJlKTogU2lnbmF0dXJlU2hhcmVSZWNvcmQge1xuICByZXR1cm4ge1xuICAgIHRvOiBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08sXG4gICAgZnJvbTogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuaSksXG4gICAgc2hhcmU6IGAke3NoYXJlLmJldGF9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5nYW1tYX0ke2RlbGltZXRlcn0ke3NoYXJlLmt9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5udX0ke2RlbGltZXRlcn0ke3NoYXJlLnd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS55fSR7ZGVsaW1ldGVyfSR7c2hhcmUubH0ke2RlbGltZXRlcn0ke3NoYXJlLm19JHtkZWxpbWV0ZXJ9JHtzaGFyZS5ufSR7ZGVsaW1ldGVyfSR7c2hhcmUubnRpbGRlfSR7ZGVsaW1ldGVyfSR7c2hhcmUuaDF9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5oMn0ke2RlbGltZXRlcn0ke3NoYXJlLmNrfWAsXG4gIH07XG59XG5cbi8qKlxuICogcGFyc2VzIEIgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgQiBzaGFyZSByZWNvcmRcbiAqIEByZXR1cm5zIEIgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQlNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IEJTaGFyZSB7XG4gIGNvbnN0IHNoYXJlcyA9IHNoYXJlLnNoYXJlLnNwbGl0KGRlbGltZXRlcik7XG4gIHZhbGlkYXRlU2hhcmVzTGVuZ3RoKHNoYXJlcywgMTMsICdCJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBiZXRhOiBzaGFyZXNbMF0sXG4gICAgZ2FtbWE6IHNoYXJlc1sxXSxcbiAgICBrOiBzaGFyZXNbMl0sXG4gICAgbnU6IHNoYXJlc1szXSxcbiAgICB3OiBzaGFyZXNbNF0sXG4gICAgeTogc2hhcmVzWzVdLFxuICAgIGw6IHNoYXJlc1s2XSxcbiAgICBtOiBzaGFyZXNbN10sXG4gICAgbjogc2hhcmVzWzhdLFxuICAgIG50aWxkZTogc2hhcmVzWzldLFxuICAgIGgxOiBzaGFyZXNbMTBdLFxuICAgIGgyOiBzaGFyZXNbMTFdLFxuICAgIGNrOiBzaGFyZXNbMTJdLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnRzIE8gc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIE8gc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRPU2hhcmUoc2hhcmU6IE9TaGFyZSk6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIHNoYXJlOiBgJHtzaGFyZS5HYW1tYX0ke2RlbGltZXRlcn0ke3NoYXJlLmRlbHRhfSR7ZGVsaW1ldGVyfSR7c2hhcmUua30ke2RlbGltZXRlcn0ke3NoYXJlLm9taWNyb259JHtkZWxpbWV0ZXJ9JHtzaGFyZS55fWAsXG4gIH07XG59XG5cbi8qKlxuICogcGFyc2VzIE8gc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgTyBzaGFyZSByZWNvcmRcbiAqIEByZXR1cm5zIE8gU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlT1NoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IE9TaGFyZSB7XG4gIGNvbnN0IHNoYXJlcyA9IHNoYXJlLnNoYXJlLnNwbGl0KGRlbGltZXRlcik7XG4gIHZhbGlkYXRlU2hhcmVzTGVuZ3RoKHNoYXJlcywgNSwgJ08nKTtcblxuICByZXR1cm4ge1xuICAgIGk6IGdldFBhcnRpY2lwYW50SW5kZXgoc2hhcmUudG8pLFxuICAgIEdhbW1hOiBzaGFyZXNbMF0sXG4gICAgZGVsdGE6IHNoYXJlc1sxXSxcbiAgICBrOiBzaGFyZXNbMl0sXG4gICAgb21pY3Jvbjogc2hhcmVzWzNdLFxuICAgIHk6IHNoYXJlc1s0XSxcbiAgfTtcbn1cblxuLyoqXG4gKiBnZXRzIHBhcnRpY2lwYW50IGluZGV4XG4gKiBAcGFyYW0gcGFydGljaXBhbnQgLSBwYXJ0aWNpcGFudHMgKHVzZXIsIGJhY2t1cCwgb3IgYml0Z28pXG4gKiBAcmV0dXJucyBpbmRleCAoMSwgMiwgMHIgMylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcnRpY2lwYW50SW5kZXgocGFydGljaXBhbnQ6ICd1c2VyJyB8ICdiYWNrdXAnIHwgJ2JpdGdvJyk6IG51bWJlciB7XG4gIHN3aXRjaCAocGFydGljaXBhbnQpIHtcbiAgICBjYXNlICd1c2VyJzpcbiAgICAgIHJldHVybiAxO1xuICAgIGNhc2UgJ2JhY2t1cCc6XG4gICAgICByZXR1cm4gMjtcbiAgICBjYXNlICdiaXRnbyc6XG4gICAgICByZXR1cm4gMztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgRXJyb3IoJ1Vua293biBwYXJ0aWNpcGFudCcpO1xuICB9XG59XG5cbi8qKlxuICogZ2V0cyBwYXJ0aWNpcGFudCBuYW1lIGJ5IGluZGV4XG4gKiBAcGFyYW0gaW5kZXggcGFydGljaXBhbnQgaW5kZXhcbiAqIEByZXR1cm5zIHBhcnRpY2lwYW50IG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcnRpY2lwYW50RnJvbUluZGV4KGluZGV4OiBudW1iZXIpOiBTaWduYXR1cmVTaGFyZVR5cGUge1xuICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIFNpZ25hdHVyZVNoYXJlVHlwZS5VU0VSO1xuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiBTaWduYXR1cmVTaGFyZVR5cGUuQkFDS1VQO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBTaWduYXR1cmVTaGFyZVR5cGUuQklUR087XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBwYXJ0aWNpcGFudCBpbmRleCAke2luZGV4fWApO1xuICB9XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIHZlcmlmeSB1LXZhbHVlIHdhbGxldCBzaWduYXR1cmVzIGZvciB0aGUgYml0Z28tdXNlciBhbmQgYml0Z28tYmFja3VwIHNoYXJlcy5cbiAqIEBwYXJhbSBwYXJhbXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVdhbGxldFNpZ25hdHVyZShwYXJhbXM6IHtcbiAgd2FsbGV0U2lnbmF0dXJlOiBwZ3AuS2V5O1xuICBiaXRnb1B1YjogcGdwLktleTtcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZztcbiAgdXNlcktleUlkOiBzdHJpbmc7XG4gIGJhY2t1cEtleUlkOiBzdHJpbmc7XG4gIGRlY3J5cHRlZFNoYXJlOiBzdHJpbmc7XG4gIHZlcmlmaWVySW5kZXg6IDEgfCAyO1xufSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByYXdOb3RhdGlvbnMgPSBhd2FpdCBjb21tb25WZXJpZnlXYWxsZXRTaWduYXR1cmUocGFyYW1zKTtcbiAgY29uc3QgcHVibGljVVZhbHVlUmF3Tm90YXRpb25JbmRleCA9IDIgKyBwYXJhbXMudmVyaWZpZXJJbmRleDtcblxuICAvLyBEZXJpdmUgcHVibGljIGZvcm0gb2YgdS12YWx1ZVxuICBjb25zdCBwdWJsaWNVVmFsdWUgPSBlY2MucG9pbnRGcm9tU2NhbGFyKEJ1ZmZlci5mcm9tKHBhcmFtcy5kZWNyeXB0ZWRTaGFyZS5zbGljZSgwLCA2NCksICdoZXgnKSwgdHJ1ZSk7XG4gIGFzc2VydChwdWJsaWNVVmFsdWUgIT09IG51bGwsICdudWxsIHB1YmxpYyB1LXZhbHVlJyk7XG4gIC8vIFZlcmlmeSB0aGF0IHRoZSB1IHZhbHVlICsgY2hhaW5jb2RlIGlzIGVxdWFsIHRvIHRoZSBwcm9vZiByZXRyaWV2ZWQgZnJvbSB0aGUgcmF3IG5vdGF0aW9uc1xuICBhc3NlcnQoXG4gICAgQnVmZmVyLmZyb20ocHVibGljVVZhbHVlKS50b1N0cmluZygnaGV4JykgKyBwYXJhbXMuZGVjcnlwdGVkU2hhcmUuc2xpY2UoNjQpID09PVxuICAgICAgQnVmZmVyLmZyb20ocmF3Tm90YXRpb25zW3B1YmxpY1VWYWx1ZVJhd05vdGF0aW9uSW5kZXhdLnZhbHVlKS50b1N0cmluZygpLFxuICAgICdiaXRnbyBzaGFyZSBtaXNtYXRjaCdcbiAgKTtcbn1cbiJdfQ==
|
|
807
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL2VjZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3REFBdUQ7QUFDdkQsbUNBd0JpQjtBQUNqQix5Q0FBd0c7QUFDeEcsb0NBQTRDO0FBRzVDLHNDQUEwRjtBQUMxRixvREFBc0M7QUFDdEMsb0RBQTRCO0FBQzVCLDhDQUE2QztBQUM3Qyw2Q0FBK0I7QUFDL0IsZ0RBQXdCO0FBSXhCLE1BQU0sR0FBRyxHQUFHLElBQUksV0FBSyxFQUFFLENBQUM7QUFFeEI7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLFFBQWtCLEVBQ2xCLGdCQUFxQyxFQUNyQyxjQUFzQjtJQUV0QixNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7SUFFN0IsSUFBSSxXQUErQixDQUFDO0lBQ3BDLElBQUksVUFBOEIsQ0FBQztJQUNuQyxJQUFJLFlBQWdDLENBQUM7SUFFckMsS0FBSyxNQUFNLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRTtRQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLGFBQWEsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRW5GLFFBQVEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7WUFDaEMsS0FBSyxDQUFDO2dCQUNKLFVBQVUsR0FBRyxNQUFNLENBQUM7Z0JBQ3BCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osWUFBWSxHQUFHLE1BQU0sQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixXQUFXLEdBQUcsTUFBTSxDQUFDO2dCQUNyQixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FB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QUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDYixDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNiLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2IsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDZCxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNkLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2QsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDZCxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNiLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1NBQ2QsQ0FBQztLQUNIO0lBRUQsSUFBSSxNQUFNLENBQUM7SUFDWCxJQUFJLFNBQVMsRUFBRTtRQUNiLE1BQU0sR0FBRztZQUNQLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDYixDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNiLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDYixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNkLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2QsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDZCxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNkLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7U0FDZCxDQUFDO0tBQ0g7SUFFRCxPQUFPO1FBQ0wsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDbEMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDWixLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNoQixFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNiLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ1osTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDakIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDYixFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNiLEtBQUs7UUFDTCxVQUFVO1FBQ1YsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDO0FBckVELGtDQXFFQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixhQUFhLENBQUMsS0FBYTs7SUFDekMsT0FBTztRQUNMLEVBQUUsRUFBRSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsaUJBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLGlCQUFTLEdBQUcsS0FBSyxDQUFDLEVBQUUsR0FBRyxpQkFBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsaUJBQVMsR0FDbEcsS0FBSyxDQUFDLE1BQ1IsR0FBRyxpQkFBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLEdBQUcsaUJBQVMsR0FBRyxLQUFLLENBQUMsRUFBRSxHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxLQUFLLDBDQUFFLENBQUMsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FDM0YsQ0FBQSxNQUFBLEtBQUssQ0FBQyxLQUFLLDBDQUFFLENBQUMsS0FBSSxFQUNwQixHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxLQUFLLDBDQUFFLENBQUMsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsQ0FBQyxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUNoRixDQUFBLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsRUFBRSxLQUFJLEVBQ3JCLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsRUFBRSxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxDQUFDLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQ3RGLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxJQUFJLEtBQUksRUFDNUIsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxDQUFDLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLENBQUMsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FDMUYsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLENBQUMsS0FBSSxFQUN6QixHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLENBQUMsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsRUFBRSxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUMzRixDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsRUFBRSxLQUFJLEVBQzFCLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsRUFBRSxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxFQUFFLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQzVGLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxDQUFDLEtBQUksRUFDekIsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsVUFB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QixHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLENBQUMsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsQ0FBQyxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUMxRixDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsQ0FBQyxLQUFJLEVBQ3pCLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsQ0FBQyxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxFQUFFLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQzNGLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxFQUFFLEtBQUksRUFDMUIsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxFQUFFLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLEVBQUUsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FDNUYsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLENBQUMsS0FBSSxFQUN6QixHQUFHLGlCQUFTLEdBQUcsQ0FBQSxNQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLENBQUMsS0FBSSxFQUFFLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLE1BQU0sMENBQUUsQ0FBQyxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUN0RixDQUFBLE1BQUEsS0FBSyxDQUFDLE1BQU0sMENBQUUsSUFBSSxLQUFJLEVBQ3hCLEdBQUcsaUJBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLE1BQU0sMENBQUUsQ0FBQyxLQUFJLEVBQUUsR0FBRyxpQkFBUyxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsTUFBTSwwQ0FBRSxDQUFDLEtBQUksRUFBRSxHQUFHLGlCQUFTLEdBQ2xGLENBQUEs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QyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFDMUUsc0JBQXNCLENBQ3ZCLENBQUM7QUFDSixDQUFDO0FBckJELHNEQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVjZHNhIH0gZnJvbSAnLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzJztcbmltcG9ydCB7XG4gIERlY3J5cHRhYmxlTlNoYXJlLFxuICBDb21iaW5lZEtleSxcbiAgU2lnbmluZ01hdGVyaWFsLFxuICBFbmNyeXB0ZWROU2hhcmUsXG4gIEFTaGFyZSxcbiAgQ3JlYXRlVXNlckdhbW1hQW5kTXVTaGFyZVJULFxuICBDcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmVSVCxcbiAgRFNoYXJlLFxuICBHU2hhcmUsXG4gIEtleVNoYXJlLFxuICBOU2hhcmUsXG4gIE9TaGFyZSxcbiAgU2VuZFNoYXJlVHlwZSxcbiAgU2lnbmF0dXJlU2hhcmUsXG4gIFNpZ25TaGFyZSxcbiAgWFNoYXJlLFxuICBXU2hhcmUsXG4gIFhTaGFyZVdpdGhOVGlsZGUsXG4gIFlTaGFyZVdpdGhOVGlsZGUsXG4gIFNlbmRTaGFyZVRvQml0Z29SVCxcbiAgUmVjZWl2ZWRTaGFyZVR5cGUsXG4gIEJTaGFyZSxcbiAgU2lnbmF0dXJlLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFNpZ25hdHVyZVNoYXJlUmVjb3JkLCBTaWduYXR1cmVTaGFyZVR5cGUsIFJlcXVlc3RUeXBlLCBjcmVhdGVTaGFyZVByb29mIH0gZnJvbSAnLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBTaGFyZUtleVBvc2l0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IEtTaGFyZSwgTVVTaGFyZSwgU1NoYXJlIH0gZnJvbSAnLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS90eXBlcyc7XG5pbXBvcnQgeyBjb21tb25WZXJpZnlXYWxsZXRTaWduYXR1cmUsIGdldFR4UmVxdWVzdCwgc2VuZFNpZ25hdHVyZVNoYXJlIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCBjcmVhdGVLZWNjYWtIYXNoIGZyb20gJ2tlY2Nhayc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBiaXAzMiwgZWNjIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCAqIGFzIHBncCBmcm9tICdvcGVucGdwJztcbmltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgQXBpS2V5U2hhcmUgfSBmcm9tICcuLi8uLi9rZXljaGFpbic7XG5pbXBvcnQgeyBIYXNoIH0gZnJvbSAnY3J5cHRvJztcblxuY29uc3QgTVBDID0gbmV3IEVjZHNhKCk7XG5cbi8qKlxuICogQ29tYmluZXMgTlNoYXJlcyB0byBjb21iaW5lIHRoZSBmaW5hbCBUU1Mga2V5XG4gKiBUaGlzIGNhbiBvbmx5IGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBVc2VyIG9yIEJhY2t1cCBrZXkgc2luY2UgaXQgcmVxdWlyZXMgdGhlIGNvbW1vbiBrZXljaGFpbiBmcm9tIEJpdEdvIGZpcnN0XG4gKlxuICogQHBhcmFtIGtleVNoYXJlIC0gVFNTIGtleSBzaGFyZVxuICogQHBhcmFtIGVuY3J5cHRlZE5TaGFyZXMgLSBlbmNyeXB0ZWQgTlNoYXJlcyB3aXRoIGluZm9ybWF0aW9uIG9uIGhvdyB0byBkZWNyeXB0XG4gKiBAcGFyYW0gY29tbW9uS2V5Y2hhaW4gLSBleHBlY3RlZCBjb21tb24ga2V5Y2hhaW4gb2YgdGhlIGNvbWJpbmVkIGtleVxuICogQHJldHVybnMge0NvbWJpbmVkS2V5fSBjb21iaW5lZCBUU1Mga2V5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21iaW5lZEtleShcbiAga2V5U2hhcmU6IEtleVNoYXJlLFxuICBlbmNyeXB0ZWROU2hhcmVzOiBEZWNyeXB0YWJsZU5TaGFyZVtdLFxuICBjb21tb25LZXljaGFpbjogc3RyaW5nXG4pOiBQcm9taXNlPENvbWJpbmVkS2V5PiB7XG4gIGNvbnN0IG5TaGFyZXM6IE5TaGFyZVtdID0gW107XG5cbiAgbGV0IGJpdGdvTlNoYXJlOiBOU2hhcmUgfCB1bmRlZmluZWQ7XG4gIGxldCB1c2VyTlNoYXJlOiBOU2hhcmUgfCB1bmRlZmluZWQ7XG4gIGxldCBiYWNrdXBOU2hhcmU6IE5TaGFyZSB8IHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IGVuY3J5cHRlZE5TaGFyZSBvZiBlbmNyeXB0ZWROU2hhcmVzKSB7XG4gICAgY29uc3QgblNoYXJlID0gYXdhaXQgZGVjcnlwdE5TaGFyZShlbmNyeXB0ZWROU2hhcmUsIGVuY3J5cHRlZE5TaGFyZS5pc2JzNThFbmNvZGVkKTtcblxuICAgIHN3aXRjaCAoZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5qKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHVzZXJOU2hhcmUgPSBuU2hhcmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBiYWNrdXBOU2hhcmUgPSBuU2hhcmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBiaXRnb05TaGFyZSA9IG5TaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgTlNoYXJlIGluZGV4Jyk7XG4gICAgfVxuXG4gICAgblNoYXJlcy5wdXNoKG5TaGFyZSk7XG4gIH1cblxuICBpZiAoIWJpdGdvTlNoYXJlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEJpdEdvIE4gU2hhcmUnKTtcbiAgfVxuXG4gIGNvbnN0IGNvbWJpbmVkS2V5ID0gTVBDLmtleUNvbWJpbmUoa2V5U2hhcmUucFNoYXJlLCBuU2hhcmVzKTtcbiAgaWYgKGNvbWJpbmVkS2V5LnhTaGFyZS55ICsgY29tYmluZWRLZXkueFNoYXJlLmNoYWluY29kZSAhPT0gY29tbW9uS2V5Y2hhaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbW1vbiBrZXljaGFpbnMgZG8gbm90IG1hdGNoJyk7XG4gIH1cblxuICBjb25zdCBzaWduaW5nTWF0ZXJpYWw6IFNpZ25pbmdNYXRlcmlhbCA9IHtcbiAgICBwU2hhcmU6IGtleVNoYXJlLnBTaGFyZSxcbiAgICBiaXRnb05TaGFyZSxcbiAgICBiYWNrdXBOU2hhcmUsXG4gICAgdXNlck5TaGFyZSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHNpZ25pbmdNYXRlcmlhbCxcbiAgICBjb21tb25LZXljaGFpbixcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBTaWduU2hhcmUgd2l0aCBVc2VyIFhTaGFyZSBhbmQgWVNoYXJlIENvcnJlc3BvbmRpbmcgdG8gQml0R29cbiAqIEBwYXJhbSB7WFNoYXJlfSB4U2hhcmUgVXNlciBzZWNyZXQgeFNoYXJlXG4gKiBAcGFyYW0ge1lTaGFyZX0geVNoYXJlIFlTaGFyZSBmcm9tIEJpdGdvXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduU2hhcmU+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlclNpZ25TaGFyZShcbiAgeFNoYXJlOiBYU2hhcmUgfCBYU2hhcmVXaXRoTlRpbGRlLFxuICB5U2hhcmU6IFlTaGFyZVdpdGhOVGlsZGVcbik6IFByb21pc2U8U2lnblNoYXJlPiB7XG4gIGlmICh4U2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFhTaGFyZSwgWFNoYXJlIGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBVc2VyYCk7XG4gIH1cblxuICBpZiAoeVNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUiB8fCB5U2hhcmUuaiAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CSVRHTykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBZU2hhcmUgcHJvdmlkZWQgZm9yIHNpZ24nKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgTVBDLnNpZ25TaGFyZSh4U2hhcmUsIHlTaGFyZSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgR2FtbWEgU2hhcmUgYW5kIE11U2hhcmUgd2l0aCBVc2VyIFdTaGFyZSBhbmQgQVNoYXJlIEZyb20gQml0R29cbiAqIEBwYXJhbSB7V1NoYXJlfSB3U2hhcmUgVXNlciBXU2hhcmVcbiAqIEBwYXJhbSB7QVNoYXJlfSBhU2hhcmUgQVNoYXJlIGZyb20gQml0Z29cbiAqIEByZXR1cm5zIHtQcm9taXNlPENyZWF0ZVVzZXJHYW1tYUFuZE11U2hhcmVSVD59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVVc2VyR2FtbWFBbmRNdVNoYXJlKHdTaGFyZTogV1NoYXJlLCBhU2hhcmU6IEFTaGFyZSk6IFByb21pc2U8Q3JlYXRlVXNlckdhbW1hQW5kTXVTaGFyZVJUPiB7XG4gIGlmICh3U2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFdTaGFyZSwgZG9lc24ndCBiZWxvbmcgdG8gdGhlIFVzZXJgKTtcbiAgfVxuICBpZiAoYVNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUiB8fCBhU2hhcmUuaiAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CSVRHTykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBU2hhcmUsIGlzIG5vdCBmcm9tIEJpdGdvIHRvIFVzZXInKTtcbiAgfVxuXG4gIHJldHVybiBNUEMuc2lnbkNvbnZlcnQoeyB3U2hhcmUsIGFTaGFyZSB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBPbWljcm9uIFNoYXJlIGFuZCBEZWx0YSBzaGFyZSB3aXRoIHVzZXIgR1NoYXJlXG4gKiBAcGFyYW0ge0dTaGFyZX0gZ1NoYXJlIFVzZXIgR1NoYXJlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxDcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmVSVD59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmUoZ1NoYXJlOiBHU2hhcmUpOiBQcm9taXNlPENyZWF0ZVVzZXJPbWljcm9uQW5kRGVsdGFTaGFyZVJUPiB7XG4gIGlmIChnU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEdTaGFyZSwgZG9lc24ndCBiZWxvbmcgdG8gdGhlIFVzZXJgKTtcbiAgfVxuICByZXR1cm4gTVBDLnNpZ25Db21iaW5lKHtcbiAgICBnU2hhcmU6IGdTaGFyZSxcbiAgICBzaWduSW5kZXg6IHtcbiAgICAgIGk6IFNoYXJlS2V5UG9zaXRpb24uQklUR08sXG4gICAgICBqOiBnU2hhcmUuaSxcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBTaWduYXR1cmUgU2hhcmUgd2l0aCBVc2VyIE9TaGFyZSBhbmQgRFNoYXJlIEZyb20gQml0R29cbiAqIEBwYXJhbSB7T1NoYXJlfSBvU2hhcmUgVXNlciBPU2hhcmVcbiAqIEBwYXJhbSB7RFNoYXJlfSBkU2hhcmUgRFNoYXJlIGZyb20gYml0Z29cbiAqIEBwYXJhbSB7QnVmZmVyfSBtZXNzYWdlIG1lc3NhZ2UgdG8gcGVyZm9ybSBzaWduXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxjcmVhdGVVc2VyU2lnblNoYXJlUlQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlclNpZ25hdHVyZVNoYXJlKFxuICBvU2hhcmU6IE9TaGFyZSxcbiAgZFNoYXJlOiBEU2hhcmUsXG4gIG1lc3NhZ2U6IEJ1ZmZlcixcbiAgaGFzaDogSGFzaCA9IGNyZWF0ZUtlY2Nha0hhc2goJ2tlY2NhazI1NicpXG4pOiBQcm9taXNlPFNpZ25hdHVyZVNoYXJlPiB7XG4gIGlmIChvU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIE9TaGFyZSwgZG9lc24ndCBiZWxvbmcgdG8gdGhlIFVzZXJgKTtcbiAgfVxuXG4gIGlmIChkU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSIHx8IGRTaGFyZS5qICE9PSBTaGFyZUtleVBvc2l0aW9uLkJJVEdPKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIERTaGFyZSwgZG9lc24ndCBzZWVtIHRvIGJlIGZyb20gQml0R29gKTtcbiAgfVxuICByZXR1cm4gTVBDLnNpZ24obWVzc2FnZSwgb1NoYXJlLCBkU2hhcmUsIGhhc2gpO1xufVxuXG5leHBvcnQgdHlwZSBNdURTaGFyZSA9IHsgbXVTaGFyZTogTVVTaGFyZTsgZFNoYXJlOiBEU2hhcmU7IGk6IFNoYXJlS2V5UG9zaXRpb24gfTtcblxuLyoqXG4gKiBTZW5kcyBTaGFyZSBUbyBCaXRnb1xuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkICAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0gcmVxdWVzdFR5cGUgLSB0aGUgdHlwZSBvZiByZXF1ZXN0IGJlaW5nIHN1Ym1pdHRlZCAoZWl0aGVyIHR4IG9yIG1lc3NhZ2UgZm9yIHNpZ25pbmcpXG4gKiBAcGFyYW0gc2hhcmVUeXBlXG4gKiBAcGFyYW0gc2hhcmVcbiAqIEBwYXJhbSBzaWduZXJTaGFyZVxuICogQHBhcmFtIHZzc1Byb29mIC0gdGhlIHYgdmFsdWUgb2YgdGhlIHNoYXJlXG4gKiBAcGFyYW0gcHJpdmF0ZVNoYXJlUHJvb2YgLSB0aGUgdVNpZyBvZiB0aGUgc2hhcmVcbiAqIEBwYXJhbSBwdWJsaWNTaGFyZSAtIHRoZSB5IHZhbHVlIG9mIHRoZSBzaGFyZVxuICogQHBhcmFtIHVzZXJQdWJsaWNHcGdLZXkgLSB0aGUgcHVibGljIGtleSBvZiB0aGUgZ3BnIGtleSB1c2VkIGZvciBjcmVhdGluZyB0aGUgcHJpdmF0ZVNoYXJlUHJvb2ZcbiAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25hdHVyZVNoYXJlUmVjb3JkPn0gLSBhIFNpZ25hdHVyZSBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFNoYXJlVG9CaXRnbyhcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZyxcbiAgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlLFxuICBzaGFyZVR5cGU6IFNlbmRTaGFyZVR5cGUsXG4gIHNoYXJlOiBTU2hhcmUgfCBNdURTaGFyZSB8IEtTaGFyZSxcbiAgc2lnbmVyU2hhcmU/OiBzdHJpbmcsXG4gIHZzc1Byb29mPzogc3RyaW5nLFxuICBwcml2YXRlU2hhcmVQcm9vZj86IHN0cmluZyxcbiAgcHVibGljU2hhcmU/OiBzdHJpbmcsXG4gIHVzZXJQdWJsaWNHcGdLZXk/OiBzdHJpbmdcbik6IFByb21pc2U8U2VuZFNoYXJlVG9CaXRnb1JUPiB7XG4gIGlmIChzaGFyZVR5cGUgIT09IFNlbmRTaGFyZVR5cGUuU1NoYXJlICYmIHNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2hhcmUsIGlzIG5vdCBmcm9tIFVzZXIgdG8gQml0Z28nKTtcbiAgfVxuICBsZXQgc2lnbmF0dXJlU2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkO1xuICBsZXQgcmVzcG9uc2VGcm9tQml0Z286IFNlbmRTaGFyZVRvQml0Z29SVDtcblxuICBzd2l0Y2ggKHNoYXJlVHlwZSkge1xuICAgIGNhc2UgU2VuZFNoYXJlVHlwZS5LU2hhcmU6XG4gICAgICBhc3NlcnQoc2lnbmVyU2hhcmUsIGBzaWduZXIgc2hhcmUgbXVzdCBiZSBwcmVzZW50YCk7XG4gICAgICBjb25zdCBrU2hhcmUgPSBzaGFyZSBhcyBLU2hhcmU7XG4gICAgICBzaWduYXR1cmVTaGFyZSA9IGNvbnZlcnRLU2hhcmUoa1NoYXJlKTtcbiAgICAgIHNpZ25hdHVyZVNoYXJlLnZzc1Byb29mID0gdnNzUHJvb2Y7XG4gICAgICBzaWduYXR1cmVTaGFyZS5wdWJsaWNTaGFyZSA9IHB1YmxpY1NoYXJlO1xuICAgICAgc2lnbmF0dXJlU2hhcmUucHJpdmF0ZVNoYXJlUHJvb2YgPSBwcml2YXRlU2hhcmVQcm9vZjtcbiAgICAgIGF3YWl0IHNlbmRTaWduYXR1cmVTaGFyZShcbiAgICAgICAgYml0Z28sXG4gICAgICAgIHdhbGxldElkLFxuICAgICAgICB0eFJlcXVlc3RJZCxcbiAgICAgICAgc2lnbmF0dXJlU2hhcmUsXG4gICAgICAgIHJlcXVlc3RUeXBlLFxuICAgICAgICBzaWduZXJTaGFyZSxcbiAgICAgICAgJ2VjZHNhJyxcbiAgICAgICAgJ2Z1bGwnLFxuICAgICAgICB1c2VyUHVibGljR3BnS2V5XG4gICAgICApO1xuICAgICAgcmVzcG9uc2VGcm9tQml0Z28gPSBhd2FpdCBnZXRCaXRnb1RvVXNlckxhdGVzdFNoYXJlKFxuICAgICAgICBiaXRnbyxcbiAgICAgICAgd2FsbGV0SWQsXG4gICAgICAgIHR4UmVxdWVzdElkLFxuICAgICAgICBSZWNlaXZlZFNoYXJlVHlwZS5BU2hhcmUsXG4gICAgICAgIHJlcXVlc3RUeXBlXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTZW5kU2hhcmVUeXBlLk1VU2hhcmU6XG4gICAgICBjb25zdCBzaGFyZVRvU2VuZCA9IHNoYXJlIGFzIE11RFNoYXJlO1xuICAgICAgY29uc3QgbXVTaGFyZVJlY29yZCA9IGNvbnZlcnRNdVNoYXJlKHNoYXJlVG9TZW5kLm11U2hhcmUpO1xuICAgICAgY29uc3QgZFNoYXJlUmVjb3JkID0gY29udmVydERTaGFyZShzaGFyZVRvU2VuZC5kU2hhcmUpO1xuICAgICAgc2lnbmF0dXJlU2hhcmUgPSB7XG4gICAgICAgIHRvOiBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08sXG4gICAgICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlVG9TZW5kLmRTaGFyZS5qKSxcbiAgICAgICAgc2hhcmU6IGAke211U2hhcmVSZWNvcmQuc2hhcmV9JHtzZWNvbmRhcnlEZWxpbWV0ZXJ9JHtkU2hhcmVSZWNvcmQuc2hhcmV9YCxcbiAgICAgIH07XG4gICAgICBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmUoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCwgc2lnbmF0dXJlU2hhcmUsIHJlcXVlc3RUeXBlLCBzaWduZXJTaGFyZSwgJ2VjZHNhJyk7XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IGF3YWl0IGdldEJpdGdvVG9Vc2VyTGF0ZXN0U2hhcmUoXG4gICAgICAgIGJpdGdvLFxuICAgICAgICB3YWxsZXRJZCxcbiAgICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICAgIFJlY2VpdmVkU2hhcmVUeXBlLkRTaGFyZSxcbiAgICAgICAgcmVxdWVzdFR5cGVcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNlbmRTaGFyZVR5cGUuU1NoYXJlOlxuICAgICAgY29uc3Qgc1NoYXJlID0gc2hhcmUgYXMgU1NoYXJlO1xuICAgICAgc2lnbmF0dXJlU2hhcmUgPSBjb252ZXJ0U2lnbmF0dXJlU2hhcmUoc1NoYXJlLCAxLCAzKTtcbiAgICAgIGF3YWl0IHNlbmRTaWduYXR1cmVTaGFyZShiaXRnbywgd2FsbGV0SWQsIHR4UmVxdWVzdElkLCBzaWduYXR1cmVTaGFyZSwgcmVxdWVzdFR5cGUsIHNpZ25lclNoYXJlLCAnZWNkc2EnKTtcbiAgICAgIHJlc3BvbnNlRnJvbUJpdGdvID0gc1NoYXJlO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBTaGFyZSBnaXZlbiB0byBzZW5kJyk7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2VGcm9tQml0Z287XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbGF0ZXN0IHVzZXIncyBzaGFyZSBmcm9tIGJpdGdvIG5lZWRlZCB0byBjb250aW51ZSBzaWduaW5nIGZsb3dcbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyAtIHRoZSBiaXRnbyBpbnN0YW5jZVxuICogQHBhcmFtIHtTdHJpbmd9IHdhbGxldElkIC0gdGhlIHdhbGxldCBpZCAgKlxuICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICogQHBhcmFtIHtSZWNlaXZlZFNoYXJlVHlwZX0gc2hhcmVUeXBlIC0gdGhlIGV4Y3BlY3RlZCBzaGFyZSB0eXBlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTZW5kU2hhcmVUb0JpdGdvUlQ+fSAtIHNoYXJlIGZyb20gYml0Z28gdG8gdXNlclxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Qml0Z29Ub1VzZXJMYXRlc3RTaGFyZShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZyxcbiAgc2hhcmVUeXBlOiBSZWNlaXZlZFNoYXJlVHlwZSxcbiAgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlXG4pOiBQcm9taXNlPFNlbmRTaGFyZVRvQml0Z29SVD4ge1xuICBsZXQgcmVzcG9uc2VGcm9tQml0Z286IFNlbmRTaGFyZVRvQml0Z29SVDtcbiAgY29uc3QgdHhSZXF1ZXN0ID0gYXdhaXQgZ2V0VHhSZXF1ZXN0KGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQpO1xuICBsZXQgdXNlclNoYXJlcztcbiAgc3dpdGNoIChyZXF1ZXN0VHlwZSkge1xuICAgIGNhc2UgUmVxdWVzdFR5cGUudHg6XG4gICAgICBhc3NlcnQodHhSZXF1ZXN0LnRyYW5zYWN0aW9ucywgJ3RyYW5zYWN0aW9ucyByZXF1aXJlZCBhcyBwYXJ0IG9mIHR4UmVxdWVzdCcpO1xuICAgICAgdXNlclNoYXJlcyA9IHR4UmVxdWVzdC50cmFuc2FjdGlvbnNbMF0uc2lnbmF0dXJlU2hhcmVzO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBSZXF1ZXN0VHlwZS5tZXNzYWdlOlxuICAgICAgYXNzZXJ0KHR4UmVxdWVzdC5tZXNzYWdlcywgJ21lc3NhZ2VzIHJlcXVpcmVkIGFzIHBhcnQgb2YgdHhSZXF1ZXN0Jyk7XG4gICAgICB1c2VyU2hhcmVzID0gdHhSZXF1ZXN0Lm1lc3NhZ2VzWzBdLnNpZ25hdHVyZVNoYXJlcztcbiAgICAgIGJyZWFrO1xuICB9XG4gIGlmICghdXNlclNoYXJlcyB8fCAhdXNlclNoYXJlcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZXIgc2hhcmUgaXMgbm90IHByZXNlbnQnKTtcbiAgfVxuXG4gIGNvbnN0IHNoYXJlUmVjb3JkID0gdXNlclNoYXJlc1t1c2VyU2hhcmVzLmxlbmd0aCAtIDFdO1xuICBzd2l0Y2ggKHNoYXJlVHlwZSkge1xuICAgIGNhc2UgUmVjZWl2ZWRTaGFyZVR5cGUuQVNoYXJlOlxuICAgICAgcmVzcG9uc2VGcm9tQml0Z28gPSBwYXJzZUFTaGFyZShzaGFyZVJlY29yZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFJlY2VpdmVkU2hhcmVUeXBlLkRTaGFyZTpcbiAgICAgIHJlc3BvbnNlRnJvbUJpdGdvID0gcGFyc2VEU2hhcmUoc2hhcmVSZWNvcmQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBSZWNlaXZlZFNoYXJlVHlwZS5TaWduYXR1cmU6XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IHBhcnNlU2lnbmF0dXJlU2hhcmUoc2hhcmVSZWNvcmQpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzaGFyZSByZWNlaXZlZCcpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlRnJvbUJpdGdvO1xufVxuXG4vKipcbiAqIFByZXBhcmVzIGEgTlNoYXJlIHRvIGJlIGV4Y2hhbmdlZCB3aXRoIG90aGVyIGtleSBob2xkZXJzLlxuICogT3V0cHV0IGlzIGluIGEgZm9ybWF0IHRoYXQgaXMgdXNhYmxlIHdpdGhpbiBCaXRHbydzIGVjb3N5c3RlbS5cbiAqXG4gKiBAcGFyYW0ga2V5U2hhcmUgLSBUU1Mga2V5IHNoYXJlIG9mIHRoZSBwYXJ0eSBwcmVwYXJpbmcgZXhjaGFuZ2UgbWF0ZXJpYWxzXG4gKiBAcGFyYW0gcmVjaXBpZW50SW5kZXggLSBpbmRleCBvZiB0aGUgcmVjaXBpZW50ICgxLCAyLCBvciAzKVxuICogQHBhcmFtIHJlY2lwaWVudEdwZ1B1YmxpY0FybW9yIC0gcmVjaXBpZW50J3MgcHVibGljIGdwZyBrZXkgaW4gYXJtb3IgZm9ybWF0XG4gKiBAcGFyYW0gc2VuZGVyR3BnS2V5IC0gZXBoZW1lcmFsIEdQRyBrZXkgdG8gZW5jcnlwdCAvIGRlY3J5cHQgc2Vuc2l0dmUgZGF0YSBleGNoYW5nZWQgYmV0d2VlbiB1c2VyIGFuZCBzZXJ2ZXJcbiAqIEBwYXJhbSBpc2JzNThFbmNvZGVkIC0gaXMgYnM1OCBlbmNvZGVkIG9yIG5vdFxuICogQHJldHVybnMgZW5jcnlwdGVkIE4gU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHROU2hhcmUoXG4gIGtleVNoYXJlOiBLZXlTaGFyZSxcbiAgcmVjaXBpZW50SW5kZXg6IG51bWJlcixcbiAgcmVjaXBpZW50R3BnUHVibGljQXJtb3I6IHN0cmluZyxcbiAgc2VuZGVyR3BnS2V5OiBwZ3AuU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgaXNiczU4RW5jb2RlZCA9IHRydWVcbik6IFByb21pc2U8RW5jcnlwdGVkTlNoYXJlPiB7XG4gIGNvbnN0IG5TaGFyZSA9IGtleVNoYXJlLm5TaGFyZXNbcmVjaXBpZW50SW5kZXhdO1xuICBpZiAoIW5TaGFyZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByZWNpcGllbnQnKTtcbiAgfVxuXG4gIGNvbnN0IHB1YmxpY1NoYXJlID0gQnVmZmVyLmNvbmNhdChbXG4gICAgQnVmZmVyLmZyb20oa2V5U2hhcmUucFNoYXJlLnksICdoZXgnKSxcbiAgICBCdWZmZXIuZnJvbShrZXlTaGFyZS5wU2hhcmUuY2hhaW5jb2RlLCAnaGV4JyksXG4gIF0pLnRvU3RyaW5nKCdoZXgnKTtcblxuICBsZXQgcHJpdmF0ZVNoYXJlO1xuICBpZiAoaXNiczU4RW5jb2RlZCkge1xuICAgIHByaXZhdGVTaGFyZSA9IGJpcDMyLmZyb21Qcml2YXRlS2V5KEJ1ZmZlci5mcm9tKG5TaGFyZS51LCAnaGV4JyksIEJ1ZmZlci5mcm9tKG5TaGFyZS5jaGFpbmNvZGUsICdoZXgnKSkudG9CYXNlNTgoKTtcbiAgfSBlbHNlIHtcbiAgICBwcml2YXRlU2hhcmUgPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbShuU2hhcmUudSwgJ2hleCcpLCBCdWZmZXIuZnJvbShuU2hhcmUuY2hhaW5jb2RlLCAnaGV4JyldKS50b1N0cmluZygnaGV4Jyk7XG4gIH1cbiAgY29uc3QgcmVjaXBpZW50UHVibGljS2V5ID0gYXdhaXQgcGdwLnJlYWRLZXkoeyBhcm1vcmVkS2V5OiByZWNpcGllbnRHcGdQdWJsaWNBcm1vciB9KTtcblxuICBjb25zdCBlbmNyeXB0ZWRQcml2YXRlU2hhcmUgPSAoYXdhaXQgcGdwLmVuY3J5cHQoe1xuICAgIG1lc3NhZ2U6IGF3YWl0IHBncC5jcmVhdGVNZXNzYWdlKHtcbiAgICAgIHRleHQ6IHByaXZhdGVTaGFyZSxcbiAgICB9KSxcbiAgICBlbmNyeXB0aW9uS2V5czogW3JlY2lwaWVudFB1YmxpY0tleV0sXG4gIH0pKSBhcyBzdHJpbmc7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBuU2hhcmUuaSxcbiAgICBqOiBuU2hhcmUuaixcbiAgICBwdWJsaWNTaGFyZSxcbiAgICBlbmNyeXB0ZWRQcml2YXRlU2hhcmUsXG4gICAgbjogblNoYXJlLm4sXG4gICAgdnNzUHJvb2Y6IG5TaGFyZS52LFxuICAgIHByaXZhdGVTaGFyZVByb29mOiBhd2FpdCBjcmVhdGVTaGFyZVByb29mKHNlbmRlckdwZ0tleS5wcml2YXRlS2V5LCBuU2hhcmUudSwgJ2VjZHNhJyksXG4gIH07XG59XG5cbi8qKlxuICogUHJlcGFyZXMgYSBOU2hhcmUgdG8gYmUgZXhjaGFuZ2VkIHdpdGggb3RoZXIga2V5IGhvbGRlcnMuXG4gKiBBbiBBUEkga2V5IHNoYXJlIHJlY2VpdmVkIGZyb20gYSB0aGlyZCBwYXJ0eSBzaG91bGQgYWxyZWFkeSBiZSBlbmNyeXB0ZWRcbiAqXG4gKiBAcGFyYW0ga2V5U2hhcmUgLSBUU1Mga2V5IHNoYXJlIG9mIHRoZSBwYXJ0eSBwcmVwYXJpbmcgZXhjaGFuZ2UgbWF0ZXJpYWxzXG4gKiBAcmV0dXJucyBlbmNyeXB0ZWQgTiBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGROU2hhcmVGcm9tQVBJS2V5U2hhcmUoa2V5U2hhcmU6IEFwaUtleVNoYXJlKTogUHJvbWlzZTxFbmNyeXB0ZWROU2hhcmU+IHtcbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNpcGFudEluZGV4KGtleVNoYXJlLnRvKSxcbiAgICBqOiBnZXRQYXJ0aWNpcGFudEluZGV4KGtleVNoYXJlLmZyb20pLFxuICAgIHB1YmxpY1NoYXJlOiBrZXlTaGFyZS5wdWJsaWNTaGFyZSxcbiAgICBlbmNyeXB0ZWRQcml2YXRlU2hhcmU6IGtleVNoYXJlLnByaXZhdGVTaGFyZSxcbiAgICBuOiBrZXlTaGFyZS5uID8/ICcnLCAvLyB0aGlzIGlzIG5vdCBjdXJyZW50bHkgbmVlZGVkIGZvciBrZXkgY3JlYXRpb25cbiAgICBwcml2YXRlU2hhcmVQcm9vZjoga2V5U2hhcmUucHJpdmF0ZVNoYXJlUHJvb2YsXG4gICAgdnNzUHJvb2Y6IGtleVNoYXJlLnZzc1Byb29mLFxuICB9O1xufVxuXG4vKipcbiAqIERlY3J5cHRzIGVuY3J5cHRlZCBuIHNoYXJlXG4gKiBAcGFyYW0gZW5jcnlwdGVkTlNoYXJlIC0gZGVjcnlwdGFibGUgbiBzaGFyZSB3aXRoIHJlY2lwaWVudCBwcml2YXRlIGdwZyBrZXkgYXJtb3IgYW5kIHNlbmRlciBwdWJsaWMgZ3BnIGtleVxuICogQHJldHVybnMgTiBzaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVjcnlwdE5TaGFyZShlbmNyeXB0ZWROU2hhcmU6IERlY3J5cHRhYmxlTlNoYXJlLCBpc2JzNThFbmNvZGVkID0gdHJ1ZSk6IFByb21pc2U8TlNoYXJlPiB7XG4gIGNvbnN0IHJlY2lwaWVudFByaXZhdGVLZXkgPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IGVuY3J5cHRlZE5TaGFyZS5yZWNpcGllbnRQcml2YXRlQXJtb3IgfSk7XG4gIGNvbnN0IHBydiA9IChcbiAgICBhd2FpdCBwZ3AuZGVjcnlwdCh7XG4gICAgICBtZXNzYWdlOiBhd2FpdCBwZ3AucmVhZE1lc3NhZ2UoeyBhcm1vcmVkTWVzc2FnZTogZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5lbmNyeXB0ZWRQcml2YXRlU2hhcmUgfSksXG4gICAgICBkZWNyeXB0aW9uS2V5czogW3JlY2lwaWVudFByaXZhdGVLZXkgYXMgcGdwLlByaXZhdGVLZXldLFxuICAgIH0pXG4gICkuZGF0YSBhcyBzdHJpbmc7XG5cbiAgbGV0IHU6IHN0cmluZztcbiAgaWYgKGlzYnM1OEVuY29kZWQpIHtcbiAgICBjb25zdCBwcml2YXRlU2hhcmUgPSBiczU4LmRlY29kZShwcnYpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICB1ID0gcHJpdmF0ZVNoYXJlLnNsaWNlKDkyLCAxNTYpO1xuICB9IGVsc2Uge1xuICAgIHUgPSBwcnYuc2xpY2UoMCwgNjQpO1xuICB9XG5cbiAgY29uc3QgblNoYXJlOiBOU2hhcmUgPSB7XG4gICAgaTogZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5pLFxuICAgIGo6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUuaixcbiAgICBuOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLm4sXG4gICAgeTogZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5wdWJsaWNTaGFyZS5zbGljZSgwLCA2NiksXG4gICAgdTogdSxcbiAgICBjaGFpbmNvZGU6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUucHVibGljU2hhcmUuc2xpY2UoNjYsIDEzMCksXG4gICAgdjogZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS52c3NQcm9vZixcbiAgfTtcblxuICByZXR1cm4gblNoYXJlO1xufVxuXG4vKipcbiAqIEdldHMgcHVibGljIGtleSBmcm9tIGNvbW1vbiBrZXkgY2hhaW5cbiAqIEBwYXJhbSBjb21tb25LZXlDaGFpbiAtIGNvbW1vbiBrZXkgY2hhaW4gb2YgZWNkc2EgdHNzXG4gKiBAcmV0dXJucyBwdWJsaWMga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQdWJsaWNLZXkoY29tbW9uS2V5Q2hhaW46IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjb21tb25LZXlDaGFpbi5zbGljZSgwLCA2Nik7XG59XG5cbmV4cG9ydCBjb25zdCBkZWxpbWV0ZXIgPSAnOic7XG5leHBvcnQgY29uc3Qgc2Vjb25kYXJ5RGVsaW1ldGVyID0gJy0nO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXM6IHN0cmluZ1tdLCBleHBlY3RlZExlbmd0aDogbnVtYmVyLCBzaGFyZU5hbWU6IHN0cmluZykge1xuICBpZiAoc2hhcmVzLmxlbmd0aCA8IGV4cGVjdGVkTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7c2hhcmVOYW1lfSBzaGFyZWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlT3B0aW9uYWxWYWx1ZXMoc2hhcmVzOiBzdHJpbmdbXSwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHNoYXJlTmFtZTogc3RyaW5nLCB2YWx1ZU5hbWU6IHN0cmluZykge1xuICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHtcbiAgICBpZiAoc2hhcmVzW2ldKSB7XG4gICAgICBmb3VuZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChmb3VuZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbmNvbnNpc3RlbnQgb3B0aW9uYWwgJHt2YWx1ZU5hbWV9IHZhbHVlIGluICR7c2hhcmVOYW1lfSBzaGFyZWApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZm91bmQ7XG59XG5cbi8qKlxuICogcGFyc2VzIEsgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBLIFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUtTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBLU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuXG4gIHZhbGlkYXRlU2hhcmVzTGVuZ3RoKHNoYXJlcywgMTEsICdLJyk7XG4gIGNvbnN0IGhhc1Byb29mID0gdmFsaWRhdGVPcHRpb25hbFZhbHVlcyhzaGFyZXMsIDUsIDExLCAnSycsICdwcm9vZicpO1xuXG4gIGxldCBwcm9vZjtcbiAgaWYgKGhhc1Byb29mKSB7XG4gICAgcHJvb2YgPSB7XG4gICAgICB6OiBzaGFyZXNbNV0sXG4gICAgICB1OiBzaGFyZXNbNl0sXG4gICAgICB3OiBzaGFyZXNbN10sXG4gICAgICBzOiBzaGFyZXNbOF0sXG4gICAgICBzMTogc2hhcmVzWzldLFxuICAgICAgczI6IHNoYXJlc1sxMF0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS50byksXG4gICAgajogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS5mcm9tKSxcbiAgICBrOiBzaGFyZXNbMF0sXG4gICAgbjogc2hhcmVzWzFdLFxuICAgIG50aWxkZTogc2hhcmVzWzJdLFxuICAgIGgxOiBzaGFyZXNbM10sXG4gICAgaDI6IHNoYXJlc1s0XSxcbiAgICBwcm9vZixcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IEsgc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gSyBzaGFyZVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEtTaGFyZShzaGFyZTogS1NoYXJlKTogU2lnbmF0dXJlU2hhcmVSZWNvcmQge1xuICByZXR1cm4ge1xuICAgIHRvOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5qKSxcbiAgICBzaGFyZTogYCR7c2hhcmUua30ke2RlbGltZXRlcn0ke3NoYXJlLm59JHtkZWxpbWV0ZXJ9JHtzaGFyZS5udGlsZGV9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5oMX0ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUuaDJcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5wcm9vZj8ueiB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLnByb29mPy51IHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS5wcm9vZj8udyB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLnByb29mPy5zIHx8ICcnfSR7ZGVsaW1ldGVyfSR7c2hhcmUucHJvb2Y/LnMxIHx8ICcnfSR7ZGVsaW1ldGVyfSR7c2hhcmUucHJvb2Y/LnMyIHx8ICcnfWAsXG4gIH07XG59XG5cbi8qKlxuICogcGFyc2VzIEEgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBBIFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBBU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDM3LCAnQScpO1xuICBjb25zdCBoYXNQcm9vZiA9IHZhbGlkYXRlT3B0aW9uYWxWYWx1ZXMoc2hhcmVzLCA3LCAxMywgJ0EnLCAncHJvb2YnKTtcbiAgY29uc3QgaGFzR2FtbWFQcm9vZiA9IHZhbGlkYXRlT3B0aW9uYWxWYWx1ZXMoc2hhcmVzLCAxMywgMjUsICdBJywgJ2dhbW1hUHJvb2YnKTtcbiAgY29uc3QgaGFzV1Byb29mID0gdmFsaWRhdGVPcHRpb25hbFZhbHVlcyhzaGFyZXMsIDI1LCAzNywgJ0EnLCAnd1Byb29mJyk7XG5cbiAgbGV0IHByb29mO1xuICBpZiAoaGFzUHJvb2YpIHtcbiAgICBwcm9vZiA9IHtcbiAgICAgIHo6IHNoYXJlc1s3XSxcbiAgICAgIHU6IHNoYXJlc1s4XSxcbiAgICAgIHc6IHNoYXJlc1s5XSxcbiAgICAgIHM6IHNoYXJlc1sxMF0sXG4gICAgICBzMTogc2hhcmVzWzExXSxcbiAgICAgIHMyOiBzaGFyZXNbMTJdLFxuICAgIH07XG4gIH1cblxuICBsZXQgZ2FtbWFQcm9vZjtcbiAgaWYgKGhhc0dhbW1hUHJvb2YpIHtcbiAgICBnYW1tYVByb29mID0ge1xuICAgICAgejogc2hhcmVzWzEzXSxcbiAgICAgIHpwcm06IHNoYXJlc1sxNF0sXG4gICAgICB0OiBzaGFyZXNbMTVdLFxuICAgICAgdjogc2hhcmVzWzE2XSxcbiAgICAgIHc6IHNoYXJlc1sxN10sXG4gICAgICBzOiBzaGFyZXNbMThdLFxuICAgICAgczE6IHNoYXJlc1sxOV0sXG4gICAgICBzMjogc2hhcmVzWzIwXSxcbiAgICAgIHQxOiBzaGFyZXNbMjFdLFxuICAgICAgdDI6IHNoYXJlc1syMl0sXG4gICAgICB1OiBzaGFyZXNbMjNdLFxuICAgICAgeDogc2hhcmVzWzI0XSxcbiAgICB9O1xuICB9XG5cbiAgbGV0IHdQcm9vZjtcbiAgaWYgKGhhc1dQcm9vZikge1xuICAgIHdQcm9vZiA9IHtcbiAgICAgIHo6IHNoYXJlc1syNV0sXG4gICAgICB6cHJtOiBzaGFyZXNbMjZdLFxuICAgICAgdDogc2hhcmVzWzI3XSxcbiAgICAgIHY6IHNoYXJlc1syOF0sXG4gICAgICB3OiBzaGFyZXNbMjldLFxuICAgICAgczogc2hhcmVzWzMwXSxcbiAgICAgIHMxOiBzaGFyZXNbMzFdLFxuICAgICAgczI6IHNoYXJlc1szMl0sXG4gICAgICB0MTogc2hhcmVzWzMzXSxcbiAgICAgIHQyOiBzaGFyZXNbMzRdLFxuICAgICAgdTogc2hhcmVzWzM1XSxcbiAgICAgIHg6IHNoYXJlc1szNl0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS50byksXG4gICAgajogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS5mcm9tKSxcbiAgICBrOiBzaGFyZXNbMF0sXG4gICAgYWxwaGE6IHNoYXJlc1sxXSxcbiAgICBtdTogc2hhcmVzWzJdLFxuICAgIG46IHNoYXJlc1szXSxcbiAgICBudGlsZGU6IHNoYXJlc1s0XSxcbiAgICBoMTogc2hhcmVzWzVdLFxuICAgIGgyOiBzaGFyZXNbNl0sXG4gICAgcHJvb2YsXG4gICAgZ2FtbWFQcm9vZixcbiAgICB3UHJvb2YsXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydCBBIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIEEgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRBU2hhcmUoc2hhcmU6IEFTaGFyZSk6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuaSksXG4gICAgZnJvbTogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuaiksXG4gICAgc2hhcmU6IGAke3NoYXJlLmt9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5hbHBoYX0ke2RlbGltZXRlcn0ke3NoYXJlLm11fSR7ZGVsaW1ldGVyfSR7c2hhcmUubn0ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUubnRpbGRlXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUuaDF9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5oMn0ke2RlbGltZXRlcn0ke3NoYXJlLnByb29mPy56IHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS5wcm9vZj8udSB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLnByb29mPy53IHx8ICcnfSR7ZGVsaW1ldGVyfSR7c2hhcmUucHJvb2Y/LnMgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLnByb29mPy5zMSB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLnByb29mPy5zMiB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hUHJvb2Y/LnogfHwgJyd9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLmdhbW1hUHJvb2Y/Lnpwcm0gfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5nYW1tYVByb29mPy50IHx8ICcnfSR7ZGVsaW1ldGVyfSR7c2hhcmUuZ2FtbWFQcm9vZj8udiB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUuZ2FtbWFQcm9vZj8udyB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hUHJvb2Y/LnMgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5nYW1tYVByb29mPy5zMSB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUuZ2FtbWFQcm9vZj8uczIgfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5nYW1tYVByb29mPy50MSB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hUHJvb2Y/LnQyIHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS5nYW1tYVByb29mPy51IHx8ICcnXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUuZ2FtbWFQcm9vZj8ueCB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLndQcm9vZj8ueiB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUud1Byb29mPy56cHJtIHx8ICcnXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUud1Byb29mPy50IHx8ICcnfSR7ZGVsaW1ldGVyfSR7c2hhcmUud1Byb29mPy52IHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS53UHJvb2Y/LncgfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS53UHJvb2Y/LnMgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS53UHJvb2Y/LnMxIHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS53UHJvb2Y/LnMyIHx8ICcnXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUud1Byb29mPy50MSB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLndQcm9vZj8udDIgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLndQcm9vZj8udSB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLndQcm9vZj8ueCB8fCAnJ31gLFxuICB9O1xufVxuXG4vKipcbiAqIHBhcnNlcyBNdSBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEByZXR1cm5zIE11IFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU11U2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogTVVTaGFyZSB7XG4gIGNvbnN0IHNoYXJlcyA9IHNoYXJlLnNoYXJlLnNwbGl0KGRlbGltZXRlcik7XG4gIHZhbGlkYXRlU2hhcmVzTGVuZ3RoKHNoYXJlcywgMjYsICdNdScpO1xuICBjb25zdCBoYXNHYW1tYVByb29mID0gdmFsaWRhdGVPcHRpb25hbFZhbHVlcyhzaGFyZXMsIDIsIDE0LCAnTXUnLCAnZ2FtbWFQcm9vZicpO1xuICBjb25zdCBoYXNXUHJvb2YgPSB2YWxpZGF0ZU9wdGlvbmFsVmFsdWVzKHNoYXJlcywgMTQsIDI2LCAnTXUnLCAnd1Byb29mJyk7XG5cbiAgbGV0IGdhbW1hUHJvb2Y7XG4gIGlmIChoYXNHYW1tYVByb29mKSB7XG4gICAgZ2FtbWFQcm9vZiA9IHtcbiAgICAgIHo6IHNoYXJlc1syXSxcbiAgICAgIHpwcm06IHNoYXJlc1szXSxcbiAgICAgIHQ6IHNoYXJlc1s0XSxcbiAgICAgIHY6IHNoYXJlc1s1XSxcbiAgICAgIHc6IHNoYXJlc1s2XSxcbiAgICAgIHM6IHNoYXJlc1s3XSxcbiAgICAgIHMxOiBzaGFyZXNbOF0sXG4gICAgICBzMjogc2hhcmVzWzldLFxuICAgICAgdDE6IHNoYXJlc1sxMF0sXG4gICAgICB0Mjogc2hhcmVzWzExXSxcbiAgICAgIHU6IHNoYXJlc1sxMl0sXG4gICAgICB4OiBzaGFyZXNbMTNdLFxuICAgIH07XG4gIH1cblxuICBsZXQgd1Byb29mO1xuICBpZiAoaGFzV1Byb29mKSB7XG4gICAgd1Byb29mID0ge1xuICAgICAgejogc2hhcmVzWzE0XSxcbiAgICAgIHpwcm06IHNoYXJlc1sxNV0sXG4gICAgICB0OiBzaGFyZXNbMTZdLFxuICAgICAgdjogc2hhcmVzWzE3XSxcbiAgICAgIHc6IHNoYXJlc1sxOF0sXG4gICAgICBzOiBzaGFyZXNbMTldLFxuICAgICAgczE6IHNoYXJlc1syMF0sXG4gICAgICBzMjogc2hhcmVzWzIxXSxcbiAgICAgIHQxOiBzaGFyZXNbMjJdLFxuICAgICAgdDI6IHNoYXJlc1syM10sXG4gICAgICB1OiBzaGFyZXNbMjRdLFxuICAgICAgeDogc2hhcmVzWzI1XSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBqOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLmZyb20pLFxuICAgIGFscGhhOiBzaGFyZXNbMF0sXG4gICAgbXU6IHNoYXJlc1sxXSxcbiAgICBnYW1tYVByb29mLFxuICAgIHdQcm9vZixcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IE11IHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIE11IHNoYXJlXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0TXVTaGFyZShzaGFyZTogTVVTaGFyZSk6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuaSksXG4gICAgZnJvbTogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuaiksXG4gICAgc2hhcmU6IGAke3NoYXJlLmFscGhhfSR7ZGVsaW1ldGVyfSR7c2hhcmUubXV9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5nYW1tYVByb29mPy56IHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS5nYW1tYVByb29mPy56cHJtIHx8ICcnXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUuZ2FtbWFQcm9vZj8udCB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hUHJvb2Y/LnYgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLmdhbW1hUHJvb2Y/LncgfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5nYW1tYVByb29mPy5zIHx8ICcnfSR7ZGVsaW1ldGVyfSR7c2hhcmUuZ2FtbWFQcm9vZj8uczEgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLmdhbW1hUHJvb2Y/LnMyIHx8ICcnXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUuZ2FtbWFQcm9vZj8udDEgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5nYW1tYVByb29mPy50MiB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUuZ2FtbWFQcm9vZj8udSB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hUHJvb2Y/LnggfHwgJyd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS53UHJvb2Y/LnogfHwgJyd9JHtkZWxpbWV0ZXJ9JHtcbiAgICAgIHNoYXJlLndQcm9vZj8uenBybSB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLndQcm9vZj8udCB8fCAnJ30ke2RlbGltZXRlcn0ke3NoYXJlLndQcm9vZj8udiB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUud1Byb29mPy53IHx8ICcnXG4gICAgfSR7ZGVsaW1ldGVyfSR7c2hhcmUud1Byb29mPy5zIHx8ICcnfSR7ZGVsaW1ldGVyfSR7c2hhcmUud1Byb29mPy5zMSB8fCAnJ30ke2RlbGltZXRlcn0ke1xuICAgICAgc2hhcmUud1Byb29mPy5zMiB8fCAnJ1xuICAgIH0ke2RlbGltZXRlcn0ke3NoYXJlLndQcm9vZj8udDEgfHwgJyd9JHtkZWxpbWV0ZXJ9JHtzaGFyZS53UHJvb2Y/LnQyIHx8ICcnfSR7ZGVsaW1ldGVyfSR7XG4gICAgICBzaGFyZS53UHJvb2Y/LnUgfHwgJydcbiAgICB9JHtkZWxpbWV0ZXJ9JHtzaGFyZS53UHJvb2Y/LnggfHwgJyd9YCxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgRCBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEByZXR1cm5zIEQgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRFNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IERTaGFyZSB7XG4gIGNvbnN0IHNoYXJlcyA9IHNoYXJlLnNoYXJlLnNwbGl0KGRlbGltZXRlcik7XG4gIHZhbGlkYXRlU2hhcmVzTGVuZ3RoKHNoYXJlcywgMiwgJ0QnKTtcblxuICByZXR1cm4ge1xuICAgIGk6IGdldFBhcnRpY2lwYW50SW5kZXgoc2hhcmUudG8pLFxuICAgIGo6IGdldFBhcnRpY2lwYW50SW5kZXgoc2hhcmUuZnJvbSksXG4gICAgZGVsdGE6IHNoYXJlc1swXSxcbiAgICBHYW1tYTogc2hhcmVzWzFdLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgRCBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBEIHNoYXJlXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RFNoYXJlKHNoYXJlOiBEU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmopLFxuICAgIHNoYXJlOiBgJHtzaGFyZS5kZWx0YX0ke2RlbGltZXRlcn0ke3NoYXJlLkdhbW1hfWAsXG4gIH07XG59XG5cbi8qKlxuICogcGFyc2VzIFMgYW5kIEQgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyBTIGFuZCBEIFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNEU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogeyBzU2hhcmU6IFNpZ25hdHVyZVNoYXJlOyBkU2hhcmU6IERTaGFyZSB9IHtcbiAgY29uc3Qgc2hhcmVzID0gc2hhcmUuc2hhcmUuc3BsaXQoc2Vjb25kYXJ5RGVsaW1ldGVyKTtcbiAgdmFsaWRhdGVTaGFyZXNMZW5ndGgoc2hhcmVzLCAyLCAnU0QnKTtcblxuICByZXR1cm4ge1xuICAgIHNTaGFyZTogcGFyc2VTaWduYXR1cmVTaGFyZSh7IHRvOiBzaGFyZS50bywgZnJvbTogc2hhcmUuZnJvbSwgc2hhcmU6IHNoYXJlc1swXSB9KSxcbiAgICBkU2hhcmU6IHBhcnNlRFNoYXJlKHsgdG86IHNoYXJlLnRvLCBmcm9tOiBzaGFyZS5mcm9tLCBzaGFyZTogc2hhcmVzWzFdIH0pLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgUyBhbmQgRCBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBTIGFuZCBEIHNoYXJlIGluIGEgb2JqZWN0XG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0U0RTaGFyZShzaGFyZTogeyBzU2hhcmU6IFNTaGFyZTsgZFNoYXJlOiBEU2hhcmUgfSk6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuZFNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmRTaGFyZS5qKSxcbiAgICBzaGFyZTogYCR7c2hhcmUuc1NoYXJlLlJ9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5zU2hhcmUuc30ke2RlbGltZXRlcn0ke3NoYXJlLnNTaGFyZS55fSR7c2Vjb25kYXJ5RGVsaW1ldGVyfSR7c2hhcmUuZFNoYXJlLmRlbHRhfSR7ZGVsaW1ldGVyfSR7c2hhcmUuZFNoYXJlLkdhbW1hfWAsXG4gIH07XG59XG5cbi8qKlxuICogcGFyc2VzIHNpZ25hdHVyZSBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEByZXR1cm5zIFNpZ25hdHVyZSBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTaWduYXR1cmVTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBTaWduYXR1cmVTaGFyZSB7XG4gIGNvbnN0IHNoYXJlcyA9IHNoYXJlLnNoYXJlLnNwbGl0KGRlbGltZXRlcik7XG4gIHZhbGlkYXRlU2hhcmVzTGVuZ3RoKHNoYXJlcywgMywgJ1NpZ25hdHVyZScpO1xuXG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS50byksXG4gICAgUjogc2hhcmVzWzBdLFxuICAgIHM6IHNoYXJlc1sxXSxcbiAgICB5OiBzaGFyZXNbMl0sXG4gIH07XG59XG5cbi8qKlxuICogY29udmV0cyBjb21iaW5lZCBzaWduYXR1cmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNpZ25hdHVyZSAtIGNvbWJpbmVkIHNpZ25hdHVyZSBzaGFyZVxuICogQHBhcmFtIHVzZXJJbmRleCAtIHVzZXIgaW5kZXgsIGVpdGhlciAxICh1c2VyKSBvciAyIChiYWNrdXApXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0Q29tYmluZWRTaWduYXR1cmUoc2lnbmF0dXJlOiBTaWduYXR1cmUsIHVzZXJJbmRleDogbnVtYmVyKTogU2lnbmF0dXJlU2hhcmVSZWNvcmQge1xuICByZXR1cm4ge1xuICAgIHRvOiBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08sXG4gICAgZnJvbTogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgodXNlckluZGV4KSxcbiAgICBzaGFyZTogYCR7c2lnbmF0dXJlLnJlY2lkfSR7ZGVsaW1ldGVyfSR7c2lnbmF0dXJlLnJ9JHtkZWxpbWV0ZXJ9JHtzaWduYXR1cmUuc30ke2RlbGltZXRlcn0ke3NpZ25hdHVyZS55fWAsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNvbWJpbmVkU2lnbmF0dXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IFNpZ25hdHVyZSB7XG4gIGNvbnN0IHNoYXJlcyA9IHNoYXJlLnNoYXJlLnNwbGl0KGRlbGltZXRlcik7XG4gIHZhbGlkYXRlU2hhcmVzTGVuZ3RoKHNoYXJlcywgMywgJ1NpZ25hdHVyZScpO1xuXG4gIHJldHVybiB7XG4gICAgcmVjaWQ6IE51bWJlcihzaGFyZXNbMF0pLFxuICAgIHI6IHNoYXJlc1sxXSxcbiAgICBzOiBzaGFyZXNbMl0sXG4gICAgeTogc2hhcmVzWzNdLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgc2lnbmF0dXJlIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIFNpZ25hdHVyZSBzaGFyZVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFNpZ25hdHVyZVNoYXJlKFxuICBzaGFyZTogU2lnbmF0dXJlU2hhcmUsXG4gIHNlbmRlckluZGV4OiBudW1iZXIsXG4gIHJlY2lwaWVudEluZGV4OiBudW1iZXJcbik6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgocmVjaXBpZW50SW5kZXgpLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNlbmRlckluZGV4KSxcbiAgICBzaGFyZTogYCR7c2hhcmUuUn0ke2RlbGltZXRlcn0ke3NoYXJlLnN9JHtkZWxpbWV0ZXJ9JHtzaGFyZS55fWAsXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydHMgQiBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBCIHNoYXJlXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0QlNoYXJlKHNoYXJlOiBCU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBzaGFyZTogYCR7c2hhcmUuYmV0YX0ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hfSR7ZGVsaW1ldGVyfSR7c2hhcmUua30ke2RlbGltZXRlcn0ke3NoYXJlLm51fSR7ZGVsaW1ldGVyfSR7c2hhcmUud30ke2RlbGltZXRlcn0ke3NoYXJlLnl9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5sfSR7ZGVsaW1ldGVyfSR7c2hhcmUubX0ke2RlbGltZXRlcn0ke3NoYXJlLm59JHtkZWxpbWV0ZXJ9JHtzaGFyZS5udGlsZGV9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5oMX0ke2RlbGltZXRlcn0ke3NoYXJlLmgyfSR7ZGVsaW1ldGVyfSR7c2hhcmUuY2t9YCxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgQiBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSBCIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgQiBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogQlNoYXJlIHtcbiAgY29uc3Qgc2hhcmVzID0gc2hhcmUuc2hhcmUuc3BsaXQoZGVsaW1ldGVyKTtcbiAgdmFsaWRhdGVTaGFyZXNMZW5ndGgoc2hhcmVzLCAxMywgJ0InKTtcblxuICByZXR1cm4ge1xuICAgIGk6IGdldFBhcnRpY2lwYW50SW5kZXgoc2hhcmUudG8pLFxuICAgIGJldGE6IHNoYXJlc1swXSxcbiAgICBnYW1tYTogc2hhcmVzWzFdLFxuICAgIGs6IHNoYXJlc1syXSxcbiAgICBudTogc2hhcmVzWzNdLFxuICAgIHc6IHNoYXJlc1s0XSxcbiAgICB5OiBzaGFyZXNbNV0sXG4gICAgbDogc2hhcmVzWzZdLFxuICAgIG06IHNoYXJlc1s3XSxcbiAgICBuOiBzaGFyZXNbOF0sXG4gICAgbnRpbGRlOiBzaGFyZXNbOV0sXG4gICAgaDE6IHNoYXJlc1sxMF0sXG4gICAgaDI6IHNoYXJlc1sxMV0sXG4gICAgY2s6IHNoYXJlc1sxMl0sXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydHMgTyBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgTyBzaGFyZVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydE9TaGFyZShzaGFyZTogT1NoYXJlKTogU2lnbmF0dXJlU2hhcmVSZWNvcmQge1xuICByZXR1cm4ge1xuICAgIHRvOiBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08sXG4gICAgZnJvbTogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuaSksXG4gICAgc2hhcmU6IGAke3NoYXJlLkdhbW1hfSR7ZGVsaW1ldGVyfSR7c2hhcmUuZGVsdGF9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5rfSR7ZGVsaW1ldGVyfSR7c2hhcmUub21pY3Jvbn0ke2RlbGltZXRlcn0ke3NoYXJlLnl9YCxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgTyBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSBPIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgTyBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VPU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogT1NoYXJlIHtcbiAgY29uc3Qgc2hhcmVzID0gc2hhcmUuc2hhcmUuc3BsaXQoZGVsaW1ldGVyKTtcbiAgdmFsaWRhdGVTaGFyZXNMZW5ndGgoc2hhcmVzLCA1LCAnTycpO1xuXG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS50byksXG4gICAgR2FtbWE6IHNoYXJlc1swXSxcbiAgICBkZWx0YTogc2hhcmVzWzFdLFxuICAgIGs6IHNoYXJlc1syXSxcbiAgICBvbWljcm9uOiBzaGFyZXNbM10sXG4gICAgeTogc2hhcmVzWzRdLFxuICB9O1xufVxuXG4vKipcbiAqIGdldHMgcGFydGljaXBhbnQgaW5kZXhcbiAqIEBwYXJhbSBwYXJ0aWNpcGFudCAtIHBhcnRpY2lwYW50cyAodXNlciwgYmFja3VwLCBvciBiaXRnbylcbiAqIEByZXR1cm5zIGluZGV4ICgxLCAyLCAwciAzKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFydGljaXBhbnRJbmRleChwYXJ0aWNpcGFudDogJ3VzZXInIHwgJ2JhY2t1cCcgfCAnYml0Z28nKTogbnVtYmVyIHtcbiAgc3dpdGNoIChwYXJ0aWNpcGFudCkge1xuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgcmV0dXJuIDE7XG4gICAgY2FzZSAnYmFja3VwJzpcbiAgICAgIHJldHVybiAyO1xuICAgIGNhc2UgJ2JpdGdvJzpcbiAgICAgIHJldHVybiAzO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBFcnJvcignVW5rb3duIHBhcnRpY2lwYW50Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBnZXRzIHBhcnRpY2lwYW50IG5hbWUgYnkgaW5kZXhcbiAqIEBwYXJhbSBpbmRleCBwYXJ0aWNpcGFudCBpbmRleFxuICogQHJldHVybnMgcGFydGljaXBhbnQgbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoaW5kZXg6IG51bWJlcik6IFNpZ25hdHVyZVNoYXJlVHlwZSB7XG4gIHN3aXRjaCAoaW5kZXgpIHtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVI7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIFNpZ25hdHVyZVNoYXJlVHlwZS5CQUNLVVA7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHBhcnRpY2lwYW50IGluZGV4ICR7aW5kZXh9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gdmVyaWZ5IHUtdmFsdWUgd2FsbGV0IHNpZ25hdHVyZXMgZm9yIHRoZSBiaXRnby11c2VyIGFuZCBiaXRnby1iYWNrdXAgc2hhcmVzLlxuICogQHBhcmFtIHBhcmFtc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5V2FsbGV0U2lnbmF0dXJlKHBhcmFtczoge1xuICB3YWxsZXRTaWduYXR1cmU6IHBncC5LZXk7XG4gIGJpdGdvUHViOiBwZ3AuS2V5O1xuICBjb21tb25LZXljaGFpbjogc3RyaW5nO1xuICB1c2VyS2V5SWQ6IHN0cmluZztcbiAgYmFja3VwS2V5SWQ6IHN0cmluZztcbiAgZGVjcnlwdGVkU2hhcmU6IHN0cmluZztcbiAgdmVyaWZpZXJJbmRleDogMSB8IDI7XG59KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJhd05vdGF0aW9ucyA9IGF3YWl0IGNvbW1vblZlcmlmeVdhbGxldFNpZ25hdHVyZShwYXJhbXMpO1xuICBjb25zdCBwdWJsaWNVVmFsdWVSYXdOb3RhdGlvbkluZGV4ID0gMiArIHBhcmFtcy52ZXJpZmllckluZGV4O1xuXG4gIC8vIERlcml2ZSBwdWJsaWMgZm9ybSBvZiB1LXZhbHVlXG4gIGNvbnN0IHB1YmxpY1VWYWx1ZSA9IGVjYy5wb2ludEZyb21TY2FsYXIoQnVmZmVyLmZyb20ocGFyYW1zLmRlY3J5cHRlZFNoYXJlLnNsaWNlKDAsIDY0KSwgJ2hleCcpLCB0cnVlKTtcbiAgYXNzZXJ0KHB1YmxpY1VWYWx1ZSAhPT0gbnVsbCwgJ251bGwgcHVibGljIHUtdmFsdWUnKTtcbiAgLy8gVmVyaWZ5IHRoYXQgdGhlIHUgdmFsdWUgKyBjaGFpbmNvZGUgaXMgZXF1YWwgdG8gdGhlIHByb29mIHJldHJpZXZlZCBmcm9tIHRoZSByYXcgbm90YXRpb25zXG4gIGFzc2VydChcbiAgICBCdWZmZXIuZnJvbShwdWJsaWNVVmFsdWUpLnRvU3RyaW5nKCdoZXgnKSArIHBhcmFtcy5kZWNyeXB0ZWRTaGFyZS5zbGljZSg2NCkgPT09XG4gICAgICBCdWZmZXIuZnJvbShyYXdOb3RhdGlvbnNbcHVibGljVVZhbHVlUmF3Tm90YXRpb25JbmRleF0udmFsdWUpLnRvU3RyaW5nKCksXG4gICAgJ2JpdGdvIHNoYXJlIG1pc21hdGNoJ1xuICApO1xufVxuIl19
|
|
@@ -18,6 +18,7 @@ export declare type SignatureShare = ECDSA.SShare;
|
|
|
18
18
|
export declare type Signature = ECDSA.Signature;
|
|
19
19
|
export declare type BShare = ECDSA.BShare;
|
|
20
20
|
export declare type SShare = ECDSA.SShare;
|
|
21
|
+
export declare type KeyCombined = ECDSA.KeyCombined;
|
|
21
22
|
export declare enum SendShareType {
|
|
22
23
|
KShare = "KShare",
|
|
23
24
|
MUShare = "MUShare",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/ecdsa/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAEvD,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AACtC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACtD,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACtD,oBAAY,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;AAC1C,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,2BAA2B,GAAG,KAAK,CAAC,aAAa,CAAC;AAC9D,oBAAY,gCAAgC,GAAG,KAAK,CAAC,aAAa,CAAC;AACnE,oBAAY,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;AAC1C,oBAAY,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AACxC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/ecdsa/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAEvD,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AACtC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACtD,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACtD,oBAAY,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;AAC1C,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,2BAA2B,GAAG,KAAK,CAAC,aAAa,CAAC;AAC9D,oBAAY,gCAAgC,GAAG,KAAK,CAAC,aAAa,CAAC;AACnE,oBAAY,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;AAC1C,oBAAY,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AACxC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,oBAAY,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AAE5C,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,SAAS,cAAc;CACxB;AAED,oBAAY,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,oBAAY,eAAe,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,MAAM,CAAC;IAEpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAGF,oBAAY,iBAAiB,GAAG;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAGF,oBAAY,WAAW,GAAG;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AAGF,oBAAY,eAAe,GAAG;IAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;CAC3B,CAAC;AAEF,oBAAY,uBAAuB,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;IACzB,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,oBAAY,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC"}
|
|
@@ -13,4 +13,4 @@ var ReceivedShareType;
|
|
|
13
13
|
ReceivedShareType["DShare"] = "DShare";
|
|
14
14
|
ReceivedShareType["Signature"] = "Signature";
|
|
15
15
|
})(ReceivedShareType = exports.ReceivedShareType || (exports.ReceivedShareType = {}));
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXVCQSxJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDdkIsa0NBQWlCLENBQUE7SUFDakIsb0NBQW1CLENBQUE7SUFDbkIsa0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUpXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBSXhCO0FBRUQsSUFBWSxpQkFJWDtBQUpELFdBQVksaUJBQWlCO0lBQzNCLHNDQUFpQixDQUFBO0lBQ2pCLHNDQUFpQixDQUFBO0lBQ2pCLDRDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFKVyxpQkFBaUIsR0FBakIseUJBQWlCLEtBQWpCLHlCQUFpQixRQUk1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVDRFNBIH0gZnJvbSAnLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzJztcblxuZXhwb3J0IHR5cGUgTlNoYXJlID0gRUNEU0EuTlNoYXJlO1xuZXhwb3J0IHR5cGUgS2V5U2hhcmUgPSBFQ0RTQS5LZXlTaGFyZTtcbmV4cG9ydCB0eXBlIFhTaGFyZSA9IEVDRFNBLlhTaGFyZTtcbmV4cG9ydCB0eXBlIFhTaGFyZVdpdGhOVGlsZGUgPSBFQ0RTQS5YU2hhcmVXaXRoTlRpbGRlO1xuZXhwb3J0IHR5cGUgWVNoYXJlID0gRUNEU0EuWVNoYXJlO1xuZXhwb3J0IHR5cGUgWVNoYXJlV2l0aE5UaWxkZSA9IEVDRFNBLllTaGFyZVdpdGhOVGlsZGU7XG5leHBvcnQgdHlwZSBTaWduU2hhcmUgPSBFQ0RTQS5TaWduU2hhcmVSVDtcbmV4cG9ydCB0eXBlIEtTaGFyZSA9IEVDRFNBLktTaGFyZTtcbmV4cG9ydCB0eXBlIFdTaGFyZSA9IEVDRFNBLldTaGFyZTtcbmV4cG9ydCB0eXBlIEFTaGFyZSA9IEVDRFNBLkFTaGFyZTtcbmV4cG9ydCB0eXBlIEdTaGFyZSA9IEVDRFNBLkdTaGFyZTtcbmV4cG9ydCB0eXBlIE9TaGFyZSA9IEVDRFNBLk9TaGFyZTtcbmV4cG9ydCB0eXBlIERTaGFyZSA9IEVDRFNBLkRTaGFyZTtcbmV4cG9ydCB0eXBlIENyZWF0ZVVzZXJHYW1tYUFuZE11U2hhcmVSVCA9IEVDRFNBLlNpZ25Db252ZXJ0UlQ7XG5leHBvcnQgdHlwZSBDcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmVSVCA9IEVDRFNBLlNpZ25Db21iaW5lUlQ7XG5leHBvcnQgdHlwZSBTaWduYXR1cmVTaGFyZSA9IEVDRFNBLlNTaGFyZTtcbmV4cG9ydCB0eXBlIFNpZ25hdHVyZSA9IEVDRFNBLlNpZ25hdHVyZTtcbmV4cG9ydCB0eXBlIEJTaGFyZSA9IEVDRFNBLkJTaGFyZTtcbmV4cG9ydCB0eXBlIFNTaGFyZSA9IEVDRFNBLlNTaGFyZTtcbmV4cG9ydCB0eXBlIEtleUNvbWJpbmVkID0gRUNEU0EuS2V5Q29tYmluZWQ7XG5cbmV4cG9ydCBlbnVtIFNlbmRTaGFyZVR5cGUge1xuICBLU2hhcmUgPSAnS1NoYXJlJyxcbiAgTVVTaGFyZSA9ICdNVVNoYXJlJyxcbiAgU1NoYXJlID0gJ1NTaGFyZScsXG59XG5cbmV4cG9ydCBlbnVtIFJlY2VpdmVkU2hhcmVUeXBlIHtcbiAgQVNoYXJlID0gJ0FTaGFyZScsXG4gIERTaGFyZSA9ICdEU2hhcmUnLFxuICBTaWduYXR1cmUgPSAnU2lnbmF0dXJlJyxcbn1cblxuZXhwb3J0IHR5cGUgR2V0U2hhcmVGcm9tQml0Z29SVCA9IERTaGFyZSB8IEFTaGFyZTtcbi8vIE5TaGFyZSB0aGF0IGhhcyBiZWVuIGVuY3J5cHRlZCBhbmQgc2lnbmVkIHZpYSBHUEdcbmV4cG9ydCB0eXBlIEVuY3J5cHRlZE5TaGFyZSA9IHtcbiAgaTogbnVtYmVyO1xuICBqOiBudW1iZXI7XG4gIHB1YmxpY1NoYXJlOiBzdHJpbmc7XG4gIC8vIHNpZ25lZCBhbmQgZW5jcnlwdGVkIGdwZyBhcm1vclxuICBlbmNyeXB0ZWRQcml2YXRlU2hhcmU6IHN0cmluZztcbiAgbjogc3RyaW5nO1xuICB2c3NQcm9vZj86IHN0cmluZztcbiAgLy8gdSB2YWx1ZSBwcm9vZlxuICBwcml2YXRlU2hhcmVQcm9vZj86IHN0cmluZztcbn07XG5cbi8vIE5TaGFyZSB3aXRoIGluZm9ybWF0aW9uIG5lZWRlZCB0byBkZWNyeXB0IGFuZCB2ZXJpZnkgYSBHUEcgbWVzYXNnZVxuZXhwb3J0IHR5cGUgRGVjcnlwdGFibGVOU2hhcmUgPSB7XG4gIG5TaGFyZTogRW5jcnlwdGVkTlNoYXJlO1xuICByZWNpcGllbnRQcml2YXRlQXJtb3I6IHN0cmluZztcbiAgc2VuZGVyUHVibGljQXJtb3I6IHN0cmluZztcbiAgaXNiczU4RW5jb2RlZD86IGJvb2xlYW47XG59O1xuXG4vLyBGaW5hbCBUU1MgXCJLZXlwYWlyXCJcbmV4cG9ydCB0eXBlIENvbWJpbmVkS2V5ID0ge1xuICBjb21tb25LZXljaGFpbjogc3RyaW5nO1xuICBzaWduaW5nTWF0ZXJpYWw6IFNpZ25pbmdNYXRlcmlhbDtcbn07XG5cbi8vIFByaXZhdGUgcG9ydGlvbiBvZiBhIFRTUyBrZXksIHRoaXMgbXVzdCBiZSBoYW5kbGVkIGxpa2UgYW55IG90aGVyIHByaXZhdGUga2V5XG5leHBvcnQgdHlwZSBTaWduaW5nTWF0ZXJpYWwgPSB7XG4gIHBTaGFyZTogRUNEU0EuUFNoYXJlO1xuICBiaXRnb05TaGFyZTogRUNEU0EuTlNoYXJlO1xuICBiYWNrdXBOU2hhcmU/OiBFQ0RTQS5OU2hhcmU7XG4gIHVzZXJOU2hhcmU/OiBFQ0RTQS5OU2hhcmU7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVDb21iaW5lZEtleVBhcmFtcyA9IHtcbiAga2V5U2hhcmU6IEVDRFNBLktleVNoYXJlO1xuICBlbmNyeXB0ZWROU2hhcmVzOiBEZWNyeXB0YWJsZU5TaGFyZVtdO1xuICBjb21tb25LZXljaGFpbjogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgU2VuZFNoYXJlVG9CaXRnb1JUID0gQVNoYXJlIHwgRFNoYXJlIHwgU1NoYXJlIHwgU2lnbmF0dXJlO1xuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mpcUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/mpcUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAsB,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAmB,eAAe,EAAE,oCAAoC,EAAE,MAAM,iBAAiB,CAAC;AAEzG,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8BAAsB,QAAQ;IAC5B,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAElB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;cAKjC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBjG,uBAAuB,CACrC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,WAAW,EACzB,cAAc,EAAE,WAAW,EAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAkCpB;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,cAAc,CAAC,EAAE,cAAc,CAAC;KACjC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAE7B;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,oCAAoC,GAAG,eAAe;
|
|
1
|
+
{"version":3,"file":"mpcUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/mpcUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAsB,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAmB,eAAe,EAAE,oCAAoC,EAAE,MAAM,iBAAiB,CAAC;AAEzG,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8BAAsB,QAAQ;IAC5B,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAElB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;cAKjC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBjG,uBAAuB,CACrC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,WAAW,EACzB,cAAc,EAAE,WAAW,EAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAkCpB;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,cAAc,CAAC,EAAE,cAAc,CAAC;KACjC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAE7B;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,oCAAoC,GAAG,eAAe;CAiFnG"}
|
|
@@ -109,11 +109,13 @@ class MpcUtils {
|
|
|
109
109
|
isTss: params.isTss,
|
|
110
110
|
nonce: params.nonce,
|
|
111
111
|
custodianTransactionId: params.custodianTransactionId,
|
|
112
|
+
receiveAddress: params.receiveAddress,
|
|
112
113
|
};
|
|
113
114
|
case 'acceleration':
|
|
114
115
|
return {
|
|
115
116
|
...baseIntent,
|
|
116
117
|
txid: params.lowFeeTxid,
|
|
118
|
+
receiveAddress: params.receiveAddress,
|
|
117
119
|
feeOptions: params.feeOptions,
|
|
118
120
|
};
|
|
119
121
|
default:
|
|
@@ -138,4 +140,4 @@ class MpcUtils {
|
|
|
138
140
|
}
|
|
139
141
|
}
|
|
140
142
|
exports.MpcUtils = MpcUtils;
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBjVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvbXBjVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxvREFBNEI7QUFDNUIscUNBQWtGO0FBS2xGLGlEQUFnRTtBQVVoRSxNQUFzQixRQUFRO0lBSTVCLFlBQVksS0FBZ0IsRUFBRSxRQUFtQjtRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRVMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFlBQW9CLEVBQUUsVUFBcUM7UUFDN0YsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLHFCQUFXLENBQUM7WUFDNUMsY0FBYyxFQUFFLFlBQVk7U0FDN0IsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLHdCQUFjLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFdEYsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixNQUFNLGlCQUFPLENBQUM7WUFDWixPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLGNBQWMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQ25DLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUNILENBQUMsSUFBSSxDQUFDO1FBRVAsT0FBTyxxQkFBcUIsQ0FBQztJQUMvQixDQUFDO0lBRVMsS0FBSyxDQUFDLHVCQUF1QixDQUNyQyxVQUFxQyxFQUNyQyxZQUF1QyxFQUN2QyxZQUF5QixFQUN6QixjQUEyQixFQUMzQixPQUFnQixFQUNoQixVQUFtQjtRQUVuQixNQUFNLFFBQVEsR0FBRyxNQUFNLGdDQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sMEJBQVcsQ0FBQyxZQUFZLENB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QU0sQ0FBQyxZQUFZO2dCQUNqQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7YUFDOUIsQ0FBQztTQUNIO1FBRUQsT0FBTztZQUNMLEdBQUcsVUFBVTtZQUNiLElBQUksRUFBRSxNQUFBLE1BQU0sQ0FBQyxJQUFJLDBDQUFFLEtBQUs7WUFDeEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQ3ZCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtTQUNsQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdktELDRCQXVLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IGRlY3J5cHQsIHJlYWRNZXNzYWdlLCByZWFkUHJpdmF0ZUtleSwgU2VyaWFsaXplZEtleVBhaXIgfSBmcm9tICdvcGVucGdwJztcbmltcG9ydCB7IElCYXNlQ29pbiwgS2V5Y2hhaW5zVHJpcGxldCB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBBZGRLZXljaGFpbk9wdGlvbnMsIEtleWNoYWluLCBLZXlUeXBlIH0gZnJvbSAnLi4va2V5Y2hhaW4nO1xuaW1wb3J0IHsgQmFja3VwUHJvdmlkZXIgfSBmcm9tICcuLi93YWxsZXQnO1xuaW1wb3J0IHsgZW5jcnlwdFRleHQsIGdldEJpdGdvR3BnUHViS2V5IH0gZnJvbSAnLi9vcGVuZ3BnVXRpbHMnO1xuaW1wb3J0IHsgSW50ZW50UmVjaXBpZW50LCBQb3B1bGF0ZWRJbnRlbnQsIFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyB9IGZyb20gJy4vdHNzL2Jhc2VUeXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXBjS2V5U2hhcmUge1xuICBwdWJsaWNTaGFyZTogc3RyaW5nO1xuICBwcml2YXRlU2hhcmU6IHN0cmluZztcbiAgcHJpdmF0ZVNoYXJlUHJvb2Y/OiBzdHJpbmc7XG4gIHZzc1Byb29mPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTXBjVXRpbHMge1xuICBwcm90ZWN0ZWQgYml0Z286IEJpdEdvQmFzZTtcbiAgcHJvdGVjdGVkIGJhc2VDb2luOiBJQmFzZUNvaW47XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgYmFzZUNvaW46IElCYXNlQ29pbikge1xuICAgIHRoaXMuYml0Z28gPSBiaXRnbztcbiAgICB0aGlzLmJhc2VDb2luID0gYmFzZUNvaW47XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZGVjcnlwdFByaXZhdGVTaGFyZShwcml2YXRlU2hhcmU6IHN0cmluZywgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcHJpdmF0ZVNoYXJlTWVzc2FnZSA9IGF3YWl0IHJlYWRNZXNzYWdlKHtcbiAgICAgIGFybW9yZWRNZXNzYWdlOiBwcml2YXRlU2hhcmUsXG4gICAgfSk7XG4gICAgY29uc3QgdXNlckdwZ1ByaXZhdGVLZXkgPSBhd2FpdCByZWFkUHJpdmF0ZUtleSh7IGFybW9yZWRLZXk6IHVzZXJHcGdLZXkucHJpdmF0ZUtleSB9KTtcblxuICAgIGNvbnN0IGRlY3J5cHRlZFByaXZhdGVTaGFyZSA9IChcbiAgICAgIGF3YWl0IGRlY3J5cHQoe1xuICAgICAgICBtZXNzYWdlOiBwcml2YXRlU2hhcmVNZXNzYWdlLFxuICAgICAgICBkZWNyeXB0aW9uS2V5czogW3VzZXJHcGdQcml2YXRlS2V5XSxcbiAgICAgICAgZm9ybWF0OiAndXRmOCcsXG4gICAgICB9KVxuICAgICkuZGF0YTtcblxuICAgIHJldHVybiBkZWNyeXB0ZWRQcml2YXRlU2hhcmU7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlQml0Z29LZXljaGFpbkluV1AoXG4gICAgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICBiYWNrdXBHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgdXNlcktleVNoYXJlOiBNcGNLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogTXBjS2V5U2hhcmUsXG4gICAga2V5VHlwZTogS2V5VHlwZSxcbiAgICBlbnRlcnByaXNlPzogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBjb25zdCBiaXRnb0tleSA9IGF3YWl0IGdldEJpdGdvR3BnUHViS2V5KHRoaXMuYml0Z28pO1xuICAgIGNvbnN0IGVuY1VzZXJUb0JpdEdvTWVzc2FnZSA9IGF3YWl0IGVuY3J5cHRUZXh0KHVzZXJLZXlTaGFyZS5wcml2YXRlU2hhcmUsIGJpdGdvS2V5KTtcbiAgICBjb25zdCBlbmNCYWNrdXBUb0JpdEdvTWVzc2FnZSA9IGF3YWl0IGVuY3J5cHRUZXh0KGJhY2t1cEtleVNoYXJlLnByaXZhdGVTaGFyZSwgYml0Z29LZXkpO1xuXG4gICAgY29uc3QgY3JlYXRlQml0R29NUENQYXJhbXM6IEFkZEtleWNoYWluT3B0aW9ucyA9IHtcbiAgICAgIGtleVR5cGUsXG4gICAgICBzb3VyY2U6ICdiaXRnbycsXG4gICAgICBrZXlTaGFyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZyb206ICd1c2VyJyxcbiAgICAgICAgICB0bzogJ2JpdGdvJyxcbiAgICAgICAgICBwdWJsaWNTaGFyZTogdXNlcktleVNoYXJlLnB1YmxpY1NoYXJlLFxuICAgICAgICAgIHByaXZhdGVTaGFyZTogZW5jVXNlclRvQml0R29NZXNzYWdlLFxuICAgICAgICAgIHByaXZhdGVTaGFyZVByb29mOiB1c2VyS2V5U2hhcmUucHJpdmF0ZVNoYXJlUHJvb2YsXG4gICAgICAgICAgdnNzUHJvb2Y6IHVzZXJLZXlTaGFyZS52c3NQcm9vZixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb206ICdiYWNrdXAnLFxuICAgICAgICAgIHRvOiAnYml0Z28nLFxuICAgICAgICAgIHB1YmxpY1NoYXJlOiBiYWNrdXBLZXlTaGFyZS5wdWJsaWNTaGFyZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmU6IGVuY0JhY2t1cFRvQml0R29NZXNzYWdlLFxuICAgICAgICAgIHByaXZhdGVTaGFyZVByb29mOiBiYWNrdXBLZXlTaGFyZS5wcml2YXRlU2hhcmVQcm9vZixcbiAgICAgICAgICB2c3NQcm9vZjogYmFja3VwS2V5U2hhcmUudnNzUHJvb2YsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdXNlckdQR1B1YmxpY0tleTogdXNlckdwZ0tleS5wdWJsaWNLZXksXG4gICAgICBiYWNrdXBHUEdQdWJsaWNLZXk6IGJhY2t1cEdwZ0tleS5wdWJsaWNLZXksXG4gICAgICBlbnRlcnByaXNlOiBlbnRlcnByaXNlLFxuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlQ29pbi5rZXljaGFpbnMoKS5hZGQoY3JlYXRlQml0R29NUENQYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgVXNlciwgQmFja3VwLCBhbmQgQml0R28gTVBDIEtleWNoYWlucy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcy5wYXNzcGhyYXNlIC0gcGFzc3BocmFzZSB1c2VkIHRvIGVuY3J5cHQgc2lnbmluZyBtYXRlcmlhbHMgY3JlYXRlZCBmb3IgVXNlciBhbmQgQmFja3VwXG4gICAqIEBwYXJhbSBwYXJhbXMuZW50ZXJwcmlzZSAtIG9wdGlvbmFsIGVudGVycHJpc2UgaWQgdGhhdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBCaXRHbyBLZXljaGFpblxuICAgKiBAcGFyYW0gcGFyYW1zLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZSAtIG9wdGlvbmFsIGVuY3J5cHRpb24gY29kZSB1c2VkIHRvIHJlc2V0IHRoZSB1c2VyJ3MgcGFzc3dvcmQsIGlmIGFic2VudCwgcGFzc3dvcmQgcmVjb3Zlcnkgd2lsbCBub3Qgd29ya1xuICAgKi9cbiAgYWJzdHJhY3QgY3JlYXRlS2V5Y2hhaW5zKHBhcmFtczoge1xuICAgIHBhc3NwaHJhc2U6IHN0cmluZztcbiAgICBlbnRlcnByaXNlPzogc3RyaW5nO1xuICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgICBiYWNrdXBQcm92aWRlcj86IEJhY2t1cFByb3ZpZGVyO1xuICB9KTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PjtcblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiB3b3VsZCBiZSByZXNwb25zaWJsZSBmb3IgcG9wdWxhdGluZyBpbnRlbnRzXG4gICAqIGJhc2VkIG9uIHRoZSB0eXBlIG9mIGNvaW4gLyBzaWcgc2NoZW1lIHRoZSBjb2luIHVzZXNcbiAgICogQHBhcmFtIHtJQmFzZUNvaW59IGJhc2VDb2luXG4gICAqIEBwYXJhbSB7UHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zfSBwYXJhbXNcbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHVua25vd24+fVxuICAgKi9cbiAgcG9wdWxhdGVJbnRlbnQoYmFzZUNvaW46IElCYXNlQ29pbiwgcGFyYW1zOiBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMpOiBQb3B1bGF0ZWRJbnRlbnQge1xuICAgIGNvbnN0IGNoYWluID0gdGhpcy5iYXNlQ29pbi5nZXRDaGFpbigpO1xuXG4gICAgaWYgKCFbJ2FjY2VsZXJhdGlvbicsICdmaWxsTm9uY2UnLCAndHJhbnNmZXJUb2tlbiddLmluY2x1ZGVzKHBhcmFtcy5pbnRlbnRUeXBlKSkge1xuICAgICAgYXNzZXJ0KHBhcmFtcy5yZWNpcGllbnRzLCBgJ3JlY2lwaWVudHMnIGlzIGEgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG4gICAgY29uc3QgaW50ZW50UmVjaXBpZW50cyA9IHBhcmFtcy5yZWNpcGllbnRzPy5tYXAoKHJlY2lwaWVudCkgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0dGVkUmVjaXBpZW50OiBJbnRlbnRSZWNpcGllbnQgPSB7XG4gICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MgfSxcbiAgICAgICAgYW1vdW50OiB7IHZhbHVlOiBgJHtyZWNpcGllbnQuYW1vdW50fWAsIHN5bWJvbDogcmVjaXBpZW50LnRva2VuTmFtZSA/IHJlY2lwaWVudC50b2tlbk5hbWUgOiBjaGFpbiB9LFxuICAgICAgfTtcblxuICAgICAgaWYgKHJlY2lwaWVudC5kYXRhKSB7XG4gICAgICAgIGZvcm1hdHRlZFJlY2lwaWVudC5kYXRhID0gcmVjaXBpZW50LmRhdGE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgdG9rZW5EYXRhIH0gPSByZWNpcGllbnQ7XG4gICAgICBpZiAodG9rZW5EYXRhICYmICh0b2tlbkRhdGEudG9rZW5Db250cmFjdEFkZHJlc3MgfHwgdG9rZW5EYXRhLnRva2VuTmFtZSkpIHtcbiAgICAgICAgLy8gdG9rZW4gcmVsYXRlZCByZWNpcGllbnQgZGF0YSBnZXRzIHZhbGlkYXRlZCBpbiBXUFxuICAgICAgICBpZiAoISh0b2tlbkRhdGEudG9rZW5UeXBlICYmIHRva2VuRGF0YS50b2tlblF1YW50aXR5KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICd0b2tlbiB0eXBlIGFuZCBxdWFudGl0eSBpcyByZXF1aXJlZCB0byByZXF1ZXN0IGEgdHJhbnNhY3Rpb24gd2l0aCBpbnRlbnQgdG8gdHJhbnNmZXIgYSB0b2tlbidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGZvcm1hdHRlZFJlY2lwaWVudC50b2tlbkRhdGEgPSB0b2tlbkRhdGE7XG4gICAgICB9XG4gICAgICByZXR1cm4gZm9ybWF0dGVkUmVjaXBpZW50O1xuICAgIH0pO1xuXG4gICAgY29uc3QgYmFzZUludGVudCA9IHtcbiAgICAgIGludGVudFR5cGU6IHBhcmFtcy5pbnRlbnRUeXBlLFxuICAgICAgc2VxdWVuY2VJZDogcGFyYW1zLnNlcXVlbmNlSWQsXG4gICAgICBjb21tZW50OiBwYXJhbXMuY29tbWVudCxcbiAgICAgIG5vbmNlOiBwYXJhbXMubm9uY2UsXG4gICAgICByZWNpcGllbnRzOiBpbnRlbnRSZWNpcGllbnRzLFxuICAgIH07XG5cbiAgICBpZiAoYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdldGgnIHx8IGJhc2VDb2luLmdldEZhbWlseSgpID09PSAncG9seWdvbicgfHwgYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdic2MnKSB7XG4gICAgICBzd2l0Y2ggKHBhcmFtcy5pbnRlbnRUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3BheW1lbnQnOlxuICAgICAgICBjYXNlICd0cmFuc2ZlclRva2VuJzpcbiAgICAgICAgY2FzZSAnZmlsbE5vbmNlJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHNlbGZTZW5kOiBwYXJhbXMuc2VsZlNlbmQsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGhvcFBhcmFtczogcGFyYW1zLmhvcFBhcmFtcyxcbiAgICAgICAgICAgIGlzVHNzOiBwYXJhbXMuaXNUc3MsXG4gICAgICAgICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgICAgICAgY3VzdG9kaWFuVHJhbnNhY3Rpb25JZDogcGFyYW1zLmN1c3RvZGlhblRyYW5zYWN0aW9uSWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnYWNjZWxlcmF0aW9uJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHR4aWQ6IHBhcmFtcy5sb3dGZWVUeGlkLFxuICAgICAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICAgICAgfTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGludGVudCB0eXBlICR7cGFyYW1zLmludGVudFR5cGV9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5mZWVPcHRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgIG1lbW86IHBhcmFtcy5tZW1vPy52YWx1ZSxcbiAgICAgICAgdG9rZW46IHBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgIGVuYWJsZVRva2VuczogcGFyYW1zLmVuYWJsZVRva2VucyxcbiAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgbWVtbzogcGFyYW1zLm1lbW8/LnZhbHVlLFxuICAgICAgdG9rZW46IHBhcmFtcy50b2tlbk5hbWUsXG4gICAgICBlbmFibGVUb2tlbnM6IHBhcmFtcy5lbmFibGVUb2tlbnMsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBjVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvbXBjVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxvREFBNEI7QUFDNUIscUNBQWtGO0FBS2xGLGlEQUFnRTtBQVVoRSxNQUFzQixRQUFRO0lBSTVCLFlBQVksS0FBZ0IsRUFBRSxRQUFtQjtRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRVMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFlBQW9CLEVBQUUsVUFBcUM7UUFDN0YsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLHFCQUFXLENBQUM7WUFDNUMsY0FBYyxFQUFFLFlBQVk7U0FDN0IsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLHdCQUFjLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFdEYsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixNQUFNLGlCQUFPLENBQUM7WUFDWixPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLGNBQWMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQ25DLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUNILENBQUMsSUFBSSxDQUFDO1FBRVAsT0FBTyxxQkFBcUIsQ0FBQztJQUMvQixDQUFDO0lBRVMsS0FBSyxDQUFDLHVCQUF1QixDQUNyQyxVQUFxQyxFQUNyQyxZQUF1QyxFQUN2QyxZQUF5QixFQUN6QixjQUEyQixFQUMzQixPQUFnQixFQUNoQixVQUFtQjtRQUVuQixNQUFNLFFBQVEsR0FBRyxNQUFNLGdDQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sMEJBQVcsQ0FBQyxZQUFZLENB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SSwwQ0FBRSxLQUFLO2dCQUN4QixLQUFLLEVBQUUsTUFBTSxDQUFDLFNBQVM7Z0JBQ3ZCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtnQkFDakMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO2FBQzlCLENBQUM7U0FDSDtRQUVELE9BQU87WUFDTCxHQUFHLFVBQVU7WUFDYixJQUFJLEVBQUUsTUFBQSxNQUFNLENBQUMsSUFBSSwwQ0FBRSxLQUFLO1lBQ3hCLEtBQUssRUFBRSxNQUFNLENBQUMsU0FBUztZQUN2QixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7U0FDbEMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXpLRCw0QkF5S0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBkZWNyeXB0LCByZWFkTWVzc2FnZSwgcmVhZFByaXZhdGVLZXksIFNlcmlhbGl6ZWRLZXlQYWlyIH0gZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgeyBJQmFzZUNvaW4sIEtleWNoYWluc1RyaXBsZXQgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgQWRkS2V5Y2hhaW5PcHRpb25zLCBLZXljaGFpbiwgS2V5VHlwZSB9IGZyb20gJy4uL2tleWNoYWluJztcbmltcG9ydCB7IEJhY2t1cFByb3ZpZGVyIH0gZnJvbSAnLi4vd2FsbGV0JztcbmltcG9ydCB7IGVuY3J5cHRUZXh0LCBnZXRCaXRnb0dwZ1B1YktleSB9IGZyb20gJy4vb3BlbmdwZ1V0aWxzJztcbmltcG9ydCB7IEludGVudFJlY2lwaWVudCwgUG9wdWxhdGVkSW50ZW50LCBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMgfSBmcm9tICcuL3Rzcy9iYXNlVHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1wY0tleVNoYXJlIHtcbiAgcHVibGljU2hhcmU6IHN0cmluZztcbiAgcHJpdmF0ZVNoYXJlOiBzdHJpbmc7XG4gIHByaXZhdGVTaGFyZVByb29mPzogc3RyaW5nO1xuICB2c3NQcm9vZj86IHN0cmluZztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1wY1V0aWxzIHtcbiAgcHJvdGVjdGVkIGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByb3RlY3RlZCBiYXNlQ29pbjogSUJhc2VDb2luO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIGJhc2VDb2luOiBJQmFzZUNvaW4pIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy5iYXNlQ29pbiA9IGJhc2VDb2luO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRlY3J5cHRQcml2YXRlU2hhcmUocHJpdmF0ZVNoYXJlOiBzdHJpbmcsIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHByaXZhdGVTaGFyZU1lc3NhZ2UgPSBhd2FpdCByZWFkTWVzc2FnZSh7XG4gICAgICBhcm1vcmVkTWVzc2FnZTogcHJpdmF0ZVNoYXJlLFxuICAgIH0pO1xuICAgIGNvbnN0IHVzZXJHcGdQcml2YXRlS2V5ID0gYXdhaXQgcmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiB1c2VyR3BnS2V5LnByaXZhdGVLZXkgfSk7XG5cbiAgICBjb25zdCBkZWNyeXB0ZWRQcml2YXRlU2hhcmUgPSAoXG4gICAgICBhd2FpdCBkZWNyeXB0KHtcbiAgICAgICAgbWVzc2FnZTogcHJpdmF0ZVNoYXJlTWVzc2FnZSxcbiAgICAgICAgZGVjcnlwdGlvbktleXM6IFt1c2VyR3BnUHJpdmF0ZUtleV0sXG4gICAgICAgIGZvcm1hdDogJ3V0ZjgnLFxuICAgICAgfSlcbiAgICApLmRhdGE7XG5cbiAgICByZXR1cm4gZGVjcnlwdGVkUHJpdmF0ZVNoYXJlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZUJpdGdvS2V5Y2hhaW5JbldQKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgYmFja3VwR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIHVzZXJLZXlTaGFyZTogTXBjS2V5U2hhcmUsXG4gICAgYmFja3VwS2V5U2hhcmU6IE1wY0tleVNoYXJlLFxuICAgIGtleVR5cGU6IEtleVR5cGUsXG4gICAgZW50ZXJwcmlzZT86IHN0cmluZ1xuICApOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgY29uc3QgYml0Z29LZXkgPSBhd2FpdCBnZXRCaXRnb0dwZ1B1YktleSh0aGlzLmJpdGdvKTtcbiAgICBjb25zdCBlbmNVc2VyVG9CaXRHb01lc3NhZ2UgPSBhd2FpdCBlbmNyeXB0VGV4dCh1c2VyS2V5U2hhcmUucHJpdmF0ZVNoYXJlLCBiaXRnb0tleSk7XG4gICAgY29uc3QgZW5jQmFja3VwVG9CaXRHb01lc3NhZ2UgPSBhd2FpdCBlbmNyeXB0VGV4dChiYWNrdXBLZXlTaGFyZS5wcml2YXRlU2hhcmUsIGJpdGdvS2V5KTtcblxuICAgIGNvbnN0IGNyZWF0ZUJpdEdvTVBDUGFyYW1zOiBBZGRLZXljaGFpbk9wdGlvbnMgPSB7XG4gICAgICBrZXlUeXBlLFxuICAgICAgc291cmNlOiAnYml0Z28nLFxuICAgICAga2V5U2hhcmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiAndXNlcicsXG4gICAgICAgICAgdG86ICdiaXRnbycsXG4gICAgICAgICAgcHVibGljU2hhcmU6IHVzZXJLZXlTaGFyZS5wdWJsaWNTaGFyZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmU6IGVuY1VzZXJUb0JpdEdvTWVzc2FnZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmVQcm9vZjogdXNlcktleVNoYXJlLnByaXZhdGVTaGFyZVByb29mLFxuICAgICAgICAgIHZzc1Byb29mOiB1c2VyS2V5U2hhcmUudnNzUHJvb2YsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiAnYmFja3VwJyxcbiAgICAgICAgICB0bzogJ2JpdGdvJyxcbiAgICAgICAgICBwdWJsaWNTaGFyZTogYmFja3VwS2V5U2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlOiBlbmNCYWNrdXBUb0JpdEdvTWVzc2FnZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmVQcm9vZjogYmFja3VwS2V5U2hhcmUucHJpdmF0ZVNoYXJlUHJvb2YsXG4gICAgICAgICAgdnNzUHJvb2Y6IGJhY2t1cEtleVNoYXJlLnZzc1Byb29mLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHVzZXJHUEdQdWJsaWNLZXk6IHVzZXJHcGdLZXkucHVibGljS2V5LFxuICAgICAgYmFja3VwR1BHUHVibGljS2V5OiBiYWNrdXBHcGdLZXkucHVibGljS2V5LFxuICAgICAgZW50ZXJwcmlzZTogZW50ZXJwcmlzZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUNvaW4ua2V5Y2hhaW5zKCkuYWRkKGNyZWF0ZUJpdEdvTVBDUGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIFVzZXIsIEJhY2t1cCwgYW5kIEJpdEdvIE1QQyBLZXljaGFpbnMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMucGFzc3BocmFzZSAtIHBhc3NwaHJhc2UgdXNlZCB0byBlbmNyeXB0IHNpZ25pbmcgbWF0ZXJpYWxzIGNyZWF0ZWQgZm9yIFVzZXIgYW5kIEJhY2t1cFxuICAgKiBAcGFyYW0gcGFyYW1zLmVudGVycHJpc2UgLSBvcHRpb25hbCBlbnRlcnByaXNlIGlkIHRoYXQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgQml0R28gS2V5Y2hhaW5cbiAgICogQHBhcmFtIHBhcmFtcy5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgLSBvcHRpb25hbCBlbmNyeXB0aW9uIGNvZGUgdXNlZCB0byByZXNldCB0aGUgdXNlcidzIHBhc3N3b3JkLCBpZiBhYnNlbnQsIHBhc3N3b3JkIHJlY292ZXJ5IHdpbGwgbm90IHdvcmtcbiAgICovXG4gIGFic3RyYWN0IGNyZWF0ZUtleWNoYWlucyhwYXJhbXM6IHtcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmc7XG4gICAgZW50ZXJwcmlzZT86IHN0cmluZztcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmc7XG4gICAgYmFja3VwUHJvdmlkZXI/OiBCYWNrdXBQcm92aWRlcjtcbiAgfSk6IFByb21pc2U8S2V5Y2hhaW5zVHJpcGxldD47XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gd291bGQgYmUgcmVzcG9uc2libGUgZm9yIHBvcHVsYXRpbmcgaW50ZW50c1xuICAgKiBiYXNlZCBvbiB0aGUgdHlwZSBvZiBjb2luIC8gc2lnIHNjaGVtZSB0aGUgY29pbiB1c2VzXG4gICAqIEBwYXJhbSB7SUJhc2VDb2lufSBiYXNlQ29pblxuICAgKiBAcGFyYW0ge1ByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9uc30gcGFyYW1zXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn1cbiAgICovXG4gIHBvcHVsYXRlSW50ZW50KGJhc2VDb2luOiBJQmFzZUNvaW4sIHBhcmFtczogUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zKTogUG9wdWxhdGVkSW50ZW50IHtcbiAgICBjb25zdCBjaGFpbiA9IHRoaXMuYmFzZUNvaW4uZ2V0Q2hhaW4oKTtcblxuICAgIGlmICghWydhY2NlbGVyYXRpb24nLCAnZmlsbE5vbmNlJywgJ3RyYW5zZmVyVG9rZW4nXS5pbmNsdWRlcyhwYXJhbXMuaW50ZW50VHlwZSkpIHtcbiAgICAgIGFzc2VydChwYXJhbXMucmVjaXBpZW50cywgYCdyZWNpcGllbnRzJyBpcyBhIHJlcXVpcmVkIHBhcmFtZXRlciBmb3IgJHtwYXJhbXMuaW50ZW50VHlwZX0gaW50ZW50YCk7XG4gICAgfVxuICAgIGNvbnN0IGludGVudFJlY2lwaWVudHMgPSBwYXJhbXMucmVjaXBpZW50cz8ubWFwKChyZWNpcGllbnQpID0+IHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZFJlY2lwaWVudDogSW50ZW50UmVjaXBpZW50ID0ge1xuICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6IHJlY2lwaWVudC5hZGRyZXNzIH0sXG4gICAgICAgIGFtb3VudDogeyB2YWx1ZTogYCR7cmVjaXBpZW50LmFtb3VudH1gLCBzeW1ib2w6IHJlY2lwaWVudC50b2tlbk5hbWUgPyByZWNpcGllbnQudG9rZW5OYW1lIDogY2hhaW4gfSxcbiAgICAgIH07XG5cbiAgICAgIGlmIChyZWNpcGllbnQuZGF0YSkge1xuICAgICAgICBmb3JtYXR0ZWRSZWNpcGllbnQuZGF0YSA9IHJlY2lwaWVudC5kYXRhO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRva2VuRGF0YSB9ID0gcmVjaXBpZW50O1xuICAgICAgaWYgKHRva2VuRGF0YSAmJiAodG9rZW5EYXRhLnRva2VuQ29udHJhY3RBZGRyZXNzIHx8IHRva2VuRGF0YS50b2tlbk5hbWUpKSB7XG4gICAgICAgIC8vIHRva2VuIHJlbGF0ZWQgcmVjaXBpZW50IGRhdGEgZ2V0cyB2YWxpZGF0ZWQgaW4gV1BcbiAgICAgICAgaWYgKCEodG9rZW5EYXRhLnRva2VuVHlwZSAmJiB0b2tlbkRhdGEudG9rZW5RdWFudGl0eSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAndG9rZW4gdHlwZSBhbmQgcXVhbnRpdHkgaXMgcmVxdWlyZWQgdG8gcmVxdWVzdCBhIHRyYW5zYWN0aW9uIHdpdGggaW50ZW50IHRvIHRyYW5zZmVyIGEgdG9rZW4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBmb3JtYXR0ZWRSZWNpcGllbnQudG9rZW5EYXRhID0gdG9rZW5EYXRhO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdHRlZFJlY2lwaWVudDtcbiAgICB9KTtcblxuICAgIGNvbnN0IGJhc2VJbnRlbnQgPSB7XG4gICAgICBpbnRlbnRUeXBlOiBwYXJhbXMuaW50ZW50VHlwZSxcbiAgICAgIHNlcXVlbmNlSWQ6IHBhcmFtcy5zZXF1ZW5jZUlkLFxuICAgICAgY29tbWVudDogcGFyYW1zLmNvbW1lbnQsXG4gICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgcmVjaXBpZW50czogaW50ZW50UmVjaXBpZW50cyxcbiAgICB9O1xuXG4gICAgaWYgKGJhc2VDb2luLmdldEZhbWlseSgpID09PSAnZXRoJyB8fCBiYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ3BvbHlnb24nIHx8IGJhc2VDb2luLmdldEZhbWlseSgpID09PSAnYnNjJykge1xuICAgICAgc3dpdGNoIChwYXJhbXMuaW50ZW50VHlwZSkge1xuICAgICAgICBjYXNlICdwYXltZW50JzpcbiAgICAgICAgY2FzZSAndHJhbnNmZXJUb2tlbic6XG4gICAgICAgIGNhc2UgJ2ZpbGxOb25jZSc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgICAgICBzZWxmU2VuZDogcGFyYW1zLnNlbGZTZW5kLFxuICAgICAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICAgICAgICBob3BQYXJhbXM6IHBhcmFtcy5ob3BQYXJhbXMsXG4gICAgICAgICAgICBpc1RzczogcGFyYW1zLmlzVHNzLFxuICAgICAgICAgICAgbm9uY2U6IHBhcmFtcy5ub25jZSxcbiAgICAgICAgICAgIGN1c3RvZGlhblRyYW5zYWN0aW9uSWQ6IHBhcmFtcy5jdXN0b2RpYW5UcmFuc2FjdGlvbklkLFxuICAgICAgICAgICAgcmVjZWl2ZUFkZHJlc3M6IHBhcmFtcy5yZWNlaXZlQWRkcmVzcyxcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdhY2NlbGVyYXRpb24nOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgICAgICAgdHhpZDogcGFyYW1zLmxvd0ZlZVR4aWQsXG4gICAgICAgICAgICByZWNlaXZlQWRkcmVzczogcGFyYW1zLnJlY2VpdmVBZGRyZXNzLFxuICAgICAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICAgICAgfTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGludGVudCB0eXBlICR7cGFyYW1zLmludGVudFR5cGV9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5mZWVPcHRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgIG1lbW86IHBhcmFtcy5tZW1vPy52YWx1ZSxcbiAgICAgICAgdG9rZW46IHBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgIGVuYWJsZVRva2VuczogcGFyYW1zLmVuYWJsZVRva2VucyxcbiAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgbWVtbzogcGFyYW1zLm1lbW8/LnZhbHVlLFxuICAgICAgdG9rZW46IHBhcmFtcy50b2tlbk5hbWUsXG4gICAgICBlbmFibGVUb2tlbnM6IHBhcmFtcy5lbmFibGVUb2tlbnMsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -6,6 +6,7 @@ import { ApiKeyShare, Keychain } from '../../keychain';
|
|
|
6
6
|
import { ApiVersion, Memo, WalletType } from '../../wallet';
|
|
7
7
|
import { EDDSA, GShare, SignShare, YShare } from '../../../account-lib/mpc/tss';
|
|
8
8
|
import { KeyShare } from './ecdsa';
|
|
9
|
+
import { Hash } from 'crypto';
|
|
9
10
|
export declare type TxRequestVersion = 'full' | 'lite';
|
|
10
11
|
export interface HopParams {
|
|
11
12
|
paymentId?: string;
|
|
@@ -90,6 +91,7 @@ export interface PrebuildTransactionWithIntentOptions extends IntentOptionsBase
|
|
|
90
91
|
hopParams?: HopParams;
|
|
91
92
|
lowFeeTxid?: string;
|
|
92
93
|
custodianTransactionId?: string;
|
|
94
|
+
receiveAddress?: string;
|
|
93
95
|
}
|
|
94
96
|
export interface IntentRecipient {
|
|
95
97
|
address: {
|
|
@@ -128,6 +130,7 @@ export interface PopulatedIntent extends PopulatedIntentBase {
|
|
|
128
130
|
feeOptions?: FeeOption | EIP1559FeeOptions;
|
|
129
131
|
hopParams?: HopParams;
|
|
130
132
|
txid?: string;
|
|
133
|
+
receiveAddress?: string;
|
|
131
134
|
custodianTransactionId?: string;
|
|
132
135
|
custodianMessageId?: string;
|
|
133
136
|
}
|
|
@@ -211,6 +214,7 @@ export declare type TSSParams = {
|
|
|
211
214
|
prv: string;
|
|
212
215
|
reqId: IRequestTracer;
|
|
213
216
|
apiVersion?: ApiVersion;
|
|
217
|
+
hash?: Hash;
|
|
214
218
|
};
|
|
215
219
|
export declare type TSSParamsForMessage = TSSParams & {
|
|
216
220
|
messageRaw: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseTypes.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/baseTypes.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"baseTypes.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/baseTypes.ts"],"names":[],"mappings":"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"}
|