@bitgo-beta/statics 15.1.1-beta.212 → 15.1.1-beta.2121

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 (137) hide show
  1. package/dist/src/account.d.ts +1188 -73
  2. package/dist/src/account.d.ts.map +1 -1
  3. package/dist/src/account.js +1794 -161
  4. package/dist/src/ada.d.ts +1 -0
  5. package/dist/src/ada.d.ts.map +1 -1
  6. package/dist/src/ada.js +7 -3
  7. package/dist/src/allCoinsAndTokens.d.ts +2 -0
  8. package/dist/src/allCoinsAndTokens.d.ts.map +1 -0
  9. package/dist/src/allCoinsAndTokens.js +1916 -0
  10. package/dist/src/avaxp.d.ts +1 -0
  11. package/dist/src/avaxp.d.ts.map +1 -1
  12. package/dist/src/avaxp.js +8 -3
  13. package/dist/src/base.d.ts +2981 -45
  14. package/dist/src/base.d.ts.map +1 -1
  15. package/dist/src/base.js +3100 -56
  16. package/dist/src/bip44CoinTypes.d.ts +26 -0
  17. package/dist/src/bip44CoinTypes.d.ts.map +1 -0
  18. package/dist/src/bip44CoinTypes.js +148 -0
  19. package/dist/src/canton.d.ts +35 -0
  20. package/dist/src/canton.d.ts.map +1 -0
  21. package/dist/src/canton.js +51 -0
  22. package/dist/src/coinFeatures.d.ts +134 -0
  23. package/dist/src/coinFeatures.d.ts.map +1 -0
  24. package/dist/src/coinFeatures.js +817 -0
  25. package/dist/src/coins/adaTokens.d.ts +2 -0
  26. package/dist/src/coins/adaTokens.d.ts.map +1 -0
  27. package/dist/src/coins/adaTokens.js +27 -0
  28. package/dist/src/coins/avaxTokens.d.ts +2 -0
  29. package/dist/src/coins/avaxTokens.d.ts.map +1 -0
  30. package/dist/src/coins/avaxTokens.js +133 -0
  31. package/dist/src/coins/botOfcTokens.d.ts +3 -0
  32. package/dist/src/coins/botOfcTokens.d.ts.map +1 -0
  33. package/dist/src/coins/botOfcTokens.js +347 -0
  34. package/dist/src/coins/botTokens.d.ts +3 -0
  35. package/dist/src/coins/botTokens.d.ts.map +1 -0
  36. package/dist/src/coins/botTokens.js +1570 -0
  37. package/dist/src/coins/bscTokens.d.ts +2 -0
  38. package/dist/src/coins/bscTokens.d.ts.map +1 -0
  39. package/dist/src/coins/bscTokens.js +421 -0
  40. package/dist/src/coins/cantonTokens.d.ts +2 -0
  41. package/dist/src/coins/cantonTokens.d.ts.map +1 -0
  42. package/dist/src/coins/cantonTokens.js +134 -0
  43. package/dist/src/coins/cosmosTokens.d.ts +2 -0
  44. package/dist/src/coins/cosmosTokens.d.ts.map +1 -0
  45. package/dist/src/coins/cosmosTokens.js +14 -0
  46. package/dist/src/coins/erc20Coins.d.ts +2 -0
  47. package/dist/src/coins/erc20Coins.d.ts.map +1 -0
  48. package/dist/src/coins/erc20Coins.js +2086 -0
  49. package/dist/src/coins/erc7984Tokens.d.ts +17 -0
  50. package/dist/src/coins/erc7984Tokens.d.ts.map +1 -0
  51. package/dist/src/coins/erc7984Tokens.js +40 -0
  52. package/dist/src/coins/generateERC20.d.ts +36 -0
  53. package/dist/src/coins/generateERC20.d.ts.map +1 -0
  54. package/dist/src/coins/generateERC20.js +46 -0
  55. package/dist/src/coins/hoodethTokens.d.ts +2 -0
  56. package/dist/src/coins/hoodethTokens.d.ts.map +1 -0
  57. package/dist/src/coins/hoodethTokens.js +319 -0
  58. package/dist/src/coins/jettonTokens.d.ts +2 -0
  59. package/dist/src/coins/jettonTokens.d.ts.map +1 -0
  60. package/dist/src/coins/jettonTokens.js +19 -0
  61. package/dist/src/coins/nep141Tokens.d.ts +2 -0
  62. package/dist/src/coins/nep141Tokens.d.ts.map +1 -0
  63. package/dist/src/coins/nep141Tokens.js +18 -0
  64. package/dist/src/coins/ofcCoins.d.ts +2 -0
  65. package/dist/src/coins/ofcCoins.d.ts.map +1 -0
  66. package/dist/src/coins/ofcCoins.js +1502 -0
  67. package/dist/src/coins/ofcErc20Coins.d.ts +4 -0
  68. package/dist/src/coins/ofcErc20Coins.d.ts.map +1 -0
  69. package/dist/src/coins/ofcErc20Coins.js +1905 -0
  70. package/dist/src/coins/ofcHoodethTokens.d.ts +2 -0
  71. package/dist/src/coins/ofcHoodethTokens.d.ts.map +1 -0
  72. package/dist/src/coins/ofcHoodethTokens.js +317 -0
  73. package/dist/src/coins/polygonTokens.d.ts +2 -0
  74. package/dist/src/coins/polygonTokens.d.ts.map +1 -0
  75. package/dist/src/coins/polygonTokens.js +219 -0
  76. package/dist/src/coins/polyxTokens.d.ts +2 -0
  77. package/dist/src/coins/polyxTokens.d.ts.map +1 -0
  78. package/dist/src/coins/polyxTokens.js +22 -0
  79. package/dist/src/coins/sip10Tokens.d.ts +2 -0
  80. package/dist/src/coins/sip10Tokens.d.ts.map +1 -0
  81. package/dist/src/coins/sip10Tokens.js +25 -0
  82. package/dist/src/coins/solTokens.d.ts +3 -0
  83. package/dist/src/coins/solTokens.d.ts.map +1 -0
  84. package/dist/src/coins/solTokens.js +538 -0
  85. package/dist/src/coins/vetTokens.d.ts +2 -0
  86. package/dist/src/coins/vetTokens.d.ts.map +1 -0
  87. package/dist/src/coins/vetTokens.js +11 -0
  88. package/dist/src/coins.d.ts +22 -1
  89. package/dist/src/coins.d.ts.map +1 -1
  90. package/dist/src/coins.js +477 -2062
  91. package/dist/src/constants.d.ts +6 -0
  92. package/dist/src/constants.d.ts.map +1 -1
  93. package/dist/src/constants.js +8 -2
  94. package/dist/src/errors.d.ts +12 -0
  95. package/dist/src/errors.d.ts.map +1 -1
  96. package/dist/src/errors.js +30 -2
  97. package/dist/src/flrp.d.ts +41 -0
  98. package/dist/src/flrp.d.ts.map +1 -0
  99. package/dist/src/flrp.js +66 -0
  100. package/dist/src/hypeevm.d.ts +28 -0
  101. package/dist/src/hypeevm.d.ts.map +1 -0
  102. package/dist/src/hypeevm.js +60 -0
  103. package/dist/src/index.d.ts +8 -1
  104. package/dist/src/index.d.ts.map +1 -1
  105. package/dist/src/index.js +53 -3
  106. package/dist/src/kaspa.d.ts +35 -0
  107. package/dist/src/kaspa.d.ts.map +1 -0
  108. package/dist/src/kaspa.js +63 -0
  109. package/dist/src/lightning.d.ts +44 -0
  110. package/dist/src/lightning.d.ts.map +1 -0
  111. package/dist/src/lightning.js +64 -0
  112. package/dist/src/map.d.ts +34 -1
  113. package/dist/src/map.d.ts.map +1 -1
  114. package/dist/src/map.js +251 -35
  115. package/dist/src/networkFeatureMapForTokens.d.ts +30 -0
  116. package/dist/src/networkFeatureMapForTokens.d.ts.map +1 -0
  117. package/dist/src/networkFeatureMapForTokens.js +91 -0
  118. package/dist/src/networks.d.ts +2065 -72
  119. package/dist/src/networks.d.ts.map +1 -1
  120. package/dist/src/networks.js +2532 -108
  121. package/dist/src/ofc.d.ts +695 -3
  122. package/dist/src/ofc.d.ts.map +1 -1
  123. package/dist/src/ofc.js +1653 -28
  124. package/dist/src/safe.d.ts +22 -0
  125. package/dist/src/safe.d.ts.map +1 -0
  126. package/dist/src/safe.js +28 -0
  127. package/dist/src/tokenConfig.d.ts +718 -114
  128. package/dist/src/tokenConfig.d.ts.map +1 -1
  129. package/dist/src/tokenConfig.js +1132 -233
  130. package/dist/src/utxo.d.ts +7 -2
  131. package/dist/src/utxo.d.ts.map +1 -1
  132. package/dist/src/utxo.js +132 -4
  133. package/dist/tsconfig.tsbuildinfo +1 -1
  134. package/package.json +6 -3
  135. package/.mocharc.js +0 -10
  136. package/.prettierignore +0 -2
  137. package/CHANGELOG.md +0 -1584
