@bitgo/sdk-core 1.1.0-rc.21 → 1.1.0-rc.24

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 (65) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.d.ts +1 -1
  3. package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.js +1 -1
  4. package/dist/src/account-lib/baseCoin/errors.d.ts +1 -1
  5. package/dist/src/account-lib/baseCoin/errors.js +2 -2
  6. package/dist/src/account-lib/index.d.ts +3 -0
  7. package/dist/src/account-lib/index.d.ts.map +1 -1
  8. package/dist/src/account-lib/index.js +19 -1
  9. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  10. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +61 -58
  11. package/dist/src/account-lib/staking/index.d.ts +2 -0
  12. package/dist/src/account-lib/staking/index.d.ts.map +1 -0
  13. package/dist/src/account-lib/staking/index.js +14 -0
  14. package/dist/src/account-lib/staking/utils.d.ts +19 -0
  15. package/dist/src/account-lib/staking/utils.d.ts.map +1 -0
  16. package/dist/src/account-lib/staking/utils.js +98 -0
  17. package/dist/src/account-lib/util/crypto.d.ts +7 -0
  18. package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
  19. package/dist/src/account-lib/util/crypto.js +20 -2
  20. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +1 -1
  21. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  22. package/dist/src/bitgo/baseCoin/baseCoin.js +1 -1
  23. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +51 -0
  24. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  25. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  26. package/dist/src/bitgo/config.d.ts +7 -7
  27. package/dist/src/bitgo/config.d.ts.map +1 -1
  28. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +2 -1
  29. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
  30. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +2 -1
  31. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +9 -18
  32. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  33. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +14 -18
  34. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -1
  35. package/dist/src/bitgo/tss/ecdsa/index.js +1 -1
  36. package/dist/src/bitgo/tss/ecdsa/types.d.ts +0 -2
  37. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
  38. package/dist/src/bitgo/tss/ecdsa/types.js +1 -1
  39. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +28 -0
  40. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -0
  41. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +168 -0
  42. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +3 -0
  43. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -0
  44. package/dist/src/bitgo/utils/tss/ecdsa/index.js +15 -0
  45. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +39 -0
  46. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -0
  47. package/dist/src/bitgo/utils/tss/ecdsa/types.js +3 -0
  48. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +1 -1
  49. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -1
  50. package/dist/src/bitgo/utils/tss/eddsa/index.js +1 -1
  51. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +22 -7
  52. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
  53. package/dist/src/bitgo/utils/tss/eddsa/types.js +1 -1
  54. package/dist/src/bitgo/utils/tss/index.d.ts +2 -1
  55. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
  56. package/dist/src/bitgo/utils/tss/index.js +3 -2
  57. package/dist/src/bitgo/wallet/iWallet.d.ts +1 -1
  58. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  59. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  60. package/dist/src/bitgo/wallet/wallet.js +1 -1
  61. package/dist/src/index.d.ts +1 -0
  62. package/dist/src/index.d.ts.map +1 -1
  63. package/dist/src/index.js +3 -2
  64. package/dist/tsconfig.tsbuildinfo +182 -111
  65. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -3,6 +3,39 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.1.0-rc.24](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@1.1.0-rc.23...@bitgo/sdk-core@1.1.0-rc.24) (2022-07-11)
