@bitgo-beta/sdk-coin-canton 1.0.1-beta.82 → 1.0.1-beta.821

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 (181) hide show
  1. package/dist/src/canton.d.ts +22 -1
  2. package/dist/src/canton.d.ts.map +1 -1
  3. package/dist/src/canton.js +293 -10
  4. package/dist/src/cantonToken.d.ts +19 -0
  5. package/dist/src/cantonToken.d.ts.map +1 -0
  6. package/dist/src/cantonToken.js +52 -0
  7. package/dist/src/index.d.ts +1 -0
  8. package/dist/src/index.d.ts.map +1 -1
  9. package/dist/src/index.js +2 -1
  10. package/dist/src/lib/allocationAllocateBuilder.d.ts +126 -0
  11. package/dist/src/lib/allocationAllocateBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/allocationAllocateBuilder.js +248 -0
  13. package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts +67 -0
  14. package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/allocationAllocateWithdrawnBuilder.js +130 -0
  16. package/dist/src/lib/allocationRejectBuilder.d.ts +51 -0
  17. package/dist/src/lib/allocationRejectBuilder.d.ts.map +1 -0
  18. package/dist/src/lib/allocationRejectBuilder.js +107 -0
  19. package/dist/src/lib/allocationRequestBuilder.d.ts +116 -0
  20. package/dist/src/lib/allocationRequestBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/allocationRequestBuilder.js +243 -0
  22. package/dist/src/lib/amount.d.ts +8 -0
  23. package/dist/src/lib/amount.d.ts.map +1 -0
  24. package/dist/src/lib/amount.js +33 -0
  25. package/dist/src/lib/cantonCommandBuilder.d.ts +72 -0
  26. package/dist/src/lib/cantonCommandBuilder.d.ts.map +1 -0
  27. package/dist/src/lib/cantonCommandBuilder.js +173 -0
  28. package/dist/src/lib/clearSigning.d.ts +58 -0
  29. package/dist/src/lib/clearSigning.d.ts.map +1 -0
  30. package/dist/src/lib/clearSigning.js +66 -0
  31. package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts +56 -0
  32. package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts.map +1 -0
  33. package/dist/src/lib/cosignDelegationAcceptBuilder.js +112 -0
  34. package/dist/src/lib/cosignDelegationProposalBuilder.d.ts +60 -0
  35. package/dist/src/lib/cosignDelegationProposalBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/cosignDelegationProposalBuilder.js +111 -0
  37. package/dist/src/lib/endInvestorOnboardingOfferBuilder.d.ts +58 -0
  38. package/dist/src/lib/endInvestorOnboardingOfferBuilder.d.ts.map +1 -0
  39. package/dist/src/lib/endInvestorOnboardingOfferBuilder.js +112 -0
  40. package/dist/src/lib/iface.d.ts +141 -2
  41. package/dist/src/lib/iface.d.ts.map +1 -1
  42. package/dist/src/lib/iface.js +3 -1
  43. package/dist/src/lib/index.d.ts +13 -0
  44. package/dist/src/lib/index.d.ts.map +1 -1
  45. package/dist/src/lib/index.js +29 -2
  46. package/dist/src/lib/messages/cantonBaseMessage.d.ts +16 -0
  47. package/dist/src/lib/messages/cantonBaseMessage.d.ts.map +1 -0
  48. package/dist/src/lib/messages/cantonBaseMessage.js +28 -0
  49. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts +14 -0
  50. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts.map +1 -0
  51. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.js +23 -0
  52. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts +17 -0
  53. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts.map +1 -0
  54. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.js +25 -0
  55. package/dist/src/lib/messages/cantonSignTopology/index.d.ts +3 -0
  56. package/dist/src/lib/messages/cantonSignTopology/index.d.ts.map +1 -0
  57. package/dist/src/lib/messages/cantonSignTopology/index.js +19 -0
  58. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts +13 -0
  59. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts.map +1 -0
  60. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.js +22 -0
  61. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts +14 -0
  62. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts.map +1 -0
  63. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.js +22 -0
  64. package/dist/src/lib/messages/cantonSignTransaction/index.d.ts +3 -0
  65. package/dist/src/lib/messages/cantonSignTransaction/index.d.ts.map +1 -0
  66. package/dist/src/lib/messages/cantonSignTransaction/index.js +19 -0
  67. package/dist/src/lib/messages/index.d.ts +5 -0
  68. package/dist/src/lib/messages/index.d.ts.map +1 -0
  69. package/dist/src/lib/messages/index.js +21 -0
  70. package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
  71. package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  72. package/dist/src/lib/messages/messageBuilderFactory.js +23 -0
  73. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +8 -0
  74. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -1
  75. package/dist/src/lib/oneStepPreApprovalBuilder.js +15 -1
  76. package/dist/src/lib/resourcesInterface.d.ts +1 -1
  77. package/dist/src/lib/resourcesInterface.d.ts.map +1 -1
  78. package/dist/src/lib/resourcesInterface.js +1 -1
  79. package/dist/src/lib/transaction/transaction.d.ts +17 -1
  80. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  81. package/dist/src/lib/transaction/transaction.js +307 -16
  82. package/dist/src/lib/transactionBuilderFactory.d.ts +22 -0
  83. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  84. package/dist/src/lib/transactionBuilderFactory.js +78 -1
  85. package/dist/src/lib/transferAcknowledgeBuilder.d.ts +4 -4
  86. package/dist/src/lib/transferAcknowledgeBuilder.d.ts.map +1 -1
  87. package/dist/src/lib/transferAcknowledgeBuilder.js +5 -7
  88. package/dist/src/lib/transferBuilder.d.ts +84 -2
  89. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  90. package/dist/src/lib/transferBuilder.js +164 -2
  91. package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts +67 -0
  92. package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts.map +1 -0
  93. package/dist/src/lib/transferOfferWithdrawnBuilder.js +130 -0
  94. package/dist/src/lib/transferPreapprovalCancelBuilder.d.ts +68 -0
  95. package/dist/src/lib/transferPreapprovalCancelBuilder.d.ts.map +1 -0
  96. package/dist/src/lib/transferPreapprovalCancelBuilder.js +124 -0
  97. package/dist/src/lib/utils.d.ts +45 -3
  98. package/dist/src/lib/utils.d.ts.map +1 -1
  99. package/dist/src/lib/utils.js +776 -66
  100. package/dist/src/lib/walletInitBuilder.d.ts +2 -1
  101. package/dist/src/lib/walletInitBuilder.d.ts.map +1 -1
  102. package/dist/src/lib/walletInitBuilder.js +4 -1
  103. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +2 -1
  104. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -1
  105. package/dist/src/lib/walletInitialization/walletInitTransaction.js +14 -1
  106. package/dist/src/register.d.ts +2 -0
  107. package/dist/src/register.d.ts.map +1 -1
  108. package/dist/src/register.js +19 -2
  109. package/dist/test/helper.d.ts +3 -0
  110. package/dist/test/helper.d.ts.map +1 -0
  111. package/dist/test/helper.js +9 -0
  112. package/dist/test/integration/canton.integration.d.ts +2 -0
  113. package/dist/test/integration/canton.integration.d.ts.map +1 -0
  114. package/dist/test/integration/canton.integration.js +157 -0
  115. package/dist/test/integration/canton.token.integration.d.ts +2 -0
  116. package/dist/test/integration/canton.token.integration.d.ts.map +1 -0
  117. package/dist/test/integration/canton.token.integration.js +51 -0
  118. package/dist/test/resources.d.ts +263 -2
  119. package/dist/test/resources.d.ts.map +1 -1
  120. package/dist/test/resources.js +269 -7
  121. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts +2 -0
  122. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts.map +1 -0
  123. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.js +368 -0
  124. package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts +2 -0
  125. package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
  126. package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.js +133 -0
  127. package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts +2 -0
  128. package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts.map +1 -0
  129. package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.js +121 -0
  130. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts +2 -0
  131. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts.map +1 -0
  132. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.js +437 -0
  133. package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.d.ts +2 -0
  134. package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.d.ts.map +1 -0
  135. package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.js +340 -0
  136. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts +2 -0
  137. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts.map +1 -0
  138. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.js +116 -0
  139. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts +2 -0
  140. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts.map +1 -0
  141. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.js +74 -0
  142. package/dist/test/unit/builder/endInvestorOnboardingOffer/endInvestorOnboardingOfferBuilder.d.ts +2 -0
  143. package/dist/test/unit/builder/endInvestorOnboardingOffer/endInvestorOnboardingOfferBuilder.d.ts.map +1 -0
  144. package/dist/test/unit/builder/endInvestorOnboardingOffer/endInvestorOnboardingOfferBuilder.js +116 -0
  145. package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +20 -1
  146. package/dist/test/unit/builder/transfer/transferBuilder.d.ts +2 -0
  147. package/dist/test/unit/builder/transfer/transferBuilder.d.ts.map +1 -0
  148. package/dist/test/unit/builder/transfer/transferBuilder.js +100 -0
  149. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.js +65 -1
  150. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.js +34 -1
  151. package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts +2 -0
  152. package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts.map +1 -0
  153. package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.js +64 -0
  154. package/dist/test/unit/builder/transferPreapprovalCancel/transferPreapprovalCancelBuilder.d.ts +2 -0
  155. package/dist/test/unit/builder/transferPreapprovalCancel/transferPreapprovalCancelBuilder.d.ts.map +1 -0
  156. package/dist/test/unit/builder/transferPreapprovalCancel/transferPreapprovalCancelBuilder.js +74 -0
  157. package/dist/test/unit/builder/transferReject/transferRejectBuilder.js +41 -1
  158. package/dist/test/unit/canton.d.ts +2 -0
  159. package/dist/test/unit/canton.d.ts.map +1 -0
  160. package/dist/test/unit/canton.js +853 -0
  161. package/dist/test/unit/index.d.ts +5 -0
  162. package/dist/test/unit/index.d.ts.map +1 -1
  163. package/dist/test/unit/index.js +6 -1
  164. package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts +2 -0
  165. package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts.map +1 -0
  166. package/dist/test/unit/messages/cantonSignTopologyMessage.js +46 -0
  167. package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts +2 -0
  168. package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts.map +1 -0
  169. package/dist/test/unit/messages/cantonSignTransactionMessage.js +48 -0
  170. package/dist/test/unit/messages/clearSigning.d.ts +2 -0
  171. package/dist/test/unit/messages/clearSigning.d.ts.map +1 -0
  172. package/dist/test/unit/messages/clearSigning.js +72 -0
  173. package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
  174. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  175. package/dist/test/unit/messages/messageBuilderFactory.js +52 -0
  176. package/dist/test/unit/register.d.ts +2 -0
  177. package/dist/test/unit/register.d.ts.map +1 -0
  178. package/dist/test/unit/register.js +65 -0
  179. package/dist/test/unit/utils.js +389 -9
  180. package/dist/tsconfig.tsbuildinfo +1 -1
  181. package/package.json +8 -8
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=allocationAllocateBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allocationAllocateBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/builder/allocationAllocate/allocationAllocateBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,368 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const assert_1 = __importDefault(require("assert"));
7
+ const should_1 = __importDefault(require("should"));
8
+ const statics_1 = require("@bitgo-beta/statics");
9
+ const src_1 = require("../../../../src");
10
+ const resources_1 = require("../../../resources");
11
+ const commandId = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890';
12
+ const amount = 100;
13
+ const token = 'canton:amulet-usd';
14
+ const operatorId = '12205::12205b4e3537a95126d90604592344d8ad3c3ddccda4f79901954280ee19c576714d';
15
+ const contractId = '001b549bfa833bab661ab30e4d0a3ab0ec01fcc4a2bef5369795f4928147706353ca1112205a8d0e780cf3b3115cf8be0d6315f4aed6a1c25b67e8c5d64cf9848d0458fd17';
16
+ const tradeId = 'trade-9988776655';
17
+ const transferLegId = 'trade-9988776655-security-leg';
18
+ const allocateBefore = '2026-05-06T16:46:17.184609Z';
19
+ const settleBefore = '2026-05-07T16:46:17.184609Z';
20
+ const receiverPartyId = '12206::12206a4e3537a95126d90604592344d8ad3c3ddccda4f79901954280ee19c576714d';
21
+ const senderPartyId = '12207::12207a4e3537a95126d90604592344d8ad3c3ddccda4f79901954280ee19c576714d';
22
+ const comment = 'test allocation comment';
23
+ // Helper to build with all required fields set
24
+ function buildWithAllRequired(txBuilder) {
25
+ return txBuilder
26
+ .commandId(commandId)
27
+ .amount(amount)
28
+ .token(token)
29
+ .operatorId(operatorId)
30
+ .contractId(contractId)
31
+ .tradeId(tradeId)
32
+ .transferLegId(transferLegId)
33
+ .allocateBefore(allocateBefore)
34
+ .settleBefore(settleBefore)
35
+ .receiverPartyId(receiverPartyId)
36
+ .senderPartyId(senderPartyId);
37
+ }
38
+ describe('AllocationAllocate Builder', () => {
39
+ it('should build the allocation allocate request object with all fields', function () {
40
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
41
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
42
+ txBuilder.initBuilder(tx);
43
+ buildWithAllRequired(txBuilder).comment(comment);
44
+ const requestObj = txBuilder.toRequestObject();
45
+ should_1.default.exist(requestObj);
46
+ assert_1.default.equal(requestObj.commandId, commandId);
47
+ assert_1.default.equal(requestObj.amount, amount);
48
+ assert_1.default.equal(requestObj.token, token);
49
+ assert_1.default.equal(requestObj.operatorId, operatorId);
50
+ assert_1.default.equal(requestObj.contractId, contractId);
51
+ assert_1.default.equal(requestObj.tradeId, tradeId);
52
+ assert_1.default.equal(requestObj.transferLegId, transferLegId);
53
+ assert_1.default.equal(requestObj.allocateBefore, allocateBefore);
54
+ assert_1.default.equal(requestObj.settleBefore, settleBefore);
55
+ assert_1.default.equal(requestObj.receiverPartyId, receiverPartyId);
56
+ assert_1.default.equal(requestObj.senderPartyId, senderPartyId);
57
+ assert_1.default.equal(requestObj.comment, comment);
58
+ });
59
+ it('should preserve a large allocation amount', function () {
60
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
61
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
62
+ txBuilder.initBuilder(tx);
63
+ const amount = '123456789012345678901234567890';
64
+ buildWithAllRequired(txBuilder).amount(amount);
65
+ assert_1.default.strictEqual(txBuilder.toRequestObject().amount, amount);
66
+ });
67
+ it('should build the allocation allocate request object without optional comment', function () {
68
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
69
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
70
+ txBuilder.initBuilder(tx);
71
+ buildWithAllRequired(txBuilder);
72
+ const requestObj = txBuilder.toRequestObject();
73
+ should_1.default.exist(requestObj);
74
+ assert_1.default.equal(requestObj.comment, undefined);
75
+ });
76
+ it('should set the transaction id to the commandId', function () {
77
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
78
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
79
+ txBuilder.initBuilder(tx);
80
+ txBuilder.commandId(commandId);
81
+ assert_1.default.equal(tx.id, commandId);
82
+ });
83
+ it('should throw if commandId is missing', function () {
84
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
85
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
86
+ txBuilder.initBuilder(tx);
87
+ txBuilder
88
+ .amount(amount)
89
+ .token(token)
90
+ .operatorId(operatorId)
91
+ .contractId(contractId)
92
+ .tradeId(tradeId)
93
+ .transferLegId(transferLegId)
94
+ .allocateBefore(allocateBefore)
95
+ .settleBefore(settleBefore)
96
+ .receiverPartyId(receiverPartyId)
97
+ .senderPartyId(senderPartyId);
98
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /commandId is missing/);
99
+ });
100
+ it('should throw if amount is missing', function () {
101
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
102
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
103
+ txBuilder.initBuilder(tx);
104
+ txBuilder
105
+ .commandId(commandId)
106
+ .token(token)
107
+ .operatorId(operatorId)
108
+ .contractId(contractId)
109
+ .tradeId(tradeId)
110
+ .transferLegId(transferLegId)
111
+ .allocateBefore(allocateBefore)
112
+ .settleBefore(settleBefore)
113
+ .receiverPartyId(receiverPartyId)
114
+ .senderPartyId(senderPartyId);
115
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /amount is missing/);
116
+ });
117
+ it('should throw if token is missing', function () {
118
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
119
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
120
+ txBuilder.initBuilder(tx);
121
+ txBuilder
122
+ .commandId(commandId)
123
+ .amount(amount)
124
+ .operatorId(operatorId)
125
+ .contractId(contractId)
126
+ .tradeId(tradeId)
127
+ .transferLegId(transferLegId)
128
+ .allocateBefore(allocateBefore)
129
+ .settleBefore(settleBefore)
130
+ .receiverPartyId(receiverPartyId)
131
+ .senderPartyId(senderPartyId);
132
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /token is missing/);
133
+ });
134
+ it('should throw if operatorId is missing', function () {
135
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
136
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
137
+ txBuilder.initBuilder(tx);
138
+ txBuilder
139
+ .commandId(commandId)
140
+ .amount(amount)
141
+ .token(token)
142
+ .contractId(contractId)
143
+ .tradeId(tradeId)
144
+ .transferLegId(transferLegId)
145
+ .allocateBefore(allocateBefore)
146
+ .settleBefore(settleBefore)
147
+ .receiverPartyId(receiverPartyId)
148
+ .senderPartyId(senderPartyId);
149
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /operatorId is missing/);
150
+ });
151
+ it('should throw if contractId is missing', function () {
152
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
153
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
154
+ txBuilder.initBuilder(tx);
155
+ txBuilder
156
+ .commandId(commandId)
157
+ .amount(amount)
158
+ .token(token)
159
+ .operatorId(operatorId)
160
+ .tradeId(tradeId)
161
+ .transferLegId(transferLegId)
162
+ .allocateBefore(allocateBefore)
163
+ .settleBefore(settleBefore)
164
+ .receiverPartyId(receiverPartyId)
165
+ .senderPartyId(senderPartyId);
166
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /contractId is missing/);
167
+ });
168
+ it('should throw if tradeId is missing', function () {
169
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
170
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
171
+ txBuilder.initBuilder(tx);
172
+ txBuilder
173
+ .commandId(commandId)
174
+ .amount(amount)
175
+ .token(token)
176
+ .operatorId(operatorId)
177
+ .contractId(contractId)
178
+ .transferLegId(transferLegId)
179
+ .allocateBefore(allocateBefore)
180
+ .settleBefore(settleBefore)
181
+ .receiverPartyId(receiverPartyId)
182
+ .senderPartyId(senderPartyId);
183
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /tradeId is missing/);
184
+ });
185
+ it('should throw if transferLegId is missing', function () {
186
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
187
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
188
+ txBuilder.initBuilder(tx);
189
+ txBuilder
190
+ .commandId(commandId)
191
+ .amount(amount)
192
+ .token(token)
193
+ .operatorId(operatorId)
194
+ .contractId(contractId)
195
+ .tradeId(tradeId)
196
+ .allocateBefore(allocateBefore)
197
+ .settleBefore(settleBefore)
198
+ .receiverPartyId(receiverPartyId)
199
+ .senderPartyId(senderPartyId);
200
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /transferLegId is missing/);
201
+ });
202
+ it('should throw if allocateBefore is missing', function () {
203
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
204
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
205
+ txBuilder.initBuilder(tx);
206
+ txBuilder
207
+ .commandId(commandId)
208
+ .amount(amount)
209
+ .token(token)
210
+ .operatorId(operatorId)
211
+ .contractId(contractId)
212
+ .tradeId(tradeId)
213
+ .transferLegId(transferLegId)
214
+ .settleBefore(settleBefore)
215
+ .receiverPartyId(receiverPartyId)
216
+ .senderPartyId(senderPartyId);
217
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /allocateBefore is missing/);
218
+ });
219
+ it('should throw if settleBefore is missing', function () {
220
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
221
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
222
+ txBuilder.initBuilder(tx);
223
+ txBuilder
224
+ .commandId(commandId)
225
+ .amount(amount)
226
+ .token(token)
227
+ .operatorId(operatorId)
228
+ .contractId(contractId)
229
+ .tradeId(tradeId)
230
+ .transferLegId(transferLegId)
231
+ .allocateBefore(allocateBefore)
232
+ .receiverPartyId(receiverPartyId)
233
+ .senderPartyId(senderPartyId);
234
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /settleBefore is missing/);
235
+ });
236
+ it('should throw if receiverPartyId is missing', function () {
237
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
238
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
239
+ txBuilder.initBuilder(tx);
240
+ txBuilder
241
+ .commandId(commandId)
242
+ .amount(amount)
243
+ .token(token)
244
+ .operatorId(operatorId)
245
+ .contractId(contractId)
246
+ .tradeId(tradeId)
247
+ .transferLegId(transferLegId)
248
+ .allocateBefore(allocateBefore)
249
+ .settleBefore(settleBefore)
250
+ .senderPartyId(senderPartyId);
251
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /receiverPartyId is missing/);
252
+ });
253
+ it('should throw if senderPartyId is missing', function () {
254
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
255
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
256
+ txBuilder.initBuilder(tx);
257
+ txBuilder
258
+ .commandId(commandId)
259
+ .amount(amount)
260
+ .token(token)
261
+ .operatorId(operatorId)
262
+ .contractId(contractId)
263
+ .tradeId(tradeId)
264
+ .transferLegId(transferLegId)
265
+ .allocateBefore(allocateBefore)
266
+ .settleBefore(settleBefore)
267
+ .receiverPartyId(receiverPartyId);
268
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /senderPartyId is missing/);
269
+ });
270
+ it('should throw if commandId is an empty string', function () {
271
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
272
+ assert_1.default.throws(() => txBuilder.commandId(''), /commandId must be a non-empty string/);
273
+ });
274
+ it('should throw if token is an empty string', function () {
275
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
276
+ assert_1.default.throws(() => txBuilder.token(''), /token must be a non-empty string/);
277
+ });
278
+ it('should throw if operatorId is an empty string', function () {
279
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
280
+ assert_1.default.throws(() => txBuilder.operatorId(''), /operatorId must be a non-empty string/);
281
+ });
282
+ it('should throw if contractId is an empty string', function () {
283
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
284
+ assert_1.default.throws(() => txBuilder.contractId(''), /contractId must be a non-empty string/);
285
+ });
286
+ it('should accept null contractId and omit it from the request object', function () {
287
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
288
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
289
+ txBuilder.initBuilder(tx);
290
+ txBuilder
291
+ .commandId(commandId)
292
+ .amount(amount)
293
+ .token(token)
294
+ .operatorId(operatorId)
295
+ .contractId(null)
296
+ .tradeId(tradeId)
297
+ .transferLegId(transferLegId)
298
+ .allocateBefore(allocateBefore)
299
+ .settleBefore(settleBefore)
300
+ .receiverPartyId(receiverPartyId)
301
+ .senderPartyId(senderPartyId);
302
+ const requestObj = txBuilder.toRequestObject();
303
+ assert_1.default.equal(requestObj.contractId, undefined, 'contractId should be absent when set to null');
304
+ });
305
+ it('should throw if tradeId is an empty string', function () {
306
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
307
+ assert_1.default.throws(() => txBuilder.tradeId(''), /tradeId must be a non-empty string/);
308
+ });
309
+ it('should throw if transferLegId is an empty string', function () {
310
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
311
+ assert_1.default.throws(() => txBuilder.transferLegId(''), /transferLegId must be a non-empty string/);
312
+ });
313
+ it('should throw if allocateBefore is an empty string', function () {
314
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
315
+ assert_1.default.throws(() => txBuilder.allocateBefore(''), /allocateBefore must be a non-empty string/);
316
+ });
317
+ it('should throw if settleBefore is an empty string', function () {
318
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
319
+ assert_1.default.throws(() => txBuilder.settleBefore(''), /settleBefore must be a non-empty string/);
320
+ });
321
+ it('should throw if receiverPartyId is an empty string', function () {
322
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
323
+ assert_1.default.throws(() => txBuilder.receiverPartyId(''), /receiverPartyId must be a non-empty string/);
324
+ });
325
+ it('should set the prepareCommand via setTransaction', function () {
326
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
327
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
328
+ txBuilder.initBuilder(tx);
329
+ const prepareCommandResponse = {
330
+ preparedTransactionHash: 'abc123',
331
+ hashingSchemeVersion: 'HASHING_SCHEME_VERSION_V2',
332
+ };
333
+ txBuilder.setTransaction(prepareCommandResponse);
334
+ assert_1.default.deepEqual(tx.prepareCommand, prepareCommandResponse);
335
+ });
336
+ describe('Prepared transaction parsing', () => {
337
+ it('should parse the allocation allocate prepared transaction', function () {
338
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
339
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
340
+ txBuilder.initBuilder(tx);
341
+ txBuilder.commandId(commandId);
342
+ txBuilder.setTransaction(resources_1.CantonAllocationAllocatePrepareResponse);
343
+ const txData = txBuilder.transaction.toJson();
344
+ should_1.default.exist(txData);
345
+ assert_1.default.equal(txData.sender, 'ravi-2-step-party::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2');
346
+ // receiver = transferLeg.receiver from DvpLegAllocation — the actual settlement counterparty
347
+ assert_1.default.equal(txData.receiver, 'ravi-2-step-party-new::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2');
348
+ assert_1.default.equal(txData.amount, '50000000000');
349
+ });
350
+ it('should validate the raw allocation allocate transaction', async function () {
351
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
352
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
353
+ txBuilder.initBuilder(tx);
354
+ txBuilder.commandId(commandId);
355
+ txBuilder.setTransaction(resources_1.CantonAllocationAllocatePrepareResponse);
356
+ await txBuilder.validateRawTransaction(resources_1.CantonAllocationAllocatePrepareResponse.preparedTransaction);
357
+ });
358
+ it('should validate the allocation allocate transaction', async function () {
359
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
360
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
361
+ tx.prepareCommand = resources_1.CantonAllocationAllocatePrepareResponse;
362
+ txBuilder.initBuilder(tx);
363
+ txBuilder.setTransaction(resources_1.CantonAllocationAllocatePrepareResponse);
364
+ await txBuilder.validateTransaction(tx);
365
+ });
366
+ });
367
+ });
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9idWlsZGVyL2FsbG9jYXRpb25BbGxvY2F0ZS9hbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1QixpREFBNEM7QUFFNUMseUNBQXlFO0FBRXpFLGtEQUE2RTtBQUU3RSxNQUFNLFNBQVMsR0FBRyxzQ0FBc0MsQ0FBQztBQUN6RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUM7QUFDbkIsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUM7QUFDbEMsTUFBTSxVQUFVLEdBQUcsNkVBQTZFLENBQUM7QUFDakcsTUFBTSxVQUFVLEdBQ2QsNElBQTRJLENBQUM7QUFDL0ksTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUM7QUFDbkMsTUFBTSxhQUFhLEdBQUcsK0JBQStCLENBQUM7QUFDdEQsTUFBTSxjQUFjLEdBQUcsNkJBQTZCLENBQUM7QUFDckQsTUFBTSxZQUFZLEdBQUcsNkJBQTZCLENBQUM7QUFDbkQsTUFBTSxlQUFlLEdBQUcsNkVBQTZFLENBQUM7QUFDdEcsTUFBTSxhQUFhLEdBQUcsNkVBQTZFLENBQUM7QUFDcEcsTUFBTSxPQUFPLEdBQUcseUJBQXlCLENBQUM7QUFFMUMsK0NBQStDO0FBQy9DLFNBQVMsb0JBQW9CLENBQUMsU0FBb0M7SUFDaEUsT0FBTyxTQUFTO1NBQ2IsU0FBUyxDQUFDLFNBQVMsQ0FBQztTQUNwQixNQUFNLENBQUMsTUFBTSxDQUFDO1NBQ2QsS0FBSyxDQUFDLEtBQUssQ0FBQztTQUNaLFVBQVUsQ0FBQyxVQUFVLENBQUM7U0FDdEIsVUFBVSxDQUFDLFVBQVUsQ0FBQztTQUN0QixPQUFPLENBQUMsT0FBTyxDQUFDO1NBQ2hCLGFBQWEsQ0FBQyxhQUFhLENBQUM7U0FDNUIsY0FBYyxDQUFD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YyxDQUFDLG1EQUF1QyxDQUFDLENBQUM7WUFDbEUsTUFBTSxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuXG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5pbXBvcnQgeyBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVQcmVwYXJlUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9yZXNvdXJjZXMnO1xuXG5jb25zdCBjb21tYW5kSWQgPSAnYTFiMmMzZDQtZTVmNi03ODkwLWFiY2QtZWYxMjM0NTY3ODkwJztcbmNvbnN0IGFtb3VudCA9IDEwMDtcbmNvbnN0IHRva2VuID0gJ2NhbnRvbjphbXVsZXQtdXNkJztcbmNvbnN0IG9wZXJhdG9ySWQgPSAnMTIyMDU6OjEyMjA1YjRlMzUzN2E5NTEyNmQ5MDYwNDU5MjM0NGQ4YWQzYzNkZGNjZGE0Zjc5OTAxOTU0MjgwZWUxOWM1NzY3MTRkJztcbmNvbnN0IGNvbnRyYWN0SWQgPVxuICAnMDAxYjU0OWJmYTgzM2JhYjY2MWFiMzBlNGQwYTNhYjBlYzAxZmNjNGEyYmVmNTM2OTc5NWY0OTI4MTQ3NzA2MzUzY2ExMTEyMjA1YThkMGU3ODBjZjNiMzExNWNmOGJlMGQ2MzE1ZjRhZWQ2YTFjMjViNjdlOGM1ZDY0Y2Y5ODQ4ZDA0NThmZDE3JztcbmNvbnN0IHRyYWRlSWQgPSAndHJhZGUtOTk4ODc3NjY1NSc7XG5jb25zdCB0cmFuc2ZlckxlZ0lkID0gJ3RyYWRlLTk5ODg3NzY2NTUtc2VjdXJpdHktbGVnJztcbmNvbnN0IGFsbG9jYXRlQmVmb3JlID0gJzIwMjYtMDUtMDZUMTY6NDY6MTcuMTg0NjA5Wic7XG5jb25zdCBzZXR0bGVCZWZvcmUgPSAnMjAyNi0wNS0wN1QxNjo0NjoxNy4xODQ2MDlaJztcbmNvbnN0IHJlY2VpdmVyUGFydHlJZCA9ICcxMjIwNjo6MTIyMDZhNGUzNTM3YTk1MTI2ZDkwNjA0NTkyMzQ0ZDhhZDNjM2RkY2NkYTRmNzk5MDE5NTQyODBlZTE5YzU3NjcxNGQnO1xuY29uc3Qgc2VuZGVyUGFydHlJZCA9ICcxMjIwNzo6MTIyMDdhNGUzNTM3YTk1MTI2ZDkwNjA0NTkyMzQ0ZDhhZDNjM2RkY2NkYTRmNzk5MDE5NTQyODBlZTE5YzU3NjcxNGQnO1xuY29uc3QgY29tbWVudCA9ICd0ZXN0IGFsbG9jYXRpb24gY29tbWVudCc7XG5cbi8vIEhlbHBlciB0byBidWlsZCB3aXRoIGFsbCByZXF1aXJlZCBmaWVsZHMgc2V0XG5mdW5jdGlvbiBidWlsZFdpdGhBbGxSZXF1aXJlZCh0eEJ1aWxkZXI6IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIpOiBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyIHtcbiAgcmV0dXJuIHR4QnVpbGRlclxuICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgIC5hbW91bnQoYW1vdW50KVxuICAgIC50b2tlbih0b2tlbilcbiAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKTtcbn1cblxuZGVzY3JpYmUoJ0FsbG9jYXRpb25BbGxvY2F0ZSBCdWlsZGVyJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGJ1aWxkIHRoZSBhbGxvY2F0aW9uIGFsbG9jYXRlIHJlcXVlc3Qgb2JqZWN0IHdpdGggYWxsIGZpZWxkcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgYnVpbGRXaXRoQWxsUmVxdWlyZWQodHhCdWlsZGVyKS5jb21tZW50KGNvbW1lbnQpO1xuICAgIGNvbnN0IHJlcXVlc3RPYmo6IENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3QgPSB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgc2hvdWxkLmV4aXN0KHJlcXVlc3RPYmopO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmNvbW1hbmRJZCwgY29tbWFuZElkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5hbW91bnQsIGFtb3VudCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoudG9rZW4sIHRva2VuKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5vcGVyYXRvcklkLCBvcGVyYXRvcklkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb250cmFjdElkLCBjb250cmFjdElkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai50cmFkZUlkLCB0cmFkZUlkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai50cmFuc2ZlckxlZ0lkLCB0cmFuc2ZlckxlZ0lkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5hbGxvY2F0ZUJlZm9yZSwgYWxsb2NhdGVCZWZvcmUpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnNldHRsZUJlZm9yZSwgc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5yZWNlaXZlclBhcnR5SWQsIHJlY2VpdmVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouc2VuZGVyUGFydHlJZCwgc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29tbWVudCwgY29tbWVudCk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHByZXNlcnZlIGEgbGFyZ2UgYWxsb2NhdGlvbiBhbW91bnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGNvbnN0IGFtb3VudCA9ICcxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAnO1xuICAgIGJ1aWxkV2l0aEFsbFJlcXVpcmVkKHR4QnVpbGRlcikuYW1vdW50KGFtb3VudCk7XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLmFtb3VudCwgYW1vdW50KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCB0aGUgYWxsb2NhdGlvbiBhbGxvY2F0ZSByZXF1ZXN0IG9iamVjdCB3aXRob3V0IG9wdGlvbmFsIGNvbW1lbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGJ1aWxkV2l0aEFsbFJlcXVpcmVkKHR4QnVpbGRlcik7XG4gICAgY29uc3QgcmVxdWVzdE9iajogQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUmVxdWVzdCA9IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICBzaG91bGQuZXhpc3QocmVxdWVzdE9iaik7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29tbWVudCwgdW5kZWZpbmVkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzZXQgdGhlIHRyYW5zYWN0aW9uIGlkIHRvIHRoZSBjb21tYW5kSWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlci5jb21tYW5kSWQoY29tbWFuZElkKTtcbiAgICBhc3NlcnQuZXF1YWwodHguaWQsIGNvbW1hbmRJZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgY29tbWFuZElkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvY29tbWFuZElkIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBhbW91bnQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29tbWFuZElkKGNvbW1hbmRJZClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9hbW91bnQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHRva2VuIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC90b2tlbiBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgb3BlcmF0b3JJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9vcGVyYXRvcklkIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBjb250cmFjdElkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2NvbnRyYWN0SWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHRyYWRlSWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29tbWFuZElkKGNvbW1hbmRJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvdHJhZGVJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdHJhbnNmZXJMZWdJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC90cmFuc2ZlckxlZ0lkIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBhbGxvY2F0ZUJlZm9yZSBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvYWxsb2NhdGVCZWZvcmUgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHNldHRsZUJlZm9yZSBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3NldHRsZUJlZm9yZSBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgcmVjZWl2ZXJQYXJ0eUlkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvcmVjZWl2ZXJQYXJ0eUlkIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBzZW5kZXJQYXJ0eUlkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3NlbmRlclBhcnR5SWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGNvbW1hbmRJZCBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmNvbW1hbmRJZCgnJyksIC9jb21tYW5kSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB0b2tlbiBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRva2VuKCcnKSwgL3Rva2VuIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgb3BlcmF0b3JJZCBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLm9wZXJhdG9ySWQoJycpLCAvb3BlcmF0b3JJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGNvbnRyYWN0SWQgaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5jb250cmFjdElkKCcnKSwgL2NvbnRyYWN0SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQgbnVsbCBjb250cmFjdElkIGFuZCBvbWl0IGl0IGZyb20gdGhlIHJlcXVlc3Qgb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQobnVsbClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGNvbnN0IHJlcXVlc3RPYmogPSB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29udHJhY3RJZCwgdW5kZWZpbmVkLCAnY29udHJhY3RJZCBzaG91bGQgYmUgYWJzZW50IHdoZW4gc2V0IHRvIG51bGwnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB0cmFkZUlkIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudHJhZGVJZCgnJyksIC90cmFkZUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdHJhbnNmZXJMZWdJZCBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRyYW5zZmVyTGVnSWQoJycpLCAvdHJhbnNmZXJMZWdJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGFsbG9jYXRlQmVmb3JlIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuYWxsb2NhdGVCZWZvcmUoJycpLCAvYWxsb2NhdGVCZWZvcmUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBzZXR0bGVCZWZvcmUgaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5zZXR0bGVCZWZvcmUoJycpLCAvc2V0dGxlQmVmb3JlIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgcmVjZWl2ZXJQYXJ0eUlkIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIucmVjZWl2ZXJQYXJ0eUlkKCcnKSwgL3JlY2VpdmVyUGFydHlJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHNldCB0aGUgcHJlcGFyZUNvbW1hbmQgdmlhIHNldFRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBjb25zdCBwcmVwYXJlQ29tbWFuZFJlc3BvbnNlID0ge1xuICAgICAgcHJlcGFyZWRUcmFuc2FjdGlvbkhhc2g6ICdhYmMxMjMnLFxuICAgICAgaGFzaGluZ1NjaGVtZVZlcnNpb246ICdIQVNISU5HX1NDSEVNRV9WRVJTSU9OX1YyJyxcbiAgICB9O1xuICAgIHR4QnVpbGRlci5zZXRUcmFuc2FjdGlvbihwcmVwYXJlQ29tbWFuZFJlc3BvbnNlKTtcbiAgICBhc3NlcnQuZGVlcEVxdWFsKHR4LnByZXBhcmVDb21tYW5kLCBwcmVwYXJlQ29tbWFuZFJlc3BvbnNlKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1ByZXBhcmVkIHRyYW5zYWN0aW9uIHBhcnNpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBwYXJzZSB0aGUgYWxsb2NhdGlvbiBhbGxvY2F0ZSBwcmVwYXJlZCB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICB0eEJ1aWxkZXIuY29tbWFuZElkKGNvbW1hbmRJZCk7XG4gICAgICB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUHJlcGFyZVJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHR4RGF0YSA9IHR4QnVpbGRlci50cmFuc2FjdGlvbi50b0pzb24oKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eERhdGEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgICB0eERhdGEuc2VuZGVyLFxuICAgICAgICAncmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyJ1xuICAgICAgKTtcbiAgICAgIC8vIHJlY2VpdmVyID0gdHJhbnNmZXJMZWcucmVjZWl2ZXIgZnJvbSBEdnBMZWdBbGxvY2F0aW9uIOKAlCB0aGUgYWN0dWFsIHNldHRsZW1lbnQgY291bnRlcnBhcnR5XG4gICAgICBhc3NlcnQuZXF1YWwoXG4gICAgICAgIHR4RGF0YS5yZWNlaXZlcixcbiAgICAgICAgJ3JhdmktMi1zdGVwLXBhcnR5LW5ldzo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDInXG4gICAgICApO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4RGF0YS5hbW91bnQsICc1MDAwMDAwMDAwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB0aGUgcmF3IGFsbG9jYXRpb24gYWxsb2NhdGUgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgdHhCdWlsZGVyLmNvbW1hbmRJZChjb21tYW5kSWQpO1xuICAgICAgdHhCdWlsZGVyLnNldFRyYW5zYWN0aW9uKENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVByZXBhcmVSZXNwb25zZSk7XG4gICAgICBhd2FpdCB0eEJ1aWxkZXIudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVQcmVwYXJlUmVzcG9uc2UucHJlcGFyZWRUcmFuc2FjdGlvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHRoZSBhbGxvY2F0aW9uIGFsbG9jYXRlIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgdHgucHJlcGFyZUNvbW1hbmQgPSBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVQcmVwYXJlUmVzcG9uc2U7XG4gICAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgdHhCdWlsZGVyLnNldFRyYW5zYWN0aW9uKENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVByZXBhcmVSZXNwb25zZSk7XG4gICAgICBhd2FpdCB0eEJ1aWxkZXIudmFsaWRhdGVUcmFuc2FjdGlvbih0eCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=allocationAllocateWithdrawnBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allocationAllocateWithdrawnBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.ts"],"names":[],"mappings":""}