@bitgo-beta/sdk-coin-rune 1.0.0-beta.133 → 1.0.0-beta.1330

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 (39) hide show
  1. package/dist/src/lib/constants.d.ts +5 -4
  2. package/dist/src/lib/constants.d.ts.map +1 -1
  3. package/dist/src/lib/constants.js +16 -10
  4. package/dist/src/lib/keyPair.d.ts.map +1 -1
  5. package/dist/src/lib/keyPair.js +3 -3
  6. package/dist/src/lib/utils.d.ts +1 -1
  7. package/dist/src/lib/utils.d.ts.map +1 -1
  8. package/dist/src/lib/utils.js +7 -8
  9. package/dist/src/rune.d.ts.map +1 -1
  10. package/dist/src/rune.js +8 -4
  11. package/dist/test/resources/rune.d.ts +74 -0
  12. package/dist/test/resources/rune.d.ts.map +1 -0
  13. package/dist/test/resources/rune.js +51 -0
  14. package/dist/test/resources/trune.d.ts +110 -0
  15. package/dist/test/resources/trune.d.ts.map +1 -0
  16. package/dist/test/resources/trune.js +102 -0
  17. package/dist/test/unit/keyPair.d.ts +2 -0
  18. package/dist/test/unit/keyPair.d.ts.map +1 -0
  19. package/dist/test/unit/keyPair.js +94 -0
  20. package/dist/test/unit/rune.d.ts +2 -0
  21. package/dist/test/unit/rune.d.ts.map +1 -0
  22. package/dist/test/unit/rune.js +369 -0
  23. package/dist/test/unit/transaction.d.ts +2 -0
  24. package/dist/test/unit/transaction.d.ts.map +1 -0
  25. package/dist/test/unit/transaction.js +146 -0
  26. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
  27. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  28. package/dist/test/unit/transactionBuilder/transactionBuilder.js +97 -0
  29. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  30. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  31. package/dist/test/unit/transactionBuilder/transferBuilder.js +202 -0
  32. package/dist/test/unit/utils.d.ts +2 -0
  33. package/dist/test/unit/utils.d.ts.map +1 -0
  34. package/dist/test/unit/utils.js +100 -0
  35. package/dist/tsconfig.tsbuildinfo +1 -0
  36. package/package.json +13 -10
  37. package/.eslintignore +0 -5
  38. package/.mocharc.yml +0 -8
  39. package/CHANGELOG.md +0 -94
@@ -1,11 +1,12 @@
1
- export declare const mainnetValidDenoms: string[];
1
+ export declare const validDenoms: string[];
2
2
  export declare const mainnetAccountAddressRegex: RegExp;
3
3
  export declare const mainnetValidatorAddressRegex: RegExp;
4
- export declare const MAINNET_ADDRESS_PREFIX = "thor";
5
- export declare const testnetValidDenoms: string[];
4
+ /** @deprecated Use `Networks.main.rune.addressPrefix` from `@bitgo-beta/statics` instead. */
5
+ export declare const MAINNET_ADDRESS_PREFIX: string;
6
6
  export declare const testnetAccountAddressRegex: RegExp;
7
7
  export declare const testnetValidatorAddressRegex: RegExp;
8
- export declare const TESTNET_ADDRESS_PREFIX = "sthor";
8
+ /** @deprecated Use `Networks.test.rune.addressPrefix` from `@bitgo-beta/statics` instead. */
9
+ export declare const TESTNET_ADDRESS_PREFIX: string;
9
10
  export declare const GAS_LIMIT = 200000;
10
11
  export declare const GAS_AMOUNT = "0";
11
12
  export declare const RUNE_FEES = "2000000";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,UAAW,CAAC;AAC3C,eAAO,MAAM,0BAA0B,QAAuD,CAAC;AAC/F,eAAO,MAAM,4BAA4B,QAAuD,CAAC;AACjG,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAE7C,eAAO,MAAM,kBAAkB,UAAW,CAAC;AAC3C,eAAO,MAAM,0BAA0B,QAAwD,CAAC;AAChG,eAAO,MAAM,4BAA4B,QAAwD,CAAC;AAClG,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,SAAS,YAAY,CAAC;AACnC,eAAO,MAAM,SAAS,QAAQ,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,UAAiE,CAAC;AAC1F,eAAO,MAAM,0BAA0B,QAA6E,CAAC;AACrH,eAAO,MAAM,4BAA4B,QAA6E,CAAC;AACvH,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB,QAAc,CAAC;AAElD,eAAO,MAAM,0BAA0B,QAA6E,CAAC;AACrH,eAAO,MAAM,4BAA4B,QAA6E,CAAC;AACvH,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB,QAAc,CAAC;AAElD,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,SAAS,YAAY,CAAC;AACnC,eAAO,MAAM,SAAS,QAAQ,CAAC"}
@@ -1,16 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ROOT_PATH = exports.RUNE_FEES = exports.GAS_AMOUNT = exports.GAS_LIMIT = exports.TESTNET_ADDRESS_PREFIX = exports.testnetValidatorAddressRegex = exports.testnetAccountAddressRegex = exports.testnetValidDenoms = exports.MAINNET_ADDRESS_PREFIX = exports.mainnetValidatorAddressRegex = exports.mainnetAccountAddressRegex = exports.mainnetValidDenoms = void 0;
4
- exports.mainnetValidDenoms = ['rune'];
5
- exports.mainnetAccountAddressRegex = /^(thor)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$/;
6
- exports.mainnetValidatorAddressRegex = /^(thor)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$/;
7
- exports.MAINNET_ADDRESS_PREFIX = 'thor';
8
- exports.testnetValidDenoms = ['rune'];
9
- exports.testnetAccountAddressRegex = /^(sthor)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$/;
10
- exports.testnetValidatorAddressRegex = /^(sthor)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$/;
11
- exports.TESTNET_ADDRESS_PREFIX = 'sthor';
3
+ exports.ROOT_PATH = exports.RUNE_FEES = exports.GAS_AMOUNT = exports.GAS_LIMIT = exports.TESTNET_ADDRESS_PREFIX = exports.testnetValidatorAddressRegex = exports.testnetAccountAddressRegex = exports.MAINNET_ADDRESS_PREFIX = exports.mainnetValidatorAddressRegex = exports.mainnetAccountAddressRegex = exports.validDenoms = void 0;
4
+ const abstract_cosmos_1 = require("@bitgo-beta/abstract-cosmos");
5
+ const statics_1 = require("@bitgo-beta/statics");
6
+ const cosmosUtils = new abstract_cosmos_1.CosmosUtils();
7
+ const MAINNET_HRP = statics_1.Networks.main.rune.addressPrefix;
8
+ const TESTNET_HRP = statics_1.Networks.test.rune.addressPrefix;
9
+ exports.validDenoms = ['rune', ...cosmosUtils.getTokenDenomsUsingCoinFamily('thor')];
10
+ exports.mainnetAccountAddressRegex = new RegExp(`^(${MAINNET_HRP})1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$`);
11
+ exports.mainnetValidatorAddressRegex = new RegExp(`^(${MAINNET_HRP})1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$`);
12
+ /** @deprecated Use `Networks.main.rune.addressPrefix` from `@bitgo-beta/statics` instead. */
13
+ exports.MAINNET_ADDRESS_PREFIX = MAINNET_HRP;
14
+ exports.testnetAccountAddressRegex = new RegExp(`^(${TESTNET_HRP})1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$`);
15
+ exports.testnetValidatorAddressRegex = new RegExp(`^(${TESTNET_HRP})1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$`);
16
+ /** @deprecated Use `Networks.test.rune.addressPrefix` from `@bitgo-beta/statics` instead. */
17
+ exports.TESTNET_ADDRESS_PREFIX = TESTNET_HRP;
12
18
  exports.GAS_LIMIT = 200000;
13
19
  exports.GAS_AMOUNT = '0'; // Gas amount should be zero for RUNE transactions, as fees (0.02 RUNE) is cut from sender balance directly in the transaction
14
20
  exports.RUNE_FEES = '2000000'; // https://dev.thorchain.org/concepts/fees.html#thorchain-native-rune
15
21
  exports.ROOT_PATH = 'm/0';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxrQkFBa0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLFFBQUEsMEJBQTBCLEdBQUcsb0RBQW9ELENBQUM7QUFDbEYsUUFBQSw0QkFBNEIsR0FBRyxvREFBb0QsQ0FBQztBQUNwRixRQUFBLHNCQUFzQixHQUFHLE1BQU0sQ0FBQztBQUVoQyxRQUFBLGtCQUFrQixHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsUUFBQSwwQkFBMEIsR0FBRyxxREFBcUQsQ0FBQztBQUNuRixRQUFBLDRCQUE0QixHQUFHLHFEQUFxRCxDQUFDO0FBQ3JGLFFBQUEsc0JBQXNCLEdBQUcsT0FBTyxDQUFDO0FBRWpDLFFBQUEsU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUNuQixRQUFBLFVBQVUsR0FBRyxHQUFHLENBQUMsQ0FBQyw4SEFBOEg7QUFDaEosUUFBQSxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMscUVBQXFFO0FBQzVGLFFBQUEsU0FBUyxHQUFHLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBtYWlubmV0VmFsaWREZW5vbXMgPSBbJ3J1bmUnXTtcbmV4cG9ydCBjb25zdCBtYWlubmV0QWNjb3VudEFkZHJlc3NSZWdleCA9IC9eKHRob3IpMShbJ3FwenJ5OXg4Z2YydHZkdzBzM2puNTRraGNlNm11YTdsXXszOH0pJC87XG5leHBvcnQgY29uc3QgbWFpbm5ldFZhbGlkYXRvckFkZHJlc3NSZWdleCA9IC9eKHRob3IpMShbJ3FwenJ5OXg4Z2YydHZkdzBzM2puNTRraGNlNm11YTdsXXszOH0pJC87XG5leHBvcnQgY29uc3QgTUFJTk5FVF9BRERSRVNTX1BSRUZJWCA9ICd0aG9yJztcblxuZXhwb3J0IGNvbnN0IHRlc3RuZXRWYWxpZERlbm9tcyA9IFsncnVuZSddO1xuZXhwb3J0IGNvbnN0IHRlc3RuZXRBY2NvdW50QWRkcmVzc1JlZ2V4ID0gL14oc3Rob3IpMShbJ3FwenJ5OXg4Z2YydHZkdzBzM2puNTRraGNlNm11YTdsXXszOH0pJC87XG5leHBvcnQgY29uc3QgdGVzdG5ldFZhbGlkYXRvckFkZHJlc3NSZWdleCA9IC9eKHN0aG9yKTEoWydxcHpyeTl4OGdmMnR2ZHcwczNqbjU0a2hjZTZtdWE3bF17Mzh9KSQvO1xuZXhwb3J0IGNvbnN0IFRFU1RORVRfQUREUkVTU19QUkVGSVggPSAnc3Rob3InO1xuXG5leHBvcnQgY29uc3QgR0FTX0xJTUlUID0gMjAwMDAwO1xuZXhwb3J0IGNvbnN0IEdBU19BTU9VTlQgPSAnMCc7IC8vIEdhcyBhbW91bnQgc2hvdWxkIGJlIHplcm8gZm9yIFJVTkUgdHJhbnNhY3Rpb25zLCBhcyBmZWVzICgwLjAyIFJVTkUpIGlzIGN1dCBmcm9tIHNlbmRlciBiYWxhbmNlIGRpcmVjdGx5IGluIHRoZSB0cmFuc2FjdGlvblxuZXhwb3J0IGNvbnN0IFJVTkVfRkVFUyA9ICcyMDAwMDAwJzsgLy8gaHR0cHM6Ly9kZXYudGhvcmNoYWluLm9yZy9jb25jZXB0cy9mZWVzLmh0bWwjdGhvcmNoYWluLW5hdGl2ZS1ydW5lXG5leHBvcnQgY29uc3QgUk9PVF9QQVRIID0gJ20vMCc7XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUVBQTBEO0FBQzFELGlEQUErQztBQUUvQyxNQUFNLFdBQVcsR0FBRyxJQUFJLDZCQUFXLEVBQUUsQ0FBQztBQUN0QyxNQUFNLFdBQVcsR0FBRyxrQkFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQ3JELE1BQU0sV0FBVyxHQUFHLGtCQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDeEMsUUFBQSxXQUFXLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsNkJBQTZCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM3RSxRQUFBLDBCQUEwQixHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssV0FBVyw4Q0FBOEMsQ0FBQyxDQUFDO0FBQ3hHLFFBQUEsNEJBQTRCLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxXQUFXLDhDQUE4QyxDQUFDLENBQUM7QUFDdkgsNkZBQTZGO0FBQ2hGLFFBQUEsc0JBQXNCLEdBQUcsV0FBVyxDQUFDO0FBRXJDLFFBQUEsMEJBQTBCLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxXQUFXLDhDQUE4QyxDQUFDLENBQUM7QUFDeEcsUUFBQSw0QkFBNEIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLFdBQVcsOENBQThDLENBQUMsQ0FBQztBQUN2SCw2RkFBNkY7QUFDaEYsUUFBQSxzQkFBc0IsR0FBRyxXQUFXLENBQUM7QUFFckMsUUFBQSxTQUFTLEdBQUcsTUFBTSxDQUFDO0FBQ25CLFFBQUEsVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFDLDhIQUE4SDtBQUNoSixRQUFBLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxxRUFBcUU7QUFDNUYsUUFBQSxTQUFTLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29zbW9zVXRpbHMgfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1jb3Ntb3MnO1xuaW1wb3J0IHsgTmV0d29ya3MgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuY29uc3QgY29zbW9zVXRpbHMgPSBuZXcgQ29zbW9zVXRpbHMoKTtcbmNvbnN0IE1BSU5ORVRfSFJQID0gTmV0d29ya3MubWFpbi5ydW5lLmFkZHJlc3NQcmVmaXg7XG5jb25zdCBURVNUTkVUX0hSUCA9IE5ldHdvcmtzLnRlc3QucnVuZS5hZGRyZXNzUHJlZml4O1xuZXhwb3J0IGNvbnN0IHZhbGlkRGVub21zID0gWydydW5lJywgLi4uY29zbW9zVXRpbHMuZ2V0VG9rZW5EZW5vbXNVc2luZ0NvaW5GYW1pbHkoJ3Rob3InKV07XG5leHBvcnQgY29uc3QgbWFpbm5ldEFjY291bnRBZGRyZXNzUmVnZXggPSBuZXcgUmVnRXhwKGBeKCR7TUFJTk5FVF9IUlB9KTEoWydxcHpyeTl4OGdmMnR2ZHcwczNqbjU0a2hjZTZtdWE3bF17Mzh9KSRgKTtcbmV4cG9ydCBjb25zdCBtYWlubmV0VmFsaWRhdG9yQWRkcmVzc1JlZ2V4ID0gbmV3IFJlZ0V4cChgXigke01BSU5ORVRfSFJQfSkxKFsncXB6cnk5eDhnZjJ0dmR3MHMzam41NGtoY2U2bXVhN2xdezM4fSkkYCk7XG4vKiogQGRlcHJlY2F0ZWQgVXNlIGBOZXR3b3Jrcy5tYWluLnJ1bmUuYWRkcmVzc1ByZWZpeGAgZnJvbSBgQGJpdGdvLWJldGEvc3RhdGljc2AgaW5zdGVhZC4gKi9cbmV4cG9ydCBjb25zdCBNQUlOTkVUX0FERFJFU1NfUFJFRklYID0gTUFJTk5FVF9IUlA7XG5cbmV4cG9ydCBjb25zdCB0ZXN0bmV0QWNjb3VudEFkZHJlc3NSZWdleCA9IG5ldyBSZWdFeHAoYF4oJHtURVNUTkVUX0hSUH0pMShbJ3FwenJ5OXg4Z2YydHZkdzBzM2puNTRraGNlNm11YTdsXXszOH0pJGApO1xuZXhwb3J0IGNvbnN0IHRlc3RuZXRWYWxpZGF0b3JBZGRyZXNzUmVnZXggPSBuZXcgUmVnRXhwKGBeKCR7VEVTVE5FVF9IUlB9KTEoWydxcHpyeTl4OGdmMnR2ZHcwczNqbjU0a2hjZTZtdWE3bF17Mzh9KSRgKTtcbi8qKiBAZGVwcmVjYXRlZCBVc2UgYE5ldHdvcmtzLnRlc3QucnVuZS5hZGRyZXNzUHJlZml4YCBmcm9tIGBAYml0Z28tYmV0YS9zdGF0aWNzYCBpbnN0ZWFkLiAqL1xuZXhwb3J0IGNvbnN0IFRFU1RORVRfQUREUkVTU19QUkVGSVggPSBURVNUTkVUX0hSUDtcblxuZXhwb3J0IGNvbnN0IEdBU19MSU1JVCA9IDIwMDAwMDtcbmV4cG9ydCBjb25zdCBHQVNfQU1PVU5UID0gJzAnOyAvLyBHYXMgYW1vdW50IHNob3VsZCBiZSB6ZXJvIGZvciBSVU5FIHRyYW5zYWN0aW9ucywgYXMgZmVlcyAoMC4wMiBSVU5FKSBpcyBjdXQgZnJvbSBzZW5kZXIgYmFsYW5jZSBkaXJlY3RseSBpbiB0aGUgdHJhbnNhY3Rpb25cbmV4cG9ydCBjb25zdCBSVU5FX0ZFRVMgPSAnMjAwMDAwMCc7IC8vIGh0dHBzOi8vZGV2LnRob3JjaGFpbi5vcmcvY29uY2VwdHMvZmVlcy5odG1sI3Rob3JjaGFpbi1uYXRpdmUtcnVuZVxuZXhwb3J0IGNvbnN0IFJPT1RfUEFUSCA9ICdtLzAnO1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../src/lib/keyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D;;GAEG;AACH,qBAAa,OAAQ,SAAQ,aAAa;gBAC5B,MAAM,CAAC,EAAE,cAAc;IAInC,kBAAkB;IAClB,UAAU,CAAC,MAAM,GAAE,aAAqC,GAAG,MAAM;CAWlE"}
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../src/lib/keyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D;;GAEG;AACH,qBAAa,OAAQ,SAAQ,aAAa;gBAC5B,MAAM,CAAC,EAAE,cAAc;IAInC,kBAAkB;IAClB,UAAU,CAAC,MAAM,GAAE,aAAqC,GAAG,MAAM;CAYlE"}
@@ -4,7 +4,7 @@ exports.KeyPair = void 0;
4
4
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
5
  const amino_1 = require("@cosmjs/amino");
