@xccy/ts-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2590 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import {
5
+ Contract,
6
+ ContractFactory,
7
+ ContractTransactionResponse,
8
+ Interface,
9
+ } from "ethers";
10
+ import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers";
11
+ import type { NonPayableOverrides } from "../common";
12
+ import type {
13
+ CollateralEngine,
14
+ CollateralEngineInterface,
15
+ } from "../CollateralEngine";
16
+
17
+ const _abi = [
18
+ {
19
+ type: "constructor",
20
+ inputs: [],
21
+ stateMutability: "nonpayable",
22
+ },
23
+ {
24
+ type: "function",
25
+ name: "acceptOwnership",
26
+ inputs: [],
27
+ outputs: [],
28
+ stateMutability: "nonpayable",
29
+ },
30
+ {
31
+ type: "function",
32
+ name: "aprOracle",
33
+ inputs: [],
34
+ outputs: [
35
+ {
36
+ name: "",
37
+ type: "address",
38
+ internalType: "contract IAprOracle",
39
+ },
40
+ ],
41
+ stateMutability: "view",
42
+ },
43
+ {
44
+ type: "function",
45
+ name: "calculateAccountObligation",
46
+ inputs: [
47
+ {
48
+ name: "account",
49
+ type: "tuple",
50
+ internalType: "struct Account.AccountId",
51
+ components: [
52
+ {
53
+ name: "owner",
54
+ type: "address",
55
+ internalType: "address",
56
+ },
57
+ {
58
+ name: "id",
59
+ type: "uint96",
60
+ internalType: "uint96",
61
+ },
62
+ {
63
+ name: "isolatedMarginToken",
64
+ type: "address",
65
+ internalType: "address",
66
+ },
67
+ ],
68
+ },
69
+ {
70
+ name: "includePositionsGrowth",
71
+ type: "bool",
72
+ internalType: "bool",
73
+ },
74
+ ],
75
+ outputs: [
76
+ {
77
+ name: "usdObligations",
78
+ type: "uint256",
79
+ internalType: "uint256",
80
+ },
81
+ ],
82
+ stateMutability: "view",
83
+ },
84
+ {
85
+ type: "function",
86
+ name: "calculateAccountObligation",
87
+ inputs: [
88
+ {
89
+ name: "account",
90
+ type: "tuple",
91
+ internalType: "struct Account.AccountId",
92
+ components: [
93
+ {
94
+ name: "owner",
95
+ type: "address",
96
+ internalType: "address",
97
+ },
98
+ {
99
+ name: "id",
100
+ type: "uint96",
101
+ internalType: "uint96",
102
+ },
103
+ {
104
+ name: "isolatedMarginToken",
105
+ type: "address",
106
+ internalType: "address",
107
+ },
108
+ ],
109
+ },
110
+ ],
111
+ outputs: [
112
+ {
113
+ name: "usdObligations",
114
+ type: "uint256",
115
+ internalType: "uint256",
116
+ },
117
+ ],
118
+ stateMutability: "view",
119
+ },
120
+ {
121
+ type: "function",
122
+ name: "calculateLiquidationAmounts",
123
+ inputs: [
124
+ {
125
+ name: "poolKey",
126
+ type: "tuple",
127
+ internalType: "struct PoolKey.Key",
128
+ components: [
129
+ {
130
+ name: "underlyingAsset",
131
+ type: "address",
132
+ internalType: "address",
133
+ },
134
+ {
135
+ name: "compoundToken",
136
+ type: "address",
137
+ internalType: "address",
138
+ },
139
+ {
140
+ name: "termStartTimestampWad",
141
+ type: "uint256",
142
+ internalType: "uint256",
143
+ },
144
+ {
145
+ name: "termEndTimestampWad",
146
+ type: "uint256",
147
+ internalType: "uint256",
148
+ },
149
+ {
150
+ name: "feeWad",
151
+ type: "uint256",
152
+ internalType: "uint256",
153
+ },
154
+ {
155
+ name: "tickSpacing",
156
+ type: "int24",
157
+ internalType: "int24",
158
+ },
159
+ ],
160
+ },
161
+ {
162
+ name: "fixedBalance",
163
+ type: "int256",
164
+ internalType: "int256",
165
+ },
166
+ {
167
+ name: "collateralAssetToTake",
168
+ type: "address",
169
+ internalType: "address",
170
+ },
171
+ {
172
+ name: "debtToCover",
173
+ type: "uint256",
174
+ internalType: "uint256",
175
+ },
176
+ {
177
+ name: "collateralUserBalance",
178
+ type: "uint256",
179
+ internalType: "uint256",
180
+ },
181
+ ],
182
+ outputs: [
183
+ {
184
+ name: "collateralToSeize",
185
+ type: "uint256",
186
+ internalType: "uint256",
187
+ },
188
+ {
189
+ name: "effectiveDebt",
190
+ type: "uint256",
191
+ internalType: "uint256",
192
+ },
193
+ {
194
+ name: "fixedCovered",
195
+ type: "uint256",
196
+ internalType: "uint256",
197
+ },
198
+ ],
199
+ stateMutability: "view",
200
+ },
201
+ {
202
+ type: "function",
203
+ name: "checkMarginRequirement",
204
+ inputs: [
205
+ {
206
+ name: "account",
207
+ type: "tuple",
208
+ internalType: "struct Account.AccountId",
209
+ components: [
210
+ {
211
+ name: "owner",
212
+ type: "address",
213
+ internalType: "address",
214
+ },
215
+ {
216
+ name: "id",
217
+ type: "uint96",
218
+ internalType: "uint96",
219
+ },
220
+ {
221
+ name: "isolatedMarginToken",
222
+ type: "address",
223
+ internalType: "address",
224
+ },
225
+ ],
226
+ },
227
+ ],
228
+ outputs: [
229
+ {
230
+ name: "positionMarginRequirement",
231
+ type: "uint256",
232
+ internalType: "uint256",
233
+ },
234
+ ],
235
+ stateMutability: "nonpayable",
236
+ },
237
+ {
238
+ type: "function",
239
+ name: "dustThresholdWad",
240
+ inputs: [],
241
+ outputs: [
242
+ {
243
+ name: "",
244
+ type: "uint256",
245
+ internalType: "uint256",
246
+ },
247
+ ],
248
+ stateMutability: "view",
249
+ },
250
+ {
251
+ type: "function",
252
+ name: "eliminateDeficit",
253
+ inputs: [
254
+ {
255
+ name: "token",
256
+ type: "address",
257
+ internalType: "address",
258
+ },
259
+ {
260
+ name: "amount",
261
+ type: "uint256",
262
+ internalType: "uint256",
263
+ },
264
+ ],
265
+ outputs: [],
266
+ stateMutability: "nonpayable",
267
+ },
268
+ {
269
+ type: "function",
270
+ name: "esm",
271
+ inputs: [],
272
+ outputs: [
273
+ {
274
+ name: "",
275
+ type: "address",
276
+ internalType: "address",
277
+ },
278
+ ],
279
+ stateMutability: "view",
280
+ },
281
+ {
282
+ type: "function",
283
+ name: "executeEarlySettlement",
284
+ inputs: [
285
+ {
286
+ name: "account",
287
+ type: "tuple",
288
+ internalType: "struct Account.AccountId",
289
+ components: [
290
+ {
291
+ name: "owner",
292
+ type: "address",
293
+ internalType: "address",
294
+ },
295
+ {
296
+ name: "id",
297
+ type: "uint96",
298
+ internalType: "uint96",
299
+ },
300
+ {
301
+ name: "isolatedMarginToken",
302
+ type: "address",
303
+ internalType: "address",
304
+ },
305
+ ],
306
+ },
307
+ {
308
+ name: "poolId",
309
+ type: "bytes32",
310
+ internalType: "bytes32",
311
+ },
312
+ {
313
+ name: "tickLower",
314
+ type: "int24",
315
+ internalType: "int24",
316
+ },
317
+ {
318
+ name: "tickUpper",
319
+ type: "int24",
320
+ internalType: "int24",
321
+ },
322
+ {
323
+ name: "amountDelta",
324
+ type: "int256",
325
+ internalType: "int256",
326
+ },
327
+ ],
328
+ outputs: [],
329
+ stateMutability: "nonpayable",
330
+ },
331
+ {
332
+ type: "function",
333
+ name: "getAccountBalance",
334
+ inputs: [
335
+ {
336
+ name: "account",
337
+ type: "tuple",
338
+ internalType: "struct Account.AccountId",
339
+ components: [
340
+ {
341
+ name: "owner",
342
+ type: "address",
343
+ internalType: "address",
344
+ },
345
+ {
346
+ name: "id",
347
+ type: "uint96",
348
+ internalType: "uint96",
349
+ },
350
+ {
351
+ name: "isolatedMarginToken",
352
+ type: "address",
353
+ internalType: "address",
354
+ },
355
+ ],
356
+ },
357
+ {
358
+ name: "token",
359
+ type: "address",
360
+ internalType: "address",
361
+ },
362
+ ],
363
+ outputs: [
364
+ {
365
+ name: "balance",
366
+ type: "uint256",
367
+ internalType: "uint256",
368
+ },
369
+ ],
370
+ stateMutability: "view",
371
+ },
372
+ {
373
+ type: "function",
374
+ name: "getAccountMarginValues",
375
+ inputs: [
376
+ {
377
+ name: "account",
378
+ type: "tuple",
379
+ internalType: "struct Account.AccountId",
380
+ components: [
381
+ {
382
+ name: "owner",
383
+ type: "address",
384
+ internalType: "address",
385
+ },
386
+ {
387
+ name: "id",
388
+ type: "uint96",
389
+ internalType: "uint96",
390
+ },
391
+ {
392
+ name: "isolatedMarginToken",
393
+ type: "address",
394
+ internalType: "address",
395
+ },
396
+ ],
397
+ },
398
+ ],
399
+ outputs: [
400
+ {
401
+ name: "avgLtv",
402
+ type: "uint256",
403
+ internalType: "uint256",
404
+ },
405
+ {
406
+ name: "avgLiquidationThreshold",
407
+ type: "uint256",
408
+ internalType: "uint256",
409
+ },
410
+ {
411
+ name: "totalRawValueWad",
412
+ type: "uint256",
413
+ internalType: "uint256",
414
+ },
415
+ ],
416
+ stateMutability: "view",
417
+ },
418
+ {
419
+ type: "function",
420
+ name: "getMarginAssetConfig",
421
+ inputs: [
422
+ {
423
+ name: "token",
424
+ type: "address",
425
+ internalType: "address",
426
+ },
427
+ ],
428
+ outputs: [
429
+ {
430
+ name: "config",
431
+ type: "tuple",
432
+ internalType: "struct CollateralEngineStorage.AssetConfig",
433
+ components: [
434
+ {
435
+ name: "ltvWad",
436
+ type: "uint256",
437
+ internalType: "uint256",
438
+ },
439
+ {
440
+ name: "liquidationThresholdWad",
441
+ type: "uint256",
442
+ internalType: "uint256",
443
+ },
444
+ {
445
+ name: "autoExchangeBonusWad",
446
+ type: "uint256",
447
+ internalType: "uint256",
448
+ },
449
+ ],
450
+ },
451
+ ],
452
+ stateMutability: "view",
453
+ },
454
+ {
455
+ type: "function",
456
+ name: "getPoolKey",
457
+ inputs: [
458
+ {
459
+ name: "poolId",
460
+ type: "bytes32",
461
+ internalType: "bytes32",
462
+ },
463
+ ],
464
+ outputs: [
465
+ {
466
+ name: "poolKey",
467
+ type: "tuple",
468
+ internalType: "struct PoolKey.Key",
469
+ components: [
470
+ {
471
+ name: "underlyingAsset",
472
+ type: "address",
473
+ internalType: "address",
474
+ },
475
+ {
476
+ name: "compoundToken",
477
+ type: "address",
478
+ internalType: "address",
479
+ },
480
+ {
481
+ name: "termStartTimestampWad",
482
+ type: "uint256",
483
+ internalType: "uint256",
484
+ },
485
+ {
486
+ name: "termEndTimestampWad",
487
+ type: "uint256",
488
+ internalType: "uint256",
489
+ },
490
+ {
491
+ name: "feeWad",
492
+ type: "uint256",
493
+ internalType: "uint256",
494
+ },
495
+ {
496
+ name: "tickSpacing",
497
+ type: "int24",
498
+ internalType: "int24",
499
+ },
500
+ ],
501
+ },
502
+ ],
503
+ stateMutability: "view",
504
+ },
505
+ {
506
+ type: "function",
507
+ name: "getPositionInfo",
508
+ inputs: [
509
+ {
510
+ name: "account",
511
+ type: "tuple",
512
+ internalType: "struct Account.AccountId",
513
+ components: [
514
+ {
515
+ name: "owner",
516
+ type: "address",
517
+ internalType: "address",
518
+ },
519
+ {
520
+ name: "id",
521
+ type: "uint96",
522
+ internalType: "uint96",
523
+ },
524
+ {
525
+ name: "isolatedMarginToken",
526
+ type: "address",
527
+ internalType: "address",
528
+ },
529
+ ],
530
+ },
531
+ {
532
+ name: "poolId",
533
+ type: "bytes32",
534
+ internalType: "bytes32",
535
+ },
536
+ {
537
+ name: "tickLower",
538
+ type: "int24",
539
+ internalType: "int24",
540
+ },
541
+ {
542
+ name: "tickUpper",
543
+ type: "int24",
544
+ internalType: "int24",
545
+ },
546
+ ],
547
+ outputs: [
548
+ {
549
+ name: "position",
550
+ type: "tuple",
551
+ internalType: "struct Position.Info",
552
+ components: [
553
+ {
554
+ name: "_liquidity",
555
+ type: "uint128",
556
+ internalType: "uint128",
557
+ },
558
+ {
559
+ name: "fixedTokenGrowthInsideLastX128",
560
+ type: "int256",
561
+ internalType: "int256",
562
+ },
563
+ {
564
+ name: "variableTokenGrowthInsideLastX128",
565
+ type: "int256",
566
+ internalType: "int256",
567
+ },
568
+ {
569
+ name: "fixedTokenBalance",
570
+ type: "int256",
571
+ internalType: "int256",
572
+ },
573
+ {
574
+ name: "variableTokenBalance",
575
+ type: "int256",
576
+ internalType: "int256",
577
+ },
578
+ {
579
+ name: "tradedNotional",
580
+ type: "int256",
581
+ internalType: "int256",
582
+ },
583
+ {
584
+ name: "lpLockedUnwindFee",
585
+ type: "int256",
586
+ internalType: "int256",
587
+ },
588
+ {
589
+ name: "accumulatedFees",
590
+ type: "uint256",
591
+ internalType: "uint256",
592
+ },
593
+ ],
594
+ },
595
+ ],
596
+ stateMutability: "view",
597
+ },
598
+ {
599
+ type: "function",
600
+ name: "getTokenDeficit",
601
+ inputs: [
602
+ {
603
+ name: "token",
604
+ type: "address",
605
+ internalType: "address",
606
+ },
607
+ ],
608
+ outputs: [
609
+ {
610
+ name: "deficit",
611
+ type: "uint256",
612
+ internalType: "uint256",
613
+ },
614
+ ],
615
+ stateMutability: "view",
616
+ },
617
+ {
618
+ type: "function",
619
+ name: "initialize",
620
+ inputs: [
621
+ {
622
+ name: "__oracleHub",
623
+ type: "address",
624
+ internalType: "contract IOracleHub",
625
+ },
626
+ {
627
+ name: "__aprOracle",
628
+ type: "address",
629
+ internalType: "contract IAprOracle",
630
+ },
631
+ ],
632
+ outputs: [],
633
+ stateMutability: "nonpayable",
634
+ },
635
+ {
636
+ type: "function",
637
+ name: "isAccountOperator",
638
+ inputs: [
639
+ {
640
+ name: "accountOwner",
641
+ type: "address",
642
+ internalType: "address",
643
+ },
644
+ {
645
+ name: "operator",
646
+ type: "address",
647
+ internalType: "address",
648
+ },
649
+ ],
650
+ outputs: [
651
+ {
652
+ name: "",
653
+ type: "bool",
654
+ internalType: "bool",
655
+ },
656
+ ],
657
+ stateMutability: "view",
658
+ },
659
+ {
660
+ type: "function",
661
+ name: "liquidatePosition",
662
+ inputs: [
663
+ {
664
+ name: "account",
665
+ type: "tuple",
666
+ internalType: "struct Account.AccountId",
667
+ components: [
668
+ {
669
+ name: "owner",
670
+ type: "address",
671
+ internalType: "address",
672
+ },
673
+ {
674
+ name: "id",
675
+ type: "uint96",
676
+ internalType: "uint96",
677
+ },
678
+ {
679
+ name: "isolatedMarginToken",
680
+ type: "address",
681
+ internalType: "address",
682
+ },
683
+ ],
684
+ },
685
+ {
686
+ name: "poolId",
687
+ type: "bytes32",
688
+ internalType: "bytes32",
689
+ },
690
+ {
691
+ name: "tickLower",
692
+ type: "int24",
693
+ internalType: "int24",
694
+ },
695
+ {
696
+ name: "tickUpper",
697
+ type: "int24",
698
+ internalType: "int24",
699
+ },
700
+ {
701
+ name: "collateralAssetToTake",
702
+ type: "address",
703
+ internalType: "address",
704
+ },
705
+ {
706
+ name: "debtToCover",
707
+ type: "uint256",
708
+ internalType: "uint256",
709
+ },
710
+ ],
711
+ outputs: [
712
+ {
713
+ name: "collateralSeized",
714
+ type: "uint256",
715
+ internalType: "uint256",
716
+ },
717
+ {
718
+ name: "effectiveDebtCovered",
719
+ type: "uint256",
720
+ internalType: "uint256",
721
+ },
722
+ {
723
+ name: "fixedCovered",
724
+ type: "uint256",
725
+ internalType: "uint256",
726
+ },
727
+ ],
728
+ stateMutability: "nonpayable",
729
+ },
730
+ {
731
+ type: "function",
732
+ name: "oracleHub",
733
+ inputs: [],
734
+ outputs: [
735
+ {
736
+ name: "",
737
+ type: "address",
738
+ internalType: "contract IOracleHub",
739
+ },
740
+ ],
741
+ stateMutability: "view",
742
+ },
743
+ {
744
+ type: "function",
745
+ name: "owner",
746
+ inputs: [],
747
+ outputs: [
748
+ {
749
+ name: "",
750
+ type: "address",
751
+ internalType: "address",
752
+ },
753
+ ],
754
+ stateMutability: "view",
755
+ },
756
+ {
757
+ type: "function",
758
+ name: "pendingOwner",
759
+ inputs: [],
760
+ outputs: [
761
+ {
762
+ name: "",
763
+ type: "address",
764
+ internalType: "address",
765
+ },
766
+ ],
767
+ stateMutability: "view",
768
+ },
769
+ {
770
+ type: "function",
771
+ name: "previewPositionBalances",
772
+ inputs: [
773
+ {
774
+ name: "account",
775
+ type: "tuple",
776
+ internalType: "struct Account.AccountId",
777
+ components: [
778
+ {
779
+ name: "owner",
780
+ type: "address",
781
+ internalType: "address",
782
+ },
783
+ {
784
+ name: "id",
785
+ type: "uint96",
786
+ internalType: "uint96",
787
+ },
788
+ {
789
+ name: "isolatedMarginToken",
790
+ type: "address",
791
+ internalType: "address",
792
+ },
793
+ ],
794
+ },
795
+ {
796
+ name: "poolId",
797
+ type: "bytes32",
798
+ internalType: "bytes32",
799
+ },
800
+ {
801
+ name: "tickLower",
802
+ type: "int24",
803
+ internalType: "int24",
804
+ },
805
+ {
806
+ name: "tickUpper",
807
+ type: "int24",
808
+ internalType: "int24",
809
+ },
810
+ ],
811
+ outputs: [
812
+ {
813
+ name: "fixedTokenBalance",
814
+ type: "int256",
815
+ internalType: "int256",
816
+ },
817
+ {
818
+ name: "variableTokenBalance",
819
+ type: "int256",
820
+ internalType: "int256",
821
+ },
822
+ ],
823
+ stateMutability: "view",
824
+ },
825
+ {
826
+ type: "function",
827
+ name: "renounceOwnership",
828
+ inputs: [],
829
+ outputs: [],
830
+ stateMutability: "nonpayable",
831
+ },
832
+ {
833
+ type: "function",
834
+ name: "setAccountOperator",
835
+ inputs: [
836
+ {
837
+ name: "owner",
838
+ type: "address",
839
+ internalType: "address",
840
+ },
841
+ {
842
+ name: "operator",
843
+ type: "address",
844
+ internalType: "address",
845
+ },
846
+ {
847
+ name: "approved",
848
+ type: "bool",
849
+ internalType: "bool",
850
+ },
851
+ ],
852
+ outputs: [],
853
+ stateMutability: "nonpayable",
854
+ },
855
+ {
856
+ type: "function",
857
+ name: "setAprOracle",
858
+ inputs: [
859
+ {
860
+ name: "__aprOracle",
861
+ type: "address",
862
+ internalType: "contract IAprOracle",
863
+ },
864
+ ],
865
+ outputs: [],
866
+ stateMutability: "nonpayable",
867
+ },
868
+ {
869
+ type: "function",
870
+ name: "setDustThreshold",
871
+ inputs: [
872
+ {
873
+ name: "_dustThresholdWad",
874
+ type: "uint256",
875
+ internalType: "uint256",
876
+ },
877
+ ],
878
+ outputs: [],
879
+ stateMutability: "nonpayable",
880
+ },
881
+ {
882
+ type: "function",
883
+ name: "setESM",
884
+ inputs: [
885
+ {
886
+ name: "_esm",
887
+ type: "address",
888
+ internalType: "address",
889
+ },
890
+ ],
891
+ outputs: [],
892
+ stateMutability: "nonpayable",
893
+ },
894
+ {
895
+ type: "function",
896
+ name: "setMarginAssetConfig",
897
+ inputs: [
898
+ {
899
+ name: "token",
900
+ type: "address",
901
+ internalType: "address",
902
+ },
903
+ {
904
+ name: "ltvWad",
905
+ type: "uint256",
906
+ internalType: "uint256",
907
+ },
908
+ {
909
+ name: "liquidationThresholdWad",
910
+ type: "uint256",
911
+ internalType: "uint256",
912
+ },
913
+ {
914
+ name: "autoExchangeBonusWad",
915
+ type: "uint256",
916
+ internalType: "uint256",
917
+ },
918
+ ],
919
+ outputs: [],
920
+ stateMutability: "nonpayable",
921
+ },
922
+ {
923
+ type: "function",
924
+ name: "setOracleHub",
925
+ inputs: [
926
+ {
927
+ name: "__oracleHub",
928
+ type: "address",
929
+ internalType: "contract IOracleHub",
930
+ },
931
+ ],
932
+ outputs: [],
933
+ stateMutability: "nonpayable",
934
+ },
935
+ {
936
+ type: "function",
937
+ name: "setVAMMManager",
938
+ inputs: [
939
+ {
940
+ name: "_vammManager",
941
+ type: "address",
942
+ internalType: "contract IVAMMManager",
943
+ },
944
+ ],
945
+ outputs: [],
946
+ stateMutability: "nonpayable",
947
+ },
948
+ {
949
+ type: "function",
950
+ name: "setWorstCaseVariableFactor",
951
+ inputs: [
952
+ {
953
+ name: "poolId",
954
+ type: "bytes32",
955
+ internalType: "bytes32",
956
+ },
957
+ {
958
+ name: "worstCaseVariableFactorPositiveWad",
959
+ type: "uint256",
960
+ internalType: "uint256",
961
+ },
962
+ {
963
+ name: "worstCaseVariableFactorNegativeWad",
964
+ type: "uint256",
965
+ internalType: "uint256",
966
+ },
967
+ ],
968
+ outputs: [],
969
+ stateMutability: "nonpayable",
970
+ },
971
+ {
972
+ type: "function",
973
+ name: "settlePosition",
974
+ inputs: [
975
+ {
976
+ name: "account",
977
+ type: "tuple",
978
+ internalType: "struct Account.AccountId",
979
+ components: [
980
+ {
981
+ name: "owner",
982
+ type: "address",
983
+ internalType: "address",
984
+ },
985
+ {
986
+ name: "id",
987
+ type: "uint96",
988
+ internalType: "uint96",
989
+ },
990
+ {
991
+ name: "isolatedMarginToken",
992
+ type: "address",
993
+ internalType: "address",
994
+ },
995
+ ],
996
+ },
997
+ {
998
+ name: "poolKey",
999
+ type: "tuple",
1000
+ internalType: "struct PoolKey.Key",
1001
+ components: [
1002
+ {
1003
+ name: "underlyingAsset",
1004
+ type: "address",
1005
+ internalType: "address",
1006
+ },
1007
+ {
1008
+ name: "compoundToken",
1009
+ type: "address",
1010
+ internalType: "address",
1011
+ },
1012
+ {
1013
+ name: "termStartTimestampWad",
1014
+ type: "uint256",
1015
+ internalType: "uint256",
1016
+ },
1017
+ {
1018
+ name: "termEndTimestampWad",
1019
+ type: "uint256",
1020
+ internalType: "uint256",
1021
+ },
1022
+ {
1023
+ name: "feeWad",
1024
+ type: "uint256",
1025
+ internalType: "uint256",
1026
+ },
1027
+ {
1028
+ name: "tickSpacing",
1029
+ type: "int24",
1030
+ internalType: "int24",
1031
+ },
1032
+ ],
1033
+ },
1034
+ {
1035
+ name: "settlerAssetOrder",
1036
+ type: "address[]",
1037
+ internalType: "address[]",
1038
+ },
1039
+ ],
1040
+ outputs: [],
1041
+ stateMutability: "nonpayable",
1042
+ },
1043
+ {
1044
+ type: "function",
1045
+ name: "transferOwnership",
1046
+ inputs: [
1047
+ {
1048
+ name: "newOwner",
1049
+ type: "address",
1050
+ internalType: "address",
1051
+ },
1052
+ ],
1053
+ outputs: [],
1054
+ stateMutability: "nonpayable",
1055
+ },
1056
+ {
1057
+ type: "function",
1058
+ name: "updateAccountMargin",
1059
+ inputs: [
1060
+ {
1061
+ name: "account",
1062
+ type: "tuple",
1063
+ internalType: "struct Account.AccountId",
1064
+ components: [
1065
+ {
1066
+ name: "owner",
1067
+ type: "address",
1068
+ internalType: "address",
1069
+ },
1070
+ {
1071
+ name: "id",
1072
+ type: "uint96",
1073
+ internalType: "uint96",
1074
+ },
1075
+ {
1076
+ name: "isolatedMarginToken",
1077
+ type: "address",
1078
+ internalType: "address",
1079
+ },
1080
+ ],
1081
+ },
1082
+ {
1083
+ name: "token",
1084
+ type: "address",
1085
+ internalType: "address",
1086
+ },
1087
+ {
1088
+ name: "marginDelta",
1089
+ type: "int256",
1090
+ internalType: "int256",
1091
+ },
1092
+ ],
1093
+ outputs: [],
1094
+ stateMutability: "nonpayable",
1095
+ },
1096
+ {
1097
+ type: "function",
1098
+ name: "updatePositionPostVAMMAction",
1099
+ inputs: [
1100
+ {
1101
+ name: "params",
1102
+ type: "tuple",
1103
+ internalType: "struct ICollateralEngine.UpdatePositionParams",
1104
+ components: [
1105
+ {
1106
+ name: "poolKey",
1107
+ type: "tuple",
1108
+ internalType: "struct PoolKey.Key",
1109
+ components: [
1110
+ {
1111
+ name: "underlyingAsset",
1112
+ type: "address",
1113
+ internalType: "address",
1114
+ },
1115
+ {
1116
+ name: "compoundToken",
1117
+ type: "address",
1118
+ internalType: "address",
1119
+ },
1120
+ {
1121
+ name: "termStartTimestampWad",
1122
+ type: "uint256",
1123
+ internalType: "uint256",
1124
+ },
1125
+ {
1126
+ name: "termEndTimestampWad",
1127
+ type: "uint256",
1128
+ internalType: "uint256",
1129
+ },
1130
+ {
1131
+ name: "feeWad",
1132
+ type: "uint256",
1133
+ internalType: "uint256",
1134
+ },
1135
+ {
1136
+ name: "tickSpacing",
1137
+ type: "int24",
1138
+ internalType: "int24",
1139
+ },
1140
+ ],
1141
+ },
1142
+ {
1143
+ name: "account",
1144
+ type: "tuple",
1145
+ internalType: "struct Account.AccountId",
1146
+ components: [
1147
+ {
1148
+ name: "owner",
1149
+ type: "address",
1150
+ internalType: "address",
1151
+ },
1152
+ {
1153
+ name: "id",
1154
+ type: "uint96",
1155
+ internalType: "uint96",
1156
+ },
1157
+ {
1158
+ name: "isolatedMarginToken",
1159
+ type: "address",
1160
+ internalType: "address",
1161
+ },
1162
+ ],
1163
+ },
1164
+ {
1165
+ name: "tickLower",
1166
+ type: "int24",
1167
+ internalType: "int24",
1168
+ },
1169
+ {
1170
+ name: "tickUpper",
1171
+ type: "int24",
1172
+ internalType: "int24",
1173
+ },
1174
+ {
1175
+ name: "liquidityDelta",
1176
+ type: "int128",
1177
+ internalType: "int128",
1178
+ },
1179
+ {
1180
+ name: "fixedTokenDelta",
1181
+ type: "int256",
1182
+ internalType: "int256",
1183
+ },
1184
+ {
1185
+ name: "variableTokenDelta",
1186
+ type: "int256",
1187
+ internalType: "int256",
1188
+ },
1189
+ {
1190
+ name: "fixedTokenGrowthInsideX128",
1191
+ type: "int256",
1192
+ internalType: "int256",
1193
+ },
1194
+ {
1195
+ name: "variableTokenGrowthInsideX128",
1196
+ type: "int256",
1197
+ internalType: "int256",
1198
+ },
1199
+ ],
1200
+ },
1201
+ {
1202
+ name: "isLiquidation",
1203
+ type: "bool",
1204
+ internalType: "bool",
1205
+ },
1206
+ ],
1207
+ outputs: [
1208
+ {
1209
+ name: "feeIncurred",
1210
+ type: "int256",
1211
+ internalType: "int256",
1212
+ },
1213
+ ],
1214
+ stateMutability: "nonpayable",
1215
+ },
1216
+ {
1217
+ type: "function",
1218
+ name: "vammManager",
1219
+ inputs: [],
1220
+ outputs: [
1221
+ {
1222
+ name: "",
1223
+ type: "address",
1224
+ internalType: "contract IVAMMManager",
1225
+ },
1226
+ ],
1227
+ stateMutability: "view",
1228
+ },
1229
+ {
1230
+ type: "event",
1231
+ name: "AccountOperatorUpdate",
1232
+ inputs: [
1233
+ {
1234
+ name: "owner",
1235
+ type: "address",
1236
+ indexed: true,
1237
+ internalType: "address",
1238
+ },
1239
+ {
1240
+ name: "operator",
1241
+ type: "address",
1242
+ indexed: true,
1243
+ internalType: "address",
1244
+ },
1245
+ {
1246
+ name: "approved",
1247
+ type: "bool",
1248
+ indexed: false,
1249
+ internalType: "bool",
1250
+ },
1251
+ ],
1252
+ anonymous: false,
1253
+ },
1254
+ {
1255
+ type: "event",
1256
+ name: "AprOracleSetting",
1257
+ inputs: [
1258
+ {
1259
+ name: "aprOracle",
1260
+ type: "address",
1261
+ indexed: true,
1262
+ internalType: "contract IAprOracle",
1263
+ },
1264
+ ],
1265
+ anonymous: false,
1266
+ },
1267
+ {
1268
+ type: "event",
1269
+ name: "AutoExchange",
1270
+ inputs: [
1271
+ {
1272
+ name: "owner",
1273
+ type: "address",
1274
+ indexed: true,
1275
+ internalType: "address",
1276
+ },
1277
+ {
1278
+ name: "accountId",
1279
+ type: "uint96",
1280
+ indexed: true,
1281
+ internalType: "uint96",
1282
+ },
1283
+ {
1284
+ name: "isolatedMarginToken",
1285
+ type: "address",
1286
+ indexed: false,
1287
+ internalType: "address",
1288
+ },
1289
+ {
1290
+ name: "poolId",
1291
+ type: "bytes32",
1292
+ indexed: true,
1293
+ internalType: "bytes32",
1294
+ },
1295
+ {
1296
+ name: "underlyingAsset",
1297
+ type: "address",
1298
+ indexed: false,
1299
+ internalType: "address",
1300
+ },
1301
+ {
1302
+ name: "underlyingAmount",
1303
+ type: "uint256",
1304
+ indexed: false,
1305
+ internalType: "uint256",
1306
+ },
1307
+ ],
1308
+ anonymous: false,
1309
+ },
1310
+ {
1311
+ type: "event",
1312
+ name: "DustThresholdUpdate",
1313
+ inputs: [
1314
+ {
1315
+ name: "dustThresholdWad",
1316
+ type: "uint256",
1317
+ indexed: false,
1318
+ internalType: "uint256",
1319
+ },
1320
+ ],
1321
+ anonymous: false,
1322
+ },
1323
+ {
1324
+ type: "event",
1325
+ name: "Initialized",
1326
+ inputs: [
1327
+ {
1328
+ name: "version",
1329
+ type: "uint64",
1330
+ indexed: false,
1331
+ internalType: "uint64",
1332
+ },
1333
+ ],
1334
+ anonymous: false,
1335
+ },
1336
+ {
1337
+ type: "event",
1338
+ name: "MarginAssetConfigUpdate",
1339
+ inputs: [
1340
+ {
1341
+ name: "token",
1342
+ type: "address",
1343
+ indexed: true,
1344
+ internalType: "address",
1345
+ },
1346
+ {
1347
+ name: "ltvWad",
1348
+ type: "uint256",
1349
+ indexed: false,
1350
+ internalType: "uint256",
1351
+ },
1352
+ {
1353
+ name: "liquidationThresholdWad",
1354
+ type: "uint256",
1355
+ indexed: false,
1356
+ internalType: "uint256",
1357
+ },
1358
+ {
1359
+ name: "autoExchangeBonusWad",
1360
+ type: "uint256",
1361
+ indexed: false,
1362
+ internalType: "uint256",
1363
+ },
1364
+ ],
1365
+ anonymous: false,
1366
+ },
1367
+ {
1368
+ type: "event",
1369
+ name: "MarginUpdate",
1370
+ inputs: [
1371
+ {
1372
+ name: "owner",
1373
+ type: "address",
1374
+ indexed: true,
1375
+ internalType: "address",
1376
+ },
1377
+ {
1378
+ name: "accountId",
1379
+ type: "uint96",
1380
+ indexed: true,
1381
+ internalType: "uint96",
1382
+ },
1383
+ {
1384
+ name: "isolatedMarginToken",
1385
+ type: "address",
1386
+ indexed: false,
1387
+ internalType: "address",
1388
+ },
1389
+ {
1390
+ name: "token",
1391
+ type: "address",
1392
+ indexed: true,
1393
+ internalType: "address",
1394
+ },
1395
+ {
1396
+ name: "marginDelta",
1397
+ type: "int256",
1398
+ indexed: false,
1399
+ internalType: "int256",
1400
+ },
1401
+ ],
1402
+ anonymous: false,
1403
+ },
1404
+ {
1405
+ type: "event",
1406
+ name: "OracleHubSetting",
1407
+ inputs: [
1408
+ {
1409
+ name: "oracleHub",
1410
+ type: "address",
1411
+ indexed: true,
1412
+ internalType: "contract IOracleHub",
1413
+ },
1414
+ ],
1415
+ anonymous: false,
1416
+ },
1417
+ {
1418
+ type: "event",
1419
+ name: "OwnershipTransferStarted",
1420
+ inputs: [
1421
+ {
1422
+ name: "previousOwner",
1423
+ type: "address",
1424
+ indexed: true,
1425
+ internalType: "address",
1426
+ },
1427
+ {
1428
+ name: "newOwner",
1429
+ type: "address",
1430
+ indexed: true,
1431
+ internalType: "address",
1432
+ },
1433
+ ],
1434
+ anonymous: false,
1435
+ },
1436
+ {
1437
+ type: "event",
1438
+ name: "OwnershipTransferred",
1439
+ inputs: [
1440
+ {
1441
+ name: "previousOwner",
1442
+ type: "address",
1443
+ indexed: true,
1444
+ internalType: "address",
1445
+ },
1446
+ {
1447
+ name: "newOwner",
1448
+ type: "address",
1449
+ indexed: true,
1450
+ internalType: "address",
1451
+ },
1452
+ ],
1453
+ anonymous: false,
1454
+ },
1455
+ {
1456
+ type: "event",
1457
+ name: "PositionLiquidated",
1458
+ inputs: [
1459
+ {
1460
+ name: "accountOwner",
1461
+ type: "address",
1462
+ indexed: true,
1463
+ internalType: "address",
1464
+ },
1465
+ {
1466
+ name: "accountId",
1467
+ type: "uint96",
1468
+ indexed: true,
1469
+ internalType: "uint96",
1470
+ },
1471
+ {
1472
+ name: "accountIsolatedMarginToken",
1473
+ type: "address",
1474
+ indexed: false,
1475
+ internalType: "address",
1476
+ },
1477
+ {
1478
+ name: "poolId",
1479
+ type: "bytes32",
1480
+ indexed: true,
1481
+ internalType: "bytes32",
1482
+ },
1483
+ {
1484
+ name: "tickLower",
1485
+ type: "int24",
1486
+ indexed: false,
1487
+ internalType: "int24",
1488
+ },
1489
+ {
1490
+ name: "tickUpper",
1491
+ type: "int24",
1492
+ indexed: false,
1493
+ internalType: "int24",
1494
+ },
1495
+ {
1496
+ name: "collateralAssetTaken",
1497
+ type: "address",
1498
+ indexed: false,
1499
+ internalType: "address",
1500
+ },
1501
+ {
1502
+ name: "liquidator",
1503
+ type: "address",
1504
+ indexed: false,
1505
+ internalType: "address",
1506
+ },
1507
+ {
1508
+ name: "collateralSeized",
1509
+ type: "uint256",
1510
+ indexed: false,
1511
+ internalType: "uint256",
1512
+ },
1513
+ {
1514
+ name: "effectiveDebtCovered",
1515
+ type: "uint256",
1516
+ indexed: false,
1517
+ internalType: "uint256",
1518
+ },
1519
+ {
1520
+ name: "fixedCovered",
1521
+ type: "uint256",
1522
+ indexed: false,
1523
+ internalType: "uint256",
1524
+ },
1525
+ ],
1526
+ anonymous: false,
1527
+ },
1528
+ {
1529
+ type: "event",
1530
+ name: "PositionSettlement",
1531
+ inputs: [
1532
+ {
1533
+ name: "owner",
1534
+ type: "address",
1535
+ indexed: true,
1536
+ internalType: "address",
1537
+ },
1538
+ {
1539
+ name: "accountId",
1540
+ type: "uint96",
1541
+ indexed: true,
1542
+ internalType: "uint96",
1543
+ },
1544
+ {
1545
+ name: "isolatedMarginToken",
1546
+ type: "address",
1547
+ indexed: false,
1548
+ internalType: "address",
1549
+ },
1550
+ {
1551
+ name: "poolId",
1552
+ type: "bytes32",
1553
+ indexed: true,
1554
+ internalType: "bytes32",
1555
+ },
1556
+ {
1557
+ name: "settlementCashflow",
1558
+ type: "int256",
1559
+ indexed: false,
1560
+ internalType: "int256",
1561
+ },
1562
+ ],
1563
+ anonymous: false,
1564
+ },
1565
+ {
1566
+ type: "event",
1567
+ name: "PositionUpdate",
1568
+ inputs: [
1569
+ {
1570
+ name: "owner",
1571
+ type: "address",
1572
+ indexed: true,
1573
+ internalType: "address",
1574
+ },
1575
+ {
1576
+ name: "accountId",
1577
+ type: "uint96",
1578
+ indexed: true,
1579
+ internalType: "uint96",
1580
+ },
1581
+ {
1582
+ name: "isolatedMarginToken",
1583
+ type: "address",
1584
+ indexed: false,
1585
+ internalType: "address",
1586
+ },
1587
+ {
1588
+ name: "poolId",
1589
+ type: "bytes32",
1590
+ indexed: true,
1591
+ internalType: "bytes32",
1592
+ },
1593
+ {
1594
+ name: "tickLower",
1595
+ type: "int24",
1596
+ indexed: false,
1597
+ internalType: "int24",
1598
+ },
1599
+ {
1600
+ name: "tickUpper",
1601
+ type: "int24",
1602
+ indexed: false,
1603
+ internalType: "int24",
1604
+ },
1605
+ {
1606
+ name: "_liquidity",
1607
+ type: "uint128",
1608
+ indexed: false,
1609
+ internalType: "uint128",
1610
+ },
1611
+ {
1612
+ name: "fixedTokenBalance",
1613
+ type: "int256",
1614
+ indexed: false,
1615
+ internalType: "int256",
1616
+ },
1617
+ {
1618
+ name: "variableTokenBalance",
1619
+ type: "int256",
1620
+ indexed: false,
1621
+ internalType: "int256",
1622
+ },
1623
+ {
1624
+ name: "accumulatedFees",
1625
+ type: "uint256",
1626
+ indexed: false,
1627
+ internalType: "uint256",
1628
+ },
1629
+ ],
1630
+ anonymous: false,
1631
+ },
1632
+ {
1633
+ type: "event",
1634
+ name: "ProtocolDeficitEliminated",
1635
+ inputs: [
1636
+ {
1637
+ name: "token",
1638
+ type: "address",
1639
+ indexed: true,
1640
+ internalType: "address",
1641
+ },
1642
+ {
1643
+ name: "amount",
1644
+ type: "uint256",
1645
+ indexed: false,
1646
+ internalType: "uint256",
1647
+ },
1648
+ {
1649
+ name: "remainingDeficit",
1650
+ type: "uint256",
1651
+ indexed: false,
1652
+ internalType: "uint256",
1653
+ },
1654
+ ],
1655
+ anonymous: false,
1656
+ },
1657
+ {
1658
+ type: "event",
1659
+ name: "ProtocolDeficitIncreased",
1660
+ inputs: [
1661
+ {
1662
+ name: "token",
1663
+ type: "address",
1664
+ indexed: true,
1665
+ internalType: "address",
1666
+ },
1667
+ {
1668
+ name: "amount",
1669
+ type: "uint256",
1670
+ indexed: false,
1671
+ internalType: "uint256",
1672
+ },
1673
+ {
1674
+ name: "totalDeficit",
1675
+ type: "uint256",
1676
+ indexed: false,
1677
+ internalType: "uint256",
1678
+ },
1679
+ ],
1680
+ anonymous: false,
1681
+ },
1682
+ {
1683
+ type: "event",
1684
+ name: "VAMMSetting",
1685
+ inputs: [
1686
+ {
1687
+ name: "vamm",
1688
+ type: "address",
1689
+ indexed: true,
1690
+ internalType: "contract IVAMM",
1691
+ },
1692
+ ],
1693
+ anonymous: false,
1694
+ },
1695
+ {
1696
+ type: "event",
1697
+ name: "WorstCaseVariableFactorConfigSet",
1698
+ inputs: [
1699
+ {
1700
+ name: "poolId",
1701
+ type: "bytes32",
1702
+ indexed: true,
1703
+ internalType: "bytes32",
1704
+ },
1705
+ {
1706
+ name: "worstCaseVariableFactorPositiveWad",
1707
+ type: "uint256",
1708
+ indexed: false,
1709
+ internalType: "uint256",
1710
+ },
1711
+ {
1712
+ name: "worstCaseVariableFactorNegativeWad",
1713
+ type: "uint256",
1714
+ indexed: false,
1715
+ internalType: "uint256",
1716
+ },
1717
+ {
1718
+ name: "worstCaseVariableFactorPositiveTick",
1719
+ type: "int24",
1720
+ indexed: false,
1721
+ internalType: "int24",
1722
+ },
1723
+ {
1724
+ name: "worstCaseVariableFactorNegativeTick",
1725
+ type: "int24",
1726
+ indexed: false,
1727
+ internalType: "int24",
1728
+ },
1729
+ ],
1730
+ anonymous: false,
1731
+ },
1732
+ {
1733
+ type: "error",
1734
+ name: "AavePoolGetReserveNormalizedIncomeReturnedZero",
1735
+ inputs: [],
1736
+ },
1737
+ {
1738
+ type: "error",
1739
+ name: "AavePoolGetReserveNormalizedVariableDebtReturnedZero",
1740
+ inputs: [],
1741
+ },
1742
+ {
1743
+ type: "error",
1744
+ name: "AaveV3PoolGetReserveNormalizedIncomeReturnedZero",
1745
+ inputs: [],
1746
+ },
1747
+ {
1748
+ type: "error",
1749
+ name: "AaveV3PoolGetReserveNormalizedVariableDebtReturnedZero",
1750
+ inputs: [],
1751
+ },
1752
+ {
1753
+ type: "error",
1754
+ name: "AddressEmptyCode",
1755
+ inputs: [
1756
+ {
1757
+ name: "target",
1758
+ type: "address",
1759
+ internalType: "address",
1760
+ },
1761
+ ],
1762
+ },
1763
+ {
1764
+ type: "error",
1765
+ name: "AddressInsufficientBalance",
1766
+ inputs: [
1767
+ {
1768
+ name: "account",
1769
+ type: "address",
1770
+ internalType: "address",
1771
+ },
1772
+ ],
1773
+ },
1774
+ {
1775
+ type: "error",
1776
+ name: "AprOracleZero",
1777
+ inputs: [],
1778
+ },
1779
+ {
1780
+ type: "error",
1781
+ name: "ArrayLengthMismatch",
1782
+ inputs: [],
1783
+ },
1784
+ {
1785
+ type: "error",
1786
+ name: "AssetNotConfigured",
1787
+ inputs: [
1788
+ {
1789
+ name: "asset",
1790
+ type: "address",
1791
+ internalType: "address",
1792
+ },
1793
+ ],
1794
+ },
1795
+ {
1796
+ type: "error",
1797
+ name: "CTokenExchangeRateReturnedZero",
1798
+ inputs: [],
1799
+ },
1800
+ {
1801
+ type: "error",
1802
+ name: "CanOnlyTradeIfUnlocked",
1803
+ inputs: [
1804
+ {
1805
+ name: "unlocked",
1806
+ type: "bool",
1807
+ internalType: "bool",
1808
+ },
1809
+ ],
1810
+ },
1811
+ {
1812
+ type: "error",
1813
+ name: "CannotLiquidate",
1814
+ inputs: [],
1815
+ },
1816
+ {
1817
+ type: "error",
1818
+ name: "CannotSettleBeforeMaturity",
1819
+ inputs: [],
1820
+ },
1821
+ {
1822
+ type: "error",
1823
+ name: "CollateralEngineZero",
1824
+ inputs: [],
1825
+ },
1826
+ {
1827
+ type: "error",
1828
+ name: "CompoundTokenZero",
1829
+ inputs: [],
1830
+ },
1831
+ {
1832
+ type: "error",
1833
+ name: "DebugError",
1834
+ inputs: [
1835
+ {
1836
+ name: "x",
1837
+ type: "uint256",
1838
+ internalType: "uint256",
1839
+ },
1840
+ {
1841
+ name: "y",
1842
+ type: "uint256",
1843
+ internalType: "uint256",
1844
+ },
1845
+ ],
1846
+ },
1847
+ {
1848
+ type: "error",
1849
+ name: "DustResidue",
1850
+ inputs: [],
1851
+ },
1852
+ {
1853
+ type: "error",
1854
+ name: "ESMZero",
1855
+ inputs: [],
1856
+ },
1857
+ {
1858
+ type: "error",
1859
+ name: "ExpectedOppositeSigns",
1860
+ inputs: [
1861
+ {
1862
+ name: "amount0",
1863
+ type: "int256",
1864
+ internalType: "int256",
1865
+ },
1866
+ {
1867
+ name: "amount1",
1868
+ type: "int256",
1869
+ internalType: "int256",
1870
+ },
1871
+ ],
1872
+ },
1873
+ {
1874
+ type: "error",
1875
+ name: "ExpectedSqrtPriceZeroBeforeInit",
1876
+ inputs: [
1877
+ {
1878
+ name: "sqrtPriceX96",
1879
+ type: "uint160",
1880
+ internalType: "uint160",
1881
+ },
1882
+ ],
1883
+ },
1884
+ {
1885
+ type: "error",
1886
+ name: "FailedInnerCall",
1887
+ inputs: [],
1888
+ },
1889
+ {
1890
+ type: "error",
1891
+ name: "FeeRangeInvalid",
1892
+ inputs: [
1893
+ {
1894
+ name: "feeWad",
1895
+ type: "uint256",
1896
+ internalType: "uint256",
1897
+ },
1898
+ ],
1899
+ },
1900
+ {
1901
+ type: "error",
1902
+ name: "GlpRewardTrackerUnorderedRate",
1903
+ inputs: [],
1904
+ },
1905
+ {
1906
+ type: "error",
1907
+ name: "IRSNotionalAmountSpecifiedMustBeNonZero",
1908
+ inputs: [],
1909
+ },
1910
+ {
1911
+ type: "error",
1912
+ name: "InsufficientESMBalance",
1913
+ inputs: [
1914
+ {
1915
+ name: "poolId",
1916
+ type: "bytes32",
1917
+ internalType: "bytes32",
1918
+ },
1919
+ {
1920
+ name: "requested",
1921
+ type: "int256",
1922
+ internalType: "int256",
1923
+ },
1924
+ {
1925
+ name: "available",
1926
+ type: "int256",
1927
+ internalType: "int256",
1928
+ },
1929
+ ],
1930
+ },
1931
+ {
1932
+ type: "error",
1933
+ name: "InvalidAprRate",
1934
+ inputs: [
1935
+ {
1936
+ name: "compoundToken",
1937
+ type: "address",
1938
+ internalType: "address",
1939
+ },
1940
+ {
1941
+ name: "fromTimestamp",
1942
+ type: "uint48",
1943
+ internalType: "uint48",
1944
+ },
1945
+ {
1946
+ name: "toTimestamp",
1947
+ type: "uint48",
1948
+ internalType: "uint48",
1949
+ },
1950
+ ],
1951
+ },
1952
+ {
1953
+ type: "error",
1954
+ name: "InvalidDiscountRate",
1955
+ inputs: [
1956
+ {
1957
+ name: "rate",
1958
+ type: "uint256",
1959
+ internalType: "uint256",
1960
+ },
1961
+ ],
1962
+ },
1963
+ {
1964
+ type: "error",
1965
+ name: "InvalidInitialization",
1966
+ inputs: [],
1967
+ },
1968
+ {
1969
+ type: "error",
1970
+ name: "InvalidMarginDelta",
1971
+ inputs: [],
1972
+ },
1973
+ {
1974
+ type: "error",
1975
+ name: "InvalidPrice",
1976
+ inputs: [
1977
+ {
1978
+ name: "asset",
1979
+ type: "address",
1980
+ internalType: "address",
1981
+ },
1982
+ ],
1983
+ },
1984
+ {
1985
+ type: "error",
1986
+ name: "InvalidTermTimestamps",
1987
+ inputs: [
1988
+ {
1989
+ name: "termStart",
1990
+ type: "uint256",
1991
+ internalType: "uint256",
1992
+ },
1993
+ {
1994
+ name: "termEnd",
1995
+ type: "uint256",
1996
+ internalType: "uint256",
1997
+ },
1998
+ ],
1999
+ },
2000
+ {
2001
+ type: "error",
2002
+ name: "IsolatedMarginModeViolation",
2003
+ inputs: [
2004
+ {
2005
+ name: "accountIsolatedToken",
2006
+ type: "address",
2007
+ internalType: "address",
2008
+ },
2009
+ {
2010
+ name: "poolUnderlyingAsset",
2011
+ type: "address",
2012
+ internalType: "address",
2013
+ },
2014
+ ],
2015
+ },
2016
+ {
2017
+ type: "error",
2018
+ name: "LidoGetPooledEthBySharesReturnedZero",
2019
+ inputs: [],
2020
+ },
2021
+ {
2022
+ type: "error",
2023
+ name: "LiquidityDeltaMustBePositiveInBurn",
2024
+ inputs: [
2025
+ {
2026
+ name: "amount",
2027
+ type: "uint128",
2028
+ internalType: "uint128",
2029
+ },
2030
+ ],
2031
+ },
2032
+ {
2033
+ type: "error",
2034
+ name: "LiquidityDeltaMustBePositiveInMint",
2035
+ inputs: [
2036
+ {
2037
+ name: "amount",
2038
+ type: "uint128",
2039
+ internalType: "uint128",
2040
+ },
2041
+ ],
2042
+ },
2043
+ {
2044
+ type: "error",
2045
+ name: "MarginLessThanMinimum",
2046
+ inputs: [
2047
+ {
2048
+ name: "marginRequirement",
2049
+ type: "int256",
2050
+ internalType: "int256",
2051
+ },
2052
+ ],
2053
+ },
2054
+ {
2055
+ type: "error",
2056
+ name: "MarginRequirementNotMet",
2057
+ inputs: [
2058
+ {
2059
+ name: "marginRequirement",
2060
+ type: "uint256",
2061
+ internalType: "uint256",
2062
+ },
2063
+ {
2064
+ name: "totalMarginValue",
2065
+ type: "uint256",
2066
+ internalType: "uint256",
2067
+ },
2068
+ ],
2069
+ },
2070
+ {
2071
+ type: "error",
2072
+ name: "MarginRequirementNotMetFCM",
2073
+ inputs: [
2074
+ {
2075
+ name: "marginRequirement",
2076
+ type: "int256",
2077
+ internalType: "int256",
2078
+ },
2079
+ ],
2080
+ },
2081
+ {
2082
+ type: "error",
2083
+ name: "MessageSenderNotAuthorized",
2084
+ inputs: [
2085
+ {
2086
+ name: "sender",
2087
+ type: "address",
2088
+ internalType: "address",
2089
+ },
2090
+ {
2091
+ name: "recipient",
2092
+ type: "address",
2093
+ internalType: "address",
2094
+ },
2095
+ ],
2096
+ },
2097
+ {
2098
+ type: "error",
2099
+ name: "NoPositionsInPool",
2100
+ inputs: [
2101
+ {
2102
+ name: "poolId",
2103
+ type: "bytes32",
2104
+ internalType: "bytes32",
2105
+ },
2106
+ ],
2107
+ },
2108
+ {
2109
+ type: "error",
2110
+ name: "NotEnoughFunds",
2111
+ inputs: [
2112
+ {
2113
+ name: "requested",
2114
+ type: "uint256",
2115
+ internalType: "uint256",
2116
+ },
2117
+ {
2118
+ name: "available",
2119
+ type: "uint256",
2120
+ internalType: "uint256",
2121
+ },
2122
+ ],
2123
+ },
2124
+ {
2125
+ type: "error",
2126
+ name: "NotEnoughFundsForFee",
2127
+ inputs: [
2128
+ {
2129
+ name: "balance",
2130
+ type: "uint256",
2131
+ internalType: "uint256",
2132
+ },
2133
+ {
2134
+ name: "fee",
2135
+ type: "int256",
2136
+ internalType: "int256",
2137
+ },
2138
+ ],
2139
+ },
2140
+ {
2141
+ type: "error",
2142
+ name: "NotInitializing",
2143
+ inputs: [],
2144
+ },
2145
+ {
2146
+ type: "error",
2147
+ name: "OOO",
2148
+ inputs: [],
2149
+ },
2150
+ {
2151
+ type: "error",
2152
+ name: "OnlyCollateralEngine",
2153
+ inputs: [],
2154
+ },
2155
+ {
2156
+ type: "error",
2157
+ name: "OnlyFCM",
2158
+ inputs: [],
2159
+ },
2160
+ {
2161
+ type: "error",
2162
+ name: "OnlyOwnerCanUpdatePosition",
2163
+ inputs: [],
2164
+ },
2165
+ {
2166
+ type: "error",
2167
+ name: "OnlyVAMM",
2168
+ inputs: [],
2169
+ },
2170
+ {
2171
+ type: "error",
2172
+ name: "OnlyVAMMCaller",
2173
+ inputs: [
2174
+ {
2175
+ name: "sender",
2176
+ type: "address",
2177
+ internalType: "address",
2178
+ },
2179
+ {
2180
+ name: "vamm",
2181
+ type: "address",
2182
+ internalType: "address",
2183
+ },
2184
+ ],
2185
+ },
2186
+ {
2187
+ type: "error",
2188
+ name: "OracleHubZero",
2189
+ inputs: [],
2190
+ },
2191
+ {
2192
+ type: "error",
2193
+ name: "OwnableInvalidOwner",
2194
+ inputs: [
2195
+ {
2196
+ name: "owner",
2197
+ type: "address",
2198
+ internalType: "address",
2199
+ },
2200
+ ],
2201
+ },
2202
+ {
2203
+ type: "error",
2204
+ name: "OwnableUnauthorizedAccount",
2205
+ inputs: [
2206
+ {
2207
+ name: "account",
2208
+ type: "address",
2209
+ internalType: "address",
2210
+ },
2211
+ ],
2212
+ },
2213
+ {
2214
+ type: "error",
2215
+ name: "PRBMathSD59x18__DivInputTooSmall",
2216
+ inputs: [],
2217
+ },
2218
+ {
2219
+ type: "error",
2220
+ name: "PRBMathSD59x18__DivOverflow",
2221
+ inputs: [
2222
+ {
2223
+ name: "rAbs",
2224
+ type: "uint256",
2225
+ internalType: "uint256",
2226
+ },
2227
+ ],
2228
+ },
2229
+ {
2230
+ type: "error",
2231
+ name: "PRBMathSD59x18__FromIntOverflow",
2232
+ inputs: [
2233
+ {
2234
+ name: "x",
2235
+ type: "int256",
2236
+ internalType: "int256",
2237
+ },
2238
+ ],
2239
+ },
2240
+ {
2241
+ type: "error",
2242
+ name: "PRBMathSD59x18__FromIntUnderflow",
2243
+ inputs: [
2244
+ {
2245
+ name: "x",
2246
+ type: "int256",
2247
+ internalType: "int256",
2248
+ },
2249
+ ],
2250
+ },
2251
+ {
2252
+ type: "error",
2253
+ name: "PRBMathSD59x18__MulInputTooSmall",
2254
+ inputs: [],
2255
+ },
2256
+ {
2257
+ type: "error",
2258
+ name: "PRBMathSD59x18__MulOverflow",
2259
+ inputs: [
2260
+ {
2261
+ name: "rAbs",
2262
+ type: "uint256",
2263
+ internalType: "uint256",
2264
+ },
2265
+ ],
2266
+ },
2267
+ {
2268
+ type: "error",
2269
+ name: "PRBMathUD60x18__FromUintOverflow",
2270
+ inputs: [
2271
+ {
2272
+ name: "x",
2273
+ type: "uint256",
2274
+ internalType: "uint256",
2275
+ },
2276
+ ],
2277
+ },
2278
+ {
2279
+ type: "error",
2280
+ name: "PRBMath__MulDivFixedPointOverflow",
2281
+ inputs: [
2282
+ {
2283
+ name: "prod1",
2284
+ type: "uint256",
2285
+ internalType: "uint256",
2286
+ },
2287
+ ],
2288
+ },
2289
+ {
2290
+ type: "error",
2291
+ name: "PRBMath__MulDivOverflow",
2292
+ inputs: [
2293
+ {
2294
+ name: "prod1",
2295
+ type: "uint256",
2296
+ internalType: "uint256",
2297
+ },
2298
+ {
2299
+ name: "denominator",
2300
+ type: "uint256",
2301
+ internalType: "uint256",
2302
+ },
2303
+ ],
2304
+ },
2305
+ {
2306
+ type: "error",
2307
+ name: "PoolExpired",
2308
+ inputs: [],
2309
+ },
2310
+ {
2311
+ type: "error",
2312
+ name: "PoolNotInitialized",
2313
+ inputs: [],
2314
+ },
2315
+ {
2316
+ type: "error",
2317
+ name: "PoolNotMatured",
2318
+ inputs: [
2319
+ {
2320
+ name: "currentTimestamp",
2321
+ type: "uint256",
2322
+ internalType: "uint256",
2323
+ },
2324
+ {
2325
+ name: "termEndTimestamp",
2326
+ type: "uint256",
2327
+ internalType: "uint256",
2328
+ },
2329
+ ],
2330
+ },
2331
+ {
2332
+ type: "error",
2333
+ name: "PositionNetZero",
2334
+ inputs: [],
2335
+ },
2336
+ {
2337
+ type: "error",
2338
+ name: "PositionNotInDebt",
2339
+ inputs: [],
2340
+ },
2341
+ {
2342
+ type: "error",
2343
+ name: "PositionNotSettled",
2344
+ inputs: [],
2345
+ },
2346
+ {
2347
+ type: "error",
2348
+ name: "ProtocolFeeRangeInvalid",
2349
+ inputs: [
2350
+ {
2351
+ name: "feeProtocol",
2352
+ type: "uint8",
2353
+ internalType: "uint8",
2354
+ },
2355
+ ],
2356
+ },
2357
+ {
2358
+ type: "error",
2359
+ name: "RateOracleZero",
2360
+ inputs: [],
2361
+ },
2362
+ {
2363
+ type: "error",
2364
+ name: "RedstoneLatestRoundDataReturnedNegativeOrZero",
2365
+ inputs: [],
2366
+ },
2367
+ {
2368
+ type: "error",
2369
+ name: "ReentrancyGuardReentrantCall",
2370
+ inputs: [],
2371
+ },
2372
+ {
2373
+ type: "error",
2374
+ name: "RocketPoolGetEthValueReturnedZero",
2375
+ inputs: [],
2376
+ },
2377
+ {
2378
+ type: "error",
2379
+ name: "SafeERC20FailedOperation",
2380
+ inputs: [
2381
+ {
2382
+ name: "token",
2383
+ type: "address",
2384
+ internalType: "address",
2385
+ },
2386
+ ],
2387
+ },
2388
+ {
2389
+ type: "error",
2390
+ name: "SqrtPriceLimitInvalid",
2391
+ inputs: [
2392
+ {
2393
+ name: "isFT",
2394
+ type: "bool",
2395
+ internalType: "bool",
2396
+ },
2397
+ {
2398
+ name: "sqrtPriceLimitX96",
2399
+ type: "uint160",
2400
+ internalType: "uint160",
2401
+ },
2402
+ {
2403
+ name: "currentSqrtPriceX96",
2404
+ type: "uint160",
2405
+ internalType: "uint160",
2406
+ },
2407
+ ],
2408
+ },
2409
+ {
2410
+ type: "error",
2411
+ name: "SqrtPriceRatioOutOfBounds",
2412
+ inputs: [
2413
+ {
2414
+ name: "sqrtPriceX96",
2415
+ type: "uint160",
2416
+ internalType: "uint160",
2417
+ },
2418
+ ],
2419
+ },
2420
+ {
2421
+ type: "error",
2422
+ name: "TickSpacingOutOfBounds",
2423
+ inputs: [
2424
+ {
2425
+ name: "tickSpacing",
2426
+ type: "int24",
2427
+ internalType: "int24",
2428
+ },
2429
+ ],
2430
+ },
2431
+ {
2432
+ type: "error",
2433
+ name: "TokenNotWhitelisted",
2434
+ inputs: [
2435
+ {
2436
+ name: "token",
2437
+ type: "address",
2438
+ internalType: "address",
2439
+ },
2440
+ ],
2441
+ },
2442
+ {
2443
+ type: "error",
2444
+ name: "Unauthorized",
2445
+ inputs: [
2446
+ {
2447
+ name: "caller",
2448
+ type: "address",
2449
+ internalType: "address",
2450
+ },
2451
+ {
2452
+ name: "expected",
2453
+ type: "address",
2454
+ internalType: "address",
2455
+ },
2456
+ ],
2457
+ },
2458
+ {
2459
+ type: "error",
2460
+ name: "UnderlyingAssetZero",
2461
+ inputs: [],
2462
+ },
2463
+ {
2464
+ type: "error",
2465
+ name: "UnderlyingTokenZero",
2466
+ inputs: [],
2467
+ },
2468
+ {
2469
+ type: "error",
2470
+ name: "VAMMLocked",
2471
+ inputs: [],
2472
+ },
2473
+ {
2474
+ type: "error",
2475
+ name: "VAMMManagerZero",
2476
+ inputs: [],
2477
+ },
2478
+ {
2479
+ type: "error",
2480
+ name: "VAMMNotInitialized",
2481
+ inputs: [],
2482
+ },
2483
+ {
2484
+ type: "error",
2485
+ name: "VariableTokensNotFullyLiquidated",
2486
+ inputs: [],
2487
+ },
2488
+ {
2489
+ type: "error",
2490
+ name: "WithdrawalExceedsCurrentMargin",
2491
+ inputs: [
2492
+ {
2493
+ name: "currentMargin",
2494
+ type: "uint256",
2495
+ internalType: "uint256",
2496
+ },
2497
+ ],
2498
+ },
2499
+ {
2500
+ type: "error",
2501
+ name: "ZeroInputPrice",
2502
+ inputs: [],
2503
+ },
2504
+ {
2505
+ type: "error",
2506
+ name: "closeToOrBeyondMaturity",
2507
+ inputs: [],
2508
+ },
2509
+ ] as const;
2510
+
2511
+ const _bytecode =
2512
+ "0x6080806040523460aa575f5160206158d75f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b60405161582890816100af8239f35b6001600160401b0319166001600160401b039081175f5160206158d75f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60a06040526004361015610011575f80fd5b5f5f3560e01c806304e6f011146136c35780630ea97a4f1461366557806318fefc7d1461363f5780631a2dd39314612ec7578063258e9ddd14612dbd5780632a9530c91461295b5780633346f01f146128cb578063365161ac146128a6578063380c45f31461280d5780633b33e9ee146126615780633ee841b4146124d0578063485cc955146122bd5780634a718f4c1461225a57806355e281e514611c475780635f4d9513146113ed57806362315c421461137c578063715018a6146112fd57806373d62b46146112d857806379ba5097146112885780637c70b586146111d6578063837953fe14610ff4578063866c13cd14610fb25780638da5cb5b14610f7d5780638f3d768514610d1d57806394990bd814610cf85780639f5c462a14610c33578063a0c44833146108c2578063a6b9db78146107d9578063ad7e55ba14610782578063af41b24814610752578063c3b2bf0c146105fa578063d64455341461058f578063dbb37abf14610558578063e30c397814610523578063e55982931461043a578063efae012d146102395763f2fde38b146101b1575f80fd5b34610236576020366003190112610236576101ca613732565b6101d2613c40565b5f5160206157d35f395f51905f5280546001600160a01b0319166001600160a01b039283169081179091555f5160206157735f395f51905f52549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b80fd5b503461023657608036600319011261023657610253613732565b6024359060443560643591610266613c40565b6001600160a01b031692831561042657670de0b6b3a764000083116103e95780610317575b6103117f116d415a3c3ff5692b2e60068e9d456e839f06b2069dd15523651610d7815d9c936102b8613c73565b6002604051916102c783613810565b85835260208301878152600a60408501928684528b5f520160205260405f209351845551600184015551910155604051938493846040919493926060820195825260208201520152565b0390a280f35b670de0b6b3a764000081116103ba5780821061037557670de0b6b3a764000082111561028b5760405162461bcd60e51b815260206004820152601060248201526f6c69715468726573686f6c64203e203160801b6044820152606490fd5b60405162461bcd60e51b815260206004820152601b60248201527f6c69715468726573686f6c64206d757374206265203e3d206c747600000000006044820152606490fd5b60405162461bcd60e51b81526020600482015260076024820152666c7476203e203160c81b6044820152606490fd5b60405162461bcd60e51b81526020600482015260156024820152746175746f45786368616e6765426f6e7573203e203160581b6044820152606490fd5b63751dff9760e11b85526004849052602485fd5b50346102365760203660031901126102365760408160c09260a0835161045f8161382c565b828152826020820152828582015282606082015282608082015201526006610485613c73565b0160043582526020522060405161049b8161382c565b60018060a01b038254169182825260018060a01b03600182015416602083019081526002820154604084019081526003830154916060850192835260a0600560048601549560808801968752015460020b950194855260405195865260018060a01b0390511660208601525160408501525160608401525160808301525160020b60a0820152f35b50346102365780600319360112610236575f5160206157d35f395f51905f52546040516001600160a01b039091168152602090f35b5034610236576040366003190112610236576020610585610577613732565b61057f613748565b90614473565b6040519015158152f35b5034610236576020366003190112610236576105a9613732565b6105b1613c40565b6001600160a01b038116156105eb5760096105ca613c73565b0180546001600160a01b0319166001600160a01b0390921691909117905580f35b631c7d7e9160e11b8252600482fd5b5034610236576040610100916106a6610612366137a8565b929390918560e0885161062481613848565b828152826020820152828a8201528260608201528260808201528260a08201528260c0820152015261069861066a61066561065d613c73565b97369061394a565b613cb7565b948851948593602085019788929091604694928452602084015260e81b604083015260e81b60438201520190565b03601f198101835282613865565b5190208252602052206040516106bb81613848565b6001600160801b03825416918282526001810154602083019081526002820154604084019081526003830154606085019081526004840154916080860192835260058501549360a0870194855260e0600760068801549760c08a01988952015497019687526040519788525160208801525160408701525160608601525160808501525160a08401525160c08301525160e0820152f35b503461023657806003193601126102365760206001600160a01b036009610777613c73565b015416604051908152f35b5034610236576020366003190112610236577fc0b0a9a0bbe220839e3c4767b7ba9bb38bbe78037c1ab27f08c618896cba166560206004356107c2613c40565b80600c6107cd613c73565b0155604051908152a180f35b5034610236576060366003190112610236576107f436613887565b906107fd613c73565b60408051635873500560e11b8152600481019290925283516001600160a01b0390811660248401526020808601516001600160601b03166044850152949091015116606482015260016084820152918260a48173__$134b6c58d0b200b9f69932d007736bd671$__5af49081156108b6579061087f575b604051908152602090f35b506020813d6020116108ae575b8161089960209383613865565b810103126108aa5760209051610874565b5f80fd5b3d915061088c565b604051903d90823e3d90fd5b50346102365736600319016101008112610c2f5760601361023657606435906108e9613788565b906108f2613798565b60c4356001600160a01b0381169490859003610c2b57610910613d1a565b610918613c73565b9473__$134b6c58d0b200b9f69932d007736bd671$__95863b15610c27576040516339ef2e6360e21b81526004810182905261095660248201613ae3565b85816084818b5af48015610c0757908691610c12575b50506040516324bfaff960e11b81526004810182905261098e60248201613ae3565b85608482015260208160a4818b5af4908115610c07578691610bcd575b5015610bbe576109bd61066536613887565b85526001810160205260056040862001838652602052610a19604086206040516020810190610a02816106988a8d86909160069260e81b825260e81b60038201520190565b519020906001915f520160205260405f2054151590565b15610bbe576060906101246040518098819363b7c3179160e01b83526004830152610a4660248301613ae3565b86608483015260020b968760a483015260020b998a60c48301528560e483015260e4356101048301525af4928315610bb3578480968195610b44575b50507fe46f55ec7ba2ce6eccac55ca8735c68a508da98b1030585f3feb36fd036525c66101006001600160601b03610b40979899610abe613b2f565b95610ac7613b5b565b91610ad0613b45565b966040519760018060a01b031688526020880152604087015260608601523360808601528960a08601528a60c08601528760e0860152169360018060a01b031692a460015f5160206157935f395f51905f5255604051938493846040919493926060820195825260208201520152565b0390f35b955096935094506060843d606011610bab575b81610b6460609383613865565b81010312610ba7578351602085015160409095015193965093947fe46f55ec7ba2ce6eccac55ca8735c68a508da98b1030585f3feb36fd036525c6610100610a82565b8580fd5b3d9150610b57565b6040513d86823e3d90fd5b63bf87c7d560e01b8552600485fd5b90506020813d602011610bff575b81610be860209383613865565b81010312610ba757610bf990613c33565b5f6109ab565b3d9150610bdb565b6040513d88823e3d90fd5b81610c1c91613865565b610c2757845f61096c565b8480fd5b8280fd5b5080fd5b503461023657606036600319011261023657610c4d613732565b610c55613748565b60443591821515809303610cf4576001600160a01b03169033829003610cdc5760207f835300f4efc6baa8eaca41203496168e2692363fadd528ad4957405e5898b453916008610ca3613c73565b5f8681529101835260408082206001600160a01b039390931680835292845290819020805460ff191660ff88161790555194855293a380f35b63295a81c160e01b8452336004526024829052604484fd5b8380fd5b503461023657806003193601126102365760206001600160a01b036004610777613c73565b503461023657606036600319011261023657610d37613c73565b610d4036613887565b908291838092610d508382613d70565b91905060018060a01b036003820154166001830193845494600a60408398019401905b868810610d9357604080518b8152602081018d90529081018a9052606090f35b909192939495989699610da68b836144e8565b60018060a01b0391549060031b1c169860018060a01b038a165f528360205260405f209889604051610dd781613810565b60406002600184549485855201549d8e602085015201549101528015610f6f5788516001600160a01b03168015159081610f65575b5015610f5e5750899a5b60018060a01b0381165f528960205260405f205460405191630390dc8160e51b83528060048401526060836024818d5afa8015610f0b5789938a91610f28575b5015610f165760206004916040519283809263313ce56760e01b82525afa908115610f0b5790610e8d918a91610edd575b50614197565b90610e97926148ad565b9182610ea291613fed565b99610ead90836149f3565b610eb691613fed565b99610ec0916149f3565b610ec991613fed565b996001905b01969798959493929190610d73565b610efe915060203d8111610f04575b610ef68183613865565b810190614124565b5f610e87565b503d610eec565b6040513d8b823e3d90fd5b636690a80360e11b8952600452602488fd5b9050610f4c91935060603d8111610f57575b610f448183613865565b81019061413d565b93919050925f610e56565b503d610f3a565b999a610e16565b90508c145f610e0c565b509950975099600190610ece565b50346102365780600319360112610236575f5160206157735f395f51905f52546040516001600160a01b039091168152602090f35b503461023657602036600319011261023657610fcc613732565b600b610fd6613c73565b019060018060a01b03165f52602052602060405f2054604051908152f35b503461023657366003190160a08112610c2f576060136102365761101661375e565b608435611021613d1a565b6110296141f3565b611031613c73565b61105961104661104036613887565b83613d70565b9050838561105336613887565b92613ffa565b83821290816110f0575b50156110c457906110766110b092613a84565b906040519163a9059cbb60e01b60208401523360248401526044830152604482526110a2606483613865565b6001600160a01b03166148e5565b60015f5160206157935f395f51905f525580f35b8281136110d3575b50506110b0565b6110e991309033906001600160a01b03166141a8565b5f806110cc565b73__$134b6c58d0b200b9f69932d007736bd671$__90813b15610ba757856040516339ef2e6360e21b815282600482015261112d60248201613ae3565b8181608481875af480156111cb576111b6575b505060209060a460405180948193630c03818f60e41b8352600483015261116960248301613ae3565b8960848301525af480156111ab57156110635761119d9060203d6020116111a4575b6111958183613865565b810190613b71565b505f611063565b503d61118b565b6040513d87823e3d90fd5b816111c091613865565b610ba757855f611140565b6040513d84823e3d90fd5b5034610236576080366003190112610236576111f136613887565b90606435801515809103610c2f57611207613c73565b9260405193635873500560e11b8552600485015260018060a01b0381511660248501526001600160601b036020820151166044850152604060018060a01b03910151166064840152608483015260208260a48173__$134b6c58d0b200b9f69932d007736bd671$__5af49081156108b6579061087f57604051908152602090f35b50346102365780600319360112610236575f5160206157d35f395f51905f5254336001600160a01b03909116036112c5576112c233614408565b80f35b63118cdaa760e01b815233600452602490fd5b503461023657806003193601126102365760206001600160a01b036003610777613c73565b5034610236578060031936011261023657611316613c40565b5f5160206157d35f395f51905f5280546001600160a01b03199081169091555f5160206157735f395f51905f528054918216905581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461023657602036600319011261023657611396613732565b61139e613c40565b60036113a8613c73565b0180546001600160a01b0319166001600160a01b039290921691821790557fc0a26580656383a599bfdfc236d194c87033aca972b1ea9518244e8d192705d18280a280f35b50346102365736600319016102208112610c2f576102001361023657610204358015158103610c2f576001600160a01b036002611428613c73565b015416803303611c31575061143b613c73565b9161144536613a11565b9261144f84613d8c565b60805261147861145d613c11565b611465613c22565b90608051611472366138e8565b85613df1565b936101e4356101c43561148a366138e8565b5086546001600160801b031615611c22576114ee876114e76114e16114db6114cf6114cf6114d460018701546001600160801b0360028901549854169384918b613bb4565b614997565b9589613bb4565b92613ba3565b91613ba3565b9089613f12565b600187015560028601555b611501613c11565b9361150a613c22565b906101643580600f0b808203611c1e578487611525366138e8565b998b6005810154976006820154966115406101a4358b613ac8565b96611c0e575b506115608960046001600160801b03855416940154613bb4565b90848212611bff5781925b8394816119e5575b50505050506115d5670de0b6b3a7640000936115d56116136116086116036115db9761161b9a6115e18b6115db6115ac6115c79c6144a9565b6115d5608060608d019e8f516115c1426144a9565b90613b80565b9c019b6115d58d5191614c1d565b906149f3565b04614a8e565b9e82808212156119b0578183121561199957506115fe9250613bb4565b614ad2565b6144a9565b94516115c1426144a9565b915191614c1d565b91611986579061162e6116349284613bb4565b90613ac8565b945b61163f81613cb7565b6001850193818752846020526040872091886118e0575b5050505061166b6101a4356101843588613f12565b61167c6101a4356005880154613ac8565b6005870155600686015561168e613c11565b6106986116be61169c613c22565b604051928391602083019586909160069260e81b825260e81b60038201520190565b519020906116ce610665366138e8565b8452602052600660408420926116e78360805186614339565b6117506116f2613c11565b6116fa613c22565b60405191611707836137e0565b600290810b83520b60208083019182528689526005850190526040882091518254915160181b65ffffff0000001662ffffff90911665ffffffffffff1990921691909117179055565b01608051845280602052600560408520015460020b15611841575b5061177585614361565b61182e575b505060c4356001600160a01b03811690818103610c2b575060e435906001600160601b03821691828103610cf4575061010435926001600160a01b038416840361023657507f5f9e78c48a93da9ab345a772b8703b28d30bb4c9dcdcc2d4b0fa62ccde7545656020956117eb613c11565b6118236117f6613c22565b926001600160801b0381541690600381015460076004830154920154926040519687966080519c88613bcc565b0390a4604051908152f35b60805161183a92614394565b5f8061177a565b6080518452602052604083206001600160a01b0361185d613b2f565b82546001600160a01b03191691161781556024356001600160a01b0381168103610c2757600182019060018060a01b03166001600160601b0360a01b82541617905560443560028201556064356003820155608435600482015560a435908160020b8203610c27576005019062ffffff198254169062ffffff161790555f61176b565b878912908115611951575b885260208681526040808a2084516001600160a01b03165f9081529252902054901561193a5750516119319291906001600160a01b031661192b89613a84565b91613ffa565b5f808080611656565b6327915cf960e01b88526004526024889052604487fd5b80895260208781526040808b2085516001600160a01b03165f908152925290205490915061197e8a614ad2565b1115906118eb565b906119919250613bb4565b938390611636565b905081136119a8575b50614ad2565b90505f6119a2565b81839293135f146119c657506115fe9250613bb4565b90809250126119d55750614ad2565b6119df9150613a84565b5f6119a2565b60028e0154604051639589619560e01b8152608051600482015296985094965092949193909290606090839060249082906001600160a01b03165afa918215611bf257918c979593918f9795938892611b6e575b508761161b9a6115e1670de0b6b3a76400006115db6115ac6115c79c839f9b9c6115db9f9d6115d59e6115d59d8f6116139e8e6116089f9e6116039f60020b8160020b81139889611b0d575b508560020b13611aaa575b5050509b50505050509c50505050509a5097509750611573565b611ad397611acb965015611b055750925b6060604084015193015193614d9d565b919050613ac8565b878112611af7575b818111611aef575b8088818f818080611a90565b90505f611ae3565b611b0090613a84565b611adb565b905092611abb565b8660020b82125f14611b6257611b3b611b33855b6040890151888760608c015193614d9d565b90508a613ac8565b888112611b5357905b811115611a855799505f611a85565b611b5c90613a84565b90611b44565b611b3b611b3388611b21565b929496985092949650506060813d606011611bea575b81611b9160609383613865565b81010312611be2578051908160020b8203611be65760208101516001600160a01b03811603611be657604001516001600160a01b03811603611be2578b968e96909590949093909290919087611a39565b8d80fd5b8e80fd5b3d9150611b84565b8e604051903d90823e3d90fd5b611c0882613a84565b9261156b565b611c189083613f40565b5f611546565b8680fd5b600187015560028601556114f9565b631d77f97b60e01b835233600452602452604482fd5b503461023657366003190160e08112610c2f5760601361023657611c69613788565b611c71613798565b60c43591611c7d613d1a565b611c856141f3565b611c8d613c73565b6009810180546001600160a01b031692909190831561224b57606435875260068201602052604087209360405194611cc48661382c565b80546001600160a01b03908116875260018201541660208701526002808201546040880152600382015460608801818152600484015460808a015260059093015490910b60a08801521561223c57670de0b6b3a764000090510442101561222d579060446020899594936040519283809263199ac1b760e21b825260643560048301528c60248301525afa9081156111ab5785916121f4575b50611d6b611d7091896142b4565b613a84565b9573__$134b6c58d0b200b9f69932d007736bd671$__93843b15610ba7576040516339ef2e6360e21b815260048101859052611dae60248201613ae3565b8681608481895af49081156121e95787916121d4575b5050611ddd8284606435611dd736613887565b88613df1565b90611de88a83613ee5565b5460405194906001600160a01b0316611e0086613810565b855260208501978789526040860199888b52611e6f604062010dec9a8b610698611e5f611e2c8d613cb7565b8551602081019182526064356040820152623fbc8560ea1b606082015260e89490941b6063850152929182906066820190565b519020815285602052209c613a84565b8d81128015906121be575b8d6003611e8684613a84565b91015491156121a2575050928d92611f67898f60a495611eaa8f929960209a613ee5565b611eb383613cb7565b885260018601895260408820916040518a810190623fbc8560ea1b825261437b60ea1b602382015260068152611eea602682613865565b519020611efa8160643586614339565b6005880191818b52828c5260408b205460181c60020b15612148575b505050611f2561066536613887565b8852600186018952604088208551909561192b91611f57906001600160a01b031684611f5036613887565b918a613ffa565b516001600160a01b031691613a84565b611f7086614361565b61210c575b506040519889938492630c03818f60e41b84526004840152611f9960248401613ae3565b60848301525af48015612101576120c9575b6001600160601b0394507f5f9e78c48a93da9ab345a772b8703b28d30bb4c9dcdcc2d4b0fa62ccde754565611fde613b2f565b92611fe7613b5b565b9461202c611ff3613b45565b946001600160801b0381541690600381015460076004830154920154926040519687968e6064359d169b60018060a01b03169a88613bcc565b0390a460018060a01b039051169251169260018060a01b03905116936001600160801b03815416600382015490600760048401549301549360405197885262010deb19602089015260408801526060870152608086015260a085015260c08401527f5f9e78c48a93da9ab345a772b8703b28d30bb4c9dcdcc2d4b0fa62ccde75456560e060643594a460015f5160206157935f395f51905f525580f35b6020853d6020116120f9575b816120e260209383613865565b810103126108aa576001600160601b039450611fab565b3d91506120d5565b6040513d8c823e3d90fd5b60405160e889811b8783019081529089901b600382015261214292916121358160068401610698565b5190209060643590614394565b5f611f75565b61219a9260405192612159846137e0565b62010deb1984528d84019283528c528c5260408b2091518254915160181b65ffffff0000001662ffffff90911665ffffffffffff1990921691909117179055565b5f8f80611f16565b8f82606492634bc8001f60e01b83528335600452602452604452fd5b5060038d01546121cd82613a84565b1315611e7a565b816121de91613865565b610ba757855f611dc4565b6040513d89823e3d90fd5b9450506020843d602011612225575b8161221060209383613865565b810103126108aa579251879390611d6b611d5d565b3d9150612203565b63398b36db60e01b8852600488fd5b63486aa30760e01b8952600489fd5b631c7d7e9160e11b8752600487fd5b5034610236576020366003190112610236576004356001600160a01b03811690819003610c2f57612289613c40565b80156122ae576002612299613c73565b0180546001600160a01b031916909117905580f35b6325a20b7f60e21b8252600482fd5b5034610236576040366003190112610236576122d7613732565b6122df613748565b5f5160206157b35f395f51905f52549160ff8360401c16159267ffffffffffffffff8116801590816124c8575b60011490816124be575b1590816124b5575b506124a65767ffffffffffffffff1981166001175f5160206157b35f395f51905f52558361247a575b506001600160a01b0381161561246b576001600160a01b0382161561245c57600490612371613c73565b6003810180546001600160a01b03199081166001600160a01b03948516179091559201805490921692169190911790556123a96149c8565b6123b16149c8565b3315612448576123c033614408565b6123c86149c8565b6123d06149c8565b6123d86149c8565b60015f5160206157935f395f51905f52556123f05780f35b68ff0000000000000000195f5160206157b35f395f51905f5254165f5160206157b35f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b631e4fbdf760e01b82526004829052602482fd5b63325eed6960e21b8452600484fd5b63cf1af63f60e01b8452600484fd5b68ffffffffffffffffff191668010000000000000001175f5160206157b35f395f51905f52555f612347565b63f92ee8a960e01b8552600485fd5b9050155f61231e565b303b159150612316565b85915061230c565b5034610236576124df366137a8565b9091926124f86106656124f0613c73565b92369061394a565b604080516020810192835290810186905260e885811b606083015284901b60638201526125288160668101610698565b51902085528060205260408520916003830154946004840154946001600160801b038554169384612564575b6040888882519182526020820152f35b60029081015460408051631073d22360e11b8152600481019590955292820b602485015293900b60448301529395909493909291859060649082906001600160a01b03165afa938415610c0757956040968195612608575b509161162e6125f1836114cf61162e966125eb6125f7976114cf8d60026125fd9e9f6001015491015494613bb4565b9a613bb4565b96613ba3565b93613ba3565b5f8080808080612554565b6125fd955061162e9391506125f1836114cf6114cf6125eb6125f79761264761162e978f3d60401161265a575b61263f8183613865565b810190613b8d565b9c509799509397506125bc945050505050565b503d612635565b50346102365760403660031901126102365761267b613732565b60243590612687613d1a565b6001600160a01b03169081156127c857801561278357600b6126a7613c73565b0190825f528160205260405f2054801561273e577f79b50fa26f1d8d6cb49d64e7795d631c6b7bc3f776d89888dbeeec853be1008c926040928281111561273357506126f38280613b80565b855f5281602052835f205561270a823033886141a8565b845f52602052815f205482519182526020820152a260015f5160206157935f395f51905f525580f35b6126f3908093613b80565b60405162461bcd60e51b815260206004820152601c60248201527f656c696d696e617465446566696369743a206e6f2064656669636974000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f656c696d696e617465446566696369743a207a65726f20616d6f756e740000006044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527f656c696d696e617465446566696369743a207a65726f20746f6b656e000000006044820152606490fd5b5034610236576060366003190112610236576004357ffc504ecc1f145377aa21a7e2aed4e5cce1be36711b474d789dbab0ec787c4b166080602435604435612853613c40565b600761285d613c73565b018587526020526002604087208381558260018201550162ffffff19815416815565ffffff0000001981541690556040519182526020820152846040820152846060820152a280f35b503461023657806003193601126102365760206001600160a01b036002610777613c73565b5034610236576020366003190112610236576128e5613732565b90604080516128f381613810565b8281528260208201520152600a612908613c73565b019060018060a01b03165f52602052606060405f2060405161292981613810565b815491828252604060026001830154926020850193845201549201918252604051928352516020830152516040820152f35b50346102365736600319016101408112610c2f5760c0136102365760e4356001600160a01b0381169060c43590828103610cf457926002936101043561012435916129a4613c73565b926129ae36613a11565b9060018060a01b0360038601541691885f52600a860160205260405f20604080519b8c926129db84613810565b80548094528d6020600183015491015201549b019a8b5215612da957805160405163313ce56760e01b81529a906020908c9060049082906001600160a01b03165afa948515612d335760049b8996612d88575b5060405163313ce56760e01b81529b6020908d90818e5afa9b8c15610f0b57899c612d67575b506040519a630390dc8160e51b8c5260048c015260608b602481885afa8015610f0b57899b8a91612d3e575b5090612a8b9161416f565b606060018060a01b03835116602460405180978193630390dc8160e51b835260048301525afa8015612d335788948991612d0c575b508251612ad8916001600160a01b039091169061416f565b51670de0b6b3a764000003670de0b6b3a76400008111612cf857612afc908a6149f3565b98604082019586519260600192835190612b158c6144fd565b91612b1f916145a1565b612b28916142b4565b612b318a61423a565b612b3a91613ac8565b670de0b6b3a76400009005612b4e90613ba3565b612b5790613a84565b80821015612cf057509a5b8a858d612b6e89614197565b612b7791614714565b90612b81916149f3565b90612b8b91614b69565b612b9482614197565b612b9d916147ed565b9a848c11612ca8575b50612bd28b612bcc612bc58f612bbf8c518951906145a1565b90614b69565b809d613ac8565b95613b80565b9089851280612c9f575b612bfa575b604080518d8152602081018f90529081018c9052606090f35b670de0b6b3a7640000612c56612c4d8c612c47600c9b99612c629b99612c40612c36612c309b612c5c9b612c30611d6b9c614197565b916148ad565b9f519151926144fd565b93506145a1565b906142b4565b61162e8d61423a565b05613ba3565b92614197565b920154809110159182612c94575b505015612c8557808080808080808080612be1565b632cab962160e21b8152600490fd5b101590505f80612c70565b50811515612bdc565b9a50849b50839b8c9b612cba83614197565b612cc49087614714565b90612cce916149f3565b90612cd891614b69565b612ce187614197565b612cea916147ed565b9b612ba6565b90509a612b62565b634e487b7160e01b88526011600452602488fd5b612ad89550612d2a915060603d606011610f5757610f448183613865565b91959050612ac0565b6040513d8a823e3d90fd5b612a8b929c50612d5d915060603d606011610f5757610f448183613865565b919c929050612a80565b612d81919c5060203d602011610f0457610ef68183613865565b9a5f612a54565b612da291965060203d602011610f0457610ef68183613865565b945f612a2e565b630f10d83760e11b87526004899052602487fd5b503461023657606036600319011261023657612dd7613c73565b9073__$134b6c58d0b200b9f69932d007736bd671$__91823b15610c2f576040516339ef2e6360e21b815260048101829052612e1560248201613ae3565b8281608481875af48015612ebc57908391612ea7575b505060209060a460405180958193630c03818f60e41b83526004830152612e5460248301613ae3565b8560848301525af49081156108b65790612e74575b602090604051908152f35b506020813d602011612e9f575b81612e8e60209383613865565b810103126108aa5760209051612e69565b3d9150612e81565b81612eb191613865565b610c2f57815f612e2b565b6040513d85823e3d90fd5b50346108aa57366003190161014081126108aa576060136108aa5760c03660631901126108aa57610124359067ffffffffffffffff82116108aa57366023830112156108aa5781600401359067ffffffffffffffff82116108aa573660248360051b850101116108aa57612f39613d1a565b612f42426144a9565b9160c43592670de0b6b3a7640000810484670de0b6b3a76400008104921061362a575050612f6e613c73565b90612f7b61104036613887565b919050612f8f612f8a3661399d565b613d8c565b946003830196612fad87896001915f520160205260405f2054151590565b1561361757612fbb3661399d565b50612fc861066536613887565b5f526001850160205260405f2092600560018060a01b03600288015416940193885f528460205260405f2054905f958a60058a01975b8481106134d85750505050506130133661399d565b60048701546001600160a01b0316969061302c426144a9565b602065ffffffffffff670de0b6b3a76400008181604087015195606088015190818110155f146134d05750955b04169304169201604060018060a01b0382511660648251809d819363301a02cb60e21b835260048301528660248301528760448301525afa801561330f575f9a5f91613490575b501561346e575050508894969960058701809b875f528160205260405f2054905f9a5f9360a4359a5b848610613348575050505050505b895f528a60205260405f20541561312e57895f528a60205260405f2080541561311a575f5261311460205f20548b5f528c60205260405f20614602565b506130d7565b634e487b7160e01b5f52603260045260245ffd5b8961313b919a999a614602565b505f8713156131f457505060643593925050506001600160a01b0382168203610c275761316d91839061105336613887565b613175613b2f565b907fcb3f339bcd0cf2afa37b415250da29a74d92778a01cdf318f33163f1fe09c5146001600160601b036131a7613b5b565b6131dd6131b2613b45565b604080516001600160a01b039283168152602081019790975292909316959290921693918291820190565b0390a460015f5160206157935f395f51905f525580f35b9091929394505f861261320c575b505050505061316d565b61321586613a84565b9073__$134b6c58d0b200b9f69932d007736bd671$__94853b156108aa5760405196631a4a7b9b60e21b8852610184880192600489015261325860248901613ae3565b6001600160a01b0361326861375e565b16608489015260843560018060a01b0381168091036108aa5760a489015260c488015260e487015260e43561010487015261010435918260020b8093036108aa5790839291879594926101248701526101448601526101806101648601525260246101a484019201905f5b81811061331a575050509181805f9403915af4801561330f576132fa575b80808080613202565b6133079193505f90613865565b5f91836132f1565b6040513d5f823e3d90fd5b9193509160019060209081906001600160a01b0361333788613774565b1681520194019101918593926132d3565b5f9d929394959d526020528b60405f2090613362916144e8565b90549060031b1c5f52816020528d60405f2060405190613381826137e0565b548060020b9081835260181c60020b602081930152366133a090613887565b926133ab938a613df1565b60038101546004820154858c8e6133c1856144fd565b906133cb856144fd565b926133d5916145a1565b6133de916142b4565b916133e8916142b4565b6133f191613ac8565b670de0b6b3a7640000900561340590613ba3565b9161340f90613a84565b9061341990613a84565b6134239184613f12565b81546001600160801b0316928315159361344693600195613452575b5050613ac8565b9b019291908e8e6130c9565b61346161346792600f0b613aa8565b90613f40565b5f8061343f565b60018060a01b039051166372f8e42960e11b5f5260045260245260445260645ffd5b9a505060408a3d6040116134c8575b816134ac60409383613865565b810103126108aa576134c260208b519b01613c33565b5f6130a0565b3d915061349f565b905095613059565b815f52826020526134ec8160405f206144e8565b90549060031b1c5f528860205260405f2060408c61353782519361350f856137e0565b548060020b9081865260181c60020b9087602087019483865261353136613887565b90613df1565b925190518251631073d22360e11b81526004810196909652600291820b6024870152900b604485015283606481885afa90811561330f576001935f905f936135f3575b509060029161358836613887565b5081546001600160801b0316156135e8576135d9868301546135d26114e16114db6114cf6114cf6135cb8a8a0154966001600160801b038b54169384918b613bb4565b958b613bb4565b9084613f12565b8582015501555b018b90612ffe565b8582015501556135e0565b6002929350613610915060403d811161265a5761263f8183613865565b929161357a565b8663f43ec4ff60e01b5f5260045260245ffd5b6304b983a960e51b5f5260045260245260445ffd5b346108aa575f3660031901126108aa576020600c61365b613c73565b0154604051908152f35b346108aa573660031901608081126108aa576060136108aa5761368661375e565b6001613690613c73565b61369c61066536613887565b5f520160205260405f209060018060a01b03165f52602052602060405f2054604051908152f35b346108aa5760203660031901126108aa576136dc613732565b6136e4613c40565b60046136ee613c73565b0180546001600160a01b0319166001600160a01b039290921691821790557f9c5f1a6af1400bf6c1cc281b341f880f8a258a24edd36a0945b010b9c84551ca5f80a2005b600435906001600160a01b03821682036108aa57565b602435906001600160a01b03821682036108aa57565b606435906001600160a01b03821682036108aa57565b35906001600160a01b03821682036108aa57565b608435908160020b82036108aa57565b60a435908160020b82036108aa57565b6003190160c081126108aa576060136108aa57600490606435906084358060020b81036108aa579060a4358060020b81036108aa5790565b6040810190811067ffffffffffffffff8211176137fc57604052565b634e487b7160e01b5f52604160045260245ffd5b6060810190811067ffffffffffffffff8211176137fc57604052565b60c0810190811067ffffffffffffffff8211176137fc57604052565b610100810190811067ffffffffffffffff8211176137fc57604052565b90601f8019910116810190811067ffffffffffffffff8211176137fc57604052565b60609060031901126108aa57604051906138a082613810565b816004356001600160a01b03811681036108aa5781526024356001600160601b03811681036108aa576020820152604435906001600160a01b03821682036108aa5760400152565b60609060c31901126108aa576040519061390182613810565b8160c4356001600160a01b03811681036108aa57815260e4356001600160601b03811681036108aa57602082015261010435906001600160a01b03821682036108aa5760400152565b91908260609103126108aa5760405161396281613810565b809261396d81613774565b82526020810135906001600160601b03821682036108aa576040613998918193602086015201613774565b910152565b60c09060631901126108aa57604051906139b68261382c565b816064356001600160a01b03811681036108aa5781526084356001600160a01b03811681036108aa57602082015260a435604082015260c435606082015260e435608082015261010435908160020b82036108aa5760a00152565b60c09060031901126108aa5760405190613a2a8261382c565b816004356001600160a01b03811681036108aa5781526024356001600160a01b03811681036108aa57602082015260443560408201526064356060820152608435608082015260a435908160020b82036108aa5760a00152565b600160ff1b8114613a94575f0390565b634e487b7160e01b5f52601160045260245ffd5b600f0b6f7fffffffffffffffffffffffffffffff198114613a94575f0390565b9190915f8382019384129112908015821691151617613a9457565b6004356001600160a01b038116908190036108aa5781526024356001600160601b0381168091036108aa5760208201526044356001600160a01b03811691908290036108aa5760400152565b6004356001600160a01b03811681036108aa5790565b6044356001600160a01b03811681036108aa5790565b6024356001600160601b03811681036108aa5790565b908160209103126108aa575190565b91908203918211613a9457565b91908260409103126108aa576020825192015190565b905f198201918213600116613a9457565b81810392915f138015828513169184121617613a9457565b936001600160801b03919897969360c0969360e087019a60018060a01b0316875260020b602087015260020b6040860152166060840152608083015260a08201520152565b610124358060020b81036108aa5790565b610144358060020b81036108aa5790565b519081151582036108aa57565b5f5160206157735f395f51905f52546001600160a01b03163303613c6057565b63118cdaa760e01b5f523360045260245ffd5b604051602081017f5c14919fa1ff7a70caf814db195b219a963dff10be41f2819c764dc9a605e1b8815260208252613cac604083613865565b9051902060ff191690565b805190604060208201519101516040519160208301936001600160601b03199060601b1684526001600160601b0360a01b9060a01b1660348301526001600160601b03199060601b16604082015260348152613d14605482613865565b51902090565b60025f5160206157935f395f51905f525414613d435760025f5160206157935f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b8115613d5c570490565b634e487b7160e01b5f52601260045260245ffd5b9190613d7d600191613cb7565b92835f520160205260405f2090565b60018060a01b038151169060018060a01b0360208201511690604081015190606081015160a0608083015192015160020b92604051946020860196875260408601526060850152608084015260a083015260c082015260c08152613d1460e082613865565b9392918360020b8360020b81811215613eba5762010deb1913613e8f5762010dec12613e6457610698613e26613e5593613cb7565b94604051948593602085019788929091604694928452602084015260e81b604083015260e81b60438201520190565b5190205f5260205260405f2090565b60405162461bcd60e51b815260206004820152600360248201526254554d60e81b6044820152606490fd5b60405162461bcd60e51b8152602060048201526003602482015262544c4d60e81b6044820152606490fd5b60405162461bcd60e51b8152602060048201526003602482015262544c5560e81b6044820152606490fd5b81613eee575050565b600491613f0060038301918254613ac8565b905501613f0e5f8254613ac8565b9055565b90828117613f1f57505050565b81600491613f356003613f0e9501918254613ac8565b905501918254613ac8565b9080600f0b80155f14613f8a575050546001600160801b031615613f6057565b60405162461bcd60e51b815260206004820152600260248201526104e560f41b6044820152606490fd5b6001600160801b038354925f82851693125f14613fcf575f031690036001600160801b038111613a94576001600160801b03905b16906001600160801b031916179055565b16016001600160801b038111613a94576001600160801b0390613fbe565b91908201809211613a9457565b6001600160a01b0382165f9081526020829052604081205492949392908312156141145761403061402a84613a84565b82613b80565b905b6001600160a01b0386165f90815260208490526040902082905515808061410b575b156140d05750614072916001600160a01b0386169150600101614b11565b505b815160208084015160409485015185516001600160a01b03918216815292830194909452948316946001600160601b03169392909116917f7f22f03f333104bc32e14a8de3813ebf57e5a83d174e429a1a38945fa2ff6d6591a4565b159081614102575b506140e4575b50614074565b6140fb906001600160a01b03851690600101614602565b505f6140de565b9050155f6140d8565b50811515614054565b61411e8382613fed565b90614032565b908160209103126108aa575160ff811681036108aa5790565b908160609103126108aa57805191602082015165ffffffffffff811681036108aa57604061416c919301613c33565b90565b156141775750565b636690a80360e11b5f9081526001600160a01b0391909116600452602490fd5b60ff16604d8111613a9457600a0a90565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526141f1916141ec608483613865565b6148e5565b565b6004356001600160a01b038116918282036108aa57823314614235576142193383614473565b61423557505063295a81c160e01b5f523360045260245260445ffd5b915050565b600160ff1b811480156142ad575b61429e575f811215614294576142605f8281036149f3565b906001600160ff1b038211614281575f191260019081180361416c575f0390565b5063bf79e8d960e01b5f5260045260245ffd5b6142605f826149f3565b630d01a11b60e21b5f5260045ffd5b505f614248565b600160ff1b8114801561432c575b61429e575f811215614323576142e6815f035b5f84121561431c57835f03906149f3565b916001600160ff1b038311614309575f1991821291121860010361416c575f0390565b8263bf79e8d960e01b5f5260045260245ffd5b83906149f3565b6142e6816142d5565b50600160ff1b82146142c2565b60059061435e939261434e8160038401614b11565b505f520160205260405f20614b11565b50565b6001600160801b03815416159081614387575b8161437d575090565b6004915001541590565b6003810154159150614374565b916005830190825f52816020526143bc8160405f206001915f520160205260405f2054151590565b6143c7575b50505050565b6143db90835f528260205260405f20614602565b50815f5260205260405f2054156143f4575b80806143c1565b60036144009201614602565b505f806143ed565b5f5160206157d35f395f51905f5280546001600160a01b03199081169091555f5160206157735f395f51905f5280549182166001600160a01b0393841690811790915591167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b600861447d613c73565b019060018060a01b03165f5260205260405f209060018060a01b03165f5260205260ff60405f20541690565b7812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f2181116144d657670de0b6b3a76400000290565b633492ffd960e01b5f5260045260245ffd5b805482101561311a575f5260205f2001905f90565b7809392ee8e921d5d073aff322e62439fcf32d7f344649470f8f19811261455d577809392ee8e921d5d073aff322e62439fcf32d7f344649470f90811361454b57670de0b6b3a76400000290565b6371f72a3160e01b5f5260045260245ffd5b63e608e18b60e01b5f5260045260245ffd5b1561457657565b606460405162461bcd60e51b8152602060048201526004602482015263453c3d5360e01b6044820152fd5b6145ac81831161456f565b806145b6426144a9565b106145d5576145cb6145d09161416c93613b80565b614c1d565b614ce1565b60405162461bcd60e51b8152602060048201526005602482015264422e543c5360d81b6044820152606490fd5b906001820191815f528260205260405f20548015155f146146d5575f198101818111613a945782545f19810191908211613a945781810361468a575b50505080548015614676575f19019061465782826144e8565b8154905f199060031b1b19169055555f526020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b6146c061469a6146aa93866144e8565b90549060031b1c928392866144e8565b819391549060031b91821b915f19901b19161790565b90555f528360205260405f20555f808061463e565b505050505f90565b156146e457565b60405162461bcd60e51b81526020600482015260086024820152676f766572666c6f7760c01b6044820152606490fd5b5f19670de0b6b3a7640000820991670de0b6b3a76400008202918280851094039380850394146147a857670de0b6b3a764000082916147548684116146dd565b09816001811901168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b50809250156147b5570490565b60405162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b6044820152606490fd5b5f1982820982820291828083109203918083039214614851577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066993670de0b6b3a76400009161483d8484116146dd565b0990828211900360ee1b910360121c170290565b5050670de0b6b3a764000091500490565b5f1982820990828102928380841093039280840393146148a45761488b600160601b84106146dd565b600160601b910990828211900360a01b910360601c1790565b50505060601c90565b90915f1983830992808302928380861095039480860395146148d7579082916147548684116146dd565b5050809250156147b5570490565b81516001600160a01b03909116915f91829160200182855af13d1561498b573d67ffffffffffffffff81116137fc5761494091604051916149306020601f19601f8401160184613865565b82523d5f602084013e5b83615714565b8051908115159182614968575b50506149565750565b635274afe760e01b5f5260045260245ffd5b81925090602091810103126108aa5760206149839101613c33565b155f8061494d565b6149409060609061493a565b5f81126149ad5761416c91600160801b916148ad565b611d6b9061416c926149c3600160801b92613a84565b6148ad565b60ff5f5160206157b35f395f51905f525460401c16156149e457565b631afcd79f60e31b5f5260045ffd5b5f19828209828202908180821091039381850393670de0b6b3a7640000851015614a7b5790670de0b6b3a76400009109906706f05b59d3b1ffff82119414614a6a577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066992828211900360ee1b910360121c17020190565b50670de0b6b3a76400009150040190565b8463698d9a0160e11b5f5260045260245ffd5b600160ff1b811015614a9d5790565b60405162461bcd60e51b815260206004820152600d60248201526c746f496e74323536206f666c6f60981b6044820152606490fd5b5f8112614adc5790565b60405162461bcd60e51b815260206004820152600d60248201526c0746f55696e74323536203c203609c1b6044820152606490fd5b5f828152600182016020526040902054614b6357805490680100000000000000008210156137fc5782614b4e6146aa8460018096018555846144e8565b90558054925f520160205260405f2055600190565b50505f90565b5f19670de0b6b3a7640000820991670de0b6b3a7640000820291828085109403938085039414614c115781841015614bfa57670de0b6b3a7640000829109600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5082631dcf306360e21b5f5260045260245260445ffd5b509061416c9250613d52565b5f905f19670de0b6b3a7640000820990670de0b6b3a7640000810292838084109303928084039314614ccd576a1a1601fc4ea7109e000000831015614caa5750906a1a1601fc4ea7109e000000670de0b6b3a76400007f26af219e38cbb5fd03085f3343fbe09a551ce8a61639642d1af598ebf6968eaf94930990828211900360e71b910360191c170290565b631dcf306360e21b815260048390526a1a1601fc4ea7109e000000602452604490fd5b5050506a1a1601fc4ea7109e000000900490565b5f905f19670de0b6b3a7640000820990670de0b6b3a7640000810292838084109303928084039314614d8b5768056bc75e2d63100000831015614d6a57509068056bc75e2d63100000670de0b6b3a76400007f2fdf29ec6a12d6f7bf48d6861d4b553283e011b18b576460d489e3a9addec2d194930990828211900360ec1b910360141c170290565b631dcf306360e21b8152600483905268056bc75e2d63100000602452604490fd5b50505068056bc75e2d63100000900490565b94939194929092614dad81615093565b90614db785615093565b9460020b9060020b1295865f1461508157614ddd6001600160801b038216600f0b613aa8565b5f81600f0b125f14614fd357614df290613aa8565b6001600160801b031682866001600160a01b0380821690831611614fc9575b6001600160a01b039182169082168181039390929091908411613a94578015614f8f57614e6c93611d6b93614e6793614e62926001600160a01b03169060601b600160601b600160e01b03166148ad565b613d52565b614a8e565b965b15614f74576001600160801b0316600f0b935b5f85600f0b125f14614ef057611d6b614e675f936001600160801b03614eda94614ead614ee19a613aa8565b82169281816001600160a01b0380831690821611614ee5575b505090036001600160a01b03169116614862565b80966155ac565b9190565b925090505f80614ec6565b6001600160801b039181816001600160a01b0380831690821611614f69575b505090036001600160a01b03169316614f2d600160601b85836148ad565b93600160601b9109614f49575b5f614eda84614ee19550614a8e565b614f555f1984106146dd565b5f198314613a945760019290920191614f3a565b925090505f80614f0f565b6001600160801b03614f899116600f0b613aa8565b93614e81565b60405162461bcd60e51b8152602060048201526012602482015271073717274526174696f4158393620213e20360741b6044820152606490fd5b5050828690614e11565b859083906001600160a01b0380841690831611615076575b60601b600160601b600160e01b0316916001600160a01b039182169190811690828203908111613a94576001600160a01b03168215614f8f5761502f8282866148ad565b938215613d5c5709615054575b908161504e9282061515910401614a8e565b96614e6e565b6150605f1983106146dd565b5f198214613a9457600161504e9201915061503c565b849250879150614feb565b6001600160801b038116600f0b614ddd565b60020b5f8112156155a6576150a781613a84565b905b62010dec821161557d57600182161561556b576001600160881b036ffffcb933bd6fad37aa2d162d1a5940015b169160028116615530575b600481166154f5575b600881166154ba575b6010811661547f575b60208116615444575b60408116615409575b608081166153ce575b6101008116615393575b6102008116615358575b610400811661531d575b61080081166152e2575b61100081166152a7575b612000811661526c575b6140008116615231575b61800081166151f6575b62010000166151bb575b5f126151ad575b63ffffffff81166151a25761519e5f915b6001600160a01b039260ff169060201c613fed565b1690565b61519e600191615189565b8015613d5c575f1904615178565b906f09aa508b5b7a84e1c677de54f3e99bc98102908082046f09aa508b5b7a84e1c677de54f3e99bc91490151715613a945760801c90615171565b916f31be135f97d08fd981231505542fcfa68102908082046f31be135f97d08fd981231505542fcfa61490151715613a945760801c91615167565b916f70d869a156d2a1b890bb3df62baf32f78102908082046f70d869a156d2a1b890bb3df62baf32f71490151715613a945760801c9161515d565b916fa9f746462d870fdf8a65dc1f90e061e58102908082046fa9f746462d870fdf8a65dc1f90e061e51490151715613a945760801c91615153565b916fd097f3bdfd2022b8845ad8f792aa58258102908082046fd097f3bdfd2022b8845ad8f792aa58251490151715613a945760801c91615149565b916fe7159475a2c29b7443b29c7fa6e889d98102908082046fe7159475a2c29b7443b29c7fa6e889d91490151715613a945760801c9161513f565b916ff3392b0822b70005940c7a398e4b70f38102908082046ff3392b0822b70005940c7a398e4b70f31490151715613a945760801c91615135565b916ff987a7253ac413176f2b074cf7815e548102908082046ff987a7253ac413176f2b074cf7815e541490151715613a945760801c9161512b565b916ffcbe86c7900a88aedcffc83b479aa3a48102908082046ffcbe86c7900a88aedcffc83b479aa3a41490151715613a945760801c91615121565b916ffe5dee046a99a2a811c461f1969c30538102908082046ffe5dee046a99a2a811c461f1969c30531490151715613a945760801c91615117565b916fff2ea16466c96a3843ec78b326b528618102908082046fff2ea16466c96a3843ec78b326b528611490151715613a945760801c9161510e565b916fff973b41fa98c081472e6896dfb254c08102908082046fff973b41fa98c081472e6896dfb254c01490151715613a945760801c91615105565b916fffcb9843d60f6159c9db58835c9266448102908082046fffcb9843d60f6159c9db58835c9266441490151715613a945760801c916150fc565b916fffe5caca7e10e4e61c3624eaa0941cd08102908082046fffe5caca7e10e4e61c3624eaa0941cd01490151715613a945760801c916150f3565b916ffff2e50f5f656932ef12357cf3c7fdcc8102908082046ffff2e50f5f656932ef12357cf3c7fdcc1490151715613a945760801c916150ea565b916ffff97272373d413259a46990580e213a8102908082046ffff97272373d413259a46990580e213a1490151715613a945760801c916150e1565b6001600160881b03600160801b6150d6565b60405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606490fd5b806150a9565b92939093808211936155bd8561456f565b80158061570c575b615702576155d56155db916144fd565b956144fd565b926155e58561456f565b6155ee426144a9565b908282106145d55761563a946156359261562f9261162e9186908881106156ef57506156236145d06145cb615629938b613b80565b8b6142b4565b926142b4565b9461456f565b6145a1565b90600160ff1b811480156156e2575b6156d3575f8112156156ca5761566d815f035b5f8412156156c357835f0390614b69565b916001600160ff1b0383116156b057916001670de0b6b3a764000094926156ac945f1912905f191218145f146156a6576156a690613a84565b90613bb4565b0590565b82637cb4bef560e01b5f5260045260245ffd5b8390614b69565b61566d8161565c565b63b3c754a360e01b5f5260045ffd5b50600160ff1b8214615649565b6145d06145cb6156299361562393613b80565b5050505050505f90565b5085156155c5565b90615738575080511561572957805190602001fd5b630a12f52160e11b5f5260045ffd5b81511580615769575b615749575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561574156fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00a26469706673582212206c9cfb0f11974c1d3271db38e7fb5b41d28ab8f3faed3ac98d00ed8ee56ee7cc64736f6c634300081e0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00";
2513
+
2514
+ type CollateralEngineConstructorParams =
2515
+ | [linkLibraryAddresses: CollateralEngineLibraryAddresses, signer?: Signer]
2516
+ | ConstructorParameters<typeof ContractFactory>;
2517
+
2518
+ const isSuperArgs = (
2519
+ xs: CollateralEngineConstructorParams
2520
+ ): xs is ConstructorParameters<typeof ContractFactory> => {
2521
+ return (
2522
+ typeof xs[0] === "string" ||
2523
+ (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) ||
2524
+ "_isInterface" in xs[0]
2525
+ );
2526
+ };
2527
+
2528
+ export class CollateralEngine__factory extends ContractFactory {
2529
+ constructor(...args: CollateralEngineConstructorParams) {
2530
+ if (isSuperArgs(args)) {
2531
+ super(...args);
2532
+ } else {
2533
+ const [linkLibraryAddresses, signer] = args;
2534
+ super(
2535
+ _abi,
2536
+ CollateralEngine__factory.linkBytecode(linkLibraryAddresses),
2537
+ signer
2538
+ );
2539
+ }
2540
+ }
2541
+
2542
+ static linkBytecode(
2543
+ linkLibraryAddresses: CollateralEngineLibraryAddresses
2544
+ ): string {
2545
+ let linkedBytecode = _bytecode;
2546
+
2547
+ linkedBytecode = linkedBytecode.replace(
2548
+ new RegExp("__\\$134b6c58d0b200b9f69932d007736bd671\\$__", "g"),
2549
+ linkLibraryAddresses[
2550
+ "src/core_libraries/CollateralEngineLibrary.sol:CollateralEngineLibrary"
2551
+ ]
2552
+ .replace(/^0x/, "")
2553
+ .toLowerCase()
2554
+ );
2555
+
2556
+ return linkedBytecode;
2557
+ }
2558
+
2559
+ override getDeployTransaction(
2560
+ overrides?: NonPayableOverrides & { from?: string }
2561
+ ): Promise<ContractDeployTransaction> {
2562
+ return super.getDeployTransaction(overrides || {});
2563
+ }
2564
+ override deploy(overrides?: NonPayableOverrides & { from?: string }) {
2565
+ return super.deploy(overrides || {}) as Promise<
2566
+ CollateralEngine & {
2567
+ deploymentTransaction(): ContractTransactionResponse;
2568
+ }
2569
+ >;
2570
+ }
2571
+ override connect(runner: ContractRunner | null): CollateralEngine__factory {
2572
+ return super.connect(runner) as CollateralEngine__factory;
2573
+ }
2574
+
2575
+ static readonly bytecode = _bytecode;
2576
+ static readonly abi = _abi;
2577
+ static createInterface(): CollateralEngineInterface {
2578
+ return new Interface(_abi) as CollateralEngineInterface;
2579
+ }
2580
+ static connect(
2581
+ address: string,
2582
+ runner?: ContractRunner | null
2583
+ ): CollateralEngine {
2584
+ return new Contract(address, _abi, runner) as unknown as CollateralEngine;
2585
+ }
2586
+ }
2587
+
2588
+ export interface CollateralEngineLibraryAddresses {
2589
+ ["src/core_libraries/CollateralEngineLibrary.sol:CollateralEngineLibrary"]: string;
2590
+ }