@agoric/inter-protocol 0.13.3 → 0.13.4-dev-d32a66a.0

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 (140) hide show
  1. package/README.md +26 -20
  2. package/bundles/bundle-auctioneer-js-meta.json +722 -0
  3. package/bundles/bundle-auctioneer.js +1 -0
  4. package/bundles/bundle-econCommitteeCharter-js-meta.json +514 -0
  5. package/bundles/bundle-econCommitteeCharter.js +1 -0
  6. package/bundles/bundle-feeDistributor-js-meta.json +458 -0
  7. package/bundles/bundle-feeDistributor.js +1 -1
  8. package/bundles/bundle-fluxAggregatorKit-js-meta.json +674 -0
  9. package/bundles/bundle-fluxAggregatorKit.js +1 -0
  10. package/bundles/bundle-psm-js-meta.json +666 -0
  11. package/bundles/bundle-psm.js +1 -1
  12. package/bundles/bundle-reserve-js-meta.json +662 -0
  13. package/bundles/bundle-reserve.js +1 -1
  14. package/bundles/bundle-scaledPriceAuthority-js-meta.json +542 -0
  15. package/bundles/bundle-scaledPriceAuthority.js +1 -1
  16. package/bundles/bundle-vaultFactory-js-meta.json +786 -0
  17. package/bundles/bundle-vaultFactory.js +1 -1
  18. package/exported.js +0 -2
  19. package/package.json +34 -31
  20. package/scripts/add-collateral-core.js +14 -4
  21. package/scripts/build-bundles.js +9 -2
  22. package/scripts/deploy-contracts.js +1 -4
  23. package/scripts/init-core.js +20 -38
  24. package/scripts/invite-committee-core.js +1 -1
  25. package/scripts/manual-price-feed.js +2 -2
  26. package/scripts/price-feed-core.js +7 -6
  27. package/scripts/start-local-chain.sh +84 -0
  28. package/src/auction/auctionBook.js +755 -0
  29. package/src/auction/auctioneer.js +720 -0
  30. package/src/auction/offerBook.js +221 -0
  31. package/src/auction/params.js +174 -0
  32. package/src/auction/scheduleMath.js +167 -0
  33. package/src/auction/scheduler.js +370 -0
  34. package/src/auction/sortedOffers.js +136 -0
  35. package/src/auction/util.js +55 -0
  36. package/src/clientSupport.js +324 -0
  37. package/src/collectFees.js +8 -14
  38. package/src/contractSupport.js +24 -68
  39. package/src/econCommitteeCharter.js +161 -77
  40. package/src/feeDistributor.js +60 -20
  41. package/src/index.js +2 -0
  42. package/src/interest-math.js +1 -4
  43. package/src/interest.js +20 -13
  44. package/src/price/README.md +57 -0
  45. package/src/price/fluxAggregatorContract.js +190 -0
  46. package/src/price/fluxAggregatorKit.js +375 -0
  47. package/src/price/priceOracleKit.js +127 -0
  48. package/src/price/roundsManager.js +726 -0
  49. package/src/proposals/addAssetToVault.js +89 -94
  50. package/src/proposals/committee-proposal.js +141 -40
  51. package/src/proposals/core-proposal.js +100 -167
  52. package/src/proposals/econ-behaviors.js +320 -564
  53. package/src/proposals/price-feed-proposal.js +175 -78
  54. package/src/proposals/startEconCommittee.js +25 -12
  55. package/src/proposals/startPSM.js +231 -211
  56. package/src/proposals/utils.js +31 -17
  57. package/src/psm/README.md +71 -0
  58. package/src/psm/psm.js +272 -160
  59. package/src/psm/types.js +2 -0
  60. package/src/reserve/assetReserve.js +56 -413
  61. package/src/reserve/assetReserveKit.js +303 -0
  62. package/src/reserve/doc.md +1 -3
  63. package/src/reserve/params.js +2 -5
  64. package/src/typeGuards.js +13 -0
  65. package/src/vaultFactory/Liquidation.md +100 -0
  66. package/src/vaultFactory/burn.js +2 -1
  67. package/src/vaultFactory/liquidation.js +270 -108
  68. package/src/vaultFactory/math.js +95 -0
  69. package/src/vaultFactory/orderedVaultStore.js +0 -1
  70. package/src/vaultFactory/params.js +133 -112
  71. package/src/vaultFactory/prioritizedVaults.js +36 -79
  72. package/src/vaultFactory/storeUtils.js +67 -9
  73. package/src/vaultFactory/type-imports.js +2 -0
  74. package/src/vaultFactory/types.js +22 -26
  75. package/src/vaultFactory/vault.js +772 -709
  76. package/src/vaultFactory/vaultDirector.js +480 -483
  77. package/src/vaultFactory/vaultFactory.js +99 -60
  78. package/src/vaultFactory/vaultHolder.js +121 -95
  79. package/src/vaultFactory/vaultKit.js +39 -31
  80. package/src/vaultFactory/vaultManager.js +1249 -868
  81. package/bundles/bundle-amm-meta.js +0 -618
  82. package/bundles/bundle-amm.js +0 -1
  83. package/bundles/bundle-feeDistributor-meta.js +0 -346
  84. package/bundles/bundle-interchainPool-meta.js +0 -534
  85. package/bundles/bundle-interchainPool.js +0 -1
  86. package/bundles/bundle-liquidateIncrementally-meta.js +0 -442
  87. package/bundles/bundle-liquidateIncrementally.js +0 -1
  88. package/bundles/bundle-liquidateMinimum-meta.js +0 -442
  89. package/bundles/bundle-liquidateMinimum.js +0 -1
  90. package/bundles/bundle-psm-meta.js +0 -538
  91. package/bundles/bundle-psmCharter-meta.js +0 -418
  92. package/bundles/bundle-psmCharter.js +0 -1
  93. package/bundles/bundle-reserve-meta.js +0 -542
  94. package/bundles/bundle-scaledPriceAuthority-meta.js +0 -442
  95. package/bundles/bundle-stakeFactory-meta.js +0 -574
  96. package/bundles/bundle-stakeFactory.js +0 -1
  97. package/bundles/bundle-vaultFactory-meta.js +0 -598
  98. package/scripts/add-initial-liquidity.js +0 -180
  99. package/src/collect.js +0 -13
  100. package/src/interchainPool.js +0 -135
  101. package/src/makeTracer.js +0 -36
  102. package/src/my-lien.js +0 -85
  103. package/src/proposals/demoIssuers.js +0 -685
  104. package/src/proposals/sim-behaviors.js +0 -40
  105. package/src/psm/psmCharter.js +0 -139
  106. package/src/stakeFactory/README.md +0 -62
  107. package/src/stakeFactory/attestation.js +0 -267
  108. package/src/stakeFactory/attestationTool.js +0 -66
  109. package/src/stakeFactory/constants.js +0 -16
  110. package/src/stakeFactory/params.js +0 -31
  111. package/src/stakeFactory/stakeFactory.js +0 -236
  112. package/src/stakeFactory/stakeFactoryKit.js +0 -455
  113. package/src/stakeFactory/stakeFactoryManager.js +0 -296
  114. package/src/stakeFactory/types.js +0 -42
  115. package/src/vaultFactory/liquidateIncrementally.js +0 -350
  116. package/src/vaultFactory/liquidateMinimum.js +0 -100
  117. package/src/vpool-xyk-amm/AttackersGuide.md +0 -89
  118. package/src/vpool-xyk-amm/addLiquidity.js +0 -222
  119. package/src/vpool-xyk-amm/addPool.js +0 -197
  120. package/src/vpool-xyk-amm/constantProduct/AMM-Trade.jpeg +0 -0
  121. package/src/vpool-xyk-amm/constantProduct/README.md +0 -204
  122. package/src/vpool-xyk-amm/constantProduct/calcFees.js +0 -99
  123. package/src/vpool-xyk-amm/constantProduct/calcSwapPrices.js +0 -85
  124. package/src/vpool-xyk-amm/constantProduct/core.js +0 -153
  125. package/src/vpool-xyk-amm/constantProduct/defaults.js +0 -5
  126. package/src/vpool-xyk-amm/constantProduct/getXY.js +0 -52
  127. package/src/vpool-xyk-amm/constantProduct/internal-types.js +0 -116
  128. package/src/vpool-xyk-amm/constantProduct/invariants.js +0 -43
  129. package/src/vpool-xyk-amm/constantProduct/swap.js +0 -272
  130. package/src/vpool-xyk-amm/constantProduct/types.js +0 -32
  131. package/src/vpool-xyk-amm/doublePool.js +0 -194
  132. package/src/vpool-xyk-amm/estimate.js +0 -155
  133. package/src/vpool-xyk-amm/multipoolMarketMaker.js +0 -520
  134. package/src/vpool-xyk-amm/params.js +0 -61
  135. package/src/vpool-xyk-amm/pool.js +0 -396
  136. package/src/vpool-xyk-amm/priceAuthority.js +0 -94
  137. package/src/vpool-xyk-amm/removeLiquidity.js +0 -31
  138. package/src/vpool-xyk-amm/singlePool.js +0 -73
  139. package/src/vpool-xyk-amm/swap.js +0 -69
  140. package/src/vpool-xyk-amm/types.js +0 -154
