@bitgo-beta/sdk-coin-avaxp 3.5.10-beta.30 → 3.5.10-beta.301

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 (82) hide show
  1. package/CHANGELOG.md +306 -0
  2. package/dist/src/avaxp.d.ts +1 -2
  3. package/dist/src/avaxp.d.ts.map +1 -1
  4. package/dist/src/avaxp.js +23 -29
  5. package/dist/src/iface.d.ts +0 -4
  6. package/dist/src/iface.d.ts.map +1 -1
  7. package/dist/src/iface.js +1 -1
  8. package/dist/src/index.js +6 -2
  9. package/dist/src/lib/atomicInCTransactionBuilder.d.ts +2 -2
  10. package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -1
  11. package/dist/src/lib/atomicInCTransactionBuilder.js +1 -1
  12. package/dist/src/lib/atomicTransactionBuilder.d.ts +2 -2
  13. package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
  14. package/dist/src/lib/atomicTransactionBuilder.js +5 -5
  15. package/dist/src/lib/delegatorTxBuilder.d.ts +6 -6
  16. package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -1
  17. package/dist/src/lib/delegatorTxBuilder.js +7 -7
  18. package/dist/src/lib/deprecatedTransaction.d.ts +100 -0
  19. package/dist/src/lib/deprecatedTransaction.d.ts.map +1 -0
  20. package/dist/src/lib/deprecatedTransaction.js +345 -0
  21. package/dist/src/lib/deprecatedTransactionBuilder.d.ts +115 -0
  22. package/dist/src/lib/deprecatedTransactionBuilder.d.ts.map +1 -0
  23. package/dist/src/lib/deprecatedTransactionBuilder.js +210 -0
  24. package/dist/src/lib/exportInCTxBuilder.d.ts +8 -8
  25. package/dist/src/lib/exportInCTxBuilder.d.ts.map +1 -1
  26. package/dist/src/lib/exportInCTxBuilder.js +4 -4
  27. package/dist/src/lib/exportTxBuilder.d.ts +4 -4
  28. package/dist/src/lib/exportTxBuilder.d.ts.map +1 -1
  29. package/dist/src/lib/exportTxBuilder.js +3 -3
  30. package/dist/src/lib/iface.d.ts +11 -8
  31. package/dist/src/lib/iface.d.ts.map +1 -1
  32. package/dist/src/lib/iface.js +1 -1
  33. package/dist/src/lib/importInCTxBuilder.d.ts +4 -4
  34. package/dist/src/lib/importInCTxBuilder.d.ts.map +1 -1
  35. package/dist/src/lib/importInCTxBuilder.js +6 -6
  36. package/dist/src/lib/importTxBuilder.d.ts +4 -4
  37. package/dist/src/lib/importTxBuilder.d.ts.map +1 -1
  38. package/dist/src/lib/importTxBuilder.js +3 -3
  39. package/dist/src/lib/index.d.ts +2 -0
  40. package/dist/src/lib/index.d.ts.map +1 -1
  41. package/dist/src/lib/index.js +11 -3
  42. package/dist/src/lib/keyPair.js +9 -9
  43. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +154 -0
  44. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/permissionlessValidatorTxBuilder.js +448 -0
  46. package/dist/src/lib/transaction.d.ts +19 -40
  47. package/dist/src/lib/transaction.d.ts.map +1 -1
  48. package/dist/src/lib/transaction.js +67 -166
  49. package/dist/src/lib/transactionBuilder.d.ts +31 -82
  50. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  51. package/dist/src/lib/transactionBuilder.js +65 -151
  52. package/dist/src/lib/transactionBuilderFactory.d.ts +16 -8
  53. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  54. package/dist/src/lib/transactionBuilderFactory.js +78 -19
  55. package/dist/src/lib/utils.d.ts +22 -7
  56. package/dist/src/lib/utils.d.ts.map +1 -1
  57. package/dist/src/lib/utils.js +53 -11
  58. package/dist/src/lib/utxoEngine.d.ts +10 -1
  59. package/dist/src/lib/utxoEngine.d.ts.map +1 -1
  60. package/dist/src/lib/utxoEngine.js +27 -3
  61. package/dist/src/lib/validatorTxBuilder.d.ts +4 -4
  62. package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -1
  63. package/dist/src/lib/validatorTxBuilder.js +2 -2
  64. package/dist/test/resources/avaxp.d.ts +79 -5
  65. package/dist/test/resources/avaxp.d.ts.map +1 -1
  66. package/dist/test/resources/avaxp.js +150 -31
  67. package/dist/test/resources/tx/importP.js +8 -8
  68. package/dist/test/unit/avaxp.js +90 -102
  69. package/dist/test/unit/lib/exportC2PTxBuilder.js +6 -2
  70. package/dist/test/unit/lib/exportP2CTxBuilder.js +10 -10
  71. package/dist/test/unit/lib/importC2PTxBuilder.js +8 -4
  72. package/dist/test/unit/lib/importP2CTxBuilder.js +8 -6
  73. package/dist/test/unit/lib/keyPair.js +6 -2
  74. package/dist/test/unit/lib/permissionlessValidatorTxBuilder.d.ts +2 -0
  75. package/dist/test/unit/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -0
  76. package/dist/test/unit/lib/permissionlessValidatorTxBuilder.js +287 -0
  77. package/dist/test/unit/lib/transactionBuilderFactory.js +8 -4
  78. package/dist/test/unit/lib/utils.js +6 -2
  79. package/dist/test/unit/lib/utxoEngine.js +6 -6
  80. package/dist/test/unit/lib/validateTxBuilder.js +12 -13
  81. package/dist/tsconfig.tsbuildinfo +1 -12757
  82. package/package.json +9 -8
