@bitgo/sdk-coin-dot 4.3.13 → 4.3.15

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 (87) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +6 -6
  3. package/LICENSE +0 -191
  4. package/dist/src/dot.d.ts +0 -154
  5. package/dist/src/dot.d.ts.map +0 -1
  6. package/dist/src/dot.js +0 -576
  7. package/dist/src/index.d.ts +0 -5
  8. package/dist/src/index.d.ts.map +0 -1
  9. package/dist/src/index.js +0 -21
  10. package/dist/src/lib/addressInitializationBuilder.d.ts +0 -79
  11. package/dist/src/lib/addressInitializationBuilder.d.ts.map +0 -1
  12. package/dist/src/lib/addressInitializationBuilder.js +0 -182
  13. package/dist/src/lib/batchTransactionBuilder.d.ts +0 -62
  14. package/dist/src/lib/batchTransactionBuilder.d.ts.map +0 -1
  15. package/dist/src/lib/batchTransactionBuilder.js +0 -229
  16. package/dist/src/lib/claimBuilder.d.ts +0 -58
  17. package/dist/src/lib/claimBuilder.d.ts.map +0 -1
  18. package/dist/src/lib/claimBuilder.js +0 -117
  19. package/dist/src/lib/errors.d.ts +0 -8
  20. package/dist/src/lib/errors.d.ts.map +0 -1
  21. package/dist/src/lib/errors.js +0 -19
  22. package/dist/src/lib/iface.d.ts +0 -337
  23. package/dist/src/lib/iface.d.ts.map +0 -1
  24. package/dist/src/lib/iface.js +0 -128
  25. package/dist/src/lib/iface_utils.d.ts +0 -59
  26. package/dist/src/lib/iface_utils.d.ts.map +0 -1
  27. package/dist/src/lib/iface_utils.js +0 -92
  28. package/dist/src/lib/index.d.ts +0 -19
  29. package/dist/src/lib/index.d.ts.map +0 -1
  30. package/dist/src/lib/index.js +0 -71
  31. package/dist/src/lib/keyPair.d.ts +0 -38
  32. package/dist/src/lib/keyPair.d.ts.map +0 -1
  33. package/dist/src/lib/keyPair.js +0 -117
  34. package/dist/src/lib/nativeTransferBuilder.d.ts +0 -84
  35. package/dist/src/lib/nativeTransferBuilder.d.ts.map +0 -1
  36. package/dist/src/lib/nativeTransferBuilder.js +0 -219
  37. package/dist/src/lib/proxyBuilder.d.ts +0 -54
  38. package/dist/src/lib/proxyBuilder.d.ts.map +0 -1
  39. package/dist/src/lib/proxyBuilder.js +0 -116
  40. package/dist/src/lib/singletonRegistry.d.ts +0 -7
  41. package/dist/src/lib/singletonRegistry.d.ts.map +0 -1
  42. package/dist/src/lib/singletonRegistry.js +0 -20
  43. package/dist/src/lib/stakingBuilder.d.ts +0 -66
  44. package/dist/src/lib/stakingBuilder.d.ts.map +0 -1
  45. package/dist/src/lib/stakingBuilder.js +0 -167
  46. package/dist/src/lib/transaction.d.ts +0 -83
  47. package/dist/src/lib/transaction.d.ts.map +0 -1
  48. package/dist/src/lib/transaction.js +0 -610
  49. package/dist/src/lib/transactionBuilder.d.ts +0 -131
  50. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  51. package/dist/src/lib/transactionBuilder.js +0 -351
  52. package/dist/src/lib/transactionBuilderFactory.d.ts +0 -28
  53. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  54. package/dist/src/lib/transactionBuilderFactory.js +0 -104
  55. package/dist/src/lib/transferBuilder.d.ts +0 -11
  56. package/dist/src/lib/transferBuilder.d.ts.map +0 -1
  57. package/dist/src/lib/transferBuilder.js +0 -11
  58. package/dist/src/lib/txnSchema.d.ts +0 -15
  59. package/dist/src/lib/txnSchema.d.ts.map +0 -1
  60. package/dist/src/lib/txnSchema.js +0 -117
  61. package/dist/src/lib/unnominateBuilder.d.ts +0 -24
  62. package/dist/src/lib/unnominateBuilder.d.ts.map +0 -1
  63. package/dist/src/lib/unnominateBuilder.js +0 -48
  64. package/dist/src/lib/unstakeBuilder.d.ts +0 -38
  65. package/dist/src/lib/unstakeBuilder.d.ts.map +0 -1
  66. package/dist/src/lib/unstakeBuilder.js +0 -87
  67. package/dist/src/lib/utils.d.ts +0 -261
  68. package/dist/src/lib/utils.d.ts.map +0 -1
  69. package/dist/src/lib/utils.js +0 -482
  70. package/dist/src/lib/withdrawUnstakedBuilder.d.ts +0 -38
  71. package/dist/src/lib/withdrawUnstakedBuilder.d.ts.map +0 -1
  72. package/dist/src/lib/withdrawUnstakedBuilder.js +0 -88
  73. package/dist/src/register.d.ts +0 -3
  74. package/dist/src/register.d.ts.map +0 -1
  75. package/dist/src/register.js +0 -11
  76. package/dist/src/resources/index.d.ts +0 -3
  77. package/dist/src/resources/index.d.ts.map +0 -1
  78. package/dist/src/resources/index.js +0 -19
  79. package/dist/src/resources/mainnet.d.ts +0 -2
  80. package/dist/src/resources/mainnet.d.ts.map +0 -1
  81. package/dist/src/resources/mainnet.js +0 -5
  82. package/dist/src/resources/westend.d.ts +0 -2
  83. package/dist/src/resources/westend.d.ts.map +0 -1
  84. package/dist/src/resources/westend.js +0 -5
  85. package/dist/src/tdot.d.ts +0 -12
  86. package/dist/src/tdot.d.ts.map +0 -1
  87. package/dist/src/tdot.js +0 -27