6
6
  const abstract_cosmos_1 = require("@bitgo-beta/abstract-cosmos");
7
- const constants_1 = require("./constants");
7
+ const statics_1 = require("@bitgo-beta/statics");
8
8
  /**
9
9
  * Rune keys and address management.
10
10
  */
@@ -15,7 +15,7 @@ class KeyPair extends abstract_cosmos_1.CosmosKeyPair {
15
15
  /** @inheritdoc */
16
16
  getAddress(format = sdk_core_1.AddressFormat.mainnet) {
17
17
  const base64String = Buffer.from(this.getKeys().pub.slice(0, 66), 'hex').toString('base64');
18
- const address_prefix = format === sdk_core_1.AddressFormat.testnet ? constants_1.TESTNET_ADDRESS_PREFIX : constants_1.MAINNET_ADDRESS_PREFIX;
18
+ const address_prefix = format === sdk_core_1.AddressFormat.testnet ? statics_1.Networks.test.rune.addressPrefix : statics_1.Networks.main.rune.addressPrefix;
19
19
  return (0, amino_1.pubkeyToAddress)({
20
20
  type: 'tendermint/PubKeySecp256k1',
21
21
  value: base64String,
@@ -23,4 +23,4 @@ class KeyPair extends abstract_cosmos_1.CosmosKeyPair {
23
23
  }
24
24
  }
25
25
  exports.KeyPair = KeyPair;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBcUU7QUFDckUseUNBQWdEO0FBRWhELGlFQUE0RDtBQUM1RCwyQ0FBNkU7QUFFN0U7O0dBRUc7QUFDSCxNQUFhLE9BQVEsU0FBUSwrQkFBYTtJQUN4QyxZQUFZLE1BQXVCO1FBQ2pDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFVBQVUsQ0FBQyxTQUF3Qix3QkFBYSxDQUFDLE9BQU87UUFDdEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sY0FBYyxHQUFHLE1BQU0sS0FBSyx3QkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsa0NBQXNCLENBQUMsQ0FBQyxDQUFDLGtDQUFzQixDQUFDO1FBQzFHLE9BQU8sSUFBQSx1QkFBZSxFQUNwQjtZQUNFLElBQUksRUFBRSw0QkFBNEI7WUFDbEMsS0FBSyxFQUFFLFlBQVk7U0FDcEIsRUFDRCxjQUFjLENBQ2YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWpCRCwwQkFpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlQYWlyT3B0aW9ucywgQWRkcmVzc0Zvcm1hdCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IHB1YmtleVRvQWRkcmVzcyB9IGZyb20gJ0Bjb3NtanMvYW1pbm8nO1xuXG5pbXBvcnQgeyBDb3Ntb3NLZXlQYWlyIH0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtY29zbW9zJztcbmltcG9ydCB7IE1BSU5ORVRfQUREUkVTU19QUkVGSVgsIFRFU1RORVRfQUREUkVTU19QUkVGSVggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbi8qKlxuICogUnVuZSBrZXlzIGFuZCBhZGRyZXNzIG1hbmFnZW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlQYWlyIGV4dGVuZHMgQ29zbW9zS2V5UGFpciB7XG4gIGNvbnN0cnVjdG9yKHNvdXJjZT86IEtleVBhaXJPcHRpb25zKSB7XG4gICAgc3VwZXIoc291cmNlKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRBZGRyZXNzKGZvcm1hdDogQWRkcmVzc0Zvcm1hdCA9IEFkZHJlc3NGb3JtYXQubWFpbm5ldCk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZTY0U3RyaW5nID0gQnVmZmVyLmZyb20odGhpcy5nZXRLZXlzKCkucHViLnNsaWNlKDAsIDY2KSwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBjb25zdCBhZGRyZXNzX3ByZWZpeCA9IGZvcm1hdCA9PT0gQWRkcmVzc0Zvcm1hdC50ZXN0bmV0ID8gVEVTVE5FVF9BRERSRVNTX1BSRUZJWCA6IE1BSU5ORVRfQUREUkVTU19QUkVGSVg7XG4gICAgcmV0dXJuIHB1YmtleVRvQWRkcmVzcyhcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3RlbmRlcm1pbnQvUHViS2V5U2VjcDI1NmsxJyxcbiAgICAgICAgdmFsdWU6IGJhc2U2NFN0cmluZyxcbiAgICAgIH0sXG4gICAgICBhZGRyZXNzX3ByZWZpeFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBcUU7QUFDckUseUNBQWdEO0FBRWhELGlFQUE0RDtBQUM1RCxpREFBK0M7QUFFL0M7O0dBRUc7QUFDSCxNQUFhLE9BQVEsU0FBUSwrQkFBYTtJQUN4QyxZQUFZLE1BQXVCO1FBQ2pDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFVBQVUsQ0FBQyxTQUF3Qix3QkFBYSxDQUFDLE9BQU87UUFDdEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sY0FBYyxHQUNsQixNQUFNLEtBQUssd0JBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtCQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGtCQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekcsT0FBTyxJQUFBLHVCQUFlLEVBQ3BCO1lBQ0UsSUFBSSxFQUFFLDRCQUE0QjtZQUNsQyxLQUFLLEVBQUUsWUFBWTtTQUNwQixFQUNELGNBQWMsQ0FDZixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbEJELDBCQWtCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleVBhaXJPcHRpb25zLCBBZGRyZXNzRm9ybWF0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgcHVia2V5VG9BZGRyZXNzIH0gZnJvbSAnQGNvc21qcy9hbWlubyc7XG5cbmltcG9ydCB7IENvc21vc0tleVBhaXIgfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1jb3Ntb3MnO1xuaW1wb3J0IHsgTmV0d29ya3MgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuLyoqXG4gKiBSdW5lIGtleXMgYW5kIGFkZHJlc3MgbWFuYWdlbWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIEtleVBhaXIgZXh0ZW5kcyBDb3Ntb3NLZXlQYWlyIHtcbiAgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICBzdXBlcihzb3VyY2UpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldEFkZHJlc3MoZm9ybWF0OiBBZGRyZXNzRm9ybWF0ID0gQWRkcmVzc0Zvcm1hdC5tYWlubmV0KTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlNjRTdHJpbmcgPSBCdWZmZXIuZnJvbSh0aGlzLmdldEtleXMoKS5wdWIuc2xpY2UoMCwgNjYpLCAnaGV4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIGNvbnN0IGFkZHJlc3NfcHJlZml4ID1cbiAgICAgIGZvcm1hdCA9PT0gQWRkcmVzc0Zvcm1hdC50ZXN0bmV0ID8gTmV0d29ya3MudGVzdC5ydW5lLmFkZHJlc3NQcmVmaXggOiBOZXR3b3Jrcy5tYWluLnJ1bmUuYWRkcmVzc1ByZWZpeDtcbiAgICByZXR1cm4gcHVia2V5VG9BZGRyZXNzKFxuICAgICAge1xuICAgICAgICB0eXBlOiAndGVuZGVybWludC9QdWJLZXlTZWNwMjU2azEnLFxuICAgICAgICB2YWx1ZTogYmFzZTY0U3RyaW5nLFxuICAgICAgfSxcbiAgICAgIGFkZHJlc3NfcHJlZml4XG4gICAgKTtcbiAgfVxufVxuIl19
@@ -61,7 +61,7 @@ export declare class RuneUtils extends CosmosUtils {
61
61
  validateDenomination(amountDenom: string): void;
62
62
  convertMessageAddressToUint8Array(messages: MessageData[]): MessageData[];
63
63
  createTransaction(sequence: number, messages: MessageData[], gasBudget: FeeData, publicKey?: string, memo?: string): CosmosLikeTransaction;
64
- getNetworkPrefix(): "sthor" | "thor";
64
+ getNetworkPrefix(): string;
65
65
  }
66
66
  declare const runeUtils: RuneUtils;
67
67
  export default runeUtils;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,qBAAa,SAAU,SAAQ,WAAW;IACxC,OAAO,CAAC,WAAW,CAAc;gBACrB,WAAW,GAAE,WAAiC;IAK1D,+BAA+B,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,EAAE;IAcvE,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO;IAarD;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAK7B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM;IAU9C;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQ9C,kBAAkB;IAClB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOjD,kBAAkB;IAClB,cAAc,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAQlC;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAO3C;;;OAGG;IACH,qBAAqB,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI;IAMhD,iBAAiB,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAQrC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAU/C,iCAAiC,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IA0BzE,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,qBAAqB;IAaxB,gBAAgB;CAGjB;AAED,QAAA,MAAM,SAAS,WAAkB,CAAC;AAElC,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAY,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,qBAAa,SAAU,SAAQ,WAAW;IACxC,OAAO,CAAC,WAAW,CAAc;gBACrB,WAAW,GAAE,WAAiC;IAK1D,+BAA+B,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,EAAE;IAcvE,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO;IAarD;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAK7B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM;IAU9C;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQ9C,kBAAkB;IAClB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOjD,kBAAkB;IAClB,cAAc,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAQlC;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAO3C;;;OAGG;IACH,qBAAqB,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI;IAMhD,iBAAiB,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAQrC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAM/C,iCAAiC,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IA0BzE,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,qBAAqB;IAaxB,gBAAgB;CAKjB;AAED,QAAA,MAAM,SAAS,WAAkB,CAAC;AAElC,eAAe,SAAS,CAAC"}
@@ -42,7 +42,6 @@ const bignumber_js_1 = __importDefault(require("bignumber.js"));
42
42
  const abstract_cosmos_1 = require("@bitgo-beta/abstract-cosmos");
43
43
  const constants = __importStar(require("./constants"));
44
44
  const statics_1 = require("@bitgo-beta/statics");
45
- const constants_1 = require("./constants");
46
45
  const bech32 = require('bech32-buffer');
47
46
  class RuneUtils extends abstract_cosmos_1.CosmosUtils {
48
47
  constructor(networkType = statics_1.NetworkType.MAINNET) {
@@ -109,8 +108,8 @@ class RuneUtils extends abstract_cosmos_1.CosmosUtils {
109
108
  getEncodedAddress(address) {
110
109
  try {
111
110
  return this.networkType === statics_1.NetworkType.TESTNET
112
- ? bech32.encode(constants_1.TESTNET_ADDRESS_PREFIX, address)
113
- : bech32.encode(constants_1.MAINNET_ADDRESS_PREFIX, address);
111
+ ? bech32.encode(statics_1.Networks.test.rune.addressPrefix, address)
112
+ : bech32.encode(statics_1.Networks.main.rune.addressPrefix, address);
114
113
  }
115
114
  catch (error) {
116
115
  throw new Error(`Failed to encode address: ${error instanceof Error ? error.message : String(error)}`);
@@ -175,9 +174,7 @@ class RuneUtils extends abstract_cosmos_1.CosmosUtils {
175
174
  this.validateDenomination(amount.denom);
176
175
  }
177
176
  validateDenomination(amountDenom) {
178
- if ((this.networkType === statics_1.NetworkType.TESTNET &&
179
- !constants.testnetValidDenoms.find((denom) => denom === amountDenom)) ||
180
- (this.networkType === statics_1.NetworkType.MAINNET && !constants.mainnetValidDenoms.find((denom) => denom === amountDenom))) {
177
+ if (!constants.validDenoms.find((denom) => denom === amountDenom)) {
181
178
  throw new sdk_core_1.InvalidTransactionError('transactionBuilder: validateAmount: Invalid denom: ' + amountDenom);
182
179
  }
183
180
  }
@@ -214,10 +211,12 @@ class RuneUtils extends abstract_cosmos_1.CosmosUtils {
214
211
  return cosmosLikeTxn;
215
212
  }
216
213
  getNetworkPrefix() {
217
- return this.networkType === statics_1.NetworkType.TESTNET ? constants_1.TESTNET_ADDRESS_PREFIX : constants_1.MAINNET_ADDRESS_PREFIX;
214
+ return this.networkType === statics_1.NetworkType.TESTNET
215
+ ? statics_1.Networks.test.rune.addressPrefix
216
+ : statics_1.Networks.main.rune.addressPrefix;
218
217
  }
219
218
  }
220
219
  exports.RuneUtils = RuneUtils;
221
220
  const runeUtils = new RuneUtils();
222
221
  exports.default = runeUtils;
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUErRDtBQUUvRCxnRUFBcUM7QUFFckMsaUVBQTBGO0FBRTFGLHVEQUF5QztBQUN6QyxpREFBa0Q7QUFFbEQsMkNBQTZFO0FBQzdFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUV4QyxNQUFhLFNBQVUsU0FBUSw2QkFBVztJQUV4QyxZQUFZLGNBQTJCLHFCQUFXLENBQUMsT0FBTztRQUN4RCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxTQUF1QjtRQUNyRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVDLE9BQU87Z0JBQ0wsS0FBSyxFQUFFO29CQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztvQkFDdEQsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO29CQUNsRCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07aUJBQ3JCO2dCQUNELE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTzthQUN6QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxPQUE0QjtRQUN6QyxJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLElBQUksRUFBRSxD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QUFTO3FCQUNyQjtpQkFDRixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUNmLFFBQWdCLEVBQ2hCLFFBQXVCLEVBQ3ZCLFNBQWtCLEVBQ2xCLFNBQWtCLEVBQ2xCLElBQWE7UUFFYixRQUFRLEdBQUcsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVELE1BQU0sYUFBYSxHQUFHO1lBQ3BCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFlBQVksRUFBRSxRQUFRO1lBQ3RCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4QyxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLHFCQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQ0FBc0IsQ0FBQyxDQUFDLENBQUMsa0NBQXNCLENBQUM7SUFDcEcsQ0FBQztDQUNGO0FBdk1ELDhCQXVNQztBQUVELE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7QUFFbEMsa0JBQWUsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBDb2luIH0gZnJvbSAnQGNvc21qcy9zdGFyZ2F0ZSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5cbmltcG9ydCB7IENvc21vc0xpa2VUcmFuc2FjdGlvbiwgQ29zbW9zVXRpbHMsIEZlZURhdGEgfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1jb3Ntb3MnO1xuaW1wb3J0IHsgTWVzc2FnZURhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBOZXR3b3JrVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgRGVjb2RlZFR4UmF3IH0gZnJvbSAnQGNvc21qcy9wcm90by1zaWduaW5nJztcbmltcG9ydCB7IE1BSU5ORVRfQUREUkVTU19QUkVGSVgsIFRFU1RORVRfQUREUkVTU19QUkVGSVggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5jb25zdCBiZWNoMzIgPSByZXF1aXJlKCdiZWNoMzItYnVmZmVyJyk7XG5cbmV4cG9ydCBjbGFzcyBSdW5lVXRpbHMgZXh0ZW5kcyBDb3Ntb3NVdGlscyB7XG4gIHByaXZhdGUgbmV0d29ya1R5cGU6IE5ldHdvcmtUeXBlO1xuICBjb25zdHJ1Y3RvcihuZXR3b3JrVHlwZTogTmV0d29ya1R5cGUgPSBOZXR3b3JrVHlwZS5NQUlOTkVUKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5ldHdvcmtUeXBlID0gbmV0d29ya1R5cGU7XG4gIH1cblxuICBnZXRTZW5kTWVzc2FnZURhdGFGcm9tRGVjb2RlZFR4KGRlY29kZWRUeDogRGVjb2RlZFR4UmF3KTogTWVzc2FnZURhdGFbXSB7XG4gICAgcmV0dXJuIGRlY29kZWRUeC5ib2R5Lm1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnJlZ2lzdHJ5LmRlY29kZShtZXNzYWdlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgZnJvbUFkZHJlc3M6IHRoaXMuZ2V0RW5jb2RlZEFkZHJlc3ModmFsdWUuZnJvbUFkZHJlc3MpLFxuICAgICAgICAgIHRvQWRkcmVzczogdGhpcy5nZXRFbmNvZGVkQWRkcmVzcyh2YWx1ZS50b0FkZHJlc3MpLFxuICAgICAgICAgIGFtb3VudDogdmFsdWUuYW1vdW50LFxuICAgICAgICB9LFxuICAgICAgICB0eXBlVXJsOiBtZXNzYWdlLnR5cGVVcmwsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICBpZiAoYWRkcmVzcyA9PT0gdW5kZWZpbmVkIHx8IGFkZHJlc3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGFkZHJlc3MgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkRGVjb2RlZEFkZHJlc3MoYWRkcmVzcyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYWRkcmVzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRFbmNvZGVkQWRkcmVzcyhhZGRyZXNzKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIGRlY29kZWQgYWRkcmVzcyBpbiBgVWludDhBcnJheWAgZm9ybSBieSBlbmNvZGluZyBpdCBhbmRcbiAgICogY2hlY2tpbmcgaWYgdGhlIGVuY29kZWQgdmVyc2lvbiBpcyB2YWxpZFxuICAgKlxuICAgKiBAcGFyYW0gYWRkcmVzcyAtIFRoZSBkZWNvZGVkIGFkZHJlc3MgYXMgYSBgVWludDhBcnJheWAuXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW5jb2RlZCBhZGRyZXNzIGlzIHZhbGlkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHByaXZhdGUgaXNWYWxpZERlY29kZWRBZGRyZXNzKGFkZHJlc3M6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbmNvZGVkQWRkcmVzcyA9IHRoaXMuZ2V0RW5jb2RlZEFkZHJlc3MoYWRkcmVzcyk7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEVuY29kZWRBZGRyZXNzKGVuY29kZWRBZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW4gZW5jb2RlZCBhZGRyZXNzIHN0cmluZyBhZ2FpbnN0IG5ldHdvcmstc3BlY2lmaWMgY3JpdGVyaWEuXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzIC0gVGhlIGVuY29kZWQgYWRkcmVzcyBhcyBhIGBzdHJpbmdgLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFkZHJlc3MgbWVldHMgbmV0d29yay1zcGVjaWZpYyB2YWxpZGF0aW9uIGNyaXRlcmlhLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHByaXZhdGUgaXNWYWxpZEVuY29kZWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm5ldHdvcmtUeXBlID09PSBOZXR3b3JrVHlwZS5URVNUTkVUKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQ29zbW9zTGlrZUFkZHJlc3NXaXRoTWVtb0lkKGFkZHJlc3MsIGNvbnN0YW50cy50ZXN0bmV0QWNjb3VudEFkZHJlc3NSZWdleCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmlzVmFsaWRDb3Ntb3NMaWtlQWRkcmVzc1dpdGhNZW1vSWQoYWRkcmVzcywgY29uc3RhbnRzLm1haW5uZXRBY2NvdW50QWRkcmVzc1JlZ2V4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGVzIGEgZ2l2ZW4gYWRkcmVzcyBgVWludDhBcnJheWAgaW50byBhIGJlY2gzMiBzdHJpbmcgZm9ybWF0LCBiYXNlZCBvbiB0aGUgY3VycmVudCBuZXR3b3JrIHR5cGUuXG4gICAqIFByaW1hcmlseSBzZXJ2ZXMgYXMgYSB1dGlsaXR5IHRvIGNvbnZlcnQgYSBgVWludDhBcnJheWAtdHlwZSBhZGRyZXNzIHRvIGEgYmVjaDMyIGVuY29kZWQgc3RyaW5nXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzIC0gVGhlIGFkZHJlc3MgdG8gYmUgZW5jb2RlZCwgcHJvdmlkZWQgYXMgYSBgVWludDhBcnJheWAuXG4gICAqIEByZXR1cm5zIEEgYmVjaDMyLWVuY29kZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgYWRkcmVzcy5cbiAgICogQHRocm93cyBFcnJvciAtIFRocm93cyBhbiBlcnJvciBpZiBlbmNvZGluZyBmYWlsc1xuICAgKi9cbiAgZ2V0RW5jb2RlZEFkZHJlc3MoYWRkcmVzczogVWludDhBcnJheSk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLm5ldHdvcmtUeXBlID09PSBOZXR3b3JrVHlwZS5URVNUTkVUXG4gICAgICAgID8gYmVjaDMyLmVuY29kZShURVNUTkVUX0FERFJFU1NfUFJFRklYLCBhZGRyZXNzKVxuICAgICAgICA6IGJlY2gzMi5lbmNvZGUoTUFJTk5FVF9BRERSRVNTX1BSRUZJWCwgYWRkcmVzcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGVuY29kZSBhZGRyZXNzOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBhIGJlY2gzMi1lbmNvZGVkIGFkZHJlc3Mgc3RyaW5nIGJhY2sgaW50byBhIGBVaW50OEFycmF5YC5cbiAgICogUHJpbWFyaWx5IHNlcnZlcyBhcyBhIHV0aWxpdHkgdG8gY29udmVydCBhIHN0cmluZy10eXBlIGFkZHJlc3MgaW50byBpdHMgYmluYXJ5IHJlcHJlc2VudGF0aW9uLFxuICAgKlxuICAgKiBAcGFyYW0gYWRkcmVzcyAtIFRoZSBiZWNoMzItZW5jb2RlZCBhZGRyZXNzIGFzIGEgYHN0cmluZ2AuXG4gICAqIEByZXR1cm5zIFRoZSBkZWNvZGVkIGFkZHJlc3MgYXMgYSBgVWludDhBcnJheWAuXG4gICAqIEB0aHJvd3MgRXJyb3IgLSBUaHJvd3MgYW4gZXJyb3IgaWYgZGVjb2RpbmcgZmFpbHNcbiAgICovXG4gIGdldERlY29kZWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmVjaDMyLmRlY29kZShhZGRyZXNzKS5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWNvZGUgYWRkcmVzczogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRWYWxpZGF0b3JBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm5ldHdvcmtUeXBlID09PSBOZXR3b3JrVHlwZS5URVNUTkVUKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQmVjaDMyQWRkcmVzc01hdGNoaW5nUmVnZXgoYWRkcmVzcywgY29uc3RhbnRzLnRlc3RuZXRWYWxpZGF0b3JBZGRyZXNzUmVnZXgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQmVjaDMyQWRkcmVzc01hdGNoaW5nUmVnZXgoYWRkcmVzcywgY29uc3RhbnRzLm1haW5uZXRWYWxpZGF0b3JBZGRyZXNzUmVnZXgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQW1vdW50KGFtb3VudDogQ29pbik6IHZvaWQge1xuICAgIGNvbnN0IGFtb3VudEJpZyA9IEJpZ051bWJlcihhbW91bnQuYW1vdW50KTtcbiAgICBpZiAoYW1vdW50QmlnLmlzTmFOKCkgfHwgYW1vdW50QmlnLmlzTGVzc1RoYW5PckVxdWFsVG8oMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcigndHJhbnNhY3Rpb25CdWlsZGVyOiB2YWxpZGF0ZUFtb3VudDogSW52YWxpZCBhbW91bnQ6ICcgKyBhbW91bnQuYW1vdW50KTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZURlbm9taW5hdGlvbihhbW91bnQuZGVub20pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZ2FzIGxpbWl0IGFuZCBnYXMgYW1vdW50IGZvciBhIHRyYW5zYWN0aW9uLlxuICAgKiBAcGFyYW0ge0ZlZURhdGF9IGdhc0J1ZGdldCAtIFRoZSBnYXMgYnVkZ2V0IHRvIHZhbGlkYXRlLlxuICAgKiBAdGhyb3dzIHtJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcn0gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBnYXMgYnVkZ2V0IGlzIGludmFsaWQuXG4gICAqL1xuICB2YWxpZGF0ZUdhc0J1ZGdldChnYXNCdWRnZXQ6IEZlZURhdGEpOiB2b2lkIHtcbiAgICBpZiAoZ2FzQnVkZ2V0Lmdhc0xpbWl0IDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBnYXMgbGltaXQgJyArIGdhc0J1ZGdldC5nYXNMaW1pdCk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVHYXNBbW91bnREYXRhKGdhc0J1ZGdldC5hbW91bnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbiBhcnJheSBvZiBjb2luIGFtb3VudHMuXG4gICAqIEBwYXJhbSB7Q29pbltdfSBhbW91bnRBcnJheSAtIFRoZSBhcnJheSBvZiBjb2luIGFtb3VudHMgdG8gdmFsaWRhdGUuXG4gICAqL1xuICB2YWxpZGF0ZUdhc0Ftb3VudERhdGEoYW1vdW50QXJyYXk6IENvaW5bXSk6IHZvaWQge1xuICAgIGFtb3VudEFycmF5LmZvckVhY2goKGNvaW5BbW91bnQpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVHYXNBbW91bnQoY29pbkFtb3VudCk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZUdhc0Ftb3VudChhbW91bnQ6IENvaW4pOiB2b2lkIHtcbiAgICBjb25zdCBhbW91bnRCaWcgPSBCaWdOdW1iZXIoYW1vdW50LmFtb3VudCk7XG4gICAgaWYgKGFtb3VudEJpZy5pc05hTigpIHx8IGFtb3VudEJpZy5pc0xlc3NUaGFuKDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uQnVpbGRlcjogdmFsaWRhdGVBbW91bnQ6IEludmFsaWQgYW1vdW50OiAnICsgYW1vdW50LmFtb3VudCk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVEZW5vbWluYXRpb24oYW1vdW50LmRlbm9tKTtcbiAgfVxuXG4gIHZhbGlkYXRlRGVub21pbmF0aW9uKGFtb3VudERlbm9tOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAodGhpcy5uZXR3b3JrVHlwZSA9PT0gTmV0d29ya1R5cGUuVEVTVE5FVCAmJlxuICAgICAgICAhY29uc3RhbnRzLnRlc3RuZXRWYWxpZERlbm9tcy5maW5kKChkZW5vbSkgPT4gZGVub20gPT09IGFtb3VudERlbm9tKSkgfHxcbiAgICAgICh0aGlzLm5ldHdvcmtUeXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUICYmICFjb25zdGFudHMubWFpbm5ldFZhbGlkRGVub21zLmZpbmQoKGRlbm9tKSA9PiBkZW5vbSA9PT0gYW1vdW50RGVub20pKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbkJ1aWxkZXI6IHZhbGlkYXRlQW1vdW50OiBJbnZhbGlkIGRlbm9tOiAnICsgYW1vdW50RGVub20pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnZlcnRNZXNzYWdlQWRkcmVzc1RvVWludDhBcnJheShtZXNzYWdlczogTWVzc2FnZURhdGFbXSk6IE1lc3NhZ2VEYXRhW10ge1xuICAgIHJldHVybiBtZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+IHtcbiAgICAgIGlmICgnZnJvbUFkZHJlc3MnIGluIG1lc3NhZ2UudmFsdWUgJiYgJ3RvQWRkcmVzcycgaW4gbWVzc2FnZS52YWx1ZSkge1xuICAgICAgICBjb25zdCBzZW5kTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWU7XG5cbiAgICAgICAgY29uc3QgZGVjb2RlZEZyb20gPVxuICAgICAgICAgIHR5cGVvZiBzZW5kTWVzc2FnZS5mcm9tQWRkcmVzcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gYmVjaDMyLmRlY29kZShzZW5kTWVzc2FnZS5mcm9tQWRkcmVzcykuZGF0YVxuICAgICAgICAgICAgOiBzZW5kTWVzc2FnZS5mcm9tQWRkcmVzcztcbiAgICAgICAgY29uc3QgZGVjb2RlZFRvID1cbiAgICAgICAgICB0eXBlb2Ygc2VuZE1lc3NhZ2UudG9BZGRyZXNzID09PSAnc3RyaW5nJyA/IGJlY2gzMi5kZWNvZGUoc2VuZE1lc3NhZ2UudG9BZGRyZXNzKS5kYXRhIDogc2VuZE1lc3NhZ2UudG9BZGRyZXNzO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ubWVzc2FnZSxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgLi4uc2VuZE1lc3NhZ2UsXG4gICAgICAgICAgICBmcm9tQWRkcmVzczogZGVjb2RlZEZyb20sXG4gICAgICAgICAgICB0b0FkZHJlc3M6IGRlY29kZWRUbyxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZVRyYW5zYWN0aW9uKFxuICAgIHNlcXVlbmNlOiBudW1iZXIsXG4gICAgbWVzc2FnZXM6IE1lc3NhZ2VEYXRhW10sXG4gICAgZ2FzQnVkZ2V0OiBGZWVEYXRhLFxuICAgIHB1YmxpY0tleT86IHN0cmluZyxcbiAgICBtZW1vPzogc3RyaW5nXG4gICk6IENvc21vc0xpa2VUcmFuc2FjdGlvbiB7XG4gICAgbWVzc2FnZXMgPSB0aGlzLmNvbnZlcnRNZXNzYWdlQWRkcmVzc1RvVWludDhBcnJheShtZXNzYWdlcyk7XG4gICAgY29uc3QgY29zbW9zTGlrZVR4biA9IHtcbiAgICAgIHNlcXVlbmNlOiBzZXF1ZW5jZSxcbiAgICAgIHNlbmRNZXNzYWdlczogbWVzc2FnZXMsXG4gICAgICBnYXNCdWRnZXQ6IGdhc0J1ZGdldCxcbiAgICAgIHB1YmxpY0tleTogcHVibGljS2V5LFxuICAgICAgbWVtbzogbWVtbyxcbiAgICB9O1xuICAgIHRoaXMudmFsaWRhdGVUcmFuc2FjdGlvbihjb3Ntb3NMaWtlVHhuKTtcbiAgICByZXR1cm4gY29zbW9zTGlrZVR4bjtcbiAgfVxuXG4gIGdldE5ldHdvcmtQcmVmaXgoKSB7XG4gICAgcmV0dXJuIHRoaXMubmV0d29ya1R5cGUgPT09IE5ldHdvcmtUeXBlLlRFU1RORVQgPyBURVNUTkVUX0FERFJFU1NfUFJFRklYIDogTUFJTk5FVF9BRERSRVNTX1BSRUZJWDtcbiAgfVxufVxuXG5jb25zdCBydW5lVXRpbHMgPSBuZXcgUnVuZVV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHJ1bmVVdGlscztcbiJdfQ==
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUErRDtBQUUvRCxnRUFBcUM7QUFFckMsaUVBQTBGO0FBRTFGLHVEQUF5QztBQUN6QyxpREFBNEQ7QUFFNUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRXhDLE1BQWEsU0FBVSxTQUFRLDZCQUFXO0lBRXhDLFlBQVksY0FBMkIscUJBQVcsQ0FBQyxPQUFPO1FBQ3hELEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELCtCQUErQixDQUFDLFNBQXVCO1FBQ3JELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUMsT0FBTztnQkFDTCxLQUFLLEVBQUU7b0JBQ0wsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO29CQUN0RCxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7b0JBQ2xELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtpQkFDckI7Z0JBQ0QsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2FBQ3pCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLE9BQTRCO1FBQ3pDLElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUMsT0FB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SUFBYTtRQUViLFFBQVEsR0FBRyxJQUFJLENBQUMsaUNBQWlDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsTUFBTSxhQUFhLEdBQUc7WUFDcEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsWUFBWSxFQUFFLFFBQVE7WUFDdEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUsscUJBQVcsQ0FBQyxPQUFPO1lBQzdDLENBQUMsQ0FBQyxrQkFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUNsQyxDQUFDLENBQUMsa0JBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUFyTUQsOEJBcU1DO0FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUVsQyxrQkFBZSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENvaW4gfSBmcm9tICdAY29zbWpzL3N0YXJnYXRlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcblxuaW1wb3J0IHsgQ29zbW9zTGlrZVRyYW5zYWN0aW9uLCBDb3Ntb3NVdGlscywgRmVlRGF0YSB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWNvc21vcyc7XG5pbXBvcnQgeyBNZXNzYWdlRGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE5ldHdvcmtUeXBlLCBOZXR3b3JrcyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgRGVjb2RlZFR4UmF3IH0gZnJvbSAnQGNvc21qcy9wcm90by1zaWduaW5nJztcbmNvbnN0IGJlY2gzMiA9IHJlcXVpcmUoJ2JlY2gzMi1idWZmZXInKTtcblxuZXhwb3J0IGNsYXNzIFJ1bmVVdGlscyBleHRlbmRzIENvc21vc1V0aWxzIHtcbiAgcHJpdmF0ZSBuZXR3b3JrVHlwZTogTmV0d29ya1R5cGU7XG4gIGNvbnN0cnVjdG9yKG5ldHdvcmtUeXBlOiBOZXR3b3JrVHlwZSA9IE5ldHdvcmtUeXBlLk1BSU5ORVQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmV0d29ya1R5cGUgPSBuZXR3b3JrVHlwZTtcbiAgfVxuXG4gIGdldFNlbmRNZXNzYWdlRGF0YUZyb21EZWNvZGVkVHgoZGVjb2RlZFR4OiBEZWNvZGVkVHhSYXcpOiBNZXNzYWdlRGF0YVtdIHtcbiAgICByZXR1cm4gZGVjb2RlZFR4LmJvZHkubWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVnaXN0cnkuZGVjb2RlKG1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBmcm9tQWRkcmVzczogdGhpcy5nZXRFbmNvZGVkQWRkcmVzcyh2YWx1ZS5mcm9tQWRkcmVzcyksXG4gICAgICAgICAgdG9BZGRyZXNzOiB0aGlzLmdldEVuY29kZWRBZGRyZXNzKHZhbHVlLnRvQWRkcmVzcyksXG4gICAgICAgICAgYW1vdW50OiB2YWx1ZS5hbW91bnQsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVVcmw6IG1lc3NhZ2UudHlwZVVybCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nIHwgVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICAgIGlmIChhZGRyZXNzID09PSB1bmRlZmluZWQgfHwgYWRkcmVzcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYWRkcmVzcyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWREZWNvZGVkQWRkcmVzcyhhZGRyZXNzKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBhZGRyZXNzID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZEVuY29kZWRBZGRyZXNzKGFkZHJlc3MpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgZGVjb2RlZCBhZGRyZXNzIGluIGBVaW50OEFycmF5YCBmb3JtIGJ5IGVuY29kaW5nIGl0IGFuZFxuICAgKiBjaGVja2luZyBpZiB0aGUgZW5jb2RlZCB2ZXJzaW9uIGlzIHZhbGlkXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzIC0gVGhlIGRlY29kZWQgYWRkcmVzcyBhcyBhIGBVaW50OEFycmF5YC5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBlbmNvZGVkIGFkZHJlc3MgaXMgdmFsaWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHJpdmF0ZSBpc1ZhbGlkRGVjb2RlZEFkZHJlc3MoYWRkcmVzczogVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVuY29kZWRBZGRyZXNzID0gdGhpcy5nZXRFbmNvZGVkQWRkcmVzcyhhZGRyZXNzKTtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkRW5jb2RlZEFkZHJlc3MoZW5jb2RlZEFkZHJlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbiBlbmNvZGVkIGFkZHJlc3Mgc3RyaW5nIGFnYWluc3QgbmV0d29yay1zcGVjaWZpYyBjcml0ZXJpYS5cbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3MgLSBUaGUgZW5jb2RlZCBhZGRyZXNzIGFzIGEgYHN0cmluZ2AuXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBtZWV0cyBuZXR3b3JrLXNwZWNpZmljIHZhbGlkYXRpb24gY3JpdGVyaWEsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHJpdmF0ZSBpc1ZhbGlkRW5jb2RlZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubmV0d29ya1R5cGUgPT09IE5ldHdvcmtUeXBlLlRFU1RORVQpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRDb3Ntb3NMaWtlQWRkcmVzc1dpdGhNZW1vSWQoYWRkcmVzcywgY29uc3RhbnRzLnRlc3RuZXRBY2NvdW50QWRkcmVzc1JlZ2V4KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZENvc21vc0xpa2VBZGRyZXNzV2l0aE1lbW9JZChhZGRyZXNzLCBjb25zdGFudHMubWFpbm5ldEFjY291bnRBZGRyZXNzUmVnZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZXMgYSBnaXZlbiBhZGRyZXNzIGBVaW50OEFycmF5YCBpbnRvIGEgYmVjaDMyIHN0cmluZyBmb3JtYXQsIGJhc2VkIG9uIHRoZSBjdXJyZW50IG5ldHdvcmsgdHlwZS5cbiAgICogUHJpbWFyaWx5IHNlcnZlcyBhcyBhIHV0aWxpdHkgdG8gY29udmVydCBhIGBVaW50OEFycmF5YC10eXBlIGFkZHJlc3MgdG8gYSBiZWNoMzIgZW5jb2RlZCBzdHJpbmdcbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byBiZSBlbmNvZGVkLCBwcm92aWRlZCBhcyBhIGBVaW50OEFycmF5YC5cbiAgICogQHJldHVybnMgQSBiZWNoMzItZW5jb2RlZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhZGRyZXNzLlxuICAgKiBAdGhyb3dzIEVycm9yIC0gVGhyb3dzIGFuIGVycm9yIGlmIGVuY29kaW5nIGZhaWxzXG4gICAqL1xuICBnZXRFbmNvZGVkQWRkcmVzcyhhZGRyZXNzOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMubmV0d29ya1R5cGUgPT09IE5ldHdvcmtUeXBlLlRFU1RORVRcbiAgICAgICAgPyBiZWNoMzIuZW5jb2RlKE5ldHdvcmtzLnRlc3QucnVuZS5hZGRyZXNzUHJlZml4LCBhZGRyZXNzKVxuICAgICAgICA6IGJlY2gzMi5lbmNvZGUoTmV0d29ya3MubWFpbi5ydW5lLmFkZHJlc3NQcmVmaXgsIGFkZHJlc3MpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBlbmNvZGUgYWRkcmVzczogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgYSBiZWNoMzItZW5jb2RlZCBhZGRyZXNzIHN0cmluZyBiYWNrIGludG8gYSBgVWludDhBcnJheWAuXG4gICAqIFByaW1hcmlseSBzZXJ2ZXMgYXMgYSB1dGlsaXR5IHRvIGNvbnZlcnQgYSBzdHJpbmctdHlwZSBhZGRyZXNzIGludG8gaXRzIGJpbmFyeSByZXByZXNlbnRhdGlvbixcbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3MgLSBUaGUgYmVjaDMyLWVuY29kZWQgYWRkcmVzcyBhcyBhIGBzdHJpbmdgLlxuICAgKiBAcmV0dXJucyBUaGUgZGVjb2RlZCBhZGRyZXNzIGFzIGEgYFVpbnQ4QXJyYXlgLlxuICAgKiBAdGhyb3dzIEVycm9yIC0gVGhyb3dzIGFuIGVycm9yIGlmIGRlY29kaW5nIGZhaWxzXG4gICAqL1xuICBnZXREZWNvZGVkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGJlY2gzMi5kZWNvZGUoYWRkcmVzcykuZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVjb2RlIGFkZHJlc3M6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVmFsaWRhdG9yQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5uZXR3b3JrVHlwZSA9PT0gTmV0d29ya1R5cGUuVEVTVE5FVCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZEJlY2gzMkFkZHJlc3NNYXRjaGluZ1JlZ2V4KGFkZHJlc3MsIGNvbnN0YW50cy50ZXN0bmV0VmFsaWRhdG9yQWRkcmVzc1JlZ2V4KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEJlY2gzMkFkZHJlc3NNYXRjaGluZ1JlZ2V4KGFkZHJlc3MsIGNvbnN0YW50cy5tYWlubmV0VmFsaWRhdG9yQWRkcmVzc1JlZ2V4KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFtb3VudChhbW91bnQ6IENvaW4pOiB2b2lkIHtcbiAgICBjb25zdCBhbW91bnRCaWcgPSBCaWdOdW1iZXIoYW1vdW50LmFtb3VudCk7XG4gICAgaWYgKGFtb3VudEJpZy5pc05hTigpIHx8IGFtb3VudEJpZy5pc0xlc3NUaGFuT3JFcXVhbFRvKDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uQnVpbGRlcjogdmFsaWRhdGVBbW91bnQ6IEludmFsaWQgYW1vdW50OiAnICsgYW1vdW50LmFtb3VudCk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVEZW5vbWluYXRpb24oYW1vdW50LmRlbm9tKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGdhcyBsaW1pdCBhbmQgZ2FzIGFtb3VudCBmb3IgYSB0cmFuc2FjdGlvbi5cbiAgICogQHBhcmFtIHtGZWVEYXRhfSBnYXNCdWRnZXQgLSBUaGUgZ2FzIGJ1ZGdldCB0byB2YWxpZGF0ZS5cbiAgICogQHRocm93cyB7SW52YWxpZFRyYW5zYWN0aW9uRXJyb3J9IFRocm93cyBhbiBlcnJvciBpZiB0aGUgZ2FzIGJ1ZGdldCBpcyBpbnZhbGlkLlxuICAgKi9cbiAgdmFsaWRhdGVHYXNCdWRnZXQoZ2FzQnVkZ2V0OiBGZWVEYXRhKTogdm9pZCB7XG4gICAgaWYgKGdhc0J1ZGdldC5nYXNMaW1pdCA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgZ2FzIGxpbWl0ICcgKyBnYXNCdWRnZXQuZ2FzTGltaXQpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlR2FzQW1vdW50RGF0YShnYXNCdWRnZXQuYW1vdW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW4gYXJyYXkgb2YgY29pbiBhbW91bnRzLlxuICAgKiBAcGFyYW0ge0NvaW5bXX0gYW1vdW50QXJyYXkgLSBUaGUgYXJyYXkgb2YgY29pbiBhbW91bnRzIHRvIHZhbGlkYXRlLlxuICAgKi9cbiAgdmFsaWRhdGVHYXNBbW91bnREYXRhKGFtb3VudEFycmF5OiBDb2luW10pOiB2b2lkIHtcbiAgICBhbW91bnRBcnJheS5mb3JFYWNoKChjb2luQW1vdW50KSA9PiB7XG4gICAgICB0aGlzLnZhbGlkYXRlR2FzQW1vdW50KGNvaW5BbW91bnQpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVHYXNBbW91bnQoYW1vdW50OiBDb2luKTogdm9pZCB7XG4gICAgY29uc3QgYW1vdW50QmlnID0gQmlnTnVtYmVyKGFtb3VudC5hbW91bnQpO1xuICAgIGlmIChhbW91bnRCaWcuaXNOYU4oKSB8fCBhbW91bnRCaWcuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbkJ1aWxkZXI6IHZhbGlkYXRlQW1vdW50OiBJbnZhbGlkIGFtb3VudDogJyArIGFtb3VudC5hbW91bnQpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlRGVub21pbmF0aW9uKGFtb3VudC5kZW5vbSk7XG4gIH1cblxuICB2YWxpZGF0ZURlbm9taW5hdGlvbihhbW91bnREZW5vbTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFjb25zdGFudHMudmFsaWREZW5vbXMuZmluZCgoZGVub20pID0+IGRlbm9tID09PSBhbW91bnREZW5vbSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcigndHJhbnNhY3Rpb25CdWlsZGVyOiB2YWxpZGF0ZUFtb3VudDogSW52YWxpZCBkZW5vbTogJyArIGFtb3VudERlbm9tKTtcbiAgICB9XG4gIH1cblxuICBjb252ZXJ0TWVzc2FnZUFkZHJlc3NUb1VpbnQ4QXJyYXkobWVzc2FnZXM6IE1lc3NhZ2VEYXRhW10pOiBNZXNzYWdlRGF0YVtdIHtcbiAgICByZXR1cm4gbWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICBpZiAoJ2Zyb21BZGRyZXNzJyBpbiBtZXNzYWdlLnZhbHVlICYmICd0b0FkZHJlc3MnIGluIG1lc3NhZ2UudmFsdWUpIHtcbiAgICAgICAgY29uc3Qgc2VuZE1lc3NhZ2UgPSBtZXNzYWdlLnZhbHVlO1xuXG4gICAgICAgIGNvbnN0IGRlY29kZWRGcm9tID1cbiAgICAgICAgICB0eXBlb2Ygc2VuZE1lc3NhZ2UuZnJvbUFkZHJlc3MgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IGJlY2gzMi5kZWNvZGUoc2VuZE1lc3NhZ2UuZnJvbUFkZHJlc3MpLmRhdGFcbiAgICAgICAgICAgIDogc2VuZE1lc3NhZ2UuZnJvbUFkZHJlc3M7XG4gICAgICAgIGNvbnN0IGRlY29kZWRUbyA9XG4gICAgICAgICAgdHlwZW9mIHNlbmRNZXNzYWdlLnRvQWRkcmVzcyA9PT0gJ3N0cmluZycgPyBiZWNoMzIuZGVjb2RlKHNlbmRNZXNzYWdlLnRvQWRkcmVzcykuZGF0YSA6IHNlbmRNZXNzYWdlLnRvQWRkcmVzcztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIC4uLnNlbmRNZXNzYWdlLFxuICAgICAgICAgICAgZnJvbUFkZHJlc3M6IGRlY29kZWRGcm9tLFxuICAgICAgICAgICAgdG9BZGRyZXNzOiBkZWNvZGVkVG8sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVUcmFuc2FjdGlvbihcbiAgICBzZXF1ZW5jZTogbnVtYmVyLFxuICAgIG1lc3NhZ2VzOiBNZXNzYWdlRGF0YVtdLFxuICAgIGdhc0J1ZGdldDogRmVlRGF0YSxcbiAgICBwdWJsaWNLZXk/OiBzdHJpbmcsXG4gICAgbWVtbz86IHN0cmluZ1xuICApOiBDb3Ntb3NMaWtlVHJhbnNhY3Rpb24ge1xuICAgIG1lc3NhZ2VzID0gdGhpcy5jb252ZXJ0TWVzc2FnZUFkZHJlc3NUb1VpbnQ4QXJyYXkobWVzc2FnZXMpO1xuICAgIGNvbnN0IGNvc21vc0xpa2VUeG4gPSB7XG4gICAgICBzZXF1ZW5jZTogc2VxdWVuY2UsXG4gICAgICBzZW5kTWVzc2FnZXM6IG1lc3NhZ2VzLFxuICAgICAgZ2FzQnVkZ2V0OiBnYXNCdWRnZXQsXG4gICAgICBwdWJsaWNLZXk6IHB1YmxpY0tleSxcbiAgICAgIG1lbW86IG1lbW8sXG4gICAgfTtcbiAgICB0aGlzLnZhbGlkYXRlVHJhbnNhY3Rpb24oY29zbW9zTGlrZVR4bik7XG4gICAgcmV0dXJuIGNvc21vc0xpa2VUeG47XG4gIH1cblxuICBnZXROZXR3b3JrUHJlZml4KCkge1xuICAgIHJldHVybiB0aGlzLm5ldHdvcmtUeXBlID09PSBOZXR3b3JrVHlwZS5URVNUTkVUXG4gICAgICA/IE5ldHdvcmtzLnRlc3QucnVuZS5hZGRyZXNzUHJlZml4XG4gICAgICA6IE5ldHdvcmtzLm1haW4ucnVuZS5hZGRyZXNzUHJlZml4O1xuICB9XG59XG5cbmNvbnN0IHJ1bmVVdGlscyA9IG5ldyBSdW5lVXRpbHMoKTtcblxuZXhwb3J0IGRlZmF1bHQgcnVuZVV0aWxzO1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"rune.d.ts","sourceRoot":"","sources":["../../src/rune.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,aAAa,EACb,4BAA4B,EAG5B,gBAAgB,EAChB,eAAe,EAEhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,QAAQ,EACR,SAAS,EAKT,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAW,yBAAyB,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOxC,qBAAa,IAAK,SAAQ,UAAU;IAClC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAS/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,mBAAmB;IACnB,UAAU,IAAI,yBAAyB;IAIvC;;OAEG;IACI,aAAa,IAAI,MAAM;IAI9B,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,mBAAmB;IACnB,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,mBAAmB;IACnB,eAAe,IAAI,MAAM;IAIzB,mBAAmB;IACnB,mBAAmB,IAAI,gBAAgB;IAOvC,mBAAmB;IACnB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;IAI5C,mBAAmB;IACnB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI5C,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAuC3E,oBAAoB,IAAI,MAAM;IAI9B;;;;;;;OAOG;IACG,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,4BAA4B,CAAC;CA0F9E"}
1
+ {"version":3,"file":"rune.d.ts","sourceRoot":"","sources":["../../src/rune.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,aAAa,EACb,4BAA4B,EAG5B,gBAAgB,EAChB,eAAe,EAEhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,QAAQ,EACR,SAAS,EAKT,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAW,yBAAyB,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOxC,qBAAa,IAAK,SAAQ,UAAU;IAClC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAS/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,mBAAmB;IACnB,UAAU,IAAI,yBAAyB;IAIvC;;OAEG;IACI,aAAa,IAAI,MAAM;IAI9B,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,mBAAmB;IACnB,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,mBAAmB;IACnB,eAAe,IAAI,MAAM;IAIzB,mBAAmB;IACnB,mBAAmB,IAAI,gBAAgB;IAOvC,mBAAmB;IACnB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;IAI5C,mBAAmB;IACnB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI5C,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IA0C3E,oBAAoB,IAAI,MAAM;IAI9B;;;;;;;OAOG;IACG,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,4BAA4B,CAAC;CA4F9E"}
package/dist/src/rune.js CHANGED
@@ -102,7 +102,10 @@ class Rune extends abstract_cosmos_1.CosmosCoin {
102
102
  const transaction = await this.getBuilder().from(rawTx).build();
103
103
  const explainedTx = transaction.explainTransaction();
104
104
  if (txParams.recipients && txParams.recipients.length > 0) {
105
- const filteredRecipients = txParams.recipients?.map((recipient) => _.pick(recipient, ['address', 'amount']));
105
+ const filteredRecipients = txParams.recipients.map((recipient) => ({
106
+ address: this.getAddressDetails(recipient.address).address,
107
+ amount: recipient.amount,
108
+ }));
106
109
  let filteredOutputs = explainedTx.outputs.map((output) => _.pick(output, ['address', 'amount']));
107
110
  filteredOutputs = filteredOutputs.map((output) => {
108
111
  const prefix = this._utils.getNetworkPrefix();
@@ -155,7 +158,7 @@ class Rune extends abstract_cosmos_1.CosmosCoin {
155
158
  // Step 2: Fetch the bitgo key from params
156
159
  const userKey = params.userKey.replace(/\s/g, '');
157
160
  const backupKey = params.backupKey.replace(/\s/g, '');
158
- const { userKeyShare, backupKeyShare, commonKeyChain } = await sdk_core_1.ECDSAUtils.getMpcV2RecoveryKeyShares(userKey, backupKey, params.walletPassphrase); // baseAddress is not extracted
161
+ const { userKeyShare, backupKeyShare, commonKeyChain } = await sdk_core_1.ECDSAUtils.getMpcV2RecoveryKeyShares(userKey, backupKey, params.walletPassphrase, this.bitgo); // baseAddress is not extracted
159
162
  // Step 3: Instantiate the ECDSA signer and fetch the address details
160
163
  const MPC = new sdk_core_1.Ecdsa();
161
164
  const chainId = await this.getChainId();
@@ -163,7 +166,8 @@ class Rune extends abstract_cosmos_1.CosmosCoin {
163
166
  const senderAddress = this.getAddressFromPublicKey(publicKey);
164
167
  // Step 4: Fetch account details such as accountNo, balance and check for sufficient funds once gasAmount has been deducted
165
168
  const [accountNumber, sequenceNo] = await this.getAccountDetails(senderAddress);
166
- const balance = new bignumber_js_1.BigNumber(await this.getAccountBalance(senderAddress));
169
+ const balances = await this.getAccountBalance(senderAddress);
170
+ const balance = new bignumber_js_1.BigNumber(balances[0].amount);
167
171
  const gasBudget = {
168
172
  amount: [{ denom: this.getDenomination(), amount: this.getGasAmountDetails().gasAmount }],
169
173
  gasLimit: this.getGasAmountDetails().gasLimit,
@@ -212,4 +216,4 @@ class Rune extends abstract_cosmos_1.CosmosCoin {
212
216
  }
213
217
  }
214
218
  exports.Rune = Rune;
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlFQVNxQztBQUNyQyxtREFROEI7QUFDOUIsaURBQW1GO0FBQ25GLCtCQUEyRDtBQUMzRCwrQ0FBOEU7QUFDOUUsdUNBQXdDO0FBQ3hDLCtDQUF5QztBQUN6QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDeEMsMENBQTRCO0FBRTVCLG1DQUFvQztBQUVwQyxNQUFhLElBQUssU0FBUSw0QkFBVTtJQUdsQyxZQUFzQixLQUFnQixFQUFFLFdBQXVDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGlCQUFTLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsVUFBVTtRQUNSLE9BQU8sSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBZTtRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FB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QUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEUsc0JBQXNCO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLG1CQUFtQixDQUFDLGVBQWUsQ0FBQztRQUNwRCxNQUFNLFdBQVcsR0FBRyxJQUFBLG1CQUFVLEVBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWxFLE1BQU0sU0FBUyxHQUFHLE1BQU0scUJBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUVoSCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDOUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzdHLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkQsWUFBWSxHQUFHLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFckQsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0NBQ0Y7QUF6TUQsb0JBeU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29zbW9zQ29pbixcbiAgQ29zbW9zS2V5UGFpcixcbiAgQ29zbW9zTGlrZUNvaW5SZWNvdmVyeU91dHB1dCxcbiAgQ29zbW9zVHJhbnNhY3Rpb24sXG4gIEZlZURhdGEsXG4gIEdhc0Ftb3VudERldGFpbHMsXG4gIFJlY292ZXJ5T3B0aW9ucyxcbiAgU2VuZE1lc3NhZ2UsXG59IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWNvc21vcyc7XG5pbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBFY2RzYSxcbiAgRUNEU0FVdGlscyxcbiAgRW52aXJvbm1lbnRzLFxuICBUcmFuc2FjdGlvblR5cGUsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBCYXNlVW5pdCwgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEtleVBhaXIsIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2xpYic7XG5pbXBvcnQgeyBHQVNfQU1PVU5ULCBHQVNfTElNSVQsIFJVTkVfRkVFUywgUk9PVF9QQVRIIH0gZnJvbSAnLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IFJ1bmVVdGlscyB9IGZyb20gJy4vbGliL3V0aWxzJztcbmltcG9ydCB7IEJpZ051bWJlciB9IGZyb20gJ2JpZ251bWJlci5qcyc7XG5jb25zdCBiZWNoMzIgPSByZXF1aXJlKCdiZWNoMzItYnVmZmVyJyk7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDb2luIH0gZnJvbSAnQGNvc21qcy9zdGFyZ2F0ZSc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcblxuZXhwb3J0IGNsYXNzIFJ1bmUgZXh0ZW5kcyBDb3Ntb3NDb2luIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF91dGlsczogUnVuZVV0aWxzO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuICAgIHRoaXMuX3N0YXRpY3NDb2luID0gc3RhdGljc0NvaW47XG4gICAgdGhpcy5fdXRpbHMgPSBuZXcgUnVuZVV0aWxzKCk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgUnVuZShiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXRCdWlsZGVyKCk6IFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yIGJldHdlZW4gdGhlIGNvaW4ncyBiYXNlIHVuaXQgYW5kIGl0cyBzbWFsbGVzdCBzdWJkaXZpc29uXG4gICAqL1xuICBwdWJsaWMgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIge1xuICAgIHJldHVybiAxZTg7XG4gIH1cblxuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykgfHwgdGhpcy5fdXRpbHMuaXNWYWxpZFZhbGlkYXRvckFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIHByb3RlY3RlZCBnZXRQdWJsaWNOb2RlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEVudmlyb25tZW50c1t0aGlzLmJpdGdvLmdldEVudigpXS5ydW5lTm9kZVVybDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0RGVub21pbmF0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJhc2VVbml0LlJVTkU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldEdhc0Ftb3VudERldGFpbHMoKTogR2FzQW1vdW50RGV0YWlscyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdhc0Ftb3VudDogR0FTX0FNT1VOVCxcbiAgICAgIGdhc0xpbWl0OiBHQVNfTElNSVQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0S2V5UGFpcihwdWJsaWNLZXk6IHN0cmluZyk6IENvc21vc0tleVBhaXIge1xuICAgIHJldHVybiBuZXcgS2V5UGFpcih7IHB1YjogcHVibGljS2V5IH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBLZXlQYWlyKHsgcHViOiBwdWJsaWNLZXkgfSkuZ2V0QWRkcmVzcygpO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBsZXQgdG90YWxBbW91bnQgPSBuZXcgQmlnTnVtYmVyKDApO1xuICAgIGNvbnN0IHsgdHhQcmVidWlsZCwgdHhQYXJhbXMgfSA9IHBhcmFtcztcbiAgICBjb25zdCByYXdUeCA9IHR4UHJlYnVpbGQudHhIZXg7XG4gICAgaWYgKCFyYXdUeCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHR4IHByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gICAgfVxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy5nZXRCdWlsZGVyKCkuZnJvbShyYXdUeCkuYnVpbGQoKTtcbiAgICBjb25zdCBleHBsYWluZWRUeCA9IHRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgaWYgKHR4UGFyYW1zLnJlY2lwaWVudHMgJiYgdHhQYXJhbXMucmVjaXBpZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZFJlY2lwaWVudHMgPSB0eFBhcmFtcy5yZWNpcGllbnRzPy5tYXAoKHJlY2lwaWVudCkgPT4gXy5waWNrKHJlY2lwaWVudCwgWydhZGRyZXNzJywgJ2Ftb3VudCddKSk7XG4gICAgICBsZXQgZmlsdGVyZWRPdXRwdXRzID0gZXhwbGFpbmVkVHgub3V0cHV0cy5tYXAoKG91dHB1dCkgPT4gXy5waWNrKG91dHB1dCwgWydhZGRyZXNzJywgJ2Ftb3VudCddKSk7XG5cbiAgICAgIGZpbHRlcmVkT3V0cHV0cyA9IGZpbHRlcmVkT3V0cHV0cy5tYXAoKG91dHB1dCkgPT4ge1xuICAgICAgICBjb25zdCBwcmVmaXggPSB0aGlzLl91dGlscy5nZXROZXR3b3JrUHJlZml4KCk7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZEFkZHJlc3MgPSBiZWNoMzIuZW5jb2RlKHByZWZpeCwgb3V0cHV0LmFkZHJlc3MpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgICBhZGRyZXNzOiBjb252ZXJ0ZWRBZGRyZXNzLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghXy5pc0VxdWFsKGZpbHRlcmVkT3V0cHV0cywgZmlsdGVyZWRSZWNpcGllbnRzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgICB9XG4gICAgICAvLyBXaXRoZHJhd0RlbGVnYXRvclJld2FyZHMgYW5kIENvbnRyYWN0Q2FsbCB0cmFuc2FjdGlvbiBkb24ndCBoYXZlIGFtb3VudFxuICAgICAgaWYgKHRyYW5zYWN0aW9uLnR5cGUgIT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXcgJiYgdHJhbnNhY3Rpb24udHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCkge1xuICAgICAgICBmb3IgKGNvbnN0IHJlY2lwaWVudHMgb2YgdHhQYXJhbXMucmVjaXBpZW50cykge1xuICAgICAgICAgIHRvdGFsQW1vdW50ID0gdG90YWxBbW91bnQucGx1cyhyZWNpcGllbnRzLmFtb3VudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0b3RhbEFtb3VudC5pc0VxdWFsVG8oZXhwbGFpbmVkVHgub3V0cHV0QW1vdW50KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHggdG90YWwgYW1vdW50IGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdG90YWwgYW1vdW50IGZpZWxkJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXROYXRpdmVSdW5lVHhuRmVlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBSVU5FX0ZFRVM7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBvdmVycmlkZGVuIGZyb20gQ29zbW9zQ29pbiBjbGFzcycgcmVjb3ZlciBmdW5jdGlvbiBkdWUgdG8gdGhlIGRpZmZlcmVuY2UgaW4gZmVlcyBoYW5kbGluZyBpbiB0aG9yY2hhaW5cbiAgICogQHBhcmFtIHtSZWNvdmVyeU9wdGlvbnN9IHBhcmFtcyBwYXJhbWV0ZXJzIG5lZWRlZCB0byBjb25zdHJ1Y3QgYW5kXG4gICAqIChtYXliZSkgc2lnbiB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHJldHVybnMge0Nvc21vc0xpa2VDb2luUmVjb3ZlcnlPdXRwdXR9IHRoZSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uIGhleCBzdHJpbmcgYW5kIGluZGV4XG4gICAqIG9mIHRoZSBhZGRyZXNzIGJlaW5nIHN3ZXB0XG4gICAqL1xuICBhc3luYyByZWNvdmVyKHBhcmFtczogUmVjb3ZlcnlPcHRpb25zKTogUHJvbWlzZTxDb3Ntb3NMaWtlQ29pblJlY292ZXJ5T3V0cHV0PiB7XG4gICAgLy8gU3RlcCAxOiBDaGVjayBpZiBwYXJhbXMgY29udGFpbnMgdGhlIHJlcXVpcmVkIHBhcmFtZXRlcnNcblxuICAgIGlmICghcGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24gfHwgIXRoaXMuaXNWYWxpZEFkZHJlc3MocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcmVjb3ZlcnlEZXN0aW5hdGlvbicpO1xuICAgIH1cblxuICAgIGlmICghcGFyYW1zLnVzZXJLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB1c2VyS2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKCFwYXJhbXMuYmFja3VwS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgYmFja3VwS2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKCFwYXJhbXMud2FsbGV0UGFzc3BocmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHdhbGxldCBwYXNzcGhyYXNlJyk7XG4gICAgfVxuXG4gICAgLy8gU3RlcCAyOiBGZXRjaCB0aGUgYml0Z28ga2V5IGZyb20gcGFyYW1zXG4gICAgY29uc3QgdXNlcktleSA9IHBhcmFtcy51c2VyS2V5LnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgY29uc3QgYmFja3VwS2V5ID0gcGFyYW1zLmJhY2t1cEtleS5yZXBsYWNlKC9cXHMvZywgJycpO1xuXG4gICAgY29uc3QgeyB1c2VyS2V5U2hhcmUsIGJhY2t1cEtleVNoYXJlLCBjb21tb25LZXlDaGFpbiB9ID0gYXdhaXQgRUNEU0FVdGlscy5nZXRNcGNWMlJlY292ZXJ5S2V5U2hhcmVzKFxuICAgICAgdXNlcktleSxcbiAgICAgIGJhY2t1cEtleSxcbiAgICAgIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlXG4gICAgKTsgLy8gYmFzZUFkZHJlc3MgaXMgbm90IGV4dHJhY3RlZFxuICAgIC8vIFN0ZXAgMzogSW5zdGFudGlhdGUgdGhlIEVDRFNBIHNpZ25lciBhbmQgZmV0Y2ggdGhlIGFkZHJlc3MgZGV0YWlsc1xuICAgIGNvbnN0IE1QQyA9IG5ldyBFY2RzYSgpO1xuICAgIGNvbnN0IGNoYWluSWQgPSBhd2FpdCB0aGlzLmdldENoYWluSWQoKTtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBNUEMuZGVyaXZlVW5oYXJkZW5lZChjb21tb25LZXlDaGFpbiwgUk9PVF9QQVRIKS5zbGljZSgwLCA2Nik7XG4gICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IHRoaXMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5KTtcblxuICAgIC8vIFN0ZXAgNDogRmV0Y2ggYWNjb3VudCBkZXRhaWxzIHN1Y2ggYXMgYWNjb3VudE5vLCBiYWxhbmNlIGFuZCBjaGVjayBmb3Igc3VmZmljaWVudCBmdW5kcyBvbmNlIGdhc0Ftb3VudCBoYXMgYmVlbiBkZWR1Y3RlZFxuICAgIGNvbnN0IFthY2NvdW50TnVtYmVyLCBzZXF1ZW5jZU5vXSA9IGF3YWl0IHRoaXMuZ2V0QWNjb3VudERldGFpbHMoc2VuZGVyQWRkcmVzcyk7XG4gICAgY29uc3QgYmFsYW5jZSA9IG5ldyBCaWdOdW1iZXIoYXdhaXQgdGhpcy5nZXRBY2NvdW50QmFsYW5jZShzZW5kZXJBZGRyZXNzKSk7XG4gICAgY29uc3QgZ2FzQnVkZ2V0OiBGZWVEYXRhID0ge1xuICAgICAgYW1vdW50OiBbeyBkZW5vbTogdGhpcy5nZXREZW5vbWluYXRpb24oKSwgYW1vdW50OiB0aGlzLmdldEdhc0Ftb3VudERldGFpbHMoKS5nYXNBbW91bnQgfV0sXG4gICAgICBnYXNMaW1pdDogdGhpcy5nZXRHYXNBbW91bnREZXRhaWxzKCkuZ2FzTGltaXQsXG4gICAgfTtcbiAgICBjb25zdCBhY3R1YWxCYWxhbmNlID0gYmFsYW5jZS5taW51cyh0aGlzLmdldE5hdGl2ZVJ1bmVUeG5GZWVzKCkpO1xuXG4gICAgaWYgKGFjdHVhbEJhbGFuY2UuaXNMZXNzVGhhbk9yRXF1YWxUbygwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWQgbm90IGhhdmUgZW5vdWdoIGZ1bmRzIHRvIHJlY292ZXInKTtcbiAgICB9XG5cbiAgICAvLyBTdGVwIDU6IE9uY2Ugc3VmZmljaWVudCBmdW5kcyBhcmUgcHJlc2VudCwgY29uc3RydWN0IHRoZSByZWNvdmVyIHR4IG1lc3NzYWdlXG4gICAgY29uc3QgYW1vdW50OiBDb2luW10gPSBbXG4gICAgICB7XG4gICAgICAgIGRlbm9tOiB0aGlzLmdldERlbm9taW5hdGlvbigpLFxuICAgICAgICBhbW91bnQ6IGFjdHVhbEJhbGFuY2UudG9GaXhlZCgpLFxuICAgICAgfSxcbiAgICBdO1xuICAgIGNvbnN0IHNlbmRNZXNzYWdlOiBTZW5kTWVzc2FnZVtdID0gW1xuICAgICAge1xuICAgICAgICBmcm9tQWRkcmVzczogc2VuZGVyQWRkcmVzcyxcbiAgICAgICAgdG9BZGRyZXNzOiBwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgYW1vdW50OiBhbW91bnQsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICAvLyBTdGVwIDY6IEJ1aWxkIHRoZSB1bnNpZ25lZCB0eCB1c2luZyB0aGUgY29uc3RydWN0ZWQgbWVzc2FnZVxuICAgIGNvbnN0IHR4bkJ1aWxkZXIgPSB0aGlzLmdldEJ1aWxkZXIoKS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICB0eG5CdWlsZGVyXG4gICAgICAubWVzc2FnZXMoc2VuZE1lc3NhZ2UpXG4gICAgICAuZ2FzQnVkZ2V0KGdhc0J1ZGdldClcbiAgICAgIC5wdWJsaWNLZXkocHVibGljS2V5KVxuICAgICAgLnNlcXVlbmNlKE51bWJlcihzZXF1ZW5jZU5vKSlcbiAgICAgIC5hY2NvdW50TnVtYmVyKE51bWJlcihhY2NvdW50TnVtYmVyKSlcbiAgICAgIC5jaGFpbklkKGNoYWluSWQpO1xuICAgIGNvbnN0IHVuc2lnbmVkVHJhbnNhY3Rpb24gPSAoYXdhaXQgdHhuQnVpbGRlci5idWlsZCgpKSBhcyBDb3Ntb3NUcmFuc2FjdGlvbjtcbiAgICBsZXQgc2VyaWFsaXplZFR4ID0gdW5zaWduZWRUcmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIGNvbnN0IHNpZ25hYmxlSGV4ID0gdW5zaWduZWRUcmFuc2FjdGlvbi5zaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgLy8gU3RlcCA3OiBTaWduIHRoZSB0eFxuICAgIGNvbnN0IG1lc3NhZ2UgPSB1bnNpZ25lZFRyYW5zYWN0aW9uLnNpZ25hYmxlUGF5bG9hZDtcbiAgICBjb25zdCBtZXNzYWdlSGFzaCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShtZXNzYWdlKS5kaWdlc3QoKTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IEVDRFNBVXRpbHMuc2lnblJlY292ZXJ5TXBjVjIobWVzc2FnZUhhc2gsIHVzZXJLZXlTaGFyZSwgYmFja3VwS2V5U2hhcmUsIGNvbW1vbktleUNoYWluKTtcblxuICAgIGNvbnN0IHNpZ25hYmxlQnVmZmVyID0gQnVmZmVyLmZyb20oc2lnbmFibGVIZXgsICdoZXgnKTtcbiAgICBNUEMudmVyaWZ5KHNpZ25hYmxlQnVmZmVyLCBzaWduYXR1cmUsIHRoaXMuZ2V0SGFzaEZ1bmN0aW9uKCkpO1xuICAgIGNvbnN0IGNvc21vc0tleVBhaXIgPSB0aGlzLmdldEtleVBhaXIocHVibGljS2V5KTtcbiAgICB0eG5CdWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1YjogY29zbW9zS2V5UGFpci5nZXRLZXlzKCkucHViIH0sIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZS5yICsgc2lnbmF0dXJlLnMsICdoZXgnKSk7XG4gICAgY29uc3Qgc2lnbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCB0eG5CdWlsZGVyLmJ1aWxkKCk7XG4gICAgc2VyaWFsaXplZFR4ID0gc2lnbmVkVHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgIHJldHVybiB7IHNlcmlhbGl6ZWRUeDogc2VyaWFsaXplZFR4IH07XG4gIH1cbn1cbiJdfQ==
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlFQVNxQztBQUNyQyxtREFROEI7QUFDOUIsaURBQW1GO0FBQ25GLCtCQUEyRDtBQUMzRCwrQ0FBOEU7QUFDOUUsdUNBQXdDO0FBQ3hDLCtDQUF5QztBQUN6QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDeEMsMENBQTRCO0FBRTVCLG1DQUFvQztBQUVwQyxNQUFhLElBQUssU0FBUSw0QkFBVTtJQUdsQyxZQUFzQixLQUFnQixFQUFFLFdBQXVDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGlCQUFTLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsVUFBVTtRQUNSLE9BQU8sSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBZTtRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FB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QyxDQUFDO0NBQ0Y7QUE5TUQsb0JBOE1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29zbW9zQ29pbixcbiAgQ29zbW9zS2V5UGFpcixcbiAgQ29zbW9zTGlrZUNvaW5SZWNvdmVyeU91dHB1dCxcbiAgQ29zbW9zVHJhbnNhY3Rpb24sXG4gIEZlZURhdGEsXG4gIEdhc0Ftb3VudERldGFpbHMsXG4gIFJlY292ZXJ5T3B0aW9ucyxcbiAgU2VuZE1lc3NhZ2UsXG59IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWNvc21vcyc7XG5pbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBFY2RzYSxcbiAgRUNEU0FVdGlscyxcbiAgRW52aXJvbm1lbnRzLFxuICBUcmFuc2FjdGlvblR5cGUsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBCYXNlVW5pdCwgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEtleVBhaXIsIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2xpYic7XG5pbXBvcnQgeyBHQVNfQU1PVU5ULCBHQVNfTElNSVQsIFJVTkVfRkVFUywgUk9PVF9QQVRIIH0gZnJvbSAnLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IFJ1bmVVdGlscyB9IGZyb20gJy4vbGliL3V0aWxzJztcbmltcG9ydCB7IEJpZ051bWJlciB9IGZyb20gJ2JpZ251bWJlci5qcyc7XG5jb25zdCBiZWNoMzIgPSByZXF1aXJlKCdiZWNoMzItYnVmZmVyJyk7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDb2luIH0gZnJvbSAnQGNvc21qcy9zdGFyZ2F0ZSc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcblxuZXhwb3J0IGNsYXNzIFJ1bmUgZXh0ZW5kcyBDb3Ntb3NDb2luIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF91dGlsczogUnVuZVV0aWxzO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuICAgIHRoaXMuX3N0YXRpY3NDb2luID0gc3RhdGljc0NvaW47XG4gICAgdGhpcy5fdXRpbHMgPSBuZXcgUnVuZVV0aWxzKCk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgUnVuZShiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXRCdWlsZGVyKCk6IFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yIGJldHdlZW4gdGhlIGNvaW4ncyBiYXNlIHVuaXQgYW5kIGl0cyBzbWFsbGVzdCBzdWJkaXZpc29uXG4gICAqL1xuICBwdWJsaWMgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIge1xuICAgIHJldHVybiAxZTg7XG4gIH1cblxuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykgfHwgdGhpcy5fdXRpbHMuaXNWYWxpZFZhbGlkYXRvckFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIHByb3RlY3RlZCBnZXRQdWJsaWNOb2RlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEVudmlyb25tZW50c1t0aGlzLmJpdGdvLmdldEVudigpXS5ydW5lTm9kZVVybDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0RGVub21pbmF0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJhc2VVbml0LlJVTkU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldEdhc0Ftb3VudERldGFpbHMoKTogR2FzQW1vdW50RGV0YWlscyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdhc0Ftb3VudDogR0FTX0FNT1VOVCxcbiAgICAgIGdhc0xpbWl0OiBHQVNfTElNSVQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0S2V5UGFpcihwdWJsaWNLZXk6IHN0cmluZyk6IENvc21vc0tleVBhaXIge1xuICAgIHJldHVybiBuZXcgS2V5UGFpcih7IHB1YjogcHVibGljS2V5IH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBLZXlQYWlyKHsgcHViOiBwdWJsaWNLZXkgfSkuZ2V0QWRkcmVzcygpO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBsZXQgdG90YWxBbW91bnQgPSBuZXcgQmlnTnVtYmVyKDApO1xuICAgIGNvbnN0IHsgdHhQcmVidWlsZCwgdHhQYXJhbXMgfSA9IHBhcmFtcztcbiAgICBjb25zdCByYXdUeCA9IHR4UHJlYnVpbGQudHhIZXg7XG4gICAgaWYgKCFyYXdUeCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHR4IHByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gICAgfVxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy5nZXRCdWlsZGVyKCkuZnJvbShyYXdUeCkuYnVpbGQoKTtcbiAgICBjb25zdCBleHBsYWluZWRUeCA9IHRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgaWYgKHR4UGFyYW1zLnJlY2lwaWVudHMgJiYgdHhQYXJhbXMucmVjaXBpZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZFJlY2lwaWVudHMgPSB0eFBhcmFtcy5yZWNpcGllbnRzLm1hcCgocmVjaXBpZW50KSA9PiAoe1xuICAgICAgICBhZGRyZXNzOiB0aGlzLmdldEFkZHJlc3NEZXRhaWxzKHJlY2lwaWVudC5hZGRyZXNzKS5hZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IHJlY2lwaWVudC5hbW91bnQsXG4gICAgICB9KSk7XG4gICAgICBsZXQgZmlsdGVyZWRPdXRwdXRzID0gZXhwbGFpbmVkVHgub3V0cHV0cy5tYXAoKG91dHB1dCkgPT4gXy5waWNrKG91dHB1dCwgWydhZGRyZXNzJywgJ2Ftb3VudCddKSk7XG5cbiAgICAgIGZpbHRlcmVkT3V0cHV0cyA9IGZpbHRlcmVkT3V0cHV0cy5tYXAoKG91dHB1dCkgPT4ge1xuICAgICAgICBjb25zdCBwcmVmaXggPSB0aGlzLl91dGlscy5nZXROZXR3b3JrUHJlZml4KCk7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZEFkZHJlc3MgPSBiZWNoMzIuZW5jb2RlKHByZWZpeCwgb3V0cHV0LmFkZHJlc3MpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgICBhZGRyZXNzOiBjb252ZXJ0ZWRBZGRyZXNzLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghXy5pc0VxdWFsKGZpbHRlcmVkT3V0cHV0cywgZmlsdGVyZWRSZWNpcGllbnRzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgICB9XG4gICAgICAvLyBXaXRoZHJhd0RlbGVnYXRvclJld2FyZHMgYW5kIENvbnRyYWN0Q2FsbCB0cmFuc2FjdGlvbiBkb24ndCBoYXZlIGFtb3VudFxuICAgICAgaWYgKHRyYW5zYWN0aW9uLnR5cGUgIT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXcgJiYgdHJhbnNhY3Rpb24udHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCkge1xuICAgICAgICBmb3IgKGNvbnN0IHJlY2lwaWVudHMgb2YgdHhQYXJhbXMucmVjaXBpZW50cykge1xuICAgICAgICAgIHRvdGFsQW1vdW50ID0gdG90YWxBbW91bnQucGx1cyhyZWNpcGllbnRzLmFtb3VudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0b3RhbEFtb3VudC5pc0VxdWFsVG8oZXhwbGFpbmVkVHgub3V0cHV0QW1vdW50KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHggdG90YWwgYW1vdW50IGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdG90YWwgYW1vdW50IGZpZWxkJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXROYXRpdmVSdW5lVHhuRmVlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBSVU5FX0ZFRVM7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBvdmVycmlkZGVuIGZyb20gQ29zbW9zQ29pbiBjbGFzcycgcmVjb3ZlciBmdW5jdGlvbiBkdWUgdG8gdGhlIGRpZmZlcmVuY2UgaW4gZmVlcyBoYW5kbGluZyBpbiB0aG9yY2hhaW5cbiAgICogQHBhcmFtIHtSZWNvdmVyeU9wdGlvbnN9IHBhcmFtcyBwYXJhbWV0ZXJzIG5lZWRlZCB0byBjb25zdHJ1Y3QgYW5kXG4gICAqIChtYXliZSkgc2lnbiB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHJldHVybnMge0Nvc21vc0xpa2VDb2luUmVjb3ZlcnlPdXRwdXR9IHRoZSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uIGhleCBzdHJpbmcgYW5kIGluZGV4XG4gICAqIG9mIHRoZSBhZGRyZXNzIGJlaW5nIHN3ZXB0XG4gICAqL1xuICBhc3luYyByZWNvdmVyKHBhcmFtczogUmVjb3ZlcnlPcHRpb25zKTogUHJvbWlzZTxDb3Ntb3NMaWtlQ29pblJlY292ZXJ5T3V0cHV0PiB7XG4gICAgLy8gU3RlcCAxOiBDaGVjayBpZiBwYXJhbXMgY29udGFpbnMgdGhlIHJlcXVpcmVkIHBhcmFtZXRlcnNcblxuICAgIGlmICghcGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24gfHwgIXRoaXMuaXNWYWxpZEFkZHJlc3MocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcmVjb3ZlcnlEZXN0aW5hdGlvbicpO1xuICAgIH1cblxuICAgIGlmICghcGFyYW1zLnVzZXJLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB1c2VyS2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKCFwYXJhbXMuYmFja3VwS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgYmFja3VwS2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKCFwYXJhbXMud2FsbGV0UGFzc3BocmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHdhbGxldCBwYXNzcGhyYXNlJyk7XG4gICAgfVxuXG4gICAgLy8gU3RlcCAyOiBGZXRjaCB0aGUgYml0Z28ga2V5IGZyb20gcGFyYW1zXG4gICAgY29uc3QgdXNlcktleSA9IHBhcmFtcy51c2VyS2V5LnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgY29uc3QgYmFja3VwS2V5ID0gcGFyYW1zLmJhY2t1cEtleS5yZXBsYWNlKC9cXHMvZywgJycpO1xuXG4gICAgY29uc3QgeyB1c2VyS2V5U2hhcmUsIGJhY2t1cEtleVNoYXJlLCBjb21tb25LZXlDaGFpbiB9ID0gYXdhaXQgRUNEU0FVdGlscy5nZXRNcGNWMlJlY292ZXJ5S2V5U2hhcmVzKFxuICAgICAgdXNlcktleSxcbiAgICAgIGJhY2t1cEtleSxcbiAgICAgIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgdGhpcy5iaXRnb1xuICAgICk7IC8vIGJhc2VBZGRyZXNzIGlzIG5vdCBleHRyYWN0ZWRcbiAgICAvLyBTdGVwIDM6IEluc3RhbnRpYXRlIHRoZSBFQ0RTQSBzaWduZXIgYW5kIGZldGNoIHRoZSBhZGRyZXNzIGRldGFpbHNcbiAgICBjb25zdCBNUEMgPSBuZXcgRWNkc2EoKTtcbiAgICBjb25zdCBjaGFpbklkID0gYXdhaXQgdGhpcy5nZXRDaGFpbklkKCk7XG4gICAgY29uc3QgcHVibGljS2V5ID0gTVBDLmRlcml2ZVVuaGFyZGVuZWQoY29tbW9uS2V5Q2hhaW4sIFJPT1RfUEFUSCkuc2xpY2UoMCwgNjYpO1xuICAgIGNvbnN0IHNlbmRlckFkZHJlc3MgPSB0aGlzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleSk7XG5cbiAgICAvLyBTdGVwIDQ6IEZldGNoIGFjY291bnQgZGV0YWlscyBzdWNoIGFzIGFjY291bnRObywgYmFsYW5jZSBhbmQgY2hlY2sgZm9yIHN1ZmZpY2llbnQgZnVuZHMgb25jZSBnYXNBbW91bnQgaGFzIGJlZW4gZGVkdWN0ZWRcbiAgICBjb25zdCBbYWNjb3VudE51bWJlciwgc2VxdWVuY2VOb10gPSBhd2FpdCB0aGlzLmdldEFjY291bnREZXRhaWxzKHNlbmRlckFkZHJlc3MpO1xuICAgIGNvbnN0IGJhbGFuY2VzID0gYXdhaXQgdGhpcy5nZXRBY2NvdW50QmFsYW5jZShzZW5kZXJBZGRyZXNzKTtcbiAgICBjb25zdCBiYWxhbmNlID0gbmV3IEJpZ051bWJlcihiYWxhbmNlc1swXS5hbW91bnQpO1xuICAgIGNvbnN0IGdhc0J1ZGdldDogRmVlRGF0YSA9IHtcbiAgICAgIGFtb3VudDogW3sgZGVub206IHRoaXMuZ2V0RGVub21pbmF0aW9uKCksIGFtb3VudDogdGhpcy5nZXRHYXNBbW91bnREZXRhaWxzKCkuZ2FzQW1vdW50IH1dLFxuICAgICAgZ2FzTGltaXQ6IHRoaXMuZ2V0R2FzQW1vdW50RGV0YWlscygpLmdhc0xpbWl0LFxuICAgIH07XG4gICAgY29uc3QgYWN0dWFsQmFsYW5jZSA9IGJhbGFuY2UubWludXModGhpcy5nZXROYXRpdmVSdW5lVHhuRmVlcygpKTtcblxuICAgIGlmIChhY3R1YWxCYWxhbmNlLmlzTGVzc1RoYW5PckVxdWFsVG8oMCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBoYXZlIGVub3VnaCBmdW5kcyB0byByZWNvdmVyJyk7XG4gICAgfVxuXG4gICAgLy8gU3RlcCA1OiBPbmNlIHN1ZmZpY2llbnQgZnVuZHMgYXJlIHByZXNlbnQsIGNvbnN0cnVjdCB0aGUgcmVjb3ZlciB0eCBtZXNzc2FnZVxuICAgIGNvbnN0IGFtb3VudDogQ29pbltdID0gW1xuICAgICAge1xuICAgICAgICBkZW5vbTogdGhpcy5nZXREZW5vbWluYXRpb24oKSxcbiAgICAgICAgYW1vdW50OiBhY3R1YWxCYWxhbmNlLnRvRml4ZWQoKSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBjb25zdCBzZW5kTWVzc2FnZTogU2VuZE1lc3NhZ2VbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgZnJvbUFkZHJlc3M6IHNlbmRlckFkZHJlc3MsXG4gICAgICAgIHRvQWRkcmVzczogcGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIGFtb3VudDogYW1vdW50LFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgLy8gU3RlcCA2OiBCdWlsZCB0aGUgdW5zaWduZWQgdHggdXNpbmcgdGhlIGNvbnN0cnVjdGVkIG1lc3NhZ2VcbiAgICBjb25zdCB0eG5CdWlsZGVyID0gdGhpcy5nZXRCdWlsZGVyKCkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgdHhuQnVpbGRlclxuICAgICAgLm1lc3NhZ2VzKHNlbmRNZXNzYWdlKVxuICAgICAgLmdhc0J1ZGdldChnYXNCdWRnZXQpXG4gICAgICAucHVibGljS2V5KHB1YmxpY0tleSlcbiAgICAgIC5zZXF1ZW5jZShOdW1iZXIoc2VxdWVuY2VObykpXG4gICAgICAuYWNjb3VudE51bWJlcihOdW1iZXIoYWNjb3VudE51bWJlcikpXG4gICAgICAuY2hhaW5JZChjaGFpbklkKTtcbiAgICBjb25zdCB1bnNpZ25lZFRyYW5zYWN0aW9uID0gKGF3YWl0IHR4bkJ1aWxkZXIuYnVpbGQoKSkgYXMgQ29zbW9zVHJhbnNhY3Rpb247XG4gICAgbGV0IHNlcmlhbGl6ZWRUeCA9IHVuc2lnbmVkVHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBjb25zdCBzaWduYWJsZUhleCA9IHVuc2lnbmVkVHJhbnNhY3Rpb24uc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIC8vIFN0ZXAgNzogU2lnbiB0aGUgdHhcbiAgICBjb25zdCBtZXNzYWdlID0gdW5zaWduZWRUcmFuc2FjdGlvbi5zaWduYWJsZVBheWxvYWQ7XG4gICAgY29uc3QgbWVzc2FnZUhhc2ggPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUobWVzc2FnZSkuZGlnZXN0KCk7XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBFQ0RTQVV0aWxzLnNpZ25SZWNvdmVyeU1wY1YyKG1lc3NhZ2VIYXNoLCB1c2VyS2V5U2hhcmUsIGJhY2t1cEtleVNoYXJlLCBjb21tb25LZXlDaGFpbik7XG5cbiAgICBjb25zdCBzaWduYWJsZUJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHNpZ25hYmxlSGV4LCAnaGV4Jyk7XG4gICAgTVBDLnZlcmlmeShzaWduYWJsZUJ1ZmZlciwgc2lnbmF0dXJlLCB0aGlzLmdldEhhc2hGdW5jdGlvbigpKTtcbiAgICBjb25zdCBjb3Ntb3NLZXlQYWlyID0gdGhpcy5nZXRLZXlQYWlyKHB1YmxpY0tleSk7XG4gICAgdHhuQnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IGNvc21vc0tleVBhaXIuZ2V0S2V5cygpLnB1YiB9LCBCdWZmZXIuZnJvbShzaWduYXR1cmUuciArIHNpZ25hdHVyZS5zLCAnaGV4JykpO1xuICAgIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgdHhuQnVpbGRlci5idWlsZCgpO1xuICAgIHNlcmlhbGl6ZWRUeCA9IHNpZ25lZFRyYW5zYWN0aW9uLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICByZXR1cm4geyBzZXJpYWxpemVkVHg6IHNlcmlhbGl6ZWRUeCB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,74 @@
1
+ export declare const TEST_ACCOUNT: {
2
+ pubAddress: string;
3
+ testnetPubAddress: string;
4
+ compressedPublicKey: string;
5
+ compressedPublicKeyTwo: string;
6
+ uncompressedPublicKey: string;
7
+ privateKey: string;
8
+ extendedPrv: string;
9
+ extendedPub: string;
10
+ };
11
+ export declare const mainnetAddress: {
12
+ address1: string;
13
+ address2: string;
14
+ address3: string;
15
+ address4: string;
16
+ validatorAddress1: string;
17
+ validatorAddress2: string;
18
+ validatorAddress3: string;
19
+ validatorAddress4: string;
20
+ noMemoIdAddress: string;
21
+ validMemoIdAddress: string;
22
+ invalidMemoIdAddress: string;
23
+ multipleMemoIdAddress: string;
24
+ };
25
+ export declare const blockHash: {
26
+ hash1: string;
27
+ hash2: string;
28
+ };
29
+ export declare const txIds: {
30
+ hash1: string;
31
+ hash2: string;
32
+ hash3: string;
33
+ };
34
+ export declare const mainnetCoinAmounts: {
35
+ amount1: {
36
+ amount: string;
37
+ denom: string;
38
+ };
39
+ amount2: {
40
+ amount: string;
41
+ denom: string;
42
+ };
43
+ amount3: {
44
+ amount: string;
45
+ denom: string;
46
+ };
47
+ amount4: {
48
+ amount: string;
49
+ denom: string;
50
+ };
51
+ amount5: {
52
+ amount: string;
53
+ denom: string;
54
+ };
55
+ };
56
+ export declare const mainnetGasAmounts: {
57
+ positiveGasAmount: {
58
+ amount: string;
59
+ denom: string;
60
+ };
61
+ zeroGasAmount: {
62
+ amount: string;
63
+ denom: string;
64
+ };
65
+ emptyGasAmount: {
66
+ amount: string;
67
+ denom: string;
68
+ };
69
+ alphabeticGasAmount: {
70
+ amount: string;
71
+ denom: string;
72
+ };
73
+ };
74
+ //# sourceMappingURL=rune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rune.d.ts","sourceRoot":"","sources":["../../../test/resources/rune.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;CAYxB,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;CAa1B,CAAC;AAEF,eAAO,MAAM,SAAS;;;CAGrB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;CAIjB,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;CAM9B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAK7B,CAAC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ // Get the test data by running the scripts for the particular coin from coin-sandbox repo.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.mainnetGasAmounts = exports.mainnetCoinAmounts = exports.txIds = exports.blockHash = exports.mainnetAddress = exports.TEST_ACCOUNT = void 0;
5
+ exports.TEST_ACCOUNT = {
6
+ pubAddress: 'thor1xrh89ced02ea6928kcwectgtkk7k4954dags7v',
7
+ testnetPubAddress: 'sthor1xrh89ced02ea6928kcwectgtkk7k4954ey5xgj',
8
+ compressedPublicKey: '0371b155f21bf4426d9adeda30c858f523da3d20ca9c2a1c27b83baeac3ed6f184',
9
+ compressedPublicKeyTwo: '02e04ea328d98de663224a126a1c64740e341976f0360d45511c954e61fba30466',
10
+ uncompressedPublicKey: '0471b155f21bf4426d9adeda30c858f523da3d20ca9c2a1c27b83baeac3ed6f1843a0b64237e638ba7129d2dbe86a5c5cbd1e85f6e5ba6606b6c1f98e1b5d23b87',
11
+ privateKey: 'c9cfbf9d86f86d55ce358b15402bd4f9e274b5249ff9be1b852553a36681a798',
12
+ extendedPrv: 'xprv9s21ZrQH143K4CFciZ9dkVK2gyAj8ag8PUPm7vVZhbUhA9mQPK9f4BhzqkDsKojLhJWQndiRKPbwFaEy6dGv6eDBZkMimpiDX8ZvNN2kCVH',
13
+ extendedPub: 'xpub661MyMwAqRbcGgL5page7dFmF11DY3PykhKMvJuBFw1g2x6YvrTubz2Uh2Xa4qmBvtxVPxy2YCpRAQQCQQYz5MctWsCdWvDwybRJvaGubjL',
14
+ };
15
+ exports.mainnetAddress = {
16
+ address1: 'thor1fwk9jl6kfflurj9p0wt098kxl02gle4yhnm687',
17
+ address2: 'thor17hwqt302e5f2xm4h95ma8wuggqkvfzgvsnh5z9',
18
+ address3: 'thor17hwqt302e5f2xm4h95ma8wuggqkvfzgvsnh5',
19
+ address4: 'tho166n4w5039meulfa3p6ydg60ve6ueac7tlt0jws',
20
+ validatorAddress1: 'thor1v882x92avxcmkaucm2h6cp6j2qc4lhll0vfsex',
21
+ validatorAddress2: 'thor1nl0hc33pllze4athmvyaj9ky35le30vvhx3a25',
22
+ validatorAddress3: 'tho140wms8h9pm5dmj832lwnhw45qvt25v0ps888sf',
23
+ validatorAddress4: 'thor1hjpct8pd9d48vyqltaqunltwx9twm57l3qmay',
24
+ noMemoIdAddress: 'thor1pxfnmdjc0esuswlx8uxguqhgywchhuv4k9ntna',
25
+ validMemoIdAddress: 'thor1pxfnmdjc0esuswlx8uxguqhgywchhuv4k9ntna?memoId=2',
26
+ invalidMemoIdAddress: 'thor1pxfnmdjc0esuswlx8uxguqhgywchhuv4k9ntna?memoId=xyz',
27
+ multipleMemoIdAddress: 'thor1pxfnmdjc0esuswlx8uxguqhgywchhuv4k9ntna?memoId=3&memoId=12',
28
+ };
29
+ exports.blockHash = {
30
+ hash1: '10D155BC67CD47A75BA53D5EF92A69721D56D81DEB350D3AE5F3CC7876B14F1B',
31
+ hash2: '6F17E7913CF87E6D167767D4E4167FBFB643BFFCB2571AEA6FA22566E4FBD1B5',
32
+ };
33
+ exports.txIds = {
34
+ hash1: '7CDB56BA820B5A93014A0382014205F3BE18BF4916FE16963B35A4E9B541FA71',
35
+ hash2: 'F2A1A5F434D389BACE737A1A57C1797C35A6DF7450B550955F03380D07BF136A',
36
+ hash3: '2FBB379F11573583155E6F61301F7B00050417411732BF46F6CF354520077F25',
37
+ };
38
+ exports.mainnetCoinAmounts = {
39
+ amount1: { amount: '100000', denom: 'rune' },
40
+ amount2: { amount: '1000000', denom: 'rune' },
41
+ amount3: { amount: '10000000', denom: 'rune' },
42
+ amount4: { amount: '-1', denom: 'rune' },
43
+ amount5: { amount: '1000000000', denom: 'arune' },
44
+ };
45
+ exports.mainnetGasAmounts = {
46
+ positiveGasAmount: { amount: '100', denom: 'rune' },
47
+ zeroGasAmount: { amount: '0', denom: 'rune' },
48
+ emptyGasAmount: { amount: '', denom: 'rune' },
49
+ alphabeticGasAmount: { amount: 'xyz', denom: 'rune' },
50
+ };
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvcmVzb3VyY2VzL3J1bmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJGQUEyRjs7O0FBRTlFLFFBQUEsWUFBWSxHQUFHO0lBQzFCLFVBQVUsRUFBRSw2Q0FBNkM7SUFDekQsaUJBQWlCLEVBQUUsOENBQThDO0lBQ2pFLG1CQUFtQixFQUFFLG9FQUFvRTtJQUN6RixzQkFBc0IsRUFBRSxvRUFBb0U7SUFDNUYscUJBQXFCLEVBQ25CLG9JQUFvSTtJQUN0SSxVQUFVLEVBQUUsa0VBQWtFO0lBQzlFLFdBQVcsRUFDVCxpSEFBaUg7SUFDbkgsV0FBVyxFQUNULGlIQUFpSDtDQUNwSCxDQUFDO0FBRVcsUUFBQSxjQUFjLEdBQUc7SUFDNUIsUUFBUSxFQUFFLDZDQUE2QztJQUN2RCxRQUFRLEVBQUUsNkNBQTZDO0lBQ3ZELFFBQVEsRUFBRSwyQ0FBMkM7SUFDckQsUUFBUSxFQUFFLDRDQUE0QztJQUN0RCxpQkFBaUIsRUFBRSw2Q0FBNkM7SUFDaEUsaUJBQWlCLEVBQUUsNkNBQTZDO0lBQ2hFLGlCQUFpQixFQUFFLDRDQUE0QztJQUMvRCxpQkFBaUIsRUFBRSw0Q0FBNEM7SUFDL0QsZUFBZSxFQUFFLDZDQUE2QztJQUM5RCxrQkFBa0IsRUFBRSxzREFBc0Q7SUFDMUUsb0JBQW9CLEVBQUUsd0RBQXdEO0lBQzlFLHFCQUFxQixFQUFFLGdFQUFnRTtDQUN4RixDQUFDO0FBRVcsUUFBQSxTQUFTLEdBQUc7SUFDdkIsS0FBSyxFQUFFLGtFQUFrRTtJQUN6RSxLQUFLLEVBQUUsa0VBQWtFO0NBQzFFLENBQUM7QUFFVyxRQUFBLEtBQUssR0FBRztJQUNuQixLQUFLLEVBQUUsa0VBQWtFO0lBQ3pFLEtBQUssRUFBRSxrRUFBa0U7SUFDekUsS0FBSyxFQUFFLGtFQUFrRTtDQUMxRSxDQUFDO0FBRVcsUUFBQSxrQkFBa0IsR0FBRztJQUNoQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDNUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQzdDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUM5QyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDeEMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0NBQ2xELENBQUM7QUFFVyxRQUFBLGlCQUFpQixHQUFHO0lBQy9CLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ25ELGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUM3QyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDN0MsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Q0FDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdldCB0aGUgdGVzdCBkYXRhIGJ5IHJ1bm5pbmcgdGhlIHNjcmlwdHMgZm9yIHRoZSBwYXJ0aWN1bGFyIGNvaW4gZnJvbSBjb2luLXNhbmRib3ggcmVwby5cblxuZXhwb3J0IGNvbnN0IFRFU1RfQUNDT1VOVCA9IHtcbiAgcHViQWRkcmVzczogJ3Rob3IxeHJoODljZWQwMmVhNjkyOGtjd2VjdGd0a2s3azQ5NTRkYWdzN3YnLFxuICB0ZXN0bmV0UHViQWRkcmVzczogJ3N0aG9yMXhyaDg5Y2VkMDJlYTY5MjhrY3dlY3RndGtrN2s0OTU0ZXk1eGdqJyxcbiAgY29tcHJlc3NlZFB1YmxpY0tleTogJzAzNzFiMTU1ZjIxYmY0NDI2ZDlhZGVkYTMwYzg1OGY1MjNkYTNkMjBjYTljMmExYzI3YjgzYmFlYWMzZWQ2ZjE4NCcsXG4gIGNvbXByZXNzZWRQdWJsaWNLZXlUd286ICcwMmUwNGVhMzI4ZDk4ZGU2NjMyMjRhMTI2YTFjNjQ3NDBlMzQxOTc2ZjAzNjBkNDU1MTFjOTU0ZTYxZmJhMzA0NjYnLFxuICB1bmNvbXByZXNzZWRQdWJsaWNLZXk6XG4gICAgJzA0NzFiMTU1ZjIxYmY0NDI2ZDlhZGVkYTMwYzg1OGY1MjNkYTNkMjBjYTljMmExYzI3YjgzYmFlYWMzZWQ2ZjE4NDNhMGI2NDIzN2U2MzhiYTcxMjlkMmRiZTg2YTVjNWNiZDFlODVmNmU1YmE2NjA2YjZjMWY5OGUxYjVkMjNiODcnLFxuICBwcml2YXRlS2V5OiAnYzljZmJmOWQ4NmY4NmQ1NWNlMzU4YjE1NDAyYmQ0ZjllMjc0YjUyNDlmZjliZTFiODUyNTUzYTM2NjgxYTc5OCcsXG4gIGV4dGVuZGVkUHJ2OlxuICAgICd4cHJ2OXMyMVpyUUgxNDNLNENGY2laOWRrVksyZ3lBajhhZzhQVVBtN3ZWWmhiVWhBOW1RUEs5ZjRCaHpxa0RzS29qTGhKV1FuZGlSS1Bid0ZhRXk2ZEd2NmVEQlprTWltcGlEWDhadk5OMmtDVkgnLFxuICBleHRlbmRlZFB1YjpcbiAgICAneHB1YjY2MU15TXdBcVJiY0dnTDVwYWdlN2RGbUYxMURZM1B5a2hLTXZKdUJGdzFnMng2WXZyVHViejJVaDJYYTRxbUJ2dHhWUHh5MllDcFJBUVFDUVFZejVNY3RXc0NkV3ZEd3liUkp2YUd1YmpMJyxcbn07XG5cbmV4cG9ydCBjb25zdCBtYWlubmV0QWRkcmVzcyA9IHtcbiAgYWRkcmVzczE6ICd0aG9yMWZ3azlqbDZrZmZsdXJqOXAwd3QwOThreGwwMmdsZTR5aG5tNjg3JyxcbiAgYWRkcmVzczI6ICd0aG9yMTdod3F0MzAyZTVmMnhtNGg5NW1hOHd1Z2dxa3Zmemd2c25oNXo5JyxcbiAgYWRkcmVzczM6ICd0aG9yMTdod3F0MzAyZTVmMnhtNGg5NW1hOHd1Z2dxa3Zmemd2c25oNScsXG4gIGFkZHJlc3M0OiAndGhvMTY2bjR3NTAzOW1ldWxmYTNwNnlkZzYwdmU2dWVhYzd0bHQwandzJyxcbiAgdmFsaWRhdG9yQWRkcmVzczE6ICd0aG9yMXY4ODJ4OTJhdnhjbWthdWNtMmg2Y3A2ajJxYzRsaGxsMHZmc2V4JyxcbiAgdmFsaWRhdG9yQWRkcmVzczI6ICd0aG9yMW5sMGhjMzNwbGx6ZTRhdGhtdnlhajlreTM1bGUzMHZ2aHgzYTI1JyxcbiAgdmFsaWRhdG9yQWRkcmVzczM6ICd0aG8xNDB3bXM4aDlwbTVkbWo4MzJsd25odzQ1cXZ0MjV2MHBzODg4c2YnLFxuICB2YWxpZGF0b3JBZGRyZXNzNDogJ3Rob3IxaGpwY3Q4cGQ5ZDQ4dnlxbHRhcXVubHR3eDl0d201N2wzcW1heScsXG4gIG5vTWVtb0lkQWRkcmVzczogJ3Rob3IxcHhmbm1kamMwZXN1c3dseDh1eGd1cWhneXdjaGh1djRrOW50bmEnLFxuICB2YWxpZE1lbW9JZEFkZHJlc3M6ICd0aG9yMXB4Zm5tZGpjMGVzdXN3bHg4dXhndXFoZ3l3Y2hodXY0azludG5hP21lbW9JZD0yJyxcbiAgaW52YWxpZE1lbW9JZEFkZHJlc3M6ICd0aG9yMXB4Zm5tZGpjMGVzdXN3bHg4dXhndXFoZ3l3Y2hodXY0azludG5hP21lbW9JZD14eXonLFxuICBtdWx0aXBsZU1lbW9JZEFkZHJlc3M6ICd0aG9yMXB4Zm5tZGpjMGVzdXN3bHg4dXhndXFoZ3l3Y2hodXY0azludG5hP21lbW9JZD0zJm1lbW9JZD0xMicsXG59O1xuXG5leHBvcnQgY29uc3QgYmxvY2tIYXNoID0ge1xuICBoYXNoMTogJzEwRDE1NUJDNjdDRDQ3QTc1QkE1M0Q1RUY5MkE2OTcyMUQ1NkQ4MURFQjM1MEQzQUU1RjNDQzc4NzZCMTRGMUInLFxuICBoYXNoMjogJzZGMTdFNzkxM0NGODdFNkQxNjc3NjdENEU0MTY3RkJGQjY0M0JGRkNCMjU3MUFFQTZGQTIyNTY2RTRGQkQxQjUnLFxufTtcblxuZXhwb3J0IGNvbnN0IHR4SWRzID0ge1xuICBoYXNoMTogJzdDREI1NkJBODIwQjVBOTMwMTRBMDM4MjAxNDIwNUYzQkUxOEJGNDkxNkZFMTY5NjNCMzVBNEU5QjU0MUZBNzEnLFxuICBoYXNoMjogJ0YyQTFBNUY0MzREMzg5QkFDRTczN0ExQTU3QzE3OTdDMzVBNkRGNzQ1MEI1NTA5NTVGMDMzODBEMDdCRjEzNkEnLFxuICBoYXNoMzogJzJGQkIzNzlGMTE1NzM1ODMxNTVFNkY2MTMwMUY3QjAwMDUwNDE3NDExNzMyQkY0NkY2Q0YzNTQ1MjAwNzdGMjUnLFxufTtcblxuZXhwb3J0IGNvbnN0IG1haW5uZXRDb2luQW1vdW50cyA9IHtcbiAgYW1vdW50MTogeyBhbW91bnQ6ICcxMDAwMDAnLCBkZW5vbTogJ3J1bmUnIH0sXG4gIGFtb3VudDI6IHsgYW1vdW50OiAnMTAwMDAwMCcsIGRlbm9tOiAncnVuZScgfSxcbiAgYW1vdW50MzogeyBhbW91bnQ6ICcxMDAwMDAwMCcsIGRlbm9tOiAncnVuZScgfSxcbiAgYW1vdW50NDogeyBhbW91bnQ6ICctMScsIGRlbm9tOiAncnVuZScgfSxcbiAgYW1vdW50NTogeyBhbW91bnQ6ICcxMDAwMDAwMDAwJywgZGVub206ICdhcnVuZScgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBtYWlubmV0R2FzQW1vdW50cyA9IHtcbiAgcG9zaXRpdmVHYXNBbW91bnQ6IHsgYW1vdW50OiAnMTAwJywgZGVub206ICdydW5lJyB9LFxuICB6ZXJvR2FzQW1vdW50OiB7IGFtb3VudDogJzAnLCBkZW5vbTogJ3J1bmUnIH0sXG4gIGVtcHR5R2FzQW1vdW50OiB7IGFtb3VudDogJycsIGRlbm9tOiAncnVuZScgfSxcbiAgYWxwaGFiZXRpY0dhc0Ftb3VudDogeyBhbW91bnQ6ICd4eXonLCBkZW5vbTogJ3J1bmUnIH0sXG59O1xuIl19