@sudobility/contracts 0.14.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +2 -3
  2. package/artifacts/contracts/Mailer.sol/Mailer.dbg.json +1 -1
  3. package/artifacts/contracts/Mailer.sol/Mailer.json +2 -278
  4. package/artifacts/contracts/MockUSDC.sol/MockUSDC.dbg.json +1 -1
  5. package/artifacts/contracts/interfaces/IERC20.sol/IERC20.dbg.json +1 -1
  6. package/dist/evm/src/evm/index.d.ts +1 -1
  7. package/dist/evm/src/evm/index.d.ts.map +1 -1
  8. package/dist/evm/src/evm/index.js +1 -1
  9. package/dist/evm/src/evm/index.js.map +1 -1
  10. package/dist/evm/src/evm/mailer-client.d.ts +180 -936
  11. package/dist/evm/src/evm/mailer-client.d.ts.map +1 -1
  12. package/dist/evm/src/evm/mailer-client.js +249 -451
  13. package/dist/evm/src/evm/mailer-client.js.map +1 -1
  14. package/dist/evm/typechain-types/Mailer.d.ts +10 -177
  15. package/dist/evm/typechain-types/Mailer.d.ts.map +1 -1
  16. package/dist/evm/typechain-types/factories/Mailer__factory.d.ts +1 -216
  17. package/dist/evm/typechain-types/factories/Mailer__factory.d.ts.map +1 -1
  18. package/dist/evm/typechain-types/factories/Mailer__factory.js +1 -277
  19. package/dist/evm/typechain-types/factories/Mailer__factory.js.map +1 -1
  20. package/dist/solana/solana/index.d.ts +1 -1
  21. package/dist/solana/solana/index.d.ts.map +1 -1
  22. package/dist/solana/solana/index.js +1 -3
  23. package/dist/solana/solana/index.js.map +1 -1
  24. package/dist/solana/solana/mailer-client.d.ts +18 -91
  25. package/dist/solana/solana/mailer-client.d.ts.map +1 -1
  26. package/dist/solana/solana/mailer-client.js +55 -316
  27. package/dist/solana/solana/mailer-client.js.map +1 -1
  28. package/dist/unified/src/evm/index.d.ts +1 -1
  29. package/dist/unified/src/evm/index.d.ts.map +1 -1
  30. package/dist/unified/src/evm/index.js +1 -1
  31. package/dist/unified/src/evm/index.js.map +1 -1
  32. package/dist/unified/src/evm/mailer-client.d.ts +180 -936
  33. package/dist/unified/src/evm/mailer-client.d.ts.map +1 -1
  34. package/dist/unified/src/evm/mailer-client.js +249 -451
  35. package/dist/unified/src/evm/mailer-client.js.map +1 -1
  36. package/dist/unified/src/react/hooks/useMailerMutations.d.ts +1 -1
  37. package/dist/unified/src/react/hooks/useMailerMutations.js +1 -1
  38. package/dist/unified/src/solana/index.d.ts +1 -1
  39. package/dist/unified/src/solana/index.d.ts.map +1 -1
  40. package/dist/unified/src/solana/index.js +1 -3
  41. package/dist/unified/src/solana/index.js.map +1 -1
  42. package/dist/unified/src/solana/mailer-client.d.ts +18 -91
  43. package/dist/unified/src/solana/mailer-client.d.ts.map +1 -1
  44. package/dist/unified/src/solana/mailer-client.js +55 -316
  45. package/dist/unified/src/solana/mailer-client.js.map +1 -1
  46. package/dist/unified/src/unified/index.d.ts +1 -1
  47. package/dist/unified/src/unified/index.d.ts.map +1 -1
  48. package/dist/unified/src/unified/onchain-mailer-client.d.ts +251 -111
  49. package/dist/unified/src/unified/onchain-mailer-client.d.ts.map +1 -1
  50. package/dist/unified/src/unified/onchain-mailer-client.js +1375 -744
  51. package/dist/unified/src/unified/onchain-mailer-client.js.map +1 -1
  52. package/dist/unified/src/unified/types.d.ts +6 -16
  53. package/dist/unified/src/unified/types.d.ts.map +1 -1
  54. package/dist/unified/src/utils/chain-config.d.ts +2 -4
  55. package/dist/unified/src/utils/chain-config.d.ts.map +1 -1
  56. package/dist/unified/src/utils/chain-config.js +36 -46
  57. package/dist/unified/src/utils/chain-config.js.map +1 -1
  58. package/dist/unified/typechain-types/Mailer.d.ts +10 -177
  59. package/dist/unified/typechain-types/Mailer.d.ts.map +1 -1
  60. package/dist/unified/typechain-types/factories/Mailer__factory.d.ts +1 -216
  61. package/dist/unified/typechain-types/factories/Mailer__factory.d.ts.map +1 -1
  62. package/dist/unified/typechain-types/factories/Mailer__factory.js +1 -277
  63. package/dist/unified/typechain-types/factories/Mailer__factory.js.map +1 -1
  64. package/dist/unified-esm/src/evm/index.d.ts +1 -1
  65. package/dist/unified-esm/src/evm/index.d.ts.map +1 -1
  66. package/dist/unified-esm/src/evm/index.js +1 -1
  67. package/dist/unified-esm/src/evm/index.js.map +1 -1
  68. package/dist/unified-esm/src/evm/mailer-client.d.ts +180 -936
  69. package/dist/unified-esm/src/evm/mailer-client.d.ts.map +1 -1
  70. package/dist/unified-esm/src/evm/mailer-client.js +251 -453
  71. package/dist/unified-esm/src/evm/mailer-client.js.map +1 -1
  72. package/dist/unified-esm/src/react/hooks/useMailerMutations.d.ts +1 -1
  73. package/dist/unified-esm/src/react/hooks/useMailerMutations.js +1 -1
  74. package/dist/unified-esm/src/solana/index.d.ts +1 -1
  75. package/dist/unified-esm/src/solana/index.d.ts.map +1 -1
  76. package/dist/unified-esm/src/solana/index.js +1 -1
  77. package/dist/unified-esm/src/solana/index.js.map +1 -1
  78. package/dist/unified-esm/src/solana/mailer-client.d.ts +18 -91
  79. package/dist/unified-esm/src/solana/mailer-client.d.ts.map +1 -1
  80. package/dist/unified-esm/src/solana/mailer-client.js +56 -317
  81. package/dist/unified-esm/src/solana/mailer-client.js.map +1 -1
  82. package/dist/unified-esm/src/unified/index.d.ts +1 -1
  83. package/dist/unified-esm/src/unified/index.d.ts.map +1 -1
  84. package/dist/unified-esm/src/unified/onchain-mailer-client.d.ts +251 -111
  85. package/dist/unified-esm/src/unified/onchain-mailer-client.d.ts.map +1 -1
  86. package/dist/unified-esm/src/unified/onchain-mailer-client.js +1379 -748
  87. package/dist/unified-esm/src/unified/onchain-mailer-client.js.map +1 -1
  88. package/dist/unified-esm/src/unified/types.d.ts +6 -16
  89. package/dist/unified-esm/src/unified/types.d.ts.map +1 -1
  90. package/dist/unified-esm/src/utils/chain-config.d.ts +2 -4
  91. package/dist/unified-esm/src/utils/chain-config.d.ts.map +1 -1
  92. package/dist/unified-esm/src/utils/chain-config.js +35 -46
  93. package/dist/unified-esm/src/utils/chain-config.js.map +1 -1
  94. package/dist/unified-esm/typechain-types/Mailer.d.ts +10 -177
  95. package/dist/unified-esm/typechain-types/Mailer.d.ts.map +1 -1
  96. package/dist/unified-esm/typechain-types/factories/Mailer__factory.d.ts +1 -216
  97. package/dist/unified-esm/typechain-types/factories/Mailer__factory.d.ts.map +1 -1
  98. package/dist/unified-esm/typechain-types/factories/Mailer__factory.js +1 -277
  99. package/dist/unified-esm/typechain-types/factories/Mailer__factory.js.map +1 -1
  100. package/package.json +9 -20
  101. package/programs/mailer/src/lib.rs +171 -1026
  102. package/programs/mailer/tests/integration_tests.rs +65 -586
  103. package/typechain-types/Mailer.ts +8 -319
  104. package/typechain-types/factories/Mailer__factory.ts +1 -277
  105. package/artifacts/contracts/Mailer.sol/Mailer.d.ts +0 -1146
  106. package/artifacts/contracts/Mailer.sol/artifacts.d.ts +0 -21
  107. package/artifacts/contracts/MockUSDC.sol/MockUSDC.d.ts +0 -284
  108. package/artifacts/contracts/MockUSDC.sol/artifacts.d.ts +0 -21
  109. package/artifacts/contracts/interfaces/IERC20.sol/IERC20.d.ts +0 -157
  110. package/artifacts/contracts/interfaces/IERC20.sol/artifacts.d.ts +0 -21