@@ -1,19 +0,0 @@
1
- import * as Utils from './utils';
2
- import * as Interface from './iface';
3
- export { KeyPair } from './keyPair';
4
- export { Transaction } from './transaction';
5
- export { TransactionBuilder } from './transactionBuilder';
6
- export { StakingBuilder } from './stakingBuilder';
7
- export { TransferBuilder } from './transferBuilder';
8
- export { AddressInitializationBuilder } from './addressInitializationBuilder';
9
- export { BatchTransactionBuilder } from './batchTransactionBuilder';
10
- export { UnstakeBuilder } from './unstakeBuilder';
11
- export { UnnominateBuilder } from './unnominateBuilder';
12
- export { WithdrawUnstakedBuilder } from './withdrawUnstakedBuilder';
13
- export { ClaimBuilder } from './claimBuilder';
14
- export { TransactionBuilderFactory } from './transactionBuilderFactory';
15
- export { SingletonRegistry } from './singletonRegistry';
16
- export { NativeTransferBuilder } from './nativeTransferBuilder';
17
- export { RemoveProxyBuilder } from './proxyBuilder';
18
- export { Interface, Utils };
19
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC"}
@@ -1,71 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Utils = exports.Interface = exports.RemoveProxyBuilder = exports.NativeTransferBuilder = exports.SingletonRegistry = exports.TransactionBuilderFactory = exports.ClaimBuilder = exports.WithdrawUnstakedBuilder = exports.UnnominateBuilder = exports.UnstakeBuilder = exports.BatchTransactionBuilder = exports.AddressInitializationBuilder = exports.TransferBuilder = exports.StakingBuilder = exports.TransactionBuilder = exports.Transaction = exports.KeyPair = void 0;
37
- const Utils = __importStar(require("./utils"));
38
- exports.Utils = Utils;
39
- const Interface = __importStar(require("./iface"));
40
- exports.Interface = Interface;
41
- var keyPair_1 = require("./keyPair");
42
- Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
43
- var transaction_1 = require("./transaction");
44
- Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
45
- var transactionBuilder_1 = require("./transactionBuilder");
46
- Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
47
- var stakingBuilder_1 = require("./stakingBuilder");
48
- Object.defineProperty(exports, "StakingBuilder", { enumerable: true, get: function () { return stakingBuilder_1.StakingBuilder; } });
49
- var transferBuilder_1 = require("./transferBuilder");
50
- Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
51
- var addressInitializationBuilder_1 = require("./addressInitializationBuilder");
52
- Object.defineProperty(exports, "AddressInitializationBuilder", { enumerable: true, get: function () { return addressInitializationBuilder_1.AddressInitializationBuilder; } });
53
- var batchTransactionBuilder_1 = require("./batchTransactionBuilder");
54
- Object.defineProperty(exports, "BatchTransactionBuilder", { enumerable: true, get: function () { return batchTransactionBuilder_1.BatchTransactionBuilder; } });
55
- var unstakeBuilder_1 = require("./unstakeBuilder");
56
- Object.defineProperty(exports, "UnstakeBuilder", { enumerable: true, get: function () { return unstakeBuilder_1.UnstakeBuilder; } });
57
- var unnominateBuilder_1 = require("./unnominateBuilder");
58
- Object.defineProperty(exports, "UnnominateBuilder", { enumerable: true, get: function () { return unnominateBuilder_1.UnnominateBuilder; } });
59
- var withdrawUnstakedBuilder_1 = require("./withdrawUnstakedBuilder");
60
- Object.defineProperty(exports, "WithdrawUnstakedBuilder", { enumerable: true, get: function () { return withdrawUnstakedBuilder_1.WithdrawUnstakedBuilder; } });
61
- var claimBuilder_1 = require("./claimBuilder");
62
- Object.defineProperty(exports, "ClaimBuilder", { enumerable: true, get: function () { return claimBuilder_1.ClaimBuilder; } });
63
- var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
64
- Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
65
- var singletonRegistry_1 = require("./singletonRegistry");
66
- Object.defineProperty(exports, "SingletonRegistry", { enumerable: true, get: function () { return singletonRegistry_1.SingletonRegistry; } });
67
- var nativeTransferBuilder_1 = require("./nativeTransferBuilder");
68
- Object.defineProperty(exports, "NativeTransferBuilder", { enumerable: true, get: function () { return nativeTransferBuilder_1.NativeTransferBuilder; } });
69
- var proxyBuilder_1 = require("./proxyBuilder");
70
- Object.defineProperty(exports, "RemoveProxyBuilder", { enumerable: true, get: function () { return proxyBuilder_1.RemoveProxyBuilder; } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQWtCYixzQkFBSztBQWpCekIsbURBQXFDO0FBaUI1Qiw4QkFBUztBQWZsQixxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLDZDQUE0QztBQUFuQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIsMkRBQTBEO0FBQWpELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLG1EQUFrRDtBQUF6QyxnSEFBQSxjQUFjLE9BQUE7QUFDdkIscURBQW9EO0FBQTNDLGtIQUFBLGVBQWUsT0FBQTtBQUN4QiwrRUFBOEU7QUFBckUsNElBQUEsNEJBQTRCLE9BQUE7QUFDckMscUVBQW9FO0FBQTNELGtJQUFBLHVCQUF1QixPQUFBO0FBQ2hDLG1EQUFrRDtBQUF6QyxnSEFBQSxjQUFjLE9BQUE7QUFDdkIseURBQXdEO0FBQS9DLHNIQUFBLGlCQUFpQixPQUFBO0FBQzFCLHFFQUFvRTtBQUEzRCxrSUFBQSx1QkFBdUIsT0FBQTtBQUNoQywrQ0FBOEM7QUFBckMsNEdBQUEsWUFBWSxPQUFBO0FBQ3JCLHlFQUF3RTtBQUEvRCxzSUFBQSx5QkFBeUIsT0FBQTtBQUNsQyx5REFBd0Q7QUFBL0Msc0hBQUEsaUJBQWlCLE9BQUE7QUFDMUIsaUVBQWdFO0FBQXZELDhIQUFBLHFCQUFxQixPQUFBO0FBQzlCLCtDQUFvRDtBQUEzQyxrSEFBQSxrQkFBa0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgSW50ZXJmYWNlIGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBTdGFraW5nQnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ0J1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgQWRkcmVzc0luaXRpYWxpemF0aW9uQnVpbGRlciB9IGZyb20gJy4vYWRkcmVzc0luaXRpYWxpemF0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBCYXRjaFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vYmF0Y2hUcmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgVW5zdGFrZUJ1aWxkZXIgfSBmcm9tICcuL3Vuc3Rha2VCdWlsZGVyJztcbmV4cG9ydCB7IFVubm9taW5hdGVCdWlsZGVyIH0gZnJvbSAnLi91bm5vbWluYXRlQnVpbGRlcic7XG5leHBvcnQgeyBXaXRoZHJhd1Vuc3Rha2VkQnVpbGRlciB9IGZyb20gJy4vd2l0aGRyYXdVbnN0YWtlZEJ1aWxkZXInO1xuZXhwb3J0IHsgQ2xhaW1CdWlsZGVyIH0gZnJvbSAnLi9jbGFpbUJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSc7XG5leHBvcnQgeyBTaW5nbGV0b25SZWdpc3RyeSB9IGZyb20gJy4vc2luZ2xldG9uUmVnaXN0cnknO1xuZXhwb3J0IHsgTmF0aXZlVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi9uYXRpdmVUcmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgUmVtb3ZlUHJveHlCdWlsZGVyIH0gZnJvbSAnLi9wcm94eUJ1aWxkZXInO1xuZXhwb3J0IHsgSW50ZXJmYWNlLCBVdGlscyB9O1xuIl19
@@ -1,38 +0,0 @@
1
- import { KeyringPair } from '@polkadot/keyring/types';
2
- import { DotAddressFormat, DefaultKeys, Ed25519KeyPair, KeyPairOptions } from '@bitgo/sdk-core';
3
- export declare class KeyPair extends Ed25519KeyPair {
4
- /**
5
- * Public constructor. By default, creates a key pair with a random master seed.
6
- *
7
- * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
8
- */
9
- constructor(source?: KeyPairOptions);
10
- /**
11
- * Helper function to create the KeyringPair for signing a dot transaction.
12
- *
13
- * @returns {KeyringPair} dot KeyringPair
14
- *
15
- * @see https://polkadot.js.org/docs/api/start/keyring
16
- */
17
- protected createPolkadotPair(): KeyringPair;
18
- /**
19
- // https://wiki.polkadot.network/docs/learn-accounts#address-format
20
- * Returns the address in either mainnet polkadot format (starts with 1)
21
- * or substrate format used for westend (starts with 5)
22
- */
23
- getAddress(format: DotAddressFormat): string;
24
- /** @inheritdoc */
25
- getKeys(): DefaultKeys;
26
- /** @inheritdoc */
27
- recordKeysFromPrivateKeyInProtocolFormat(prv: string): DefaultKeys;
28
- /** @inheritdoc */
29
- recordKeysFromPublicKeyInProtocolFormat(pub: string): DefaultKeys;
30
- /**
31
- * Sign the message in Uint8Array
32
- *
33
- * @param {Uint8Array} message to be signed
34
- * @returns {Uint8Array} signed message
35
- */
36
- signMessageinUint8Array(message: Uint8Array): Uint8Array;
37
- }
38
- //# sourceMappingURL=keyPair.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../src/lib/keyPair.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,cAAc,EAEd,cAAc,EAGf,MAAM,iBAAiB,CAAC;AAQzB,qBAAa,OAAQ,SAAQ,cAAc;IACzC;;;;OAIG;gBACS,MAAM,CAAC,EAAE,cAAc;IAInC;;;;;;OAMG;IACH,SAAS,CAAC,kBAAkB,IAAI,WAAW;IAM3C;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAO5C,kBAAkB;IAClB,OAAO,IAAI,WAAW;IAQtB,kBAAkB;IAClB,wCAAwC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAMlE,kBAAkB;IAClB,uCAAuC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IASjE;;;;;OAKG;IACH,uBAAuB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;CAOzD"}
@@ -1,117 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.KeyPair = void 0;
40
- const keyring_1 = require("@polkadot/keyring");
41
- const pair_1 = require("@polkadot/keyring/pair");
42
- const sdk_core_1 = require("@bitgo/sdk-core");
43
- const bs58_1 = __importDefault(require("bs58"));
44
- const utils_1 = __importDefault(require("./utils"));
45
- const nacl = __importStar(require("tweetnacl"));
46
- const TYPE = 'ed25519';
47
- const keyring = new keyring_1.Keyring({ type: TYPE });
48
- class KeyPair extends sdk_core_1.Ed25519KeyPair {
49
- /**
50
- * Public constructor. By default, creates a key pair with a random master seed.
51
- *
52
- * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
53
- */
54
- constructor(source) {
55
- super(source);
56
- }
57
- /**
58
- * Helper function to create the KeyringPair for signing a dot transaction.
59
- *
60
- * @returns {KeyringPair} dot KeyringPair
61
- *
62
- * @see https://polkadot.js.org/docs/api/start/keyring
63
- */
64
- createPolkadotPair() {
65
- const secretKey = this.keyPair.prv ? new Uint8Array(Buffer.from(this.keyPair.prv, 'hex')) : undefined;
66
- const publicKey = new Uint8Array(Buffer.from(this.keyPair.pub, 'hex'));
67
- return (0, pair_1.createPair)({ toSS58: keyring.encodeAddress, type: TYPE }, { secretKey, publicKey });
68
- }
69
- /**
70
- // https://wiki.polkadot.network/docs/learn-accounts#address-format
71
- * Returns the address in either mainnet polkadot format (starts with 1)
72
- * or substrate format used for westend (starts with 5)
73
- */
74
- getAddress(format) {
75
- let encodedAddress = this.createPolkadotPair().address;
76
- encodedAddress = keyring.encodeAddress(encodedAddress, format);
77
- return encodedAddress;
78
- }
79
- /** @inheritdoc */
80
- getKeys() {
81
- const result = { pub: this.keyPair.pub };
82
- if (this.keyPair.prv) {
83
- result.prv = this.keyPair.prv;
84
- }
85
- return result;
86
- }
87
- /** @inheritdoc */
88
- recordKeysFromPrivateKeyInProtocolFormat(prv) {
89
- const decodedSeed = utils_1.default.decodeSeed(prv);
90
- const bufferFromSeed = Buffer.from(decodedSeed.seed);
91
- return utils_1.default.keyPairFromSeed(bufferFromSeed).keyPair;
92
- }
93
- /** @inheritdoc */
94
- recordKeysFromPublicKeyInProtocolFormat(pub) {
95
- const publicKey = keyring.addFromPair({
96
- // tss common pub is in base58 format and decodes to length of 32
97
- publicKey: (0, sdk_core_1.isBase58)(pub, 32) ? new Uint8Array(bs58_1.default.decode(pub)) : new Uint8Array(Buffer.from(pub, 'hex')),
98
- secretKey: new Uint8Array(),
99
- }).publicKey;
100
- return { pub: (0, sdk_core_1.toHex)(publicKey) };
101
- }
102
- /**
103
- * Sign the message in Uint8Array
104
- *
105
- * @param {Uint8Array} message to be signed
106
- * @returns {Uint8Array} signed message
107
- */
108
- signMessageinUint8Array(message) {
109
- const { prv } = this.keyPair;
110
- if (!prv) {
111
- throw new Error('Missing private key');
112
- }
113
- return nacl.sign.detached(message, nacl.sign.keyPair.fromSeed((0, sdk_core_1.toUint8Array)(prv)).secretKey);
114
- }
115
- }
116
- exports.KeyPair = KeyPair;
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBNEM7QUFDNUMsaURBQW9EO0FBRXBELDhDQVF5QjtBQUN6QixnREFBd0I7QUFDeEIsb0RBQTRCO0FBQzVCLGdEQUFrQztBQUVsQyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUM7QUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxpQkFBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFFNUMsTUFBYSxPQUFRLFNBQVEseUJBQWM7SUFDekM7Ozs7T0FJRztJQUNILFlBQVksTUFBdUI7UUFDakMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDTyxrQkFBa0I7UUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3RHLE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RSxPQUFPLElBQUEsaUJBQVUsRUFBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLE1BQXdCO1FBQ2pDLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUN2RCxjQUFjLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsTUFBZ0IsQ0FBQyxDQUFDO1FBRXpFLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTztRQUNMLE1BQU0sTUFBTSxHQUFnQixFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNyQixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHdDQUF3QyxDQUFDLEdBQVc7UUFDbEQsTUFBTSxXQUFXLEdBQUcsZUFBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxPQUFPLGVBQUssQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsdUNBQXVDLENBQUMsR0FBVztRQUNqRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1lBQ3BDLGlFQUFpRTtZQUNqRSxTQUFTLEVBQUUsSUFBQSxtQkFBUSxFQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsY0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6RyxTQUFTLEVBQUUsSUFBSSxVQUFVLEVBQUU7U0FDNUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNiLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBQSxnQkFBSyxFQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsdUJBQXVCLENBQUMsT0FBbUI7UUFDekMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBQSx1QkFBWSxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUYsQ0FBQztDQUNGO0FBMUVELDBCQTBFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleXJpbmcgfSBmcm9tICdAcG9sa2Fkb3Qva2V5cmluZyc7XG5pbXBvcnQgeyBjcmVhdGVQYWlyIH0gZnJvbSAnQHBvbGthZG90L2tleXJpbmcvcGFpcic7XG5pbXBvcnQgeyBLZXlyaW5nUGFpciB9IGZyb20gJ0Bwb2xrYWRvdC9rZXlyaW5nL3R5cGVzJztcbmltcG9ydCB7XG4gIERvdEFkZHJlc3NGb3JtYXQsXG4gIERlZmF1bHRLZXlzLFxuICBFZDI1NTE5S2V5UGFpcixcbiAgaXNCYXNlNTgsXG4gIEtleVBhaXJPcHRpb25zLFxuICB0b0hleCxcbiAgdG9VaW50OEFycmF5LFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IGJzNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgKiBhcyBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5cbmNvbnN0IFRZUEUgPSAnZWQyNTUxOSc7XG5jb25zdCBrZXlyaW5nID0gbmV3IEtleXJpbmcoeyB0eXBlOiBUWVBFIH0pO1xuXG5leHBvcnQgY2xhc3MgS2V5UGFpciBleHRlbmRzIEVkMjU1MTlLZXlQYWlyIHtcbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci4gQnkgZGVmYXVsdCwgY3JlYXRlcyBhIGtleSBwYWlyIHdpdGggYSByYW5kb20gbWFzdGVyIHNlZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7IEtleVBhaXJPcHRpb25zIH0gc291cmNlIEVpdGhlciBhIG1hc3RlciBzZWVkLCBhIHByaXZhdGUga2V5LCBvciBhIHB1YmxpYyBrZXlcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNvdXJjZT86IEtleVBhaXJPcHRpb25zKSB7XG4gICAgc3VwZXIoc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBLZXlyaW5nUGFpciBmb3Igc2lnbmluZyBhIGRvdCB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMge0tleXJpbmdQYWlyfSBkb3QgS2V5cmluZ1BhaXJcbiAgICpcbiAgICogQHNlZSBodHRwczovL3BvbGthZG90LmpzLm9yZy9kb2NzL2FwaS9zdGFydC9rZXlyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUG9sa2Fkb3RQYWlyKCk6IEtleXJpbmdQYWlyIHtcbiAgICBjb25zdCBzZWNyZXRLZXkgPSB0aGlzLmtleVBhaXIucHJ2ID8gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20odGhpcy5rZXlQYWlyLnBydiwgJ2hleCcpKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbSh0aGlzLmtleVBhaXIucHViLCAnaGV4JykpO1xuICAgIHJldHVybiBjcmVhdGVQYWlyKHsgdG9TUzU4OiBrZXlyaW5nLmVuY29kZUFkZHJlc3MsIHR5cGU6IFRZUEUgfSwgeyBzZWNyZXRLZXksIHB1YmxpY0tleSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgLy8gaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9sZWFybi1hY2NvdW50cyNhZGRyZXNzLWZvcm1hdFxuICAgKiBSZXR1cm5zIHRoZSBhZGRyZXNzIGluIGVpdGhlciBtYWlubmV0IHBvbGthZG90IGZvcm1hdCAoc3RhcnRzIHdpdGggMSlcbiAgICogb3Igc3Vic3RyYXRlIGZvcm1hdCB1c2VkIGZvciB3ZXN0ZW5kIChzdGFydHMgd2l0aCA1KVxuICAgKi9cbiAgZ2V0QWRkcmVzcyhmb3JtYXQ6IERvdEFkZHJlc3NGb3JtYXQpOiBzdHJpbmcge1xuICAgIGxldCBlbmNvZGVkQWRkcmVzcyA9IHRoaXMuY3JlYXRlUG9sa2Fkb3RQYWlyKCkuYWRkcmVzcztcbiAgICBlbmNvZGVkQWRkcmVzcyA9IGtleXJpbmcuZW5jb2RlQWRkcmVzcyhlbmNvZGVkQWRkcmVzcywgZm9ybWF0IGFzIG51bWJlcik7XG5cbiAgICByZXR1cm4gZW5jb2RlZEFkZHJlc3M7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0S2V5cygpOiBEZWZhdWx0S2V5cyB7XG4gICAgY29uc3QgcmVzdWx0OiBEZWZhdWx0S2V5cyA9IHsgcHViOiB0aGlzLmtleVBhaXIucHViIH07XG4gICAgaWYgKHRoaXMua2V5UGFpci5wcnYpIHtcbiAgICAgIHJlc3VsdC5wcnYgPSB0aGlzLmtleVBhaXIucHJ2O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHJlY29yZEtleXNGcm9tUHJpdmF0ZUtleUluUHJvdG9jb2xGb3JtYXQocHJ2OiBzdHJpbmcpOiBEZWZhdWx0S2V5cyB7XG4gICAgY29uc3QgZGVjb2RlZFNlZWQgPSB1dGlscy5kZWNvZGVTZWVkKHBydik7XG4gICAgY29uc3QgYnVmZmVyRnJvbVNlZWQgPSBCdWZmZXIuZnJvbShkZWNvZGVkU2VlZC5zZWVkKTtcbiAgICByZXR1cm4gdXRpbHMua2V5UGFpckZyb21TZWVkKGJ1ZmZlckZyb21TZWVkKS5rZXlQYWlyO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHJlY29yZEtleXNGcm9tUHVibGljS2V5SW5Qcm90b2NvbEZvcm1hdChwdWI6IHN0cmluZyk6IERlZmF1bHRLZXlzIHtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBrZXlyaW5nLmFkZEZyb21QYWlyKHtcbiAgICAgIC8vIHRzcyBjb21tb24gcHViIGlzIGluIGJhc2U1OCBmb3JtYXQgYW5kIGRlY29kZXMgdG8gbGVuZ3RoIG9mIDMyXG4gICAgICBwdWJsaWNLZXk6IGlzQmFzZTU4KHB1YiwgMzIpID8gbmV3IFVpbnQ4QXJyYXkoYnM1OC5kZWNvZGUocHViKSkgOiBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSksXG4gICAgICBzZWNyZXRLZXk6IG5ldyBVaW50OEFycmF5KCksXG4gICAgfSkucHVibGljS2V5O1xuICAgIHJldHVybiB7IHB1YjogdG9IZXgocHVibGljS2V5KSB9O1xuICB9XG5cbiAgLyoqXG4gICAqICBTaWduIHRoZSBtZXNzYWdlIGluIFVpbnQ4QXJyYXlcbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBtZXNzYWdlIHRvIGJlIHNpZ25lZFxuICAgKiBAcmV0dXJucyB7VWludDhBcnJheX0gc2lnbmVkIG1lc3NhZ2VcbiAgICovXG4gIHNpZ25NZXNzYWdlaW5VaW50OEFycmF5KG1lc3NhZ2U6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCB7IHBydiB9ID0gdGhpcy5rZXlQYWlyO1xuICAgIGlmICghcHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gICAgcmV0dXJuIG5hY2wuc2lnbi5kZXRhY2hlZChtZXNzYWdlLCBuYWNsLnNpZ24ua2V5UGFpci5mcm9tU2VlZCh0b1VpbnQ4QXJyYXkocHJ2KSkuc2VjcmV0S2V5KTtcbiAgfVxufVxuIl19
@@ -1,84 +0,0 @@
1
- import { BaseAddress, TransactionType } from '@bitgo/sdk-core';
2
- import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
- import { DecodedSignedTx, DecodedSigningPayload, UnsignedTransaction } from '@substrate/txwrapper-core';
4
- import { ProxyType } from './iface';
5
- import { Transaction } from './transaction';
6
- import { TransactionBuilder } from './transactionBuilder';
7
- export declare abstract class NativeTransferBuilder extends TransactionBuilder {
8
- protected _sweepFreeBalance: boolean;
9
- protected _keepAddressAlive: boolean;
10
- protected _amount: string;
11
- protected _to: string;
12
- protected _owner: string;
13
- protected _forceProxyType: ProxyType;
14
- constructor(_coinConfig: Readonly<CoinConfig>);
15
- /**
16
- *
17
- * Dispatch the given call from an account that the sender is authorised for through add_proxy.
18
- *
19
- * @returns {UnsignedTransaction} an unsigned Dot transaction
20
- *
21
- * @see https://polkadot.js.org/docs/substrate/extrinsics/#proxy
22
- */
23
- protected buildTransaction(): UnsignedTransaction;
24
- protected get transactionType(): TransactionType;
25
- /**
26
- *
27
- * Set this to be a sweep transaction, using TransferAll with keepAlive set to true by default.
28
- * If keepAlive is false, the entire address will be swept (including the 1 DOT minimum).
29
- *
30
- * @param {boolean} keepAlive - keep the address alive after this sweep
31
- * @returns {TransferBuilder} This transfer builder.
32
- *
33
- * @see https://github.com/paritytech/txwrapper-core/blob/main/docs/modules/txwrapper_substrate_src.methods.balances.md#transferall
34
- */
35
- sweep(keepAlive?: boolean): this;
36
- /**
37
- *
38
- * The amount for transfer transaction.
39
- *
40
- * @param {string} amount
41
- * @returns {TransferBuilder} This transfer builder.
42
- *
43
- * @see https://wiki.polkadot.network/docs/build-protocol-info
44
- */
45
- amount(amount: string): this;
46
- /**
47
- *
48
- * The destination address for transfer transaction.
49
- *
50
- * @param {string} dest
51
- * @returns {TransferBuilder} This transfer builder.
52
- *
53
- * @see https://wiki.polkadot.network/docs/build-protocol-info
54
- */
55
- to({ address }: BaseAddress): this;
56
- /**
57
- *
58
- * The real address of the original tx
59
- *
60
- * @param {BaseAddress} real
61
- * @returns {TransferBuilder} This builder.
62
- *
63
- * @see https://wiki.polkadot.network/docs/learn-proxies#why-use-a-proxy
64
- */
65
- owner(owner: BaseAddress): this;
66
- /**
67
- *
68
- * The proxy type to execute
69
- *
70
- * @param {proxyType} forceProxyType
71
- * @returns {TransferBuilder} This builder.
72
- *
73
- * @see https://wiki.polkadot.network/docs/learn-proxies#proxy-types
74
- */
75
- forceProxyType(forceProxyType: ProxyType): this;
76
- /** @inheritdoc */
77
- validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx, rawTransaction: string): void;
78
- /** @inheritdoc */
79
- protected fromImplementation(rawTransaction: string): Transaction;
80
- /** @inheritdoc */
81
- validateTransaction(_: Transaction): void;
82
- private validateFields;
83
- }
84
- //# sourceMappingURL=nativeTransferBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nativeTransferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/nativeTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA0C,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAExG,OAAO,EAA0B,SAAS,EAAiC,MAAM,SAAS,CAAC;AAG3F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,8BAAsB,qBAAsB,SAAQ,kBAAkB;IACpE,SAAS,CAAC,iBAAiB,UAAS;IACpC,SAAS,CAAC,iBAAiB,UAAQ;IACnC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC;gBAEzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;;;OAOG;IACH,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IAqCjD,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI;IAQhC;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B;;;;;;;;OAQG;IACH,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,IAAI;IAMlC;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAM/B;;;;;;;;OAQG;IACH,cAAc,CAAC,cAAc,EAAE,SAAS,GAAG,IAAI;IAK/C,kBAAkB;IAClB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IA0B7G,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAsDjE,kBAAkB;IAClB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAKzC,OAAO,CAAC,cAAc;CAgBvB"}
@@ -1,219 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.NativeTransferBuilder = void 0;
7
- const sdk_core_1 = require("@bitgo/sdk-core");
8
- const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
9
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
10
- const iface_1 = require("./iface");
11
- const iface_utils_1 = require("./iface_utils");
12
- const singletonRegistry_1 = require("./singletonRegistry");
13
- const transactionBuilder_1 = require("./transactionBuilder");
14
- const txnSchema_1 = require("./txnSchema");
15
- const utils_1 = __importDefault(require("./utils"));
16
- class NativeTransferBuilder extends transactionBuilder_1.TransactionBuilder {
17
- constructor(_coinConfig) {
18
- super(_coinConfig);
19
- this._sweepFreeBalance = false;
20
- this._keepAddressAlive = true;
21
- }
22
- /**
23
- *
24
- * Dispatch the given call from an account that the sender is authorised for through add_proxy.
25
- *
26
- * @returns {UnsignedTransaction} an unsigned Dot transaction
27
- *
28
- * @see https://polkadot.js.org/docs/substrate/extrinsics/#proxy
29
- */
30
- buildTransaction() {
31
- const baseTxInfo = this.createBaseTxInfo();
32
- let transferTx;
33
- if (this._sweepFreeBalance) {
34
- transferTx = txwrapper_polkadot_1.methods.balances.transferAll({
35
- dest: { id: this._to },
36
- keepAlive: this._keepAddressAlive,
37
- }, baseTxInfo.baseTxInfo, baseTxInfo.options);
38
- }
39
- else {
40
- transferTx = txwrapper_polkadot_1.methods.balances.transferKeepAlive({
41
- value: this._amount,
42
- dest: { id: this._to },
43
- }, baseTxInfo.baseTxInfo, baseTxInfo.options);
44
- }
45
- if (!this._owner) {
46
- return transferTx;
47
- }
48
- return txwrapper_polkadot_1.methods.proxy.proxy({
49
- real: this._owner,
50
- forceProxyType: this._forceProxyType,
51
- call: transferTx.method,
52
- }, baseTxInfo.baseTxInfo, baseTxInfo.options);
53
- }
54
- get transactionType() {
55
- return sdk_core_1.TransactionType.Send;
56
- }
57
- /**
58
- *
59
- * Set this to be a sweep transaction, using TransferAll with keepAlive set to true by default.
60
- * If keepAlive is false, the entire address will be swept (including the 1 DOT minimum).
61
- *
62
- * @param {boolean} keepAlive - keep the address alive after this sweep
63
- * @returns {TransferBuilder} This transfer builder.
64
- *
65
- * @see https://github.com/paritytech/txwrapper-core/blob/main/docs/modules/txwrapper_substrate_src.methods.balances.md#transferall
66
- */
67
- sweep(keepAlive) {
68
- this._sweepFreeBalance = true;
69
- if (keepAlive !== undefined) {
70
- this._keepAddressAlive = keepAlive;
71
- }
72
- return this;
73
- }
74
- /**
75
- *
76
- * The amount for transfer transaction.
77
- *
78
- * @param {string} amount
79
- * @returns {TransferBuilder} This transfer builder.
80
- *
81
- * @see https://wiki.polkadot.network/docs/build-protocol-info
82
- */
83
- amount(amount) {
84
- this.validateValue(new bignumber_js_1.default(amount));
85
- this._amount = amount;
86
- return this;
87
- }
88
- /**
89
- *
90
- * The destination address for transfer transaction.
91
- *
92
- * @param {string} dest
93
- * @returns {TransferBuilder} This transfer builder.
94
- *
95
- * @see https://wiki.polkadot.network/docs/build-protocol-info
96
- */
97
- to({ address }) {
98
- this.validateAddress({ address });
99
- this._to = address;
100
- return this;
101
- }
102
- /**
103
- *
104
- * The real address of the original tx
105
- *
106
- * @param {BaseAddress} real
107
- * @returns {TransferBuilder} This builder.
108
- *
109
- * @see https://wiki.polkadot.network/docs/learn-proxies#why-use-a-proxy
110
- */
111
- owner(owner) {
112
- this.validateAddress({ address: owner.address });
113
- this._owner = owner.address;
114
- return this;
115
- }
116
- /**
117
- *
118
- * The proxy type to execute
119
- *
120
- * @param {proxyType} forceProxyType
121
- * @returns {TransferBuilder} This builder.
122
- *
123
- * @see https://wiki.polkadot.network/docs/learn-proxies#proxy-types
124
- */
125
- forceProxyType(forceProxyType) {
126
- this._forceProxyType = forceProxyType;
127
- return this;
128
- }
129
- /** @inheritdoc */
130
- validateDecodedTransaction(decodedTxn, rawTransaction) {
131
- if (decodedTxn.method?.name === iface_1.MethodNames.TransferKeepAlive) {
132
- const txMethod = decodedTxn.method.args;
133
- const amount = `${txMethod.value}`;
134
- const to = txMethod.dest.id;
135
- const validationResult = txnSchema_1.TransferTransactionSchema.validate({ amount, to });
136
- if (validationResult.error) {
137
- throw new sdk_core_1.InvalidTransactionError(`Transfer Transaction validation failed: ${validationResult.error.message}`);
138
- }
139
- }
140
- else if (decodedTxn.method?.name === iface_1.MethodNames.Proxy) {
141
- const txMethod = decodedTxn.method.args;
142
- const real = (0, iface_utils_1.getAddress)(txMethod);
143
- const forceProxyType = txMethod.forceProxyType;
144
- const decodedCall = utils_1.default.decodeCallMethod(rawTransaction, {
145
- registry: singletonRegistry_1.SingletonRegistry.getInstance(this._material),
146
- metadataRpc: this._material.metadata,
147
- });
148
- const amount = `${decodedCall.value}`;
149
- const to = decodedCall.dest.id;
150
- const validationResult = txnSchema_1.ProxyTransactionSchema.validate({ real, forceProxyType, amount, to });
151
- if (validationResult.error) {
152
- throw new sdk_core_1.InvalidTransactionError(`Proxy Transaction validation failed: ${validationResult.error.message}`);
153
- }
154
- }
155
- }
156
- /** @inheritdoc */
157
- fromImplementation(rawTransaction) {
158
- const tx = super.fromImplementation(rawTransaction);
159
- if (this._method?.name === iface_1.MethodNames.TransferKeepAlive) {
160
- const txMethod = this._method.args;
161
- this.amount(txMethod.value);
162
- this.to({
163
- address: utils_1.default.decodeDotAddress(txMethod.dest.id, utils_1.default.getAddressFormat(this._coinConfig.name)),
164
- });
165
- }
166
- else if (this._method?.name === iface_1.MethodNames.TransferAll) {
167
- this._sweepFreeBalance = true;
168
- const txMethod = this._method.args;
169
- this.sweep(txMethod.keepAlive);
170
- this.to({
171
- address: utils_1.default.decodeDotAddress(txMethod.dest.id, utils_1.default.getAddressFormat(this._coinConfig.name)),
172
- });
173
- }
174
- else if (this._method?.name === iface_1.MethodNames.Proxy) {
175
- const txMethod = this._method.args;
176
- this.owner({
177
- address: utils_1.default.decodeDotAddress((0, iface_utils_1.getAddress)(txMethod), utils_1.default.getAddressFormat(this._coinConfig.name)),
178
- });
179
- this.forceProxyType(txMethod.forceProxyType);
180
- const decodedCall = utils_1.default.decodeCallMethod(rawTransaction, {
181
- registry: singletonRegistry_1.SingletonRegistry.getInstance(this._material),
182
- metadataRpc: this._material.metadata,
183
- });
184
- if (!decodedCall.value || !decodedCall.dest) {
185
- throw new sdk_core_1.InvalidTransactionError(`Invalid Proxy Transaction Method: ${this._method?.name}. Expected transferKeepAlive`);
186
- }
187
- this.amount(`${decodedCall.value}`);
188
- this.to({
189
- address: utils_1.default.decodeDotAddress(decodedCall.dest.id, utils_1.default.getAddressFormat(this._coinConfig.name)),
190
- });
191
- }
192
- else {
193
- throw new sdk_core_1.InvalidTransactionError(`Invalid Transaction Type: ${this._method?.name}. Expected a transferKeepAlive or a proxy transferKeepAlive transaction`);
194
- }
195
- return tx;
196
- }
197
- /** @inheritdoc */
198
- validateTransaction(_) {
199
- super.validateTransaction(_);
200
- this.validateFields(this._to, this._amount, this._owner, this._forceProxyType);
201
- }
202
- validateFields(to, amount, real, forceProxyType) {
203
- let validationResult;
204
- if (forceProxyType) {
205
- validationResult = txnSchema_1.ProxyTransactionSchema.validate({ to, amount, real, forceProxyType });
206
- }
207
- else if (this._sweepFreeBalance) {
208
- validationResult = txnSchema_1.TransferAllTransactionSchema.validate({ to });
209
- }
210
- else {
211
- validationResult = txnSchema_1.TransferTransactionSchema.validate({ amount, to });
212
- }
213
- if (validationResult.error) {
214
- throw new sdk_core_1.InvalidTransactionError(`Proxy/TransferAll/TransferKeepAlive Transaction validation failed: ${validationResult.error.message}`);
215
- }
216
- }
217
- }
218
- exports.NativeTransferBuilder = NativeTransferBuilder;
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlVHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9uYXRpdmVUcmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXVHO0FBRXZHLHNFQUF3RDtBQUV4RCxnRUFBcUM7QUFDckMsbUNBQTJGO0FBQzNGLCtDQUEyQztBQUMzQywyREFBd0Q7QUFFeEQsNkRBQTBEO0FBQzFELDJDQUE4RztBQUM5RyxvREFBNEI7QUFFNUIsTUFBc0IscUJBQXNCLFNBQVEsdUNBQWtCO0lBUXBFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBUlgsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFHLElBQUksQ0FBQztJQVFuQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNPLGdCQUFnQjtRQUN4QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLFVBQVUsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsVUFBVSxHQUFHLDRCQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FDdkM7Z0JBQ0UsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RCLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCO2FBQ2xDLEVBQ0QsVUFBVSxDQUFDLFVBQVUsRUFDckIsVUFBVSxDQUFDLE9BQU8sQ0FDbkIsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sVUFBVSxHQUFHLDRCQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUM3QztnQkFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ25CLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO2FBQ3ZCLEVBQ0QsVUFBVSxDQUFDLFVBQVUsRUFDckIsVUFBVSxDQUFDLE9BQU8sQ0FDbkIsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxPQUFPLDRCQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FDeEI7WUFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDakIsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3BDLElBQUksRUFBRSxVQUFVLENBQUMsTUFBTTtTQUN4QixFQUNELFVBQVUsQ0FBQyxVQUFVLEVBQ3JCLFVBQVUsQ0FBQyxPQUFPLENBQ25CLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILEtBQUssQ0FBQyxTQUFtQjtRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFDckMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLE1BQWM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLHNCQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBZTtRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxLQUFrQjtRQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILGNBQWMsQ0FBQyxjQUF5QjtRQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsMEJBQTBCLENBQUMsVUFBbUQsRUFBRSxjQUFzQjtRQUNwRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxLQUFLLG1CQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM5RCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQStCLENBQUM7WUFDbkUsTUFBTSxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxnQkFBZ0IsR0FBRyxxQ0FBeUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RSxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixNQUFNLElBQUksa0NBQXVCLENBQUMsMkNBQTJDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2pILENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksS0FBSyxtQkFBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBNEIsQ0FBQztZQUNoRSxNQUFNLElBQUksR0FBRyxJQUFBLHdCQUFVLEVBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUMvQyxNQUFNLFdBQVcsR0FBRyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFO2dCQUN6RCxRQUFRLEVBQUUscUNBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3ZELFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7YUFDckMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEMsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxnQkFBZ0IsR0FBRyxrQ0FBc0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9GLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3Q0FBd0MsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDOUcsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsY0FBc0I7UUFDakQsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEtBQUssbUJBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBb0IsQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNOLE9BQU8sRUFBRSxlQUFLLENBQUMsZ0JBQWdCLENBQzdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUNoQixlQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFxQixDQUFDLENBQy9EO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEtBQUssbUJBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBdUIsQ0FBQztZQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNOLE9BQU8sRUFBRSxlQUFLLENBQUMsZ0JBQWdCLENBQzdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUNoQixlQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFxQixDQUFDLENBQy9EO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQWlCLENBQUM7WUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDVCxPQUFPLEVBQUUsZUFBSyxDQUFDLGdCQUFnQixDQUM3QixJQUFBLHdCQUFVLEVBQUMsUUFBUSxDQUFDLEVBQ3BCLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQXFCLENBQUMsQ0FDL0Q7YUFDRixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM3QyxNQUFNLFdBQVcsR0FBRyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFO2dCQUN6RCxRQUFRLEVBQUUscUNBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3ZELFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7YUFDckMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzVDLE1BQU0sSUFBSSxrQ0FBdUIsQ0FDL0IscUNBQXFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSw4QkFBOEIsQ0FDdEYsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDTixPQUFPLEVBQUUsZUFBSyxDQUFDLGdCQUFnQixDQUM3QixXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFDbkIsZUFBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBcUIsQ0FBQyxDQUMvRDthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLGtDQUF1QixDQUMvQiw2QkFBNkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLHlFQUF5RSxDQUN6SCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELGtCQUFrQjtJQUNsQixtQkFBbUIsQ0FBQyxDQUFjO1FBQ2hDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRU8sY0FBYyxDQUFDLEVBQVUsRUFBRSxNQUFjLEVBQUUsSUFBYSxFQUFFLGNBQXVCO1FBQ3ZGLElBQUksZ0JBQWdCLENBQUM7UUFDckIsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixnQkFBZ0IsR0FBRyxrQ0FBc0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2xDLGdCQUFnQixHQUFHLHdDQUE0QixDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQzthQUFNLENBQUM7WUFDTixnQkFBZ0IsR0FBRyxxQ0FBeUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksa0NBQXVCLENBQy9CLHNFQUFzRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQ3ZHLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBbFBELHNEQWtQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VBZGRyZXNzLCBEb3RBc3NldFR5cGVzLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBtZXRob2RzIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgRGVjb2RlZFNpZ25lZFR4LCBEZWNvZGVkU2lnbmluZ1BheWxvYWQsIFVuc2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IE1ldGhvZE5hbWVzLCBQcm94eUFyZ3MsIFByb3h5VHlwZSwgVHJhbnNmZXJBbGxBcmdzLCBUcmFuc2ZlckFyZ3MgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGdldEFkZHJlc3MgfSBmcm9tICcuL2lmYWNlX3V0aWxzJztcbmltcG9ydCB7IFNpbmdsZXRvblJlZ2lzdHJ5IH0gZnJvbSAnLi9zaW5nbGV0b25SZWdpc3RyeSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgUHJveHlUcmFuc2FjdGlvblNjaGVtYSwgVHJhbnNmZXJBbGxUcmFuc2FjdGlvblNjaGVtYSwgVHJhbnNmZXJUcmFuc2FjdGlvblNjaGVtYSB9IGZyb20gJy4vdHhuU2NoZW1hJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5hdGl2ZVRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfc3dlZXBGcmVlQmFsYW5jZSA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX2tlZXBBZGRyZXNzQWxpdmUgPSB0cnVlO1xuICBwcm90ZWN0ZWQgX2Ftb3VudDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3RvOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfb3duZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9mb3JjZVByb3h5VHlwZTogUHJveHlUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBEaXNwYXRjaCB0aGUgZ2l2ZW4gY2FsbCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcmlzZWQgZm9yIHRocm91Z2ggYWRkX3Byb3h5LlxuICAgKlxuICAgKiBAcmV0dXJucyB7VW5zaWduZWRUcmFuc2FjdGlvbn0gYW4gdW5zaWduZWQgRG90IHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9wb2xrYWRvdC5qcy5vcmcvZG9jcy9zdWJzdHJhdGUvZXh0cmluc2ljcy8jcHJveHlcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFRyYW5zYWN0aW9uKCk6IFVuc2lnbmVkVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IGJhc2VUeEluZm8gPSB0aGlzLmNyZWF0ZUJhc2VUeEluZm8oKTtcbiAgICBsZXQgdHJhbnNmZXJUeDtcbiAgICBpZiAodGhpcy5fc3dlZXBGcmVlQmFsYW5jZSkge1xuICAgICAgdHJhbnNmZXJUeCA9IG1ldGhvZHMuYmFsYW5jZXMudHJhbnNmZXJBbGwoXG4gICAgICAgIHtcbiAgICAgICAgICBkZXN0OiB7IGlkOiB0aGlzLl90byB9LFxuICAgICAgICAgIGtlZXBBbGl2ZTogdGhpcy5fa2VlcEFkZHJlc3NBbGl2ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYmFzZVR4SW5mby5iYXNlVHhJbmZvLFxuICAgICAgICBiYXNlVHhJbmZvLm9wdGlvbnNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyYW5zZmVyVHggPSBtZXRob2RzLmJhbGFuY2VzLnRyYW5zZmVyS2VlcEFsaXZlKFxuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IHRoaXMuX2Ftb3VudCxcbiAgICAgICAgICBkZXN0OiB7IGlkOiB0aGlzLl90byB9LFxuICAgICAgICB9LFxuICAgICAgICBiYXNlVHhJbmZvLmJhc2VUeEluZm8sXG4gICAgICAgIGJhc2VUeEluZm8ub3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX293bmVyKSB7XG4gICAgICByZXR1cm4gdHJhbnNmZXJUeDtcbiAgICB9XG4gICAgcmV0dXJuIG1ldGhvZHMucHJveHkucHJveHkoXG4gICAgICB7XG4gICAgICAgIHJlYWw6IHRoaXMuX293bmVyLFxuICAgICAgICBmb3JjZVByb3h5VHlwZTogdGhpcy5fZm9yY2VQcm94eVR5cGUsXG4gICAgICAgIGNhbGw6IHRyYW5zZmVyVHgubWV0aG9kLFxuICAgICAgfSxcbiAgICAgIGJhc2VUeEluZm8uYmFzZVR4SW5mbyxcbiAgICAgIGJhc2VUeEluZm8ub3B0aW9uc1xuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBTZXQgdGhpcyB0byBiZSBhIHN3ZWVwIHRyYW5zYWN0aW9uLCB1c2luZyBUcmFuc2ZlckFsbCB3aXRoIGtlZXBBbGl2ZSBzZXQgdG8gdHJ1ZSBieSBkZWZhdWx0LlxuICAgKiBJZiBrZWVwQWxpdmUgaXMgZmFsc2UsIHRoZSBlbnRpcmUgYWRkcmVzcyB3aWxsIGJlIHN3ZXB0IChpbmNsdWRpbmcgdGhlIDEgRE9UIG1pbmltdW0pLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGtlZXBBbGl2ZSAtIGtlZXAgdGhlIGFkZHJlc3MgYWxpdmUgYWZ0ZXIgdGhpcyBzd2VlcFxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSBUaGlzIHRyYW5zZmVyIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvdHh3cmFwcGVyLWNvcmUvYmxvYi9tYWluL2RvY3MvbW9kdWxlcy90eHdyYXBwZXJfc3Vic3RyYXRlX3NyYy5tZXRob2RzLmJhbGFuY2VzLm1kI3RyYW5zZmVyYWxsXG4gICAqL1xuICBzd2VlcChrZWVwQWxpdmU/OiBib29sZWFuKTogdGhpcyB7XG4gICAgdGhpcy5fc3dlZXBGcmVlQmFsYW5jZSA9IHRydWU7XG4gICAgaWYgKGtlZXBBbGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9rZWVwQWRkcmVzc0FsaXZlID0ga2VlcEFsaXZlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBUaGUgYW1vdW50IGZvciB0cmFuc2ZlciB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudFxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSBUaGlzIHRyYW5zZmVyIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9idWlsZC1wcm90b2NvbC1pbmZvXG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihhbW91bnQpKTtcbiAgICB0aGlzLl9hbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogVGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIHRyYW5zZmVyIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzdFxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSBUaGlzIHRyYW5zZmVyIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9idWlsZC1wcm90b2NvbC1pbmZvXG4gICAqL1xuICB0byh7IGFkZHJlc3MgfTogQmFzZUFkZHJlc3MpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3MgfSk7XG4gICAgdGhpcy5fdG8gPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIFRoZSByZWFsIGFkZHJlc3Mgb2YgdGhlIG9yaWdpbmFsIHR4XG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZUFkZHJlc3N9IHJlYWxcbiAgICogQHJldHVybnMge1RyYW5zZmVyQnVpbGRlcn0gVGhpcyBidWlsZGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd2lraS5wb2xrYWRvdC5uZXR3b3JrL2RvY3MvbGVhcm4tcHJveGllcyN3aHktdXNlLWEtcHJveHlcbiAgICovXG4gIG93bmVyKG93bmVyOiBCYXNlQWRkcmVzcyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzczogb3duZXIuYWRkcmVzcyB9KTtcbiAgICB0aGlzLl9vd25lciA9IG93bmVyLmFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogVGhlIHByb3h5IHR5cGUgdG8gZXhlY3V0ZVxuICAgKlxuICAgKiBAcGFyYW0ge3Byb3h5VHlwZX0gZm9yY2VQcm94eVR5cGVcbiAgICogQHJldHVybnMge1RyYW5zZmVyQnVpbGRlcn0gVGhpcyBidWlsZGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd2lraS5wb2xrYWRvdC5uZXR3b3JrL2RvY3MvbGVhcm4tcHJveGllcyNwcm94eS10eXBlc1xuICAgKi9cbiAgZm9yY2VQcm94eVR5cGUoZm9yY2VQcm94eVR5cGU6IFByb3h5VHlwZSk6IHRoaXMge1xuICAgIHRoaXMuX2ZvcmNlUHJveHlUeXBlID0gZm9yY2VQcm94eVR5cGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24oZGVjb2RlZFR4bjogRGVjb2RlZFNpZ25pbmdQYXlsb2FkIHwgRGVjb2RlZFNpZ25lZFR4LCByYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGRlY29kZWRUeG4ubWV0aG9kPy5uYW1lID09PSBNZXRob2ROYW1lcy5UcmFuc2ZlcktlZXBBbGl2ZSkge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIHVua25vd24gYXMgVHJhbnNmZXJBcmdzO1xuICAgICAgY29uc3QgYW1vdW50ID0gYCR7dHhNZXRob2QudmFsdWV9YDtcbiAgICAgIGNvbnN0IHRvID0gdHhNZXRob2QuZGVzdC5pZDtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBUcmFuc2ZlclRyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlKHsgYW1vdW50LCB0byB9KTtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgVHJhbnNmZXIgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGVjb2RlZFR4bi5tZXRob2Q/Lm5hbWUgPT09IE1ldGhvZE5hbWVzLlByb3h5KSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgdW5rbm93biBhcyBQcm94eUFyZ3M7XG4gICAgICBjb25zdCByZWFsID0gZ2V0QWRkcmVzcyh0eE1ldGhvZCk7XG4gICAgICBjb25zdCBmb3JjZVByb3h5VHlwZSA9IHR4TWV0aG9kLmZvcmNlUHJveHlUeXBlO1xuICAgICAgY29uc3QgZGVjb2RlZENhbGwgPSB1dGlscy5kZWNvZGVDYWxsTWV0aG9kKHJhd1RyYW5zYWN0aW9uLCB7XG4gICAgICAgIHJlZ2lzdHJ5OiBTaW5nbGV0b25SZWdpc3RyeS5nZXRJbnN0YW5jZSh0aGlzLl9tYXRlcmlhbCksXG4gICAgICAgIG1ldGFkYXRhUnBjOiB0aGlzLl9tYXRlcmlhbC5tZXRhZGF0YSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgYW1vdW50ID0gYCR7ZGVjb2RlZENhbGwudmFsdWV9YDtcbiAgICAgIGNvbnN0IHRvID0gZGVjb2RlZENhbGwuZGVzdC5pZDtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBQcm94eVRyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlKHsgcmVhbCwgZm9yY2VQcm94eVR5cGUsIGFtb3VudCwgdG8gfSk7XG4gICAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYFByb3h5IFRyYW5zYWN0aW9uIHZhbGlkYXRpb24gZmFpbGVkOiAke3ZhbGlkYXRpb25SZXN1bHQuZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gc3VwZXIuZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBpZiAodGhpcy5fbWV0aG9kPy5uYW1lID09PSBNZXRob2ROYW1lcy5UcmFuc2ZlcktlZXBBbGl2ZSkge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSB0aGlzLl9tZXRob2QuYXJncyBhcyBUcmFuc2ZlckFyZ3M7XG4gICAgICB0aGlzLmFtb3VudCh0eE1ldGhvZC52YWx1ZSk7XG4gICAgICB0aGlzLnRvKHtcbiAgICAgICAgYWRkcmVzczogdXRpbHMuZGVjb2RlRG90QWRkcmVzcyhcbiAgICAgICAgICB0eE1ldGhvZC5kZXN0LmlkLFxuICAgICAgICAgIHV0aWxzLmdldEFkZHJlc3NGb3JtYXQodGhpcy5fY29pbkNvbmZpZy5uYW1lIGFzIERvdEFzc2V0VHlwZXMpXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX21ldGhvZD8ubmFtZSA9PT0gTWV0aG9kTmFtZXMuVHJhbnNmZXJBbGwpIHtcbiAgICAgIHRoaXMuX3N3ZWVwRnJlZUJhbGFuY2UgPSB0cnVlO1xuICAgICAgY29uc3QgdHhNZXRob2QgPSB0aGlzLl9tZXRob2QuYXJncyBhcyBUcmFuc2ZlckFsbEFyZ3M7XG4gICAgICB0aGlzLnN3ZWVwKHR4TWV0aG9kLmtlZXBBbGl2ZSk7XG4gICAgICB0aGlzLnRvKHtcbiAgICAgICAgYWRkcmVzczogdXRpbHMuZGVjb2RlRG90QWRkcmVzcyhcbiAgICAgICAgICB0eE1ldGhvZC5kZXN0LmlkLFxuICAgICAgICAgIHV0aWxzLmdldEFkZHJlc3NGb3JtYXQodGhpcy5fY29pbkNvbmZpZy5uYW1lIGFzIERvdEFzc2V0VHlwZXMpXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX21ldGhvZD8ubmFtZSA9PT0gTWV0aG9kTmFtZXMuUHJveHkpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gdGhpcy5fbWV0aG9kLmFyZ3MgYXMgUHJveHlBcmdzO1xuICAgICAgdGhpcy5vd25lcih7XG4gICAgICAgIGFkZHJlc3M6IHV0aWxzLmRlY29kZURvdEFkZHJlc3MoXG4gICAgICAgICAgZ2V0QWRkcmVzcyh0eE1ldGhvZCksXG4gICAgICAgICAgdXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcylcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5mb3JjZVByb3h5VHlwZSh0eE1ldGhvZC5mb3JjZVByb3h5VHlwZSk7XG4gICAgICBjb25zdCBkZWNvZGVkQ2FsbCA9IHV0aWxzLmRlY29kZUNhbGxNZXRob2QocmF3VHJhbnNhY3Rpb24sIHtcbiAgICAgICAgcmVnaXN0cnk6IFNpbmdsZXRvblJlZ2lzdHJ5LmdldEluc3RhbmNlKHRoaXMuX21hdGVyaWFsKSxcbiAgICAgICAgbWV0YWRhdGFScGM6IHRoaXMuX21hdGVyaWFsLm1ldGFkYXRhLFxuICAgICAgfSk7XG4gICAgICBpZiAoIWRlY29kZWRDYWxsLnZhbHVlIHx8ICFkZWNvZGVkQ2FsbC5kZXN0KSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICBgSW52YWxpZCBQcm94eSBUcmFuc2FjdGlvbiBNZXRob2Q6ICR7dGhpcy5fbWV0aG9kPy5uYW1lfS4gRXhwZWN0ZWQgdHJhbnNmZXJLZWVwQWxpdmVgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmFtb3VudChgJHtkZWNvZGVkQ2FsbC52YWx1ZX1gKTtcbiAgICAgIHRoaXMudG8oe1xuICAgICAgICBhZGRyZXNzOiB1dGlscy5kZWNvZGVEb3RBZGRyZXNzKFxuICAgICAgICAgIGRlY29kZWRDYWxsLmRlc3QuaWQsXG4gICAgICAgICAgdXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcylcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIFRyYW5zYWN0aW9uIFR5cGU6ICR7dGhpcy5fbWV0aG9kPy5uYW1lfS4gRXhwZWN0ZWQgYSB0cmFuc2ZlcktlZXBBbGl2ZSBvciBhIHByb3h5IHRyYW5zZmVyS2VlcEFsaXZlIHRyYW5zYWN0aW9uYFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24oXzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci52YWxpZGF0ZVRyYW5zYWN0aW9uKF8pO1xuICAgIHRoaXMudmFsaWRhdGVGaWVsZHModGhpcy5fdG8sIHRoaXMuX2Ftb3VudCwgdGhpcy5fb3duZXIsIHRoaXMuX2ZvcmNlUHJveHlUeXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVGaWVsZHModG86IHN0cmluZywgYW1vdW50OiBzdHJpbmcsIHJlYWw/OiBzdHJpbmcsIGZvcmNlUHJveHlUeXBlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IHZhbGlkYXRpb25SZXN1bHQ7XG4gICAgaWYgKGZvcmNlUHJveHlUeXBlKSB7XG4gICAgICB2YWxpZGF0aW9uUmVzdWx0ID0gUHJveHlUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7IHRvLCBhbW91bnQsIHJlYWwsIGZvcmNlUHJveHlUeXBlIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fc3dlZXBGcmVlQmFsYW5jZSkge1xuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IFRyYW5zZmVyQWxsVHJhbnNhY3Rpb25TY2hlbWEudmFsaWRhdGUoeyB0byB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IFRyYW5zZmVyVHJhbnNhY3Rpb25TY2hlbWEudmFsaWRhdGUoeyBhbW91bnQsIHRvIH0pO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBQcm94eS9UcmFuc2ZlckFsbC9UcmFuc2ZlcktlZXBBbGl2ZSBUcmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHt2YWxpZGF0aW9uUmVzdWx0LmVycm9yLm1lc3NhZ2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==