@bitgo-beta/abstract-eth 1.2.3-alpha.403 → 1.2.3-alpha.405

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.
Files changed (151) hide show
  1. package/package.json +7 -7
  2. package/dist/src/abstractEthLikeCoin.d.ts +0 -95
  3. package/dist/src/abstractEthLikeCoin.d.ts.map +0 -1
  4. package/dist/src/abstractEthLikeCoin.js +0 -160
  5. package/dist/src/abstractEthLikeNewCoins.d.ts +0 -749
  6. package/dist/src/abstractEthLikeNewCoins.d.ts.map +0 -1
  7. package/dist/src/abstractEthLikeNewCoins.js +0 -2229
  8. package/dist/src/ethLikeToken.d.ts +0 -70
  9. package/dist/src/ethLikeToken.d.ts.map +0 -1
  10. package/dist/src/ethLikeToken.js +0 -360
  11. package/dist/src/index.d.ts +0 -5
  12. package/dist/src/index.d.ts.map +0 -1
  13. package/dist/src/index.js +0 -21
  14. package/dist/src/lib/contractCall.d.ts +0 -8
  15. package/dist/src/lib/contractCall.d.ts.map +0 -1
  16. package/dist/src/lib/contractCall.js +0 -17
  17. package/dist/src/lib/iface.d.ts +0 -133
  18. package/dist/src/lib/iface.d.ts.map +0 -1
  19. package/dist/src/lib/iface.js +0 -8
  20. package/dist/src/lib/index.d.ts +0 -16
  21. package/dist/src/lib/index.d.ts.map +0 -1
  22. package/dist/src/lib/index.js +0 -57
  23. package/dist/src/lib/keyPair.d.ts +0 -26
  24. package/dist/src/lib/keyPair.d.ts.map +0 -1
  25. package/dist/src/lib/keyPair.js +0 -65
  26. package/dist/src/lib/messages/eip191/eip191Message.d.ts +0 -12
  27. package/dist/src/lib/messages/eip191/eip191Message.d.ts.map +0 -1
  28. package/dist/src/lib/messages/eip191/eip191Message.js +0 -25
  29. package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts +0 -19
  30. package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts.map +0 -1
  31. package/dist/src/lib/messages/eip191/eip191MessageBuilder.js +0 -27
  32. package/dist/src/lib/messages/eip191/index.d.ts +0 -3
  33. package/dist/src/lib/messages/eip191/index.d.ts.map +0 -1
  34. package/dist/src/lib/messages/eip191/index.js +0 -19
  35. package/dist/src/lib/messages/eip712/eip712Message.d.ts +0 -6
  36. package/dist/src/lib/messages/eip712/eip712Message.d.ts.map +0 -1
  37. package/dist/src/lib/messages/eip712/eip712Message.js +0 -27
  38. package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts +0 -7
  39. package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts.map +0 -1
  40. package/dist/src/lib/messages/eip712/eip712MessageBuilder.js +0 -15
  41. package/dist/src/lib/messages/eip712/index.d.ts +0 -3
  42. package/dist/src/lib/messages/eip712/index.d.ts.map +0 -1
  43. package/dist/src/lib/messages/eip712/index.js +0 -19
  44. package/dist/src/lib/messages/index.d.ts +0 -4
  45. package/dist/src/lib/messages/index.d.ts.map +0 -1
  46. package/dist/src/lib/messages/index.js +0 -20
  47. package/dist/src/lib/messages/messageBuilderFactory.d.ts +0 -7
  48. package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +0 -1
  49. package/dist/src/lib/messages/messageBuilderFactory.js +0 -23
  50. package/dist/src/lib/transaction.d.ts +0 -67
  51. package/dist/src/lib/transaction.d.ts.map +0 -1
  52. package/dist/src/lib/transaction.js +0 -142
  53. package/dist/src/lib/transactionBuilder.d.ts +0 -270
  54. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  55. package/dist/src/lib/transactionBuilder.js +0 -822
  56. package/dist/src/lib/transferBuilder.d.ts +0 -76
  57. package/dist/src/lib/transferBuilder.d.ts.map +0 -1
  58. package/dist/src/lib/transferBuilder.js +0 -307
  59. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +0 -54
  60. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +0 -1
  61. package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +0 -120
  62. package/dist/src/lib/transferBuilders/index.d.ts +0 -4
  63. package/dist/src/lib/transferBuilders/index.d.ts.map +0 -1
  64. package/dist/src/lib/transferBuilders/index.js +0 -20
  65. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +0 -17
  66. package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +0 -1
  67. package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +0 -96
  68. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +0 -16
  69. package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +0 -1
  70. package/dist/src/lib/transferBuilders/transferBuilderERC721.js +0 -81
  71. package/dist/src/lib/types.d.ts +0 -39
  72. package/dist/src/lib/types.d.ts.map +0 -1
  73. package/dist/src/lib/types.js +0 -137
  74. package/dist/src/lib/utils.d.ts +0 -310
  75. package/dist/src/lib/utils.d.ts.map +0 -1
  76. package/dist/src/lib/utils.js +0 -829
  77. package/dist/src/lib/walletUtil.d.ts +0 -40
  78. package/dist/src/lib/walletUtil.d.ts.map +0 -1
  79. package/dist/src/lib/walletUtil.js +0 -43
  80. package/dist/src/types.d.ts +0 -9
  81. package/dist/src/types.d.ts.map +0 -1
  82. package/dist/src/types.js +0 -3
  83. package/dist/test/index.d.ts +0 -2
  84. package/dist/test/index.d.ts.map +0 -1
  85. package/dist/test/index.js +0 -18
  86. package/dist/test/unit/coin.d.ts +0 -8
  87. package/dist/test/unit/coin.d.ts.map +0 -1
  88. package/dist/test/unit/coin.js +0 -577
  89. package/dist/test/unit/index.d.ts +0 -6
  90. package/dist/test/unit/index.d.ts.map +0 -1
  91. package/dist/test/unit/index.js +0 -22
  92. package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts +0 -3
  93. package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts.map +0 -1
  94. package/dist/test/unit/messages/abstractEthMessageBuilderTests.js +0 -110
  95. package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts +0 -43
  96. package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts.map +0 -1
  97. package/dist/test/unit/messages/abstractEthMessageTestTypes.js +0 -3
  98. package/dist/test/unit/messages/abstractEthMessagesTests.d.ts +0 -3
  99. package/dist/test/unit/messages/abstractEthMessagesTests.d.ts.map +0 -1
  100. package/dist/test/unit/messages/abstractEthMessagesTests.js +0 -129
  101. package/dist/test/unit/messages/eip191/eip191Message.d.ts +0 -2
  102. package/dist/test/unit/messages/eip191/eip191Message.d.ts.map +0 -1
  103. package/dist/test/unit/messages/eip191/eip191Message.js +0 -15
  104. package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts +0 -2
  105. package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts.map +0 -1
  106. package/dist/test/unit/messages/eip191/eip191MessageBuilder.js +0 -16
  107. package/dist/test/unit/messages/eip191/fixtures.d.ts +0 -109
  108. package/dist/test/unit/messages/eip191/fixtures.d.ts.map +0 -1
  109. package/dist/test/unit/messages/eip191/fixtures.js +0 -63
  110. package/dist/test/unit/messages/eip712/eip712Message.d.ts +0 -2
  111. package/dist/test/unit/messages/eip712/eip712Message.d.ts.map +0 -1
  112. package/dist/test/unit/messages/eip712/eip712Message.js +0 -15
  113. package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts +0 -2
  114. package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts.map +0 -1
  115. package/dist/test/unit/messages/eip712/eip712MessageBuilder.js +0 -16
  116. package/dist/test/unit/messages/eip712/fixtures.d.ts +0 -76
  117. package/dist/test/unit/messages/eip712/fixtures.d.ts.map +0 -1
  118. package/dist/test/unit/messages/eip712/fixtures.js +0 -120
  119. package/dist/test/unit/messages/index.d.ts +0 -4
  120. package/dist/test/unit/messages/index.d.ts.map +0 -1
  121. package/dist/test/unit/messages/index.js +0 -20
  122. package/dist/test/unit/messages/messageBuilderFactory.d.ts +0 -2
  123. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  124. package/dist/test/unit/messages/messageBuilderFactory.js +0 -52
  125. package/dist/test/unit/token.d.ts +0 -2
  126. package/dist/test/unit/token.d.ts.map +0 -1
  127. package/dist/test/unit/token.js +0 -37
  128. package/dist/test/unit/transaction.d.ts +0 -3
  129. package/dist/test/unit/transaction.d.ts.map +0 -1
  130. package/dist/test/unit/transaction.js +0 -60
  131. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +0 -8
  132. package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +0 -1
  133. package/dist/test/unit/transactionBuilder/addressInitialization.js +0 -95
  134. package/dist/test/unit/transactionBuilder/flushNft.d.ts +0 -2
  135. package/dist/test/unit/transactionBuilder/flushNft.d.ts.map +0 -1
  136. package/dist/test/unit/transactionBuilder/flushNft.js +0 -381
  137. package/dist/test/unit/transactionBuilder/index.d.ts +0 -5
  138. package/dist/test/unit/transactionBuilder/index.d.ts.map +0 -1
  139. package/dist/test/unit/transactionBuilder/index.js +0 -21
  140. package/dist/test/unit/transactionBuilder/send.d.ts +0 -3
  141. package/dist/test/unit/transactionBuilder/send.d.ts.map +0 -1
  142. package/dist/test/unit/transactionBuilder/send.js +0 -197
  143. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +0 -10
  144. package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +0 -1
  145. package/dist/test/unit/transactionBuilder/walletInitialization.js +0 -124
  146. package/dist/test/unit/transferBuilder.d.ts +0 -2
  147. package/dist/test/unit/transferBuilder.d.ts.map +0 -1
  148. package/dist/test/unit/transferBuilder.js +0 -76
  149. package/dist/test/unit/utils.d.ts +0 -2
  150. package/dist/test/unit/utils.d.ts.map +0 -1
  151. package/dist/test/unit/utils.js +0 -184
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo-beta/abstract-eth",
3
- "version": "1.2.3-alpha.403",
3
+ "version": "1.2.3-alpha.405",
4
4
  "description": "BitGo SDK coin library for ETH base implementation",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -40,10 +40,10 @@