7
+
8
+ **Note:** Version bump only for package @bitgo/sdk-core
9
+
10
+
11
+
12
+
13
+
14
+ # [1.1.0-rc.23](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@1.1.0-rc.22...@bitgo/sdk-core@1.1.0-rc.23) (2022-07-07)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **sdk-core:** make hex representation consistent ([ba493e9](https://github.com/BitGo/BitGoJS/commit/ba493e9a7d286197790c4d7e878aca83cf61d2fa))
20
+
21
+
22
+ ### Features
23
+
24
+ * **account-lib:** token associate transaction builder for hedera accounts ([417c720](https://github.com/BitGo/BitGoJS/commit/417c7201b55c1fc546d52d5fd4daaf9390a3c480))
25
+ * **sdk-core:** tss ecdsa utility to create keychains ([0a1ab71](https://github.com/BitGo/BitGoJS/commit/0a1ab71ea981fe8bd833f1b25cc3c90e6cb89565))
26
+
27
+
28
+
29
+
30
+
31
+ # [1.1.0-rc.22](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@1.1.0-rc.21...@bitgo/sdk-core@1.1.0-rc.22) (2022-07-05)
32
+
33
+ **Note:** Version bump only for package @bitgo/sdk-core
34
+
35
+
36
+
37
+
38
+
6
39
  # [1.1.0-rc.21](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@1.1.0-rc.20...@bitgo/sdk-core@1.1.0-rc.21) (2022-07-01)
7
40
 
8
41
 
@@ -12,7 +12,7 @@ export declare abstract class BaseTransactionBuilderFactory {
12
12
  */
13
13
  protected constructor(_coinConfig: Readonly<CoinConfig>);
14
14
  /**
15
- * Returns an specific builder to create a wallet initialization transaction
15
+ * Returns a specific builder to create a wallet initialization transaction
16
16
  */
17
17
  abstract getWalletInitializationBuilder(): any;
18
18
  /**
@@ -16,4 +16,4 @@ class BaseTransactionBuilderFactory {
16
16
  }
17
17
  }
18
18
  exports.BaseTransactionBuilderFactory = BaseTransactionBuilderFactory;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvYmFzZUNvaW4vYmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7OztHQUdHO0FBQ0gsTUFBc0IsNkJBQTZCO0lBRWpEOzs7O09BSUc7SUFDSCxZQUFzQixXQUFpQztRQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0NBa0JGO0FBM0JELHNFQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbi8qKlxuICogR2VuZXJpYyB0cmFuc2FjdGlvbiBidWlsZGVyIGZhY3RvcnkgdG8gYmUgZXh0ZW5kZWQgd2l0aCBjb2luIHNwZWNpZmljIGxvZ2ljLlxuICogUHJvdmlkZSBhIHNldCBvZiB0cmFuc2FjdGlvbiBidWlsZGVycyB0byBjcmVhdGUgZWFjaCB0cmFuc2FjdGlvbiB0eXBlLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+O1xuICAvKipcbiAgICogQmFzZSBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIHtDb2luQ29uZmlnfSBfY29pbkNvbmZpZyBCYXNlQ29pbiBmcm9tIHN0YXRpY3MgbGlicmFyeVxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHRoaXMuX2NvaW5Db25maWcgPSBfY29pbkNvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIHNwZWNpZmljIGJ1aWxkZXIgdG8gY3JlYXRlIGEgd2FsbGV0IGluaXRpYWxpemF0aW9uIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzcGVjaWZpYyBidWlsZGVyIHRvIGNyZWF0ZSBhIGZ1bmRzIHRyYW5zZmVyIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBwcm9wZXIgYnVpbGRlciBmb3IgdGhlIGdpdmVuIGVuY29kZWQgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5IHwgc3RyaW5nfSByYXcgLSBFbmNvZGVkIHRyYW5zYWN0aW9uIGluIGhleCBzdHJpbmcgb3IgVWludDhBcnJheSBmb3JtYXRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBmcm9tKHJhdzogVWludDhBcnJheSB8IHN0cmluZyk7XG59XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvYmFzZUNvaW4vYmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7OztHQUdHO0FBQ0gsTUFBc0IsNkJBQTZCO0lBRWpEOzs7O09BSUc7SUFDSCxZQUFzQixXQUFpQztRQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0NBa0JGO0FBM0JELHNFQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbi8qKlxuICogR2VuZXJpYyB0cmFuc2FjdGlvbiBidWlsZGVyIGZhY3RvcnkgdG8gYmUgZXh0ZW5kZWQgd2l0aCBjb2luIHNwZWNpZmljIGxvZ2ljLlxuICogUHJvdmlkZSBhIHNldCBvZiB0cmFuc2FjdGlvbiBidWlsZGVycyB0byBjcmVhdGUgZWFjaCB0cmFuc2FjdGlvbiB0eXBlLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+O1xuICAvKipcbiAgICogQmFzZSBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIHtDb2luQ29uZmlnfSBfY29pbkNvbmZpZyBCYXNlQ29pbiBmcm9tIHN0YXRpY3MgbGlicmFyeVxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHRoaXMuX2NvaW5Db25maWcgPSBfY29pbkNvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3BlY2lmaWMgYnVpbGRlciB0byBjcmVhdGUgYSB3YWxsZXQgaW5pdGlhbGl6YXRpb24gdHJhbnNhY3Rpb25cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcblxuICAvKipcbiAgICogUmV0dXJucyBhIHNwZWNpZmljIGJ1aWxkZXIgdG8gY3JlYXRlIGEgZnVuZHMgdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRUcmFuc2ZlckJ1aWxkZXIoKTtcblxuICAvKipcbiAgICogUmV0dXJucyBhIHByb3BlciBidWlsZGVyIGZvciB0aGUgZ2l2ZW4gZW5jb2RlZCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXkgfCBzdHJpbmd9IHJhdyAtIEVuY29kZWQgdHJhbnNhY3Rpb24gaW4gaGV4IHN0cmluZyBvciBVaW50OEFycmF5IGZvcm1hdFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGZyb20ocmF3OiBVaW50OEFycmF5IHwgc3RyaW5nKTtcbn1cbiJdfQ==
@@ -33,7 +33,7 @@ export declare class InvalidSignatureError extends ExtendableError {
33
33
  constructor(message: string);
34
34
  }
35
35
  /**
36
- * Error for an method that needs to be implemented
36
+ * Error for a method that needs to be implemented
37
37
  */
38
38
  export declare class NotImplementedError extends ExtendableError {
39
39
  constructor(message: string);
@@ -67,7 +67,7 @@ class InvalidSignatureError extends ExtendableError {
67
67
  }
68
68
  exports.InvalidSignatureError = InvalidSignatureError;
69
69
  /**
70
- * Error for an method that needs to be implemented
70
+ * Error for a method that needs to be implemented
71
71
  */
72
72
  class NotImplementedError extends ExtendableError {
73
73
  constructor(message) {
@@ -102,4 +102,4 @@ class UnsupportedTokenError extends ExtendableError {
102
102
  }
103
103
  }
104
104
  exports.UnsupportedTokenError = UnsupportedTokenError;
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL2Jhc2VDb2luL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7O0dBR0c7QUFDSCxNQUFhLGVBQWdCLFNBQVEsS0FBSztJQUN4QyxZQUFZLE9BQU87UUFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsQyxJQUFJLE9BQU8sS0FBSyxDQUFDLGlCQUFpQixLQUFLLFVBQVUsRUFBRTtZQUNqRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNqRDthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDdkM7SUFDSCxDQUFDO0NBQ0Y7QUFWRCwwQ0FVQztBQUVELE1BQWEscUJBQXNCLFNBQVEsZUFBZTtJQUN4RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUpELHNEQUlDO0FBRUQsTUFBYSxZQUFhLFNBQVEsZUFBZTtJQUMvQyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUpELG9DQUlDO0FBRUQsTUFBYSxxQkFBc0IsU0FBUSxlQUFlO0lBQ3hELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBSkQsc0RBSUM7QUFFRCxNQUFhLFVBQVcsU0FBUSxlQUFlO0lBQzdDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBSkQsZ0NBSUM7QUFFRCxNQUFhLHNCQUF1QixTQUFRLGVBQWU7SUFDekQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCx3REFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxlQUFlO0lBQzdELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBSkQsZ0VBSUM7QUFFRDs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsZUFBZTtJQUN4RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUpELHNEQUlDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGVBQWU7SUFDdEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCxrREFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsZUFBZTtJQUMvQyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUpELG9DQUlDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxlQUFlO0lBQzdDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBSkQsZ0NBSUM7QUFFRDs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsZUFBZTtJQUN4RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUpELHNEQUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGJhc2UgY2xhc3MgZW5zdXJlcyB0aGF0IG91ciBzdGFjayB0cmFjZSBpcyBjYXB0dXJlZCBwcm9wZXJseSBidXQgYWxzbyB0aGF0IHdlIGhhdmUgY2xhc3NlcyBvZiBlcnJvcnNcbiAqIHRoYXQgY2FuIGJlIGZvdW5kIGluIGEgc3dpdGNoLlxuICovXG5leHBvcnQgY2xhc3MgRXh0ZW5kYWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIGlmICh0eXBlb2YgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YWNrID0gbmV3IEVycm9yKG1lc3NhZ2UpLnN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFyc2VUcmFuc2FjdGlvbkVycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNpZ25pbmdFcnJvciBleHRlbmRzIEV4dGVuZGFibGVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXRpbHNFcnJvciBleHRlbmRzIEV4dGVuZGFibGVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFeHRlbmRUcmFuc2FjdGlvbkVycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciBmb3IgYW4gaW52YWxpZCB2YWx1ZSBmb3IgYSBjb250cmFjdCBtZXRob2QgcGFyYW1ldGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciBleHRlbmRzIEV4dGVuZGFibGVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbi8qKlxuICogRXJyb3IgcHJvZHVjZWQgYnkgbm90IHRydXRoeSBzaWduYXR1cmUgdmFsdWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkU2lnbmF0dXJlRXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIGZvciBhbiBtZXRob2QgdGhhdCBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZFxuICovXG5leHBvcnQgY2xhc3MgTm90SW1wbGVtZW50ZWRFcnJvciBleHRlbmRzIEV4dGVuZGFibGVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbi8qKlxuICogRXJyb3IgZm9yIG5vdCBzdXBwb3J0ZWQgZmVhdHVyZXNcbiAqL1xuZXhwb3J0IGNsYXNzIE5vdFN1cHBvcnRlZCBleHRlbmRzIEV4dGVuZGFibGVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbi8qKlxuICogRXJyb3IgZm9yIGludmFsaWQgc2VlZCwgcHVibGljLCBvciBwcml2YXRlIGtleXNcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRLZXkgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIGZvciBpbnZhbGlkIG1pbnQvdG9rZW5cbiAqL1xuZXhwb3J0IGNsYXNzIFVuc3VwcG9ydGVkVG9rZW5FcnJvciBleHRlbmRzIEV4dGVuZGFibGVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL2Jhc2VDb2luL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7O0dBR0c7QUFDSCxNQUFhLGVBQWdCLFNBQVEsS0FBSztJQUN4QyxZQUFZLE9BQU87UUFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsQyxJQUFJLE9BQU8sS0FBSyxDQUFDLGlCQUFpQixLQUFLLFVBQVUsRUFBRTtZQUNqRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNqRDthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDdkM7SUFDSCxDQUFDO0NBQ0Y7QUFWRCwwQ0FVQztBQUVELE1BQWEscUJBQXNCLFNBQVEsZUFBZTtJQUN4RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUpELHNEQUlDO0FBRUQsTUFBYSxZQUFhLFNBQVEsZUFBZTtJQUMvQyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUpELG9DQUlDO0FBRUQsTUFBYSxxQkFBc0IsU0FBUSxlQUFlO0lBQ3hELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBSkQsc0RBSUM7QUFFRCxNQUFhLFVBQVcsU0FBUSxlQUFlO0lBQzdDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBSkQsZ0NBSUM7QUFFRCxNQUFhLHNCQUF1QixTQUFRLGVBQWU7SUFDekQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCx3REFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxlQUFlO0lBQzdELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBSkQsZ0VBSUM7QUFFRDs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsZUFBZTtJQUN4RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUpELHNEQUlDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGVBQWU7SUFDdEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCxrREFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsZUFBZTtJQUMvQyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUpELG9DQUlDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxlQUFlO0lBQzdDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBSkQsZ0NBSUM7QUFFRDs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsZUFBZTtJQUN4RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUpELHNEQUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGJhc2UgY2xhc3MgZW5zdXJlcyB0aGF0IG91ciBzdGFjayB0cmFjZSBpcyBjYXB0dXJlZCBwcm9wZXJseSBidXQgYWxzbyB0aGF0IHdlIGhhdmUgY2xhc3NlcyBvZiBlcnJvcnNcbiAqIHRoYXQgY2FuIGJlIGZvdW5kIGluIGEgc3dpdGNoLlxuICovXG5leHBvcnQgY2xhc3MgRXh0ZW5kYWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIGlmICh0eXBlb2YgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YWNrID0gbmV3IEVycm9yKG1lc3NhZ2UpLnN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFyc2VUcmFuc2FjdGlvbkVycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNpZ25pbmdFcnJvciBleHRlbmRzIEV4dGVuZGFibGVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXRpbHNFcnJvciBleHRlbmRzIEV4dGVuZGFibGVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFeHRlbmRUcmFuc2FjdGlvbkVycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciBmb3IgYW4gaW52YWxpZCB2YWx1ZSBmb3IgYSBjb250cmFjdCBtZXRob2QgcGFyYW1ldGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciBleHRlbmRzIEV4dGVuZGFibGVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbi8qKlxuICogRXJyb3IgcHJvZHVjZWQgYnkgbm90IHRydXRoeSBzaWduYXR1cmUgdmFsdWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkU2lnbmF0dXJlRXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIGZvciBhIG1ldGhvZCB0aGF0IG5lZWRzIHRvIGJlIGltcGxlbWVudGVkXG4gKi9cbmV4cG9ydCBjbGFzcyBOb3RJbXBsZW1lbnRlZEVycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciBmb3Igbm90IHN1cHBvcnRlZCBmZWF0dXJlc1xuICovXG5leHBvcnQgY2xhc3MgTm90U3VwcG9ydGVkIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciBmb3IgaW52YWxpZCBzZWVkLCBwdWJsaWMsIG9yIHByaXZhdGUga2V5c1xuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZEtleSBleHRlbmRzIEV4dGVuZGFibGVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbi8qKlxuICogRXJyb3IgZm9yIGludmFsaWQgbWludC90b2tlblxuICovXG5leHBvcnQgY2xhc3MgVW5zdXBwb3J0ZWRUb2tlbkVycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,8 @@
1
1
  export * from './baseCoin';
2
+ export * as accountLibBaseCoin from './baseCoin';
2
3
  export * from './mpc';
3
4
  export * from './util/crypto';
5
+ export * as acountLibCrypto from './util/crypto';
4
6
  export * from './util/ed25519KeyDeriver';
7
+ export * from './staking';
5
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/account-lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/account-lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,OAAO,KAAK,kBAAkB,MAAM,YAAY,CAAC;AACjD,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC;AAE9B,OAAO,KAAK,eAAe,MAAM,eAAe,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,WAAW,CAAC"}
@@ -6,12 +6,30 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
6
6
  if (k2 === undefined) k2 = k;
7
7
  o[k2] = m[k];
8
8
  }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
9
14
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
15
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
16
  };
17
+ var __importStar = (this && this.__importStar) || function (mod) {
18
+ if (mod && mod.__esModule) return mod;
19
+ var result = {};
20
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
21
+ __setModuleDefault(result, mod);
22
+ return result;
23
+ };
12
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.acountLibCrypto = exports.accountLibBaseCoin = void 0;
13
26
  __exportStar(require("./baseCoin"), exports);
27
+ // Deprecated
28
+ exports.accountLibBaseCoin = __importStar(require("./baseCoin"));
14
29
  __exportStar(require("./mpc"), exports);
15
30
  __exportStar(require("./util/crypto"), exports);
31
+ // Deprecated
32
+ exports.acountLibCrypto = __importStar(require("./util/crypto"));
16
33
  __exportStar(require("./util/ed25519KeyDeriver"), exports);
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQTJCO0FBQzNCLHdDQUFzQjtBQUN0QixnREFBOEI7QUFDOUIsMkRBQXlDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYXNlQ29pbic7XG5leHBvcnQgKiBmcm9tICcuL21wYyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWwvY3J5cHRvJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbC9lZDI1NTE5S2V5RGVyaXZlcic7XG4iXX0=
34
+ __exportStar(require("./staking"), exports);
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyQjtBQUMzQixhQUFhO0FBQ2IsaUVBQWlEO0FBQ2pELHdDQUFzQjtBQUN0QixnREFBOEI7QUFDOUIsYUFBYTtBQUNiLGlFQUFpRDtBQUNqRCwyREFBeUM7QUFDekMsNENBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYXNlQ29pbic7XG4vLyBEZXByZWNhdGVkXG5leHBvcnQgKiBhcyBhY2NvdW50TGliQmFzZUNvaW4gZnJvbSAnLi9iYXNlQ29pbic7XG5leHBvcnQgKiBmcm9tICcuL21wYyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWwvY3J5cHRvJztcbi8vIERlcHJlY2F0ZWRcbmV4cG9ydCAqIGFzIGFjb3VudExpYkNyeXB0byBmcm9tICcuL3V0aWwvY3J5cHRvJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbC9lZDI1NTE5S2V5RGVyaXZlcic7XG5leHBvcnQgKiBmcm9tICcuL3N0YWtpbmcnO1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,WAAW,EAGX,SAAS,EACT,aAAa,EACb,WAAW,EAGX,WAAW,EACX,aAAa,EACb,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,WAAW,EAEX,MAAM,EACN,MAAM,EACP,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,MAAM,CAAC,KAAK,EAAE,cAAc,CAAwB;IACpD,MAAM,CAAC,MAAM,EAAE,MAAM,CAA2B;IAChD;;;;;;;OAOG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAyCtF;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW;IAsC1D;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW;IAsCtD;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa;IA6E/C;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa;IAiC/C;;;;;;OAMG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAwBvD;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS;IAmB/C;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO;CAOvD"}
1
+ {"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,WAAW,EAGX,SAAS,EACT,aAAa,EACb,WAAW,EAGX,WAAW,EACX,aAAa,EACb,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,WAAW,EAEX,MAAM,EACN,MAAM,EACP,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,MAAM,CAAC,KAAK,EAAE,cAAc,CAAwB;IACpD,MAAM,CAAC,MAAM,EAAE,MAAM,CAA2B;IAChD;;;;;;;OAOG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAyCtF;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW;IAsC1D;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW;IAsCtD;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa;IA6E/C;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa;IAiC/C;;;;;;OAMG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAwBvD;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS;IAmB/C;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO;CAUvD"}
@@ -54,11 +54,11 @@ class Ecdsa {
54
54
  const uShares = Ecdsa.shamir.split(u, threshold, numShares);
55
55
  const currentParticipant = {
56
56
  i: index,
57
- l: crypto_2.bigIntToHex(privateKey.lambda),
58
- m: crypto_2.bigIntToHex(privateKey.mu),
59
- n: crypto_2.bigIntToHex(publicKey.n),
60
- y: crypto_2.bigIntToHex(y),
61
- u: crypto_2.bigIntToHex(uShares[index]),
57
+ l: privateKey.lambda.toString(16),
58
+ m: privateKey.mu.toString(16),
59
+ n: publicKey.n.toString(16),
60
+ y: y.toString(16),
61
+ u: uShares[index].toString(16),
62
62
  chaincode: chaincode.toString('hex'),
63
63
  };
64
64
  const keyShare = {
@@ -71,9 +71,9 @@ class Ecdsa {
71
71
  keyShare.nShares[participantIndex] = {
72
72
  i: participantIndex,
73
73
  j: currentParticipant['i'],
74
- n: crypto_2.bigIntToHex(publicKey.n),
75
- y: crypto_2.bigIntToHex(y),
76
- u: crypto_2.bigIntToHex(uShares[participantIndex]),
74
+ n: publicKey.n.toString(16),
75
+ y: y.toString(16),
76
+ u: uShares[participantIndex].toString(16),
77
77
  chaincode: chaincode.toString('hex'),
78
78
  };
79
79
  }
@@ -90,9 +90,9 @@ class Ecdsa {
90
90
  keyCombine(pShare, nShares) {
91
91
  const allShares = [pShare, ...nShares];
92
92
  // Compute the public key.
93
- const y = allShares.map((participant) => BigInt(participant['y'])).reduce(Ecdsa.curve.pointAdd);
93
+ const y = allShares.map((participant) => crypto_2.hexToBigInt(participant['y'])).reduce(Ecdsa.curve.pointAdd);
94
94
  // Add secret shares
95
- const x = allShares.map((participant) => BigInt(participant['u'])).reduce(Ecdsa.curve.scalarAdd);
95
+ const x = allShares.map((participant) => crypto_2.hexToBigInt(participant['u'])).reduce(Ecdsa.curve.scalarAdd);
96
96
  // Chaincode will be used in future when we add support for key derivation for ecdsa
97
97
  const chaincodes = [pShare, ...nShares].map(({ chaincode }) => util_1.bigIntFromBufferBE(Buffer.from(chaincode, 'hex')));
98
98
  const chaincode = chaincodes.reduce((acc, chaincode) => (acc + chaincode) % BigInt('0x010000000000000000000000000000000000000000000000000000000000000000') // 2^256
@@ -103,8 +103,8 @@ class Ecdsa {
103
103
  l: pShare.l,
104
104
  m: pShare.m,
105
105
  n: pShare.n,
106
- y: crypto_2.bigIntToHex(y),
107
- x: crypto_2.bigIntToHex(x),
106
+ y: y.toString(16),
107
+ x: x.toString(16),
108
108
  chaincode: util_1.bigIntToBufferBE(chaincode, 32).toString('hex'),
109
109
  },
110
110
  yShares: {},
@@ -127,13 +127,13 @@ class Ecdsa {
127
127
  * and k-share to be distributed to other participant signer
128
128
  */
129
129
  signShare(xShare, yShare) {
130
- const pk = util_1.getPaillierPublicKey(BigInt(xShare.n));
130
+ const pk = util_1.getPaillierPublicKey(crypto_2.hexToBigInt(xShare.n));
131
131
  const k = Ecdsa.curve.scalarRandom();
132
132
  const gamma = Ecdsa.curve.scalarRandom();
133
133
  const d = Ecdsa.curve.scalarMult(Ecdsa.curve.scalarSub(BigInt(yShare.j), BigInt(xShare.i)), BigInt(xShare.i));
134
134
  const w = [
135
135
  Ecdsa.curve.scalarMult(BigInt(yShare.j), BigInt(xShare.i)),
136
- BigInt(xShare['x']),
136
+ crypto_2.hexToBigInt(xShare['x']),
137
137
  Ecdsa.curve.scalarInvert(d),
138
138
  ].reduce(Ecdsa.curve.scalarMult);
139
139
  const signers = {
@@ -143,17 +143,17 @@ class Ecdsa {
143
143
  m: xShare.m,
144
144
  n: xShare.n,
145
145
  y: xShare.y,
146
- k: crypto_2.bigIntToHex(k),
147
- w: crypto_2.bigIntToHex(w),
148
- gamma: crypto_2.bigIntToHex(gamma),
146
+ k: k.toString(16),
147
+ w: w.toString(16),
148
+ gamma: gamma.toString(16),
149
149
  },
150
150
  kShare: {},
151
151
  };
152
152
  signers.kShare = {
153
153
  i: yShare.j,
154
154
  j: xShare.i,
155
- n: crypto_2.bigIntToHex(pk.n),
156
- k: crypto_2.bigIntToHex(pk.encrypt(k)),
155
+ n: pk.n.toString(16),
156
+ k: pk.encrypt(k).toString(16),
157
157
  };
158
158
  return signers;
159
159
  }
@@ -185,37 +185,37 @@ class Ecdsa {
185
185
  throw new Error('Shares from same participant');
186
186
  }
187
187
  if (shareToBeSend['alpha']) {
188
- const pk = util_1.getPaillierPublicKey(BigInt(shareParticipant.n));
189
- const sk = new paillierBigint.PrivateKey(BigInt(shareParticipant.l), BigInt(shareParticipant.m), pk);
190
- const alpha = sk.decrypt(BigInt(shareToBeSend.alpha));
191
- shareParticipant['alpha'] = crypto_2.bigIntToHex(Ecdsa.curve.scalarReduce(alpha));
192
- const mu = sk.decrypt(BigInt(shareToBeSend.mu)); // recheck encrypted number
193
- shareParticipant['mu'] = crypto_2.bigIntToHex(Ecdsa.curve.scalarReduce(mu));
188
+ const pk = util_1.getPaillierPublicKey(crypto_2.hexToBigInt(shareParticipant.n));
189
+ const sk = new paillierBigint.PrivateKey(crypto_2.hexToBigInt(shareParticipant.l), crypto_2.hexToBigInt(shareParticipant.m), pk);
190
+ const alpha = sk.decrypt(crypto_2.hexToBigInt(shareToBeSend.alpha));
191
+ shareParticipant['alpha'] = Ecdsa.curve.scalarReduce(alpha).toString(16);
192
+ const mu = sk.decrypt(crypto_2.hexToBigInt(shareToBeSend.mu)); // recheck encrypted number
193
+ shareParticipant['mu'] = Ecdsa.curve.scalarReduce(mu).toString(16);
194
194
  delete shareParticipant['l'];
195
195
  delete shareParticipant['m'];
196
196
  delete shareToBeSend['alpha'];
197
197
  delete shareToBeSend['mu'];
198
198
  }
199
199
  if (shareToBeSend['k']) {
200
- const n = BigInt(shareToBeSend['n']); // Pallier pub from other signer
200
+ const n = crypto_2.hexToBigInt(shareToBeSend['n']); // Pallier pub from other signer
201
201
  let pk = util_1.getPaillierPublicKey(n);
202
- const k = BigInt(shareToBeSend['k']);
202
+ const k = crypto_2.hexToBigInt(shareToBeSend['k']);
203
203
  const beta0 = Ecdsa.curve.scalarRandom();
204
- shareParticipant.beta = crypto_2.bigIntToHex(Ecdsa.curve.scalarNegate(beta0));
205
- const alpha = pk.addition(pk.multiply(k, BigInt(shareParticipant.gamma)), pk.encrypt(beta0));
206
- shareToBeSend.alpha = crypto_2.bigIntToHex(alpha);
204
+ shareParticipant.beta = Ecdsa.curve.scalarNegate(beta0).toString(16);
205
+ const alpha = pk.addition(pk.multiply(k, crypto_2.hexToBigInt(shareParticipant.gamma)), pk.encrypt(beta0));
206
+ shareToBeSend.alpha = alpha.toString(16);
207
207
  const nu0 = Ecdsa.curve.scalarRandom();
208
- shareParticipant.nu = crypto_2.bigIntToHex(Ecdsa.curve.scalarNegate(nu0));
209
- const mu = pk.addition(pk.multiply(k, BigInt(shareParticipant.w)), pk.encrypt(nu0));
210
- shareToBeSend.mu = crypto_2.bigIntToHex(mu);
208
+ shareParticipant.nu = Ecdsa.curve.scalarNegate(nu0).toString(16);
209
+ const mu = pk.addition(pk.multiply(k, crypto_2.hexToBigInt(shareParticipant.w)), pk.encrypt(nu0));
210
+ shareToBeSend.mu = mu.toString(16);
211
211
  if (shareParticipant['alpha']) {
212
212
  delete shareToBeSend['n'];
213
213
  delete shareToBeSend['k'];
214
214
  }
215
215
  else {
216
- pk = util_1.getPaillierPublicKey(BigInt(shareParticipant.n));
217
- shareToBeSend['n'] = crypto_2.bigIntToHex(pk.n);
218
- shareToBeSend['k'] = crypto_2.bigIntToHex(pk.encrypt(BigInt(shareParticipant.k)));
216
+ pk = util_1.getPaillierPublicKey(crypto_2.hexToBigInt(shareParticipant.n));
217
+ shareToBeSend['n'] = pk.n.toString(16);
218
+ shareToBeSend['k'] = pk.encrypt(crypto_2.hexToBigInt(shareParticipant.k)).toString(16);
219
219
  }
220
220
  }
221
221
  if (!('alpha' in shareToBeSend) && !('k' in shareToBeSend)) {
@@ -244,13 +244,13 @@ class Ecdsa {
244
244
  signCombine(shares) {
245
245
  const gShare = shares.gShares;
246
246
  const S = shares.signIndex;
247
- const gamma = BigInt(gShare.gamma);
248
- const alpha = BigInt(gShare.alpha);
249
- const beta = BigInt(gShare.beta);
250
- const mu = BigInt(gShare.mu);
251
- const nu = BigInt(gShare.nu);
252
- const k = BigInt(gShare.k);
253
- const w = BigInt(gShare.w);
247
+ const gamma = crypto_2.hexToBigInt(gShare.gamma);
248
+ const alpha = crypto_2.hexToBigInt(gShare.alpha);
249
+ const beta = crypto_2.hexToBigInt(gShare.beta);
250
+ const mu = crypto_2.hexToBigInt(gShare.mu);
251
+ const nu = crypto_2.hexToBigInt(gShare.nu);
252
+ const k = crypto_2.hexToBigInt(gShare.k);
253
+ const w = crypto_2.hexToBigInt(gShare.w);
254
254
  const delta = Ecdsa.curve.scalarAdd(Ecdsa.curve.scalarMult(k, gamma), Ecdsa.curve.scalarAdd(alpha, beta));
255
255
  const omicron = Ecdsa.curve.scalarAdd(Ecdsa.curve.scalarMult(k, w), Ecdsa.curve.scalarAdd(mu, nu));
256
256
  const Gamma = Ecdsa.curve.basePointMult(gamma);
@@ -258,16 +258,16 @@ class Ecdsa {
258
258
  oShare: {
259
259
  i: gShare.i,
260
260
  y: gShare.y,
261
- k: crypto_2.bigIntToHex(k),
262
- omicron: crypto_2.bigIntToHex(omicron),
263
- delta: crypto_2.bigIntToHex(delta),
264
- Gamma: crypto_2.bigIntToHex(Gamma),
261
+ k: k.toString(16),
262
+ omicron: omicron.toString(16),
263
+ delta: delta.toString(16),
264
+ Gamma: Gamma.toString(16),
265
265
  },
266
266
  dShare: {
267
267
  i: S.i,
268
268
  j: gShare.i,
269
- delta: crypto_2.bigIntToHex(delta),
270
- Gamma: crypto_2.bigIntToHex(Gamma),
269
+ delta: delta.toString(16),
270
+ Gamma: Gamma.toString(16),
271
271
  },
272
272
  };
273
273
  }
@@ -280,16 +280,16 @@ class Ecdsa {
280
280
  */
281
281
  sign(M, oShare, dShare) {
282
282
  const m = crypto_1.createHash('sha256').update(M).digest();
283
- const delta = Ecdsa.curve.scalarAdd(BigInt(oShare.delta), BigInt(dShare.delta));
284
- const R = Ecdsa.curve.pointMultiply(Ecdsa.curve.pointAdd(BigInt(oShare.Gamma), BigInt(dShare.Gamma)), Ecdsa.curve.scalarInvert(delta));
283
+ const delta = Ecdsa.curve.scalarAdd(crypto_2.hexToBigInt(oShare.delta), crypto_2.hexToBigInt(dShare.delta));
284
+ const R = Ecdsa.curve.pointMultiply(Ecdsa.curve.pointAdd(crypto_2.hexToBigInt(oShare.Gamma), crypto_2.hexToBigInt(dShare.Gamma)), Ecdsa.curve.scalarInvert(delta));
285
285
  const pointR = secp.Point.fromHex(util_1.bigIntToBufferBE(R));
286
286
  const r = pointR.x;
287
- const s = Ecdsa.curve.scalarAdd(Ecdsa.curve.scalarMult(util_1.bigIntFromU8ABE(m), BigInt(oShare.k)), Ecdsa.curve.scalarMult(r, BigInt(oShare.omicron)));
287
+ const s = Ecdsa.curve.scalarAdd(Ecdsa.curve.scalarMult(util_1.bigIntFromU8ABE(m), crypto_2.hexToBigInt(oShare.k)), Ecdsa.curve.scalarMult(r, crypto_2.hexToBigInt(oShare.omicron)));
288
288
  return {
289
289
  i: oShare.i,
290
290
  y: oShare.y,
291
- r: crypto_2.bigIntToHex(r),
292
- s: crypto_2.bigIntToHex(s),
291
+ r: r.toString(16),
292
+ s: s.toString(16),
293
293
  };
294
294
  }
295
295
  /**
@@ -304,13 +304,13 @@ class Ecdsa {
304
304
  if (!isRMatching) {
305
305
  throw new Error('r value should be consistent across all shares');
306
306
  }
307
- let s = shares.map((share) => BigInt(share['s'])).reduce(Ecdsa.curve.scalarAdd);
307
+ let s = shares.map((share) => crypto_2.hexToBigInt(share['s'])).reduce(Ecdsa.curve.scalarAdd);
308
308
  // Normalize s.
309
309
  s = s > Ecdsa.curve.order() / BigInt(2) ? Ecdsa.curve.order() - s : s;
310
310
  return {
311
311
  y: shares[0]['y'],
312
312
  r: r,
313
- s: crypto_2.bigIntToHex(s),
313
+ s: s.toString(16),
314
314
  };
315
315
  }
316
316
  /**
@@ -320,10 +320,13 @@ class Ecdsa {
320
320
  * @returns {boolean} True if signature is valid; False otherwise
321
321
  */
322
322
  verify(message, signature) {
323
- return Ecdsa.curve.verify(crypto_1.createHash('sha256').update(message).digest(), Buffer.concat([util_1.bigIntToBufferBE(BigInt(signature['r']), 32), util_1.bigIntToBufferBE(BigInt(signature['s']), 32)]), BigInt(signature['y']));
323
+ return Ecdsa.curve.verify(crypto_1.createHash('sha256').update(message).digest(), Buffer.concat([
324
+ util_1.bigIntToBufferBE(crypto_2.hexToBigInt(signature['r']), 32),
325
+ util_1.bigIntToBufferBE(crypto_2.hexToBigInt(signature['s']), 32),
326
+ ]), crypto_2.hexToBigInt(signature['y']));
324
327
  }
325
328
  }
326
329
  exports.default = Ecdsa;
327
330
  Ecdsa.curve = new curves_1.Secp256k1Curve();
328
331
  Ecdsa.shamir = new shamir_1.default(Ecdsa.curve);
329
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS9lY2RzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBa0Q7QUFDbEQsdURBQXlDO0FBQ3pDLG1DQUFpRDtBQUNqRCxpREFBbUQ7QUFDbkQscUNBQXlHO0FBQ3pHLHlDQUE4QztBQUM5QywwREFBa0M7QUF5QmxDOztHQUVHO0FBQ0gsTUFBcUIsS0FBSztJQUd4Qjs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFhLEVBQUUsU0FBaUIsRUFBRSxTQUFpQjtRQUNoRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxTQUFTLElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbkYsTUFBTSx5QkFBeUIsQ0FBQztTQUNqQztRQUNELGtEQUFrRDtRQUNsRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLG9CQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsMkNBQTJDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUQsTUFBTSxrQkFBa0IsR0FBVztZQUNqQyxDQUFDLEVBQUUs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QUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhaWxsaWVyQmlnaW50IGZyb20gJ3BhaWxsaWVyLWJpZ2ludCc7XG5pbXBvcnQgKiBhcyBzZWNwIGZyb20gJ0Bub2JsZS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMsIGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgYmlnSW50VG9IZXggfSBmcm9tICcuLi8uLi8uLi91dGlsL2NyeXB0byc7XG5pbXBvcnQgeyBiaWdJbnRGcm9tQnVmZmVyQkUsIGJpZ0ludFRvQnVmZmVyQkUsIGJpZ0ludEZyb21VOEFCRSwgZ2V0UGFpbGxpZXJQdWJsaWNLZXkgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IFNlY3AyNTZrMUN1cnZlIH0gZnJvbSAnLi4vLi4vY3VydmVzJztcbmltcG9ydCBTaGFtaXIgZnJvbSAnLi4vLi4vc2hhbWlyJztcbmltcG9ydCB7XG4gIE5TaGFyZSxcbiAgUFNoYXJlLFxuICBLZXlTaGFyZSxcbiAgS2V5Q29tYmluZWQsXG4gIEJTaGFyZSxcbiAgQVNoYXJlLFxuICBTaWduYXR1cmUsXG4gIFNpZ25Db252ZXJ0UlQsXG4gIFNpZ25Db252ZXJ0LFxuICBHU2hhcmUsXG4gIE1VU2hhcmUsXG4gIFNpZ25Db21iaW5lLFxuICBTaWduQ29tYmluZVJULFxuICBEU2hhcmUsXG4gIE9TaGFyZSxcbiAgU2lnblJULFxuICBTU2hhcmUsXG4gIFNpZ25TaGFyZVJULFxuICBLU2hhcmUsXG4gIFhTaGFyZSxcbiAgWVNoYXJlLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBFQ0RTQSBUU1MgaW1wbGVtZW50YXRpb24gc3VwcG9ydGluZyAyOm4gVGhyZXNob2xkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVjZHNhIHtcbiAgc3RhdGljIGN1cnZlOiBTZWNwMjU2azFDdXJ2ZSA9IG5ldyBTZWNwMjU2azFDdXJ2ZSgpO1xuICBzdGF0aWMgc2hhbWlyOiBTaGFtaXIgPSBuZXcgU2hhbWlyKEVjZHNhLmN1cnZlKTtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIHNoYXJlcyBmb3IgcGFydGljaXBhbnQgYXQgaW5kZXggYW5kIHNwbGl0IGtleXMgYCh0aHJlc2hvbGQsbnVtU2hhcmVzKWAgd2F5cy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IHBhcnRpY2lwYW50IGluZGV4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aHJlc2hvbGQgU2lnbmluZyB0aHJlc2hvbGRcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bVNoYXJlcyAgTnVtYmVyIG9mIHNoYXJlc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxLZXlTaGFyZT59IFJldHVybnMgdGhlIHByaXZhdGUgcC1zaGFyZVxuICAgKiBhbmQgbi1zaGFyZXMgdG8gYmUgZGlzdHJpYnV0ZWQgdG8gcGFydGljaXBhbnRzIGF0IHRoZWlyIGNvcnJlc3BvbmRpbmcgaW5kZXguXG4gICAqL1xuICBhc3luYyBrZXlTaGFyZShpbmRleDogbnVtYmVyLCB0aHJlc2hvbGQ6IG51bWJlciwgbnVtU2hhcmVzOiBudW1iZXIpOiBQcm9taXNlPEtleVNoYXJlPiB7XG4gICAgaWYgKCEoaW5kZXggPiAwICYmIGluZGV4IDw9IG51bVNoYXJlcyAmJiB0aHJlc2hvbGQgPD0gbnVtU2hhcmVzICYmIHRocmVzaG9sZCA9PT0gMikpIHtcbiAgICAgIHRocm93ICdJbnZhbGlkIEtleVNoYXJlIENvbmZpZyc7XG4gICAgfVxuICAgIC8vIEdlbmVyYXRlIGFkZGl0aXZlbHkgaG9tb21vcnBoaWMgZW5jcnlwdGlvbiBrZXkuXG4gICAgY29uc3QgeyBwdWJsaWNLZXksIHByaXZhdGVLZXkgfSA9IGF3YWl0IHBhaWxsaWVyQmlnaW50LmdlbmVyYXRlUmFuZG9tS2V5cygzMDcyLCB0cnVlKTtcbiAgICBjb25zdCB1ID0gRWNkc2EuY3VydmUuc2NhbGFyUmFuZG9tKCk7XG4gICAgY29uc3QgeSA9IEVjZHNhLmN1cnZlLmJhc2VQb2ludE11bHQodSk7XG4gICAgY29uc3QgY2hhaW5jb2RlID0gcmFuZG9tQnl0ZXMoMzIpO1xuICAgIC8vIENvbXB1dGUgc2VjcmV0IHNoYXJlcyBvZiB0aGUgcHJpdmF0ZSBrZXlcbiAgICBjb25zdCB1U2hhcmVzID0gRWNkc2Euc2hhbWlyLnNwbGl0KHUsIHRocmVzaG9sZCwgbnVtU2hhcmVzKTtcbiAgICBjb25zdCBjdXJyZW50UGFydGljaXBhbnQ6IFBTaGFyZSA9IHtcbiAgICAgIGk6IGluZGV4LFxuICAgICAgbDogYmlnSW50VG9IZXgocHJpdmF0ZUtleS5sYW1iZGEpLFxuICAgICAgbTogYmlnSW50VG9IZXgocHJpdmF0ZUtleS5tdSksXG4gICAgICBuOiBiaWdJbnRUb0hleChwdWJsaWNLZXkubiksXG4gICAgICB5OiBiaWdJbnRUb0hleCh5KSxcbiAgICAgIHU6IGJpZ0ludFRvSGV4KHVTaGFyZXNbaW5kZXhdKSxcbiAgICAgIGNoYWluY29kZTogY2hhaW5jb2RlLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIGNvbnN0IGtleVNoYXJlOiBLZXlTaGFyZSA9IHtcbiAgICAgIHBTaGFyZTogY3VycmVudFBhcnRpY2lwYW50LFxuICAgICAgblNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAoY29uc3Qgc2hhcmUgaW4gdVNoYXJlcykge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRJbmRleCA9IHBhcnNlSW50KHNoYXJlLCAxMCk7XG4gICAgICBpZiAocGFydGljaXBhbnRJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgICAga2V5U2hhcmUublNoYXJlc1twYXJ0aWNpcGFudEluZGV4XSA9IHtcbiAgICAgICAgICBpOiBwYXJ0aWNpcGFudEluZGV4LFxuICAgICAgICAgIGo6IGN1cnJlbnRQYXJ0aWNpcGFudFsnaSddLFxuICAgICAgICAgIG46IGJpZ0ludFRvSGV4KHB1YmxpY0tleS5uKSxcbiAgICAgICAgICB5OiBiaWdJbnRUb0hleCh5KSxcbiAgICAgICAgICB1OiBiaWdJbnRUb0hleCh1U2hhcmVzW3BhcnRpY2lwYW50SW5kZXhdKSxcbiAgICAgICAgICBjaGFpbmNvZGU6IGNoYWluY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIH0gYXMgTlNoYXJlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5U2hhcmU7XG4gIH1cblxuICAvKipcbiAgICogQ29tYmluZSBkYXRhIHNoYXJlZCBkdXJpbmcgdGhlIGtleSBnZW5lcmF0aW9uIHByb3RvY29sLlxuICAgKiBAcGFyYW0ge0tleVNoYXJlfSBwYXJ0aWNpcGFudFNoYXJlcyBwcml2YXRlIHAtc2hhcmUgYW5kXG4gICAqIG4tc2hhcmVzIHJlY2VpdmVkIGZyb20gYWxsIG90aGVyIHBhcnRpY2lwYW50cy5cbiAgICogQHJldHVybnMge0tleUNvbWJpbmVkfSBSZXR1cm5zIHRoZSBwYXJ0aWNpcGFudCBwcml2YXRlIHgtc2hhcmVcbiAgICogYW5kIHktc2hhcmVzIHRvIGJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHNpZ25pbmcgc2hhcmVzLlxuICAgKi9cbiAga2V5Q29tYmluZShwU2hhcmU6IFBTaGFyZSwgblNoYXJlczogTlNoYXJlW10pOiBLZXlDb21iaW5lZCB7XG4gICAgY29uc3QgYWxsU2hhcmVzID0gW3BTaGFyZSwgLi4ublNoYXJlc107XG4gICAgLy8gQ29tcHV0ZSB0aGUgcHVibGljIGtleS5cbiAgICBjb25zdCB5ID0gYWxsU2hhcmVzLm1hcCgocGFydGljaXBhbnQpID0+IEJpZ0ludChwYXJ0aWNpcGFudFsneSddKSkucmVkdWNlKEVjZHNhLmN1cnZlLnBvaW50QWRkKTtcbiAgICAvLyBBZGQgc2VjcmV0IHNoYXJlc1xuICAgIGNvbnN0IHggPSBhbGxTaGFyZXMubWFwKChwYXJ0aWNpcGFudCkgPT4gQmlnSW50KHBhcnRpY2lwYW50Wyd1J10pKS5yZWR1Y2UoRWNkc2EuY3VydmUuc2NhbGFyQWRkKTtcblxuICAgIC8vIENoYWluY29kZSB3aWxsIGJlIHVzZWQgaW4gZnV0dXJlIHdoZW4gd2UgYWRkIHN1cHBvcnQgZm9yIGtleSBkZXJpdmF0aW9uIGZvciBlY2RzYVxuICAgIGNvbnN0IGNoYWluY29kZXMgPSBbcFNoYXJlLCAuLi5uU2hhcmVzXS5tYXAoKHsgY2hhaW5jb2RlIH0pID0+IGJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShjaGFpbmNvZGUsICdoZXgnKSkpO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IGNoYWluY29kZXMucmVkdWNlKFxuICAgICAgKGFjYywgY2hhaW5jb2RlKSA9PlxuICAgICAgICAoYWNjICsgY2hhaW5jb2RlKSAlIEJpZ0ludCgnMHgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKSAvLyAyXjI1NlxuICAgICk7XG5cbiAgICBjb25zdCBwYXJ0aWNpcGFudHM6IEtleUNvbWJpbmVkID0ge1xuICAgICAgeFNoYXJlOiB7XG4gICAgICAgIGk6IHBTaGFyZS5pLFxuICAgICAgICBsOiBwU2hhcmUubCxcbiAgICAgICAgbTogcFNoYXJlLm0sXG4gICAgICAgIG46IHBTaGFyZS5uLFxuICAgICAgICB5OiBiaWdJbnRUb0hleCh5KSxcbiAgICAgICAgeDogYmlnSW50VG9IZXgoeCksXG4gICAgICAgIGNoYWluY29kZTogYmlnSW50VG9CdWZmZXJCRShjaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9LFxuICAgICAgeVNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAoY29uc3Qgc2hhcmUgaW4gblNoYXJlcykge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRJbmRleCA9IG5TaGFyZXNbc2hhcmVdWydqJ107XG4gICAgICBwYXJ0aWNpcGFudHMueVNoYXJlc1twYXJ0aWNpcGFudEluZGV4XSA9IHtcbiAgICAgICAgaTogcFNoYXJlLmksXG4gICAgICAgIGo6IG5TaGFyZXNbc2hhcmVdWydqJ10sXG4gICAgICAgIG46IG5TaGFyZXNbc2hhcmVdWyduJ10sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcGFydGljaXBhbnRzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBzaWduaW5nIHNoYXJlcy5cbiAgICogQHBhcmFtIHt4U2hhcmV9IHhTaGFyZSBQcml2YXRlIHhTaGFyZSBvZiBjdXJyZW50IHBhcnRpY2lwYW50IHNpZ25lclxuICAgKiBAcGFyYW0ge1lTaGFyZX0geVNoYXJlIHlTaGFyZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBvdGhlciBwYXJ0aWNpcGFudCBzaWduZXJcbiAgICogQHJldHVybnMge1NpZ25TaGFyZVJUfSBSZXR1cm5zIHRoZSBwYXJ0aWNpcGFudCBwcml2YXRlIHctc2hhcmVcbiAgICogYW5kIGstc2hhcmUgdG8gYmUgZGlzdHJpYnV0ZWQgdG8gb3RoZXIgcGFydGljaXBhbnQgc2lnbmVyXG4gICAqL1xuICBzaWduU2hhcmUoeFNoYXJlOiBYU2hhcmUsIHlTaGFyZTogWVNoYXJlKTogU2lnblNoYXJlUlQge1xuICAgIGNvbnN0IHBrID0gZ2V0UGFpbGxpZXJQdWJsaWNLZXkoQmlnSW50KHhTaGFyZS5uKSk7XG5cbiAgICBjb25zdCBrID0gRWNkc2EuY3VydmUuc2NhbGFyUmFuZG9tKCk7XG4gICAgY29uc3QgZ2FtbWEgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJSYW5kb20oKTtcblxuICAgIGNvbnN0IGQgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KEVjZHNhLmN1cnZlLnNjYWxhclN1YihCaWdJbnQoeVNoYXJlLmopLCBCaWdJbnQoeFNoYXJlLmkpKSwgQmlnSW50KHhTaGFyZS5pKSk7XG5cbiAgICBjb25zdCB3ID0gW1xuICAgICAgRWNkc2EuY3VydmUuc2NhbGFyTXVsdChCaWdJbnQoeVNoYXJlLmopLCBCaWdJbnQoeFNoYXJlLmkpKSxcbiAgICAgIEJpZ0ludCh4U2hhcmVbJ3gnXSksXG4gICAgICBFY2RzYS5jdXJ2ZS5zY2FsYXJJbnZlcnQoZCksXG4gICAgXS5yZWR1Y2UoRWNkc2EuY3VydmUuc2NhbGFyTXVsdCk7XG5cbiAgICBjb25zdCBzaWduZXJzOiBTaWduU2hhcmVSVCA9IHtcbiAgICAgIHdTaGFyZToge1xuICAgICAgICBpOiB4U2hhcmUuaSxcbiAgICAgICAgbDogeFNoYXJlLmwsXG4gICAgICAgIG06IHhTaGFyZS5tLFxuICAgICAgICBuOiB4U2hhcmUubixcbiAgICAgICAgeTogeFNoYXJlLnksXG4gICAgICAgIGs6IGJpZ0ludFRvSGV4KGspLFxuICAgICAgICB3OiBiaWdJbnRUb0hleCh3KSxcbiAgICAgICAgZ2FtbWE6IGJpZ0ludFRvSGV4KGdhbW1hKSxcbiAgICAgIH0sXG4gICAgICBrU2hhcmU6IHt9IGFzIEtTaGFyZSxcbiAgICB9O1xuXG4gICAgc2lnbmVycy5rU2hhcmUgPSB7XG4gICAgICBpOiB5U2hhcmUuaixcbiAgICAgIGo6IHhTaGFyZS5pLFxuICAgICAgbjogYmlnSW50VG9IZXgocGsubiksXG4gICAgICBrOiBiaWdJbnRUb0hleChway5lbmNyeXB0KGspKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHNpZ25lcnM7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBtdWx0aXBsaWNpdGl2ZS10by1hZGRpdGl2ZSAoTXRBKSBzaGFyZSBjb252ZXJzaW9uIHdpdGggYW5vdGhlclxuICAgKiBzaWduZXIuXG4gICAqIEBwYXJhbSB7U2lnbkNvbnZlcnR9XG4gICAqIEByZXR1cm5zIHtTaWduQ29udmVydFJUfVxuICAgKi9cbiAgc2lnbkNvbnZlcnQoc2hhcmVzOiBTaWduQ29udmVydCk6IFNpZ25Db252ZXJ0UlQge1xuICAgIGxldCBzaGFyZVBhcnRpY2lwYW50OiBCU2hhcmUgfCBHU2hhcmUsIHNoYXJlVG9CZVNlbmQ6IEFTaGFyZSB8IE1VU2hhcmU7XG4gICAgbGV0IGlzR2FtbWFTaGFyZSA9IGZhbHNlO1xuICAgIGlmIChzaGFyZXMueFNoYXJlICYmIHNoYXJlcy55U2hhcmUgJiYgc2hhcmVzLmtTaGFyZSkge1xuICAgICAgY29uc3QgeFNoYXJlID0gc2hhcmVzLnhTaGFyZTsgLy8gY3VycmVudFBhcnRpY2lwYW50IHNlY3JldCB4U2hhcmVcbiAgICAgIGNvbnN0IHlTaGFyZSA9IHNoYXJlcy55U2hhcmU7XG4gICAgICBjb25zdCBzaWduU2hhcmUgPSB0aGlzLnNpZ25TaGFyZSh4U2hhcmUsIHlTaGFyZSk7XG4gICAgICBzaGFyZVRvQmVTZW5kID0geyAuLi5zaGFyZXMua1NoYXJlLCBhbHBoYTogJycsIG11OiAnJyB9IGFzIEFTaGFyZTtcbiAgICAgIHNoYXJlUGFydGljaXBhbnQgPSB7IC4uLnNpZ25TaGFyZS53U2hhcmUsIGJldGE6ICcnLCBudTogJycgfSBhcyBCU2hhcmU7XG4gICAgfSBlbHNlIGlmICgoc2hhcmVzLmJTaGFyZSAmJiBzaGFyZXMubXVTaGFyZSkgfHwgKHNoYXJlcy5hU2hhcmUgJiYgc2hhcmVzLndTaGFyZSkpIHtcbiAgICAgIGlzR2FtbWFTaGFyZSA9IHRydWU7XG4gICAgICBzaGFyZVRvQmVTZW5kID0gc2hhcmVzLmFTaGFyZSA/ICh7IC4uLnNoYXJlcy5hU2hhcmUgfSBhcyBNVVNoYXJlKSA6ICh7IC4uLnNoYXJlcy5tdVNoYXJlIH0gYXMgTVVTaGFyZSk7XG4gICAgICBzaGFyZVBhcnRpY2lwYW50ID0gc2hhcmVzLndTaGFyZSA/ICh7IC4uLnNoYXJlcy53U2hhcmUgfSBhcyBHU2hhcmUpIDogKHsgLi4uc2hhcmVzLmJTaGFyZSB9IGFzIEdTaGFyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb25maWcgZm9yIFNpZ24gQ29udmVydCcpO1xuICAgIH1cbiAgICBpZiAoc2hhcmVQYXJ0aWNpcGFudC5pICE9PSBzaGFyZVRvQmVTZW5kLmkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2hhcmVzIGZyb20gc2FtZSBwYXJ0aWNpcGFudCcpO1xuICAgIH1cbiAgICBpZiAoc2hhcmVUb0JlU2VuZFsnYWxwaGEnXSkge1xuICAgICAgY29uc3QgcGsgPSBnZXRQYWlsbGllclB1YmxpY0tleShCaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5uKSk7XG4gICAgICBjb25zdCBzayA9IG5ldyBwYWlsbGllckJpZ2ludC5Qcml2YXRlS2V5KFxuICAgICAgICBCaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5sIGFzIHN0cmluZyksXG4gICAgICAgIEJpZ0ludChzaGFyZVBhcnRpY2lwYW50Lm0gYXMgc3RyaW5nKSxcbiAgICAgICAgcGtcbiAgICAgICk7XG4gICAgICBjb25zdCBhbHBoYSA9IHNrLmRlY3J5cHQoQmlnSW50KHNoYXJlVG9CZVNlbmQuYWxwaGEpKTtcbiAgICAgIHNoYXJlUGFydGljaXBhbnRbJ2FscGhhJ10gPSBiaWdJbnRUb0hleChFY2RzYS5jdXJ2ZS5zY2FsYXJSZWR1Y2UoYWxwaGEpKTtcbiAgICAgIGNvbnN0IG11ID0gc2suZGVjcnlwdChCaWdJbnQoc2hhcmVUb0JlU2VuZC5tdSBhcyBzdHJpbmcpKTsgLy8gcmVjaGVjayBlbmNyeXB0ZWQgbnVtYmVyXG4gICAgICBzaGFyZVBhcnRpY2lwYW50WydtdSddID0gYmlnSW50VG9IZXgoRWNkc2EuY3VydmUuc2NhbGFyUmVkdWNlKG11KSk7XG4gICAgICBkZWxldGUgc2hhcmVQYXJ0aWNpcGFudFsnbCddO1xuICAgICAgZGVsZXRlIHNoYXJlUGFydGljaXBhbnRbJ20nXTtcbiAgICAgIGRlbGV0ZSBzaGFyZVRvQmVTZW5kWydhbHBoYSddO1xuICAgICAgZGVsZXRlIHNoYXJlVG9CZVNlbmRbJ211J107XG4gICAgfVxuICAgIGlmIChzaGFyZVRvQmVTZW5kWydrJ10pIHtcbiAgICAgIGNvbnN0IG4gPSBCaWdJbnQoc2hhcmVUb0JlU2VuZFsnbiddKTsgLy8gUGFsbGllciBwdWIgZnJvbSBvdGhlciBzaWduZXJcbiAgICAgIGxldCBwayA9IGdldFBhaWxsaWVyUHVibGljS2V5KG4pO1xuICAgICAgY29uc3QgayA9IEJpZ0ludChzaGFyZVRvQmVTZW5kWydrJ10pO1xuXG4gICAgICBjb25zdCBiZXRhMCA9IEVjZHNhLmN1cnZlLnNjYWxhclJhbmRvbSgpO1xuICAgICAgc2hhcmVQYXJ0aWNpcGFudC5iZXRhID0gYmlnSW50VG9IZXgoRWNkc2EuY3VydmUuc2NhbGFyTmVnYXRlKGJldGEwKSk7XG4gICAgICBjb25zdCBhbHBoYSA9IHBrLmFkZGl0aW9uKHBrLm11bHRpcGx5KGssIEJpZ0ludChzaGFyZVBhcnRpY2lwYW50LmdhbW1hKSksIHBrLmVuY3J5cHQoYmV0YTApKTtcbiAgICAgIHNoYXJlVG9CZVNlbmQuYWxwaGEgPSBiaWdJbnRUb0hleChhbHBoYSk7XG5cbiAgICAgIGNvbnN0IG51MCA9IEVjZHNhLmN1cnZlLnNjYWxhclJhbmRvbSgpO1xuICAgICAgc2hhcmVQYXJ0aWNpcGFudC5udSA9IGJpZ0ludFRvSGV4KEVjZHNhLmN1cnZlLnNjYWxhck5lZ2F0ZShudTApKTtcbiAgICAgIGNvbnN0IG11ID0gcGsuYWRkaXRpb24ocGsubXVsdGlwbHkoaywgQmlnSW50KHNoYXJlUGFydGljaXBhbnQudykpLCBway5lbmNyeXB0KG51MCkpO1xuICAgICAgc2hhcmVUb0JlU2VuZC5tdSA9IGJpZ0ludFRvSGV4KG11KTtcbiAgICAgIGlmIChzaGFyZVBhcnRpY2lwYW50WydhbHBoYSddKSB7XG4gICAgICAgIGRlbGV0ZSBzaGFyZVRvQmVTZW5kWyduJ107XG4gICAgICAgIGRlbGV0ZSBzaGFyZVRvQmVTZW5kWydrJ107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwayA9IGdldFBhaWxsaWVyUHVibGljS2V5KEJpZ0ludChzaGFyZVBhcnRpY2lwYW50Lm4pKTtcbiAgICAgICAgc2hhcmVUb0JlU2VuZFsnbiddID0gYmlnSW50VG9IZXgocGsubik7XG4gICAgICAgIHNoYXJlVG9CZVNlbmRbJ2snXSA9IGJpZ0ludFRvSGV4KHBrLmVuY3J5cHQoQmlnSW50KHNoYXJlUGFydGljaXBhbnQuaykpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCEoJ2FscGhhJyBpbiBzaGFyZVRvQmVTZW5kKSAmJiAhKCdrJyBpbiBzaGFyZVRvQmVTZW5kKSkge1xuICAgICAgc2hhcmVUb0JlU2VuZCA9IHtcbiAgICAgICAgaTogc2hhcmVUb0JlU2VuZFsnaSddLFxuICAgICAgICBqOiBzaGFyZVRvQmVTZW5kWydqJ10sXG4gICAgICB9O1xuICAgIH1cbiAgICBbc2hhcmVUb0JlU2VuZFsnaSddLCBzaGFyZVRvQmVTZW5kWydqJ11dID0gW3NoYXJlVG9CZVNlbmRbJ2onXSwgc2hhcmVUb0JlU2VuZFsnaSddXTtcbiAgICBpZiAoaXNHYW1tYVNoYXJlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtdVNoYXJlOiBzaGFyZVRvQmVTZW5kIGFzIE1VU2hhcmUsXG4gICAgICAgIGdTaGFyZTogc2hhcmVQYXJ0aWNpcGFudCBhcyBHU2hhcmUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgYVNoYXJlOiBzaGFyZVRvQmVTZW5kLFxuICAgICAgYlNoYXJlOiBzaGFyZVBhcnRpY2lwYW50IGFzIEJTaGFyZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbWJpbmUgZ2FtbWEgc2hhcmVzIHRvIGdldCB0aGUgcHJpdmF0ZSBvbWljcm9uIC8gZGVsdGEgc2hhcmVzXG4gICAqIEBwYXJhbSB7U2lnbkNvbWJpbmV9IHNoYXJlc1xuICAgKiBAcmV0dXJucyB7U2lnbkNvbWJpbmVSVH1cbiAgICovXG4gIHNpZ25Db21iaW5lKHNoYXJlczogU2lnbkNvbWJpbmUpOiBTaWduQ29tYmluZVJUIHtcbiAgICBjb25zdCBnU2hhcmUgPSBzaGFyZXMuZ1NoYXJlcztcbiAgICBjb25zdCBTID0gc2hhcmVzLnNpZ25JbmRleDtcbiAgICBjb25zdCBnYW1tYSA9IEJpZ0ludChnU2hhcmUuZ2FtbWEpO1xuICAgIGNvbnN0IGFscGhhID0gQmlnSW50KGdTaGFyZS5hbHBoYSk7XG4gICAgY29uc3QgYmV0YSA9IEJpZ0ludChnU2hhcmUuYmV0YSk7XG4gICAgY29uc3QgbXUgPSBCaWdJbnQoZ1NoYXJlLm11KTtcbiAgICBjb25zdCBudSA9IEJpZ0ludChnU2hhcmUubnUpO1xuICAgIGNvbnN0IGsgPSBCaWdJbnQoZ1NoYXJlLmspO1xuICAgIGNvbnN0IHcgPSBCaWdJbnQoZ1NoYXJlLncpO1xuXG4gICAgY29uc3QgZGVsdGEgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQoRWNkc2EuY3VydmUuc2NhbGFyTXVsdChrLCBnYW1tYSksIEVjZHNhLmN1cnZlLnNjYWxhckFkZChhbHBoYSwgYmV0YSkpO1xuICAgIGNvbnN0IG9taWNyb24gPSBFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQoRWNkc2EuY3VydmUuc2NhbGFyTXVsdChrLCB3KSwgRWNkc2EuY3VydmUuc2NhbGFyQWRkKG11LCBudSkpO1xuICAgIGNvbnN0IEdhbW1hID0gRWNkc2EuY3VydmUuYmFzZVBvaW50TXVsdChnYW1tYSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb1NoYXJlOiB7XG4gICAgICAgIGk6IGdTaGFyZS5pLFxuICAgICAgICB5OiBnU2hhcmUueSxcbiAgICAgICAgazogYmlnSW50VG9IZXgoayksXG4gICAgICAgIG9taWNyb246IGJpZ0ludFRvSGV4KG9taWNyb24pLFxuICAgICAgICBkZWx0YTogYmlnSW50VG9IZXgoZGVsdGEpLFxuICAgICAgICBHYW1tYTogYmlnSW50VG9IZXgoR2FtbWEpLFxuICAgICAgfSxcbiAgICAgIGRTaGFyZToge1xuICAgICAgICBpOiBTLmksXG4gICAgICAgIGo6IGdTaGFyZS5pLFxuICAgICAgICBkZWx0YTogYmlnSW50VG9IZXgoZGVsdGEpLFxuICAgICAgICBHYW1tYTogYmlnSW50VG9IZXgoR2FtbWEpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gYSBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gTSBNZXNzYWdlIHRvIGJlIHNpZ25lZFxuICAgKiBAcGFyYW0ge09TaGFyZX0gb1NoYXJlIHByaXZhdGUgb21pY3JvbiBzaGFyZSBvZiBjdXJyZW50IHBhcnRpY2lwYW50XG4gICAqIEBwYXJhbSB7RFNoYXJlfSBkU2hhcmUgZGVsdGEgc2hhcmUgcmVjZWl2ZWQgZnJvbSB0aGUgb3RoZXIgcGFydGljaXBhbnRcbiAgICogQHJldHVybnMge1NpZ25SVH1cbiAgICovXG4gIHNpZ24oTTogQnVmZmVyLCBvU2hhcmU6IE9TaGFyZSwgZFNoYXJlOiBEU2hhcmUpOiBTaWduUlQge1xuICAgIGNvbnN0IG0gPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoTSkuZGlnZXN0KCk7XG5cbiAgICBjb25zdCBkZWx0YSA9IEVjZHNhLmN1cnZlLnNjYWxhckFkZChCaWdJbnQob1NoYXJlLmRlbHRhKSwgQmlnSW50KGRTaGFyZS5kZWx0YSkpO1xuXG4gICAgY29uc3QgUiA9IEVjZHNhLmN1cnZlLnBvaW50TXVsdGlwbHkoXG4gICAgICBFY2RzYS5jdXJ2ZS5wb2ludEFkZChCaWdJbnQob1NoYXJlLkdhbW1hKSwgQmlnSW50KGRTaGFyZS5HYW1tYSkpLFxuICAgICAgRWNkc2EuY3VydmUuc2NhbGFySW52ZXJ0KGRlbHRhKVxuICAgICk7XG4gICAgY29uc3QgcG9pbnRSID0gc2VjcC5Qb2ludC5mcm9tSGV4KGJpZ0ludFRvQnVmZmVyQkUoUikpO1xuICAgIGNvbnN0IHIgPSBwb2ludFIueDtcblxuICAgIGNvbnN0IHMgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQoXG4gICAgICBFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KGJpZ0ludEZyb21VOEFCRShtKSwgQmlnSW50KG9TaGFyZS5rKSksXG4gICAgICBFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KHIsIEJpZ0ludChvU2hhcmUub21pY3JvbikpXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgaTogb1NoYXJlLmksXG4gICAgICB5OiBvU2hhcmUueSxcbiAgICAgIHI6IGJpZ0ludFRvSGV4KHIpLFxuICAgICAgczogYmlnSW50VG9IZXgocyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgZnVsbCBzaWduYXR1cmUgYnkgY29tYmluaW5nIFNpZ24gU2hhcmVzXG4gICAqIEBwYXJhbSB7U1NoYXJlW119IHNoYXJlc1xuICAgKiBAcmV0dXJucyB7U2lnbmF0dXJlfVxuICAgKi9cbiAgY29uc3RydWN0U2lnbmF0dXJlKHNoYXJlczogU1NoYXJlW10pOiBTaWduYXR1cmUge1xuICAgIC8vIEV2ZXJ5IHIgbXVzdCBtYXRjaC5cbiAgICBjb25zdCByID0gc2hhcmVzWzBdWydyJ107XG4gICAgY29uc3QgaXNSTWF0Y2hpbmcgPSBzaGFyZXMubWFwKChzaGFyZSkgPT4gc2hhcmVbJ3InXSA9PT0gcikucmVkdWNlKChhLCBiKSA9PiBhICYmIGIpO1xuICAgIGlmICghaXNSTWF0Y2hpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignciB2YWx1ZSBzaG91bGQgYmUgY29uc2lzdGVudCBhY3Jvc3MgYWxsIHNoYXJlcycpO1xuICAgIH1cblxuICAgIGxldCBzID0gc2hhcmVzLm1hcCgoc2hhcmUpID0+IEJpZ0ludChzaGFyZVsncyddKSkucmVkdWNlKEVjZHNhLmN1cnZlLnNjYWxhckFkZCk7XG5cbiAgICAvLyBOb3JtYWxpemUgcy5cbiAgICBzID0gcyA+IEVjZHNhLmN1cnZlLm9yZGVyKCkgLyBCaWdJbnQoMikgPyBFY2RzYS5jdXJ2ZS5vcmRlcigpIC0gcyA6IHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHk6IHNoYXJlc1swXVsneSddLFxuICAgICAgcjogcixcbiAgICAgIHM6IGJpZ0ludFRvSGV4KHMpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IGVjZHNhIHNpZ25hdHVyZXNcbiAgICogQHBhcmFtIHtCdWZmZXJ9IG1lc3NhZ2VcbiAgICogQHBhcmFtIHtTaWduYXR1cmUgfSBzaWduYXR1cmVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgc2lnbmF0dXJlIGlzIHZhbGlkOyBGYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHZlcmlmeShtZXNzYWdlOiBCdWZmZXIsIHNpZ25hdHVyZTogU2lnbmF0dXJlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEVjZHNhLmN1cnZlLnZlcmlmeShcbiAgICAgIGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShtZXNzYWdlKS5kaWdlc3QoKSxcbiAgICAgIEJ1ZmZlci5jb25jYXQoW2JpZ0ludFRvQnVmZmVyQkUoQmlnSW50KHNpZ25hdHVyZVsnciddKSwgMzIpLCBiaWdJbnRUb0J1ZmZlckJFKEJpZ0ludChzaWduYXR1cmVbJ3MnXSksIDMyKV0pLFxuICAgICAgQmlnSW50KHNpZ25hdHVyZVsneSddKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS9lY2RzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBa0Q7QUFDbEQsdURBQXlDO0FBQ3pDLG1DQUFpRDtBQUNqRCxpREFBbUQ7QUFDbkQscUNBQXlHO0FBQ3pHLHlDQUE4QztBQUM5QywwREFBa0M7QUF5QmxDOztHQUVHO0FBQ0gsTUFBcUIsS0FBSztJQUd4Qjs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFhLEVBQUUsU0FBaUIsRUFBRSxTQUFpQjtRQUNoRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxTQUFTLElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbkYsTUFBTSx5QkFBeUIsQ0FBQztTQUNqQztRQUNELGtEQUFrRDtRQUNsRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLG9CQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsMkNBQTJDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUQsTUFBTSxrQkFBa0IsR0FBVztZQUNqQyxDQUFDLEVBQUUsS0FBSztZQUNSLENBQUMsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDakMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM3QixDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzNCLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNqQixDQUFDLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDOUIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1NBQ3JDLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBYTtZQUN6QixNQUFNLEVBQUUsa0JBQWtCO1lBQzFCLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztRQUVGLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFO1lBQzNCLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxJQUFJLGdCQUFnQixLQUFLLEtBQUssRUFBRTtnQkFDOUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHO29CQUNuQyxDQUFDLEVBQUUsZ0JBQWdCO29CQUNuQixDQUFDLEVBQUUsa0JBQWtCLENBQUMsR0FBRyxDQUFDO29CQUMxQixDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUMzQixDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQ2pCLENBQUMsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUN6QyxTQUFTLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7aUJBQzNCLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFVBQVUsQ0FBQyxNQUFjLEVBQUUsT0FBaUI7UUFDMUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUN2QywwQkFBMEI7UUFDMUIsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsb0JBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JHLG9CQUFvQjtRQUNwQixNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxvQkFBVyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEcsb0ZBQW9GO1FBQ3BGLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMseUJBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xILE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQ2pDLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQ2pCLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDLFFBQVE7U0FDOUcsQ0FBQztRQUVGLE1BQU0sWUFBWSxHQUFnQjtZQUNoQyxNQUFNLEVBQUU7Z0JBQ04sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNYLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDWCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ1gsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNYLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDakIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNqQixTQUFTLEVBQUUsdUJBQWdCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDM0Q7WUFDRCxPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7UUFFRixLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRTtZQUMzQixNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QyxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEdBQUc7Z0JBQ3ZDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDWCxDQUFDLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDdEIsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7YUFDdkIsQ0FBQztTQUNIO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxNQUFjLEVBQUUsTUFBYztRQUN0QyxNQUFNLEVBQUUsR0FBRywyQkFBb0IsQ0FBQyxvQkFBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZELE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV6QyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUcsTUFBTSxDQUFDLEdBQUc7WUFDUixLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUQsb0JBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1NBQzVCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFakMsTUFBTSxPQUFPLEdBQWdCO1lBQzNCLE1BQU0sRUFBRTtnQkFDTixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ1gsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNYLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDWCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ1gsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNYLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDakIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNqQixLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7YUFDMUI7WUFDRCxNQUFNLEVBQUUsRUFBWTtTQUNyQixDQUFDO1FBRUYsT0FBTyxDQUFDLE1BQU0sR0FBRztZQUNmLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNYLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNYLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDcEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztTQUM5QixDQUFDO1FBRUYsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLE1BQW1CO1FBQzdCLElBQUksZ0JBQWlDLEVBQUUsYUFBK0IsQ0FBQztRQUN2RSxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNuRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsbUNBQW1DO1lBQ2pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDakQsYUFBYSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBWSxDQUFDO1lBQ2xFLGdCQUFnQixHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBWSxDQUFDO1NBQ3hFO2FBQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEYsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNwQixhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQWMsQ0FBQyxDQUFDLENBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQWMsQ0FBQztZQUN2RyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBYSxDQUFDLENBQUMsQ0FBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBYSxDQUFDO1NBQ3hHO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7U0FDcEQ7UUFDRCxJQUFJLGdCQUFnQixDQUFDLENBQUMsS0FBSyxhQUFhLENBQUMsQ0FBQyxFQUFFO1lBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztTQUNqRDtRQUNELElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzFCLE1BQU0sRUFBRSxHQUFHLDJCQUFvQixDQUFDLG9CQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRSxNQUFNLEVBQUUsR0FBRyxJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQ3RDLG9CQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBVyxDQUFDLEVBQ3pDLG9CQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBVyxDQUFDLEVBQ3pDLEVBQUUsQ0FDSCxDQUFDO1lBQ0YsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxvQkFBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNELGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6RSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLG9CQUFXLENBQUMsYUFBYSxDQUFDLEVBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQywyQkFBMkI7WUFDM0YsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sQ0FBQyxHQUFHLG9CQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0M7WUFDM0UsSUFBSSxFQUFFLEdBQUcsMkJBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLEdBQUcsb0JBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUUxQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLGdCQUFnQixDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckUsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxvQkFBVyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xHLGFBQWEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV6QyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxvQkFBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pGLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM3QixPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUIsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDM0I7aUJBQU07Z0JBQ0wsRUFBRSxHQUFHLDJCQUFvQixDQUFDLG9CQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0QsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxvQkFBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQy9FO1NBQ0Y7UUFDRCxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxhQUFhLENBQUMsRUFBRTtZQUMxRCxhQUFhLEdBQUc7Z0JBQ2QsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUM7Z0JBQ3JCLENBQUMsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDO2FBQ3RCLENBQUM7U0FDSDtRQUNELENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksWUFBWSxFQUFFO1lBQ2hCLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLGFBQXdCO2dCQUNqQyxNQUFNLEVBQUUsZ0JBQTBCO2FBQ25DLENBQUM7U0FDSDtRQUNELE9BQU87WUFDTCxNQUFNLEVBQUUsYUFBYTtZQUNyQixNQUFNLEVBQUUsZ0JBQTBCO1NBQ25DLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxNQUFtQjtRQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsb0JBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsb0JBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsTUFBTSxJQUFJLEdBQUcsb0JBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsTUFBTSxFQUFFLEdBQUcsb0JBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsTUFBTSxFQUFFLEdBQUcsb0JBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsTUFBTSxDQUFDLEdBQUcsb0JBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLEdBQUcsb0JBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFHLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQyxPQUFPO1lBQ0wsTUFBTSxFQUFFO2dCQUNOLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDWCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ1gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNqQixPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDekIsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2FBQzFCO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDTixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ1gsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN6QixLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7YUFDMUI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksQ0FBQyxDQUFTLEVBQUUsTUFBYyxFQUFFLE1BQWM7UUFDNUMsTUFBTSxDQUFDLEdBQUcsbUJBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFbEQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsb0JBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsb0JBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUUxRixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FDakMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsb0JBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsb0JBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDMUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQ2hDLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyx1QkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFbkIsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQzdCLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLHNCQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDakUsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLG9CQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ3ZELENBQUM7UUFDRixPQUFPO1lBQ0wsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2pCLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztTQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxrQkFBa0IsQ0FBQyxNQUFnQjtRQUNqQyxzQkFBc0I7UUFDdEIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckYsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7U0FDbkU7UUFFRCxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxvQkFBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFckYsZUFBZTtRQUNmLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsT0FBTztZQUNMLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2pCLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsT0FBZSxFQUFFLFNBQW9CO1FBQzFDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3ZCLG1CQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUM3QyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ1osdUJBQWdCLENBQUMsb0JBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakQsdUJBQWdCLENBQUMsb0JBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDbEQsQ0FBQyxFQUNGLG9CQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVCLENBQUM7SUFDSixDQUFDOztBQTdVSCx3QkE4VUM7QUE3VVEsV0FBSyxHQUFtQixJQUFJLHVCQUFjLEVBQUUsQ0FBQztBQUM3QyxZQUFNLEdBQVcsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhaWxsaWVyQmlnaW50IGZyb20gJ3BhaWxsaWVyLWJpZ2ludCc7XG5pbXBvcnQgKiBhcyBzZWNwIGZyb20gJ0Bub2JsZS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMsIGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgaGV4VG9CaWdJbnQgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NyeXB0byc7XG5pbXBvcnQgeyBiaWdJbnRGcm9tQnVmZmVyQkUsIGJpZ0ludFRvQnVmZmVyQkUsIGJpZ0ludEZyb21VOEFCRSwgZ2V0UGFpbGxpZXJQdWJsaWNLZXkgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IFNlY3AyNTZrMUN1cnZlIH0gZnJvbSAnLi4vLi4vY3VydmVzJztcbmltcG9ydCBTaGFtaXIgZnJvbSAnLi4vLi4vc2hhbWlyJztcbmltcG9ydCB7XG4gIE5TaGFyZSxcbiAgUFNoYXJlLFxuICBLZXlTaGFyZSxcbiAgS2V5Q29tYmluZWQsXG4gIEJTaGFyZSxcbiAgQVNoYXJlLFxuICBTaWduYXR1cmUsXG4gIFNpZ25Db252ZXJ0UlQsXG4gIFNpZ25Db252ZXJ0LFxuICBHU2hhcmUsXG4gIE1VU2hhcmUsXG4gIFNpZ25Db21iaW5lLFxuICBTaWduQ29tYmluZVJULFxuICBEU2hhcmUsXG4gIE9TaGFyZSxcbiAgU2lnblJULFxuICBTU2hhcmUsXG4gIFNpZ25TaGFyZVJULFxuICBLU2hhcmUsXG4gIFhTaGFyZSxcbiAgWVNoYXJlLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBFQ0RTQSBUU1MgaW1wbGVtZW50YXRpb24gc3VwcG9ydGluZyAyOm4gVGhyZXNob2xkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVjZHNhIHtcbiAgc3RhdGljIGN1cnZlOiBTZWNwMjU2azFDdXJ2ZSA9IG5ldyBTZWNwMjU2azFDdXJ2ZSgpO1xuICBzdGF0aWMgc2hhbWlyOiBTaGFtaXIgPSBuZXcgU2hhbWlyKEVjZHNhLmN1cnZlKTtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIHNoYXJlcyBmb3IgcGFydGljaXBhbnQgYXQgaW5kZXggYW5kIHNwbGl0IGtleXMgYCh0aHJlc2hvbGQsbnVtU2hhcmVzKWAgd2F5cy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IHBhcnRpY2lwYW50IGluZGV4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aHJlc2hvbGQgU2lnbmluZyB0aHJlc2hvbGRcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bVNoYXJlcyAgTnVtYmVyIG9mIHNoYXJlc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxLZXlTaGFyZT59IFJldHVybnMgdGhlIHByaXZhdGUgcC1zaGFyZVxuICAgKiBhbmQgbi1zaGFyZXMgdG8gYmUgZGlzdHJpYnV0ZWQgdG8gcGFydGljaXBhbnRzIGF0IHRoZWlyIGNvcnJlc3BvbmRpbmcgaW5kZXguXG4gICAqL1xuICBhc3luYyBrZXlTaGFyZShpbmRleDogbnVtYmVyLCB0aHJlc2hvbGQ6IG51bWJlciwgbnVtU2hhcmVzOiBudW1iZXIpOiBQcm9taXNlPEtleVNoYXJlPiB7XG4gICAgaWYgKCEoaW5kZXggPiAwICYmIGluZGV4IDw9IG51bVNoYXJlcyAmJiB0aHJlc2hvbGQgPD0gbnVtU2hhcmVzICYmIHRocmVzaG9sZCA9PT0gMikpIHtcbiAgICAgIHRocm93ICdJbnZhbGlkIEtleVNoYXJlIENvbmZpZyc7XG4gICAgfVxuICAgIC8vIEdlbmVyYXRlIGFkZGl0aXZlbHkgaG9tb21vcnBoaWMgZW5jcnlwdGlvbiBrZXkuXG4gICAgY29uc3QgeyBwdWJsaWNLZXksIHByaXZhdGVLZXkgfSA9IGF3YWl0IHBhaWxsaWVyQmlnaW50LmdlbmVyYXRlUmFuZG9tS2V5cygzMDcyLCB0cnVlKTtcbiAgICBjb25zdCB1ID0gRWNkc2EuY3VydmUuc2NhbGFyUmFuZG9tKCk7XG4gICAgY29uc3QgeSA9IEVjZHNhLmN1cnZlLmJhc2VQb2ludE11bHQodSk7XG4gICAgY29uc3QgY2hhaW5jb2RlID0gcmFuZG9tQnl0ZXMoMzIpO1xuICAgIC8vIENvbXB1dGUgc2VjcmV0IHNoYXJlcyBvZiB0aGUgcHJpdmF0ZSBrZXlcbiAgICBjb25zdCB1U2hhcmVzID0gRWNkc2Euc2hhbWlyLnNwbGl0KHUsIHRocmVzaG9sZCwgbnVtU2hhcmVzKTtcbiAgICBjb25zdCBjdXJyZW50UGFydGljaXBhbnQ6IFBTaGFyZSA9IHtcbiAgICAgIGk6IGluZGV4LFxuICAgICAgbDogcHJpdmF0ZUtleS5sYW1iZGEudG9TdHJpbmcoMTYpLFxuICAgICAgbTogcHJpdmF0ZUtleS5tdS50b1N0cmluZygxNiksXG4gICAgICBuOiBwdWJsaWNLZXkubi50b1N0cmluZygxNiksXG4gICAgICB5OiB5LnRvU3RyaW5nKDE2KSxcbiAgICAgIHU6IHVTaGFyZXNbaW5kZXhdLnRvU3RyaW5nKDE2KSxcbiAgICAgIGNoYWluY29kZTogY2hhaW5jb2RlLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIGNvbnN0IGtleVNoYXJlOiBLZXlTaGFyZSA9IHtcbiAgICAgIHBTaGFyZTogY3VycmVudFBhcnRpY2lwYW50LFxuICAgICAgblNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAoY29uc3Qgc2hhcmUgaW4gdVNoYXJlcykge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRJbmRleCA9IHBhcnNlSW50KHNoYXJlLCAxMCk7XG4gICAgICBpZiAocGFydGljaXBhbnRJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgICAga2V5U2hhcmUublNoYXJlc1twYXJ0aWNpcGFudEluZGV4XSA9IHtcbiAgICAgICAgICBpOiBwYXJ0aWNpcGFudEluZGV4LFxuICAgICAgICAgIGo6IGN1cnJlbnRQYXJ0aWNpcGFudFsnaSddLFxuICAgICAgICAgIG46IHB1YmxpY0tleS5uLnRvU3RyaW5nKDE2KSxcbiAgICAgICAgICB5OiB5LnRvU3RyaW5nKDE2KSxcbiAgICAgICAgICB1OiB1U2hhcmVzW3BhcnRpY2lwYW50SW5kZXhdLnRvU3RyaW5nKDE2KSxcbiAgICAgICAgICBjaGFpbmNvZGU6IGNoYWluY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIH0gYXMgTlNoYXJlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5U2hhcmU7XG4gIH1cblxuICAvKipcbiAgICogQ29tYmluZSBkYXRhIHNoYXJlZCBkdXJpbmcgdGhlIGtleSBnZW5lcmF0aW9uIHByb3RvY29sLlxuICAgKiBAcGFyYW0ge0tleVNoYXJlfSBwYXJ0aWNpcGFudFNoYXJlcyBwcml2YXRlIHAtc2hhcmUgYW5kXG4gICAqIG4tc2hhcmVzIHJlY2VpdmVkIGZyb20gYWxsIG90aGVyIHBhcnRpY2lwYW50cy5cbiAgICogQHJldHVybnMge0tleUNvbWJpbmVkfSBSZXR1cm5zIHRoZSBwYXJ0aWNpcGFudCBwcml2YXRlIHgtc2hhcmVcbiAgICogYW5kIHktc2hhcmVzIHRvIGJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHNpZ25pbmcgc2hhcmVzLlxuICAgKi9cbiAga2V5Q29tYmluZShwU2hhcmU6IFBTaGFyZSwgblNoYXJlczogTlNoYXJlW10pOiBLZXlDb21iaW5lZCB7XG4gICAgY29uc3QgYWxsU2hhcmVzID0gW3BTaGFyZSwgLi4ublNoYXJlc107XG4gICAgLy8gQ29tcHV0ZSB0aGUgcHVibGljIGtleS5cbiAgICBjb25zdCB5ID0gYWxsU2hhcmVzLm1hcCgocGFydGljaXBhbnQpID0+IGhleFRvQmlnSW50KHBhcnRpY2lwYW50Wyd5J10pKS5yZWR1Y2UoRWNkc2EuY3VydmUucG9pbnRBZGQpO1xuICAgIC8vIEFkZCBzZWNyZXQgc2hhcmVzXG4gICAgY29uc3QgeCA9IGFsbFNoYXJlcy5tYXAoKHBhcnRpY2lwYW50KSA9PiBoZXhUb0JpZ0ludChwYXJ0aWNpcGFudFsndSddKSkucmVkdWNlKEVjZHNhLmN1cnZlLnNjYWxhckFkZCk7XG5cbiAgICAvLyBDaGFpbmNvZGUgd2lsbCBiZSB1c2VkIGluIGZ1dHVyZSB3aGVuIHdlIGFkZCBzdXBwb3J0IGZvciBrZXkgZGVyaXZhdGlvbiBmb3IgZWNkc2FcbiAgICBjb25zdCBjaGFpbmNvZGVzID0gW3BTaGFyZSwgLi4ublNoYXJlc10ubWFwKCh7IGNoYWluY29kZSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oY2hhaW5jb2RlLCAnaGV4JykpKTtcbiAgICBjb25zdCBjaGFpbmNvZGUgPSBjaGFpbmNvZGVzLnJlZHVjZShcbiAgICAgIChhY2MsIGNoYWluY29kZSkgPT5cbiAgICAgICAgKGFjYyArIGNoYWluY29kZSkgJSBCaWdJbnQoJzB4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJykgLy8gMl4yNTZcbiAgICApO1xuXG4gICAgY29uc3QgcGFydGljaXBhbnRzOiBLZXlDb21iaW5lZCA9IHtcbiAgICAgIHhTaGFyZToge1xuICAgICAgICBpOiBwU2hhcmUuaSxcbiAgICAgICAgbDogcFNoYXJlLmwsXG4gICAgICAgIG06IHBTaGFyZS5tLFxuICAgICAgICBuOiBwU2hhcmUubixcbiAgICAgICAgeTogeS50b1N0cmluZygxNiksXG4gICAgICAgIHg6IHgudG9TdHJpbmcoMTYpLFxuICAgICAgICBjaGFpbmNvZGU6IGJpZ0ludFRvQnVmZmVyQkUoY2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSxcbiAgICAgIHlTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IHNoYXJlIGluIG5TaGFyZXMpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2lwYW50SW5kZXggPSBuU2hhcmVzW3NoYXJlXVsnaiddO1xuICAgICAgcGFydGljaXBhbnRzLnlTaGFyZXNbcGFydGljaXBhbnRJbmRleF0gPSB7XG4gICAgICAgIGk6IHBTaGFyZS5pLFxuICAgICAgICBqOiBuU2hhcmVzW3NoYXJlXVsnaiddLFxuICAgICAgICBuOiBuU2hhcmVzW3NoYXJlXVsnbiddLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnRpY2lwYW50cztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgc2lnbmluZyBzaGFyZXMuXG4gICAqIEBwYXJhbSB7eFNoYXJlfSB4U2hhcmUgUHJpdmF0ZSB4U2hhcmUgb2YgY3VycmVudCBwYXJ0aWNpcGFudCBzaWduZXJcbiAgICogQHBhcmFtIHtZU2hhcmV9IHlTaGFyZSB5U2hhcmUgY29ycmVzcG9uZGluZyB0byB0aGUgb3RoZXIgcGFydGljaXBhbnQgc2lnbmVyXG4gICAqIEByZXR1cm5zIHtTaWduU2hhcmVSVH0gUmV0dXJucyB0aGUgcGFydGljaXBhbnQgcHJpdmF0ZSB3LXNoYXJlXG4gICAqIGFuZCBrLXNoYXJlIHRvIGJlIGRpc3RyaWJ1dGVkIHRvIG90aGVyIHBhcnRpY2lwYW50IHNpZ25lclxuICAgKi9cbiAgc2lnblNoYXJlKHhTaGFyZTogWFNoYXJlLCB5U2hhcmU6IFlTaGFyZSk6IFNpZ25TaGFyZVJUIHtcbiAgICBjb25zdCBwayA9IGdldFBhaWxsaWVyUHVibGljS2V5KGhleFRvQmlnSW50KHhTaGFyZS5uKSk7XG5cbiAgICBjb25zdCBrID0gRWNkc2EuY3VydmUuc2NhbGFyUmFuZG9tKCk7XG4gICAgY29uc3QgZ2FtbWEgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJSYW5kb20oKTtcblxuICAgIGNvbnN0IGQgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KEVjZHNhLmN1cnZlLnNjYWxhclN1YihCaWdJbnQoeVNoYXJlLmopLCBCaWdJbnQoeFNoYXJlLmkpKSwgQmlnSW50KHhTaGFyZS5pKSk7XG5cbiAgICBjb25zdCB3ID0gW1xuICAgICAgRWNkc2EuY3VydmUuc2NhbGFyTXVsdChCaWdJbnQoeVNoYXJlLmopLCBCaWdJbnQoeFNoYXJlLmkpKSxcbiAgICAgIGhleFRvQmlnSW50KHhTaGFyZVsneCddKSxcbiAgICAgIEVjZHNhLmN1cnZlLnNjYWxhckludmVydChkKSxcbiAgICBdLnJlZHVjZShFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KTtcblxuICAgIGNvbnN0IHNpZ25lcnM6IFNpZ25TaGFyZVJUID0ge1xuICAgICAgd1NoYXJlOiB7XG4gICAgICAgIGk6IHhTaGFyZS5pLFxuICAgICAgICBsOiB4U2hhcmUubCxcbiAgICAgICAgbTogeFNoYXJlLm0sXG4gICAgICAgIG46IHhTaGFyZS5uLFxuICAgICAgICB5OiB4U2hhcmUueSxcbiAgICAgICAgazogay50b1N0cmluZygxNiksXG4gICAgICAgIHc6IHcudG9TdHJpbmcoMTYpLFxuICAgICAgICBnYW1tYTogZ2FtbWEudG9TdHJpbmcoMTYpLFxuICAgICAgfSxcbiAgICAgIGtTaGFyZToge30gYXMgS1NoYXJlLFxuICAgIH07XG5cbiAgICBzaWduZXJzLmtTaGFyZSA9IHtcbiAgICAgIGk6IHlTaGFyZS5qLFxuICAgICAgajogeFNoYXJlLmksXG4gICAgICBuOiBway5uLnRvU3RyaW5nKDE2KSxcbiAgICAgIGs6IHBrLmVuY3J5cHQoaykudG9TdHJpbmcoMTYpLFxuICAgIH07XG5cbiAgICByZXR1cm4gc2lnbmVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtIG11bHRpcGxpY2l0aXZlLXRvLWFkZGl0aXZlIChNdEEpIHNoYXJlIGNvbnZlcnNpb24gd2l0aCBhbm90aGVyXG4gICAqIHNpZ25lci5cbiAgICogQHBhcmFtIHtTaWduQ29udmVydH1cbiAgICogQHJldHVybnMge1NpZ25Db252ZXJ0UlR9XG4gICAqL1xuICBzaWduQ29udmVydChzaGFyZXM6IFNpZ25Db252ZXJ0KTogU2lnbkNvbnZlcnRSVCB7XG4gICAgbGV0IHNoYXJlUGFydGljaXBhbnQ6IEJTaGFyZSB8IEdTaGFyZSwgc2hhcmVUb0JlU2VuZDogQVNoYXJlIHwgTVVTaGFyZTtcbiAgICBsZXQgaXNHYW1tYVNoYXJlID0gZmFsc2U7XG4gICAgaWYgKHNoYXJlcy54U2hhcmUgJiYgc2hhcmVzLnlTaGFyZSAmJiBzaGFyZXMua1NoYXJlKSB7XG4gICAgICBjb25zdCB4U2hhcmUgPSBzaGFyZXMueFNoYXJlOyAvLyBjdXJyZW50UGFydGljaXBhbnQgc2VjcmV0IHhTaGFyZVxuICAgICAgY29uc3QgeVNoYXJlID0gc2hhcmVzLnlTaGFyZTtcbiAgICAgIGNvbnN0IHNpZ25TaGFyZSA9IHRoaXMuc2lnblNoYXJlKHhTaGFyZSwgeVNoYXJlKTtcbiAgICAgIHNoYXJlVG9CZVNlbmQgPSB7IC4uLnNoYXJlcy5rU2hhcmUsIGFscGhhOiAnJywgbXU6ICcnIH0gYXMgQVNoYXJlO1xuICAgICAgc2hhcmVQYXJ0aWNpcGFudCA9IHsgLi4uc2lnblNoYXJlLndTaGFyZSwgYmV0YTogJycsIG51OiAnJyB9IGFzIEJTaGFyZTtcbiAgICB9IGVsc2UgaWYgKChzaGFyZXMuYlNoYXJlICYmIHNoYXJlcy5tdVNoYXJlKSB8fCAoc2hhcmVzLmFTaGFyZSAmJiBzaGFyZXMud1NoYXJlKSkge1xuICAgICAgaXNHYW1tYVNoYXJlID0gdHJ1ZTtcbiAgICAgIHNoYXJlVG9CZVNlbmQgPSBzaGFyZXMuYVNoYXJlID8gKHsgLi4uc2hhcmVzLmFTaGFyZSB9IGFzIE1VU2hhcmUpIDogKHsgLi4uc2hhcmVzLm11U2hhcmUgfSBhcyBNVVNoYXJlKTtcbiAgICAgIHNoYXJlUGFydGljaXBhbnQgPSBzaGFyZXMud1NoYXJlID8gKHsgLi4uc2hhcmVzLndTaGFyZSB9IGFzIEdTaGFyZSkgOiAoeyAuLi5zaGFyZXMuYlNoYXJlIH0gYXMgR1NoYXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbmZpZyBmb3IgU2lnbiBDb252ZXJ0Jyk7XG4gICAgfVxuICAgIGlmIChzaGFyZVBhcnRpY2lwYW50LmkgIT09IHNoYXJlVG9CZVNlbmQuaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaGFyZXMgZnJvbSBzYW1lIHBhcnRpY2lwYW50Jyk7XG4gICAgfVxuICAgIGlmIChzaGFyZVRvQmVTZW5kWydhbHBoYSddKSB7XG4gICAgICBjb25zdCBwayA9IGdldFBhaWxsaWVyUHVibGljS2V5KGhleFRvQmlnSW50KHNoYXJlUGFydGljaXBhbnQubikpO1xuICAgICAgY29uc3Qgc2sgPSBuZXcgcGFpbGxpZXJCaWdpbnQuUHJpdmF0ZUtleShcbiAgICAgICAgaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5sIGFzIHN0cmluZyksXG4gICAgICAgIGhleFRvQmlnSW50KHNoYXJlUGFydGljaXBhbnQubSBhcyBzdHJpbmcpLFxuICAgICAgICBwa1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGFscGhhID0gc2suZGVjcnlwdChoZXhUb0JpZ0ludChzaGFyZVRvQmVTZW5kLmFscGhhKSk7XG4gICAgICBzaGFyZVBhcnRpY2lwYW50WydhbHBoYSddID0gRWNkc2EuY3VydmUuc2NhbGFyUmVkdWNlKGFscGhhKS50b1N0cmluZygxNik7XG4gICAgICBjb25zdCBtdSA9IHNrLmRlY3J5cHQoaGV4VG9CaWdJbnQoc2hhcmVUb0JlU2VuZC5tdSBhcyBzdHJpbmcpKTsgLy8gcmVjaGVjayBlbmNyeXB0ZWQgbnVtYmVyXG4gICAgICBzaGFyZVBhcnRpY2lwYW50WydtdSddID0gRWNkc2EuY3VydmUuc2NhbGFyUmVkdWNlKG11KS50b1N0cmluZygxNik7XG4gICAgICBkZWxldGUgc2hhcmVQYXJ0aWNpcGFudFsnbCddO1xuICAgICAgZGVsZXRlIHNoYXJlUGFydGljaXBhbnRbJ20nXTtcbiAgICAgIGRlbGV0ZSBzaGFyZVRvQmVTZW5kWydhbHBoYSddO1xuICAgICAgZGVsZXRlIHNoYXJlVG9CZVNlbmRbJ211J107XG4gICAgfVxuICAgIGlmIChzaGFyZVRvQmVTZW5kWydrJ10pIHtcbiAgICAgIGNvbnN0IG4gPSBoZXhUb0JpZ0ludChzaGFyZVRvQmVTZW5kWyduJ10pOyAvLyBQYWxsaWVyIHB1YiBmcm9tIG90aGVyIHNpZ25lclxuICAgICAgbGV0IHBrID0gZ2V0UGFpbGxpZXJQdWJsaWNLZXkobik7XG4gICAgICBjb25zdCBrID0gaGV4VG9CaWdJbnQoc2hhcmVUb0JlU2VuZFsnayddKTtcblxuICAgICAgY29uc3QgYmV0YTAgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJSYW5kb20oKTtcbiAgICAgIHNoYXJlUGFydGljaXBhbnQuYmV0YSA9IEVjZHNhLmN1cnZlLnNjYWxhck5lZ2F0ZShiZXRhMCkudG9TdHJpbmcoMTYpO1xuICAgICAgY29uc3QgYWxwaGEgPSBway5hZGRpdGlvbihway5tdWx0aXBseShrLCBoZXhUb0JpZ0ludChzaGFyZVBhcnRpY2lwYW50LmdhbW1hKSksIHBrLmVuY3J5cHQoYmV0YTApKTtcbiAgICAgIHNoYXJlVG9CZVNlbmQuYWxwaGEgPSBhbHBoYS50b1N0cmluZygxNik7XG5cbiAgICAgIGNvbnN0IG51MCA9IEVjZHNhLmN1cnZlLnNjYWxhclJhbmRvbSgpO1xuICAgICAgc2hhcmVQYXJ0aWNpcGFudC5udSA9IEVjZHNhLmN1cnZlLnNjYWxhck5lZ2F0ZShudTApLnRvU3RyaW5nKDE2KTtcbiAgICAgIGNvbnN0IG11ID0gcGsuYWRkaXRpb24ocGsubXVsdGlwbHkoaywgaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC53KSksIHBrLmVuY3J5cHQobnUwKSk7XG4gICAgICBzaGFyZVRvQmVTZW5kLm11ID0gbXUudG9TdHJpbmcoMTYpO1xuICAgICAgaWYgKHNoYXJlUGFydGljaXBhbnRbJ2FscGhhJ10pIHtcbiAgICAgICAgZGVsZXRlIHNoYXJlVG9CZVNlbmRbJ24nXTtcbiAgICAgICAgZGVsZXRlIHNoYXJlVG9CZVNlbmRbJ2snXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBrID0gZ2V0UGFpbGxpZXJQdWJsaWNLZXkoaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5uKSk7XG4gICAgICAgIHNoYXJlVG9CZVNlbmRbJ24nXSA9IHBrLm4udG9TdHJpbmcoMTYpO1xuICAgICAgICBzaGFyZVRvQmVTZW5kWydrJ10gPSBway5lbmNyeXB0KGhleFRvQmlnSW50KHNoYXJlUGFydGljaXBhbnQuaykpLnRvU3RyaW5nKDE2KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCEoJ2FscGhhJyBpbiBzaGFyZVRvQmVTZW5kKSAmJiAhKCdrJyBpbiBzaGFyZVRvQmVTZW5kKSkge1xuICAgICAgc2hhcmVUb0JlU2VuZCA9IHtcbiAgICAgICAgaTogc2hhcmVUb0JlU2VuZFsnaSddLFxuICAgICAgICBqOiBzaGFyZVRvQmVTZW5kWydqJ10sXG4gICAgICB9O1xuICAgIH1cbiAgICBbc2hhcmVUb0JlU2VuZFsnaSddLCBzaGFyZVRvQmVTZW5kWydqJ11dID0gW3NoYXJlVG9CZVNlbmRbJ2onXSwgc2hhcmVUb0JlU2VuZFsnaSddXTtcbiAgICBpZiAoaXNHYW1tYVNoYXJlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtdVNoYXJlOiBzaGFyZVRvQmVTZW5kIGFzIE1VU2hhcmUsXG4gICAgICAgIGdTaGFyZTogc2hhcmVQYXJ0aWNpcGFudCBhcyBHU2hhcmUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgYVNoYXJlOiBzaGFyZVRvQmVTZW5kLFxuICAgICAgYlNoYXJlOiBzaGFyZVBhcnRpY2lwYW50IGFzIEJTaGFyZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbWJpbmUgZ2FtbWEgc2hhcmVzIHRvIGdldCB0aGUgcHJpdmF0ZSBvbWljcm9uIC8gZGVsdGEgc2hhcmVzXG4gICAqIEBwYXJhbSB7U2lnbkNvbWJpbmV9IHNoYXJlc1xuICAgKiBAcmV0dXJucyB7U2lnbkNvbWJpbmVSVH1cbiAgICovXG4gIHNpZ25Db21iaW5lKHNoYXJlczogU2lnbkNvbWJpbmUpOiBTaWduQ29tYmluZVJUIHtcbiAgICBjb25zdCBnU2hhcmUgPSBzaGFyZXMuZ1NoYXJlcztcbiAgICBjb25zdCBTID0gc2hhcmVzLnNpZ25JbmRleDtcbiAgICBjb25zdCBnYW1tYSA9IGhleFRvQmlnSW50KGdTaGFyZS5nYW1tYSk7XG4gICAgY29uc3QgYWxwaGEgPSBoZXhUb0JpZ0ludChnU2hhcmUuYWxwaGEpO1xuICAgIGNvbnN0IGJldGEgPSBoZXhUb0JpZ0ludChnU2hhcmUuYmV0YSk7XG4gICAgY29uc3QgbXUgPSBoZXhUb0JpZ0ludChnU2hhcmUubXUpO1xuICAgIGNvbnN0IG51ID0gaGV4VG9CaWdJbnQoZ1NoYXJlLm51KTtcbiAgICBjb25zdCBrID0gaGV4VG9CaWdJbnQoZ1NoYXJlLmspO1xuICAgIGNvbnN0IHcgPSBoZXhUb0JpZ0ludChnU2hhcmUudyk7XG5cbiAgICBjb25zdCBkZWx0YSA9IEVjZHNhLmN1cnZlLnNjYWxhckFkZChFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KGssIGdhbW1hKSwgRWNkc2EuY3VydmUuc2NhbGFyQWRkKGFscGhhLCBiZXRhKSk7XG4gICAgY29uc3Qgb21pY3JvbiA9IEVjZHNhLmN1cnZlLnNjYWxhckFkZChFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KGssIHcpLCBFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQobXUsIG51KSk7XG4gICAgY29uc3QgR2FtbWEgPSBFY2RzYS5jdXJ2ZS5iYXNlUG9pbnRNdWx0KGdhbW1hKTtcblxuICAgIHJldHVybiB7XG4gICAgICBvU2hhcmU6IHtcbiAgICAgICAgaTogZ1NoYXJlLmksXG4gICAgICAgIHk6IGdTaGFyZS55LFxuICAgICAgICBrOiBrLnRvU3RyaW5nKDE2KSxcbiAgICAgICAgb21pY3Jvbjogb21pY3Jvbi50b1N0cmluZygxNiksXG4gICAgICAgIGRlbHRhOiBkZWx0YS50b1N0cmluZygxNiksXG4gICAgICAgIEdhbW1hOiBHYW1tYS50b1N0cmluZygxNiksXG4gICAgICB9LFxuICAgICAgZFNoYXJlOiB7XG4gICAgICAgIGk6IFMuaSxcbiAgICAgICAgajogZ1NoYXJlLmksXG4gICAgICAgIGRlbHRhOiBkZWx0YS50b1N0cmluZygxNiksXG4gICAgICAgIEdhbW1hOiBHYW1tYS50b1N0cmluZygxNiksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU2lnbiBhIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBNIE1lc3NhZ2UgdG8gYmUgc2lnbmVkXG4gICAqIEBwYXJhbSB7T1NoYXJlfSBvU2hhcmUgcHJpdmF0ZSBvbWljcm9uIHNoYXJlIG9mIGN1cnJlbnQgcGFydGljaXBhbnRcbiAgICogQHBhcmFtIHtEU2hhcmV9IGRTaGFyZSBkZWx0YSBzaGFyZSByZWNlaXZlZCBmcm9tIHRoZSBvdGhlciBwYXJ0aWNpcGFudFxuICAgKiBAcmV0dXJucyB7U2lnblJUfVxuICAgKi9cbiAgc2lnbihNOiBCdWZmZXIsIG9TaGFyZTogT1NoYXJlLCBkU2hhcmU6IERTaGFyZSk6IFNpZ25SVCB7XG4gICAgY29uc3QgbSA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShNKS5kaWdlc3QoKTtcblxuICAgIGNvbnN0IGRlbHRhID0gRWNkc2EuY3VydmUuc2NhbGFyQWRkKGhleFRvQmlnSW50KG9TaGFyZS5kZWx0YSksIGhleFRvQmlnSW50KGRTaGFyZS5kZWx0YSkpO1xuXG4gICAgY29uc3QgUiA9IEVjZHNhLmN1cnZlLnBvaW50TXVsdGlwbHkoXG4gICAgICBFY2RzYS5jdXJ2ZS5wb2ludEFkZChoZXhUb0JpZ0ludChvU2hhcmUuR2FtbWEpLCBoZXhUb0JpZ0ludChkU2hhcmUuR2FtbWEpKSxcbiAgICAgIEVjZHNhLmN1cnZlLnNjYWxhckludmVydChkZWx0YSlcbiAgICApO1xuICAgIGNvbnN0IHBvaW50UiA9IHNlY3AuUG9pbnQuZnJvbUhleChiaWdJbnRUb0J1ZmZlckJFKFIpKTtcbiAgICBjb25zdCByID0gcG9pbnRSLng7XG5cbiAgICBjb25zdCBzID0gRWNkc2EuY3VydmUuc2NhbGFyQWRkKFxuICAgICAgRWNkc2EuY3VydmUuc2NhbGFyTXVsdChiaWdJbnRGcm9tVThBQkUobSksIGhleFRvQmlnSW50KG9TaGFyZS5rKSksXG4gICAgICBFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KHIsIGhleFRvQmlnSW50KG9TaGFyZS5vbWljcm9uKSlcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBpOiBvU2hhcmUuaSxcbiAgICAgIHk6IG9TaGFyZS55LFxuICAgICAgcjogci50b1N0cmluZygxNiksXG4gICAgICBzOiBzLnRvU3RyaW5nKDE2KSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdCBmdWxsIHNpZ25hdHVyZSBieSBjb21iaW5pbmcgU2lnbiBTaGFyZXNcbiAgICogQHBhcmFtIHtTU2hhcmVbXX0gc2hhcmVzXG4gICAqIEByZXR1cm5zIHtTaWduYXR1cmV9XG4gICAqL1xuICBjb25zdHJ1Y3RTaWduYXR1cmUoc2hhcmVzOiBTU2hhcmVbXSk6IFNpZ25hdHVyZSB7XG4gICAgLy8gRXZlcnkgciBtdXN0IG1hdGNoLlxuICAgIGNvbnN0IHIgPSBzaGFyZXNbMF1bJ3InXTtcbiAgICBjb25zdCBpc1JNYXRjaGluZyA9IHNoYXJlcy5tYXAoKHNoYXJlKSA9PiBzaGFyZVsnciddID09PSByKS5yZWR1Y2UoKGEsIGIpID0+IGEgJiYgYik7XG4gICAgaWYgKCFpc1JNYXRjaGluZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyIHZhbHVlIHNob3VsZCBiZSBjb25zaXN0ZW50IGFjcm9zcyBhbGwgc2hhcmVzJyk7XG4gICAgfVxuXG4gICAgbGV0IHMgPSBzaGFyZXMubWFwKChzaGFyZSkgPT4gaGV4VG9CaWdJbnQoc2hhcmVbJ3MnXSkpLnJlZHVjZShFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQpO1xuXG4gICAgLy8gTm9ybWFsaXplIHMuXG4gICAgcyA9IHMgPiBFY2RzYS5jdXJ2ZS5vcmRlcigpIC8gQmlnSW50KDIpID8gRWNkc2EuY3VydmUub3JkZXIoKSAtIHMgOiBzO1xuICAgIHJldHVybiB7XG4gICAgICB5OiBzaGFyZXNbMF1bJ3knXSxcbiAgICAgIHI6IHIsXG4gICAgICBzOiBzLnRvU3RyaW5nKDE2KSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmeSBlY2RzYSBzaWduYXR1cmVzXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBtZXNzYWdlXG4gICAqIEBwYXJhbSB7U2lnbmF0dXJlIH0gc2lnbmF0dXJlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHNpZ25hdHVyZSBpcyB2YWxpZDsgRmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICB2ZXJpZnkobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IFNpZ25hdHVyZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBFY2RzYS5jdXJ2ZS52ZXJpZnkoXG4gICAgICBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUobWVzc2FnZSkuZGlnZXN0KCksXG4gICAgICBCdWZmZXIuY29uY2F0KFtcbiAgICAgICAgYmlnSW50VG9CdWZmZXJCRShoZXhUb0JpZ0ludChzaWduYXR1cmVbJ3InXSksIDMyKSxcbiAgICAgICAgYmlnSW50VG9CdWZmZXJCRShoZXhUb0JpZ0ludChzaWduYXR1cmVbJ3MnXSksIDMyKSxcbiAgICAgIF0pLFxuICAgICAgaGV4VG9CaWdJbnQoc2lnbmF0dXJlWyd5J10pXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './utils';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/staking/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./utils"), exports);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvc3Rha2luZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { NetworkType } from '@bitgo/statics';
2
+ import { StakingOperationTypes } from '../baseCoin';
3
+ export interface ContractMethodConfig {
4
+ contractAddress: string;
5
+ methodId: string;
6
+ types: string[];
7
+ }
8
+ export declare const LockMethodId = "0xf83d08ba";
9
+ export declare const UnlockMethodId = "0x6198e339";
10
+ export declare const VoteMethodId = "0x580d747a";
11
+ export declare const UnvoteMethodId = "0x6e198475";
12
+ export declare const ActivateMethodId = "0x1c5a9d9c";
13
+ export declare const WithdrawMethodId = "0x2e1a7d4d";
14
+ /**
15
+ * @param type
16
+ * @param network
17
+ */
18
+ export declare function getOperationConfig(type: StakingOperationTypes, network: NetworkType): ContractMethodConfig;
19
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/staking/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,eAAe,CAAC;AACzC,eAAO,MAAM,cAAc,eAAe,CAAC;AAC3C,eAAO,MAAM,YAAY,eAAe,CAAC;AACzC,eAAO,MAAM,cAAc,eAAe,CAAC;AAC3C,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAkF7C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,WAAW,GAAG,oBAAoB,CAE1G"}