@@ -0,0 +1,30 @@
1
+ import { CoinFamily, CoinFeature } from './base';
2
+ /** Register default token features for a dynamically onboarded chain family. */
3
+ export declare function registerNetworkFeatures(family: string, features: CoinFeature[]): void;
4
+ /** Default token feature set shared by "plain" EVM-compatible chain families (no bespoke features). */
5
+ export declare const EVM_TOKEN_FEATURES: CoinFeature[];
6
+ /** Same as EVM_TOKEN_FEATURES, minus EIP1559, for EVM-compatible families that don't support it (e.g. xdc). */
7
+ export declare const EVM_TOKEN_FEATURES_NON_EIP1559: CoinFeature[];
8
+ /**
9
+ * Populate networkFeatureMapForTokens for every family whose base coin carries
10
+ * CoinFeature.SUPPORTS_ERC20 and isn't already explicitly listed below, using EVM_TOKEN_FEATURES
11
+ * (or its non-EIP1559 variant, mirroring the base coin's own EIP1559 support). Called once from
12
+ * coins.ts (which has access to the full coin map) so this module doesn't need to import it
13
+ * directly (that would create a circular import: coins.ts -> networkFeatureMapForTokens.ts ->
14
+ * allCoinsAndTokens.ts -> coins/botTokens.ts -> networkFeatureMapForTokens.ts).
15
+ */
16
+ export declare function registerErc20Families(families: Iterable<[family: string, supportsEip1559: boolean]>): void;
17
+ /**
18
+ * Look up token features for a family.
19
+ * Checks the static map first (including entries backfilled by registerErc20Families), then the
20
+ * dynamic map. Returns undefined if the family isn't recognized by either.
21
+ */
22
+ export declare function getNetworkFeatures(family: string): CoinFeature[] | undefined;
23
+ /**
24
+ * Resolve the final feature list for a token: the family's default token features
25
+ * plus `additionalFeatures`, minus `excludedFeatures`. Used by generated bot-token
26
+ * lists to apply the per-token diff returned by AMS (`features=false`).
27
+ */
28
+ export declare function getTokenFeatures(family: string, additionalFeatures?: CoinFeature[], excludedFeatures?: CoinFeature[]): CoinFeature[];
29
+ export declare const networkFeatureMapForTokens: Partial<Record<CoinFamily, CoinFeature[]>>;
30
+ //# sourceMappingURL=networkFeatureMapForTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkFeatureMapForTokens.d.ts","sourceRoot":"","sources":["../../src/networkFeatureMapForTokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAiBjD,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAErF;AAED,uGAAuG;AACvG,eAAO,MAAM,kBAAkB,EAAE,WAAW,EAQ3C,CAAC;AAEF,+GAA+G;AAC/G,eAAO,MAAM,8BAA8B,EAAE,WAAW,EAEvD,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAQ1G;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,SAAS,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,kBAAkB,GAAE,WAAW,EAAO,EACtC,gBAAgB,GAAE,WAAW,EAAO,GACnC,WAAW,EAAE,CAIf;AAED,eAAO,MAAM,0BAA0B,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CA2BjF,CAAC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.networkFeatureMapForTokens = exports.EVM_TOKEN_FEATURES_NON_EIP1559 = exports.EVM_TOKEN_FEATURES = void 0;
4
+ exports.registerNetworkFeatures = registerNetworkFeatures;
5
+ exports.registerErc20Families = registerErc20Families;
6
+ exports.getNetworkFeatures = getNetworkFeatures;
7
+ exports.getTokenFeatures = getTokenFeatures;
8
+ const account_1 = require("./account");
9
+ const base_1 = require("./base");
10
+ const coinFeatures_1 = require("./coinFeatures");
11
+ const dynamicNetworkFeaturesMap = new Map();
12
+ /** Register default token features for a dynamically onboarded chain family. */
13
+ function registerNetworkFeatures(family, features) {
14
+ dynamicNetworkFeaturesMap.set(family, features);
15
+ }
16
+ /** Default token feature set shared by "plain" EVM-compatible chain families (no bespoke features). */
17
+ exports.EVM_TOKEN_FEATURES = [
18
+ ...coinFeatures_1.EVM_FEATURES,
19
+ base_1.CoinFeature.SHARED_EVM_SIGNING,
20
+ base_1.CoinFeature.SHARED_EVM_SDK,
21
+ base_1.CoinFeature.EVM_COMPATIBLE_IMS,
22
+ base_1.CoinFeature.EVM_COMPATIBLE_UI,
23
+ base_1.CoinFeature.EVM_COMPATIBLE_WP,
24
+ base_1.CoinFeature.SUPPORTS_ERC20,
25
+ ];
26
+ /** Same as EVM_TOKEN_FEATURES, minus EIP1559, for EVM-compatible families that don't support it (e.g. xdc). */
27
+ exports.EVM_TOKEN_FEATURES_NON_EIP1559 = exports.EVM_TOKEN_FEATURES.filter((feature) => feature !== base_1.CoinFeature.EIP1559);
28
+ /**
29
+ * Populate networkFeatureMapForTokens for every family whose base coin carries
30
+ * CoinFeature.SUPPORTS_ERC20 and isn't already explicitly listed below, using EVM_TOKEN_FEATURES
31
+ * (or its non-EIP1559 variant, mirroring the base coin's own EIP1559 support). Called once from
32
+ * coins.ts (which has access to the full coin map) so this module doesn't need to import it
33
+ * directly (that would create a circular import: coins.ts -> networkFeatureMapForTokens.ts ->
34
+ * allCoinsAndTokens.ts -> coins/botTokens.ts -> networkFeatureMapForTokens.ts).
35
+ */
36
+ function registerErc20Families(families) {
37
+ for (const [family, supportsEip1559] of families) {
38
+ if (!(family in exports.networkFeatureMapForTokens)) {
39
+ exports.networkFeatureMapForTokens[family] = supportsEip1559
40
+ ? exports.EVM_TOKEN_FEATURES
41
+ : exports.EVM_TOKEN_FEATURES_NON_EIP1559;
42
+ }
43
+ }
44
+ }
45
+ /**
46
+ * Look up token features for a family.
47
+ * Checks the static map first (including entries backfilled by registerErc20Families), then the
48
+ * dynamic map. Returns undefined if the family isn't recognized by either.
49
+ */
50
+ function getNetworkFeatures(family) {
51
+ return exports.networkFeatureMapForTokens[family] ?? dynamicNetworkFeaturesMap.get(family);
52
+ }
53
+ /**
54
+ * Resolve the final feature list for a token: the family's default token features
55
+ * plus `additionalFeatures`, minus `excludedFeatures`. Used by generated bot-token
56
+ * lists to apply the per-token diff returned by AMS (`features=false`).
57
+ */
58
+ function getTokenFeatures(family, additionalFeatures = [], excludedFeatures = []) {
59
+ const base = getNetworkFeatures(family) ?? [];
60
+ const excluded = new Set(excludedFeatures);
61
+ return [...new Set([...base, ...additionalFeatures])].filter((f) => !excluded.has(f));
62
+ }
63
+ exports.networkFeatureMapForTokens = {
64
+ algo: account_1.AccountCoin.DEFAULT_FEATURES,
65
+ apt: coinFeatures_1.APT_FEATURES,
66
+ arbeth: [...account_1.AccountCoin.DEFAULT_FEATURES, base_1.CoinFeature.EIP1559],
67
+ avaxc: account_1.AccountCoin.DEFAULT_FEATURES,
68
+ bera: [...account_1.AccountCoin.DEFAULT_FEATURES, base_1.CoinFeature.EIP1559],
69
+ bsc: coinFeatures_1.BSC_TOKEN_FEATURES,
70
+ canton: coinFeatures_1.CANTON_TOKEN_FEATURES,
71
+ celo: account_1.AccountCoin.DEFAULT_FEATURES,
72
+ eth: account_1.AccountCoin.DEFAULT_FEATURES,
73
+ eos: account_1.AccountCoin.DEFAULT_FEATURES,
74
+ gasevm: exports.EVM_TOKEN_FEATURES,
75
+ hbar: account_1.AccountCoin.DEFAULT_FEATURES,
76
+ opeth: [...account_1.AccountCoin.DEFAULT_FEATURES, base_1.CoinFeature.EIP1559],
77
+ katanaeth: exports.EVM_TOKEN_FEATURES,
78
+ polygon: coinFeatures_1.POLYGON_TOKEN_FEATURES,
79
+ scrolleth: exports.EVM_TOKEN_FEATURES,
80
+ sol: coinFeatures_1.SOL_TOKEN_FEATURES,
81
+ stx: coinFeatures_1.STX_TOKEN_FEATURES,
82
+ sui: coinFeatures_1.SUI_TOKEN_FEATURES,
83
+ tao: coinFeatures_1.TAO_TOKEN_FEATURES,
84
+ polyx: coinFeatures_1.POLYX_TOKEN_FEATURES,
85
+ trx: account_1.AccountCoin.DEFAULT_FEATURES,
86
+ xlm: account_1.AccountCoin.DEFAULT_FEATURES,
87
+ xrp: account_1.AccountCoin.DEFAULT_FEATURES,
88
+ ofc: [],
89
+ ada: coinFeatures_1.ADA_TOKEN_FEATURES,
90
+ };
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBLDBEQUVDO0FBMEJELHNEQVFDO0FBT0QsZ0RBRUM7QUFPRCw0Q0FRQztBQS9FRCx1Q0FBd0M7QUFDeEMsaUNBQWlEO0FBQ2pELGlEQVl3QjtBQUV4QixNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0FBRW5FLGdGQUFnRjtBQUNoRixTQUFnQix1QkFBdUIsQ0FBQyxNQUFjLEVBQUUsUUFBdUI7SUFDN0UseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsdUdBQXVHO0FBQzFGLFFBQUEsa0JBQWtCLEdBQWtCO0lBQy9DLEdBQUcsMkJBQVk7SUFDZixrQkFBVyxDQUFDLGtCQUFrQjtJQUM5QixrQkFBVyxDQUFDLGNBQWM7SUFDMUIsa0JBQVcsQ0FBQyxrQkFBa0I7SUFDOUIsa0JBQVcsQ0FBQyxpQkFBaUI7SUFDN0Isa0JBQVcsQ0FBQyxpQkFBaUI7SUFDN0Isa0JBQVcsQ0FBQyxjQUFjO0NBQzNCLENBQUM7QUFFRiwrR0FBK0c7QUFDbEcsUUFBQSw4QkFBOEIsR0FBa0IsMEJBQWtCLENBQUMsTUFBTSxDQUNwRixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxLQUFLLGtCQUFXLENBQUMsT0FBTyxDQUM3QyxDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLFFBQThEO0lBQ2xHLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksa0NBQTBCLENBQUMsRUFBRSxDQUFDO1lBQzVDLGtDQUEwQixDQUFDLE1BQW9CLENBQUMsR0FBRyxlQUFlO2dCQUNoRSxDQUFDLENBQUMsMEJBQWtCO2dCQUNwQixDQUFDLENBQUMsc0NBQThCLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLE1BQWM7SUFDL0MsT0FBTyxrQ0FBMEIsQ0FBQyxNQUFvQixDQUFDLElBQUkseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25HLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLE1BQWMsRUFDZCxxQkFBb0MsRUFBRSxFQUN0QyxtQkFBa0MsRUFBRTtJQUVwQyxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQWMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RCxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBYyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRyxDQUFDO0FBRVksUUFBQSwwQkFBMEIsR0FBK0M7SUFDcEYsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSwyQkFBWTtJQUNqQixNQUFNLEVBQUUsQ0FBQyxHQUFHLHFCQUFXLENBQUMsZ0JBQWdCLEVBQUUsa0JBQVcsQ0FBQyxPQUFPLENBQUM7SUFDOUQsS0FBSyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ25DLElBQUksRUFBRSxDQUFDLEdBQUcscUJBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBVyxDQUFDLE9BQU8sQ0FBQztJQUM1RCxHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLE1BQU0sRUFBRSxvQ0FBcUI7SUFDN0IsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxHQUFHLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDakMsTUFBTSxFQUFFLDBCQUFrQjtJQUMxQixJQUFJLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDbEMsS0FBSyxFQUFFLENBQUMsR0FBRyxxQkFBVyxDQUFDLGdCQUFnQixFQUFFLGtCQUFXLENBQUMsT0FBTyxDQUFDO0lBQzdELFNBQVMsRUFBRSwwQkFBa0I7SUFDN0IsT0FBTyxFQUFFLHFDQUFzQjtJQUMvQixTQUFTLEVBQUUsMEJBQWtCO0lBQzdCLEdBQUcsRUFBRSxpQ0FBa0I7SUFDdkIsR0FBRyxFQUFFLGlDQUFrQjtJQUN2QixHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLEdBQUcsRUFBRSxpQ0FBa0I7SUFDdkIsS0FBSyxFQUFFLG1DQUFvQjtJQUMzQixHQUFHLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDakMsR0FBRyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2pDLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRSxpQ0FBa0I7Q0FDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjY291bnRDb2luIH0gZnJvbSAnLi9hY2NvdW50JztcbmltcG9ydCB7IENvaW5GYW1pbHksIENvaW5GZWF0dXJlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7XG4gIEFEQV9UT0tFTl9GRUFUVVJFUyxcbiAgQVBUX0ZFQVRVUkVTLFxuICBCU0NfVE9LRU5fRkVBVFVSRVMsXG4gIENBTlRPTl9UT0tFTl9GRUFUVVJFUyxcbiAgRVZNX0ZFQVRVUkVTLFxuICBQT0xZR09OX1RPS0VOX0ZFQVRVUkVTLFxuICBQT0xZWF9UT0tFTl9GRUFUVVJFUyxcbiAgU09MX1RPS0VOX0ZFQVRVUkVTLFxuICBTVFhfVE9LRU5fRkVBVFVSRVMsXG4gIFNVSV9UT0tFTl9GRUFUVVJFUyxcbiAgVEFPX1RPS0VOX0ZFQVRVUkVTLFxufSBmcm9tICcuL2NvaW5GZWF0dXJlcyc7XG5cbmNvbnN0IGR5bmFtaWNOZXR3b3JrRmVhdHVyZXNNYXAgPSBuZXcgTWFwPHN0cmluZywgQ29pbkZlYXR1cmVbXT4oKTtcblxuLyoqIFJlZ2lzdGVyIGRlZmF1bHQgdG9rZW4gZmVhdHVyZXMgZm9yIGEgZHluYW1pY2FsbHkgb25ib2FyZGVkIGNoYWluIGZhbWlseS4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck5ldHdvcmtGZWF0dXJlcyhmYW1pbHk6IHN0cmluZywgZmVhdHVyZXM6IENvaW5GZWF0dXJlW10pOiB2b2lkIHtcbiAgZHluYW1pY05ldHdvcmtGZWF0dXJlc01hcC5zZXQoZmFtaWx5LCBmZWF0dXJlcyk7XG59XG5cbi8qKiBEZWZhdWx0IHRva2VuIGZlYXR1cmUgc2V0IHNoYXJlZCBieSBcInBsYWluXCIgRVZNLWNvbXBhdGlibGUgY2hhaW4gZmFtaWxpZXMgKG5vIGJlc3Bva2UgZmVhdHVyZXMpLiAqL1xuZXhwb3J0IGNvbnN0IEVWTV9UT0tFTl9GRUFUVVJFUzogQ29pbkZlYXR1cmVbXSA9IFtcbiAgLi4uRVZNX0ZFQVRVUkVTLFxuICBDb2luRmVhdHVyZS5TSEFSRURfRVZNX1NJR05JTkcsXG4gIENvaW5GZWF0dXJlLlNIQVJFRF9FVk1fU0RLLFxuICBDb2luRmVhdHVyZS5FVk1fQ09NUEFUSUJMRV9JTVMsXG4gIENvaW5GZWF0dXJlLkVWTV9DT01QQVRJQkxFX1VJLFxuICBDb2luRmVhdHVyZS5FVk1fQ09NUEFUSUJMRV9XUCxcbiAgQ29pbkZlYXR1cmUuU1VQUE9SVFNfRVJDMjAsXG5dO1xuXG4vKiogU2FtZSBhcyBFVk1fVE9LRU5fRkVBVFVSRVMsIG1pbnVzIEVJUDE1NTksIGZvciBFVk0tY29tcGF0aWJsZSBmYW1pbGllcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQgKGUuZy4geGRjKS4gKi9cbmV4cG9ydCBjb25zdCBFVk1fVE9LRU5fRkVBVFVSRVNfTk9OX0VJUDE1NTk6IENvaW5GZWF0dXJlW10gPSBFVk1fVE9LRU5fRkVBVFVSRVMuZmlsdGVyKFxuICAoZmVhdHVyZSkgPT4gZmVhdHVyZSAhPT0gQ29pbkZlYXR1cmUuRUlQMTU1OVxuKTtcblxuLyoqXG4gKiBQb3B1bGF0ZSBuZXR3b3JrRmVhdHVyZU1hcEZvclRva2VucyBmb3IgZXZlcnkgZmFtaWx5IHdob3NlIGJhc2UgY29pbiBjYXJyaWVzXG4gKiBDb2luRmVhdHVyZS5TVVBQT1JUU19FUkMyMCBhbmQgaXNuJ3QgYWxyZWFkeSBleHBsaWNpdGx5IGxpc3RlZCBiZWxvdywgdXNpbmcgRVZNX1RPS0VOX0ZFQVRVUkVTXG4gKiAob3IgaXRzIG5vbi1FSVAxNTU5IHZhcmlhbnQsIG1pcnJvcmluZyB0aGUgYmFzZSBjb2luJ3Mgb3duIEVJUDE1NTkgc3VwcG9ydCkuIENhbGxlZCBvbmNlIGZyb21cbiAqIGNvaW5zLnRzICh3aGljaCBoYXMgYWNjZXNzIHRvIHRoZSBmdWxsIGNvaW4gbWFwKSBzbyB0aGlzIG1vZHVsZSBkb2Vzbid0IG5lZWQgdG8gaW1wb3J0IGl0XG4gKiBkaXJlY3RseSAodGhhdCB3b3VsZCBjcmVhdGUgYSBjaXJjdWxhciBpbXBvcnQ6IGNvaW5zLnRzIC0+IG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zLnRzIC0+XG4gKiBhbGxDb2luc0FuZFRva2Vucy50cyAtPiBjb2lucy9ib3RUb2tlbnMudHMgLT4gbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMudHMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJFcmMyMEZhbWlsaWVzKGZhbWlsaWVzOiBJdGVyYWJsZTxbZmFtaWx5OiBzdHJpbmcsIHN1cHBvcnRzRWlwMTU1OTogYm9vbGVhbl0+KTogdm9pZCB7XG4gIGZvciAoY29uc3QgW2ZhbWlseSwgc3VwcG9ydHNFaXAxNTU5XSBvZiBmYW1pbGllcykge1xuICAgIGlmICghKGZhbWlseSBpbiBuZXR3b3JrRmVhdHVyZU1hcEZvclRva2VucykpIHtcbiAgICAgIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zW2ZhbWlseSBhcyBDb2luRmFtaWx5XSA9IHN1cHBvcnRzRWlwMTU1OVxuICAgICAgICA/IEVWTV9UT0tFTl9GRUFUVVJFU1xuICAgICAgICA6IEVWTV9UT0tFTl9GRUFUVVJFU19OT05fRUlQMTU1OTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBMb29rIHVwIHRva2VuIGZlYXR1cmVzIGZvciBhIGZhbWlseS5cbiAqIENoZWNrcyB0aGUgc3RhdGljIG1hcCBmaXJzdCAoaW5jbHVkaW5nIGVudHJpZXMgYmFja2ZpbGxlZCBieSByZWdpc3RlckVyYzIwRmFtaWxpZXMpLCB0aGVuIHRoZVxuICogZHluYW1pYyBtYXAuIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBmYW1pbHkgaXNuJ3QgcmVjb2duaXplZCBieSBlaXRoZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXR3b3JrRmVhdHVyZXMoZmFtaWx5OiBzdHJpbmcpOiBDb2luRmVhdHVyZVtdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zW2ZhbWlseSBhcyBDb2luRmFtaWx5XSA/PyBkeW5hbWljTmV0d29ya0ZlYXR1cmVzTWFwLmdldChmYW1pbHkpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGZpbmFsIGZlYXR1cmUgbGlzdCBmb3IgYSB0b2tlbjogdGhlIGZhbWlseSdzIGRlZmF1bHQgdG9rZW4gZmVhdHVyZXNcbiAqIHBsdXMgYGFkZGl0aW9uYWxGZWF0dXJlc2AsIG1pbnVzIGBleGNsdWRlZEZlYXR1cmVzYC4gVXNlZCBieSBnZW5lcmF0ZWQgYm90LXRva2VuXG4gKiBsaXN0cyB0byBhcHBseSB0aGUgcGVyLXRva2VuIGRpZmYgcmV0dXJuZWQgYnkgQU1TIChgZmVhdHVyZXM9ZmFsc2VgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRva2VuRmVhdHVyZXMoXG4gIGZhbWlseTogc3RyaW5nLFxuICBhZGRpdGlvbmFsRmVhdHVyZXM6IENvaW5GZWF0dXJlW10gPSBbXSxcbiAgZXhjbHVkZWRGZWF0dXJlczogQ29pbkZlYXR1cmVbXSA9IFtdXG4pOiBDb2luRmVhdHVyZVtdIHtcbiAgY29uc3QgYmFzZSA9IGdldE5ldHdvcmtGZWF0dXJlcyhmYW1pbHkpID8/IFtdO1xuICBjb25zdCBleGNsdWRlZCA9IG5ldyBTZXQ8Q29pbkZlYXR1cmU+KGV4Y2x1ZGVkRmVhdHVyZXMpO1xuICByZXR1cm4gWy4uLm5ldyBTZXQ8Q29pbkZlYXR1cmU+KFsuLi5iYXNlLCAuLi5hZGRpdGlvbmFsRmVhdHVyZXNdKV0uZmlsdGVyKChmKSA9PiAhZXhjbHVkZWQuaGFzKGYpKTtcbn1cblxuZXhwb3J0IGNvbnN0IG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zOiBQYXJ0aWFsPFJlY29yZDxDb2luRmFtaWx5LCBDb2luRmVhdHVyZVtdPj4gPSB7XG4gIGFsZ286IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGFwdDogQVBUX0ZFQVRVUkVTLFxuICBhcmJldGg6IFsuLi5BY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLCBDb2luRmVhdHVyZS5FSVAxNTU5XSxcbiAgYXZheGM6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGJlcmE6IFsuLi5BY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLCBDb2luRmVhdHVyZS5FSVAxNTU5XSxcbiAgYnNjOiBCU0NfVE9LRU5fRkVBVFVSRVMsXG4gIGNhbnRvbjogQ0FOVE9OX1RPS0VOX0ZFQVRVUkVTLFxuICBjZWxvOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICBldGg6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGVvczogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgZ2FzZXZtOiBFVk1fVE9LRU5fRkVBVFVSRVMsXG4gIGhiYXI6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIG9wZXRoOiBbLi4uQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUywgQ29pbkZlYXR1cmUuRUlQMTU1OV0sXG4gIGthdGFuYWV0aDogRVZNX1RPS0VOX0ZFQVRVUkVTLFxuICBwb2x5Z29uOiBQT0xZR09OX1RPS0VOX0ZFQVRVUkVTLFxuICBzY3JvbGxldGg6IEVWTV9UT0tFTl9GRUFUVVJFUyxcbiAgc29sOiBTT0xfVE9LRU5fRkVBVFVSRVMsXG4gIHN0eDogU1RYX1RPS0VOX0ZFQVRVUkVTLFxuICBzdWk6IFNVSV9UT0tFTl9GRUFUVVJFUyxcbiAgdGFvOiBUQU9fVE9LRU5fRkVBVFVSRVMsXG4gIHBvbHl4OiBQT0xZWF9UT0tFTl9GRUFUVVJFUyxcbiAgdHJ4OiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICB4bG06IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIHhycDogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgb2ZjOiBbXSxcbiAgYWRhOiBBREFfVE9LRU5fRkVBVFVSRVMsXG59O1xuIl19