@@ -58,11 +58,6 @@ const _abi = [
58
58
  name: "InvalidAddress",
59
59
  type: "error",
60
60
  },
61
- {
62
- inputs: [],
63
- name: "InvalidPercentage",
64
- type: "error",
65
- },
66
61
  {
67
62
  inputs: [],
68
63
  name: "MathOverflow",
@@ -88,11 +83,6 @@ const _abi = [
88
83
  name: "TransferFailed",
89
84
  type: "error",
90
85
  },
91
- {
92
- inputs: [],
93
- name: "UnpermittedPayer",
94
- type: "error",
95
- },
96
86
  {
97
87
  anonymous: false,
98
88
  inputs: [],
@@ -105,25 +95,6 @@ const _abi = [
105
95
  name: "ContractUnpaused",
106
96
  type: "event",
107
97
  },
108
- {
109
- anonymous: false,
110
- inputs: [
111
- {
112
- indexed: true,
113
- internalType: "address",
114
- name: "account",
115
- type: "address",
116
- },
117
- {
118
- indexed: false,
119
- internalType: "uint256",
120
- name: "percentage",
121
- type: "uint256",
122
- },
123
- ],
124
- name: "CustomFeePercentageSet",
125
- type: "event",
126
- },
127
98
  {
128
99
  anonymous: false,
129
100
  inputs: [
@@ -312,44 +283,6 @@ const _abi = [
312
283
  name: "OwnerClaimed",
313
284
  type: "event",
314
285
  },
315
- {
316
- anonymous: false,
317
- inputs: [
318
- {
319
- indexed: true,
320
- internalType: "address",
321
- name: "contractAddress",
322
- type: "address",
323
- },
324
- {
325
- indexed: true,
326
- internalType: "address",
327
- name: "wallet",
328
- type: "address",
329
- },
330
- ],
331
- name: "PermissionGranted",
332
- type: "event",
333
- },
334
- {
335
- anonymous: false,
336
- inputs: [
337
- {
338
- indexed: true,
339
- internalType: "address",
340
- name: "contractAddress",
341
- type: "address",
342
- },
343
- {
344
- indexed: true,
345
- internalType: "address",
346
- name: "wallet",
347
- type: "address",
348
- },
349
- ],
350
- name: "PermissionRevoked",
351
- type: "event",
352
- },
353
286
  {
354
287
  anonymous: false,
355
288
  inputs: [
@@ -456,43 +389,6 @@ const _abi = [
456
389
  name: "SharesRecorded",
457
390
  type: "event",
458
391
  },
459
- {
460
- anonymous: false,
461
- inputs: [
462
- {
463
- indexed: true,
464
- internalType: "address",
465
- name: "from",
466
- type: "address",
467
- },
468
- {
469
- indexed: true,
470
- internalType: "address",
471
- name: "to",
472
- type: "address",
473
- },
474
- {
475
- indexed: true,
476
- internalType: "string",
477
- name: "webhookId",
478
- type: "string",
479
- },
480
- {
481
- indexed: false,
482
- internalType: "bool",
483
- name: "revenueShareToReceiver",
484
- type: "bool",
485
- },
486
- {
487
- indexed: false,
488
- internalType: "bool",
489
- name: "resolveSenderToName",
490
- type: "bool",
491
- },
492
- ],
493
- name: "WebhookMailSent",
494
- type: "event",
495
- },
496
392
  {
497
393
  inputs: [],
498
394
  name: "CLAIM_PERIOD",
@@ -559,38 +455,6 @@ const _abi = [
559
455
  stateMutability: "nonpayable",
560
456
  type: "function",
561
457
  },
562
- {
563
- inputs: [
564
- {
565
- internalType: "address",
566
- name: "account",
567
- type: "address",
568
- },
569
- ],
570
- name: "clearCustomFeePercentage",
571
- outputs: [],
572
- stateMutability: "nonpayable",
573
- type: "function",
574
- },
575
- {
576
- inputs: [
577
- {
578
- internalType: "address",
579
- name: "",
580
- type: "address",
581
- },
582
- ],
583
- name: "customFeeDiscount",
584
- outputs: [
585
- {
586
- internalType: "uint256",
587
- name: "",
588
- type: "uint256",
589
- },
590
- ],
591
- stateMutability: "view",
592
- type: "function",
593
- },
594
458
  {
595
459
  inputs: [
596
460
  {
@@ -637,25 +501,6 @@ const _abi = [
637
501
  stateMutability: "nonpayable",
638
502
  type: "function",
639
503
  },
640
- {
641
- inputs: [
642
- {
643
- internalType: "address",
644
- name: "account",
645
- type: "address",
646
- },
647
- ],
648
- name: "getCustomFeePercentage",
649
- outputs: [
650
- {
651
- internalType: "uint256",
652
- name: "",
653
- type: "uint256",
654
- },
655
- ],
656
- stateMutability: "view",
657
- type: "function",
658
- },
659
504
  {
660
505
  inputs: [],
661
506
  name: "getDelegationFee",
@@ -783,30 +628,6 @@ const _abi = [
783
628
  stateMutability: "view",
784
629
  type: "function",
785
630
  },
786
- {
787
- inputs: [
788
- {
789
- internalType: "address",
790
- name: "",
791
- type: "address",
792
- },
793
- {
794
- internalType: "address",
795
- name: "",
796
- type: "address",
797
- },
798
- ],
799
- name: "permissions",
800
- outputs: [
801
- {
802
- internalType: "bool",
803
- name: "",
804
- type: "bool",
805
- },
806
- ],
807
- stateMutability: "view",
808
- type: "function",
809
- },
810
631
  {
811
632
  inputs: [
812
633
  {
@@ -844,19 +665,6 @@ const _abi = [
844
665
  stateMutability: "nonpayable",
845
666
  type: "function",
846
667
  },
847
- {
848
- inputs: [
849
- {
850
- internalType: "address",
851
- name: "contractAddress",
852
- type: "address",
853
- },
854
- ],
855
- name: "removePermission",
856
- outputs: [],
857
- stateMutability: "nonpayable",
858
- type: "function",
859
- },
860
668
  {
861
669
  inputs: [
862
670
  {
@@ -874,11 +682,6 @@ const _abi = [
874
682
  name: "body",
875
683
  type: "string",
876
684
  },
877
- {
878
- internalType: "address",
879
- name: "payer",
880
- type: "address",
881
- },
882
685
  {
883
686
  internalType: "bool",
884
687
  name: "revenueShareToReceiver",
@@ -920,11 +723,6 @@ const _abi = [
920
723
  name: "mailId",
921
724
  type: "string",
922
725
  },
923
- {
924
- internalType: "address",
925
- name: "payer",
926
- type: "address",
927
- },
928
726
  {
929
727
  internalType: "bool",
930
728
  name: "revenueShareToReceiver",
@@ -953,50 +751,12 @@ const _abi = [
953
751
  name: "mailId",
954
752
  type: "string",
955
753
  },
956
- {
957
- internalType: "address",
958
- name: "payer",
959
- type: "address",
960
- },
961
754
  ],
962
755
  name: "sendPreparedToEmailAddress",
963
756
  outputs: [],
964
757
  stateMutability: "nonpayable",
965
758
  type: "function",
966
759
  },
967
- {
968
- inputs: [
969
- {
970
- internalType: "address",
971
- name: "to",
972
- type: "address",
973
- },
974
- {
975
- internalType: "string",
976
- name: "webhookId",
977
- type: "string",
978
- },
979
- {
980
- internalType: "address",
981
- name: "payer",
982
- type: "address",
983
- },
984
- {
985
- internalType: "bool",
986
- name: "revenueShareToReceiver",
987
- type: "bool",
988
- },
989
- {
990
- internalType: "bool",
991
- name: "resolveSenderToName",
992
- type: "bool",
993
- },
994
- ],
995
- name: "sendThroughWebhook",
996
- outputs: [],
997
- stateMutability: "nonpayable",
998
- type: "function",
999
- },
1000
760
  {
1001
761
  inputs: [
1002
762
  {
@@ -1014,35 +774,12 @@ const _abi = [
1014
774
  name: "body",
1015
775
  type: "string",
1016
776
  },
1017
- {
1018
- internalType: "address",
1019
- name: "payer",
1020
- type: "address",
1021
- },
1022
777
  ],
1023
778
  name: "sendToEmailAddress",
1024
779
  outputs: [],
1025
780
  stateMutability: "nonpayable",
1026
781
  type: "function",
1027
782
  },
1028
- {
1029
- inputs: [
1030
- {
1031
- internalType: "address",
1032
- name: "account",
1033
- type: "address",
1034
- },
1035
- {
1036
- internalType: "uint256",
1037
- name: "percentage",
1038
- type: "uint256",
1039
- },
1040
- ],
1041
- name: "setCustomFeePercentage",
1042
- outputs: [],
1043
- stateMutability: "nonpayable",
1044
- type: "function",
1045
- },
1046
783
  {
1047
784
  inputs: [
1048
785
  {
@@ -1069,19 +806,6 @@ const _abi = [
1069
806
  stateMutability: "nonpayable",
1070
807
  type: "function",
1071
808
  },
1072
- {
1073
- inputs: [
1074
- {
1075
- internalType: "address",
1076
- name: "contractAddress",
1077
- type: "address",
1078
- },
1079
- ],
1080
- name: "setPermission",
1081
- outputs: [],
1082
- stateMutability: "nonpayable",
1083
- type: "function",
1084
- },
1085
809
  {
1086
810
  inputs: [],
1087
811
  name: "unpause",
@@ -1105,7 +829,7 @@ const _abi = [
1105
829
  ] as const;
1106
830
 
1107
831
  const _bytecode =
1108
- "0x60c0604052620186a0600055629896806001553480156200001f57600080fd5b5060405162002251380380620022518339810160408190526200004291620000b4565b6001600160a01b03821615806200006057506001600160a01b038116155b156200007f5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b039182166080521660a052620000ec565b80516001600160a01b0381168114620000af57600080fd5b919050565b60008060408385031215620000c857600080fd5b620000d38362000097565b9150620000e36020840162000097565b90509250929050565b60805160a0516120c162000190600039600081816103df01528181610543015281816107d30152818161087d0152818161098301528181610a2401528181610c5001528181610e4801528181610ef301528181611030015281816110c80152818161117101526114e2015260008181610250015281816108af01528181610b70015281816110fa0152818161134a015281816117ff015261198901526120c16000f3fe608060405234801561001057600080fd5b50600436106102315760003560e01c80638456cb5911610130578063b85a35d2116100b8578063d15786871161007c578063d1578687146104ee578063dbb24ff5146104f6578063e074bb4714610509578063ebf77de01461051c578063f2292f091461052f57600080fd5b8063b85a35d214610487578063bbb2fe7c1461049a578063c5f0a58f146104ad578063cd564ccd146104b6578063ced72f87146104e657600080fd5b80639ded51dd116100ff5780639ded51dd1461041c578063a3a336bf14610424578063ac637c7a14610460578063ae39279f14610473578063b187bd261461047c57600080fd5b80638456cb59146103d25780638da5cb5b146103da5780638db3c5fd14610401578063931e02381461040957600080fd5b80633ff5aecd116101be578063585450141161018257806358545014146103845780635c975abb1461039757806369fe0e2d146103a45780636a1c6e78146103b7578063720e586f146103bf57600080fd5b80633ff5aecd1461032e5780634a4e3bd51461034e5780634b0b1b8b1461035657806355bfc81c1461035e578063573321bb1461037157600080fd5b806327fe3a031161020557806327fe3a03146102e5578063285298af146102f85780632fad573e1461030b578063358cbf0a1461031e5780633f4ba83a1461032657600080fd5b80620270a41461023657806311eac8551461024b5780631f9838b51461028f57806321241dfe146102cd575b600080fd5b610249610244366004611bc0565b610538565b005b6102727f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6102bd61029d366004611be2565b600760209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610286565b6102d7624f1a0081565b604051908152602001610286565b6102496102f3366004611c6f565b610625565b6102d7610306366004611bc0565b6106ea565b610249610319366004611c6f565b610714565b6102496107c8565b610249610978565b6102d761033c366004611bc0565b60066020526000908152604090205481565b610249610a19565b610249610aba565b61024961036c366004611cfa565b610c45565b61024961037f366004611d13565b610cf8565b610249610392366004611bc0565b610db3565b6005546102bd9060ff1681565b6102496103b2366004611cfa565b610e3d565b6102d7600a81565b6102496103cd366004611bc0565b610ee8565b610249611025565b6102727f000000000000000000000000000000000000000000000000000000000000000081565b6102d7605a81565b610249610417366004611dcb565b61120b565b6001546102d7565b61044b610432366004611bc0565b6002602052600090815260409020805460019091015482565b60408051928352602083019190915201610286565b61024961046e366004611bc0565b6112ca565b6102d760005481565b60055460ff166102bd565b610249610495366004611bc0565b611433565b6102496104a8366004611e4c565b6114d7565b6102d760015481565b6104c96104c4366004611bc0565b6115f3565b604080519384526020840192909252151590820152606001610286565b6000546102d7565b6003546102d7565b610249610504366004611e76565b611640565b610249610517366004611bc0565b6116f1565b61024961052a366004611bc0565b61176e565b6102d760035481565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461058157604051635fc483c560e01b815260040160405180910390fd5b60055460ff16156105a5576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b0381166105cc5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03811660008181526006602052604080822091909155517fb6ddac613582447a8fcbbe869621560344bdbe26d6fea183b1e155cd223d864d9061061a906064815260200190565b60405180910390a250565b600454600103610648576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610671576040516306d39fcd60e41b815260040160405180910390fd5b61067c8387846118cc565b848460405161068c929190611f21565b6040805191829003822084151583528315156020840152916001600160a01b0389169133917f6c92a5c8a1b6c49076a075d1a499458f543fd2588ea971574373865f817ce83d91015b60405180910390a45050600060045550505050565b6001600160a01b03811660009081526006602052604081205461070e906064611f47565b92915050565b600454600103610737576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610760576040516306d39fcd60e41b815260040160405180910390fd5b61076b8387846118cc565b848460405161077b929190611f21565b6040805191829003822084151583528315156020840152916001600160a01b0389169133917f6a00347d56e88979c493ca2baa527a6cd1009b34431c4ef1021a5c0edd78562591016106d5565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461081157604051635fc483c560e01b815260040160405180910390fd5b600454600103610834576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560035460000361085c5760405163493c1ab760e01b815260040160405180910390fd5b6003805460009182905560405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190611f5a565b90508061093c576040516312171d8360e31b815260040160405180910390fd5b6040518281527f81521279371b94892737e5e06851c322303c72e5493db1453314ea08f55cb9379060200160405180910390a150506000600455565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c157604051635fc483c560e01b815260040160405180910390fd5b60055460ff166109e45760405163dcdde9dd60e01b815260040160405180910390fd5b6005805460ff191690556040517f0e5e3b3fb504c22cf5c42fa07d521225937514c654007e1f12646f89768d6f9490600090a1565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a6257604051635fc483c560e01b815260040160405180910390fd5b60055460ff16610a855760405163dcdde9dd60e01b815260040160405180910390fd5b6005805460ff191690556040517f15de7ad89d29fd1c6d2e6b1e878453569b4080edf34e0105faaa3bd52f01853090600090a1565b600454600103610add576040516345f5ce8b60e11b815260040160405180910390fd5b60016004553360009081526002602052604081208054909103610b135760405163493c1ab760e01b815260040160405180910390fd5b624f1a008160010154610b269190611f77565b421115610b465760405163493c1ab760e01b815260040160405180910390fd5b805460008083556001830181905560405163a9059cbb60e01b8152336004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be59190611f5a565b905080610c05576040516312171d8360e31b815260040160405180910390fd5b60405182815233907f6673747791df7fe01578fcaebe4082d6d7680f052dbdd7d2cf345f88121be421906020015b60405180910390a25050600060045550565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c8e57604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615610cb2576040516306d39fcd60e41b815260040160405180910390fd5b600180549082905560408051828152602081018490527f83b05743f1284b2faed08b3f927951e6663e5277e09a40c939f0dfe5075af77891015b60405180910390a15050565b600454600103610d1b576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610d44576040516306d39fcd60e41b815260040160405180910390fd5b610d4f8389846118cc565b876001600160a01b0316336001600160a01b03167f4576724219bca1c695ff280c4eba3f012c99252acd6c7d90c0407f63f8e6ad26898989898888604051610d9c96959493929190611fb3565b60405180910390a350506000600455505050505050565b600454600103610dd6576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610dff576040516306d39fcd60e41b815260040160405180910390fd5b6040516000906001600160a01b038316907f39e3ace752997a751bda5ecf126da84d0d23d5e61f3f56f26a6b22990d7beed8908390a3506000600455565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e8657604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615610eaa576040516306d39fcd60e41b815260040160405180910390fd5b600080549082905560408051828152602081018490527f528d9479e9f9889a87a3c30c7f7ba537e5e59c4c85a37733b16e57c62df613029101610cec565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f3157604051635fc483c560e01b815260040160405180910390fd5b600454600103610f54576040516345f5ce8b60e11b815260040160405180910390fd5b60016004556001600160a01b03811660009081526002602052604081208054909103610f935760405163493c1ab760e01b815260040160405180910390fd5b624f1a008160010154610fa69190611f77565b4211610fc5576040516326f6703f60e11b815260040160405180910390fd5b805460008083556001830181905560038054839290610fe5908490611f77565b90915550506040518181526001600160a01b038416907fb4572b7f0782a4b7672a2341d00e4f1a0af99d81a3f8e959f25ff679eb31448190602001610c33565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e57604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615611092576040516306d39fcd60e41b815260040160405180910390fd5b6005805460ff19166001179055600354156111e0576003805460009182905560405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111679190611f5a565b905080156111d7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f26536799ace2c3dbe12e638ec3ade6b4173dcf1289be0a58d51a5003015649bd836040516111ca91815260200190565b60405180910390a26111dd565b60038290555b50505b6040517fab35696f06e428ebc5ceba8cd17f8fed287baf43440206d1943af1ee53e6d26790600090a1565b60045460010361122e576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615611257576040516306d39fcd60e41b815260040160405180910390fd5b611263816000806118cc565b8282604051611273929190611f21565b6040518091039020336001600160a01b03167ffadda1f12158473f0f6a95450c4108a36fc8aa62f3dee6a9de94c8c59947044387876040516112b6929190611ff5565b60405180910390a350506000600455505050565b6004546001036112ed576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615611316576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b038116156113f5576001546040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af115801561139b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113bf9190611f5a565b6113dc57604051634aa23e8f60e11b815260040160405180910390fd5b80600360008282546113ee9190611f77565b9091555050505b6040516001600160a01b0382169033907f39e3ace752997a751bda5ecf126da84d0d23d5e61f3f56f26a6b22990d7beed890600090a3506000600455565b60055460ff1615611457576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b03811661147e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381166000818152600760209081526040808320338085529252808320805460ff19166001179055519092917f0ceda602a8e00ef76afe24614343eb6c034877c816b6184d641d2d8b713a0fc691a350565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152057604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615611544576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b03821661156b5760405163e6c4247b60e01b815260040160405180910390fd5b606481111561158d57604051631f3b85d360e01b815260040160405180910390fd5b611598816064611f47565b6001600160a01b038316600081815260066020526040908190209290925590517fb6ddac613582447a8fcbbe869621560344bdbe26d6fea183b1e155cd223d864d906115e79084815260200190565b60405180910390a25050565b6001600160a01b038116600090815260026020526040812080546001820154909291829161162590624f1a0090611f77565b81549093501580159061163757508242115b93959294505050565b600454600103611663576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff161561168c576040516306d39fcd60e41b815260040160405180910390fd5b611698816000806118cc565b336001600160a01b03167fe137336c26280396075fb19ebe313eb4c539c2d845386ad035d8dee029bba3138888888888886040516116db96959493929190612009565b60405180910390a2505060006004555050505050565b6001600160a01b0381166117185760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381166000818152600760209081526040808320338085529252808320805460ff19169055519092917f5f708ef9fc37d19d88246c264788c8cdf640c9ff500bd168e941ea1421c4f6c491a350565b60055460ff166117915760405163dcdde9dd60e01b815260040160405180910390fd5b6001600160a01b038116600090815260026020526040812080549091036117cb5760405163493c1ab760e01b815260040160405180910390fd5b805460008083556001830181905560405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186c9190611f5a565b905080156118bc57836001600160a01b03167f26536799ace2c3dbe12e638ec3ade6b4173dcf1289be0a58d51a5003015649bd836040516118af91815260200190565b60405180910390a26118c6565b8183554260018401555b50505050565b336001600160a01b0384161480159061190957503360009081526007602090815260408083206001600160a01b038716845290915290205460ff16155b156119275760405163184d62c560e01b815260040160405180910390fd5b600061193584600054611a5d565b9050806000036119455750505050565b600082611958576064600a83020461195a565b815b6040516323b872dd60e01b81526001600160a01b038781166004830152306024830152604482018390529192507f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303816000875af11580156119d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f89190611f5a565b611a1557604051634aa23e8f60e11b815260040160405180910390fd5b828015611a2a57506001600160a01b03841615155b15611a3e57611a398483611a9e565b611a56565b8060036000828254611a509190611f77565b90915550505b5050505050565b6001600160a01b0382166000908152600660205260408120546064611a828282611f47565b611a8c9085612052565b611a969190612069565b949350505050565b611aab605a600019612069565b811115611acb57604051634eab2ea760e11b815260040160405180910390fd5b60006064611ada600a84612052565b611ae49190612069565b90506000611af28284611f47565b6001600160a01b038516600090815260026020526040812080549293508392909190611b1f908490611f77565b90915550506001600160a01b03841660009081526002602052604081204260019091015560038054849290611b55908490611f77565b909155505060408051828152602081018490526001600160a01b038616917fad83ccf4aebaf9db0cc5658b24e378a4a865a51b863e0289e3ee0e4947d97b1c910160405180910390a250505050565b80356001600160a01b0381168114611bbb57600080fd5b919050565b600060208284031215611bd257600080fd5b611bdb82611ba4565b9392505050565b60008060408385031215611bf557600080fd5b611bfe83611ba4565b9150611c0c60208401611ba4565b90509250929050565b60008083601f840112611c2757600080fd5b50813567ffffffffffffffff811115611c3f57600080fd5b602083019150836020828501011115611c5757600080fd5b9250929050565b8015158114611c6c57600080fd5b50565b60008060008060008060a08789031215611c8857600080fd5b611c9187611ba4565b9550602087013567ffffffffffffffff811115611cad57600080fd5b611cb989828a01611c15565b9096509450611ccc905060408801611ba4565b92506060870135611cdc81611c5e565b91506080870135611cec81611c5e565b809150509295509295509295565b600060208284031215611d0c57600080fd5b5035919050565b60008060008060008060008060c0898b031215611d2f57600080fd5b611d3889611ba4565b9750602089013567ffffffffffffffff80821115611d5557600080fd5b611d618c838d01611c15565b909950975060408b0135915080821115611d7a57600080fd5b50611d878b828c01611c15565b9096509450611d9a905060608a01611ba4565b92506080890135611daa81611c5e565b915060a0890135611dba81611c5e565b809150509295985092959890939650565b600080600080600060608688031215611de357600080fd5b853567ffffffffffffffff80821115611dfb57600080fd5b611e0789838a01611c15565b90975095506020880135915080821115611e2057600080fd5b50611e2d88828901611c15565b9094509250611e40905060408701611ba4565b90509295509295909350565b60008060408385031215611e5f57600080fd5b611e6883611ba4565b946020939093013593505050565b60008060008060008060006080888a031215611e9157600080fd5b873567ffffffffffffffff80821115611ea957600080fd5b611eb58b838c01611c15565b909950975060208a0135915080821115611ece57600080fd5b611eda8b838c01611c15565b909750955060408a0135915080821115611ef357600080fd5b50611f008a828b01611c15565b9094509250611f13905060608901611ba4565b905092959891949750929550565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561070e5761070e611f31565b600060208284031215611f6c57600080fd5b8151611bdb81611c5e565b8082018082111561070e5761070e611f31565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b608081526000611fc760808301888a611f8a565b8281036020840152611fda818789611f8a565b94151560408401525050901515606090910152949350505050565b602081526000611a96602083018486611f8a565b60608152600061201d60608301888a611f8a565b8281036020840152612030818789611f8a565b90508281036040840152612045818587611f8a565b9998505050505050505050565b808202811582820484141761070e5761070e611f31565b60008261208657634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220bdb7b8067400d75405ab1fb3f11f89738859958485c40e306e1acf1686f2ff8364736f6c63430008180033";
832
+ "0x60c0604052620186a0600055629896806001553480156200001f57600080fd5b5060405162001fdf38038062001fdf8339810160408190526200004291620000b4565b6001600160a01b03821615806200006057506001600160a01b038116155b156200007f5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b039182166080521660a052620000ec565b80516001600160a01b0381168114620000af57600080fd5b919050565b60008060408385031215620000c857600080fd5b620000d38362000097565b9150620000e36020840162000097565b90509250929050565b60805160a051611e3a620001a5600039600081816103140152818161042c015281816104d601528181610846015281816108e701528181610b1301528181610eb101528181610f5c01528181611233015281816112cb01526113740152600081816101e4015281816105080152818161063d0152818161071d01528181610a3301528181610c2701528181610d0701528181611111015281816112fd015281816114830152818161163701526117870152611e3a6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638456cb5911610104578063b187bd26116100a2578063d157868711610071578063d1578687146103ea578063ebf77de0146103f2578063f2292f0914610405578063fa26bb271461040e57600080fd5b8063b187bd261461039e578063c5f0a58f146103a9578063cd564ccd146103b2578063ced72f87146103e257600080fd5b80639ded51dd116100de5780639ded51dd1461033e578063a3a336bf14610346578063ac637c7a14610382578063ae39279f1461039557600080fd5b80638456cb59146103075780638da5cb5b1461030f5780638db3c5fd1461033657600080fd5b806355bfc81c1161017c57806369fe0e2d1161014b57806369fe0e2d146102c65780636a1c6e78146102d9578063720e586f146102e15780637494b323146102f457600080fd5b806355bfc81c14610270578063569d71111461028357806358545014146102965780635c975abb146102a957600080fd5b80633a8c3d6a116101b85780633a8c3d6a146102455780633f4ba83a146102585780634a4e3bd5146102605780634b0b1b8b1461026857600080fd5b806311eac855146101df57806321241dfe14610223578063358cbf0a1461023b575b600080fd5b6102067f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61022d624f1a0081565b60405190815260200161021a565b610243610421565b005b610243610253366004611a05565b6105d1565b61024361083b565b6102436108dc565b61024361097d565b61024361027e366004611a80565b610b08565b610243610291366004611a99565b610bbb565b6102436102a4366004611b40565b610e1c565b6005546102b69060ff1681565b604051901515815260200161021a565b6102436102d4366004611a80565b610ea6565b61022d600a81565b6102436102ef366004611b40565b610f51565b610243610302366004611b62565b61108e565b610243611228565b6102067f000000000000000000000000000000000000000000000000000000000000000081565b61022d605a81565b60015461022d565b61036d610354366004611b40565b6002602052600090815260409020805460019091015482565b6040805192835260208301919091520161021a565b610243610390366004611b40565b61140e565b61022d60005481565b60055460ff166102b6565b61022d60015481565b6103c56103c0366004611b40565b611559565b60408051938452602084019290925215159082015260600161021a565b60005461022d565b60035461022d565b610243610400366004611b40565b6115a6565b61022d60035481565b61024361041c366004611bce565b611704565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461046a57604051635fc483c560e01b815260040160405180910390fd5b60045460010361048d576040516345f5ce8b60e11b815260040160405180910390fd5b60016004556003546000036104b55760405163493c1ab760e01b815260040160405180910390fd5b6003805460009182905560405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015610551573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105759190611c68565b905080610595576040516312171d8360e31b815260040160405180910390fd5b6040518281527f81521279371b94892737e5e06851c322303c72e5493db1453314ea08f55cb9379060200160405180910390a150506000600455565b6004546001036105f4576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff161561061d576040516306d39fcd60e41b815260040160405180910390fd5b81156106e6576000546040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd91610675913391309190600401611c85565b6020604051808303816000875af1158015610694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b89190611c68565b6106d557604051634aa23e8f60e11b815260040160405180910390fd5b6106e185600054611889565b6107cf565b60006064600a6000546106f99190611cbf565b6107039190611cdc565b6040516323b872dd60e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061075690339030908690600401611c85565b6020604051808303816000875af1158015610775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107999190611c68565b6107b657604051634aa23e8f60e11b815260040160405180910390fd5b80600360008282546107c89190611cfe565b9091555050505b83836040516107df929190611d11565b6040805191829003822084151583528315156020840152916001600160a01b0388169133917f6c92a5c8a1b6c49076a075d1a499458f543fd2588ea971574373865f817ce83d910160405180910390a450506000600455505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461088457604051635fc483c560e01b815260040160405180910390fd5b60055460ff166108a75760405163dcdde9dd60e01b815260040160405180910390fd5b6005805460ff191690556040517f0e5e3b3fb504c22cf5c42fa07d521225937514c654007e1f12646f89768d6f9490600090a1565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461092557604051635fc483c560e01b815260040160405180910390fd5b60055460ff166109485760405163dcdde9dd60e01b815260040160405180910390fd5b6005805460ff191690556040517f15de7ad89d29fd1c6d2e6b1e878453569b4080edf34e0105faaa3bd52f01853090600090a1565b6004546001036109a0576040516345f5ce8b60e11b815260040160405180910390fd5b600160045533600090815260026020526040812080549091036109d65760405163493c1ab760e01b815260040160405180910390fd5b624f1a0081600101546109e99190611cfe565b421115610a095760405163493c1ab760e01b815260040160405180910390fd5b805460008083556001830181905560405163a9059cbb60e01b8152336004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa89190611c68565b905080610ac8576040516312171d8360e31b815260040160405180910390fd5b60405182815233907f6673747791df7fe01578fcaebe4082d6d7680f052dbdd7d2cf345f88121be421906020015b60405180910390a25050600060045550565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b5157604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615610b75576040516306d39fcd60e41b815260040160405180910390fd5b600180549082905560408051828152602081018490527f83b05743f1284b2faed08b3f927951e6663e5277e09a40c939f0dfe5075af77891015b60405180910390a15050565b600454600103610bde576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610c07576040516306d39fcd60e41b815260040160405180910390fd5b8115610cd0576000546040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd91610c5f913391309190600401611c85565b6020604051808303816000875af1158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190611c68565b610cbf57604051634aa23e8f60e11b815260040160405180910390fd5b610ccb87600054611889565b610db9565b60006064600a600054610ce39190611cbf565b610ced9190611cdc565b6040516323b872dd60e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610d4090339030908690600401611c85565b6020604051808303816000875af1158015610d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d839190611c68565b610da057604051634aa23e8f60e11b815260040160405180910390fd5b8060036000828254610db29190611cfe565b9091555050505b866001600160a01b0316336001600160a01b03167f4576724219bca1c695ff280c4eba3f012c99252acd6c7d90c0407f63f8e6ad26888888888888604051610e0696959493929190611d4a565b60405180910390a3505060006004555050505050565b600454600103610e3f576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610e68576040516306d39fcd60e41b815260040160405180910390fd5b6040516000906001600160a01b038316907f39e3ace752997a751bda5ecf126da84d0d23d5e61f3f56f26a6b22990d7beed8908390a3506000600455565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eef57604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615610f13576040516306d39fcd60e41b815260040160405180910390fd5b600080549082905560408051828152602081018490527f528d9479e9f9889a87a3c30c7f7ba537e5e59c4c85a37733b16e57c62df613029101610baf565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f9a57604051635fc483c560e01b815260040160405180910390fd5b600454600103610fbd576040516345f5ce8b60e11b815260040160405180910390fd5b60016004556001600160a01b03811660009081526002602052604081208054909103610ffc5760405163493c1ab760e01b815260040160405180910390fd5b624f1a00816001015461100f9190611cfe565b421161102e576040516326f6703f60e11b815260040160405180910390fd5b80546000808355600183018190556003805483929061104e908490611cfe565b90915550506040518181526001600160a01b038416907fb4572b7f0782a4b7672a2341d00e4f1a0af99d81a3f8e959f25ff679eb31448190602001610af6565b6004546001036110b1576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff16156110da576040516306d39fcd60e41b815260040160405180910390fd5b60006064600a6000546110ed9190611cbf565b6110f79190611cdc565b6040516323b872dd60e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061114a90339030908690600401611c85565b6020604051808303816000875af1158015611169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d9190611c68565b6111aa57604051634aa23e8f60e11b815260040160405180910390fd5b80600360008282546111bc9190611cfe565b90915550506040516111d19084908490611d11565b6040518091039020336001600160a01b03167ffadda1f12158473f0f6a95450c4108a36fc8aa62f3dee6a9de94c8c5994704438787604051611214929190611d8c565b60405180910390a350506000600455505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461127157604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615611295576040516306d39fcd60e41b815260040160405180910390fd5b6005805460ff19166001179055600354156113e3576003805460009182905560405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136a9190611c68565b905080156113da577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f26536799ace2c3dbe12e638ec3ade6b4173dcf1289be0a58d51a5003015649bd836040516113cd91815260200190565b60405180910390a26113e0565b60038290555b50505b6040517fab35696f06e428ebc5ceba8cd17f8fed287baf43440206d1943af1ee53e6d26790600090a1565b600454600103611431576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff161561145a576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b0381161561151b576001546040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd916114bb913391309190600401611c85565b6020604051808303816000875af11580156114da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fe9190611c68565b61151b57604051634aa23e8f60e11b815260040160405180910390fd5b6040516001600160a01b0382169033907f39e3ace752997a751bda5ecf126da84d0d23d5e61f3f56f26a6b22990d7beed890600090a3506000600455565b6001600160a01b038116600090815260026020526040812080546001820154909291829161158b90624f1a0090611cfe565b81549093501580159061159d57508242115b93959294505050565b60055460ff166115c95760405163dcdde9dd60e01b815260040160405180910390fd5b6001600160a01b038116600090815260026020526040812080549091036116035760405163493c1ab760e01b815260040160405180910390fd5b805460008083556001830181905560405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a49190611c68565b905080156116f457836001600160a01b03167f26536799ace2c3dbe12e638ec3ade6b4173dcf1289be0a58d51a5003015649bd836040516116e791815260200190565b60405180910390a26116fe565b8183554260018401555b50505050565b600454600103611727576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615611750576040516306d39fcd60e41b815260040160405180910390fd5b60006064600a6000546117639190611cbf565b61176d9190611cdc565b6040516323b872dd60e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906117c090339030908690600401611c85565b6020604051808303816000875af11580156117df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118039190611c68565b61182057604051634aa23e8f60e11b815260040160405180910390fd5b80600360008282546118329190611cfe565b909155505060405133907fe137336c26280396075fb19ebe313eb4c539c2d845386ad035d8dee029bba31390611873908a908a908a908a908a908a90611da8565b60405180910390a2505060006004555050505050565b611896605a600019611cdc565b8111156118b657604051634eab2ea760e11b815260040160405180910390fd5b600060646118c5600a84611cbf565b6118cf9190611cdc565b905060006118dd8284611df1565b6001600160a01b03851660009081526002602052604081208054929350839290919061190a908490611cfe565b90915550506001600160a01b03841660009081526002602052604081204260019091015560038054849290611940908490611cfe565b909155505060408051828152602081018490526001600160a01b038616917fad83ccf4aebaf9db0cc5658b24e378a4a865a51b863e0289e3ee0e4947d97b1c910160405180910390a250505050565b80356001600160a01b03811681146119a657600080fd5b919050565b60008083601f8401126119bd57600080fd5b50813567ffffffffffffffff8111156119d557600080fd5b6020830191508360208285010111156119ed57600080fd5b9250929050565b8015158114611a0257600080fd5b50565b600080600080600060808688031215611a1d57600080fd5b611a268661198f565b9450602086013567ffffffffffffffff811115611a4257600080fd5b611a4e888289016119ab565b9095509350506040860135611a62816119f4565b91506060860135611a72816119f4565b809150509295509295909350565b600060208284031215611a9257600080fd5b5035919050565b600080600080600080600060a0888a031215611ab457600080fd5b611abd8861198f565b9650602088013567ffffffffffffffff80821115611ada57600080fd5b611ae68b838c016119ab565b909850965060408a0135915080821115611aff57600080fd5b50611b0c8a828b016119ab565b9095509350506060880135611b20816119f4565b91506080880135611b30816119f4565b8091505092959891949750929550565b600060208284031215611b5257600080fd5b611b5b8261198f565b9392505050565b60008060008060408587031215611b7857600080fd5b843567ffffffffffffffff80821115611b9057600080fd5b611b9c888389016119ab565b90965094506020870135915080821115611bb557600080fd5b50611bc2878288016119ab565b95989497509550505050565b60008060008060008060608789031215611be757600080fd5b863567ffffffffffffffff80821115611bff57600080fd5b611c0b8a838b016119ab565b90985096506020890135915080821115611c2457600080fd5b611c308a838b016119ab565b90965094506040890135915080821115611c4957600080fd5b50611c5689828a016119ab565b979a9699509497509295939492505050565b600060208284031215611c7a57600080fd5b8151611b5b816119f4565b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611cd657611cd6611ca9565b92915050565b600082611cf957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115611cd657611cd6611ca9565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b608081526000611d5e60808301888a611d21565b8281036020840152611d71818789611d21565b94151560408401525050901515606090910152949350505050565b602081526000611da0602083018486611d21565b949350505050565b606081526000611dbc60608301888a611d21565b8281036020840152611dcf818789611d21565b90508281036040840152611de4818587611d21565b9998505050505050505050565b81810381811115611cd657611cd6611ca956fea26469706673582212200466d0a077dca8c68dc0e5c81a63cd87dd82fdee2edd3a8e0b941461ba0699ac64736f6c63430008180033";
1109
833
 
1110
834
  type MailerConstructorParams =
1111
835
  | [signer?: Signer]