@@ -1,88 +1,89 @@
1
- // @ts-check
1
+ // @jessie-check
2
+
2
3
  import { Stable } from '@agoric/vats/src/tokens.js';
3
4
  import * as econBehaviors from './econ-behaviors.js';
4
5
  import { ECON_COMMITTEE_MANIFEST } from './startEconCommittee.js';
5
- import * as simBehaviors from './sim-behaviors.js';
6
6
 
7
7
  export * from './econ-behaviors.js';
8
- export * from './sim-behaviors.js';
9
8
  // @ts-expect-error Module './econ-behaviors.js' has already exported a member
10
9
  // named 'EconomyBootstrapPowers'.
11
- export * from './startPSM.js';
12
- export * from './startEconCommittee.js';
10
+ export * from './startPSM.js'; // eslint-disable-line import/export
11
+ export * from './startEconCommittee.js'; // eslint-disable-line import/export
13
12
 
14
- const SHARED_MAIN_MANIFEST = harden({
15
- [econBehaviors.setupAmm.name]: {
16
- consume: {
17
- board: 'board',
18
- chainStorage: true,
19
- chainTimerService: 'timer',
20
- zoe: 'zoe',
21
- economicCommitteeCreatorFacet: 'economicCommittee',
22
- },
23
- produce: {
24
- ammCreatorFacet: 'amm',
25
- ammInstanceWithoutReserve: 'amm',
26
- ammGovernorCreatorFacet: 'amm',
27
- },
28
- issuer: { consume: { [Stable.symbol]: 'zoe' } },
29
- brand: { consume: { [Stable.symbol]: 'zoe' } },
30
- installation: {
31
- consume: { contractGovernor: 'zoe', amm: 'zoe' },
32
- },
33
- instance: {
34
- produce: { ammGovernor: 'ammGovernor' },
35
- },
36
- },
37
- [econBehaviors.startInterchainPool.name]: {
38
- consume: { bankManager: 'bank', zoe: 'zoe', agoricNamesAdmin: true },
39
- installation: {
40
- consume: { interchainPool: 'zoe' },
41
- },
42
- brand: {
43
- consume: { [Stable.symbol]: 'zoe' },
44
- },
45
- issuer: {
46
- consume: { [Stable.symbol]: 'zoe' },
47
- },
48
- instance: {
49
- consume: { amm: 'amm' },
50
- produce: { interchainPool: 'interchainPool' },
51
- },
13
+ // XXX all the startInstance() should use startUpgradable()
14
+ // or startGovernedUpgradeable() but that would
15
+ // require updating a lot of tests. So for now, we just
16
+ // grab the kits afterward and store them.
17
+
18
+ /**
19
+ * @param {import('./econ-behaviors.js').EconomyBootstrapPowers} powers
20
+ */
21
+ export const storeInterContractStartKits = async ({
22
+ consume: {
23
+ contractKits,
24
+ governedContractKits,
25
+ econCharterKit,
26
+ economicCommitteeKit,
27
+ feeDistributorKit,
28
+ auctioneerKit,
29
+ reserveKit,
30
+ vaultFactoryKit,
52
31
  },
32
+ }) => {
33
+ /**
34
+ * @param {Promise<MapStore<string, {instance: Instance}>>} storeP
35
+ * @param {Promise<{instance: Instance}>[]} kitPs
36
+ */
37
+ const storeAll = async (storeP, kitPs) => {
38
+ const store = await storeP;
39
+ const kits = await Promise.all(kitPs);
40
+ kits.forEach(kit => store.init(kit.instance, kit));
41
+ };
42
+
43
+ await storeAll(contractKits, [
44
+ economicCommitteeKit,
45
+ econCharterKit,
46
+ feeDistributorKit,
47
+ ]);
48
+ await storeAll(governedContractKits, [
49
+ auctioneerKit,
50
+ reserveKit,
51
+ vaultFactoryKit,
52
+ ]);
53
+ };
54
+
55
+ /** @type {import('@agoric/vats/src/core/lib-boot.js').BootstrapManifest} */
56
+ const SHARED_MAIN_MANIFEST = harden({
57
+ /** @type {import('@agoric/vats/src/core/lib-boot.js').BootstrapManifestPermit} */
53
58
  [econBehaviors.startVaultFactory.name]: {
54
59
  consume: {
55
60
  board: 'board',
56
61
  chainStorage: true,
62
+ diagnostics: true,
57
63
  feeMintAccess: 'zoe',
58
64
  chainTimerService: 'timer',
59
65
  zoe: 'zoe',
60
66
  priceAuthority: 'priceAuthority',
61
67
  economicCommitteeCreatorFacet: 'economicCommittee',
62
- reserveCreatorFacet: 'reserve',
63
- },
64
- produce: {
65
- vaultFactoryCreator: 'VaultFactory',
66
- vaultFactoryGovernorCreator: 'VaultFactory',
67
- vaultFactoryVoteCreator: 'VaultFactory',
68
+ reserveKit: 'reserve',
69
+ auctioneerKit: 'auction',
68
70
  },
71
+ produce: { vaultFactoryKit: 'VaultFactory' },
69
72
  brand: { consume: { [Stable.symbol]: 'zoe' } },
70
73
  oracleBrand: { consume: { USD: true } },
71
74
  installation: {
72
75
  consume: {
73
76
  contractGovernor: 'zoe',
74
77
  VaultFactory: 'zoe',
75
- liquidate: 'zoe',
76
78
  },
77
79
  },
78
80
  instance: {
79
81
  consume: {
80
- amm: 'amm',
81
82
  reserve: 'reserve',
83
+ auctioneer: 'auction',
82
84
  },
83
85
  produce: {
84
86
  VaultFactory: 'VaultFactory',
85
- Treasury: 'VaultFactory',
86
87
  VaultFactoryGovernor: 'VaultFactoryGovernor',
87
88
  },
88
89
  },
@@ -91,61 +92,67 @@ const SHARED_MAIN_MANIFEST = harden({
91
92
  consume: {
92
93
  client: 'provisioning',
93
94
  priceAuthorityAdmin: 'priceAuthority',
94
- vaultFactoryCreator: 'VaultFactory',
95
+ vaultFactoryKit: 'VaultFactory',
95
96
  },
96
97
  },
97
98
 
98
99
  [econBehaviors.setupReserve.name]: {
99
100
  consume: {
100
- ammCreatorFacet: 'amm',
101
- ammInstanceWithoutReserve: 'amm',
102
101
  board: 'board',
103
102
  chainStorage: true,
103
+ diagnostics: true,
104
104
  feeMintAccess: 'zoe',
105
105
  chainTimerService: 'timer',
106
106
  zoe: 'zoe',
107
107
  economicCommitteeCreatorFacet: 'economicCommittee',
108
108
  },
109
- produce: {
110
- reserveCreatorFacet: 'reserve',
111
- reserveGovernorCreatorFacet: 'reserve',
112
- reservePublicFacet: 'reserve',
113
- },
109
+ produce: { reserveKit: 'reserve' },
114
110
  issuer: { consume: { [Stable.symbol]: 'zoe' } },
115
111
  brand: { consume: { [Stable.symbol]: 'zoe' } },
116
112
  installation: {
117
113
  consume: { contractGovernor: 'zoe', reserve: 'zoe' },
118
114
  },
119
115
  instance: {
120
- consume: { amm: 'amm' },
121
116
  produce: {
122
- amm: 'amm',
123
117
  reserve: 'reserve',
124
118
  reserveGovernor: 'ReserveGovernor',
125
119
  },
126
120
  },
127
121
  },
128
122
 
129
- [econBehaviors.configureVaultFactoryUI.name]: {
123
+ [econBehaviors.startAuctioneer.name]: {
130
124
  consume: {
131
- board: true,
132
- zoe: true,
125
+ zoe: 'zoe',
126
+ board: 'board',
127
+ chainTimerService: 'timer',
128
+ priceAuthority: 'priceAuthority',
129
+ chainStorage: true,
130
+ economicCommitteeCreatorFacet: 'economicCommittee',
131
+ },
132
+ produce: { auctioneerKit: 'auction' },
133
+ instance: {
134
+ produce: { auctioneer: 'auction' },
135
+ consume: { reserve: 'auction' },
133
136
  },
134
- issuer: { consume: { [Stable.symbol]: 'zoe' } },
135
- brand: { consume: { [Stable.symbol]: 'zoe' } },
136
137
  installation: {
137
- consume: {
138
- amm: 'zoe',
139
- VaultFactory: 'zoe',
140
- contractGovernor: 'zoe',
141
- binaryVoteCounter: 'zoe',
142
- liquidate: 'zoe',
143
- },
138
+ consume: { contractGovernor: 'zoe', auctioneer: 'zoe' },
144
139
  },
145
- instance: {
146
- consume: { amm: 'amm', VaultFactory: 'VaultFactory' },
140
+ issuer: {
141
+ consume: { [Stable.symbol]: 'zoe' },
142
+ },
143
+ },
144
+
145
+ [storeInterContractStartKits.name]: {
146
+ consume: {
147
+ contractKits: true,
148
+ governedContractKits: true,
149
+ econCharterKit: true,
150
+ economicCommitteeKit: true,
151
+ feeDistributorKit: true,
152
+ auctioneerKit: true,
153
+ reserveKit: true,
154
+ vaultFactoryKit: true,
147
155
  },
148
- uiConfig: { produce: { Treasury: true, VaultFactory: true } },
149
156
  },
150
157
  });
151
158
 
@@ -153,15 +160,14 @@ const REWARD_MANIFEST = harden({
153
160
  [econBehaviors.startRewardDistributor.name]: {
154
161
  consume: {
155
162
  chainTimerService: true,
163
+ diagnostics: true,
156
164
  bankManager: true,
157
- vaultFactoryCreator: true,
165
+ vaultFactoryKit: true,
158
166
  periodicFeeCollectors: true,
159
- ammCreatorFacet: true,
160
- stakeFactoryCreatorFacet: true,
161
- reservePublicFacet: true,
167
+ reserveKit: true,
162
168
  zoe: true,
163
169
  },
164
- produce: { feeDistributorCreatorFacet: true, periodicFeeCollectors: true },
170
+ produce: { feeDistributorKit: true, periodicFeeCollectors: true },
165
171
  instance: { produce: { feeDistributor: true } },
166
172
  installation: { consume: { feeDistributor: true } },
167
173
  issuer: { consume: { [Stable.symbol]: 'zoe' } },
@@ -169,75 +175,7 @@ const REWARD_MANIFEST = harden({
169
175
  },
170
176
  });
171
177
 
172
- const STAKE_FACTORY_MANIFEST = harden({
173
- [econBehaviors.startLienBridge.name]: {
174
- consume: { bridgeManager: true },
175
- produce: { lienBridge: true },
176
- brand: {
177
- consume: { BLD: 'BLD' },
178
- },
179
- },
180
- [econBehaviors.startStakeFactory.name]: {
181
- consume: {
182
- board: 'board',
183
- chainStorage: true,
184
- zoe: 'zoe',
185
- feeMintAccess: 'zoe',
186
- lienBridge: true,
187
- client: 'provisioning',
188
- chainTimerService: 'timer',
189
- economicCommitteeCreatorFacet: 'economicCommittee',
190
- },
191
- produce: {
192
- stakeFactoryCreatorFacet: 'stakeFactory',
193
- stakeFactoryGovernorCreatorFacet: 'stakeFactory',
194
- },
195
- installation: {
196
- consume: { contractGovernor: 'zoe', stakeFactory: 'zoe' },
197
- },
198
- instance: {
199
- produce: { stakeFactory: 'stakeFactory' },
200
- },
201
- brand: {
202
- consume: { BLD: 'BLD', [Stable.symbol]: 'zoe' },
203
- produce: { Attestation: 'stakeFactory' },
204
- },
205
- issuer: {
206
- consume: { BLD: 'BLD' },
207
- produce: { Attestation: 'stakeFactory' },
208
- },
209
- },
210
- });
211
-
212
- export const SIM_CHAIN_MANIFEST = harden({
213
- [simBehaviors.fundAMM.name]: {
214
- consume: {
215
- centralSupplyBundle: true,
216
- mintHolderBundle: true,
217
- chainTimerService: 'timer',
218
- bldIssuerKit: true,
219
- feeMintAccess: true,
220
- loadVat: true,
221
- mints: 'mints',
222
- priceAuthorityVat: 'priceAuthority',
223
- priceAuthorityAdmin: 'priceAuthority',
224
- vaultFactoryCreator: 'VaultFactory',
225
- zoe: true,
226
- },
227
- installation: {
228
- consume: { centralSupply: 'zoe' },
229
- },
230
- issuer: {
231
- consume: { [Stable.symbol]: 'zoe' },
232
- },
233
- brand: {
234
- consume: { [Stable.symbol]: 'zoe' },
235
- },
236
- instance: {
237
- consume: { amm: 'amm' },
238
- },
239
- },
240
- });
178
+ export const SIM_CHAIN_MANIFEST = harden({});
241
179
 
242
180
  export const getManifestForEconCommittee = (
243
181
  { restoreRef },
@@ -258,42 +196,37 @@ export const getManifestForEconCommittee = (
258
196
 
259
197
  export const getManifestForMain = (
260
198
  { restoreRef },
261
- { installKeys, vaultFactoryControllerAddress, minInitialPoolLiquidity },
199
+ {
200
+ installKeys,
201
+ vaultFactoryControllerAddress,
202
+ minInitialPoolLiquidity,
203
+ endorsedUi,
204
+ },
262
205
  ) => {
263
206
  return {
264
207
  manifest: SHARED_MAIN_MANIFEST,
265
208
  installations: {
266
- amm: restoreRef(installKeys.amm),
267
209
  VaultFactory: restoreRef(installKeys.vaultFactory),
210
+ auctioneer: restoreRef(installKeys.auctioneer),
268
211
  feeDistributor: restoreRef(installKeys.feeDistributor),
269
- liquidate: restoreRef(installKeys.liquidate),
270
212
  reserve: restoreRef(installKeys.reserve),
271
- interchainPool: restoreRef(installKeys.interchainPool),
272
213
  },
273
214
  options: {
274
215
  vaultFactoryControllerAddress,
275
216
  minInitialPoolLiquidity,
217
+ endorsedUi,
276
218
  },
277
219
  };
278
220
  };
279
221
 
280
- const roleToManifest = harden({
281
- chain: {
282
- ...REWARD_MANIFEST,
283
- ...STAKE_FACTORY_MANIFEST,
284
- },
285
- 'sim-chain': SIM_CHAIN_MANIFEST,
286
- client: {},
287
- });
288
-
289
222
  export const getManifestForInterProtocol = (
290
223
  { restoreRef },
291
224
  {
292
- ROLE = 'chain',
293
225
  econCommitteeOptions,
294
226
  installKeys,
295
227
  vaultFactoryControllerAddress,
296
228
  minInitialPoolLiquidity,
229
+ endorsedUi,
297
230
  },
298
231
  ) => {
299
232
  const econCommitteeManifest = getManifestForEconCommittee(
@@ -306,18 +239,18 @@ export const getManifestForInterProtocol = (
306
239
  installKeys,
307
240
  vaultFactoryControllerAddress,
308
241
  minInitialPoolLiquidity,
242
+ endorsedUi,
309
243
  },
310
244
  );
311
245
  return {
312
246
  manifest: {
313
247
  ...econCommitteeManifest.manifest,
314
248
  ...mainManifest.manifest,
315
- ...roleToManifest[ROLE],
249
+ ...REWARD_MANIFEST,
316
250
  },
317
251
  installations: {
318
252
  ...econCommitteeManifest.installations,
319
253
  ...mainManifest.installations,
320
- stakeFactory: restoreRef(installKeys.stakeFactory),
321
254
  },
322
255
  options: {
323
256
  ...econCommitteeManifest.options,