package/CHANGELOG.md CHANGED
@@ -3,6 +3,312 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [4.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.22.4...@bitgo/sdk-coin-avaxp@4.0.0) (2024-03-28)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **sdk-coin-avaxp:** add support for recipient in P > C import tx ([0ffc818](https://github.com/BitGo/BitGoJS/commit/0ffc81859d620be1090e8ac4f3907a0fb690a1b3))
11
+
12
+ ### Features
13
+
14
+ - **root:** deprecate node 16 ([d3ec624](https://github.com/BitGo/BitGoJS/commit/d3ec6240bddae2a4ab7fa80c4a16efecc36210bd))
15
+ - **sdk-coin-avaxp:** add new avaxp library ([14d3767](https://github.com/BitGo/BitGoJS/commit/14d3767db8e8734ecdb3226fdcc5dd170630e1f5))
16
+ - **sdk-coin-avaxp:** add skeleton for addPermissionLessValidator tx ([08ad690](https://github.com/BitGo/BitGoJS/commit/08ad6909f9a51153bc0e76f67d4892cecb5ab805))
17
+
18
+ ### BREAKING CHANGES
19
+
20
+ - **root:** Node 16 is no longer supported in bitgojs.
21
+ TICKET: WP-1100
22
+
23
+ ## [3.22.4](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.22.3...@bitgo/sdk-coin-avaxp@3.22.4) (2024-03-19)
24
+
25
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
26
+
27
+ ## [3.22.3](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.22.2...@bitgo/sdk-coin-avaxp@3.22.3) (2024-03-11)
28
+
29
+ ### Bug Fixes
30
+
31
+ - **sdk-coin-avaxp:** pass memo as empty string in avaxp txs ([cf423dc](https://github.com/BitGo/BitGoJS/commit/cf423dc6ee45d0814fdd30379e99efd6290333dc))
32
+ - **sdk-coin-avaxp:** remove memo id from AVAXP transactions ([9bf1d02](https://github.com/BitGo/BitGoJS/commit/9bf1d020ad756a88674b2d0f7a6d948bb4e6ed24))
33
+
34
+ ## [3.22.2](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.22.1...@bitgo/sdk-coin-avaxp@3.22.2) (2024-02-28)
35
+
36
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
37
+
38
+ ## [3.22.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.22.0...@bitgo/sdk-coin-avaxp@3.22.1) (2024-02-22)
39
+
40
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
41
+
42
+ # [3.22.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.22.0) (2024-02-19)
43
+
44
+ ### Bug Fixes
45
+
46
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
47
+
48
+ ### Features
49
+
50
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
51
+
52
+ # [3.20.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.20.0) (2024-01-30)
53
+
54
+ ### Bug Fixes
55
+
56
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
57
+
58
+ ### Features
59
+
60
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
61
+
62
+ # [3.19.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.19.0) (2024-01-26)
63
+
64
+ ### Bug Fixes
65
+
66
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
67
+
68
+ ### Features
69
+
70
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
71
+
72
+ # [3.18.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.18.0) (2024-01-26)
73
+
74
+ ### Bug Fixes
75
+
76
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
77
+
78
+ ### Features
79
+
80
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
81
+
82
+ # [3.17.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.17.0) (2024-01-25)
83
+
84
+ ### Bug Fixes
85
+
86
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
87
+
88
+ ### Features
89
+
90
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
91
+
92
+ # [3.16.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.16.0) (2024-01-22)
93
+
94
+ ### Bug Fixes
95
+
96
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
97
+
98
+ ### Features
99
+
100
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
101
+
102
+ # [3.15.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.15.0) (2024-01-09)
103
+
104
+ ### Bug Fixes
105
+
106
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
107
+
108
+ ### Features
109
+
110
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
111
+
112
+ # [3.14.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.14.0) (2024-01-03)
113
+
114
+ ### Bug Fixes
115
+
116
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
117
+
118
+ ### Features
119
+
120
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
121
+
122
+ # [3.13.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.13.0) (2023-12-18)
123
+
124
+ ### Bug Fixes
125
+
126
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
127
+
128
+ ### Features
129
+
130
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
131
+
132
+ # [3.12.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.12.0) (2023-12-12)
133
+
134
+ ### Bug Fixes
135
+
136
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
137
+
138
+ ### Features
139
+
140
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
141
+
142
+ # [3.11.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.11.0) (2023-12-09)
143
+
144
+ ### Bug Fixes
145
+
146
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
147
+
148
+ ### Features
149
+
150
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
151
+
152
+ # [3.10.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.10.0) (2023-12-05)
153
+
154
+ ### Bug Fixes
155
+
156
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
157
+
158
+ ### Features
159
+
160
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
161
+
162
+ # [3.9.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.9.0) (2023-11-28)
163
+
164
+ ### Bug Fixes
165
+
166
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
167
+
168
+ ### Features
169
+
170
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
171
+
172
+ # [3.8.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.8.0) (2023-11-24)
173
+
174
+ ### Bug Fixes
175
+
176
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
177
+
178
+ ### Features
179
+
180
+ - **sdk-coin-avaxp:** replace export fee for import fee on output validation ([a0ae101](https://github.com/BitGo/BitGoJS/commit/a0ae101487cf88eecb078ed793b640160703c086))
181
+
182
+ ## [3.7.17](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.17) (2023-11-17)
183
+
184
+ ### Bug Fixes
185
+
186
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
187
+
188
+ ## [3.7.16](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.16) (2023-11-13)
189
+
190
+ ### Bug Fixes
191
+
192
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
193
+
194
+ ## [3.7.15](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.15) (2023-11-13)
195
+
196
+ ### Bug Fixes
197
+
198
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
199
+
200
+ ## [3.7.14](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.14) (2023-11-13)
201
+
202
+ ### Bug Fixes
203
+
204
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
205
+
206
+ ## [3.7.13](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.13) (2023-10-20)
207
+
208
+ ### Bug Fixes
209
+
210
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
211
+
212
+ ## [3.7.12](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.12) (2023-10-18)
213
+
214
+ ### Bug Fixes
215
+
216
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
217
+
218
+ ## [3.7.11](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.11) (2023-09-25)
219
+
220
+ ### Bug Fixes
221
+
222
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
223
+
224
+ ## [3.7.10](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.10) (2023-09-09)
225
+
226
+ ### Bug Fixes
227
+
228
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
229
+
230
+ ## [3.7.9](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.9) (2023-09-09)
231
+
232
+ ### Bug Fixes
233
+
234
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
235
+
236
+ ## [3.7.8](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.8) (2023-09-07)
237
+
238
+ ### Bug Fixes
239
+
240
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
241
+
242
+ ## [3.7.7](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.7) (2023-09-05)
243
+
244
+ ### Bug Fixes
245
+
246
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
247
+
248
+ ## [3.7.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.6) (2023-09-01)
249
+
250
+ ### Bug Fixes
251
+
252
+ - **root:** update @types/node ([cedc1a0](https://github.com/BitGo/BitGoJS/commit/cedc1a0035e79bb42fda57bf6ac29d606242f50b))
253
+
254
+ ## [3.7.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.5) (2023-08-29)
255
+
256
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
257
+
258
+ ## [3.7.4](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.4) (2023-08-25)
259
+
260
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
261
+
262
+ ## [3.7.3](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.3) (2023-08-24)
263
+
264
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
265
+
266
+ ## [3.7.2](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.2) (2023-08-16)
267
+
268
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
269
+
270
+ ## [3.7.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.7.0...@bitgo/sdk-coin-avaxp@3.7.1) (2023-08-16)
271
+
272
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
273
+
274
+ # [3.7.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.5.19...@bitgo/sdk-coin-avaxp@3.7.0) (2023-08-04)
275
+
276
+ ### Bug Fixes
277
+
278
+ - **sdk-coin-avaxp:** remove recipients validation causing pending approval failure ([66b433e](https://github.com/BitGo/BitGoJS/commit/66b433e437d79b90c9390d30fb7a97e229fb6556))
279
+
280
+ ### Features
281
+
282
+ - **root:** add node 18 to engines and CI ([9cc6a70](https://github.com/BitGo/BitGoJS/commit/9cc6a70ba807161b7c6a0ebe3d7c47f25c7c8eca))
283
+ - **root:** remove node 14 from engines ([6ec47cb](https://github.com/BitGo/BitGoJS/commit/6ec47cbd7996cc78bbf2cf7f16595c24fe43cd41))
284
+
285
+ # [3.6.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.5.19...@bitgo/sdk-coin-avaxp@3.6.0) (2023-07-28)
286
+
287
+ ### Features
288
+
289
+ - **root:** add node 18 to engines and CI ([9cc6a70](https://github.com/BitGo/BitGoJS/commit/9cc6a70ba807161b7c6a0ebe3d7c47f25c7c8eca))
290
+ - **root:** remove node 14 from engines ([6ec47cb](https://github.com/BitGo/BitGoJS/commit/6ec47cbd7996cc78bbf2cf7f16595c24fe43cd41))
291
+
292
+ ## [3.5.19](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.5.18...@bitgo/sdk-coin-avaxp@3.5.19) (2023-07-18)
293
+
294
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
295
+
296
+ ## [3.5.18](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.5.17...@bitgo/sdk-coin-avaxp@3.5.18) (2023-06-21)
297
+
298
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
299
+
300
+ ## [3.5.17](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.5.16...@bitgo/sdk-coin-avaxp@3.5.17) (2023-06-14)
301
+
302
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
303
+
304
+ ## [3.5.16](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.5.15...@bitgo/sdk-coin-avaxp@3.5.16) (2023-06-13)
305
+
306
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
307
+
308
+ ## [3.5.15](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.5.14...@bitgo/sdk-coin-avaxp@3.5.15) (2023-06-07)
309
+
310
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
311
+
6
312
  ## [3.5.14](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.5.13...@bitgo/sdk-coin-avaxp@3.5.14) (2023-06-05)
7
313
 
8
314
  **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
@@ -22,10 +22,9 @@ export declare class AvaxP extends BaseCoin {
22
22
  * Check if export txn is valid, based on expected tx params.
23
23
  *
24
24
  * @param {ITransactionRecipient[]} recipients expected recipients and info
25
- * @param {string} memo txn memo to verify
26
25
  * @param {AvaxpLib.TransactionExplanation} explainedTx explained export transaction
27
26
  */
28
- validateExportTx(recipients: ITransactionRecipient[], memo: string, explainedTx: AvaxpLib.TransactionExplanation): void;
27
+ validateExportTx(recipients: ITransactionRecipient[], explainedTx: AvaxpLib.TransactionExplanation): void;
29
28
  /**
30
29
  * Check if import txn into P is valid, based on expected tx params.
31
30
  *
@@ -1 +1 @@
1
- {"version":3,"file":"avaxp.d.ts","sourceRoot":"","sources":["../../src/avaxp.ts"],"names":[],"mappings":";AAAA,OAAO,EAAoB,QAAQ,IAAI,eAAe,EAAE,UAAU,EAAS,MAAM,qBAAqB,CAAC;AACvG,OAAO,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EACP,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EAGvB,kBAAkB,EAKlB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,QAAQ,MAAM,OAAO,CAAC;AAClC,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAMjB,qBAAa,KAAM,SAAQ,QAAQ;IACjC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAE/C,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAUrE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,QAAQ,IAAI,MAAM;IAGlB,SAAS,IAAI,UAAU;IAGvB,WAAW,IAAI,MAAM;IAGrB,aAAa,IAAI,MAAM,GAAG,MAAM;IAIhC;;;;;OAKG;IACH,iBAAiB,CACf,cAAc,EAAE,8BAA8B,EAC9C,WAAW,EAAE,QAAQ,CAAC,sBAAsB,GAC3C,IAAI;IAYP;;;;;;OAMG;IACH,gBAAgB,CACd,UAAU,EAAE,qBAAqB,EAAE,EACnC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,QAAQ,CAAC,sBAAsB,GAC3C,IAAI;IA8BP;;;;;OAKG;IACH,gBAAgB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAgB5F,iBAAiB,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IAgEhF;;;;;OAKG;IACG,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BrE;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAcvC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAanD;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBhF,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAKhE,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAInF;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAcrG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAIvD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW1E,OAAO,CAAC,UAAU;CAGnB"}
1
+ {"version":3,"file":"avaxp.d.ts","sourceRoot":"","sources":["../../src/avaxp.ts"],"names":[],"mappings":";AAAA,OAAO,EAAoB,QAAQ,IAAI,eAAe,EAAE,UAAU,EAAS,MAAM,qBAAqB,CAAC;AACvG,OAAO,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EACP,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EAGvB,kBAAkB,EAKlB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,QAAQ,MAAM,OAAO,CAAC;AAClC,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAMjB,qBAAa,KAAM,SAAQ,QAAQ;IACjC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAE/C,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAUrE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,QAAQ,IAAI,MAAM;IAGlB,SAAS,IAAI,UAAU;IAGvB,WAAW,IAAI,MAAM;IAGrB,aAAa,IAAI,MAAM,GAAG,MAAM;IAIhC;;;;;OAKG;IACH,iBAAiB,CACf,cAAc,EAAE,8BAA8B,EAC9C,WAAW,EAAE,QAAQ,CAAC,sBAAsB,GAC3C,IAAI;IAYP;;;;;OAKG;IACH,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,sBAAsB,GAAG,IAAI;IAqBzG;;;;;OAKG;IACH,gBAAgB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAgB5F,iBAAiB,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IA0DhF;;;;;OAKG;IACG,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BrE;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAcvC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAanD;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBhF,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAKhE,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAInF;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAcrG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAIvD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW1E,OAAO,CAAC,UAAU;CAGnB"}
package/dist/src/avaxp.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -73,28 +77,21 @@ class AvaxP extends sdk_core_1.BaseCoin {
73
77
  * Check if export txn is valid, based on expected tx params.
74
78
  *
75
79
  * @param {ITransactionRecipient[]} recipients expected recipients and info
76
- * @param {string} memo txn memo to verify
77
80
  * @param {AvaxpLib.TransactionExplanation} explainedTx explained export transaction
78
81
  */
79
- validateExportTx(recipients, memo, explainedTx) {
82
+ validateExportTx(recipients, explainedTx) {
80
83
  if (recipients.length !== 1 || explainedTx.outputs.length !== 1) {
81
84
  throw new Error('Export Tx requires one recipient');
82
85
  }
86
+ const maxImportFee = this._staticsCoin.network.maxImportFee;
83
87
  const recipientAmount = new bignumber_js_1.default(recipients[0].amount);
84
88
  if (recipientAmount.isGreaterThan(explainedTx.outputAmount) ||
85
- recipientAmount.plus(explainedTx.fee.fee).isLessThan(explainedTx.outputAmount)) {
86
- throw new Error(`Tx total amount ${explainedTx.outputAmount} does not match with expected total amount field ${recipientAmount} and fixed fee ${explainedTx.fee.fee}`);
89
+ recipientAmount.plus(maxImportFee).isLessThan(explainedTx.outputAmount)) {
90
+ throw new Error(`Tx total amount ${explainedTx.outputAmount} does not match with expected total amount field ${recipientAmount} and max import fee ${maxImportFee}`);
87
91
  }
88
92
  if (explainedTx.outputs && !utils_1.default.isValidAddress(explainedTx.outputs[0].address)) {
89
93
  throw new Error(`Invalid P-chain address ${explainedTx.outputs[0].address}`);
90
94
  }
91
- const memoValue = memo.split('~');
92
- if (!ethereumjs_util_1.isValidAddress(memoValue[0])) {
93
- throw new Error(`Txn memo must contain valid C-chain address destination, received: ${memo}`);
94
- }
95
- else if (memoValue[0] !== recipients[0].address) {
96
- throw new Error(`Invalid C-chain receive address ${memoValue[0]}, does not match expected params address ${recipients[0].address}`);
97
- }
98
95
  }
99
96
  /**
100
97
  * Check if import txn into P is valid, based on expected tx params.
@@ -116,6 +113,7 @@ class AvaxP extends sdk_core_1.BaseCoin {
116
113
  }
117
114
  }
118
115
  async verifyTransaction(params) {
116
+ var _a;
119
117
  const txHex = params.txPrebuild && params.txPrebuild.txHex;
120
118
  if (!txHex) {
121
119
  throw new Error('missing required tx prebuild property txHex');
@@ -135,39 +133,35 @@ class AvaxP extends sdk_core_1.BaseCoin {
135
133
  throw new Error('Tx type does not match with expected txParams type');
136
134
  }
137
135
  switch (explainedTx.type) {
136
+ // @deprecated
138
137
  case sdk_core_1.TransactionType.AddDelegator:
139
138
  case sdk_core_1.TransactionType.AddValidator:
140
- if (params.txParams.recipients && params.txParams.recipients.length !== 0) {
141
- throw new Error('Stake Tx does not require recipients');
142
- }
143
- if (params.txParams.memo && explainedTx.memo !== params.txParams.memo.value) {
144
- throw new Error('Tx memo does not match with expected txParams memo');
145
- }
139
+ case sdk_core_1.TransactionType.AddPermissionlessDelegator:
140
+ case sdk_core_1.TransactionType.AddPermissionlessValidator:
146
141
  this.validateStakingTx(stakingOptions, explainedTx);
147
142
  break;
148
143
  case sdk_core_1.TransactionType.Export:
149
- if (!params.txParams.recipients) {
144
+ if (!params.txParams.recipients || ((_a = params.txParams.recipients) === null || _a === void 0 ? void 0 : _a.length) !== 1) {
150
145
  throw new Error('Export Tx requires a recipient');
151
146
  }
152
- else if (!explainedTx.memo) {
153
- throw new Error('Export Tx requires a memo with c-chain address');
154
- }
155
147
  else {
156
- this.validateExportTx(params.txParams.recipients, explainedTx.memo, explainedTx);
148
+ this.validateExportTx(params.txParams.recipients, explainedTx);
157
149
  }
158
150
  break;
159
151
  case sdk_core_1.TransactionType.Import:
160
152
  if (tx.isTransactionForCChain) {
161
153
  // Import to C-chain
162
- if ((params.txParams.recipients && params.txParams.recipients.length !== 0) ||
163
- explainedTx.outputs.length !== 1) {
164
- throw new Error('Expected 1 output in import txn and does not require recipients');
154
+ if (explainedTx.outputs.length !== 1) {
155
+ throw new Error('Expected 1 output in import transaction');
156
+ }
157
+ if (!params.txParams.recipients || params.txParams.recipients.length !== 1) {
158
+ throw new Error('Expected 1 recipient in import transaction');
165
159
  }
166
160
  }
167
161
  else {
168
162
  // Import to P-chain
169
163
  if (explainedTx.outputs.length !== 1) {
170
- throw new Error('Expected 1 output in import txn');
164
+ throw new Error('Expected 1 output in import transaction');
171
165
  }
172
166
  this.validateImportTx(explainedTx.inputs, params.txParams);
173
167
  }
@@ -265,7 +259,7 @@ class AvaxP extends sdk_core_1.BaseCoin {
265
259
  return false;
266
260
  }
267
261
  // validate eth address for cross-chain txs to c-chain
268
- if (typeof address === 'string' && ethereumjs_util_1.isValidAddress(address)) {
262
+ if (typeof address === 'string' && (0, ethereumjs_util_1.isValidAddress)(address)) {
269
263
  return true;
270
264
  }
271
265
  return AvaxpLib.Utils.isValidAddress(address);
@@ -333,4 +327,4 @@ class AvaxP extends sdk_core_1.BaseCoin {
333
327
  }
334
328
  }
335
329
  exports.AvaxP = AvaxP;
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZheHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZheHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUF1RztBQUN2RyxtREFnQjhCO0FBQzlCLGdEQUFrQztBQVNsQyx3REFBZ0M7QUFDaEMsb0RBQXVCO0FBQ3ZCLGdFQUFxQztBQUNyQyxxREFBc0U7QUFFdEUsTUFBYSxLQUFNLFNBQVEsbUJBQVE7SUFHakMsWUFBWSxLQUFnQixFQUFFLFdBQXVDO1FBQ25FLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUViLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUNELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ2xDLENBQUM7SUFDRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FDZixjQUE4QyxFQUM5QyxXQUE0QztRQUU1QyxNQUFNLGtCQUFrQixHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUs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QixFQUFFLENBQUM7U0FDaEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQWUsRUFBRSxTQUFpQjtRQUNsRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUEyQixFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFZLEVBQUUsT0FBd0I7UUFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixNQUFNLElBQUksdUJBQVksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDL0IsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQTJCLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSxRQUFRLENBQUMseUJBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Q0FDRjtBQWxXRCxzQkFrV0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdmFsYW5jaGVOZXR3b3JrLCBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4sIENvaW5GYW1pbHksIGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBLZXlQYWlyLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBGZWVFc3RpbWF0ZU9wdGlvbnMsXG4gIFNpZ25pbmdFcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBJbnZhbGlkQWRkcmVzc0Vycm9yLFxuICBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yLFxuICBJVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyBBdmF4cExpYiBmcm9tICcuL2xpYic7XG5pbXBvcnQge1xuICBBdmF4cFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uRmVlLFxuICBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zLFxuICBBdmF4cFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgQXZheHBUcmFuc2FjdGlvblN0YWtpbmdPcHRpb25zLFxuICBBdmF4cFRyYW5zYWN0aW9uUGFyYW1zLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgaXNWYWxpZEFkZHJlc3MgYXMgaXNWYWxpZEV0aEFkZHJlc3MgfSBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuXG5leHBvcnQgY2xhc3MgQXZheFAgZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28pO1xuXG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRpY3NDb2luID0gc3RhdGljc0NvaW47XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgQXZheFAoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cbiAgZ2V0RmFtaWx5KCk6IENvaW5GYW1pbHkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mYW1pbHk7XG4gIH1cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZnVsbE5hbWU7XG4gIH1cbiAgZ2V0QmFzZUZhY3RvcigpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5fc3RhdGljc0NvaW4uZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgc3Rha2luZyB0eG4gaXMgdmFsaWQsIGJhc2VkIG9uIGV4cGVjdGVkIHR4IHBhcmFtcy5cbiAgICpcbiAgICogQHBhcmFtIHtBdmF4cFRyYW5zYWN0aW9uU3Rha2luZ09wdGlvbnN9IHN0YWtpbmdPcHRpb25zIGV4cGVjdGVkIHN0YWtpbmcgcGFyYW1zIHRvIGNoZWNrIGFnYWluc3RcbiAgICogQHBhcmFtIHtBdmF4cExpYi5UcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYWluZWRUeCBleHBsYWluZWQgc3Rha2luZyB0cmFuc2FjdGlvblxuICAgKi9cbiAgdmFsaWRhdGVTdGFraW5nVHgoXG4gICAgc3Rha2luZ09wdGlvbnM6IEF2YXhwVHJhbnNhY3Rpb25TdGFraW5nT3B0aW9ucyxcbiAgICBleHBsYWluZWRUeDogQXZheHBMaWIuVHJhbnNhY3Rpb25FeHBsYW5hdGlvblxuICApOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJlZFJlY2lwaWVudHMgPSBbeyBhZGRyZXNzOiBzdGFraW5nT3B0aW9ucy5ub2RlSUQsIGFtb3VudDogc3Rha2luZ09wdGlvbnMuYW1vdW50IH1dO1xuICAgIGNvbnN0IGZpbHRlcmVkT3V0cHV0cyA9IGV4cGxhaW5lZFR4Lm91dHB1dHMubWFwKChvdXRwdXQpID0+IF8ucGljayhvdXRwdXQsIFsnYWRkcmVzcycsICdhbW91bnQnXSkpO1xuXG4gICAgaWYgKCFfLmlzRXF1YWwoZmlsdGVyZWRPdXRwdXRzLCBmaWx0ZXJlZFJlY2lwaWVudHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcycpO1xuICAgIH1cbiAgICBpZiAoc3Rha2luZ09wdGlvbnM/LmFtb3VudCAhPT0gZXhwbGFpbmVkVHgub3V0cHV0QW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHRvdGFsIGFtb3VudCBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHRvdGFsIGFtb3VudCBmaWVsZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBleHBvcnQgdHhuIGlzIHZhbGlkLCBiYXNlZCBvbiBleHBlY3RlZCB0eCBwYXJhbXMuXG4gICAqXG4gICAqIEBwYXJhbSB7SVRyYW5zYWN0aW9uUmVjaXBpZW50W119IHJlY2lwaWVudHMgZXhwZWN0ZWQgcmVjaXBpZW50cyBhbmQgaW5mb1xuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVtbyB0eG4gbWVtbyB0byB2ZXJpZnlcbiAgICogQHBhcmFtIHtBdmF4cExpYi5UcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYWluZWRUeCBleHBsYWluZWQgZXhwb3J0IHRyYW5zYWN0aW9uXG4gICAqL1xuICB2YWxpZGF0ZUV4cG9ydFR4KFxuICAgIHJlY2lwaWVudHM6IElUcmFuc2FjdGlvblJlY2lwaWVudFtdLFxuICAgIG1lbW86IHN0cmluZyxcbiAgICBleHBsYWluZWRUeDogQXZheHBMaWIuVHJhbnNhY3Rpb25FeHBsYW5hdGlvblxuICApOiB2b2lkIHtcbiAgICBpZiAocmVjaXBpZW50cy5sZW5ndGggIT09IDEgfHwgZXhwbGFpbmVkVHgub3V0cHV0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwb3J0IFR4IHJlcXVpcmVzIG9uZSByZWNpcGllbnQnKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWNpcGllbnRBbW91bnQgPSBuZXcgQmlnTnVtYmVyKHJlY2lwaWVudHNbMF0uYW1vdW50KTtcblxuICAgIGlmIChcbiAgICAgIHJlY2lwaWVudEFtb3VudC5pc0dyZWF0ZXJUaGFuKGV4cGxhaW5lZFR4Lm91dHB1dEFtb3VudCkgfHxcbiAgICAgIHJlY2lwaWVudEFtb3VudC5wbHVzKGV4cGxhaW5lZFR4LmZlZS5mZWUpLmlzTGVzc1RoYW4oZXhwbGFpbmVkVHgub3V0cHV0QW1vdW50KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVHggdG90YWwgYW1vdW50ICR7ZXhwbGFpbmVkVHgub3V0cHV0QW1vdW50fSBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHRvdGFsIGFtb3VudCBmaWVsZCAke3JlY2lwaWVudEFtb3VudH0gYW5kIGZpeGVkIGZlZSAke2V4cGxhaW5lZFR4LmZlZS5mZWV9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZXhwbGFpbmVkVHgub3V0cHV0cyAmJiAhdXRpbHMuaXNWYWxpZEFkZHJlc3MoZXhwbGFpbmVkVHgub3V0cHV0c1swXS5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFAtY2hhaW4gYWRkcmVzcyAke2V4cGxhaW5lZFR4Lm91dHB1dHNbMF0uYWRkcmVzc31gKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZW1vVmFsdWUgPSBtZW1vLnNwbGl0KCd+Jyk7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhtZW1vVmFsdWVbMF0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFR4biBtZW1vIG11c3QgY29udGFpbiB2YWxpZCBDLWNoYWluIGFkZHJlc3MgZGVzdGluYXRpb24sIHJlY2VpdmVkOiAke21lbW99YCk7XG4gICAgfSBlbHNlIGlmIChtZW1vVmFsdWVbMF0gIT09IHJlY2lwaWVudHNbMF0uYWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBDLWNoYWluIHJlY2VpdmUgYWRkcmVzcyAke21lbW9WYWx1ZVswXX0sIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIHBhcmFtcyBhZGRyZXNzICR7cmVjaXBpZW50c1swXS5hZGRyZXNzfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGltcG9ydCB0eG4gaW50byBQIGlzIHZhbGlkLCBiYXNlZCBvbiBleHBlY3RlZCB0eCBwYXJhbXMuXG4gICAqXG4gICAqIEBwYXJhbSB7QXZheHBMaWIuQXZheHBFbnRyeVtdfSBleHBsYWluZWRUeElucHV0cyB0eCBpbnB1dHMgKHVuc3BlbnRzIHRvIGJlIGltcG9ydGVkKVxuICAgKiBAcGFyYW0ge0F2YXhwVHJhbnNhY3Rpb25QYXJhbXN9IHR4UGFyYW1zIGV4cGVjdGVkIHR4IGluZm8gdG8gY2hlY2sgYWdhaW5zdFxuICAgKi9cbiAgdmFsaWRhdGVJbXBvcnRUeChleHBsYWluZWRUeElucHV0czogQXZheHBMaWIuQXZheHBFbnRyeVtdLCB0eFBhcmFtczogQXZheHBUcmFuc2FjdGlvblBhcmFtcyk6IHZvaWQge1xuICAgIGlmICh0eFBhcmFtcy51bnNwZW50cykge1xuICAgICAgaWYgKGV4cGxhaW5lZFR4SW5wdXRzLmxlbmd0aCAhPT0gdHhQYXJhbXMudW5zcGVudHMubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHt0eFBhcmFtcy51bnNwZW50cy5sZW5ndGh9IFVUWE9zLCB0cmFuc2FjdGlvbiBoYWQgJHtleHBsYWluZWRUeElucHV0cy5sZW5ndGh9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVuc3BlbnRzID0gbmV3IFNldCh0eFBhcmFtcy51bnNwZW50cyk7XG5cbiAgICAgIGZvciAoY29uc3QgdW5zcGVudCBvZiBleHBsYWluZWRUeElucHV0cykge1xuICAgICAgICBpZiAoIXVuc3BlbnRzLmhhcyh1bnNwZW50LmlkKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVHJhbnNhY3Rpb24gc2hvdWxkIG5vdCBjb250YWluIHRoZSBVVFhPOiAke3Vuc3BlbnQuaWR9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyB2ZXJpZnlUcmFuc2FjdGlvbihwYXJhbXM6IEF2YXhwVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgdHhIZXggPSBwYXJhbXMudHhQcmVidWlsZCAmJiBwYXJhbXMudHhQcmVidWlsZC50eEhleDtcbiAgICBpZiAoIXR4SGV4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgICB9XG4gICAgbGV0IHR4O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSB0aGlzLmdldEJ1aWxkZXIoKS5mcm9tKHR4SGV4KTtcbiAgICAgIHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBleHBsYWluZWRUeCA9IHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgY29uc3QgeyB0eXBlLCBzdGFraW5nT3B0aW9ucyB9ID0gcGFyYW1zLnR4UGFyYW1zO1xuICAgIC8vIFRPRE8oQkctNjIxMTIpOiBjaGFuZ2UgSW1wb3J0VG9DIHR5cGUgdG8gSW1wb3J0XG4gICAgaWYgKCF0eXBlIHx8ICh0eXBlICE9PSAnSW1wb3J0VG9DJyAmJiBleHBsYWluZWRUeC50eXBlICE9PSBUcmFuc2FjdGlvblR5cGVbdHlwZV0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHR5cGUgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyB0eXBlJyk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChleHBsYWluZWRUeC50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGREZWxlZ2F0b3I6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRWYWxpZGF0b3I6XG4gICAgICAgIGlmIChwYXJhbXMudHhQYXJhbXMucmVjaXBpZW50cyAmJiBwYXJhbXMudHhQYXJhbXMucmVjaXBpZW50cy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0YWtlIFR4IGRvZXMgbm90IHJlcXVpcmUgcmVjaXBpZW50cycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJhbXMudHhQYXJhbXMubWVtbyAmJiBleHBsYWluZWRUeC5tZW1vICE9PSBwYXJhbXMudHhQYXJhbXMubWVtby52YWx1ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHggbWVtbyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIG1lbW8nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsaWRhdGVTdGFraW5nVHgoc3Rha2luZ09wdGlvbnMsIGV4cGxhaW5lZFR4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ6XG4gICAgICAgIGlmICghcGFyYW1zLnR4UGFyYW1zLnJlY2lwaWVudHMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cG9ydCBUeCByZXF1aXJlcyBhIHJlY2lwaWVudCcpO1xuICAgICAgICB9IGVsc2UgaWYgKCFleHBsYWluZWRUeC5tZW1vKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBvcnQgVHggcmVxdWlyZXMgYSBtZW1vIHdpdGggYy1jaGFpbiBhZGRyZXNzJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUV4cG9ydFR4KHBhcmFtcy50eFBhcmFtcy5yZWNpcGllbnRzLCBleHBsYWluZWRUeC5tZW1vLCBleHBsYWluZWRUeCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5JbXBvcnQ6XG4gICAgICAgIGlmICh0eC5pc1RyYW5zYWN0aW9uRm9yQ0NoYWluKSB7XG4gICAgICAgICAgLy8gSW1wb3J0IHRvIEMtY2hhaW5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAocGFyYW1zLnR4UGFyYW1zLnJlY2lwaWVudHMgJiYgcGFyYW1zLnR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoICE9PSAwKSB8fFxuICAgICAgICAgICAgZXhwbGFpbmVkVHgub3V0cHV0cy5sZW5ndGggIT09IDFcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgMSBvdXRwdXQgaW4gaW1wb3J0IHR4biBhbmQgZG9lcyBub3QgcmVxdWlyZSByZWNpcGllbnRzJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEltcG9ydCB0byBQLWNoYWluXG4gICAgICAgICAgaWYgKGV4cGxhaW5lZFR4Lm91dHB1dHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIDEgb3V0cHV0IGluIGltcG9ydCB0eG4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUltcG9ydFR4KGV4cGxhaW5lZFR4LmlucHV0cywgcGFyYW1zLnR4UGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVHggdHlwZSBpcyBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhZGRyZXNzIGlzIHZhbGlkLCB0aGVuIG1ha2Ugc3VyZSBpdCBtYXRjaGVzIHRoZSByb290IGFkZHJlc3MuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMuYWRkcmVzcyBhZGRyZXNzIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBwYXJhbXMua2V5Y2hhaW5zIHB1YmxpYyBrZXlzIHRvIGdlbmVyYXRlIHRoZSB3YWxsZXRcbiAgICovXG4gIGFzeW5jIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBhZGRyZXNzLCBrZXljaGFpbnMgfSA9IHBhcmFtcztcblxuICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgIH1cbiAgICBpZiAoIWtleWNoYWlucyB8fCBrZXljaGFpbnMubGVuZ3RoICE9PSAzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5Y2hhaW5zJyk7XG4gICAgfVxuXG4gICAgLy8gbXVsdGlzaWcgYWRkcmVzc2VzIGFyZSBzZXBhcmF0ZWQgYnkgflxuICAgIGNvbnN0IHNwbGl0QWRkcmVzc2VzID0gYWRkcmVzcy5zcGxpdCgnficpO1xuXG4gICAgLy8gZGVyaXZlIGFkZHJlc3NlcyBmcm9tIGtleWNoYWluXG4gICAgY29uc3QgdW5sb2NrQWRkcmVzc2VzID0ga2V5Y2hhaW5zLm1hcCgoa2V5Y2hhaW4pID0+XG4gICAgICBuZXcgQXZheHBMaWIuS2V5UGFpcih7IHB1Yjoga2V5Y2hhaW4ucHViIH0pLmdldEFkZHJlc3ModGhpcy5fc3RhdGljc0NvaW4ubmV0d29yay50eXBlKVxuICAgICk7XG5cbiAgICBpZiAoc3BsaXRBZGRyZXNzZXMubGVuZ3RoICE9PSB1bmxvY2tBZGRyZXNzZXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcihgYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmU6IG11bHRpc2lnIGFkZHJlc3MgbGVuZ3RoIGRvZXMgbm90IG1hdGNoYCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFkcmVzc2VzQXJyYXlzTWF0Y2goc3BsaXRBZGRyZXNzZXMsIHVubG9ja0FkZHJlc3NlcykpIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogJHthZGRyZXNzfSBpcyBub3Qgb2YgdGhpcyB3YWxsZXRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGF0IHR3byBtdWx0aXNpZyBhZGRyZXNzIGFycmF5cyBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzLCBvcmRlciBkb2VzbnQgbWF0dGVyXG4gICAqIEBwYXJhbSBhZGRyZXNzQXJyYXkxXG4gICAqIEBwYXJhbSBhZGRyZXNzQXJyYXkyXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYWRkcmVzcyBhcnJheXMgaGF2ZSB0aGUgc2FtZSBhZGRyZXNzZXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYWRyZXNzZXNBcnJheXNNYXRjaChhZGRyZXNzQXJyYXkxOiBzdHJpbmdbXSwgYWRkcmVzc0FycmF5Mjogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYWRkcmVzc0FycmF5MS5zb3J0KCkpID09PSBKU09OLnN0cmluZ2lmeShhZGRyZXNzQXJyYXkyLnNvcnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgQXZheHAga2V5IHBhaXJcbiAgICpcbiAgICogQHBhcmFtIHtCdWZmZXJ9IHNlZWQgLSBTZWVkIGZyb20gd2hpY2ggdGhlIG5ldyBrZXlwYWlyIHNob3VsZCBiZSBnZW5lcmF0ZWQsIG90aGVyd2lzZSBhIHJhbmRvbSBzZWVkIGlzIHVzZWRcbiAgICogQHJldHVybnMge09iamVjdH0gb2JqZWN0IHdpdGggZ2VuZXJhdGVkIHB1YiBhbmQgcHJ2XG4gICAqL1xuICBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IEF2YXhwTGliLktleVBhaXIoeyBzZWVkIH0pIDogbmV3IEF2YXhwTGliLktleVBhaXIoKTtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG5cbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJ2IGluIGtleSBnZW5lcmF0aW9uLicpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleXMucHViLFxuICAgICAgcHJ2OiBrZXlzLnBydixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwdWJsaWMga2V5IGZvciB0aGUgY29pblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHViIHRoZSBwcnYgdG8gYmUgY2hlY2tlZFxuICAgKiBAcmV0dXJucyBpcyBpdCB2YWxpZD9cbiAgICovXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEF2YXhwTGliLktleVBhaXIoeyBwdWIgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwcml2YXRlIGtleSBmb3IgdGhlIGNvaW5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiB0aGUgcHJ2IHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMgaXMgaXQgdmFsaWQ/XG4gICAqL1xuICBpc1ZhbGlkUHJ2KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBBdmF4cExpYi5LZXlQYWlyKHsgcHJ2IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKGFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIHZhbGlkYXRlIGV0aCBhZGRyZXNzIGZvciBjcm9zcy1jaGFpbiB0eHMgdG8gYy1jaGFpblxuICAgIGlmICh0eXBlb2YgYWRkcmVzcyA9PT0gJ3N0cmluZycgJiYgaXNWYWxpZEV0aEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBBdmF4cExpYi5VdGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBBdmF4cCB0cmFuc2FjdGlvblxuICAgKi9cbiAgYXN5bmMgc2lnblRyYW5zYWN0aW9uKHBhcmFtczogQXZheHBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIC8vIGRlc2VyaWFsaXplIHJhdyB0cmFuc2FjdGlvbiAobm90ZTogZnJvbUFkZHJlc3MgaGFzIG9uY2hhaW4gb3JkZXIpXG4gICAgY29uc3QgdHhCdWlsZGVyID0gdGhpcy5nZXRCdWlsZGVyKCkuZnJvbShwYXJhbXMudHhQcmVidWlsZC50eEhleCk7XG4gICAgY29uc3Qga2V5ID0gcGFyYW1zLnBydjtcblxuICAgIC8vIHB1c2ggdGhlIGtleXBhaXIgdG8gc2lnbmVyIGFycmF5XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXkgfSk7XG5cbiAgICAvLyBidWlsZCB0aGUgdHJhbnNhY3Rpb25cbiAgICBjb25zdCB0cmFuc2FjdGlvbjogQmFzZVRyYW5zYWN0aW9uID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFcnJvciB3aGlsZSB0cnlpbmcgdG8gYnVpbGQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLnNpZ25hdHVyZS5sZW5ndGggPj0gMlxuICAgICAgPyB7IHR4SGV4OiB0cmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpIH1cbiAgICAgIDogeyBoYWxmU2lnbmVkOiB7IHR4SGV4OiB0cmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpIH0gfTtcbiAgfVxuXG4gIGFzeW5jIGZlZUVzdGltYXRlKHBhcmFtczogRmVlRXN0aW1hdGVPcHRpb25zKTogUHJvbWlzZTxUcmFuc2FjdGlvbkZlZT4ge1xuICAgIC8vIHN0YWtpbmcgdHJhbnNhY3Rpb25zIGFyZSBmZWUtbGVzc1xuICAgIHJldHVybiB7IGZlZTogJzAnIH07XG4gIH1cblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cGxhaW4gYSBBdmF4cCB0cmFuc2FjdGlvbiBmcm9tIHR4SGV4XG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAqL1xuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxBdmF4cExpYi5UcmFuc2FjdGlvbkV4cGxhbmF0aW9uPiB7XG4gICAgY29uc3QgdHhIZXggPSBwYXJhbXMudHhIZXggPz8gcGFyYW1zPy5oYWxmU2lnbmVkPy50eEhleDtcbiAgICBpZiAoIXR4SGV4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdHJhbnNhY3Rpb24gaGV4Jyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSB0aGlzLmdldEJ1aWxkZXIoKS5mcm9tKHR4SGV4KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICByZXR1cm4gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRyYW5zYWN0aW9uOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICByZWNvdmVyeVNpZ25hdHVyZShtZXNzYWdlOiBCdWZmZXIsIHNpZ25hdHVyZTogQnVmZmVyKTogQnVmZmVyIHtcbiAgICByZXR1cm4gQXZheHBMaWIuVXRpbHMucmVjb3ZlcnlTaWduYXR1cmUodGhpcy5fc3RhdGljc0NvaW4ubmV0d29yayBhcyBBdmFsYW5jaGVOZXR3b3JrLCBtZXNzYWdlLCBzaWduYXR1cmUpO1xuICB9XG5cbiAgYXN5bmMgc2lnbk1lc3NhZ2Uoa2V5OiBLZXlQYWlyLCBtZXNzYWdlOiBzdHJpbmcgfCBCdWZmZXIpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGNvbnN0IHBydiA9IG5ldyBBdmF4cExpYi5LZXlQYWlyKGtleSkuZ2V0UHJpdmF0ZUtleSgpO1xuICAgIGlmICghcHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdJbnZhbGlkIGtleSBwYWlyIG9wdGlvbnMnKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgbWVzc2FnZSA9IEJ1ZmZlci5mcm9tKG1lc3NhZ2UsICdoZXgnKTtcbiAgICB9XG4gICAgcmV0dXJuIEF2YXhwTGliLlV0aWxzLmNyZWF0ZVNpZ25hdHVyZSh0aGlzLl9zdGF0aWNzQ29pbi5uZXR3b3JrIGFzIEF2YWxhbmNoZU5ldHdvcmssIG1lc3NhZ2UsIHBydik7XG4gIH1cblxuICBwcml2YXRlIGdldEJ1aWxkZXIoKTogQXZheHBMaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gICAgcmV0dXJuIG5ldyBBdmF4cExpYi5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCh0aGlzLmdldENoYWluKCkpKTtcbiAgfVxufVxuIl19
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZheHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZheHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBdUc7QUFDdkcsbURBZ0I4QjtBQUM5QixnREFBa0M7QUFTbEMsd0RBQWdDO0FBQ2hDLG9EQUF1QjtBQUN2QixnRUFBcUM7QUFDckMscURBQXNFO0FBRXRFLE1BQWEsS0FBTSxTQUFRLG1CQUFRO0lBR2pDLFlBQVksS0FBZ0IsRUFBRSxXQUF1QztRQUNuRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztTQUN2RTtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBQ0QsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQUNELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLENBQ2YsY0FBOEMsRUFDOUMsV0FBNEM7UUFFNUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEVBQUUsT0FBTyxF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QyxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQTJCLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSxRQUFRLENBQUMseUJBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Q0FDRjtBQTlVRCxzQkE4VUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdmFsYW5jaGVOZXR3b3JrLCBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4sIENvaW5GYW1pbHksIGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBLZXlQYWlyLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBGZWVFc3RpbWF0ZU9wdGlvbnMsXG4gIFNpZ25pbmdFcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBJbnZhbGlkQWRkcmVzc0Vycm9yLFxuICBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yLFxuICBJVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyBBdmF4cExpYiBmcm9tICcuL2xpYic7XG5pbXBvcnQge1xuICBBdmF4cFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uRmVlLFxuICBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zLFxuICBBdmF4cFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgQXZheHBUcmFuc2FjdGlvblN0YWtpbmdPcHRpb25zLFxuICBBdmF4cFRyYW5zYWN0aW9uUGFyYW1zLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgaXNWYWxpZEFkZHJlc3MgYXMgaXNWYWxpZEV0aEFkZHJlc3MgfSBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuXG5leHBvcnQgY2xhc3MgQXZheFAgZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28pO1xuXG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRpY3NDb2luID0gc3RhdGljc0NvaW47XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgQXZheFAoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cbiAgZ2V0RmFtaWx5KCk6IENvaW5GYW1pbHkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mYW1pbHk7XG4gIH1cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZnVsbE5hbWU7XG4gIH1cbiAgZ2V0QmFzZUZhY3RvcigpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5fc3RhdGljc0NvaW4uZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgc3Rha2luZyB0eG4gaXMgdmFsaWQsIGJhc2VkIG9uIGV4cGVjdGVkIHR4IHBhcmFtcy5cbiAgICpcbiAgICogQHBhcmFtIHtBdmF4cFRyYW5zYWN0aW9uU3Rha2luZ09wdGlvbnN9IHN0YWtpbmdPcHRpb25zIGV4cGVjdGVkIHN0YWtpbmcgcGFyYW1zIHRvIGNoZWNrIGFnYWluc3RcbiAgICogQHBhcmFtIHtBdmF4cExpYi5UcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYWluZWRUeCBleHBsYWluZWQgc3Rha2luZyB0cmFuc2FjdGlvblxuICAgKi9cbiAgdmFsaWRhdGVTdGFraW5nVHgoXG4gICAgc3Rha2luZ09wdGlvbnM6IEF2YXhwVHJhbnNhY3Rpb25TdGFraW5nT3B0aW9ucyxcbiAgICBleHBsYWluZWRUeDogQXZheHBMaWIuVHJhbnNhY3Rpb25FeHBsYW5hdGlvblxuICApOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJlZFJlY2lwaWVudHMgPSBbeyBhZGRyZXNzOiBzdGFraW5nT3B0aW9ucy5ub2RlSUQsIGFtb3VudDogc3Rha2luZ09wdGlvbnMuYW1vdW50IH1dO1xuICAgIGNvbnN0IGZpbHRlcmVkT3V0cHV0cyA9IGV4cGxhaW5lZFR4Lm91dHB1dHMubWFwKChvdXRwdXQpID0+IF8ucGljayhvdXRwdXQsIFsnYWRkcmVzcycsICdhbW91bnQnXSkpO1xuXG4gICAgaWYgKCFfLmlzRXF1YWwoZmlsdGVyZWRPdXRwdXRzLCBmaWx0ZXJlZFJlY2lwaWVudHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcycpO1xuICAgIH1cbiAgICBpZiAoc3Rha2luZ09wdGlvbnM/LmFtb3VudCAhPT0gZXhwbGFpbmVkVHgub3V0cHV0QW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHRvdGFsIGFtb3VudCBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHRvdGFsIGFtb3VudCBmaWVsZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBleHBvcnQgdHhuIGlzIHZhbGlkLCBiYXNlZCBvbiBleHBlY3RlZCB0eCBwYXJhbXMuXG4gICAqXG4gICAqIEBwYXJhbSB7SVRyYW5zYWN0aW9uUmVjaXBpZW50W119IHJlY2lwaWVudHMgZXhwZWN0ZWQgcmVjaXBpZW50cyBhbmQgaW5mb1xuICAgKiBAcGFyYW0ge0F2YXhwTGliLlRyYW5zYWN0aW9uRXhwbGFuYXRpb259IGV4cGxhaW5lZFR4IGV4cGxhaW5lZCBleHBvcnQgdHJhbnNhY3Rpb25cbiAgICovXG4gIHZhbGlkYXRlRXhwb3J0VHgocmVjaXBpZW50czogSVRyYW5zYWN0aW9uUmVjaXBpZW50W10sIGV4cGxhaW5lZFR4OiBBdmF4cExpYi5UcmFuc2FjdGlvbkV4cGxhbmF0aW9uKTogdm9pZCB7XG4gICAgaWYgKHJlY2lwaWVudHMubGVuZ3RoICE9PSAxIHx8IGV4cGxhaW5lZFR4Lm91dHB1dHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cG9ydCBUeCByZXF1aXJlcyBvbmUgcmVjaXBpZW50Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWF4SW1wb3J0RmVlID0gKHRoaXMuX3N0YXRpY3NDb2luLm5ldHdvcmsgYXMgQXZhbGFuY2hlTmV0d29yaykubWF4SW1wb3J0RmVlO1xuICAgIGNvbnN0IHJlY2lwaWVudEFtb3VudCA9IG5ldyBCaWdOdW1iZXIocmVjaXBpZW50c1swXS5hbW91bnQpO1xuICAgIGlmIChcbiAgICAgIHJlY2lwaWVudEFtb3VudC5pc0dyZWF0ZXJUaGFuKGV4cGxhaW5lZFR4Lm91dHB1dEFtb3VudCkgfHxcbiAgICAgIHJlY2lwaWVudEFtb3VudC5wbHVzKG1heEltcG9ydEZlZSkuaXNMZXNzVGhhbihleHBsYWluZWRUeC5vdXRwdXRBbW91bnQpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBUeCB0b3RhbCBhbW91bnQgJHtleHBsYWluZWRUeC5vdXRwdXRBbW91bnR9IGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdG90YWwgYW1vdW50IGZpZWxkICR7cmVjaXBpZW50QW1vdW50fSBhbmQgbWF4IGltcG9ydCBmZWUgJHttYXhJbXBvcnRGZWV9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZXhwbGFpbmVkVHgub3V0cHV0cyAmJiAhdXRpbHMuaXNWYWxpZEFkZHJlc3MoZXhwbGFpbmVkVHgub3V0cHV0c1swXS5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFAtY2hhaW4gYWRkcmVzcyAke2V4cGxhaW5lZFR4Lm91dHB1dHNbMF0uYWRkcmVzc31gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgaW1wb3J0IHR4biBpbnRvIFAgaXMgdmFsaWQsIGJhc2VkIG9uIGV4cGVjdGVkIHR4IHBhcmFtcy5cbiAgICpcbiAgICogQHBhcmFtIHtBdmF4cExpYi5BdmF4cEVudHJ5W119IGV4cGxhaW5lZFR4SW5wdXRzIHR4IGlucHV0cyAodW5zcGVudHMgdG8gYmUgaW1wb3J0ZWQpXG4gICAqIEBwYXJhbSB7QXZheHBUcmFuc2FjdGlvblBhcmFtc30gdHhQYXJhbXMgZXhwZWN0ZWQgdHggaW5mbyB0byBjaGVjayBhZ2FpbnN0XG4gICAqL1xuICB2YWxpZGF0ZUltcG9ydFR4KGV4cGxhaW5lZFR4SW5wdXRzOiBBdmF4cExpYi5BdmF4cEVudHJ5W10sIHR4UGFyYW1zOiBBdmF4cFRyYW5zYWN0aW9uUGFyYW1zKTogdm9pZCB7XG4gICAgaWYgKHR4UGFyYW1zLnVuc3BlbnRzKSB7XG4gICAgICBpZiAoZXhwbGFpbmVkVHhJbnB1dHMubGVuZ3RoICE9PSB0eFBhcmFtcy51bnNwZW50cy5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke3R4UGFyYW1zLnVuc3BlbnRzLmxlbmd0aH0gVVRYT3MsIHRyYW5zYWN0aW9uIGhhZCAke2V4cGxhaW5lZFR4SW5wdXRzLmxlbmd0aH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdW5zcGVudHMgPSBuZXcgU2V0KHR4UGFyYW1zLnVuc3BlbnRzKTtcblxuICAgICAgZm9yIChjb25zdCB1bnNwZW50IG9mIGV4cGxhaW5lZFR4SW5wdXRzKSB7XG4gICAgICAgIGlmICghdW5zcGVudHMuaGFzKHVuc3BlbnQuaWQpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUcmFuc2FjdGlvbiBzaG91bGQgbm90IGNvbnRhaW4gdGhlIFVUWE86ICR7dW5zcGVudC5pZH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogQXZheHBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB0eEhleCA9IHBhcmFtcy50eFByZWJ1aWxkICYmIHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4O1xuICAgIGlmICghdHhIZXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eCBwcmVidWlsZCBwcm9wZXJ0eSB0eEhleCcpO1xuICAgIH1cbiAgICBsZXQgdHg7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IHRoaXMuZ2V0QnVpbGRlcigpLmZyb20odHhIZXgpO1xuICAgICAgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IGV4cGxhaW5lZFR4ID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG5cbiAgICBjb25zdCB7IHR5cGUsIHN0YWtpbmdPcHRpb25zIH0gPSBwYXJhbXMudHhQYXJhbXM7XG4gICAgLy8gVE9ETyhCRy02MjExMik6IGNoYW5nZSBJbXBvcnRUb0MgdHlwZSB0byBJbXBvcnRcbiAgICBpZiAoIXR5cGUgfHwgKHR5cGUgIT09ICdJbXBvcnRUb0MnICYmIGV4cGxhaW5lZFR4LnR5cGUgIT09IFRyYW5zYWN0aW9uVHlwZVt0eXBlXSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHggdHlwZSBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHR5cGUnKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV4cGxhaW5lZFR4LnR5cGUpIHtcbiAgICAgIC8vIEBkZXByZWNhdGVkXG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGREZWxlZ2F0b3I6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRWYWxpZGF0b3I6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRQZXJtaXNzaW9ubGVzc0RlbGVnYXRvcjpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yOlxuICAgICAgICB0aGlzLnZhbGlkYXRlU3Rha2luZ1R4KHN0YWtpbmdPcHRpb25zLCBleHBsYWluZWRUeCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRXhwb3J0OlxuICAgICAgICBpZiAoIXBhcmFtcy50eFBhcmFtcy5yZWNpcGllbnRzIHx8IHBhcmFtcy50eFBhcmFtcy5yZWNpcGllbnRzPy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cG9ydCBUeCByZXF1aXJlcyBhIHJlY2lwaWVudCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmFsaWRhdGVFeHBvcnRUeChwYXJhbXMudHhQYXJhbXMucmVjaXBpZW50cywgZXhwbGFpbmVkVHgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuSW1wb3J0OlxuICAgICAgICBpZiAodHguaXNUcmFuc2FjdGlvbkZvckNDaGFpbikge1xuICAgICAgICAgIC8vIEltcG9ydCB0byBDLWNoYWluXG4gICAgICAgICAgaWYgKGV4cGxhaW5lZFR4Lm91dHB1dHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIDEgb3V0cHV0IGluIGltcG9ydCB0cmFuc2FjdGlvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXBhcmFtcy50eFBhcmFtcy5yZWNpcGllbnRzIHx8IHBhcmFtcy50eFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCAxIHJlY2lwaWVudCBpbiBpbXBvcnQgdHJhbnNhY3Rpb24nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSW1wb3J0IHRvIFAtY2hhaW5cbiAgICAgICAgICBpZiAoZXhwbGFpbmVkVHgub3V0cHV0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgMSBvdXRwdXQgaW4gaW1wb3J0IHRyYW5zYWN0aW9uJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudmFsaWRhdGVJbXBvcnRUeChleHBsYWluZWRUeC5pbnB1dHMsIHBhcmFtcy50eFBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHR5cGUgaXMgbm90IHN1cHBvcnRlZCB5ZXQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYWRkcmVzcyBpcyB2YWxpZCwgdGhlbiBtYWtlIHN1cmUgaXQgbWF0Y2hlcyB0aGUgcm9vdCBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zLmFkZHJlc3MgYWRkcmVzcyB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gcGFyYW1zLmtleWNoYWlucyBwdWJsaWMga2V5cyB0byBnZW5lcmF0ZSB0aGUgd2FsbGV0XG4gICAqL1xuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgYWRkcmVzcywga2V5Y2hhaW5zIH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgICB9XG4gICAgaWYgKCFrZXljaGFpbnMgfHwga2V5Y2hhaW5zLmxlbmd0aCAhPT0gMykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleWNoYWlucycpO1xuICAgIH1cblxuICAgIC8vIG11bHRpc2lnIGFkZHJlc3NlcyBhcmUgc2VwYXJhdGVkIGJ5IH5cbiAgICBjb25zdCBzcGxpdEFkZHJlc3NlcyA9IGFkZHJlc3Muc3BsaXQoJ34nKTtcblxuICAgIC8vIGRlcml2ZSBhZGRyZXNzZXMgZnJvbSBrZXljaGFpblxuICAgIGNvbnN0IHVubG9ja0FkZHJlc3NlcyA9IGtleWNoYWlucy5tYXAoKGtleWNoYWluKSA9PlxuICAgICAgbmV3IEF2YXhwTGliLktleVBhaXIoeyBwdWI6IGtleWNoYWluLnB1YiB9KS5nZXRBZGRyZXNzKHRoaXMuX3N0YXRpY3NDb2luLm5ldHdvcmsudHlwZSlcbiAgICApO1xuXG4gICAgaWYgKHNwbGl0QWRkcmVzc2VzLmxlbmd0aCAhPT0gdW5sb2NrQWRkcmVzc2VzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IoYGFkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlOiBtdWx0aXNpZyBhZGRyZXNzIGxlbmd0aCBkb2VzIG5vdCBtYXRjaGApO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hZHJlc3Nlc0FycmF5c01hdGNoKHNwbGl0QWRkcmVzc2VzLCB1bmxvY2tBZGRyZXNzZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcihgYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmU6ICR7YWRkcmVzc30gaXMgbm90IG9mIHRoaXMgd2FsbGV0YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhhdCB0d28gbXVsdGlzaWcgYWRkcmVzcyBhcnJheXMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cywgb3JkZXIgZG9lc250IG1hdHRlclxuICAgKiBAcGFyYW0gYWRkcmVzc0FycmF5MVxuICAgKiBAcGFyYW0gYWRkcmVzc0FycmF5MlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGFkZHJlc3MgYXJyYXlzIGhhdmUgdGhlIHNhbWUgYWRkcmVzc2VzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGFkcmVzc2VzQXJyYXlzTWF0Y2goYWRkcmVzc0FycmF5MTogc3RyaW5nW10sIGFkZHJlc3NBcnJheTI6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFkZHJlc3NBcnJheTEuc29ydCgpKSA9PT0gSlNPTi5zdHJpbmdpZnkoYWRkcmVzc0FycmF5Mi5zb3J0KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIEF2YXhwIGtleSBwYWlyXG4gICAqXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBzZWVkIC0gU2VlZCBmcm9tIHdoaWNoIHRoZSBuZXcga2V5cGFpciBzaG91bGQgYmUgZ2VuZXJhdGVkLCBvdGhlcndpc2UgYSByYW5kb20gc2VlZCBpcyB1c2VkXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IG9iamVjdCB3aXRoIGdlbmVyYXRlZCBwdWIgYW5kIHBydlxuICAgKi9cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBBdmF4cExpYi5LZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBBdmF4cExpYi5LZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuXG4gICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHBydiBpbiBrZXkgZ2VuZXJhdGlvbi4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiBrZXlzLnB1YixcbiAgICAgIHBydjoga2V5cy5wcnYsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgdmFsaWQgcHVibGljIGtleSBmb3IgdGhlIGNvaW5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YiB0aGUgcHJ2IHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMgaXMgaXQgdmFsaWQ/XG4gICAqL1xuICBpc1ZhbGlkUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBBdmF4cExpYi5LZXlQYWlyKHsgcHViIH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgdmFsaWQgcHJpdmF0ZSBrZXkgZm9yIHRoZSBjb2luXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgdGhlIHBydiB0byBiZSBjaGVja2VkXG4gICAqIEByZXR1cm5zIGlzIGl0IHZhbGlkP1xuICAgKi9cbiAgaXNWYWxpZFBydihwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgQXZheHBMaWIuS2V5UGFpcih7IHBydiB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGlmIChhZGRyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSBldGggYWRkcmVzcyBmb3IgY3Jvc3MtY2hhaW4gdHhzIHRvIGMtY2hhaW5cbiAgICBpZiAodHlwZW9mIGFkZHJlc3MgPT09ICdzdHJpbmcnICYmIGlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gQXZheHBMaWIuVXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgQXZheHAgdHJhbnNhY3Rpb25cbiAgICovXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IEF2YXhwU2lnblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICAvLyBkZXNlcmlhbGl6ZSByYXcgdHJhbnNhY3Rpb24gKG5vdGU6IGZyb21BZGRyZXNzIGhhcyBvbmNoYWluIG9yZGVyKVxuICAgIGNvbnN0IHR4QnVpbGRlciA9IHRoaXMuZ2V0QnVpbGRlcigpLmZyb20ocGFyYW1zLnR4UHJlYnVpbGQudHhIZXgpO1xuICAgIGNvbnN0IGtleSA9IHBhcmFtcy5wcnY7XG5cbiAgICAvLyBwdXNoIHRoZSBrZXlwYWlyIHRvIHNpZ25lciBhcnJheVxuICAgIHR4QnVpbGRlci5zaWduKHsga2V5IH0pO1xuXG4gICAgLy8gYnVpbGQgdGhlIHRyYW5zYWN0aW9uXG4gICAgY29uc3QgdHJhbnNhY3Rpb246IEJhc2VUcmFuc2FjdGlvbiA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGJ1aWxkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5zaWduYXR1cmUubGVuZ3RoID49IDJcbiAgICAgID8geyB0eEhleDogdHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKSB9XG4gICAgICA6IHsgaGFsZlNpZ25lZDogeyB0eEhleDogdHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKSB9IH07XG4gIH1cblxuICBhc3luYyBmZWVFc3RpbWF0ZShwYXJhbXM6IEZlZUVzdGltYXRlT3B0aW9ucyk6IFByb21pc2U8VHJhbnNhY3Rpb25GZWU+IHtcbiAgICAvLyBzdGFraW5nIHRyYW5zYWN0aW9ucyBhcmUgZmVlLWxlc3NcbiAgICByZXR1cm4geyBmZWU6ICcwJyB9O1xuICB9XG5cbiAgYXN5bmMgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWluIGEgQXZheHAgdHJhbnNhY3Rpb24gZnJvbSB0eEhleFxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKi9cbiAgYXN5bmMgZXhwbGFpblRyYW5zYWN0aW9uKHBhcmFtczogRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8QXZheHBMaWIuVHJhbnNhY3Rpb25FeHBsYW5hdGlvbj4ge1xuICAgIGNvbnN0IHR4SGV4ID0gcGFyYW1zLnR4SGV4ID8/IHBhcmFtcz8uaGFsZlNpZ25lZD8udHhIZXg7XG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHRyYW5zYWN0aW9uIGhleCcpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gdGhpcy5nZXRCdWlsZGVyKCkuZnJvbSh0eEhleCk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgcmV0dXJuIHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0cmFuc2FjdGlvbjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVjb3ZlcnlTaWduYXR1cmUobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEF2YXhwTGliLlV0aWxzLnJlY292ZXJ5U2lnbmF0dXJlKHRoaXMuX3N0YXRpY3NDb2luLm5ldHdvcmsgYXMgQXZhbGFuY2hlTmV0d29yaywgbWVzc2FnZSwgc2lnbmF0dXJlKTtcbiAgfVxuXG4gIGFzeW5jIHNpZ25NZXNzYWdlKGtleTogS2V5UGFpciwgbWVzc2FnZTogc3RyaW5nIHwgQnVmZmVyKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBjb25zdCBwcnYgPSBuZXcgQXZheHBMaWIuS2V5UGFpcihrZXkpLmdldFByaXZhdGVLZXkoKTtcbiAgICBpZiAoIXBydikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignSW52YWxpZCBrZXkgcGFpciBvcHRpb25zJyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG1lc3NhZ2UgPSBCdWZmZXIuZnJvbShtZXNzYWdlLCAnaGV4Jyk7XG4gICAgfVxuICAgIHJldHVybiBBdmF4cExpYi5VdGlscy5jcmVhdGVTaWduYXR1cmUodGhpcy5fc3RhdGljc0NvaW4ubmV0d29yayBhcyBBdmFsYW5jaGVOZXR3b3JrLCBtZXNzYWdlLCBwcnYpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyKCk6IEF2YXhwTGliLlRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgQXZheHBMaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cbn1cbiJdfQ==
@@ -33,10 +33,6 @@ export interface AvaxpTransactionParams extends TransactionParams {
33
33
  type: string;
34
34
  stakingOptions: AvaxpTransactionStakingOptions;
35
35
  locktime?: number;
36
- memo?: {
37
- type?: string;
38
- value: string;
39
- };
40
36
  unspents?: string[];
41
37
  sourceChain?: string;
42
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../src/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,IAAI,uBAAuB,EAC9C,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,2BAA4B,SAAQ,sBAAsB;IACzE,UAAU,EAAE,mBAAmB,CAAC;IAChC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AACD,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AACD,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,8BAA8B,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,6BAA8B,SAAQ,wBAAwB;IAC7E,QAAQ,EAAE,sBAAsB,CAAC;CAClC"}
1
+ {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../src/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,IAAI,uBAAuB,EAC9C,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,2BAA4B,SAAQ,sBAAsB;IACzE,UAAU,EAAE,mBAAmB,CAAC;IAChC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AACD,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AACD,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,8BAA8B,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,6BAA8B,SAAQ,wBAAwB;IAC7E,QAAQ,EAAE,sBAAsB,CAAC;CAClC"}
package/dist/src/iface.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uUHJlYnVpbGQgYXMgQmFzZVRyYW5zYWN0aW9uUHJlYnVpbGQsXG4gIFRyYW5zYWN0aW9uUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvbkZlZSxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvblBhcmFtcyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5leHBvcnQgeyBUcmFuc2FjdGlvbkZlZSB9O1xuZXhwb3J0IGludGVyZmFjZSBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhIZXg/OiBzdHJpbmc7XG4gIGhhbGZTaWduZWQ/OiB7XG4gICAgdHhIZXg6IHN0cmluZztcbiAgfTtcbiAgcHVibGljS2V5cz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR4SW5mbyB7XG4gIHJlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIGZyb206IHN0cmluZztcbiAgdHhpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF2YXhwU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xuICBwcnY6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBwdWJLZXlzPzogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uUHJlYnVpbGQgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25QcmVidWlsZCB7XG4gIHR4SGV4OiBzdHJpbmc7XG4gIHR4SW5mbzogVHhJbmZvO1xuICBzb3VyY2U6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXZheHBUcmFuc2FjdGlvblN0YWtpbmdPcHRpb25zIHtcbiAgc3RhcnRUaW1lOiBzdHJpbmc7XG4gIGVuZFRpbWU6IHN0cmluZztcbiAgbm9kZUlEOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xuICBkZWxlZ2F0aW9uRmVlUmF0ZT86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXZheHBUcmFuc2FjdGlvblBhcmFtcyBleHRlbmRzIFRyYW5zYWN0aW9uUGFyYW1zIHtcbiAgdHlwZTogc3RyaW5nO1xuICBzdGFraW5nT3B0aW9uczogQXZheHBUcmFuc2FjdGlvblN0YWtpbmdPcHRpb25zO1xuICBsb2NrdGltZT86IG51bWJlcjtcbiAgbWVtbz86IHtcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIHVuc3BlbnRzPzogc3RyaW5nW107XG4gIHNvdXJjZUNoYWluPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF2YXhwVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQYXJhbXM6IEF2YXhwVHJhbnNhY3Rpb25QYXJhbXM7XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uUHJlYnVpbGQgYXMgQmFzZVRyYW5zYWN0aW9uUHJlYnVpbGQsXG4gIFRyYW5zYWN0aW9uUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvbkZlZSxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvblBhcmFtcyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5leHBvcnQgeyBUcmFuc2FjdGlvbkZlZSB9O1xuZXhwb3J0IGludGVyZmFjZSBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhIZXg/OiBzdHJpbmc7XG4gIGhhbGZTaWduZWQ/OiB7XG4gICAgdHhIZXg6IHN0cmluZztcbiAgfTtcbiAgcHVibGljS2V5cz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR4SW5mbyB7XG4gIHJlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIGZyb206IHN0cmluZztcbiAgdHhpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF2YXhwU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xuICBwcnY6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBwdWJLZXlzPzogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uUHJlYnVpbGQgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25QcmVidWlsZCB7XG4gIHR4SGV4OiBzdHJpbmc7XG4gIHR4SW5mbzogVHhJbmZvO1xuICBzb3VyY2U6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXZheHBUcmFuc2FjdGlvblN0YWtpbmdPcHRpb25zIHtcbiAgc3RhcnRUaW1lOiBzdHJpbmc7XG4gIGVuZFRpbWU6IHN0cmluZztcbiAgbm9kZUlEOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xuICBkZWxlZ2F0aW9uRmVlUmF0ZT86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXZheHBUcmFuc2FjdGlvblBhcmFtcyBleHRlbmRzIFRyYW5zYWN0aW9uUGFyYW1zIHtcbiAgdHlwZTogc3RyaW5nO1xuICBzdGFraW5nT3B0aW9uczogQXZheHBUcmFuc2FjdGlvblN0YWtpbmdPcHRpb25zO1xuICBsb2NrdGltZT86IG51bWJlcjtcbiAgdW5zcGVudHM/OiBzdHJpbmdbXTtcbiAgc291cmNlQ2hhaW4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXZheHBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMgZXh0ZW5kcyBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFBhcmFtczogQXZheHBUcmFuc2FjdGlvblBhcmFtcztcbn1cbiJdfQ==