40
40
  ]
41
41
  },
42
42
  "dependencies": {
43
- "@bitgo-beta/sdk-core": "2.4.1-alpha.403",
44
- "@bitgo-beta/sdk-lib-mpc": "8.2.1-alpha.359",
45
- "@bitgo-beta/secp256k1": "1.0.1-alpha.361",
46
- "@bitgo-beta/statics": "10.0.1-alpha.403",
43
+ "@bitgo-beta/sdk-core": "2.4.1-alpha.405",
44
+ "@bitgo-beta/sdk-lib-mpc": "8.2.1-alpha.361",
45
+ "@bitgo-beta/secp256k1": "1.0.1-alpha.363",
46
+ "@bitgo-beta/statics": "10.0.1-alpha.405",
47
47
  "@ethereumjs/common": "^2.6.5",
48
48
  "@ethereumjs/rlp": "^4.0.0",
49
49
  "@ethereumjs/tx": "^3.3.0",
@@ -60,9 +60,9 @@
60
60
  "superagent": "^9.0.1"
61
61
  },
62
62
  "devDependencies": {
63
- "@bitgo-beta/sdk-api": "1.6.1-alpha.403",
63
+ "@bitgo-beta/sdk-api": "1.6.1-alpha.405",
64
64
  "@bitgo-beta/sdk-test": "^9.1.1",
65
65
  "@types/keccak": "^3.0.5"
66
66
  },
67
- "gitHead": "7570d24e001f6150e41de2c5cca9dd0bca6f7cf5"
67
+ "gitHead": "b9c7b506feb91d5f7e77c5c95521ca8fcf9cd106"
68
68
  }
@@ -1,95 +0,0 @@
1
- /**
2
- * @prettier
3
- */
4
- import type * as EthLikeCommon from '@ethereumjs/common';
5
- import { CoinFamily, BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
6
- import { AuditDecryptedKeyParams, BaseCoin, BitGoBase, FullySignedTransaction, HalfSignedAccountTransaction, KeyPair, ParsedTransaction, ParseTransactionOptions, SignTransactionOptions, TransactionExplanation, TransactionFee, TransactionPrebuild as BaseTransactionPrebuild, TransactionRecipient as Recipient, VerifyTransactionOptions } from '@bitgo-beta/sdk-core';
7
- import { TransactionBuilder } from './lib';
8
- import { VerifyEthAddressOptions } from './abstractEthLikeNewCoins';
9
- export interface EthSignTransactionOptions extends SignTransactionOptions {
10
- txPrebuild: TransactionPrebuild;
11
- prv: string;
12
- }
13
- export interface TxInfo {
14
- recipients: Recipient[];
15
- from: string;
16
- txid: string;
17
- }
18
- interface TransactionPrebuild extends BaseTransactionPrebuild {
19
- txHex?: string;
20
- txInfo: TxInfo;
21
- feeInfo: EthTransactionFee;
22
- source: string;
23
- dataToSign: string;
24
- nextContractSequenceId?: number;
25
- expireTime?: number;
26
- }
27
- export interface EthTransactionFee {
28
- fee: string;
29
- gasLimit?: string;
30
- }
31
- export interface ExplainTransactionOptions {
32
- txHex?: string;
33
- halfSigned?: {
34
- txHex: string;
35
- };
36
- feeInfo: TransactionFee;
37
- common?: EthLikeCommon.default;
38
- }
39
- export interface HalfSignedEthLikeTransaction extends HalfSignedAccountTransaction {
40
- halfSigned?: {
41
- txHex?: never;
42
- recipients: Recipient[];
43
- expiration?: number;
44
- };
45
- }
46
- export type SignedEthLikeTransaction = HalfSignedEthLikeTransaction | FullySignedTransaction;
47
- export declare abstract class AbstractEthLikeCoin extends BaseCoin {
48
- protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
49
- protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
50
- getChain(): string;
51
- /**
52
- * Get the base chain that the coin exists on.
53
- */
54
- getBaseChain(): string;
55
- getFamily(): CoinFamily;
56
- getFullName(): string;
57
- getBaseFactor(): number;
58
- getChainId(): number;
59
- /** @inheritDoc */
60
- isEVM(): boolean;
61
- valuelessTransferAllowed(): boolean;
62
- /**
63
- * Check if the address is a valid eth address.
64
- */
65
- isValidAddress(address: string): boolean;
66
- generateKeyPair(seed?: Buffer): KeyPair;
67
- parseTransaction(params: ParseTransactionOptions): Promise<ParsedTransaction>;
68
- isWalletAddress(params: VerifyEthAddressOptions): Promise<boolean>;
69
- verifyTransaction(params: VerifyTransactionOptions): Promise<boolean>;
70
- signTransaction(params: EthSignTransactionOptions): Promise<SignedEthLikeTransaction>;
71
- isValidPub(pub: string): boolean;
72
- /**
73
- * Builds a funds recovery transaction without BitGo.
74
- * We need to do three queries during this:
75
- * 1) Node query - how much money is in the account
76
- * 2) Build transaction - build our transaction for the amount
77
- * 3) Send signed build - send our signed build to a public node
78
- * @param params The options with which to recover
79
- */
80
- recover(params: any): Promise<any>;
81
- /**
82
- * Explain a transaction from txHex
83
- * @param params The options with which to explain the transaction
84
- */
85
- explainTransaction(params: ExplainTransactionOptions): Promise<TransactionExplanation>;
86
- /**
87
- * Create a new transaction builder for the current chain
88
- * @return a new transaction builder
89
- */
90
- protected abstract getTransactionBuilder(common?: EthLikeCommon.default): TransactionBuilder;
91
- /** @inheritDoc */
92
- auditDecryptedKey({ multiSigType, publicKey, prv }: AuditDecryptedKeyParams): void;
93
- }
94
- export {};
95
- //# sourceMappingURL=abstractEthLikeCoin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"abstractEthLikeCoin.d.ts","sourceRoot":"","sources":["../../src/abstractEthLikeCoin.ts"],"names":[],"mappings":"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"}
@@ -1,160 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.AbstractEthLikeCoin = void 0;
7
- const secp256k1_1 = require("@bitgo-beta/secp256k1");
8
- const crypto_1 = require("crypto");
9
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
10
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
11
- const lib_1 = require("./lib");
12
- const sdk_lib_mpc_1 = require("@bitgo-beta/sdk-lib-mpc");
13
- class AbstractEthLikeCoin extends sdk_core_1.BaseCoin {
14
- constructor(bitgo, staticsCoin) {
15
- super(bitgo);
16
- if (!staticsCoin) {
17
- throw new Error('missing required constructor parameter staticsCoin');
18
- }
19
- this._staticsCoin = staticsCoin;
20
- }
21
- getChain() {
22
- return this._staticsCoin.name;
23
- }
24
- /**
25
- * Get the base chain that the coin exists on.
26
- */
27
- getBaseChain() {
28
- return this.getChain();
29
- }
30
- getFamily() {
31
- return this._staticsCoin.family;
32
- }
33
- getFullName() {
34
- return this._staticsCoin.fullName;
35
- }
36
- getBaseFactor() {
37
- return Math.pow(10, this._staticsCoin.decimalPlaces);
38
- }
39
- getChainId() {
40
- return this._staticsCoin.network.chainId;
41
- }
42
- /** @inheritDoc */
43
- isEVM() {
44
- return true;
45
- }
46
- valuelessTransferAllowed() {
47
- return true;
48
- }
49
- /**
50
- * Check if the address is a valid eth address.
51
- */
52
- isValidAddress(address) {
53
- if (!address) {
54
- return false;
55
- }
56
- return (0, lib_1.isValidEthAddress)(address);
57
- }
58
- generateKeyPair(seed) {
59
- const extendedKey = secp256k1_1.bip32.fromSeed(seed || (0, crypto_1.randomBytes)(32));
60
- const xpub = extendedKey.neutered().toBase58();
61
- return {
62
- pub: xpub,
63
- prv: extendedKey.toBase58(),
64
- };
65
- }
66
- async parseTransaction(params) {
67
- return {};
68
- }
69
- async isWalletAddress(params) {
70
- throw new sdk_core_1.MethodNotImplementedError();
71
- }
72
- async verifyTransaction(params) {
73
- return true;
74
- }
75
- async signTransaction(params) {
76
- const txBuilder = this.getTransactionBuilder();
77
- txBuilder.from(params.txPrebuild.txHex);
78
- txBuilder.transfer().key(new lib_1.KeyPair({ prv: params.prv }).getKeys().prv);
79
- const transaction = await txBuilder.build();
80
- const recipients = transaction.outputs.map((output) => ({ address: output.address, amount: output.value }));
81
- return {
82
- halfSigned: {
83
- txHex: transaction.toBroadcastFormat(),
84
- recipients: recipients,
85
- expiration: params.txPrebuild.expireTime,
86
- },
87
- };
88
- }
89
- isValidPub(pub) {
90
- let valid = true;
91
- try {
92
- new lib_1.KeyPair({ pub });
93
- }
94
- catch (e) {
95
- valid = false;
96
- }
97
- return valid;
98
- }
99
- /**
100
- * Builds a funds recovery transaction without BitGo.
101
- * We need to do three queries during this:
102
- * 1) Node query - how much money is in the account
103
- * 2) Build transaction - build our transaction for the amount
104
- * 3) Send signed build - send our signed build to a public node
105
- * @param params The options with which to recover
106
- */
107
- async recover(params) {
108
- throw new sdk_core_1.MethodNotImplementedError();
109
- }
110
- /**
111
- * Explain a transaction from txHex
112
- * @param params The options with which to explain the transaction
113
- */
114
- async explainTransaction(params) {
115
- const txHex = params.txHex || (params.halfSigned && params.halfSigned.txHex);
116
- if (!txHex || !params.feeInfo) {
117
- throw new Error('missing explain tx parameters');
118
- }
119
- const txBuilder = this.getTransactionBuilder(params.common);
120
- txBuilder.from(txHex);
121
- const tx = await txBuilder.build();
122
- const outputs = tx.outputs.map((output) => {
123
- return {
124
- address: output.address,
125
- amount: output.value,
126
- };
127
- });
128
- const displayOrder = ['id', 'outputAmount', 'changeAmount', 'outputs', 'changeOutputs', 'fee'];
129
- return {
130
- displayOrder,
131
- id: tx.id,
132
- outputs: outputs,
133
- outputAmount: outputs
134
- .reduce((accumulator, output) => accumulator.plus(output.amount), new bignumber_js_1.default('0'))
135
- .toFixed(0),
136
- changeOutputs: [], // account based does not use change outputs
137
- changeAmount: '0', // account base does not make change
138
- fee: params.feeInfo,
139
- };
140
- }
141
- /** @inheritDoc */
142
- auditDecryptedKey({ multiSigType, publicKey, prv }) {
143
- if (multiSigType === 'tss') {
144
- (0, sdk_lib_mpc_1.auditEcdsaPrivateKey)(prv, publicKey);
145
- }
146
- else {
147
- if (!(0, sdk_core_1.isValidPrv)(prv) && !(0, sdk_core_1.isValidXprv)(prv)) {
148
- throw new Error('Invalid private key');
149
- }
150
- if (publicKey) {
151
- const genPubKey = sdk_core_1.bitcoin.HDNode.fromBase58(prv).neutered().toBase58();
152
- if (genPubKey !== publicKey) {
153
- throw new Error('Incorrect xpub');
154
- }
155
- }
156
- }
157
- }
158
- }
159
- exports.AbstractEthLikeCoin = AbstractEthLikeCoin;
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RFdGhMaWtlQ29pbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hYnN0cmFjdEV0aExpa2VDb2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUtBLHFEQUE4QztBQUM5QyxtQ0FBcUM7QUFDckMsbURBbUI4QjtBQUM5QixnRUFBcUM7QUFFckMsK0JBQXFGO0FBRXJGLHlEQUErRDtBQStDL0QsTUFBc0IsbUJBQW9CLFNBQVEsbUJBQVE7SUFHeEQsWUFBc0IsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFRLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBMkIsQ0FBQyxPQUFPLENBQUM7SUFDaEUsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFD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RUFBMkI7UUFDekUsSUFBSSxZQUFZLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDM0IsSUFBQSxrQ0FBb0IsRUFBQyxHQUFhLEVBQUUsU0FBbUIsQ0FBQyxDQUFDO1FBQzNELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLElBQUEscUJBQVUsRUFBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUEsc0JBQVcsRUFBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDekMsQ0FBQztZQUNELElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxTQUFTLEdBQUcsa0JBQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN2RSxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFoTEQsa0RBZ0xDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHR5cGUgKiBhcyBFdGhMaWtlQ29tbW9uIGZyb20gJ0BldGhlcmV1bWpzL2NvbW1vbic7XG5pbXBvcnQgeyBDb2luRmFtaWx5LCBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4sIEV0aGVyZXVtTmV0d29yayB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgYmlwMzIgfSBmcm9tICdAYml0Z28tYmV0YS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHtcbiAgQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMsXG4gIEJhc2VDb2luLFxuICBiaXRjb2luLFxuICBCaXRHb0Jhc2UsXG4gIEZ1bGx5U2lnbmVkVHJhbnNhY3Rpb24sXG4gIEhhbGZTaWduZWRBY2NvdW50VHJhbnNhY3Rpb24sXG4gIGlzVmFsaWRQcnYsXG4gIGlzVmFsaWRYcHJ2LFxuICBLZXlQYWlyLFxuICBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFRyYW5zYWN0aW9uRmVlLFxuICBUcmFuc2FjdGlvblByZWJ1aWxkIGFzIEJhc2VUcmFuc2FjdGlvblByZWJ1aWxkLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCBhcyBSZWNpcGllbnQsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5pbXBvcnQgeyBpc1ZhbGlkRXRoQWRkcmVzcywgS2V5UGFpciBhcyBFdGhLZXlQYWlyLCBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2xpYic7XG5pbXBvcnQgeyBWZXJpZnlFdGhBZGRyZXNzT3B0aW9ucyB9IGZyb20gJy4vYWJzdHJhY3RFdGhMaWtlTmV3Q29pbnMnO1xuaW1wb3J0IHsgYXVkaXRFY2RzYVByaXZhdGVLZXkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstbGliLW1wYyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXRoU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xuICBwcnY6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeEluZm8ge1xuICByZWNpcGllbnRzOiBSZWNpcGllbnRbXTtcbiAgZnJvbTogc3RyaW5nO1xuICB0eGlkOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvblByZWJ1aWxkIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uUHJlYnVpbGQge1xuICB0eEhleD86IHN0cmluZztcbiAgdHhJbmZvOiBUeEluZm87XG4gIGZlZUluZm86IEV0aFRyYW5zYWN0aW9uRmVlO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGF0YVRvU2lnbjogc3RyaW5nO1xuICBuZXh0Q29udHJhY3RTZXF1ZW5jZUlkPzogbnVtYmVyO1xuICBleHBpcmVUaW1lPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV0aFRyYW5zYWN0aW9uRmVlIHtcbiAgZmVlOiBzdHJpbmc7XG4gIGdhc0xpbWl0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eEhleD86IHN0cmluZztcbiAgaGFsZlNpZ25lZD86IHtcbiAgICB0eEhleDogc3RyaW5nO1xuICB9O1xuICBmZWVJbmZvOiBUcmFuc2FjdGlvbkZlZTtcbiAgY29tbW9uPzogRXRoTGlrZUNvbW1vbi5kZWZhdWx0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhhbGZTaWduZWRFdGhMaWtlVHJhbnNhY3Rpb24gZXh0ZW5kcyBIYWxmU2lnbmVkQWNjb3VudFRyYW5zYWN0aW9uIHtcbiAgaGFsZlNpZ25lZD86IHtcbiAgICB0eEhleD86IG5ldmVyO1xuICAgIHJlY2lwaWVudHM6IFJlY2lwaWVudFtdO1xuICAgIGV4cGlyYXRpb24/OiBudW1iZXI7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNpZ25lZEV0aExpa2VUcmFuc2FjdGlvbiA9IEhhbGZTaWduZWRFdGhMaWtlVHJhbnNhY3Rpb24gfCBGdWxseVNpZ25lZFRyYW5zYWN0aW9uO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RFdGhMaWtlQ29pbiBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28pO1xuXG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRpY3NDb2luID0gc3RhdGljc0NvaW47XG4gIH1cblxuICBnZXRDaGFpbigpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4ubmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJhc2UgY2hhaW4gdGhhdCB0aGUgY29pbiBleGlzdHMgb24uXG4gICAqL1xuICBnZXRCYXNlQ2hhaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hhaW4oKTtcbiAgfVxuXG4gIGdldEZhbWlseSgpOiBDb2luRmFtaWx5IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZmFtaWx5O1xuICB9XG5cbiAgZ2V0RnVsbE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLmZ1bGxOYW1lO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMTAsIHRoaXMuX3N0YXRpY3NDb2luLmRlY2ltYWxQbGFjZXMpO1xuICB9XG5cbiAgZ2V0Q2hhaW5JZCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5fc3RhdGljc0NvaW4ubmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspLmNoYWluSWQ7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgaXNFVk0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YWx1ZWxlc3NUcmFuc2ZlckFsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGFkZHJlc3MgaXMgYSB2YWxpZCBldGggYWRkcmVzcy5cbiAgICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghYWRkcmVzcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaXNWYWxpZEV0aEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGV4dGVuZGVkS2V5ID0gYmlwMzIuZnJvbVNlZWQoc2VlZCB8fCByYW5kb21CeXRlcygzMikpO1xuICAgIGNvbnN0IHhwdWIgPSBleHRlbmRlZEtleS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiB4cHViLFxuICAgICAgcHJ2OiBleHRlbmRlZEtleS50b0Jhc2U1OCgpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgYXN5bmMgaXNXYWxsZXRBZGRyZXNzKHBhcmFtczogVmVyaWZ5RXRoQWRkcmVzc09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aHJvdyBuZXcgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IEV0aFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZEV0aExpa2VUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IHRoaXMuZ2V0VHJhbnNhY3Rpb25CdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLmZyb20ocGFyYW1zLnR4UHJlYnVpbGQudHhIZXgpO1xuICAgIHR4QnVpbGRlci50cmFuc2ZlcigpLmtleShuZXcgRXRoS2V5UGFpcih7IHBydjogcGFyYW1zLnBydiB9KS5nZXRLZXlzKCkucHJ2ISk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIGNvbnN0IHJlY2lwaWVudHMgPSB0cmFuc2FjdGlvbi5vdXRwdXRzLm1hcCgob3V0cHV0KSA9PiAoeyBhZGRyZXNzOiBvdXRwdXQuYWRkcmVzcywgYW1vdW50OiBvdXRwdXQudmFsdWUgfSkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGhhbGZTaWduZWQ6IHtcbiAgICAgICAgdHhIZXg6IHRyYW5zYWN0aW9uLnRvQnJvYWRjYXN0Rm9ybWF0KCksXG4gICAgICAgIHJlY2lwaWVudHM6IHJlY2lwaWVudHMsXG4gICAgICAgIGV4cGlyYXRpb246IHBhcmFtcy50eFByZWJ1aWxkLmV4cGlyZVRpbWUsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBpc1ZhbGlkUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IHZhbGlkID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgbmV3IEV0aEtleVBhaXIoeyBwdWIgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIGZ1bmRzIHJlY292ZXJ5IHRyYW5zYWN0aW9uIHdpdGhvdXQgQml0R28uXG4gICAqIFdlIG5lZWQgdG8gZG8gdGhyZWUgcXVlcmllcyBkdXJpbmcgdGhpczpcbiAgICogMSkgTm9kZSBxdWVyeSAtIGhvdyBtdWNoIG1vbmV5IGlzIGluIHRoZSBhY2NvdW50XG4gICAqIDIpIEJ1aWxkIHRyYW5zYWN0aW9uIC0gYnVpbGQgb3VyIHRyYW5zYWN0aW9uIGZvciB0aGUgYW1vdW50XG4gICAqIDMpIFNlbmQgc2lnbmVkIGJ1aWxkIC0gc2VuZCBvdXIgc2lnbmVkIGJ1aWxkIHRvIGEgcHVibGljIG5vZGVcbiAgICogQHBhcmFtIHBhcmFtcyBUaGUgb3B0aW9ucyB3aXRoIHdoaWNoIHRvIHJlY292ZXJcbiAgICovXG4gIGFzeW5jIHJlY292ZXIocGFyYW1zOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhwbGFpbiBhIHRyYW5zYWN0aW9uIGZyb20gdHhIZXhcbiAgICogQHBhcmFtIHBhcmFtcyBUaGUgb3B0aW9ucyB3aXRoIHdoaWNoIHRvIGV4cGxhaW4gdGhlIHRyYW5zYWN0aW9uXG4gICAqL1xuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxUcmFuc2FjdGlvbkV4cGxhbmF0aW9uPiB7XG4gICAgY29uc3QgdHhIZXggPSBwYXJhbXMudHhIZXggfHwgKHBhcmFtcy5oYWxmU2lnbmVkICYmIHBhcmFtcy5oYWxmU2lnbmVkLnR4SGV4KTtcbiAgICBpZiAoIXR4SGV4IHx8ICFwYXJhbXMuZmVlSW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGV4cGxhaW4gdHggcGFyYW1ldGVycycpO1xuICAgIH1cbiAgICBjb25zdCB0eEJ1aWxkZXIgPSB0aGlzLmdldFRyYW5zYWN0aW9uQnVpbGRlcihwYXJhbXMuY29tbW9uKTtcbiAgICB0eEJ1aWxkZXIuZnJvbSh0eEhleCk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCBvdXRwdXRzID0gdHgub3V0cHV0cy5tYXAoKG91dHB1dCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWRkcmVzczogb3V0cHV0LmFkZHJlc3MsXG4gICAgICAgIGFtb3VudDogb3V0cHV0LnZhbHVlLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZUFtb3VudCcsICdvdXRwdXRzJywgJ2NoYW5nZU91dHB1dHMnLCAnZmVlJ107XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgaWQ6IHR4LmlkLFxuICAgICAgb3V0cHV0czogb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogb3V0cHV0c1xuICAgICAgICAucmVkdWNlKChhY2N1bXVsYXRvciwgb3V0cHV0KSA9PiBhY2N1bXVsYXRvci5wbHVzKG91dHB1dC5hbW91bnQpLCBuZXcgQmlnTnVtYmVyKCcwJykpXG4gICAgICAgIC50b0ZpeGVkKDApLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sIC8vIGFjY291bnQgYmFzZWQgZG9lcyBub3QgdXNlIGNoYW5nZSBvdXRwdXRzXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJywgLy8gYWNjb3VudCBiYXNlIGRvZXMgbm90IG1ha2UgY2hhbmdlXG4gICAgICBmZWU6IHBhcmFtcy5mZWVJbmZvLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHRyYW5zYWN0aW9uIGJ1aWxkZXIgZm9yIHRoZSBjdXJyZW50IGNoYWluXG4gICAqIEByZXR1cm4gYSBuZXcgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFRyYW5zYWN0aW9uQnVpbGRlcihjb21tb24/OiBFdGhMaWtlQ29tbW9uLmRlZmF1bHQpOiBUcmFuc2FjdGlvbkJ1aWxkZXI7XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHsgbXVsdGlTaWdUeXBlLCBwdWJsaWNLZXksIHBydiB9OiBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyk6IHZvaWQge1xuICAgIGlmIChtdWx0aVNpZ1R5cGUgPT09ICd0c3MnKSB7XG4gICAgICBhdWRpdEVjZHNhUHJpdmF0ZUtleShwcnYgYXMgc3RyaW5nLCBwdWJsaWNLZXkgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFpc1ZhbGlkUHJ2KHBydikgJiYgIWlzVmFsaWRYcHJ2KHBydikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHByaXZhdGUga2V5Jyk7XG4gICAgICB9XG4gICAgICBpZiAocHVibGljS2V5KSB7XG4gICAgICAgIGNvbnN0IGdlblB1YktleSA9IGJpdGNvaW4uSEROb2RlLmZyb21CYXNlNTgocHJ2KS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCk7XG4gICAgICAgIGlmIChnZW5QdWJLZXkgIT09IHB1YmxpY0tleSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5jb3JyZWN0IHhwdWInKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19