@whetstone-research/doppler-sdk 1.0.32 → 1.0.34

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.
@@ -24,10 +24,10 @@ var GENERATED_DOPPLER_DEPLOYMENTS = {
24
24
  LockableUniswapV3Initializer: "0xA2E0435225D52a8B950122752978007D758056d7",
25
25
  NoOpGovernanceFactory: "0xddAE8B3eD08184682f7Bc32B74d943cEEfEab638",
26
26
  NoOpMigrator: "0x233A71A7bB928b1357A1Ebf454298320989Ca5B5",
27
- Quoter: "0xFD44B773B21AC485C95Db1Ff38554b7699f8C042",
27
+ Quoter: "0x076838736F90Cd1d30dED756A3B89E576BE972F8",
28
28
  RehypeDopplerHook: "0x3Ec4798A9B11e8243A8Db99687f7A23597B96623",
29
- RehypeDopplerHookInitializer: "0xBF4195ab0B03e1eB3345dd1e83BeD7650b1ed123",
30
- RehypeDopplerHookMigrator: "0xea95DfdF69B90c65C827070852F7039D6aF6Dd7b",
29
+ RehypeDopplerHookInitializer: "0x9982538F41f2ae29ddb9d3D9307010052984FDbB",
30
+ RehypeDopplerHookMigrator: "0x975f9d1939cf6e4A3c9D99f9d41e6411CF4dA23b",
31
31
  StreamableFeesLocker: "0xe24FC2F7191e850e2D4514aBb4d39305b1871eC6",
32
32
  StreamableFeesLockerV2: "0xcE3212e6536F33cD6fbFEE265224131353Ca3D47",
33
33
  TimelockFactory: "0x9fd40af2baAfAF03513f091444e821c0d5b06ea0",
@@ -77,10 +77,10 @@ var GENERATED_DOPPLER_DEPLOYMENTS = {
77
77
  LockableUniswapV3Initializer: "0x8b4C7DB9121FC885689C0A50D5a1429F15AEc2a0",
78
78
  NoOpGovernanceFactory: "0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9",
79
79
  NoOpMigrator: "0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731",
80
- Quoter: "0x066A536604F1668D21f48eAfe0360638D6Ed71c4",
80
+ Quoter: "0x076838736F90Cd1d30dED756A3B89E576BE972F8",
81
81
  RehypeDopplerHook: "0x97cAD5684FB7Cc2bEd9a9b5eBfba67138F4f2503",
82
- RehypeDopplerHookInitializer: "0x34159D65BF89015D0Be068A99E41dE6e399B111B",
83
- RehypeDopplerHookMigrator: "0xaa6b67BB06C5cb2502530d190261a9f3d57A2065",
82
+ RehypeDopplerHookInitializer: "0x9982538F41f2ae29ddb9d3D9307010052984FDbB",
83
+ RehypeDopplerHookMigrator: "0x975f9d1939cf6e4A3c9D99f9d41e6411CF4dA23b",
84
84
  StreamableFeesLocker: "0x63f8C8F9beFaab2FaCD7Ece0b0242f78B920Ee90",
85
85
  StreamableFeesLockerV2: "0xcE3212e6536F33cD6fbFEE265224131353Ca3D47",
86
86
  TimelockFactory: "0x44610355465c1F5914C8B8ea0E7c887CC67459b2",
@@ -142,9 +142,9 @@ var GENERATED_DOPPLER_DEPLOYMENTS = {
142
142
  LockableUniswapV3Initializer: "0xde8886A0019Ea060B8378Ee37b8A23b8117F29A3",
143
143
  NoOpGovernanceFactory: "0x85f37f74Ef2478A770318bc810177a9835911aD7",
144
144
  NoOpMigrator: "0xba2F330EDb16cD8056f5988d8CE19BbC63475A0e",
145
- Quoter: "0x7232686FC954f12079cadFC5e9F755a9fEAeb3Ca",
146
- RehypeDopplerHookInitializer: "0x6f02324d20CC679d0E585290CAa6b16baCbC0F77",
147
- RehypeDopplerHookMigrator: "0x1a0f286bB7f5967AE89c13D3425D5ce04C34cd27",
145
+ Quoter: "0x076838736F90Cd1d30dED756A3B89E576BE972F8",
146
+ RehypeDopplerHookInitializer: "0x9982538F41f2ae29ddb9d3D9307010052984FDbB",
147
+ RehypeDopplerHookMigrator: "0x975f9d1939cf6e4A3c9D99f9d41e6411CF4dA23b",
148
148
  StreamableFeesLockerV2: "0x7B6147AC3F615bdb764e7EbD5f517dac1AD163B8",
149
149
  SwapRestrictorDopplerHook: "0xC16c826F75338A5Ea626f94f8992191B4ce5abA2",
150
150
  TimelockFactory: "0x6076fdDFCaC0dD980e0350dfF5239feC3f86C578",
@@ -173,6 +173,7 @@ var GENERATED_DOPPLER_DEPLOYMENTS = {
173
173
  CloneDERC20VotesV2Factory: "0x16F5ACB64F4FA17296E942C51d3395aDC318f9e1",
174
174
  DecayMulticurveInitializer: "0xD59cE43E53D69F190E15d9822Fb4540dCcc91178",
175
175
  DecayMulticurveInitializerHook: "0xbB7784A4d481184283Ed89619A3e3ed143e1Adc0",
176
+ DN404Factory: "0x37A9Fa204a4d3A429FDED7e3469ab076C854Bc9d",
176
177
  DopplerCreateXDeployer: "0x103004E50Bed65DFBa30dD9c264B6BdF5e529B83",
177
178
  DopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
178
179
  DopplerERC20V1: "0xDB7B520bb5C3a2C5d4871198081911359f93be87",
@@ -185,10 +186,10 @@ var GENERATED_DOPPLER_DEPLOYMENTS = {
185
186
  LockableUniswapV3Initializer: "0xE0dC4012AC9C868F09c6e4b20d66ED46D6F258d0",
186
187
  NoOpGovernanceFactory: "0xe7dfbd5b0A2C3B4464653A9beCdc489229eF090E",
187
188
  NoOpMigrator: "0x6ddfED58D238Ca3195E49d8ac3d4cEa6386E5C33",
188
- Quoter: "0xFD44B773B21AC485C95Db1Ff38554b7699f8C042",
189
+ Quoter: "0x076838736F90Cd1d30dED756A3B89E576BE972F8",
189
190
  RehypeDopplerHook: "0x3Ec4798A9B11e8243A8Db99687f7A23597B96623",
190
- RehypeDopplerHookInitializer: "0xBF4195ab0B03e1eB3345dd1e83BeD7650b1ed123",
191
- RehypeDopplerHookMigrator: "0xea95DfdF69B90c65C827070852F7039D6aF6Dd7b",
191
+ RehypeDopplerHookInitializer: "0x9982538F41f2ae29ddb9d3D9307010052984FDbB",
192
+ RehypeDopplerHookMigrator: "0x975f9d1939cf6e4A3c9D99f9d41e6411CF4dA23b",
192
193
  StreamableFeesLocker: "0x0A00775D71a42cd33D62780003035e7F5b47bD3A",
193
194
  StreamableFeesLockerV2: "0xcE3212e6536F33cD6fbFEE265224131353Ca3D47",
194
195
  TimelockFactory: "0xa636bD5F9179E80e9EdB371Ed90956fA5ebdCB33",
@@ -519,6 +520,7 @@ var ADDRESSES = {
519
520
  v2MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].UniswapV2MigratorSplit,
520
521
  v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].UniswapV4Migrator,
521
522
  v4MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].UniswapV4MigratorSplit,
523
+ v4MigratorHook: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].UniswapV4MigratorHook,
522
524
  dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].DopplerHookMigrator,
523
525
  rehypeDopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].RehypeDopplerHookMigrator,
524
526
  noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].NoOpMigrator,
@@ -596,6 +598,7 @@ var ADDRESSES = {
596
598
  CHAIN_IDS.BASE,
597
599
  "DopplerERC20V1"
598
600
  ),
601
+ doppler404Factory: getGeneratedAddress(CHAIN_IDS.BASE, "DN404Factory"),
599
602
  v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV3Initializer,
600
603
  v3Quoter: "0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",
601
604
  lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].LockableUniswapV3Initializer,
@@ -612,13 +615,16 @@ var ADDRESSES = {
612
615
  dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerLensQuoter,
613
616
  dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerDeployer,
614
617
  poolManager: "0x498581ff718922c3f8e6a244956af099b2652b2b",
615
- rehypeDopplerHookInitializer: "0xBF4195ab0B03e1eB3345dd1e83BeD7650b1ed123",
616
- rehypeDopplerHook: "0xBF4195ab0B03e1eB3345dd1e83BeD7650b1ed123",
617
- dopplerHookInitializer: "0xBDF938149ac6a781F94FAa0ed45E6A0e984c6544",
618
+ rehypeDopplerHookInitializer: getRehypeDopplerHookInitializerAddress(
619
+ CHAIN_IDS.BASE
620
+ ),
621
+ rehypeDopplerHook: getRehypeDopplerHookInitializerAddress(CHAIN_IDS.BASE),
622
+ dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerHookInitializer,
618
623
  v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV2Migrator,
619
624
  v2MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV2MigratorSplit,
620
625
  v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4Migrator,
621
626
  v4MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4MigratorSplit,
627
+ v4MigratorHook: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4MigratorHook,
622
628
  dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerHookMigrator,
623
629
  rehypeDopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].RehypeDopplerHookMigrator,
624
630
  noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].NoOpMigrator,
@@ -659,7 +665,7 @@ var ADDRESSES = {
659
665
  CHAIN_IDS.BASE_SEPOLIA,
660
666
  "DopplerERC20V1"
661
667
  ),
662
- doppler404Factory: "0xdd8cea2890f1b3498436f19ec8da8fecc2cb7af7",
668
+ doppler404Factory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DN404Factory,
663
669
  v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV3Initializer,
664
670
  v3Quoter: "0xC5290058841028F1614F3A6F0F5816cAd0df5E27",
665
671
  lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].LockableUniswapV3Initializer,
@@ -691,7 +697,7 @@ var ADDRESSES = {
691
697
  v4MigratorHook: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4MigratorHook,
692
698
  noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].NoOpMigrator,
693
699
  governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].GovernanceFactory,
694
- noOpGovernanceFactory: "0x916b8987e4ad325c10d58ed8dc2036a6ff5eb228",
700
+ noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].NoOpGovernanceFactory,
695
701
  launchpadGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].LaunchpadGovernanceFactory,
696
702
  streamableFeesLocker: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].StreamableFeesLocker,
697
703
  streamableFeesLockerV2: getGeneratedAddress(
@@ -703,7 +709,7 @@ var ADDRESSES = {
703
709
  univ2Router02: "0x1689E7B1F10000AE47eBfE339a4f69dECd19F602",
704
710
  uniswapV2Factory: "0x7Ae58f10f7849cA6F5fB71b7f45CB416c9204b1e",
705
711
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
706
- bundler: "0x69DB7c20cDdA49Bed2bFb21e16Fa218330C50661",
712
+ bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].Bundler,
707
713
  weth: "0x4200000000000000000000000000000000000006",
708
714
  uniswapV3Factory: "0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24",
709
715
  uniswapV4Quoter: "0x4A6513c898fe1B2d0E78d3b0e0A4a151589B1cBa"
@@ -907,12 +913,13 @@ var ADDRESSES = {
907
913
  lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].LockableUniswapV3Initializer,
908
914
  v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV4Initializer,
909
915
  dopplerLens: ZERO_ADDRESS,
910
- dopplerDeployer: ZERO_ADDRESS,
916
+ dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].DopplerDeployer,
911
917
  poolManager: "0x188d586ddcf52439676ca21a244753fa19f9ea8e",
912
918
  v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV2Migrator,
913
919
  v2MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV2MigratorSplit,
914
920
  v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV4Migrator,
915
921
  v4MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV4MigratorSplit,
922
+ v4MigratorHook: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV4MigratorHook,
916
923
  noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpMigrator,
917
924
  governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].GovernanceFactory,
918
925
  noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpGovernanceFactory,
@@ -926,8 +933,7 @@ var ADDRESSES = {
926
933
  rehypeDopplerHook: getRehypeDopplerHookInitializerAddress(
927
934
  CHAIN_IDS.MONAD_MAINNET
928
935
  ),
929
- streamableFeesLocker: ZERO_ADDRESS,
930
- // Not yet deployed
936
+ streamableFeesLocker: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].StreamableFeesLocker,
931
937
  streamableFeesLockerV2: getGeneratedAddress(
932
938
  CHAIN_IDS.MONAD_MAINNET,
933
939
  "StreamableFeesLockerV2"
@@ -1408,11 +1414,139 @@ var feesManagerAbi = [
1408
1414
  ];
1409
1415
  var feeClaimsInitializerAbi = feesManagerAbi;
1410
1416
 
1417
+ // src/evm/abis/dopplerDN404.ts
1418
+ var dopplerDN404Abi = [
1419
+ {
1420
+ type: "function",
1421
+ name: "name",
1422
+ inputs: [],
1423
+ outputs: [{ name: "", type: "string" }],
1424
+ stateMutability: "view"
1425
+ },
1426
+ {
1427
+ type: "function",
1428
+ name: "symbol",
1429
+ inputs: [],
1430
+ outputs: [{ name: "", type: "string" }],
1431
+ stateMutability: "view"
1432
+ },
1433
+ {
1434
+ type: "function",
1435
+ name: "decimals",
1436
+ inputs: [],
1437
+ outputs: [{ name: "", type: "uint8" }],
1438
+ stateMutability: "view"
1439
+ },
1440
+ {
1441
+ type: "function",
1442
+ name: "totalSupply",
1443
+ inputs: [],
1444
+ outputs: [{ name: "", type: "uint256" }],
1445
+ stateMutability: "view"
1446
+ },
1447
+ {
1448
+ type: "function",
1449
+ name: "balanceOf",
1450
+ inputs: [{ name: "owner", type: "address" }],
1451
+ outputs: [{ name: "", type: "uint256" }],
1452
+ stateMutability: "view"
1453
+ },
1454
+ {
1455
+ type: "function",
1456
+ name: "allowance",
1457
+ inputs: [
1458
+ { name: "owner", type: "address" },
1459
+ { name: "spender", type: "address" }
1460
+ ],
1461
+ outputs: [{ name: "", type: "uint256" }],
1462
+ stateMutability: "view"
1463
+ },
1464
+ {
1465
+ type: "function",
1466
+ name: "approve",
1467
+ inputs: [
1468
+ { name: "spender", type: "address" },
1469
+ { name: "amount", type: "uint256" }
1470
+ ],
1471
+ outputs: [{ name: "", type: "bool" }],
1472
+ stateMutability: "nonpayable"
1473
+ },
1474
+ {
1475
+ type: "function",
1476
+ name: "transfer",
1477
+ inputs: [
1478
+ { name: "to", type: "address" },
1479
+ { name: "amount", type: "uint256" }
1480
+ ],
1481
+ outputs: [{ name: "", type: "bool" }],
1482
+ stateMutability: "nonpayable"
1483
+ },
1484
+ {
1485
+ type: "function",
1486
+ name: "unit",
1487
+ inputs: [],
1488
+ outputs: [{ name: "", type: "uint256" }],
1489
+ stateMutability: "view"
1490
+ },
1491
+ {
1492
+ type: "function",
1493
+ name: "baseURI",
1494
+ inputs: [],
1495
+ outputs: [{ name: "", type: "string" }],
1496
+ stateMutability: "view"
1497
+ },
1498
+ {
1499
+ type: "function",
1500
+ name: "mirrorERC721",
1501
+ inputs: [],
1502
+ outputs: [{ name: "", type: "address" }],
1503
+ stateMutability: "view"
1504
+ },
1505
+ {
1506
+ type: "function",
1507
+ name: "totalNFTSupply",
1508
+ inputs: [],
1509
+ outputs: [{ name: "", type: "uint256" }],
1510
+ stateMutability: "view"
1511
+ },
1512
+ {
1513
+ type: "function",
1514
+ name: "getSkipNFT",
1515
+ inputs: [{ name: "owner", type: "address" }],
1516
+ outputs: [{ name: "", type: "bool" }],
1517
+ stateMutability: "view"
1518
+ },
1519
+ {
1520
+ type: "function",
1521
+ name: "setSkipNFT",
1522
+ inputs: [{ name: "skipNFT", type: "bool" }],
1523
+ outputs: [{ name: "", type: "bool" }],
1524
+ stateMutability: "nonpayable"
1525
+ },
1526
+ {
1527
+ type: "function",
1528
+ name: "pool",
1529
+ inputs: [],
1530
+ outputs: [{ name: "", type: "address" }],
1531
+ stateMutability: "view"
1532
+ },
1533
+ {
1534
+ type: "function",
1535
+ name: "isPoolUnlocked",
1536
+ inputs: [],
1537
+ outputs: [{ name: "", type: "bool" }],
1538
+ stateMutability: "view"
1539
+ }
1540
+ ];
1541
+
1411
1542
  // src/evm/abis/bytecodes/doppler.ts
1412
1543
  var doppler_default = "0x60a06040523461057b57604051601f615c0338819003918201601f19168301916001600160401b0383118484101761057f578084926101c09460405283398101031261057b5780516001600160a01b038116810361057b5760208201516040830151906060840151608085015160a08601519061007e60c088016105b3565b9161008b60e089016105b3565b91610100890151946100a06101208b016105b3565b976101408b0151978815988915810361057b576101608d01516101808e01516001600160a01b0381169e919d91908f0361057b576101a001519062ffffff821680920361057b576080525f6101a06100f6610593565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a0610154610593565b6001815260016020820152600160408201528260608201528260808201528260a0820152600160c0820152600160e082015260016101008201528261012082015282610140820152826101608201528261018082015201526120003016151560011480159061056a575b8015610559575b801561054c575b801561053f575b8015610532575b8015610522575b8015610512575b8015610502575b80156104f6575b80156104ea575b80156104de575b80156104d2575b80156104c6575b6104b35762ffffff1960165416176016558442116104a4578660020b8860020b91818303610463575b5050508484101561045457838503858111610440578a60020b5f811380159061042b575b61041c578915610408578982066103f9578c156103eb57600f8d116103eb578484116103dc5761029861029d928b81046017558b6105c1565b610658565b628000008110156103cf5762ffffff19601854169062ffffff1617601855600d55600e55600f5560105560115562ffffff6012549160181b65ffffff0000001692169065ffffffffffff1916171760125560135562ffffff63ff000000601454921560181b1692169063ffffffff1916171760145560155560018060a01b0319600c541617600c5560405161552f90816106d48239608051818181601c01528181610205015281816102a80152818161045c0152818161050c0152818161098701528181610a1e01528181610af501528181610b9201528181610c5a01528181610e8301528181610f3a0152818161103d015281816110b201528181611d2c01528181611de40152818161217801528181613b8301528181613c4d01528181613fe9015281816140f40152614be40152f35b6335278d125f526004601cfd5b638cc99b7b60e01b5f5260045ffd5b6287e39960e61b5f5260045ffd5b6388ac089760e01b5f5260045ffd5b634e487b7160e01b5f52601260045260245ffd5b6312469eb560e11b5f5260045ffd5b5061043a81610298848d6105c1565b1561025f565b634e487b7160e01b5f52601160045260245ffd5b63536a71af60e01b5f5260045ffd5b8061049b575b610483578a9182610491575b5050610483575f808061023b565b6264847d60e41b5f5260045ffd5b1390505f80610475565b50808212610469565b632ca4094f60e21b5f5260045ffd5b630732d7b560e51b5f523060045260245ffd5b50600130161515610212565b5060023016151561020b565b50600430161515610204565b506008301615156101fd565b506010301615156101f6565b50602030161515600114156101ef565b50604030161515600114156101e8565b50608030161515600114156101e1565b50610100301615156101da565b50610200301615156101d3565b50610400301615156101cc565b5061080030161515600114156101c5565b5061100030161515600114156101be565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051906101c082016001600160401b0381118382101761057f57604052565b51908160020b820361057b57565b90670de0b6b3a76400008202905f19670de0b6b3a764000084099282808510940393808503948584111561057b571461065157670de0b6b3a764000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b808202905f1983820990828083109203918083039283670de0b6b3a7640000111561057b57146106c2577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066993670de0b6b3a7640000910990828211900360ee1b910360121c170290565b5050670de0b6b3a76400009150049056fe608080604052600436101561005b575b50361561001a575f80fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361004c57005b6393c866c160e01b5f5260045ffd5b5f905f3560e01c908163182148ef146111155750806318cb1700146110f357806321d0ee701461109f578063259982e51461102a578063392e53cd1461100857806339518b5e14610feb578063514ea4bf14610f96578063575e24b414610ee357806357d775f814610ec65780636c2bbe7e14610e705780636c47a6c314610e535780636fe7e6eb14610c19578063897479cb14610bfb57806390ebab0a14610bdd57806391dd734614610b5e5780639ce110d714610b355780639f063efc14610ade578063a4dee15514610ab9578063b137392914610a98578063b356603014610a74578063b47b2fb1146109c6578063b6a8b0fa14610970578063c19d93fb14610921578063c4e833ce146107b6578063c70dfb4f14610795578063ce5494bb146104cb578063d0c52e21146104a9578063d65b4cb91461048b578063dc4c90d314610446578063dc98354e14610276578063dcf93f3214610250578063e1b4af69146101ee5763ee4644300361000f57346101eb57806003193601126101eb576020600d54604051908152f35b80fd5b50346101eb57600490610200366112dc565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303925061024491505057630a85dc2960e01b8152fd5b63570c108560e11b8152fd5b50346101eb57806003193601126101eb57602060ff60145460181c166040519015158152f35b50346101eb5760e03660031901126101eb5761029061116b565b5060a03660231901126101eb576102a561128e565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036104375760085460ff81166104295760ff19166001176008556001600160a01b03602435908116908181036104255750600980546001600160a01b0319169190911790556044356001600160a01b038116908181036104255750600a80546001600160a01b03191691909117905560643562ffffff8116810361042157600a5461035a612061565b60b81b62ffffff60b81b169162ffffff60a01b9060a01b169065ffffffffffff60a01b19161717600a5560a43560018060a01b03811680910361042157600b80546001600160a01b031916919091179055601e6103b5612061565b60020b136104125760145460020b6103cb612061565b60020b9081156103fe570760020b6103ef57604051636e4c1aa760e11b8152602090f35b6312469eb560e11b8152600490fd5b634e487b7160e01b83526012600452602483fd5b63013840ad60e51b8152600490fd5b5080fd5b8280fd5b62dc149f60e41b8252600482fd5b63570c108560e11b8152600490fd5b50346101eb57806003193601126101eb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346101eb57806003193601126101eb576020600f54604051908152f35b50346101eb57806003193601126101eb5760ff60209154166040519015158152f35b50346101eb5760203660031901126101eb576104e561116b565b600c546001600160a01b031633036107865760ff825460081c161580610765575b610756577f000000000000000000000000000000000000000000000000000000000000000061059d8361057561058360405161054181611333565b610549611f3d565b815260018060a01b03871660208201528360408201526001606082015260405192839160208301611f8a565b03601f1981018352826113b4565b604051809381926348c8949160e01b8352600483016112b2565b0381836001600160a01b0387165af190811561074b57916105d785926105e2959460e09791610729575b50602080825183010191016114d8565b600695919554613282565b9161064160018060a01b0360095416926106306105fe856145cf565b948761061f8761061760018060a01b03600a54166145cf565b9a8b94614611565b600a546001600160a01b0316614611565b60a061063a611f3d565b2090614754565b5050600954600a5492976001600160a01b039182169791909316946106879250610678906001600160801b03608086901d16611472565b926001600160801b0316611472565b906001600160801b0381111561071a57506001600160801b03915b506001600160801b0381111561070b57506001600160801b03935b604080516001600160a01b0397909716875260208701919091526001600160801b03608085811d821692880192909252918216606087015285019190915290811660a08401521660c0820152f35b6001600160801b0316936106bd565b6001600160801b0316916106a2565b61074591503d8086833e61073d81836113b4565b810190611fcb565b5f6105c7565b6040513d86823e3d90fd5b63051a2a5560e51b8252600482fd5b50600454600e5411158061077a575b15610506565b50601154421015610774565b638341a67960e01b8252600482fd5b50346101eb57806003193601126101eb57602060125460020b604051908152f35b50346101eb57806003193601126101eb576020816101c0926101a06040516107dd81611362565b82815282858201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201528060405161083b81611362565b60018152838101600181526040820160018152606083018481526080840185815260a0850186815260c08601906001825260e087019260018452610100880194600186526101208901968a88526101408a01988b8a526101a06101608c019b8d8d5261018081019d8e52019c8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b50346101eb57806003193601126101eb5760c064ffffffffff600154166002546003546004546005549160065493604051958652602086015260408501526060840152608083015260a0820152f35b50346101eb57600490610982366112dc565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330392506102449150505763567d91d160e01b8152fd5b50346101eb576101603660031901126101eb576109e161116b565b5060a03660231901126101eb5760603660c31901126101eb57610144356001600160401b03811161042157610a1a903690600401611195565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610437576040610a5a610124356140d7565b82516001600160e01b03199092168252600f0b6020820152f35b50346101eb57806003193601126101eb57602060125460181c60020b604051908152f35b50346101eb57806003193601126101eb57602060145460020b604051908152f35b50346101eb57806003193601126101eb5760ff6020915460081c166040519015158152f35b50346101eb57600490610af036611225565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330393506102449250505057630a85dc2960e01b8152fd5b50346101eb57806003193601126101eb57600c546040516001600160a01b039091168152602090f35b50346101eb5760203660031901126101eb576004356001600160401b03811161042157610b8f903690600401611195565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361043757610bd9610bcd848461168f565b604051918291826112b2565b0390f35b50346101eb57806003193601126101eb576020601554604051908152f35b50346101eb57806003193601126101eb576020600e54604051908152f35b5034610e4057610100366003190112610e4057610c3461116b565b60a0366023190112610e4057610c4861128e565b5060e435908160020b809203610e40577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169133839003610e445762ffffff6016541691833b15610e4057604051635275965160e01b815292602435906001600160a01b038216808303610e40576004860152604435946001600160a01b038616808703610e4057602482015260643562ffffff8116808203610e40576044830152608435918260020b808403610e4057606482015260a435936001600160a01b038516808603610e4057608483015260a48201525f8160c481838d5af18015610e3557610e07575b509488979461057594610da6948a9994610dc29960405196610d5a88611333565b60405194610d678661137e565b85526020850152604084015260608301526080820152835260018060a01b03166020830152604082015285606082015260405192839160208301611f8a565b6040519485809481936348c8949160e01b8352600483016112b2565b03925af18015610dfc57610de3575b604051636fe7e6eb60e01b8152602090f35b610df6913d8091833e61073d81836113b4565b5f610dd1565b6040513d84823e3d90fd5b610da69399509461057594610e245f610dc299949a959b986113b4565b5f9a94509450949791969095610d39565b6040513d5f823e3d90fd5b5f80fd5b63570c108560e11b5f5260045ffd5b34610e40575f366003190112610e40576020601154604051908152f35b34610e4057610e7e36611225565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633039350610e449250505057630a85dc2960e01b5f5260045ffd5b34610e40575f366003190112610e40576020601354604051908152f35b34610e4057610140366003190112610e4057610efd61116b565b5060a0366023190112610e405760603660c3190112610e4057610124356001600160401b038111610e4057610f36903690600401611195565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610e4457606062ffffff610f766120bd565b906040939293519363ffffffff60e01b1684526020840152166040820152f35b34610e40576020366003190112610e40576004355f526007602052608060405f205460ff604051918060020b83528060181c60020b6020840152600180851b038160301c16604084015260b01c166060820152f35b34610e40575f366003190112610e40576020601054604051908152f35b34610e40575f366003190112610e4057602060ff600854166040519015158152f35b34610e4057611038366111c2565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633039050610e4457306001600160a01b03909116036110905760405163259982e560e01b8152602090f35b636d1ed89b60e01b5f5260045ffd5b34610e40576110ad366111c2565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633039150610e44905057630a85dc2960e01b5f5260045ffd5b34610e40575f366003190112610e4057602062ffffff60165416604051908152f35b34610e40575f366003190112610e4057600954600a54600b546001600160a01b039283168452818316602085015260a082811c62ffffff16604086015260b89290921c60020b6060850152909116608083015290f35b600435906001600160a01b0382168203610e4057565b35906001600160a01b0382168203610e4057565b9181601f84011215610e40578235916001600160401b038311610e405760208381860195010111610e4057565b90610160600319830112610e40576004356001600160a01b0381168103610e40579160a0602319820112610e4057602491608060c319830112610e405760c49161014435906001600160401b038211610e405761122191600401611195565b9091565b906101a0600319830112610e40576004356001600160a01b0381168103610e40579160a0602319820112610e4057602491608060c319830112610e405760c4916101443591610164359161018435906001600160401b038211610e405761122191600401611195565b60c435906001600160a01b0382168203610e4057565b35908160020b8203610e4057565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b610120600319820112610e40576004356001600160a01b0381168103610e40579160a0602319830112610e405760249160c4359160e4359161010435906001600160401b038211610e405761122191600401611195565b608081019081106001600160401b0382111761134e57604052565b634e487b7160e01b5f52604160045260245ffd5b6101c081019081106001600160401b0382111761134e57604052565b60a081019081106001600160401b0382111761134e57604052565b606081019081106001600160401b0382111761134e57604052565b601f909101601f19168101906001600160401b0382119082101761134e57604052565b359062ffffff82168203610e4057565b91908260a0910312610e40576040516113ff8161137e565b608061144b81839561141081611181565b855261141e60208201611181565b602086015261142f604082016113d7565b6040860152611440606082016112a4565b606086015201611181565b910152565b600201908160021161145e57565b634e487b7160e01b5f52601160045260245ffd5b9190820180921161145e57565b9060405161148c81611333565b9154600281810b8452601882901c900b6020840152603081901c6001600160801b0316604084015260b01c60ff166060830152565b600f0b60016001607f1b0319811461145e575f0390565b9190826040910312610e40576020825192015190565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b9061016092611542836060936114ee565b805160020b60a0840152602081015160020b60c0840152604081015160e084015201516101008201526101406101208201525f6101408201520190565b6001600160a01b03918216815291166020820152604081019190915260600190565b9190820391821161145e57565b6001600160401b03811161134e5760051b60200190565b906115cf826115ae565b6115dc60405191826113b4565b82815280926115ed601f19916115ae565b01905f5b8281106115fd57505050565b60209060405161160c81611333565b5f81525f838201525f60408201525f6060820152828285010152016115f1565b8051156116395760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156116395760400190565b80518210156116395760209160051b010190565b9081549060181b65ffffff000000169065ffffff0000001916179055565b919082015f61010084830312610e40576116b5604051926116af84611333565b856113e7565b938483526116c560a08201611181565b80602085015260e06116d960c084016112a4565b92836040870152013580151594858203610e40576060015260018060a01b03169060020b92611c4e5750600164ffffffffff1981541617600155606084019261173c845160020b61173761172c85614ef6565b60125460020b61209f565b614f2e565b6014549060ff8260181c165f14611c3b5761175a9160020b9061209f565b945b61176584613378565b61176e85613378565b956040519561177c87611399565b808752602087018181526118d8604089019a888c526118d0600d54956117a06136a5565b956118088c6118036117fa6117db6117d26117c96117c46117bf61480d565b614ea2565b6136c3565b60135490614e80565b60105490614ebe565b6117f46117eb60105480936115a1565b916011546115a1565b90615033565b600d5490615113565b6136d4565b8c929083811315611c2c5761186b9293508981115f14611c275750885b928d60185460020b835160020b8082135f14611c1f5750905b50818a5260145460181c60ff1615611c105761185f9150895160020b61209f565b905b5160020b90614f2e565b60020b60208701525b855160020b966020870197885160020b14155f14611c055760ff60145460181c166118c5836118a68a5160020b613378565b8b516001600160801b039491906118bf9060020b613378565b91614fcc565b1660408801526115a1565b90848861374b565b996118eb6118e68c51611450565b6115c5565b985160020b915160020b9060018060801b03905116906040519261190e84611333565b8352602083015260408201526001606082015261192a8861162c565b526119348761162c565b50805160020b915160020b90604060018060801b0391015116906040519261195b84611333565b835260208301526040820152600260608201526119778661164d565b526119818561164d565b50835b8751811015611a3457611997818961165d565b515160020b60206119a8838b61165d565b51015160020b6001600160801b0360406119c2858d61165d565b51015116836003019182600311611a2057611a1992600195949260ff92604051946119ec86611333565b855260208501526040840152166060820152611a0783611450565b90611a12828b61165d565b528861165d565b5001611984565b634e487b7160e01b89526011600452602489fd5b50611a429293969585613a82565b611a4b8261162c565b516001855260076020526040852090805162ffffff198354169062ffffff16178255611a7e602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b16179055611ac58261164d565b516002855260076020526040852090805162ffffff198354169062ffffff16178255611af8602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b16179055835b8351811015611be557611b53611b4d82611450565b8461165d565b518160030180600311611bd1579060019291875260076020526040872090805162ffffff198354169062ffffff16178255611b95602082015160020b83611671565b604081015190825490606060ff60b01b91015160b01b16918560301b8660b01b039060301b16908560301b8660b81b0319161717905501611b38565b634e487b7160e01b87526011600452602487fd5b509291505060405190611bf96020836113b4565b81525f36602083013790565b8b60408801526115a1565b611c199161335b565b90611861565b90509061183e565b611825565b50508087526020870152611874565b611c489160020b9061335b565b9461175c565b925f9250829160015b6015546003018060031161145e57811015611ddc57805f526007602052611c8060405f2061147f565b60408101516001600160801b031680611c9e575b5050600101611c57565b611d279160409160ff6014999598995460181c1691825f14611dce57805160020b925b15611db95760ff6060611ce3611cde602085015160020b95613263565b6114c1565b9201511691845193611cf485611333565b60020b845260020b6020840152600f0b838301526060820152815180938192632d35e7ed60e11b83528c60048401611531565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610e3557600192611d7e925f905f92611d86575b50611d789192613282565b96613282565b93905f611c94565b611d789250611dac915060403d8111611db2575b611da481836113b4565b8101906114d8565b91611d6d565b503d611d9a565b60ff6060611ce3611cde845160020b95613263565b602081015160020b92611cc1565b5091929390947f000000000000000000000000000000000000000000000000000000000000000091611e1860018060a01b0383511630856132c4565b926020830192611e3260018060a01b0385511630846132c4565b945f8113611ed6575b5050848413611e6a575b5050505050604051916020830152604082015260408152611e676060826113b4565b90565b91516001600160a01b039283169216823b15611ed25791611ea6939185809460405196879586948593630b0d9c0960e01b85526004850161157f565b03925af18015610dfc57611ebd575b808080611e45565b611ec88280926113b4565b6101eb5780611eb5565b8480fd5b90516001600160a01b0383811692911690823b15610e4057611f1392855f809460405196879586948593630b0d9c0960e01b85526004850161157f565b03925af18015610e3557611f28575b80611e3b565b611f359195505f906113b4565b5f935f611f22565b60405190611f4a8261137e565b6009546001600160a01b039081168352600a54808216602085015260a081901c62ffffff16604085015260b81c60020b6060840152600b54166080830152565b91909160e06060610100830194611fa28482516114ee565b60208101516001600160a01b031660a0850152604081015160020b60c085015201511515910152565b602081830312610e40578051906001600160401b038211610e40570181601f82011215610e40578051906001600160401b03821161134e576040519261201b601f8401601f1916602001856113b4565b82845260208383010111610e4057815f9260208093018386015e8301015290565b600f91820b910b019060016001607f1b0319821260016001607f1b0383131761145e57565b6084358060020b8103610e405790565b60020b627fffff19811461145e575f0390565b60020b60010190627fffff8213627fffff1983121761145e57565b9060020b9060020b0190627fffff198212627fffff83131761145e57565b5f80549160ff8360081c16613254576010544210613245576120dd61480d565b64ffffffffff600154161015613234575f9260115442101580613229575b612e7e575b509060ff5f5416155f14612e105761211661480d565b9060015461212b64ffffffffff8216846115a1565b64ffffffffff1990911664ffffffffff84161760015560035460025f526007602052946121645f8051602061550383398151915261147f565b9461219c60a06121753660246113e7565b207f0000000000000000000000000000000000000000000000000000000000000000614754565b505050946121a986614841565b608435978860020b90818a14159283610e40578a6121c691614f2e565b905f916121d68d600554906136d4565b5f198a0194908a861161145e575f8f966121f26121f791613a72565b614fac565b80971115911280612e09575b15612cac575050506122249192505160020b9161221e615332565b90614ebe565b955b60018111612c165750612262908a60055561225c670de0b6b3a764000061224f89600254614ebe565b9880612c0d575b05614ef6565b9061209f565b90612c09578761227191614f2e565b9061228d8861173761172c670de0b6b3a76400005f9905614ef6565b9760145460ff8160181c165f14612bf6576122ab9060020b8a61209f565b955b8960ff60145460181c16809b811580612be6575b15612baa57505050612ba6576122d7908361209f565b945b6122e283613378565b986122ec87613378565b908b15612b9d5715612aea5760016123058c8c84615420565b91818060a01b038c1690828060a01b0316038060ff1d9081011891818060801b031661233183826150ca565b928260601b9109151516015b975b60155461234e6118e682611450565b9060018a52600760205261236460408b2061147f565b61236d8361162c565b526123778261162c565b5060028a52600760205261238d60408b2061147f565b6123968361164d565b526123a08261164d565b50895b818110612aa25750506123c1906123bb3660246113e7565b90614afa565b5060145460181c60ff1699908a156129fc576044356001600160a01b03811681036129f857612402906123f3906145cf565b6001600160801b038316611472565b6006549061241a906001600160801b038316906115a1565b916024356001600160a01b03811681036129f4579e6118e69f936124728e969461245d8c9561244b89879a506145cf565b9060801d6001600160801b0316611472565b60809190911d6001600160801b0316906115a1565b9e5b61247f3660246113e7565b906124886136a5565b958361299457505050505060020b80825260208201528260408201525b604081018051909c6125ab916125a391612591916001600160801b031615612985575b6124d33660246113e7565b906124fa6124df6136a5565b976118036117fa6117db6117d26117c96117c46117bf61480d565b88808213156129715750818111156129685750612555815b928d606060185460020b920191825160020b8082135f146129605750905b60020b90818b5260ff60145460181c165f14611c105761185f91508a5160020b61209f565b60020b60208801525b865160020b976020880198895160020b14155f14612956575060ff60145460181c166118c5836118a68a5160020b613378565b878561259e3660246113e7565b61374b565b9e8f51611450565b9b6020825160020b92015160020b9060018060801b0390511690604051926125d284611333565b835260208301526040820152600160608201526125ee8c61162c565b526125f88b61162c565b50805160020b915160020b90604060018060801b0391015116906040519261261f84611333565b8352602083015260408201526002606082015261263b8a61164d565b526126458961164d565b50875b8b518110156126f9578b602061266d83612662818561165d565b515160020b9361165d565b51015160020b8d60406126878560018060801b039361165d565b510151168360030191826003116126e5579260ff6126de938f9360019796604051946126b286611333565b8552602085015260408401521660608201526126d76126d085611450565b809361165d565b528c61165d565b5001612648565b634e487b7160e01b8d52601160045260248dfd5b50612719919293949596999a979a6127123660246113e7565b918a613a82565b6127228761162c565b5160018a52600760205260408a2090805162ffffff198354169062ffffff16178255612755602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b1617905561279c8761164d565b5160028a52600760205260408a2090805162ffffff198354169062ffffff161782556127cf602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b16179055885b6015548110156128fc578651811061285957806003018060031161284557906001918b5260076020528a60408120555b0161280f565b634e487b7160e01b8b52601160045260248bfd5b61286b61286582611450565b8961165d565b5181600301806003116128e85790600192918c52600760205260408c2090805162ffffff198354169062ffffff161782556128ad602082015160020b83611671565b604081015190825490606060ff60b01b91015160b01b16918560301b8660b01b039060301b16908560301b8660b81b0319161717905561283f565b634e487b7160e01b8c52601160045260248cfd5b5090919295507f223157ec47d7bd04fa3ed10c0a8adb38faf97b51ec856a777425a2e39253bd739450608093966040519360020b845260020b602084015260020b60408301526060820152a15b6315d7892d60e21b929190565b60408801526115a1565b905090612530565b61255590612512565b9250508b60020b808852602088015261255e565b602085015160020b85526124c8565b838111156129ad5750506129a89450614ca4565b6124a5565b92509350506129e991508c60020b84528960020b60208501526129cf8d613378565b6001600160801b0393906129e28c613378565b9115614fcc565b1660408201526124a5565b8c80fd5b8a80fd5b6024356001600160a01b03811681036129f857612a2f90612a1c906145cf565b608083901d6001600160801b0316611472565b60065490612a4b90608083901d6001600160801b0316906115a1565b916044356001600160a01b03811681036129f4579e6118e69f93612a9c8e9694612a8b8c95612a7c89879a506145cf565b906001600160801b0316611472565b6001600160801b03909116906115a1565b9e612474565b80600301806003116128e857906001918c526007602052612ae360408d20612ad2612acc84611450565b9161147f565b612adc828861165d565b528561165d565b50016123a3565b612af58b8b836153dd565b8a826001600160a01b0380831690821611612b92575b506001600160a01b038316918215612b865760601b600160601b600160e01b0316926001600160a01b03828116929190910316612b4982828661527d565b938215612b725709612b63575b808206151591040161233d565b906001019081612b56575b8880fd5b634e487b7160e01b8c52601260045260248cfd5b62bfc9218b526004601cfd5b8c935090505f612b0b565b5050869761233f565b8680fd5b91989392509081612bd5575b50612bc2575b506122d9565b612bce9196508361335b565b945f612bbc565b905060020b8460020b13155f612bb6565b508060020b8760020b12156122c1565b612c039060020b8a61335b565b956122ad565b8580fd5b89600255612256565b612c1f906136ec565b5f198101818111611a20576121f2612c3691613a72565b808c10612c44575b50612226565b612c59612c52989298615332565b918d615033565b670de0b6b3a76400000390670de0b6b3a76400008211612c9857612c8a612c919392670de0b6b3a764000092614e80565b0590614ebe565b955f612c3e565b634e487b7160e01b8a52601160045260248afd5b9192909115612d0957505083612b6e578a612cc691614f2e565b91612cd2612c52615332565b670de0b6b3a76400000390670de0b6b3a76400008211612c9857612c8a612d039392670de0b6b3a764000092614e80565b95612226565b93509350975050612d2f60125460020b670de0b6b3a76400006002540560020b9061209f565b60185460020b5f9381135f14612dfe57905b6014549260ff8460181c1692835f14612deb57612d61915160020b61209f565b915b829985610e4057612db394612d7b8e612dab96614f2e565b938315612dd857612d8f9160020b9061209f565b915b15612dc3578160020b8160020b135f14612dbc575061335b565b60020b614e5c565b955f9695612226565b905061335b565b8160020b8160020b125f14612dbc575061335b565b612de59160020b9061335b565b91612d91565b612df8915160020b61335b565b91612d63565b505f92508990612d41565b5080612203565b915060ff60145460181c168080612e67575b8115612e47575b50612e38576240000090612949565b63016ccb0760e01b5f5260045ffd5b90501580612e56575b5f612e29565b5060c4358015158114612e50575f80fd5b905060c43580159081158103610e40575090612e22565b600454600e54111561321a5760019060ff1916175f557fe8775e4a58023f399765c3455b45eebcc45ad6b99607a1163f02e1318430970c5f80a1612ed3612ecb60a06121753660246113e7565b505050614841565b601554612ee26118e682611450565b60015f52600760205290612f025f805160206154e383398151915261147f565b612f0b8361162c565b52612f158261162c565b5060025f526007602052612f355f8051602061550383398151915261147f565b612f3e8361164d565b52612f488261164d565b505f5b8181106131e9575050612f63906123bb3660246113e7565b5060145460181c60ff1690811561319e576044356001600160a01b0381168103610e4057612fce918491612fb8906001600160801b0390612fa3906145cf565b16600f0b60018060801b0392600f0b9061203c565b165b60035490612fc93660246113e7565b614ca4565b90604080519290612fdf81856113b4565b60018452601f19015f5b81811061316f575050805160020b6020820191825160020b90604060018060801b0391015116906040519261301d84611333565b835260208301526040820152600160608201526130398461162c565b526130438361162c565b505160020b901561314657608435928360020b8403610e405761308061307a613075613093948761309898509061209f565b613378565b91613378565b9061308c3660246113e7565b9184613a82565b61162c565b5160015f52600760205260405f2090805162ffffff198354169062ffffff161782556130cb602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b161790555f5b6015546001810180911161145e5781101561313f578061312c600192611450565b5f5260076020525f60408120550161310b565b505f612100565b608435928360020b8403610e405761308061307a6130756130939461225c886130989950612071565b60209060405161317e81611333565b5f81525f838201525f60408201525f606082015282828801015201612fe9565b6024356001600160a01b0381168103610e4057612fce9184916131e3906001600160801b03906131cd906145cf565b6001600160801b039360801d9116600f0b61203c565b16612fba565b80600301908160031161145e576001915f52600760205261321360405f20612ad2612acc84611450565b5001612f4b565b631ed9bcf960e01b5f5260045ffd5b5060ff8116156120fb565b6315d7892d60e21b92505f91508190565b630fc95b4360e01b5f5260045ffd5b636fce6c3960e01b5f5260045ffd5b6001607f1b81101561327557600f0b90565b6335278d125f526004601cfd5b6132a5906132978360801d8260801d01614ed9565b92600f0b90600f0b01614ed9565b60018060801b03169060801b1790565b90816020910312610e40575190565b6001600160a01b039182165f9081529282166020908152604093849020935163789add5560e11b815260048101949094529183916024918391165afa908115610e35575f91613311575090565b90506020813d602011613338575b8161332c602093836113b4565b81010312610e40575190565b3d915061331f565b60020b5f190190627fffff198212627fffff83131761145e57565b600291820b910b0390627fffff198212627fffff83131761145e57565b60020b908160ff1d82810118620d89e881116136925763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116613676575b6004811661365a575b6008811661363e575b60108116613622575b60208116613606575b604081166135ea575b608081166135ce575b61010081166135b2575b6102008116613596575b610400811661357a575b610800811661355e575b6110008116613542575b6120008116613526575b614000811661350a575b61800081166134ee575b6201000081166134d2575b6202000081166134b7575b62040000811661349c575b6208000016613483575b5f1261347b575b0160201c90565b5f1904613474565b6b048a170391f7dc42444e8fa290910260801c9061346d565b6d2216e584f5fa1ea926041bedfe9890920260801c91613463565b916e5d6af8dedb81196699c329225ee6040260801c91613458565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161344d565b916f31be135f97d08fd981231505542fcfa60260801c91613442565b916f70d869a156d2a1b890bb3df62baf32f70260801c91613438565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161342e565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91613424565b916fe7159475a2c29b7443b29c7fa6e889d90260801c9161341a565b916ff3392b0822b70005940c7a398e4b70f30260801c91613410565b916ff987a7253ac413176f2b074cf7815e540260801c91613406565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916133fc565b916ffe5dee046a99a2a811c461f1969c30530260801c916133f2565b916fff2ea16466c96a3843ec78b326b528610260801c916133e9565b916fff973b41fa98c081472e6896dfb254c00260801c916133e0565b916fffcb9843d60f6159c9db58835c9266440260801c916133d7565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916133ce565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916133c5565b916ffff97272373d413259a46990580e213a0260801c916133bc565b826345c3193d60e11b5f5260045260245ffd5b604051906136b282611399565b5f6040838281528260208201520152565b905f19820191821360011661145e57565b81810392915f13801582851316918412161761145e57565b801561145e575f190190565b60020b9060020b90811561371a57627fffff1981145f1983141661145e570590565b634e487b7160e01b5f52601260045260245ffd5b8181029291811591840414171561145e57565b811561371a570490565b9291909161375761480d565b613764601354809261372e565b906137726010548093611472565b9060115492838311613a46575b61378761480d565b6001810180911161145e576137a49261379f9161372e565b611472565b91808311613a3e575b50808214613a01576137e06137cf6137e6936117f46117eb60105480936115a1565b916117f46117eb60105480936115a1565b906115a1565b936015549384805b6139c0575b5061380a6020613814920194855160020b9061335b565b8560020b906136f8565b918461384b60ff60145460181c1694855f1461398657606085015160020b90818160020b125f1461397f57505b97600d5490615113565b9180613857838561372e565b1161396f575050925b5160020b9461386e856115ae565b9561387c60405197886113b4565b858752601f1961388b876115ae565b015f5b8181106139585750505f905b8682106138ab575050505050505090565b6138b5828961165d565b519060020b905260016138e76138d9846138cf858c61165d565b515160020b61209f565b606086015160020b90614f2e565b9160206138f4828b61165d565b51018360020b9052613939878a613932602061392786613921613917828761165d565b515160020b613378565b9461165d565b51015160020b613378565b9089614fcc565b6040613945838c61165d565b510190838060801b03169052019061389a565b6020906139636136a5565b82828c0101520161388e565b6139799250613741565b92613860565b9050613841565b60608501613997815160020b612071565b60020b8260020b125f146139ad57505b976117fa565b6139bb91505160020b612071565b6139a7565b945f19860186811161145e576139d590615001565b6139de87615001565b036139fb576139ef6139f5916136ec565b956136ec565b806137ee565b946137f3565b505050505050604051613a156020826113b4565b5f81525f805b818110613a2757505090565b602090613a326136a5565b82828601015201613a1b565b91505f6137ad565b83925061377f565b805115158252602080820151908301526040908101516001600160a01b0316910152565b600160ff1b811461145e575f0390565b9392916001600160a01b039182169116818103613f83575b50505f915f5b8451811015613c0d576001600160801b036040613abd838861165d565b51015116613ace575b600101613aa0565b613b7e90604060ff60145460181c16805f14613bf557613aee838961165d565b515160020b905b15613be1576020613b06848a61165d565b51015160020b5b613b2c6001600160801b0384613b23878d61165d565b51015116613263565b60ff6060613b3a878d61165d565b5101511691845193613b4b85611333565b60020b845260020b6020840152600f0b838301526060820152815180948192632d35e7ed60e11b83528860048401611531565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610e3557600192613bc4575b509050613ac6565b613bdb9060403d8111611db257611da481836113b4565b50613bbc565b613beb838961165d565b515160020b613b0d565b6020613c01848a61165d565b51015160020b90613af5565b509190928051905f19820191821161145e57602091613c2b9161165d565b5101516018549060181b65ffffff000000169065ffffff0000001916176018557f0000000000000000000000000000000000000000000000000000000000000000613c8060018060a01b0385511630836132c4565b906020850194613c9a60018060a01b0387511630846132c4565b925f8113613f1c575b848413613ea7575b848112613db4575b5050828212613cc4575b5050509050565b84516001600160a01b039081169591169190823b15613db05760405195632961046560e21b87526004870152838660248183875af195861561074b57849596613d93575b505160209291613d2d916001600160a01b0316908390613d2790613a72565b91614611565b600460405180958193630476982d60e21b83525af1908115613d875750613d58575b80808392613cbd565b613d799060203d602011613d80575b613d7181836113b4565b8101906132b5565b505f613d4f565b503d613d67565b604051903d90823e3d90fd5b84613da29195929394956113b4565b613db057908392915f613d08565b8380fd5b81516001600160a01b03848116939116833b15612ba65760405190632961046560e21b82526004820152868160248183885af18015613e9c57908791613e87575b505080516001600160a01b031680613e73575b50516001600160a01b0316613e6957613e22602091613a72565b915b600460405180948193630476982d60e21b83525af1801561074b57613e4a575b80613cb3565b613e629060203d602011613d8057613d7181836113b4565b505f613e44565b5060208491613e24565b613e819084613d2785613a72565b5f613e08565b81613e91916113b4565b612c0957855f613df5565b6040513d89823e3d90fd5b86516001600160a01b038481169116813b15612ba65785613ee392889283604051809681958294630b0d9c0960e01b845230906004850161157f565b03925af18015613f1157908691613efc575b5050613cab565b81613f06916113b4565b611ed257845f613ef5565b6040513d88823e3d90fd5b81516001600160a01b03908116908416803b15610e4057825f91613f599383604051809681958294630b0d9c0960e01b845230906004850161157f565b03925af18015610e3557613f6e575b50613ca3565b613f7b9195505f906113b4565b5f935f613f68565b60405191613f9083611399565b81108252600160208301526040820152613fc860405191633cf3645360e21b8352613fbe60048401856114ee565b60a4830190613a4e565b6101206101048201525f610124820152602081610144815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610e355761401c575b80613a9a565b6140349060203d602011613d8057613d7181836113b4565b505f614016565b6101409290916140c391906001600160a01b0361405782611181565b1684526001600160a01b0361406e60208301611181565b16602085015262ffffff614084604083016113d7565b166040850152614096606082016112a4565b60020b60608501526001600160a01b03906140b390608001611181565b16608084015260a0830190613a4e565b6101206101008201525f6101208201520190565b60ff5f54166145c1576141299060a06140f13660246113e7565b207f00000000000000000000000000000000000000000000000000000000000000009061411e8183614754565b949290969150614841565b60145460181c60ff1680156145ae5760185460181c60020b8260020b135b60015f5260076020525f805160206154e38339815191525460020b9082156145a257818460020b12905b156144c05750505050906141ea91602060ff60145460181c16805f146144ac576141a561307560185460181c60020b612084565b604051916141b283611399565b151582526001838301526001600160a01b031660408083019190915251633cf3645360e21b815294859182919060246004840161403b565b03815f6001600160a01b0386165af18015610e3557614479575b61420e9250614754565b50509050925b60c435908115158203610e405762ffffff91610fff9182911561447057165b169116620f42408183020491010360ff60145460181c165f146143c757608082901d5f600f82900b1261438257600354614276916001600160801b031690611472565b6003555b600f82900b5f81126143285750505f805160206154c3833981519152916142ad60609260018060801b03166004546115a1565b6004555b600454600f548110156142e4575b600354906040519260020b835260208301526040820152a163b47b2fb160e01b905f90565b61010061ff00195f5416175f557f628a470bfdde264ef77cd19acfbfca22b3e4413adaf5837ec9fbc0043e35793f602061431c61480d565b604051908152a16142bf565b62ffffff919250614338906114c1565b9116620f42400391620f4240831161145e575f805160206154c38339815191529260609261437a91614372916001600160801b031661518e565b600454611472565b6004556142b1565b61438b906114c1565b62ffffff8216620f42400390620f4240821161145e576143bf916143b7916001600160801b031661518e565b6003546115a1565b60035561427a565b90600f81900b5f811261443357506003546143ec906001600160801b03831690611472565b6003555b60801d905f600f83900b1261442557505f805160206154c38339815191529161437a60609260018060801b03166004546115a1565b9061433862ffffff916114c1565b61443c906114c1565b62ffffff8316620f42400390620f4240821161145e57614468916143b7916001600160801b031661518e565b6003556143f0565b600c1c16614233565b6020833d6020116144a4575b81614492602093836113b4565b81010312610e405761420e9250614204565b3d9150614485565b6141a561307560185460181c60020b613340565b97949392976144d3575b50505050614214565b614534949750906144f0602092825f146145995761307590613340565b604051916144fd83611399565b1582526001838301526001600160a01b031660408083019190915251633cf3645360e21b815294859182919060246004840161403b565b03815f6001600160a01b0386165af18015610e3557614566575b6145589250614754565b50509050925f8080806144ca565b6020833d602011614591575b8161457f602093836113b4565b81010312610e4057614558925061454e565b3d9150614572565b61307590612084565b818460020b1390614171565b60185460181c60020b8260020b12614147565b5063b47b2fb160e01b905f90565b6001600160a01b0316806145e257504790565b6020602491604051928380926370a0823160e01b82523060048301525afa908115610e35575f91613311575090565b9091906001600160a01b038116908161469f5750505f80808093855af1156146365750565b6040516390bfb86560e01b81526001600160a01b0390911660048201525f602482018190526080604483015260a03d601f01601f191690810160648401523d6084840152903d9060a484013e808201600460a482015260c4633d2cec6f60e21b91015260e40190fd5b60205f604481949682604095865198899363a9059cbb60e01b855260018060a01b0316600485015260248401525af13d15601f3d116001855114161716928281528260208201520152156146f05750565b6040516390bfb86560e01b8152600481019190915263a9059cbb60e01b602482015260806044820152601f3d01601f191660a0810160648301523d60848301523d5f60a484013e808201600460a482015260c4633c9fd93960e21b91015260e40190fd5b919060209060405182810191825260066040820152604081526147786060826113b4565b519020604051631e2eaeaf60e01b8152600481019190915292839060249082906001600160a01b03165afa918215610e35575f926147d9575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b9091506020813d602011614805575b816147f5602093836113b4565b81010312610e405751905f6147b1565b3d91506147e8565b60105480421061483b5761482461482d91426115a1565b60135490613741565b6001810180911161145e5790565b50600190565b73fffd8963efd1fc6a506488495d951d51639616826401000276a21982016001600160a01b031611614ada57602081901b600160201b600160c01b0316808015610e4057693627a301d71055774c859160ff8260018060801b031060071b83811c60018060401b031060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c821060031b177b01c1818141808140018080c0814100004181408140c0c100414140c160221b6f8421084210842108cc6318c6db6d54be85831c1c601f161a17169160808310155f14614ace5750607e1982011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c600160321b90800260cd1c169d600160331b9060cc1c169c600160341b9060cb1c169b600160351b9060ca1c169a600160361b9060c91c1699600160371b9060c81c1698600160381b9060c71c1697600160391b9060c61c16966001603a1b9060c51c16956001603b1b9060c41c16946001603c1b9060c31c16936001603d1b9060c21c16926001603e1b9060c11c16916001603f1b9060c01c1690607f190160401b1717171717171717171717171717026fdb2df09e81959a81455e260799a0632f6f028f6481ab7f045a5af012a19d003aa919820160801d60020b910160801d60020b918282145f14614aaa5750905090565b6001600160a01b0390811690614abf84613378565b1611614ac9575090565b905090565b905081607f031b61491e565b6318521d4960e21b5f9081526001600160a01b0391909116600452602490fd5b91905f905f905f5b8551811015614c8d576001600160801b036040614b1f838961165d565b51015116614b30575b600101614b02565b9192614bdf604060ff60145460181c16805f14614c7557614b51868a61165d565b515160020b905b15614c61576020614b69878b61165d565b51015160020b5b8960ff6060614b9b8a6139216001600160801b0389614b8f848961165d565b51015116600f0b6114c1565b5101511691845193614bac85611333565b60020b845260020b6020840152600f0b838301526060820152815180938192632d35e7ed60e11b83528760048401611531565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610e3557600192614c36925f905f92614c3e575b50614c309192613282565b95613282565b929050614b28565b614c309250614c5b915060403d8111611db257611da481836113b4565b91614c25565b614c6b868a61165d565b515160020b614b70565b6020614c81878b61165d565b51015160020b90614b58565b505091909250614c9f82600654613282565b600655565b9093929193614cb16136a5565b9480614e0457505f5b6001600160a01b031680614cde5750505060020b80835260208301525f6040830152565b919250614de991614d9090606090614d829060b56001600160881b03821160071b82811c6001600160481b031060061b1782811c64ffffffffff1060051b1782811c62ffffff1060041b17600181811c9290921b9083901c62010000010260121c80830401811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900360301b6001600160a01b0316614841565b940193845160020b90614f2e565b92614dd1602087019460020b9182865260ff60145460181c1692835f14614df15750614dc690865160020b905160020b9061335b565b60020b808852613378565b93516001600160801b0394906129e29060020b613378565b166040830152565b614dff915160020b9061209f565b614dc6565b8160ff60145460181c165f14614e3d5750600654614e3891614e329160801d6001600160801b0316906115a1565b826152fd565b614cba565b600654614e3892614e57916001600160801b0316906115a1565b6152fd565b90670de0b6b3a7640000820291808305670de0b6b3a7640000149015171561145e57565b81810292915f8212600160ff1b82141661145e57818405149015171561145e57565b9060018201915f60018412911290801582169115161761145e57565b9190915f838201938412911290801582169115161761145e57565b9081600f0b918203614ee757565b6393dafdf160e01b5f5260045ffd5b80628000000160181c15614f11576335278d125f526004601cfd5b60020b90565b9060020b9060020b02908160020b91820361145e57565b9060ff60145460181c165f14614f7a575f8260020b125f14614f6d57614f6881614f63614f5e82611e679661335b565b612084565b6136f8565b614f17565b614f6881611e67936136f8565b5f8260020b125f14614f9357614f6881611e67936136f8565b614f6881614f63614fa782611e679661209f565b613340565b6117fa6117db6117d26117c96117c4611e6795614fc761480d565b614ebe565b90929091908015614ffb575f19810190811161145e57915b15614ff257611e6792615420565b611e67926153dd565b91614fe4565b61501c6150136150259261379f61480d565b6013549061372e565b60105490611472565b601154808211614ac9575090565b90670de0b6b3a76400008202905f19670de0b6b3a7640000840992828085109403938085039485841115610e4057146150c357670de0b6b3a764000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b81810291905f1982820991838084109303928084039384600160601b1115610e40571461510a57600160601b910990828211900360a01b910360601c1790565b50505060601c90565b808202905f1983820990828083109203918083039283670de0b6b3a76400001115610e40571461517d577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066993670de0b6b3a7640000910990828211900360ee1b910360121c170290565b5050670de0b6b3a764000091500490565b808202905f1983820990828083109203918083039283620f42401115610e4057146151ee577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90606082901b905f19600160601b840992828085109403938085039485841115610e4057146150c3578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b91818302915f1981850993838086109503948086039586851115610e4057146152f5579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b90615307916151fa565b6001600160a01b03811161532d57600160a01b811015613275576001600160a01b031690565b505f90565b615378612dab615348612ecb60a0612175611f3d565b60145460181c60ff16156153ac5760125460020b808260020b135f146153a557505b60125460181c60020b61335b565b61538a614824601154601054906115a1565b90811561371a57600160ff1b81145f1983141661145e570590565b905061536a565b60125460020b808260020b125f146153a5575061536a565b6001600160a01b03918216908216039190821161145e57565b611e67926154159290916001600160a01b038083169082161161541a575b6001600160a01b039161540e91906153c4565b16906151fa565b615474565b906153fb565b611e6792615415929091906001600160a01b038082169083161161546e575b6154676154586001600160a01b038381169085166150ca565b926001600160a01b03926153c4565b169161527d565b9061543f565b6001600160801b0381169190820361548857565b60405162461bcd60e51b81526020600482015260126024820152716c6971756964697479206f766572666c6f7760701b6044820152606490fdfe27db09392d7d230eb65a11bd84925fb8da90df8a067ca8a4fc2933b4f637262bb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828b7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96da164736f6c634300081a000a";
1413
1544
 
1414
1545
  // src/evm/abis/bytecodes/dopplerDN404.ts
1415
- var dopplerDN404_default = "0x608060405234610444576130dd8038038061001981610754565b928339810160c0828203126104445781516001600160401b0381116104445781610044918401610779565b60208301519092906001600160401b0381116104445782610066918301610779565b92604082015190610079606084016107ca565b92610086608082016107ca565b60a08201519095906001600160401b038111610444576100a69201610779565b936001600160a01b03168015610741575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b03821161047a5760015490600182811c92168015610737575b602083101461055f5781601f8493116106c9575b50602090601f8311600114610663575f92610658575b50508160011b915f199060031b1c1916176001555b83516001600160401b03811161047a57600254600181811c9116801561064e575b602082101461055f57601f81116105eb575b50602094601f8211600114610588579481929394955f9261057d575b50508160011b915f199060031b1c1916176002555b82516001600160401b03811161047a57600354600181811c91168015610573575b602082101461055f57601f81116104fc575b506020601f821160011461049957819293945f9261048e575b50508160011b915f199060031b1c1916176003555b604051610bec808201906001600160401b0382118383101761047a5760209183916124f183393381520301905ff0801561046f5768a20d6e21d0e5255309546001600160a01b03918216911661046257801561045557630f4599e55f523360205260205f6024601c82855af160015f5114161561044857678da5cb5b6cef16e65f5260208060046018305afa601f3d1160205160601b151016610435575b68a20d6e21d0e5255308805463ffffffff60201b191664010000000017905568a20d6e21d0e525530980546001600160a01b0319169190911790558061030b575b604051611cf190816108008239f35b6001600160a01b03821691821561042857670de0b6b3a7640000820463fffffffe108260601c1761041b5768a20d6e21d0e525530880546001600160a01b031660a084901b6001600160a01b0319169081179091556103ae929061036e836107de565b80546001600160a01b031690911790555f90815283907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082a36107de565b906bff00000000000000000000008254918260581c9060015f527fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2600260ff821691161560011b1860011760581b16906bff000000000000000000000019161790555f806102fc565b63e5cfe9575f526004601cfd5b63ea553b345f526004601cfd5b5f806004601c82855af16102bb575b5f80fd5b63d125259c5f526004601cfd5b6339a84a7b5f526004601cfd5b63ead4d2e45f526004601cfd5b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b015190505f80610208565b601f1982169060035f52805f20915f5b8181106104e4575095836001959697106104cc575b505050811b0160035561021d565b01515f1960f88460031b161c191690555f80806104be565b9192602060018192868b0151815501940192016104a9565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c81019160208410610555575b601f0160051c01905b81811061054a57506101ef565b5f815560010161053d565b9091508190610534565b634e487b7160e01b5f52602260045260245ffd5b90607f16906101dd565b015190505f806101a7565b601f1982169560025f52805f20915f5b8881106105d3575083600195969798106105bb575b505050811b016002556101bc565b01515f1960f88460031b161c191690555f80806105ad565b91926020600181928685015181550194019201610598565b60025f527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace601f830160051c81019160208410610644575b601f0160051c01905b818110610639575061018b565b5f815560010161062c565b9091508190610623565b90607f1690610179565b015190505f80610143565b60015f9081528281209350601f198516905b8181106106b15750908460019594939210610699575b505050811b01600155610158565b01515f1960f88460031b161c191690555f808061068b565b92936020600181928786015181550195019301610675565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c8101916020851061072d575b90601f859493920160051c01905b81811061071f575061012d565b5f8155849350600101610712565b9091508190610704565b91607f1691610119565b631e4fbdf760e01b5f525f60045260245ffd5b6040519190601f01601f191682016001600160401b0381118382101761047a57604052565b81601f82011215610444578051906001600160401b03821161047a576107a8601f8301601f1916602001610754565b928284526020838301011161044457815f9260208093018386015e8301015290565b51906001600160a01b038216820361044457565b6001600160a01b03165f90815268a20d6e21d0e5255313602052604090209056fe6080806040526004361015610667575b50361561065c575f3560e01c63e5eb36c881146103d25763f6916ddd811461038f576362fb246d811461036b57632d8a746e81146103325763c016aa52811461031f5763d10b6e0c811461022f576327ef549581146102145763f5b100ea81146101ef5763e2c7928181146101d45763cb30b46081146100a95763b7a94eb8146100a057633c10b94e5f526004601cfd5b60015f5260205ff35b60206040510160405260606003546100c081610f14565b6100e4575b50605f601f198201915f6020825180930101526020835201601f191690f35b905060405190608082019160a081016040525f8352600a600435935b5f19019360308282060185530492831561011c57600a90610100565b9250608083601f19810192030181526040519283915f9061013c85610f14565b94600181169081156101b45750600114610173575b61016d9450518092825e015f815203601f198101835282610f4c565b816100c5565b905060035f5260205f20935f5b818110610198575061016d9450830160200190610151565b8554602082890181019190915260019096019587955001610180565b602092935061016d96915060ff1916828601528015150284010190610151565b63ffffffff68a20d6e21d0e52553085460801c165f5260205ff35b63ffffffff6102086004356001600160a01b0316610f83565b5460801c165f5260205ff35b6001600160a01b03610227600435611adf565b165f5260205ff35b68a20d6e21d0e5255309546001600160a01b03163303610312576001600160a01b036044358116906024359060043581169061028061027b5f19600160201b861086020160011b611b18565b611a54565b5416928381036102ef575b505f82815268a20d6e21d0e525530c60209081526040822080546001600160a01b0319166001600160a01b03851617905568a20d6e21d0e525530d60601b600885901c018054600160ff90961695861b191693151590941b92909217909255918152f35b6102f99084611097565b5415610305578361028b565b63cfb3b9425f526004601cfd5b63ce5a776b5f526004601cfd5b6001600160a01b03610227600435611ab6565b6004356001600160a01b0361034682611ab6565b161561035e576001600160a01b039061022790611ab6565b63ceea21b65f526004601cfd5b6103856001600160a01b0360243581169060043516611097565b5415155f5260205ff35b68a20d6e21d0e5255309546001600160a01b031633036103125760243515156103c86001600160a01b0360043581169060443516611097565b5560015f5260205ff35b68a20d6e21d0e5255309546001600160a01b031633819003610312576001600160a01b036024358116916004358216916044359160643590911690841561064f5715610642576001600160a01b0361043a61027b600160201b851085025f190160011b611b18565b54168303610635578281036105fc575b5061045482610f83565b9061045e84610f83565b90825460a01c9283670de0b6b3a7640000116105ef576105989361049690670de0b6b3a763ffff19016001600160601b031682611a70565b82546104b89060a01c670de0b6b3a7640000016001600160601b031684611a70565b6104c182611b58565b6105be575b60016104f56104d487610fa4565b926104ef63ffffffff5f1981845460801c1601168092611a93565b83611b3c565b610517816105095f198701851b8501611b18565b9463ffffffff861690611b97565b63ffffffff5f19911601811b019060e08260031c685106b710e87292a98960611b019260051b1682549182821c1863ffffffff16901b1890556105928563ffffffff845460801c169361057363ffffffff600187011682611a93565b61058d61057f83610fa4565b8663ffffffff871691611b97565b611bbf565b90611c4f565b670de0b6b3a76400005f525f80516020611cc583398151915260205fa360015f5260205ff35b6105c782611b76565b5f82815268a20d6e21d0e525530c6020526040902080546001600160a01b03191690556104c6565b63f4d678b85f526004601cfd5b6106068184611097565b5461044a576001600160a01b0361061c83611adf565b1603610628578361044a565b6359c896be5f526004601cfd5b63a11481005f526004601cfd5b6340739bf05f526004601cfd5b63ea553b345f526004601cfd5b3461066357005b5f80fd5b5f3560e01c90816306fdde0314610e1c57508063095ea7b314610d7b57806310aa0ebb14610d5657806316f0115b14610d2e57806318160ddd14610d06578063207d063614610cc357806323b872dd14610c1d578063274e430b14610bf05780632a6a935d14610b7e578063313ce56714610b635780634ef41efc14610b3357806355f804b3146109c757806370a0823114610998578063715018a61461095457806389026538146109275780638da5cb5b1461090057806395d89b4114610826578063a9059cbb146107f5578063dd62ed3e146107c15763f2fde38b1461074f575f61000f565b3461066357602036600319011261066357610768610ee8565b610770611053565b6001600160a01b031680156107ae575f80546001600160a01b03198116831782556001600160a01b0316905f80516020611ca58339815191529080a3005b631e4fbdf760e01b5f525f60045260245ffd5b346106635760403660031901126106635760206107ed6107df610ee8565b6107e7610efe565b90610fed565b604051908152f35b346106635760403660031901126106635761081b610811610ee8565b60243590336110b5565b602060405160018152f35b34610663575f366003190112610663576040515f60025461084681610f14565b80845290600181169081156108dc575060011461087e575b61087a8361086e81850382610f4c565b60405191829182610ebe565b0390f35b60025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b8082106108c25750909150810160200161086e61085e565b9192600181602092548385880101520191019092916108aa565b60ff191660208086019190915291151560051b8401909101915061086e905061085e565b34610663575f366003190112610663575f546040516001600160a01b039091168152602090f35b34610663575f3660031901126106635761093f611053565b6004805460ff60a01b1916600160a01b179055005b34610663575f3660031901126106635761096c611053565b5f80546001600160a01b0319811682556001600160a01b03165f80516020611ca58339815191528280a3005b346106635760203660031901126106635760206109bb6109b6610ee8565b610f83565b5460a01c604051908152f35b34610663576020366003190112610663576004356001600160401b03811161066357366023820112156106635760048101356001600160401b03811161066357366024828401011161066357610a1b611053565b610a26600354610f14565b601f8111610ad0575b505f601f8211600114610a6b5781925f92610a5d575b50508160011b915f199060031b1c1916176003555f80f35b602492500101358280610a45565b601f1982169260035f5260205f20915f5b858110610ab557508360019510610a99575b505050811b01600355005b01602401355f19600384901b60f8161c19169055828080610a8e565b90926020600181926024878701013581550194019101610a7c565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c81019160208410610b29575b601f0160051c01905b818110610b1e5750610a2f565b5f8155600101610b11565b9091508190610b08565b34610663575f3660031901126106635768a20d6e21d0e5255309546040516001600160a01b039091168152602090f35b34610663575f36600319011261066357602060405160128152f35b3461066357602036600319011261066357600435801580158092036106635761081b91610baa33610f83565b91825460581c915f52337fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2600260ff83169216151860011b1860011790611036565b34610663576020366003190112610663576020610c13610c0e610ee8565b610fc5565b6040519015158152f35b3461066357606036600319011261066357610c36610ee8565b610c3e610efe565b60443590610c4c3384611079565b926e22d473030f116ddee9f6b43ac78ba3331480610cac575b15610ca4575f19935b60018501610c82575b5061081b93506110b5565b848411610c97578361081b9503905584610c77565b6313be252b5f526004601cfd5b835493610c6e565b506004610cb882610f83565b5460581c1615610c65565b3461066357602036600319011261066357610cdc610ee8565b610ce4611053565b600480546001600160a81b0319166001600160a01b0392909216919091179055005b34610663575f36600319011261066357602068a20d6e21d0e52553085460a01c604051908152f35b34610663575f366003190112610663576004546040516001600160a01b039091168152602090f35b34610663575f36600319011261066357602060ff60045460a01c166040519015158152f35b3461066357604036600319011261066357610d94610ee8565b6001600160a01b03811690602435908190610dc6906e22d473030f116ddee9f6b43ac78ba38514610dfa575b33611079565b555f52337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa3602060405160018152f35b610e17610e0633610f83565b600460ff825460581c161790611036565b610dc0565b34610663575f366003190112610663575f600154610e3981610f14565b80845290600181169081156108dc5750600114610e605761087a8361086e81850382610f4c565b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b808210610ea45750909150810160200161086e61085e565b919260018160209254838588010152019101909291610e8c565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361066357565b602435906001600160a01b038216820361066357565b90600182811c92168015610f42575b6020831014610f2e57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610f23565b601f909101601f19168101906001600160401b03821190821017610f6f57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b03165f90815268a20d6e21d0e52553136020526040902090565b6001600160a01b03165f90815268a20d6e21d0e52553106020526040902090565b90610fcf82610f83565b5460581c916001600284161515931615610fe65750565b3b15159150565b906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba31461101b575b61101791611079565b5490565b600461102683610f83565b5460581c1661100e5750505f1990565b805460ff60581b191660589290921b60ff60581b16919091179055565b5f546001600160a01b0316330361106657565b63118cdaa760e01b5f523360045260245ffd5b9060285260145268a20d6e21d0e525530f5f5260485f20905f602852565b9060285260145268a20d6e21d0e525530b5f5260485f20905f602852565b6004549092906001600160a01b03838116908216149081611a45575b50611a36576001600160a01b0382161561064f576110ee83610f83565b6110f783610f83565b68a20d6e21d0e5255309546001600160a01b031615610642576040519161018083016001600160401b03811184821017610f6f576040525f83525f60208401525f60808401525f60a08401525f60c08401525f60e08401525f6101008401525f6101208401525f6101408401525f610160840152805463ffffffff8160801c16604085015263ffffffff835460801c1660608501528060a01c85116105ef5760a01c8490036111af6001600160601b03821683611a70565b825460a01c8501906111ca6001600160601b03831685611a70565b670de0b6b3a76400006040860151910480820391110284526111eb86610fc5565b156119ee575b506117e9565b68a20d6e21d0e52553085463ffffffff60208501518551928382848360801c1601038060808901528360801b9060801b16908360801b191617928368a20d6e21d0e52553085501916040519260c060a085019180835260051b850101604052836040015260c0830183528261016087015260601c1661012085015283516116c9575b5050602082015161135e575b506101408101518061131a575b506101600151806112c8575b505f9081526001600160a01b0391821692909116905f80516020611cc583398151915290602090a3565b600160206040828060a01b0368a20d6e21d0e5255309541693015192603f19840193849163263c69d6835283601f198301525f825160051b6044019260231901915af19151141615610663575f61129e565b600160205f9281838060a01b0368a20d6e21d0e5255309541691015190815160051b60840190607f19830195869360631901915af19151141615610663575f611292565b9194610160829492015160208360601b91015261137a82610fa4565b9463ffffffff61138a8486611bbf565b1660e086015268a20d6e21d0e5255308549263ffffffff670de0b6b3a76400008560a01c049460201c1684811190811502176101008701526113e460608701519563ffffffff602089015188018060c08b01521690611a93565b63ffffffff68a20d6e21d0e52553085460401c169760015b1561166a575b6101208701515f9063ffffffff8b81169116146114b8576114b363ffffffff60018c01169a60e0641fffffffe0631fffffff8360031c1668a20d6e21d0e525531160601b01549260051b16161c63ffffffff165b8060081c685106b710e87292a98760611b0160018260ff161b801982541617905561148863ffffffff82168a8d611b97565b6114a863ffffffff60e08c01511663ffffffff60018c019b169083611c4f565b6101608a0151611c8e565b6113fc565b949798939291906101008801515b63ffffffff6114da5f19830160011b611b18565b1615611646575f19906001810160081c685106b710e87292a98760611b018054196001830160ff1690811c901b80156115ce575b80611524575b50505089811190811502176114c6565b600180939450811901167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f6101e07a1412563212c14164235266736f7425221143267a4524367526767760fc7b2aaaaaaaba69a69a6db6db6db2cb2cb2ce739ce73def7bdeffffffff860260f81c161b60f71c1692831c63d76453e004161a179082685106b710e87292a98760611b03190160081b17910181108a8211175f03175f8080611514565b506001909c9895929c9a9794919a9693965b01805419685106b710e87292a98760611b60088e901c018211811761160857506001906115e0565b9c9295989c9a9194979a969396808d60081c685106b710e87292a98760611b018311611635575b5061150e565b508c1960ff1690811b901c8061162f565b6114b3909a999691929394959a6001810188811190811502176101008b0152611456565b60c0870151860361140257945094925094509468a20d6e21d0e52553085463ffffffff60201b61010084015160201b169163ffffffff60401b9060401b1690600160201b600160601b031916171768a20d6e21d0e5255308555f611285565b602060018860609a9699959a989497981b179101526116e782610fa4565b9461170760408801519563ffffffff895188038060a08c01521690611a93565b60015b156117d0575b5f945f1901946117208688611b3c565b63ffffffff8116905f1982018060021c685106b710e87292a98960611b019060c082549160061b1681811c60018060401b0316901b189055611767826101608c0151611c8e565b600160ff62ffffff8360081c16685106b710e87292a98760611b0192161b19815416905561179481611b58565b61179f575b5061170a565b6117a881611b76565b5f90815268a20d6e21d0e525530c6020526040812080546001600160a01b0319169055611799565b60a0870151850361171057935093509390945f80611279565b9194604086979294970151948651976020880151898110818b18028a1899888b108b8a180289146119df578a8918898c10028918908190038a52900360208901526001600160a01b03838116908316146119bd576040805163144027d3818301526001600160a01b03858116606080840191909152908516608083015260a08201528a8918898c1002891860c0820181815260059190911b820160e0908101909352602082015290810181526101408901526118a483610fa4565b956118ae83610fa4565b9763ffffffff6118be8584611bbf565b1660e08b015260608a01519a81811090821802188a019560015b15611977575b878b6119228163ffffffff808f8f9061191660e0928461190d5f9b5f1960408701510190816040880152611b3c565b16988991611b97565b01511691169083611c4f565b6101408c01516020815183815201905261193b81611b58565b611946575b506118d8565b61194f81611b76565b5f90815268a20d6e21d0e525530c6020526040812080546001600160a01b0319169055611940565b9960010199868b036118de579398955093986119a492975063ffffffff9196508060608701521683611a93565b6119b863ffffffff60408501511682611a93565b6111f7565b94929786819895939897929710908218021860608401510160608401526111f7565b505094929750945094916111f7565b670de0b6b3a7640000906001600160a01b0388811690881614611a23575b04606084015180820391110260208401525f6111f1565b6040850151855190036060860152611a0c565b632e13674560e01b5f5260045ffd5b60ff915060a01c16155f6110d1565b63ffffffff165f5268a20d6e21d0e525530a60205260405f2090565b80546001600160a01b031660a09290921b6001600160a01b031916919091179055565b805463ffffffff60801b191660809290921b63ffffffff60801b16919091179055565b6001600160a01b0390611ada9061027b90600160201b8110025f190160011b611b18565b541690565b6001600160a01b03611af082611ab6565b161561035e575f90815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b60e08160031c685106b710e87292a98960611b01549160051b161c63ffffffff1690565b60e0908260031c9060601b01549160051b161c63ffffffff1690565b8060081c68a20d6e21d0e525530d60601b01549060ff161c60011690565b60018160081c68a20d6e21d0e525530d60601b019160ff161b198154169055565b60e0909291928360031c9060601b019260051b1682549182821c1863ffffffff16901b189055565b805460601c63ffffffff1692918315611bd6575050565b68a20d6e21d0e5255308805463ffffffff19811663ffffffff918216600101918216908117909255835463ffffffff60601b191660609190911b63ffffffff60601b16179092559092508290611c2b82611a54565b80546001600160a01b0319166001600160a01b039092169190911790551561066357565b5f1901908160021c685106b710e87292a98960611b019260c084549360061b169163ffffffff169060201b1782821c1860018060401b0316901b189055565b9060209082519060081b8284015117815201905256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081a000a608034607857601f610bec38819003918201601f19168301916001600160401b03831184841017607c57808492602094604052833981010312607857516001600160a01b03811690819003607857683602298b8c10b0123180546001600160a01b031916919091179055604051610b5b90816100918239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60808060405260043610156101c5575b5036156101ba575f3560e01c63263c69d681146101405763144027d381146100cf57630f4599e51461004857633c10b94e5f526004601cfd5b683602298b8c10b01231546001600160a01b0316806100ab575b50683602298b8c10b01230546001600160a01b03811661009e576001600160a01b0319163317683602298b8c10b012305560015f908152602090f35b63bf656a465f526004601cfd5b6004356001600160a01b0316036100c2575f610062565b63c59ec47a5f526004601cfd5b683602298b8c10b01230546001600160a01b03163303610133576004356024359060443591602483810193600481013560051b0101925b8381036101165760015f5260205ff35b803582845f80516020610b2f8339815191525f80a4602001610106565b63363cb3125f526004601cfd5b683602298b8c10b01230546001600160a01b0316330361013357600435602481810191600481013560051b0101905b81810361017f5760015f5260205ff35b8035600881901c6001600160581b03169060018116801560609290921c91820291025f80516020610b2f8339815191525f80a460200161016f565b346101c157005b5f80fd5b5f3560e01c90816301ffc9a71461098a5750806306fdde031461091f578063081812fc146108c8578063095ea7b31461084657806318160ddd146107fa57806323b872dd146107e6578063243598791461078f57806342842e0e1461071c5780636352211e146106ed5780636cef16e61461062157806370a08231146105c45780638da5cb5b1461059457806395d89b411461052957806397e5311c146104fd578063a22cb46514610471578063b88d4fde14610387578063c87b56dd1461030b5763e985e9c514610297575f61000f565b346101c15760403660031901126101c1576102b06109fe565b60205f6044601c6102bf610a14565b6102c7610ad0565b604080516362fb246d87526001600160a01b039889168852979092169091525afa601f3d1116156103035760405260205f516040519015158152f35b3d5f823e3d90fd5b346101c15760203660031901126101c15760043561032881610afa565b505f806024601c610337610ad0565b6040519563cb30b46085526020525afa15610303576103839060205f803e60205f51823e805160205f5101602083013e6040815182015f602082015201604052604051918291826109d4565b0390f35b60803660031901126101c15761039b6109fe565b6103a3610a14565b60443591606435916001600160401b0383116101c157366023840112156101c1576004830135926001600160401b0384116101c15736602485830101116101c1576103ef858385610a64565b813b6103f757005b83602094602460a49360405198899763150b7a028952338a8a015260018060a01b0316604089015260608801526080808801528260a08801520160c086013701905f601c8401915af115610463575b5163757a42ff60e11b0161045657005b63d1a57ed65f526004601cfd5b3d15610446573d5f823e3d90fd5b346101c15760403660031901126101c15761048a6109fe565b6024358015158091036101c15760205f6064601c826104a7610ad0565b9660018060a01b0316966040519663f6916ddd8352888752604052336060525af160015f511416156103035750337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a3005b346101c1575f3660031901126101c1576020610517610ad0565b6040516001600160a01b039091168152f35b346101c1575f3660031901126101c157610541610ad0565b5f806024601c604051946395d89b418452836020525afa15610303576103839060205f803e60205f51823e805160205f5101602083013e6040815182015f602082015201604052604051918291826109d4565b346101c1575f3660031901126101c157683602298b8c10b01232546040516001600160a01b039091168152602090f35b346101c15760203660031901126101c1576001600160a01b036105e56109fe565b1660205f6044601c6105f5610ad0565b6040519563f5b100ea85528552836040525afa601f3d1116156103035760405260205f51604051908152f35b346101c1575f3660031901126101c157610639610ad0565b683602298b8c10b012325460205f6004601c60018060a01b03851695638da5cb5b84525afa9081601f3d1116600c5160601c0291156106d6575b506001600160a01b031690818103610691575b602060405160018152f35b683602298b8c10b0123280546001600160a01b031916831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a38080610686565b60601b6001600160601b0319166101c15782610673565b346101c15760203660031901126101c15760206001600160a01b03610713600435610afa565b16604051908152f35b61072536610a2a565b91610731838383610a64565b813b61073957005b60a460209260405194859363150b7a028552338686015260018060a01b0316604085015260608401526080808401525f60a08401525f3681375f601c8401915af115610463575163757a42ff60e11b0161045657005b346101c15760203660031901126101c1576107a8610ad0565b60205f6044601c6040519463c016aa5284526004358552836040525afa601f3d1116156103035760408190525f516001600160a01b03168152602090f35b6107f86107f236610a2a565b91610a64565b005b346101c1575f3660031901126101c157610812610ad0565b60205f6044601c6040519463e2c792818452838552836040525afa601f3d1116156103035760405260205f51604051908152f35b60403660031901126101c15761085a6109fe565b60243590610866610ad0565b9060018060a01b03169060205f6064601c6040519463d10b6e0c8452868552876040523360605234905af1601f3d1116156103035750600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b346101c15760203660031901126101c1576108e1610ad0565b60205f6044601c604051946327ef549584526004358552836040525afa601f3d1116156103035760408190525f516001600160a01b03168152602090f35b346101c1575f3660031901126101c157610937610ad0565b5f806024601c604051946306fdde038452836020525afa15610303576103839060205f803e60205f51823e805160205f5101602083013e6040815182015f602082015201604052604051918291826109d4565b346101c15760203660031901126101c157600435906001600160e01b0319821682036101c15760209160e01c635b5e139f8114906301ffc9a76380ac58cd82149114171715158152f35b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101c157565b602435906001600160a01b03821682036101c157565b60609060031901126101c1576004356001600160a01b03811681036101c157906024356001600160a01b03811681036101c1579060443590565b9060846020610a71610ad0565b6040805163e5eb36c881526001600160a01b03968716848201819052959096169086018190526060860187905233608087015294928391601c83019034905af16001825114161561030357505f80516020610b2f8339815191525f80a4565b683602298b8c10b01230546001600160a01b0316908115610aed57565b635b2a47ae5f526004601cfd5b60205f6044601c610b09610ad0565b60405195632d8a746e85528552836040525afa601f3d111615610303576040525f519056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081a000a";
1546
+ var dopplerDN404_default = "0x60a0604052346104a85761390680380380610019816107f1565b928339810160e0828203126104a85781516001600160401b0381116104a85781610044918401610816565b60208301519091906001600160401b0381116104a85781610066918501610816565b9060408401519161007960608601610867565b9361008660808701610867565b60a08701519093906001600160401b0381116104a85760c0916100aa918901610816565b960151926001600160a01b031680156107de575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a382156107cf578284066107c0578051906001600160401b0382116104eb5760015490600182811c921680156107b6575b60208310146105d05781601f849311610748575b50602090601f83116001146106e2575f926106d7575b50508160011b915f199060031b1c1916176001555b8051906001600160401b0382116104eb5760025490600182811c921680156106cd575b60208310146105d05781601f84931161065f575b50602090601f83116001146105f9575f926105ee575b50508160011b915f199060031b1c1916176002555b83516001600160401b0381116104eb57600354600181811c911680156105e4575b60208210146105d057601f811161056d575b50602094601f821160011461050a579481929394955f926104ff575b50508160011b915f199060031b1c1916176003555b608052604051610d35808201906001600160401b038211838310176104eb576020918391612bd183393381520301905ff080156104e0576080516001600160a01b0391909116906001600160601b035f1990910110156104d35768a20d6e21d0e5255309546001600160a01b03166104c65780156104b957630f4599e55f523360205260205f6024601c82855af160015f511416156104ac57678da5cb5b6cef16e65f5260208060046018305afa601f3d1160205160601b151016610499575b68a20d6e21d0e5255308805463ffffffff60201b191664010000000017905568a20d6e21d0e525530980546001600160a01b03191691909117905580610375575b604051612334908161089d823960805181818161040b01528181610a4f01528181610c1c015281816114860152818161171c015281816119110152611f920152f35b6001600160a01b03821691821561048c57608051820463fffffffe108260601c1761047f5768a20d6e21d0e525530880546001600160a01b031660a084901b6001600160a01b03191690811790915561041292906103d28361087b565b80546001600160a01b031690911790555f90815283907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082a361087b565b906bff00000000000000000000008254918260581c9060015f527fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2600260ff821691161560011b1860011760581b16906bff000000000000000000000019161790555f80610333565b63e5cfe9575f526004601cfd5b63ea553b345f526004601cfd5b5f806004601c82855af16102f2575b5f80fd5b63d125259c5f526004601cfd5b6339a84a7b5f526004601cfd5b63ead4d2e45f526004601cfd5b63997c4ef45f526004601cfd5b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b015190505f8061021d565b601f1982169560035f52805f20915f5b8881106105555750836001959697981061053d575b505050811b01600355610232565b01515f1960f88460031b161c191690555f808061052f565b9192602060018192868501518155019401920161051a565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810191602084106105c6575b601f0160051c01905b8181106105bb5750610201565b5f81556001016105ae565b90915081906105a5565b634e487b7160e01b5f52602260045260245ffd5b90607f16906101ef565b015190505f806101b9565b60025f9081528281209350601f198516905b818110610647575090846001959493921061062f575b505050811b016002556101ce565b01515f1960f88460031b161c191690555f8080610621565b9293602060018192878601518155019501930161060b565b60025f529091507f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace601f840160051c810191602085106106c3575b90601f859493920160051c01905b8181106106b557506101a3565b5f81558493506001016106a8565b909150819061069a565b91607f169161018f565b015190505f80610157565b60015f9081528281209350601f198516905b8181106107305750908460019594939210610718575b505050811b0160015561016c565b01515f1960f88460031b161c191690555f808061070a565b929360206001819287860151815501950193016106f4565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c810191602085106107ac575b90601f859493920160051c01905b81811061079e5750610141565b5f8155849350600101610791565b9091508190610783565b91607f169161012d565b633eaf92f760e21b5f5260045ffd5b63265f13bd60e21b5f5260045ffd5b631e4fbdf760e01b5f525f60045260245ffd5b6040519190601f01601f191682016001600160401b038111838210176104eb57604052565b81601f820112156104a8578051906001600160401b0382116104eb57610845601f8301601f19166020016107f1565b92828452602083830101116104a857815f9260208093018386015e8301015290565b51906001600160a01b03821682036104a857565b6001600160a01b03165f90815268a20d6e21d0e5255313602052604090209056fe608080604052600436101561075d575b503615610752575f3560e01c63e5eb36c881146103d25763f6916ddd811461038f576362fb246d811461036b57632d8a746e81146103325763c016aa52811461031f5763d10b6e0c811461022f576327ef549581146102145763f5b100ea81146101ef5763e2c7928181146101d45763cb30b46081146100a95763b7a94eb8146100a057633c10b94e5f526004601cfd5b60015f5260205ff35b60206040510160405260606003546100c0816113a1565b6100e4575b50605f601f198201915f6020825180930101526020835201601f191690f35b905060405190608082019160a081016040525f8352600a600435935b5f19019360308282060185530492831561011c57600a90610100565b9250608083601f19810192030181526040519283915f9061013c856113a1565b94600181169081156101b45750600114610173575b61016d9450518092825e015f815203601f1981018352826113d9565b816100c5565b905060035f5260205f20935f5b818110610198575061016d9450830160200190610151565b8554602082890181019190915260019096019587955001610180565b602092935061016d96915060ff1916828601528015150284010190610151565b63ffffffff68a20d6e21d0e52553085460801c165f5260205ff35b63ffffffff6102086004356001600160a01b031661135f565b5460801c165f5260205ff35b6001600160a01b03610227600435612130565b165f5260205ff35b68a20d6e21d0e5255309546001600160a01b03163303610312576001600160a01b036044358116906024359060043581169061028061027b5f19600160201b861086020160011b612055565b6120eb565b5416928381036102ef575b505f82815268a20d6e21d0e525530c60209081526040822080546001600160a01b0319166001600160a01b03851617905568a20d6e21d0e525530d60601b600885901c018054600160ff90961695861b191693151590941b92909217909255918152f35b6102f990846115cd565b5415610305578361028b565b63cfb3b9425f526004601cfd5b63ce5a776b5f526004601cfd5b6001600160a01b03610227600435612107565b6004356001600160a01b0361034682612107565b161561035e576001600160a01b039061022790612107565b63ceea21b65f526004601cfd5b6103856001600160a01b03602435811690600435166115cd565b5415155f5260205ff35b68a20d6e21d0e5255309546001600160a01b031633036103125760243515156103c86001600160a01b03600435811690604435166115cd565b5560015f5260205ff35b68a20d6e21d0e5255309546001600160a01b031633819003610312576001600160a01b0360043581165f818152600560205260409020547f000000000000000000000000000000000000000000000000000000000000000093919260443592916064358216916024351690610448908790611438565b935f925f948661072d575b83156107205715610713576001600160a01b0361048061027b600160201b851085025f190160011b612055565b54168703610706578681036106cd575b5061049a8661135f565b906104a48361135f565b90825460a01c808a116106c0576105a69361055e916104cf908c90036001600160601b031682612169565b83546104ee9060a01c6001600160601b038d8116919091011685612169565b6104f78361229f565b61068f575b600161052b61050a8c611380565b9261052563ffffffff5f1981845460801c160116809261218c565b83612079565b61054d8161053f5f198801851b8501612055565b9463ffffffff8616906120c3565b63ffffffff165f1901811b01612095565b6105a08463ffffffff845460801c169361058163ffffffff60018701168261218c565b61059b61058d83611380565b8663ffffffff8716916120c3565b6121d0565b90612260565b855f52845f8051602061231483398151915260205fa36105c95760015f5260205ff35b5f19820191821161067b5763ffffffff6105e28461135f565b5460801c169182811061060d575b5050505f52600560205260405f20908154039055808080806100a0565b61061684611380565b928210156105f0578181146105f0576001826106628363ffffffff8481966106628a610645886106739d612079565b928161065d610655838795612079565b809b836120c3565b6120c3565b825f19911601811b01911690612095565b8280806105f0565b634e487b7160e01b5f52601160045260245ffd5b610698836121af565b5f83815268a20d6e21d0e525530c6020526040902080546001600160a01b03191690556104fc565b63f4d678b85f526004601cfd5b6106d781886115cd565b54610490576001600160a01b036106ed83612130565b16036106f95787610490565b6359c896be5f526004601cfd5b63a11481005f526004601cfd5b6340739bf05f526004601cfd5b63ea553b345f526004601cfd5b9350935063ffffffff61074760015f198401811b01612055565b169385851093610453565b3461075957005b5f80fd5b5f3560e01c90816306fdde031461126757508063095ea7b3146111c65780630ad9e7bf1461118e57806310aa0ebb1461116957806316f0115b1461114157806318160ddd14611119578063207d0636146110d657806323b872dd14611030578063274e430b146110035780632a6a935d14610f915780632f745c5914610f2a578063313ce56714610f0f5780634ef41efc14610edf5780634f6ccce714610ec157806355f804b314610d685780635b2aa23914610bcb5780636c0360eb14610b3957806370a0823114610b0a578063715018a614610ac65780638902653814610a995780638da5cb5b14610a72578063907af6c014610a3857806395d89b411461095e578063a9059cbb1461092d578063dd62ed3e146108f95763f2fde38b14610887575f61000f565b34610759576020366003190112610759576108a0611333565b6108a8611589565b6001600160a01b031680156108e6575f80546001600160a01b03198116831782556001600160a01b0316905f805160206122f48339815191529080a3005b631e4fbdf760e01b5f525f60045260245ffd5b34610759576040366003190112610759576020610925610917611333565b61091f611349565b90611523565b604051908152f35b3461075957604036600319011261075957610953610949611333565b60243590336115eb565b602060405160018152f35b34610759575f366003190112610759576040515f60025461097e816113a1565b8084529060018116908115610a1457506001146109b6575b6109b2836109a6818503826113d9565b60405191829182611309565b0390f35b60025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b8082106109fa575090915081016020016109a6610996565b9192600181602092548385880101520191019092916109e2565b60ff191660208086019190915291151560051b840190910191506109a69050610996565b34610759575f3660031901126107595760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610759575f366003190112610759575f546040516001600160a01b039091168152602090f35b34610759575f36600319011261075957610ab1611589565b6004805460ff60a01b1916600160a01b179055005b34610759575f36600319011261075957610ade611589565b5f80546001600160a01b0319811682556001600160a01b03165f805160206122f48339815191528280a3005b34610759576020366003190112610759576020610b2d610b28611333565b61135f565b5460a01c604051908152f35b34610759575f366003190112610759576040515f600354610b59816113a1565b8084529060018116908115610a145750600114610b80576109b2836109a6818503826113d9565b60035f9081525f805160206122d4833981519152939250905b808210610bb1575090915081016020016109a6610996565b919260018160209254838588010152019101909291610b99565b34610759576020366003190112610759576004356001600160401b03811161075957366023820112156107595760048101356001600160401b038111610759573660248260051b84010111610759577f0000000000000000000000000000000000000000000000000000000000000000918282029282840481148315171561067b57335f52600560205260405f205493610c643361135f565b5460a01c610c728287611456565b11610d5957610c84610c8a9286611438565b94611456565b335f52600560205260405f2055610ca03361135f565b9263ffffffff610caf33611380565b945460801c16915f915b84831015610d575760248360051b8301013584811015610d4857818110610d3e578181600193849303610cf2575b5001925b0191610cb9565b8063ffffffff848b61066282610d0b610d389784612079565b610d26818a610d1a8188612079565b9661065d888c836120c3565b888616919086165f1901811b01612095565b88610ce7565b5091600190610ceb565b633277964160e01b5f5260045ffd5b005b6302579b0560e11b5f5260045ffd5b34610759576020366003190112610759576004356001600160401b03811161075957366023820112156107595760048101356001600160401b03811161075957366024828401011161075957610dbc611589565b610dc76003546113a1565b601f8111610e71575b505f601f8211600114610e0c5781925f92610dfe575b50508160011b915f199060031b1c1916176003555f80f35b602492500101358280610de6565b601f1982169260035f5260205f20915f5b858110610e5657508360019510610e3a575b505050811b01600355005b01602401355f19600384901b60f8161c19169055828080610e2f565b90926020600181926024878701013581550194019101610e1d565b60035f525f805160206122d4833981519152601f830160051c81019160208410610eb7575b601f0160051c01905b818110610eac5750610dd0565b5f8155600101610e9f565b9091508190610e96565b34610759576020366003190112610759576020610925600435611463565b34610759575f3660031901126107595768a20d6e21d0e5255309546040516001600160a01b039091168152602090f35b34610759575f36600319011261075957602060405160128152f35b3461075957604036600319011261075957610f43611333565b60243563ffffffff610f548361135f565b5460801c16811015610f8257610f7963ffffffff91610f74602094611380565b612079565b16604051908152f35b6306ed618760e11b5f5260045ffd5b3461075957602036600319011261075957600435801580158092036107595761095391610fbd3361135f565b91825460581c915f52337fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2600260ff83169216151860011b186001179061156c565b34610759576020366003190112610759576020611026611021611333565b611410565b6040519015158152f35b3461075957606036600319011261075957611049611333565b611051611349565b6044359061105f33846115af565b926e22d473030f116ddee9f6b43ac78ba33314806110bf575b156110b7575f19935b60018501611095575b5061095393506115eb565b8484116110aa5783610953950390558461108a565b6313be252b5f526004601cfd5b835493611081565b5060046110cb8261135f565b5460581c1615611078565b34610759576020366003190112610759576110ef611333565b6110f7611589565b600480546001600160a81b0319166001600160a01b0392909216919091179055005b34610759575f36600319011261075957602068a20d6e21d0e52553085460a01c604051908152f35b34610759575f366003190112610759576004546040516001600160a01b039091168152602090f35b34610759575f36600319011261075957602060ff60045460a01c166040519015158152f35b34610759576020366003190112610759576001600160a01b036111af611333565b165f526005602052602060405f2054604051908152f35b34610759576040366003190112610759576111df611333565b6001600160a01b03811690602435908190611211906e22d473030f116ddee9f6b43ac78ba38514611245575b336115af565b555f52337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa3602060405160018152f35b6112626112513361135f565b600460ff825460581c16179061156c565b61120b565b34610759575f366003190112610759575f600154611284816113a1565b8084529060018116908115610a1457506001146112ab576109b2836109a6818503826113d9565b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106112ef575090915081016020016109a6610996565b9192600181602092548385880101520191019092916112d7565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361075957565b602435906001600160a01b038216820361075957565b6001600160a01b03165f90815268a20d6e21d0e52553136020526040902090565b6001600160a01b03165f90815268a20d6e21d0e52553106020526040902090565b90600182811c921680156113cf575b60208310146113bb57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916113b0565b601f909101601f19168101906001600160401b038211908210176113fc57604052565b634e487b7160e01b5f52604160045260245ffd5b9061141a8261135f565b5460581c9160016002841615159316156114315750565b3b15159150565b8115611442570490565b634e487b7160e01b5f52601260045260245ffd5b9190820180921161067b57565b9068a20d6e21d0e52553085463ffffffff8160801c16831015611514576114ae907f00000000000000000000000000000000000000000000000000000000000000009060a01c611438565b905f925f5b8381106114c957639f6fb6c960e01b5f5260045ffd5b806001018060011161067b5763ffffffff6114e68360011b612055565b166114f5575b506001016114b3565b828692961461150b5750600180910194906114ec565b93505050915090565b639f6fb6c960e01b5f5260045ffd5b906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba314611551575b61154d916115af565b5490565b600461155c8361135f565b5460581c166115445750505f1990565b805460ff60581b191660589290921b60ff60581b16919091179055565b5f546001600160a01b0316330361159c57565b63118cdaa760e01b5f523360045260245ffd5b9060285260145268a20d6e21d0e525530f5f5260485f20905f602852565b9060285260145268a20d6e21d0e525530b5f5260485f20905f602852565b6004549092906001600160a01b03838116908216149081612046575b50612037576001600160a01b038316611fe0575b6001600160a01b03821615610720576116338361135f565b61163c8361135f565b68a20d6e21d0e5255309546001600160a01b031615610713576040519161018083016001600160401b038111848210176113fc576040525f83525f60208401525f60808401525f60a08401525f60c08401525f60e08401525f6101008401525f6101208401525f6101408401525f610160840152805463ffffffff8160801c16604085015263ffffffff835460801c1660608501528060a01c85116106c0576116f560a082901c8690036001600160601b031683612169565b825460a01c8501906117106001600160601b03831685612169565b611745604086015191877f00000000000000000000000000000000000000000000000000000000000000009160a01c03611438565b808203911102845261175686611410565b15611f78575b50611d73565b68a20d6e21d0e52553085463ffffffff60208501518551928382848360801c1601038060808901528360801b9060801b16908360801b191617928368a20d6e21d0e52553085501916040519260c060a085019180835260051b850101604052836040015260c0830183528261016087015260601c166101208501528351611c53575b505060208201516118c9575b5061014081015180611885575b50610160015180611833575b505f9081526001600160a01b0391821692909116905f8051602061231483398151915290602090a3565b600160206040828060a01b0368a20d6e21d0e5255309541693015192603f19840193849163263c69d6835283601f198301525f825160051b6044019260231901915af19151141615610759575f611809565b600160205f9281838060a01b0368a20d6e21d0e5255309541691015190815160051b60840190607f19830195869360631901915af19151141615610759575f6117fd565b9194610160829492015160208360601b9101526118e582611380565b9463ffffffff6118f584866121d0565b1660e086015268a20d6e21d0e5255308549263ffffffff6119397f00000000000000000000000000000000000000000000000000000000000000008660a01c611438565b9460201c16848111908115021761010087015261196e60608701519563ffffffff602089015188018060c08b0152169061218c565b63ffffffff68a20d6e21d0e52553085460401c169760015b15611bf4575b6101208701515f9063ffffffff8b8116911614611a4257611a3d63ffffffff60018c01169a60e0641fffffffe0631fffffff8360031c1668a20d6e21d0e525531160601b01549260051b16161c63ffffffff165b8060081c685106b710e87292a98760611b0160018260ff161b8019825416179055611a1263ffffffff82168a8d6120c3565b611a3263ffffffff60e08c01511663ffffffff60018c019b169083612260565b6101608a01516122bd565b611986565b949798939291906101008801515b63ffffffff611a645f19830160011b612055565b1615611bd0575f19906001810160081c685106b710e87292a98760611b018054196001830160ff1690811c901b8015611b58575b80611aae575b5050508981119081150217611a50565b600180939450811901167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f6101e07a1412563212c14164235266736f7425221143267a4524367526767760fc7b2aaaaaaaba69a69a6db6db6db2cb2cb2ce739ce73def7bdeffffffff860260f81c161b60f71c1692831c63d76453e004161a179082685106b710e87292a98760611b03190160081b17910181108a8211175f03175f8080611a9e565b506001909c9895929c9a9794919a9693965b01805419685106b710e87292a98760611b60088e901c0182118117611b925750600190611b6a565b9c9295989c9a9194979a969396808d60081c685106b710e87292a98760611b018311611bbf575b50611a98565b508c1960ff1690811b901c80611bb9565b611a3d909a999691929394959a6001810188811190811502176101008b01526119e0565b60c0870151860361198c57945094925094509468a20d6e21d0e52553085463ffffffff60201b61010084015160201b169163ffffffff60401b9060401b1690600160201b600160601b031916171768a20d6e21d0e5255308555f6117f0565b602060018860609a9699959a989497981b17910152611c7182611380565b94611c9160408801519563ffffffff895188038060a08c0152169061218c565b60015b15611d5a575b5f945f190194611caa8688612079565b63ffffffff8116905f1982018060021c685106b710e87292a98960611b019060c082549160061b1681811c60018060401b0316901b189055611cf1826101608c01516122bd565b600160ff62ffffff8360081c16685106b710e87292a98760611b0192161b198154169055611d1e8161229f565b611d29575b50611c94565b611d32816121af565b5f90815268a20d6e21d0e525530c6020526040812080546001600160a01b0319169055611d23565b60a08701518503611c9a57935093509390945f806117e4565b9194604086979294970151948651976020880151898110818b18028a1899888b108b8a18028914611f69578a8918898c10028918908190038a52900360208901526001600160a01b0383811690831614611f47576040805163144027d3818301526001600160a01b03858116606080840191909152908516608083015260a08201528a8918898c1002891860c0820181815260059190911b820160e090810190935260208201529081018152610140890152611e2e83611380565b95611e3883611380565b9763ffffffff611e4885846121d0565b1660e08b015260608a01519a81811090821802188a019560015b15611f01575b878b611eac8163ffffffff808f8f90611ea060e09284611e975f9b5f1960408701510190816040880152612079565b169889916120c3565b01511691169083612260565b6101408c015160208151838152019052611ec58161229f565b611ed0575b50611e62565b611ed9816121af565b5f90815268a20d6e21d0e525530c6020526040812080546001600160a01b0319169055611eca565b9960010199868b03611e6857939895509398611f2e92975063ffffffff919650806060870152168361218c565b611f4263ffffffff6040850151168261218c565b611762565b9492978681989593989792971090821802186060840151016060840152611762565b50509492975094509491611762565b611fb7906001600160a01b0388811690881614611fcd575b7f000000000000000000000000000000000000000000000000000000000000000090611438565b606084015180820391110260208401525f61175c565b6040850151855190036060860152611f90565b611fe98361135f565b5460a01c60018060a01b0384165f52600560205260405f205490808211918215612024575b50501561161b576311acc28f60e01b5f5260045ffd5b81039150811161067b5781115f8061200e565b632e13674560e01b5f5260045ffd5b60ff915060a01c16155f611607565b60e08160031c685106b710e87292a98960611b01549160051b161c63ffffffff1690565b60e0908260031c9060601b01549160051b161c63ffffffff1690565b9060e08260031c685106b710e87292a98960611b019260051b1682549182821c1863ffffffff16901b189055565b60e0909291928360031c9060601b019260051b1682549182821c1863ffffffff16901b189055565b63ffffffff165f5268a20d6e21d0e525530a60205260405f2090565b6001600160a01b039061212b9061027b90600160201b8110025f190160011b612055565b541690565b6001600160a01b0361214182612107565b161561035e575f90815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b80546001600160a01b031660a09290921b6001600160a01b031916919091179055565b805463ffffffff60801b191660809290921b63ffffffff60801b16919091179055565b60018160081c68a20d6e21d0e525530d60601b019160ff161b198154169055565b805460601c63ffffffff16929183156121e7575050565b68a20d6e21d0e5255308805463ffffffff19811663ffffffff918216600101918216908117909255835463ffffffff60601b191660609190911b63ffffffff60601b1617909255909250829061223c826120eb565b80546001600160a01b0319166001600160a01b039092169190911790551561075957565b5f1901908160021c685106b710e87292a98960611b019260c084549360061b169163ffffffff169060201b1782821c1860018060401b0316901b189055565b8060081c68a20d6e21d0e525530d60601b01549060ff161c60011690565b9060209082519060081b8284015117815201905256fec2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef608034607857601f610d3538819003918201601f19168301916001600160401b03831184841017607c57808492602094604052833981010312607857516001600160a01b03811690819003607857683602298b8c10b0123180546001600160a01b031916919091179055604051610ca490816100918239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60808060405260043610156101c5575b5036156101ba575f3560e01c63263c69d681146101405763144027d381146100cf57630f4599e51461004857633c10b94e5f526004601cfd5b683602298b8c10b01231546001600160a01b0316806100ab575b50683602298b8c10b01230546001600160a01b03811661009e576001600160a01b0319163317683602298b8c10b012305560015f908152602090f35b63bf656a465f526004601cfd5b6004356001600160a01b0316036100c2575f610062565b63c59ec47a5f526004601cfd5b683602298b8c10b01230546001600160a01b03163303610133576004356024359060443591602483810193600481013560051b0101925b8381036101165760015f5260205ff35b803582845f80516020610c848339815191525f80a4602001610106565b63363cb3125f526004601cfd5b683602298b8c10b01230546001600160a01b0316330361013357600435602481810191600481013560051b0101905b81810361017f5760015f5260205ff35b8035600881901c6001600160581b03169060018116801560609290921c91820291025f80516020610c848339815191525f80a460200161016f565b346101c157005b5f80fd5b5f3560e01c90816301ffc9a714610aa85750806306fdde0314610a3d578063081812fc146109e6578063095ea7b31461096457806318160ddd1461091857806323b872dd1461090457806324359879146108ad5780632f745c591461083c57806342842e0e146107c95780634f6ccce7146107325780636352211e146107035780636cef16e61461063757806370a08231146105da5780638da5cb5b146105aa57806395d89b411461053f57806397e5311c14610513578063a22cb46514610487578063b88d4fde1461039d578063c87b56dd146103215763e985e9c5146102ad575f61000f565b346101c15760403660031901126101c1576102c6610b1c565b60205f6044601c6102d5610b32565b6102dd610c25565b604080516362fb246d87526001600160a01b039889168852979092169091525afa601f3d1116156103195760405260205f516040519015158152f35b3d5f823e3d90fd5b346101c15760203660031901126101c15760043561033e81610c4f565b505f806024601c61034d610c25565b6040519563cb30b46085526020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b0390f35b60803660031901126101c1576103b1610b1c565b6103b9610b32565b60443591606435916001600160401b0383116101c157366023840112156101c1576004830135926001600160401b0384116101c15736602485830101116101c157610405858385610b82565b813b61040d57005b83602094602460a49360405198899763150b7a028952338a8a015260018060a01b0316604089015260608801526080808801528260a08801520160c086013701905f601c8401915af115610479575b5163757a42ff60e11b0161046c57005b63d1a57ed65f526004601cfd5b3d1561045c573d5f823e3d90fd5b346101c15760403660031901126101c1576104a0610b1c565b6024358015158091036101c15760205f6064601c826104bd610c25565b9660018060a01b0316966040519663f6916ddd8352888752604052336060525af160015f511416156103195750337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a3005b346101c1575f3660031901126101c157602061052d610c25565b6040516001600160a01b039091168152f35b346101c1575f3660031901126101c157610557610c25565b5f806024601c604051946395d89b418452836020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b346101c1575f3660031901126101c157683602298b8c10b01232546040516001600160a01b039091168152602090f35b346101c15760203660031901126101c1576001600160a01b036105fb610b1c565b1660205f6044601c61060b610c25565b6040519563f5b100ea85528552836040525afa601f3d1116156103195760405260205f51604051908152f35b346101c1575f3660031901126101c15761064f610c25565b683602298b8c10b012325460205f6004601c60018060a01b03851695638da5cb5b84525afa9081601f3d1116600c5160601c0291156106ec575b506001600160a01b0316908181036106a7575b602060405160018152f35b683602298b8c10b0123280546001600160a01b031916831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3808061069c565b60601b6001600160601b0319166101c15782610689565b346101c15760203660031901126101c15760206001600160a01b03610729600435610c4f565b16604051908152f35b346101c15760203660031901126101c157602460206001600160a01b03610757610c25565b1660405192838092634f6ccce760e01b825260043560048301525afa80156107be575f9061078b575b602090604051908152f35b506020813d6020116107b6575b816107a560209383610bee565b810103126101c15760209051610780565b3d9150610798565b6040513d5f823e3d90fd5b6107d236610b48565b916107de838383610b82565b813b6107e657005b60a460209260405194859363150b7a028552338686015260018060a01b0316604085015260608401526080808401525f60a08401525f3681375f601c8401915af115610479575163757a42ff60e11b0161046c57005b346101c15760403660031901126101c157610855610b1c565b60206001600160a01b03610867610c25565b604051632f745c5960e01b81526001600160a01b039094166004850152602480359085015283916044918391165afa80156107be575f9061078b57602090604051908152f35b346101c15760203660031901126101c1576108c6610c25565b60205f6044601c6040519463c016aa5284526004358552836040525afa601f3d1116156103195760408190525f516001600160a01b03168152602090f35b61091661091036610b48565b91610b82565b005b346101c1575f3660031901126101c157610930610c25565b60205f6044601c6040519463e2c792818452838552836040525afa601f3d1116156103195760405260205f51604051908152f35b60403660031901126101c157610978610b1c565b60243590610984610c25565b9060018060a01b03169060205f6064601c6040519463d10b6e0c8452868552876040523360605234905af1601f3d1116156103195750600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b346101c15760203660031901126101c1576109ff610c25565b60205f6044601c604051946327ef549584526004358552836040525afa601f3d1116156103195760408190525f516001600160a01b03168152602090f35b346101c1575f3660031901126101c157610a55610c25565b5f806024601c604051946306fdde038452836020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b346101c15760203660031901126101c157600435906001600160e01b0319821682036101c15760209160e01c635b5e139f8114906301ffc9a76380ac58cd82149114171715158152f35b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101c157565b602435906001600160a01b03821682036101c157565b60609060031901126101c1576004356001600160a01b03811681036101c157906024356001600160a01b03811681036101c1579060443590565b9060846020610b8f610c25565b6040805163e5eb36c881526001600160a01b03968716848201819052959096169086018190526060860187905233608087015294928391601c83019034905af16001825114161561031957505f80516020610c848339815191525f80a4565b601f909101601f19168101906001600160401b03821190821017610c1157604052565b634e487b7160e01b5f52604160045260245ffd5b683602298b8c10b01230546001600160a01b0316908115610c4257565b635b2a47ae5f526004601cfd5b60205f6044601c610c5e610c25565b60405195632d8a746e85528552836040525afa601f3d111615610319576040525f519056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
1547
+
1548
+ // src/evm/abis/bytecodes/dopplerDN404BaseSepolia.ts
1549
+ var dopplerDN404BaseSepolia_default = "0x60a06040523461049b57613a4d80380380610019816107c6565b928339810160e08282031261049b5781516001600160401b03811161049b57816100449184016107eb565b60208301519091906001600160401b03811161049b57816100669185016107eb565b906040840151916100796060860161083c565b936100866080870161083c565b60a08701519093906001600160401b03811161049b5760c0916100aa9189016107eb565b960151926001600160a01b031680156107b3575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116104de5760015490600182811c921680156107a9575b60208310146105c35781601f84931161073b575b50602090601f83116001146106d5575f926106ca575b50508160011b915f199060031b1c1916176001555b8051906001600160401b0382116104de5760025490600182811c921680156106c0575b60208310146105c35781601f849311610652575b50602090601f83116001146105ec575f926105e1575b50508160011b915f199060031b1c1916176002555b83516001600160401b0381116104de57600354600181811c911680156105d7575b60208210146105c357601f8111610560575b50602094601f82116001146104fd579481929394955f926104f2575b50508160011b915f199060031b1c1916176003555b608052604051610d41808201906001600160401b038211838310176104de576020918391612d0c83393381520301905ff080156104d3576080516001600160a01b0391909116906001600160601b035f1990910110156104c65768a20d6e21d0e5255309546001600160a01b03166104b95780156104ac57630f4599e55f523360205260205f6024601c82855af160015f5114161561049f57678da5cb5b6cef16e65f5260208060046018305afa601f3d1160205160601b15101661048c575b68a20d6e21d0e5255308805463ffffffff60201b191664010000000017905568a20d6e21d0e525530980546001600160a01b03191691909117905580610368575b60405161249a9081610872823960805181818161040b01528181610a4f01528181610c47015281816115920152818161184701528181611a3c01526120bd0152f35b6001600160a01b03821691821561047f57608051820463fffffffe108260601c176104725768a20d6e21d0e525530880546001600160a01b031660a084901b6001600160a01b03191690811790915561040592906103c583610850565b80546001600160a01b031690911790555f90815283907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082a3610850565b906bff00000000000000000000008254918260581c9060015f527fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2600260ff821691161560011b1860011760581b16906bff000000000000000000000019161790555f80610326565b63e5cfe9575f526004601cfd5b63ea553b345f526004601cfd5b5f806004601c82855af16102e5575b5f80fd5b63d125259c5f526004601cfd5b6339a84a7b5f526004601cfd5b63ead4d2e45f526004601cfd5b63997c4ef45f526004601cfd5b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b015190505f80610210565b601f1982169560035f52805f20915f5b88811061054857508360019596979810610530575b505050811b01600355610225565b01515f1960f88460031b161c191690555f8080610522565b9192602060018192868501518155019401920161050d565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810191602084106105b9575b601f0160051c01905b8181106105ae57506101f4565b5f81556001016105a1565b9091508190610598565b634e487b7160e01b5f52602260045260245ffd5b90607f16906101e2565b015190505f806101ac565b60025f9081528281209350601f198516905b81811061063a5750908460019594939210610622575b505050811b016002556101c1565b01515f1960f88460031b161c191690555f8080610614565b929360206001819287860151815501950193016105fe565b60025f529091507f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace601f840160051c810191602085106106b6575b90601f859493920160051c01905b8181106106a85750610196565b5f815584935060010161069b565b909150819061068d565b91607f1691610182565b015190505f8061014a565b60015f9081528281209350601f198516905b818110610723575090846001959493921061070b575b505050811b0160015561015f565b01515f1960f88460031b161c191690555f80806106fd565b929360206001819287860151815501950193016106e7565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c8101916020851061079f575b90601f859493920160051c01905b8181106107915750610134565b5f8155849350600101610784565b9091508190610776565b91607f1691610120565b631e4fbdf760e01b5f525f60045260245ffd5b6040519190601f01601f191682016001600160401b038111838210176104de57604052565b81601f8201121561049b578051906001600160401b0382116104de5761081a601f8301601f19166020016107c6565b928284526020838301011161049b57815f9260208093018386015e8301015290565b51906001600160a01b038216820361049b57565b6001600160a01b03165f90815268a20d6e21d0e5255313602052604090209056fe608080604052600436101561075d575b503615610752575f3560e01c63e5eb36c881146103d25763f6916ddd811461038f576362fb246d811461036b57632d8a746e81146103325763c016aa52811461031f5763d10b6e0c811461022f576327ef549581146102145763f5b100ea81146101ef5763e2c7928181146101d45763cb30b46081146100a95763b7a94eb8146100a057633c10b94e5f526004601cfd5b60015f5260205ff35b60206040510160405260606003546100c0816114af565b6100e4575b50605f601f198201915f6020825180930101526020835201601f191690f35b905060405190608082019160a081016040525f8352600a600435935b5f19019360308282060185530492831561011c57600a90610100565b9250608083601f19810192030181526040519283915f9061013c856114af565b94600181169081156101b45750600114610173575b61016d9450518092825e015f815203601f19810183528261148c565b816100c5565b905060035f5260205f20935f5b818110610198575061016d9450830160200190610151565b8554602082890181019190915260019096019587955001610180565b602092935061016d96915060ff1916828601528015150284010190610151565b63ffffffff68a20d6e21d0e52553085460801c165f5260205ff35b63ffffffff6102086004356001600160a01b031661144a565b5460801c165f5260205ff35b6001600160a01b0361022760043561228a565b165f5260205ff35b68a20d6e21d0e5255309546001600160a01b03163303610312576001600160a01b036044358116906024359060043581169061028061027b5f19600160201b861086020160011b6121af565b612245565b5416928381036102ef575b505f82815268a20d6e21d0e525530c60209081526040822080546001600160a01b0319166001600160a01b03851617905568a20d6e21d0e525530d60601b600885901c018054600160ff90961695861b191693151590941b92909217909255918152f35b6102f990846116f1565b5415610305578361028b565b63cfb3b9425f526004601cfd5b63ce5a776b5f526004601cfd5b6001600160a01b03610227600435612261565b6004356001600160a01b0361034682612261565b161561035e576001600160a01b039061022790612261565b63ceea21b65f526004601cfd5b6103856001600160a01b03602435811690600435166116f1565b5415155f5260205ff35b68a20d6e21d0e5255309546001600160a01b031633036103125760243515156103c86001600160a01b03600435811690604435166116f1565b5560015f5260205ff35b68a20d6e21d0e5255309546001600160a01b031633819003610312576001600160a01b0360043581165f818152600560205260409020547f000000000000000000000000000000000000000000000000000000000000000093919260443592916064358216916024351690610448908790611544565b935f925f948661072d575b83156107205715610713576001600160a01b0361048061027b600160201b851085025f190160011b6121af565b54168703610706578681036106cd575b5061049a8661144a565b906104a48361144a565b90825460a01c808a116106c0576105a69361055e916104cf908c90036001600160601b0316826122c3565b83546104ee9060a01c6001600160601b038d81169190910116856122c3565b6104f7836123f9565b61068f575b600161052b61050a8c61146b565b9261052563ffffffff5f1981845460801c16011680926122e6565b836121d3565b61054d8161053f5f198801851b85016121af565b9463ffffffff86169061221d565b63ffffffff165f1901811b016121ef565b6105a08463ffffffff845460801c169361058163ffffffff6001870116826122e6565b61059b61058d8361146b565b8663ffffffff87169161221d565b61232a565b906123ba565b855f52845f8051602061246e83398151915260205fa36105c95760015f5260205ff35b5f19820191821161067b5763ffffffff6105e28461144a565b5460801c169182811061060d575b5050505f52600560205260405f20908154039055808080806100a0565b6106168461146b565b928210156105f0578181146105f0576001826106628363ffffffff8481966106628a610645886106739d6121d3565b928161065d6106558387956121d3565b809b8361221d565b61221d565b825f19911601811b019116906121ef565b8280806105f0565b634e487b7160e01b5f52601160045260245ffd5b61069883612309565b5f83815268a20d6e21d0e525530c6020526040902080546001600160a01b03191690556104fc565b63f4d678b85f526004601cfd5b6106d781886116f1565b54610490576001600160a01b036106ed8361228a565b16036106f95787610490565b6359c896be5f526004601cfd5b63a11481005f526004601cfd5b6340739bf05f526004601cfd5b63ea553b345f526004601cfd5b9350935063ffffffff61074760015f198401811b016121af565b169385851093610453565b3461075957005b5f80fd5b5f3560e01c90816306fdde031461135257508063095ea7b3146112b15780630ad9e7bf1461127957806310aa0ebb1461125457806316f0115b1461122c57806318160ddd14611204578063207d0636146111c157806323b872dd1461111b578063274e430b146110ee5780632a6a935d1461107c5780632f745c5914610fe3578063313ce56714610fc85780634ef41efc14610f985780634f6ccce714610f7a57806355f804b314610e215780635b2aa23914610bcb5780636c0360eb14610b3957806370a0823114610b0a578063715018a614610ac65780638902653814610a995780638da5cb5b14610a72578063907af6c014610a3857806395d89b411461095e578063a9059cbb1461092d578063dd62ed3e146108f95763f2fde38b14610887575f61000f565b34610759576020366003190112610759576108a061141e565b6108a86116ad565b6001600160a01b031680156108e6575f80546001600160a01b03198116831782556001600160a01b0316905f8051602061244e8339815191529080a3005b631e4fbdf760e01b5f525f60045260245ffd5b3461075957604036600319011261075957602061092561091761141e565b61091f611434565b90611647565b604051908152f35b346107595760403660031901126107595761095361094961141e565b602435903361170f565b602060405160018152f35b34610759575f366003190112610759576040515f60025461097e816114af565b8084529060018116908115610a1457506001146109b6575b6109b2836109a68185038261148c565b604051918291826113f4565b0390f35b60025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b8082106109fa575090915081016020016109a6610996565b9192600181602092548385880101520191019092916109e2565b60ff191660208086019190915291151560051b840190910191506109a69050610996565b34610759575f3660031901126107595760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610759575f366003190112610759575f546040516001600160a01b039091168152602090f35b34610759575f36600319011261075957610ab16116ad565b6004805460ff60a01b1916600160a01b179055005b34610759575f36600319011261075957610ade6116ad565b5f80546001600160a01b0319811682556001600160a01b03165f8051602061244e8339815191528280a3005b34610759576020366003190112610759576020610b2d610b2861141e565b61144a565b5460a01c604051908152f35b34610759575f366003190112610759576040515f600354610b59816114af565b8084529060018116908115610a145750600114610b80576109b2836109a68185038261148c565b60035f9081525f8051602061242e833981519152939250905b808210610bb1575090915081016020016109a6610996565b919260018160209254838588010152019101909291610b99565b34610759576020366003190112610759576004356001600160401b0381116107595736602382011215610759576004810135906001600160401b038211610e0d578160051b60405192610c21602083018561148c565b8352602460208401918301019136831161075957602401905b828210610dfd57838051907f00000000000000000000000000000000000000000000000000000000000000008083029280840482149015171561067b57335f52600560205260405f205492610c8e3361144a565b5460a01c610c9c8286611562565b11610db957610cae610cb49285611544565b93611562565b335f52600560205260405f2055610cca3361144a565b9163ffffffff610cd93361146b565b935460801c16905f905b8351821015610db75760208260051b8501015183811015610d7357818110610d69578181600193849303610d1d575b5001915b0190610ce3565b8063ffffffff848a61066282610d36610d6397846121d3565b610d51818a610d4581886121d3565b9661065d888c8361221d565b888616919086165f1901811b016121ef565b87610d12565b5090600190610d16565b60405162461bcd60e51b815260206004820152601c60248201527b546f6b656e20494420696e646578206f7574206f6620626f756e647360201b6044820152606490fd5b005b60405162461bcd60e51b815260206004820152601c60248201527b4e6f7420656e6f7567682062616c616e636520746f20667265657a6560201b6044820152606490fd5b8135815260209182019101610c3a565b634e487b7160e01b5f52604160045260245ffd5b34610759576020366003190112610759576004356001600160401b03811161075957366023820112156107595760048101356001600160401b03811161075957366024828401011161075957610e756116ad565b610e806003546114af565b601f8111610f2a575b505f601f8211600114610ec55781925f92610eb7575b50508160011b915f199060031b1c1916176003555f80f35b602492500101358280610e9f565b601f1982169260035f5260205f20915f5b858110610f0f57508360019510610ef3575b505050811b01600355005b01602401355f19600384901b60f8161c19169055828080610ee8565b90926020600181926024878701013581550194019101610ed6565b60035f525f8051602061242e833981519152601f830160051c81019160208410610f70575b601f0160051c01905b818110610f655750610e89565b5f8155600101610f58565b9091508190610f4f565b3461075957602036600319011261075957602061092560043561156f565b34610759575f3660031901126107595768a20d6e21d0e5255309546040516001600160a01b039091168152602090f35b34610759575f36600319011261075957602060405160128152f35b3461075957604036600319011261075957610ffc61141e565b60243563ffffffff61100d8361144a565b5460801c1681101561103b5761103263ffffffff9161102d60209461146b565b6121d3565b16604051908152f35b60405162461bcd60e51b81526020600482015260196024820152784f776e657220696e646578206f7574206f6620626f756e647360381b6044820152606490fd5b34610759576020366003190112610759576004358015801580920361075957610953916110a83361144a565b91825460581c915f52337fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2600260ff83169216151860011b1860011790611690565b3461075957602036600319011261075957602061111161110c61141e565b6114e7565b6040519015158152f35b346107595760603660031901126107595761113461141e565b61113c611434565b6044359061114a33846116d3565b926e22d473030f116ddee9f6b43ac78ba33314806111aa575b156111a2575f19935b60018501611180575b50610953935061170f565b84841161119557836109539503905584611175565b6313be252b5f526004601cfd5b83549361116c565b5060046111b68261144a565b5460581c1615611163565b34610759576020366003190112610759576111da61141e565b6111e26116ad565b600480546001600160a81b0319166001600160a01b0392909216919091179055005b34610759575f36600319011261075957602068a20d6e21d0e52553085460a01c604051908152f35b34610759575f366003190112610759576004546040516001600160a01b039091168152602090f35b34610759575f36600319011261075957602060ff60045460a01c166040519015158152f35b34610759576020366003190112610759576001600160a01b0361129a61141e565b165f526005602052602060405f2054604051908152f35b34610759576040366003190112610759576112ca61141e565b6001600160a01b038116906024359081906112fc906e22d473030f116ddee9f6b43ac78ba38514611330575b336116d3565b555f52337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa3602060405160018152f35b61134d61133c3361144a565b600460ff825460581c161790611690565b6112f6565b34610759575f366003190112610759575f60015461136f816114af565b8084529060018116908115610a145750600114611396576109b2836109a68185038261148c565b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106113da575090915081016020016109a6610996565b9192600181602092548385880101520191019092916113c2565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361075957565b602435906001600160a01b038216820361075957565b6001600160a01b03165f90815268a20d6e21d0e52553136020526040902090565b6001600160a01b03165f90815268a20d6e21d0e52553106020526040902090565b601f909101601f19168101906001600160401b03821190821017610e0d57604052565b90600182811c921680156114dd575b60208310146114c957565b634e487b7160e01b5f52602260045260245ffd5b91607f16916114be565b906114f18261144a565b5460581c9160016002841615159316156115085750565b3b15159150565b60609060208152601a602082015279476c6f62616c20696e646578206f7574206f6620626f756e647360301b60408201520190565b811561154e570490565b634e487b7160e01b5f52601260045260245ffd5b9190820180921161067b57565b9068a20d6e21d0e52553085463ffffffff8160801c1683101561162e576115ba907f00000000000000000000000000000000000000000000000000000000000000009060a01c611544565b905f925f5b8381106115e35760405162461bcd60e51b8152806115df6004820161150f565b0390fd5b806001018060011161067b5763ffffffff6116008360011b6121af565b1661160f575b506001016115bf565b8286929614611625575060018091019490611606565b93505050915090565b60405162461bcd60e51b8152806115df6004820161150f565b906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba314611675575b611671916116d3565b5490565b60046116808361144a565b5460581c166116685750505f1990565b805460ff60581b191660589290921b60ff60581b16919091179055565b5f546001600160a01b031633036116c057565b63118cdaa760e01b5f523360045260245ffd5b9060285260145268a20d6e21d0e525530f5f5260485f20905f602852565b9060285260145268a20d6e21d0e525530b5f5260485f20905f602852565b6004549092906001600160a01b038381169082161490816121a0575b50612191576001600160a01b03831615158061215b575b61210b576001600160a01b038216156107205761175e8361144a565b6117678361144a565b68a20d6e21d0e5255309546001600160a01b031615610713576040519161018083016001600160401b03811184821017610e0d576040525f83525f60208401525f60808401525f60a08401525f60c08401525f60e08401525f6101008401525f6101208401525f6101408401525f610160840152805463ffffffff8160801c16604085015263ffffffff835460801c1660608501528060a01c85116106c05761182060a082901c8690036001600160601b0316836122c3565b825460a01c85019061183b6001600160601b038316856122c3565b611870604086015191877f00000000000000000000000000000000000000000000000000000000000000009160a01c03611544565b8082039111028452611881866114e7565b156120a3575b50611e9e565b68a20d6e21d0e52553085463ffffffff60208501518551928382848360801c1601038060808901528360801b9060801b16908360801b191617928368a20d6e21d0e52553085501916040519260c060a085019180835260051b850101604052836040015260c0830183528261016087015260601c166101208501528351611d7e575b505060208201516119f4575b50610140810151806119b0575b5061016001518061195e575b505f9081526001600160a01b0391821692909116905f8051602061246e83398151915290602090a3565b600160206040828060a01b0368a20d6e21d0e5255309541693015192603f19840193849163263c69d6835283601f198301525f825160051b6044019260231901915af19151141615610759575f611934565b600160205f9281838060a01b0368a20d6e21d0e5255309541691015190815160051b60840190607f19830195869360631901915af19151141615610759575f611928565b9194610160829492015160208360601b910152611a108261146b565b9463ffffffff611a20848661232a565b1660e086015268a20d6e21d0e5255308549263ffffffff611a647f00000000000000000000000000000000000000000000000000000000000000008660a01c611544565b9460201c168481119081150217610100870152611a9960608701519563ffffffff602089015188018060c08b015216906122e6565b63ffffffff68a20d6e21d0e52553085460401c169760015b15611d1f575b6101208701515f9063ffffffff8b8116911614611b6d57611b6863ffffffff60018c01169a60e0641fffffffe0631fffffff8360031c1668a20d6e21d0e525531160601b01549260051b16161c63ffffffff165b8060081c685106b710e87292a98760611b0160018260ff161b8019825416179055611b3d63ffffffff82168a8d61221d565b611b5d63ffffffff60e08c01511663ffffffff60018c019b1690836123ba565b6101608a0151612417565b611ab1565b949798939291906101008801515b63ffffffff611b8f5f19830160011b6121af565b1615611cfb575f19906001810160081c685106b710e87292a98760611b018054196001830160ff1690811c901b8015611c83575b80611bd9575b5050508981119081150217611b7b565b600180939450811901167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f6101e07a1412563212c14164235266736f7425221143267a4524367526767760fc7b2aaaaaaaba69a69a6db6db6db2cb2cb2ce739ce73def7bdeffffffff860260f81c161b60f71c1692831c63d76453e004161a179082685106b710e87292a98760611b03190160081b17910181108a8211175f03175f8080611bc9565b506001909c9895929c9a9794919a9693965b01805419685106b710e87292a98760611b60088e901c0182118117611cbd5750600190611c95565b9c9295989c9a9194979a969396808d60081c685106b710e87292a98760611b018311611cea575b50611bc3565b508c1960ff1690811b901c80611ce4565b611b68909a999691929394959a6001810188811190811502176101008b0152611b0b565b60c08701518603611ab757945094925094509468a20d6e21d0e52553085463ffffffff60201b61010084015160201b169163ffffffff60401b9060401b1690600160201b600160601b031916171768a20d6e21d0e5255308555f61191b565b602060018860609a9699959a989497981b17910152611d9c8261146b565b94611dbc60408801519563ffffffff895188038060a08c015216906122e6565b60015b15611e85575b5f945f190194611dd586886121d3565b63ffffffff8116905f1982018060021c685106b710e87292a98960611b019060c082549160061b1681811c60018060401b0316901b189055611e1c826101608c0151612417565b600160ff62ffffff8360081c16685106b710e87292a98760611b0192161b198154169055611e49816123f9565b611e54575b50611dbf565b611e5d81612309565b5f90815268a20d6e21d0e525530c6020526040812080546001600160a01b0319169055611e4e565b60a08701518503611dc557935093509390945f8061190f565b9194604086979294970151948651976020880151898110818b18028a1899888b108b8a18028914612094578a8918898c10028918908190038a52900360208901526001600160a01b0383811690831614612072576040805163144027d3818301526001600160a01b03858116606080840191909152908516608083015260a08201528a8918898c1002891860c0820181815260059190911b820160e090810190935260208201529081018152610140890152611f598361146b565b95611f638361146b565b9763ffffffff611f73858461232a565b1660e08b015260608a01519a81811090821802188a019560015b1561202c575b878b611fd78163ffffffff808f8f90611fcb60e09284611fc25f9b5f19604087015101908160408801526121d3565b1698899161221d565b015116911690836123ba565b6101408c015160208151838152019052611ff0816123f9565b611ffb575b50611f8d565b61200481612309565b5f90815268a20d6e21d0e525530c6020526040812080546001600160a01b0319169055611ff5565b9960010199868b03611f935793989550939861205992975063ffffffff91965080606087015216836122e6565b61206d63ffffffff604085015116826122e6565b61188d565b949297868198959398979297109082180218606084015101606084015261188d565b5050949297509450949161188d565b6120e2906001600160a01b03888116908816146120f8575b7f000000000000000000000000000000000000000000000000000000000000000090611544565b606084015180820391110260208401525f611887565b60408501518551900360608601526120bb565b60405162461bcd60e51b815260206004820152602260248201527f5472616e73666572206578636565647320617661696c61626c652062616c616e604482015261636560f01b6064820152608490fd5b506121658361144a565b5460a01c81810390811161067b576001600160a01b0384165f9081526005602052604090205411611742565b632e13674560e01b5f5260045ffd5b60ff915060a01c16155f61172b565b60e08160031c685106b710e87292a98960611b01549160051b161c63ffffffff1690565b60e0908260031c9060601b01549160051b161c63ffffffff1690565b9060e08260031c685106b710e87292a98960611b019260051b1682549182821c1863ffffffff16901b189055565b60e0909291928360031c9060601b019260051b1682549182821c1863ffffffff16901b189055565b63ffffffff165f5268a20d6e21d0e525530a60205260405f2090565b6001600160a01b03906122859061027b90600160201b8110025f190160011b6121af565b541690565b6001600160a01b0361229b82612261565b161561035e575f90815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b80546001600160a01b031660a09290921b6001600160a01b031916919091179055565b805463ffffffff60801b191660809290921b63ffffffff60801b16919091179055565b60018160081c68a20d6e21d0e525530d60601b019160ff161b198154169055565b805460601c63ffffffff1692918315612341575050565b68a20d6e21d0e5255308805463ffffffff19811663ffffffff918216600101918216908117909255835463ffffffff60601b191660609190911b63ffffffff60601b1617909255909250829061239682612245565b80546001600160a01b0319166001600160a01b039092169190911790551561075957565b5f1901908160021c685106b710e87292a98960611b019260c084549360061b169163ffffffff169060201b1782821c1860018060401b0316901b189055565b8060081c68a20d6e21d0e525530d60601b01549060ff161c60011690565b9060209082519060081b8284015117815201905256fec2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081a000a608034607857601f610d4138819003918201601f19168301916001600160401b03831184841017607c57808492602094604052833981010312607857516001600160a01b03811690819003607857683602298b8c10b0123180546001600160a01b031916919091179055604051610cb090816100918239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60808060405260043610156101c5575b5036156101ba575f3560e01c63263c69d681146101405763144027d381146100cf57630f4599e51461004857633c10b94e5f526004601cfd5b683602298b8c10b01231546001600160a01b0316806100ab575b50683602298b8c10b01230546001600160a01b03811661009e576001600160a01b0319163317683602298b8c10b012305560015f908152602090f35b63bf656a465f526004601cfd5b6004356001600160a01b0316036100c2575f610062565b63c59ec47a5f526004601cfd5b683602298b8c10b01230546001600160a01b03163303610133576004356024359060443591602483810193600481013560051b0101925b8381036101165760015f5260205ff35b803582845f80516020610c848339815191525f80a4602001610106565b63363cb3125f526004601cfd5b683602298b8c10b01230546001600160a01b0316330361013357600435602481810191600481013560051b0101905b81810361017f5760015f5260205ff35b8035600881901c6001600160581b03169060018116801560609290921c91820291025f80516020610c848339815191525f80a460200161016f565b346101c157005b5f80fd5b5f3560e01c90816301ffc9a714610aa85750806306fdde0314610a3d578063081812fc146109e6578063095ea7b31461096457806318160ddd1461091857806323b872dd1461090457806324359879146108ad5780632f745c591461083c57806342842e0e146107c95780634f6ccce7146107325780636352211e146107035780636cef16e61461063757806370a08231146105da5780638da5cb5b146105aa57806395d89b411461053f57806397e5311c14610513578063a22cb46514610487578063b88d4fde1461039d578063c87b56dd146103215763e985e9c5146102ad575f61000f565b346101c15760403660031901126101c1576102c6610b1c565b60205f6044601c6102d5610b32565b6102dd610c25565b604080516362fb246d87526001600160a01b039889168852979092169091525afa601f3d1116156103195760405260205f516040519015158152f35b3d5f823e3d90fd5b346101c15760203660031901126101c15760043561033e81610c4f565b505f806024601c61034d610c25565b6040519563cb30b46085526020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b0390f35b60803660031901126101c1576103b1610b1c565b6103b9610b32565b60443591606435916001600160401b0383116101c157366023840112156101c1576004830135926001600160401b0384116101c15736602485830101116101c157610405858385610b82565b813b61040d57005b83602094602460a49360405198899763150b7a028952338a8a015260018060a01b0316604089015260608801526080808801528260a08801520160c086013701905f601c8401915af115610479575b5163757a42ff60e11b0161046c57005b63d1a57ed65f526004601cfd5b3d1561045c573d5f823e3d90fd5b346101c15760403660031901126101c1576104a0610b1c565b6024358015158091036101c15760205f6064601c826104bd610c25565b9660018060a01b0316966040519663f6916ddd8352888752604052336060525af160015f511416156103195750337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a3005b346101c1575f3660031901126101c157602061052d610c25565b6040516001600160a01b039091168152f35b346101c1575f3660031901126101c157610557610c25565b5f806024601c604051946395d89b418452836020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b346101c1575f3660031901126101c157683602298b8c10b01232546040516001600160a01b039091168152602090f35b346101c15760203660031901126101c1576001600160a01b036105fb610b1c565b1660205f6044601c61060b610c25565b6040519563f5b100ea85528552836040525afa601f3d1116156103195760405260205f51604051908152f35b346101c1575f3660031901126101c15761064f610c25565b683602298b8c10b012325460205f6004601c60018060a01b03851695638da5cb5b84525afa9081601f3d1116600c5160601c0291156106ec575b506001600160a01b0316908181036106a7575b602060405160018152f35b683602298b8c10b0123280546001600160a01b031916831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3808061069c565b60601b6001600160601b0319166101c15782610689565b346101c15760203660031901126101c15760206001600160a01b03610729600435610c4f565b16604051908152f35b346101c15760203660031901126101c157602460206001600160a01b03610757610c25565b1660405192838092634f6ccce760e01b825260043560048301525afa80156107be575f9061078b575b602090604051908152f35b506020813d6020116107b6575b816107a560209383610bee565b810103126101c15760209051610780565b3d9150610798565b6040513d5f823e3d90fd5b6107d236610b48565b916107de838383610b82565b813b6107e657005b60a460209260405194859363150b7a028552338686015260018060a01b0316604085015260608401526080808401525f60a08401525f3681375f601c8401915af115610479575163757a42ff60e11b0161046c57005b346101c15760403660031901126101c157610855610b1c565b60206001600160a01b03610867610c25565b604051632f745c5960e01b81526001600160a01b039094166004850152602480359085015283916044918391165afa80156107be575f9061078b57602090604051908152f35b346101c15760203660031901126101c1576108c6610c25565b60205f6044601c6040519463c016aa5284526004358552836040525afa601f3d1116156103195760408190525f516001600160a01b03168152602090f35b61091661091036610b48565b91610b82565b005b346101c1575f3660031901126101c157610930610c25565b60205f6044601c6040519463e2c792818452838552836040525afa601f3d1116156103195760405260205f51604051908152f35b60403660031901126101c157610978610b1c565b60243590610984610c25565b9060018060a01b03169060205f6064601c6040519463d10b6e0c8452868552876040523360605234905af1601f3d1116156103195750600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b346101c15760203660031901126101c1576109ff610c25565b60205f6044601c604051946327ef549584526004358552836040525afa601f3d1116156103195760408190525f516001600160a01b03168152602090f35b346101c1575f3660031901126101c157610a55610c25565b5f806024601c604051946306fdde038452836020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b346101c15760203660031901126101c157600435906001600160e01b0319821682036101c15760209160e01c635b5e139f8114906301ffc9a76380ac58cd82149114171715158152f35b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101c157565b602435906001600160a01b03821682036101c157565b60609060031901126101c1576004356001600160a01b03811681036101c157906024356001600160a01b03811681036101c1579060443590565b9060846020610b8f610c25565b6040805163e5eb36c881526001600160a01b03968716848201819052959096169086018190526060860187905233608087015294928391601c83019034905af16001825114161561031957505f80516020610c848339815191525f80a4565b601f909101601f19168101906001600160401b03821190821017610c1157604052565b634e487b7160e01b5f52604160045260245ffd5b683602298b8c10b01230546001600160a01b0316908115610c4257565b635b2a47ae5f526004601cfd5b60205f6044601c610c5e610c25565b60405195632d8a746e85528552836040525afa601f3d111615610319576040525f519056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081a000a";
1416
1550
 
1417
1551
  // src/evm/abis/bytecodes/openingAuction.ts
1418
1552
  var openingAuction_default = "0x60a06040523461042657604051615d4738819003601f8101601f191683016001600160401b0381118482101761042a5783928291604052833981010361016081126104265781516001600160a01b03811681036104265760208301516001600160a01b038116939084900361042657610100604082015193605f190112610426576040519061010082016001600160401b0381118382101761042a57604052606081015182526100b16080820161045e565b602083019081526100c460a0830161045e565b926040810193845260c083015194606082019586526100e560e0850161045e565b608083015261010084015162ffffff811681036104265760a0830152610120840151936001600160801b03851685036104265760c08301948552610140015160e08301526080525f6101a061013861043e565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a061019661043e565b6001815260016020820152600160408201526001606082015260016080820152600160a0820152600160c08201528260e0820152600161010082015282610120820152826101408201528261016082015282610180820152015261200030161515600114801590610415575b8015610404575b80156103f3575b80156103e2575b80156103d1575b80156103c1575b80156103b5575b80156103a5575b8015610399575b801561038d575b8015610381575b8015610375575b8015610369575b610356576102b99660018060a01b03195f5416175f5585600d5551600255519162ffffff600354915160181b926601000000000000600160b01b03905160301b1693169060018060b01b031916179065ffffff000000161717600355519061046c565b600e55600160105560405161587190816104d68239608051818181601c0152818161031d015281816103bf015281816105640152818161095f015281816109f801528181610b5501528181610ec0015281816114f801528181611b6a01528181611c9c01528181611f2b01528181612114015281816122d001528181614508015281816146010152818161475801528181614a4e0152614e890152f35b630732d7b560e51b5f523060045260245ffd5b50600130161515610256565b5060023016151561024f565b50600430161515610248565b50600830161515610241565b5060103016151561023a565b5060203016151560011415610233565b5060403016151561022c565b5060803016151560011415610225565b50610100301615156001141561021e565b506102003016151560011415610217565b506104003016151560011415610210565b506108003016151560011415610209565b506110003016151560011415610202565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051906101c082016001600160401b0381118382101761042a57604052565b51908160020b820361042657565b808202905f1983820990828083109203918083039283612710111561042657146104ca577fbc01a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e9193612710910990828211900360fc1b910360041c170290565b50506127109150049056fe608080604052600436101561005b575b50361561001a575f80fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361004c57005b6393c866c160e01b5f5260045ffd5b5f905f3560e01c90816303fa14c9146125a8575080630cbf54c81461258b578063182148ef14612531578063186a0b89146124af57806319b45b20146124615780631b2bf4dd1461231d57806321d0ee70146122bc578063252cf2d214612290578063259982e5146120ff5780632daebaef146120d957806334d028b2146120b6578063372ebb6114612099578063392e53cd14612077578063449a817614611ff35780634b449cba14611fd657806356cd69da14611fb357806356dec87114611f96578063575e24b414611ed55780635760f2e314611e4e5780635a5b309014611d855780635ac22dd114611d2d578063616f39ff14611d0d57806363b2011714611cf05780636c2bbe7e14611c865780636fe7e6eb14611b2f578063748bfe6514611b05578063791b98bc14611add5780637e57bd0c14611ac05780638416d3b614611aa3578063899346c714611a8657806391dd7346146114c557806399fbab88146113fa5780639b21d8a8146113bf5780639ce110d7146113985780639d4e31531461136e5780639f063efc14610ea8578063a4d0a17e14610a95578063b06faf6214610a72578063b1c9fe6e14610a32578063b47b2fb11461099e578063b6a8b0fa14610948578063bb6db7d11461092a578063c4e833ce146107bd578063c7e6b08b1461079f578063c80951821461077e578063ce5494bb14610593578063dc4c90d31461054e578063dc98354e1461038e578063dcf93f3214610368578063e1b4af6914610306578063eb54f9ec146102e8578063f1db23dc146102ca5763f223e2b20361000f57346102c757806003193601126102c7576020600e54604051908152f35b80fd5b50346102c757806003193601126102c7576020600c54604051908152f35b50346102c757806003193601126102c7576020600454604051908152f35b50346102c75760049061031836612762565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303925061035c91505057630a85dc2960e01b8152fd5b63570c108560e11b8152fd5b50346102c757806003193601126102c757602060ff60035460b01c166040519015158152f35b50346102c75760e03660031901126102c7576103a86125ca565b60a036602319011261050b576103bc612722565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361053f5781546001600160a01b0390811691160361053057600a5460ff81166105225760ff60035460b81c16156105135760ff1916600117600a556001600160a01b036024359081169081810361050f5750600780546001600160a01b0319169190911790556044356001600160a01b0381169081810361050f5750600880546001600160a01b03191691909117905560643562ffffff8116810361050b576008549062ffffff60a01b9060a01b169062ffffff60a01b1916176008556084358060020b810361050b576008549060b81b62ffffff60b81b169062ffffff60b81b19161760085560a4359060018060a01b0382168092036102c75750600980546001600160a01b031916919091179055604051636e4c1aa760e11b8152602090f35b5080fd5b8280fd5b63500b395360e01b8252600482fd5b62dc149f60e41b8252600482fd5b638341a67960e01b8152600490fd5b63570c108560e11b8252600482fd5b50346102c757806003193601126102c7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102c75760203660031901126102c7576105ad6125ca565b903068929eee149b4bd212685414610771573068929eee149b4bd212685580546001600160a01b031633036105305760ff60065416600481101561075d5760030361074e5760e091610606600a5460081c60020b613556565b6007546008549193916001600160a01b03908116911661062581613883565b9061062f83613883565b91600e54601e548181105f146107465761064891612862565b60035460b01c60ff161561071557808211156107075761066e6106739161067993612862565b6138f4565b926138f4565b915b6001600160801b031691826106f7575b6001600160801b03169485806106e6575b5050600160ff19600f541617600f553868929eee149b4bd21268556040519560018060a01b0316865260208601528260408601526060850152608084015260a083015260c0820152f35b6106f09185613919565b5f8561069c565b610702838784613919565b61068b565b5050610679610673856138f4565b9061071f906138f4565b928181111561073b576107359161066e91612862565b9161067b565b5050610735846138f4565b505084610648565b63472fd19960e01b8152600490fd5b634e487b7160e01b82526021600452602482fd5b63ab143c0690526004601cfd5b50346102c757806003193601126102c757602060195460020b604051908152f35b50346102c757806003193601126102c757602060405162278d008152f35b50346102c757806003193601126102c7576020816101c0926101a06040516107e4816128c9565b82815282858201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152015280604051610842816128c9565b600181528381016001815260408201600181526060830160018152608084016001815260a085016001815260c08601906001825260e0870192888452610100880194600186526101208901968a88526101408a01988b8a526101a06101608c019b8d8d5261018081019d8e52019c8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b50346102c757806003193601126102c7576020601f54604051908152f35b50346102c75760049061095a36612762565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303925061035c9150505763567d91d160e01b8152fd5b50346102c7576101603660031901126102c7576109b96125ca565b5060a03660231901126102c75760603660c31901126102c757610144356001600160401b03811161050b57906109f460049236908401612600565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361035c57630a85dc2960e01b8152fd5b50346102c757806003193601126102c75760ff60065416604051906004811015610a5e57602092508152f35b634e487b7160e01b83526021600452602483fd5b50346102c757806003193601126102c757602060ff600f54166040519015158152f35b50346102c757806003193601126102c7573068929eee149b4bd212685414610771573068929eee149b4bd212685560ff60065416600481101561075d5760018103610e99576005544210610e8a57610afe610af5600d54600e5490612862565b600b5490612862565b9060ff60175460301c16908215159182610e81575b506002908160ff1960065416176006555f805160206158458339815191528580a3601d5460175460ff8160301c16610d72575b50601a5515610d4b57610ba7827f00000000000000000000000000000000000000000000000000000000000000009260405190602082015260208152610b8d60408261291b565b604051809381926348c8949160e01b835260048301612738565b0381836001600160a01b0387165af18015610d4057610c94575b50610bda610be29160a0610bd3612955565b20906131e7565b505050613286565b600a549060081b63ffffff00169063ffffff00191617600a555b62278d004201804211610c8057601f55600360ff1960065416176006557f95f375ed30b2b45b5972e603757856d943ae68c3892f07064c3b1587aaa932306060604051600360025f805160206158458339815191528680a3600a5460081c60020b600b54600c5491835260208301526040820152a13868929eee149b4bd212685580f35b634e487b7160e01b82526011600452602482fd5b3d8084833e610ca3818361291b565b810190602081830312610d38578051906001600160401b038211610d3c57019181601f84011215610d38578251926001600160401b038411610d245760405192859190610cfa601f8701601f19166020018661291b565b8585526020868301011161050b5784610bda94610be29660208094018483015e0101529150610bc1565b634e487b7160e01b85526041600452602485fd5b8380fd5b8480fd5b6040513d85823e3d90fd5b50610d5461350f565b600a549060081b63ffffff00169063ffffff00191617600a55610bfc565b6002949293940b5b60175460181c60020b90818160020b13610e7657610d9a610da991612c0b565b610da3836134d6565b90614029565b91909115908115610e69575b50610e5d57610dcc60085460b81c60020b8261438a565b610dd581613c03565b60020b80845260156020908152604080862083875260149092528520546001600160801b03169081610e13575b505050610e0e906134d6565b610d7a565b906001610e21920154612eea565b908452601b602052604084205490818111610e3d575b80610e02565b92610e4f610e5592610e0e9495612862565b906127b9565b91905f610e37565b50929190925b5f610b46565b90508160020b135f610db5565b505092919092610e63565b91506002610b13565b636463738960e01b8252600482fd5b6334dc687f60e11b8252600482fd5b50346102c757610eb7366126b9565b939550935050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361135f5760ff60065416600481101561134b57600114610f1c575b604080516327c18fbf60e21b815260208101869052f35b610f25916139ab565b610f3260408301356138f4565b90610f44610f3f84612a57565b613c03565b610f4d83612a57565b60020b8452601560205260016040852001549260105492610f6d846134c8565b601055610f7982612a57565b926020830190611080610f8b83612a57565b9560405198610f998a6128ae565b88600360018060a01b0386169b8c8152602081019460020b8552604081019a60020b8b528d6060820160018060801b038b169c8d978883526040608086019489865260a0870198818a5281526011602052209460018060a01b0390511660018060a01b03198654161785555184549060a01b62ffffff60a01b169062ffffff60a01b19161784555183549060b81b60190b62ffffff60b81b169062ffffff60b81b191617835560018060801b03905116600183019060018060801b031660018060801b0319825416179055516002820155019051151560ff80198354169116179055612eea565b61108985612a57565b60020b8952601b6020526110a260408a209182546127b9565b90556110e16110b96110b386612a57565b93612a57565b6110d3604051938492602084019660608a01359288612a65565b03601f19810183528261291b565b51902080875260136020526040872054801515908161132a575b506113185786526013602052836040872055848652601260205260408620805490600160401b821015611304579061113891600182018155612690565b81549060031b9086821b915f19901b191617905561115d61115883612a57565b613eec565b61116682612a57565b60020b865260146020526040862080546001600160801b0390811685019081116112f05781546001600160801b0319166001600160801b039091161790557f5bbfb03bc7e9fc21614928f1a31e76f9d340d606c52a1d9cc823d44b5d94d8bc92604092909161126f91907f6f7dc586dcd0f870dfcef836487dc00343dd204c48a882e20c176ffe3af056626111fa83612a57565b61120384612a57565b60020b8b52601460205260018060801b03878c2054169061122c885192839260020b9583612efd565b0390a2611237613fa9565b61124081612a57565b60020b8852601560205283882061125e61125983612a57565b6139c9565b806112e1575b611286575b50612a57565b9082519160020b82526020820152a35f8080610f05565b60028101805460ff191660011790554290556112a181612a57565b6112aa82612a57565b60020b895260146020525f80516020615805833981519152602060018060801b03878c20541692875193845260020b92a25f611269565b5060ff60028201541615611264565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b88526041600452602488fd5b63f13a34ab60e01b8752600452602486fd5b885250601160205260408720600101546001600160801b031615155f6110fb565b634e487b7160e01b85526021600452602485fd5b63570c108560e11b8452600484fd5b50346102c75760203660031901126102c75760406020916004358152601c83522054604051908152f35b50346102c757806003193601126102c757546040516001600160a01b039091168152602090f35b50346102c75760203660031901126102c7576020906113dc6125e0565b60020b815260148252604060018060801b0391205416604051908152f35b50346102c75760203660031901126102c757604060c0916114196129a2565b506004358152601160205220604051611431816128ae565b81549160018060a01b0383169283835260208301908060a01c60020b8252604084019060b81c60020b815260018060801b03600184015416916060850192835260a060ff600360028701549660808901978852015416950194151585526040519586525160020b60208601525160020b604085015260018060801b03905116606084015251608083015251151560a0820152f35b50346119a95760203660031901126119a9576004356001600160401b0381116119a9576114f6903690600401612600565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038116939290913385900361004c5781602091810103126119a9573561154c60ff60035460b01c169161286f565b61155461314d565b90604051926115628461287f565b1515835260208084019182526001600160a01b03928316604080860191825251633cf3645360e21b815260075485166004820152600854808616602483015260a081901c62ffffff16604483015260b81c60020b6064820152600954851660848201529451151560a4860152915160c4850152905190911660e48301526101206101048301525f61012483018190528290610144908290885af190811561199e575f91611a54575b5060035460b01c60ff16156119f4578060801d5f81600f0b126119cc575b505f81600f0b136119ad575b8060801d9381600f0b9185600f0b5f81125f146119255750600754949586956001600160a01b0316833b156119215760405190632961046560e21b82526004820152868160248183885af19081156119165787916118fd575b50506007546116bd916001600160a01b039091169084906001600160801b03906116b69061293e565b1691613919565b604051630476982d60e21b815260208160048189875af180156118f2576118d3575b505b8483121561183d57506008546001600160a01b0316813b15610d3c5760405190632961046560e21b82526004820152848160248183865af1908115611832578591611818575b5050600854602092611751916001600160a01b03169083906001600160801b03906116b69061293e565b600460405180958193630476982d60e21b83525af1908115610d405761178692610bda926117e9575b505b60a0610bd3612955565b61178e61350f565b60035460b01c60ff16156117dc5760020b9060020b125b6117cd576040516117c9916117bb60208361291b565b815260405191829182612738565b0390f35b63eede5df960e01b8152600490fd5b60020b9060020b136117a5565b61180a9060203d602011611811575b611802818361291b565b8101906131d8565b505f61177a565b503d6117f8565b816118229161291b565b61182d57835f611727565b505050fd5b6040513d87823e3d90fd5b90919380939413611858575b505050610bda6117869161177c565b6008546001600160a01b0316823b15610d3857604051630b0d9c0960e01b8152928492849283918591839161189e916001600160801b03909116903090600485016131b6565b03925af180156118c8576118b3575b80611849565b816118bd9161291b565b61050b57815f6118ad565b6040513d84823e3d90fd5b6118eb9060203d60201161181157611802818361291b565b505f6116df565b6040513d88823e3d90fd5b816119079161291b565b61191257855f61168d565b8580fd5b6040513d89823e3d90fd5b8680fd5b5f12611934575b8495506116e1565b6007546001600160a01b031695823b156119a957604051630b0d9c0960e01b8152965f9188918291611977916001600160801b03909116903090600485016131b6565b038183865af1801561199e571561192c579350935f6119959161291b565b5f92849061192c565b6040513d5f823e3d90fd5b5f80fd5b600c546119c4906001600160801b038316906127b9565b600c55611634565b6119eb906001600160801b03906119e29061293e565b16600b546127b9565b600b555f611628565b80600f0b5f8112611a35575b508060801d5f81600f0b13611a16575b50611634565b600c54611a2c916001600160801b0316906127b9565b600c555f611a10565b611a4b906001600160801b03906119e29061293e565b600b555f611a00565b90506020813d602011611a7e575b81611a6f6020938361291b565b810103126119a957515f61160a565b3d9150611a62565b346119a9575f3660031901126119a9576020601054604051908152f35b346119a9575f3660031901126119a9576020601d54604051908152f35b346119a9575f3660031901126119a9576020601e54604051908152f35b346119a9575f3660031901126119a9576001546040516001600160a01b039091168152602090f35b346119a95760203660031901126119a9576004355f526013602052602060405f2054604051908152f35b346119a9576101003660031901126119a957611b496125ca565b5060a03660231901126119a957611b5e612722565b50611b676125f0565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303611c775742600455611ba8600254426127b9565b60055560ff60065416600160ff1960065416176006556004811015611c635760807fa832766a05f1bd0298b0268308621777cfe1e4eea23afe7c06beea79bc6ddd2d916001604051915f805160206158458339815191525f80a3600454600554600d5490600e54928452602084015260408301526060820152a160035460b01c60ff1615611c5957620d89e85b62ffffff19601954169062ffffff16176019556020604051636fe7e6eb60e01b8152f35b620d89e719611c35565b634e487b7160e01b5f52602160045260245ffd5b63570c108560e11b5f5260045ffd5b346119a957611c94366126b9565b9450929150507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303611c7757611cd393612f17565b604080516001600160e01b03199093168352602083019190915290f35b346119a9575f3660031901126119a9576020600b54604051908152f35b346119a9575f3660031901126119a957602060035460020b604051908152f35b346119a95760403660031901126119a957611d466125ca565b6001600160a01b03165f908152601260205260409020805460243591908210156119a957602091611d7691612690565b90549060031b1c604051908152f35b346119a95760203660031901126119a957611d9e6125ca565b3068929eee149b4bd212685414611e41573068929eee149b4bd2126855611dc36129d2565b601f54421115611e3257600e5490611dde601e548093612862565b918215611e23575f8051602061582583398151915291602091600e55611e048482612a15565b6040519384526001600160a01b031692a23868929eee149b4bd2126855005b637363096360e11b5f5260045ffd5b63152b1b0d60e21b5f5260045ffd5b63ab143c065f526004601cfd5b346119a95760203660031901126119a957611e676125ca565b5f546001600160a01b03163303611ec6576001600160a01b03168015611eb7576001546001600160a01b038116611ea8576001600160a01b03191617600155005b631241ac0960e21b5f5260045ffd5b63ed5f09f160e01b5f5260045ffd5b638341a67960e01b5f5260045ffd5b346119a9576101403660031901126119a957611eef6125ca565b60a03660231901126119a95760603660c31901126119a957610124356001600160401b0381116119a957611f27903690600401612600565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303611c7757306001600160a01b0390911603611f875760606040516315d7892d60e21b81525f60208201525f6040820152f35b638e00b19d60e01b5f5260045ffd5b346119a9575f3660031901126119a9576020600d54604051908152f35b346119a9575f3660031901126119a957602060035460181c60020b604051908152f35b346119a9575f3660031901126119a9576020600554604051908152f35b346119a95760203660031901126119a9576004358015158091036119a9575f546001600160a01b03163303611ec65760ff600a54166120695760035460ff8160b81c1661205a5761ffff60b01b191660b09190911b60ff60b01b1617600160b81b17600355005b63905a47ad60e01b5f5260045ffd5b62dc149f60e41b5f5260045ffd5b346119a9575f3660031901126119a957602060ff600a54166040519015158152f35b346119a9575f3660031901126119a9576020601a54604051908152f35b346119a9575f3660031901126119a9576020600a5460081c60020b604051908152f35b346119a95760203660031901126119a95760206120f76004356127da565b604051908152f35b346119a95761210d3661262d565b50909290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303611c7757306001600160a01b03821603612281575b5060ff600654166004811015611c6357600103612272576005544210156122635760606121809101612a57565b9060208101916121a161219284612a57565b61219b84612a57565b90612c26565b9060020b9060020b03612254576121b661350f565b6003549260ff8460b01c165f1461223357506121d182612a57565b9060020b9060020b126122245760406121ec915b01356138f4565b6001600160801b0360309290921c82169116106122155760405163259982e560e01b8152602090f35b63ab17922760e01b5f5260045ffd5b633b7caccd60e21b5f5260045ffd5b61223c90612a57565b9060020b9060020b136122245760406121ec916121e5565b633868ddbd60e01b5f5260045ffd5b638083ad0360e01b5f5260045ffd5b6334dc687f60e11b5f5260045ffd5b61228a9061396a565b82612153565b346119a9575f3660031901126119a95760035460405160309190911c6001600160801b03168152602090f35b346119a9576122ca3661262d565b919392507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303611c775760209361230a93612a97565b6040516001600160e01b03199091168152f35b346119a95760203660031901126119a9576004353068929eee149b4bd212685414611e41573068929eee149b4bd212685560ff600654166004811015611c635760030361245257601f544211612443575f81815260116020526040902080549091906001600160a01b03161561243457600382019182549260ff8416612425577ffe542bcb2f15de271468211386057898a183c9a98a1c824a4094b76180e1758e9160209160016123cd866127da565b9660ff19161790556123e185601e546127b9565b601e558461240a575b546040519485526001600160a01b031693a33868929eee149b4bd2126855005b80546124209086906001600160a01b0316612a15565b6123ea565b630c8d9eab60e31b5f5260045ffd5b636ec9be1160e01b5f5260045ffd5b630c89414f60e41b5f5260045ffd5b63472fd19960e01b5f5260045ffd5b346119a95760203660031901126119a95761247a6125e0565b60020b5f526015602052606060405f2080549060ff600260018301549201541690604051928352602083015215156040820152f35b346119a95760203660031901126119a9576124c86125ca565b6124d06129d2565b601a5461252257600e549081156125135760205f80516020615825833981519152915f600e556125008482612a15565b6040519384526001600160a01b031692a2005b637ecea47d60e11b5f5260045ffd5b631481bc7960e21b5f5260045ffd5b346119a9575f3660031901126119a957600754600854600954604080516001600160a01b039485168152838516602082015260a084811c62ffffff169282019290925260b89390931c60020b606084015292166080820152f35b346119a9575f3660031901126119a9576020600254604051908152f35b346119a9575f3660031901126119a95760209060ff60035460b81c1615158152f35b600435906001600160a01b03821682036119a957565b600435908160020b82036119a957565b60e435908160020b82036119a957565b9181601f840112156119a9578235916001600160401b0383116119a957602083818601950101116119a957565b906101606003198301126119a9576004356001600160a01b03811681036119a9579160a06023198201126119a957602491608060c3198301126119a95760c49161014435906001600160401b0382116119a95761268c91600401612600565b9091565b80548210156126a5575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b906101a06003198301126119a9576004356001600160a01b03811681036119a9579160a06023198201126119a957602491608060c3198301126119a95760c4916101443591610164359161018435906001600160401b0382116119a95761268c91600401612600565b60c435906001600160a01b03821682036119a957565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b6101206003198201126119a9576004356001600160a01b03811681036119a9579160a06023198301126119a95760249160c4359160e4359161010435906001600160401b0382116119a95761268c91600401612600565b919082018092116127c657565b634e487b7160e01b5f52601160045260245ffd5b6127e381612c43565b156128395760a0015161285d576127f990612cc0565b801561285d5760ff600654166004811015611c635760038114908115612852575b501561283f57601a545b80156128395761283691600e54612e6a565b90565b50505f90565b61284d601d54610e4f613b1a565b612824565b60029150145f61281a565b505f90565b919082039182116127c657565b600160ff1b81146127c6575f0390565b606081019081106001600160401b0382111761289a57604052565b634e487b7160e01b5f52604160045260245ffd5b60c081019081106001600160401b0382111761289a57604052565b6101c081019081106001600160401b0382111761289a57604052565b60a081019081106001600160401b0382111761289a57604052565b60e081019081106001600160401b0382111761289a57604052565b601f909101601f19168101906001600160401b0382119082101761289a57604052565b600f0b60016001607f1b031981146127c6575f0390565b60405190612962826128e5565b6007546001600160a01b039081168352600854808216602085015260a081901c62ffffff16604085015260b81c60020b6060840152600954166080830152565b604051906129af826128ae565b5f60a0838281528260208201528260408201528260608201528260808201520152565b5f546001600160a01b03163303611ec65760ff600654166004811015611c63576003036124525760ff600f541615612a0657565b6308a027c760e31b5f5260045ffd5b90612a449160ff60035460b01c165f14612a46576007546001600160a01b03165b6001600160a01b0316613919565b565b6008546001600160a01b0316612a36565b358060020b81036119a95790565b60609190911b6001600160601b031916815260e891821b601482015291901b6017820152601a810191909152603a0190565b919290916001600160a01b0381163014612bfb57612ab49061396a565b60ff60065416926004841015611c635760018403612be257612ad79293506139ab565b612ae082612a57565b90612b0a612af060208501612a57565b6110d3604051938492602084019660608901359288612a65565b5190205f52601360205260405f2054801561243457612b2b61125983612a57565b612bd3575f526011602052612ba461066e6040805f20938151612b4d816128ae565b855460018060a01b03811682528060a01c60020b602083015260b81c60020b8382015260a060ff600360018060801b0360018a0154169860608501998a52600281015460808601520154161515910152013561286f565b90516001600160801b03908116911603612bc4575b63021d0ee760e41b90565b632b3dd84160e01b5f5260045ffd5b63bdc9917160e01b5f5260045ffd5b505050600203612bb9576334dc687f60e11b5f5260045ffd5b5063021d0ee760e41b9392505050565b60020b5f190190627fffff198212627fffff8313176127c657565b600291820b910b0390627fffff198212627fffff8313176127c657565b612c4b6129a2565b505f52601160205260405f2090604051612c64816128ae565b82546001600160a01b03811680835260a082811c600290810b602086015260b89390931c830b604085015260018601546001600160801b0316606085015291850154608084015260039094015460ff1615159082015291151590565b90612cca82612c43565b92909215612d25575f52601c60205260405f205491606081019060018060801b03825116612cf6575050565b612836929391816080612d126020610e4f95015160020b613a0b565b92600180831b0390511691015191613ade565b505f9150565b808202905f1983820990828083109203918083039283620f424011156119a95714612d8b577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b81810291905f1982820991838084109303928084039384600160601b11156119a95714612dd757600160601b910990828211900360a01b910360601c1790565b50505060601c90565b90606082901b905f19600160601b8409928280851094039380850394858411156119a95714612e63578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b91818302915f19818509938380861095039480860395868511156119a95714612ee2579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b818102929181159184041417156127c657565b6001600160801b0391821681529116602082015260400190565b9092906001600160a01b03163014612f405760ff600654166004811015611c6357600114612f51575b50633615df3f60e11b925f92509050565b612f6691612f61610f3f85612a57565b6139ab565b612f6f82612a57565b90612f7f612af060208501612a57565b519020805f52601360205260405f2054908161309f575b5050612fa861066e604083013561286f565b612fb182612a57565b60020b5f90815260146020526040902080546001600160801b03838116918116919091039081116127c65781546001600160801b0319166001600160801b03919091161790557f56228732ed42cef18541839aa891a63aa1b23de11cf839c40e79aaa43109656e61302183612a57565b61302a84612a57565b60020b5f52601460205260018060801b0360405f2054169061305560405192839260020b9583612efd565b0390a261306181612a57565b60020b5f908152601460205260409020546001600160801b031615613088575b8080612f40565b61309461309991612a57565b613d52565b5f613081565b5f8281526011602052604090206001810180549091906001600160801b031680613118575b50506130cf83613c7a565b80546001600160801b03191690555f9081526013602052604081208190557f99319fa1a5fca42d549d4d49989116496775f906f62e0e2ff2ea3c3aacdefa279080a25f80612f96565b613126906002830154612eea565b905460a01c60020b5f52601b60205261314460405f20918254612862565b90555f806130c4565b61315d61315861350f565b613556565b6001600160a01b0381166401000276a38111156131ab5773fffd8963efd1fc6a506488495d951d5263988d2611156131925790565b5073fffd8963efd1fc6a506488495d951d5263988d2590565b50506401000276a490565b6001600160a01b03918216815291166020820152604081019190915260600190565b908160209103126119a9575190565b91906131f4602091613e44565b604051631e2eaeaf60e01b8152600481019190915292839060249082906001600160a01b03165afa91821561199e575f92613252575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b9091506020813d60201161327e575b8161326e6020938361291b565b810103126119a95751905f61322a565b3d9150613261565b73fffd8963efd1fc6a506488495d951d51639616826401000276a21982016001600160a01b0316116134a857693627a301d71055774c85602082901b600160201b600160c01b03168060ff6132da82613e6a565b16916080831061349c5750607e1982011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c600160321b90800260cd1c169d600160331b9060cc1c169c600160341b9060cb1c169b600160351b9060ca1c169a600160361b9060c91c1699600160371b9060c81c1698600160381b9060c71c1697600160391b9060c61c16966001603a1b9060c51c16956001603b1b9060c41c16946001603c1b9060c31c16936001603d1b9060c21c16926001603e1b9060c11c16916001603f1b9060c01c1690607f190160401b1717171717171717171717171717026fdb2df09e81959a81455e260799a0632f6f028f6481ab7f045a5af012a19d003aa919820160801d60020b910160801d60020b918282145f146134785750905090565b6001600160a01b039081169061348d84613556565b1611613497575090565b905090565b905081607f031b6132ec565b6318521d4960e21b5f9081526001600160a01b0391909116600452602490fd5b5f1981146127c65760010190565b60020b60010190627fffff8213627fffff198312176127c657565b9060020b9060020b0190627fffff198212627fffff8313176127c657565b60035460ff8160b81c16156135475760ff8160b01c165f146135315760020b90565b60181c60020b627fffff1981146127c6575f0390565b63500b395360e01b5f5260045ffd5b60020b908160ff1d82810118620d89e881116138705763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116613854575b60048116613838575b6008811661381c575b60108116613800575b602081166137e4575b604081166137c8575b608081166137ac575b6101008116613790575b6102008116613774575b6104008116613758575b610800811661373c575b6110008116613720575b6120008116613704575b61400081166136e8575b61800081166136cc575b6201000081166136b0575b620200008116613695575b62040000811661367a575b6208000016613661575b5f12613659575b0160201c90565b5f1904613652565b6b048a170391f7dc42444e8fa290910260801c9061364b565b6d2216e584f5fa1ea926041bedfe9890920260801c91613641565b916e5d6af8dedb81196699c329225ee6040260801c91613636565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161362b565b916f31be135f97d08fd981231505542fcfa60260801c91613620565b916f70d869a156d2a1b890bb3df62baf32f70260801c91613616565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161360c565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91613602565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916135f8565b916ff3392b0822b70005940c7a398e4b70f30260801c916135ee565b916ff987a7253ac413176f2b074cf7815e540260801c916135e4565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916135da565b916ffe5dee046a99a2a811c461f1969c30530260801c916135d0565b916fff2ea16466c96a3843ec78b326b528610260801c916135c7565b916fff973b41fa98c081472e6896dfb254c00260801c916135be565b916fffcb9843d60f6159c9db58835c9266440260801c916135b5565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916135ac565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916135a3565b916ffff97272373d413259a46990580e213a0260801c9161359a565b826345c3193d60e11b5f5260045260245ffd5b6001600160a01b03168061389657504790565b6020602491604051928380926370a0823160e01b82523060048301525afa90811561199e575f916138c5575090565b90506020813d6020116138ec575b816138e06020938361291b565b810103126119a9575190565b3d91506138d3565b600160801b81101561390c576001600160801b031690565b6335278d125f526004601cfd5b919060145260345263a9059cbb60601b5f5260205f6044601082855af1908160015f5114161561394c575b50505f603452565b3b153d17101561395d575f80613944565b6390b8ec185f526004601cfd5b6001546001600160a01b031690811561399c576001600160a01b03160361398d57565b635025667760e11b5f5260045ffd5b63185f14f160e31b5f5260045ffd5b906014036139ba573560601c90565b6313dd407360e21b5f5260045ffd5b6139db60085460b81c60020b826134f1565b9060ff60035460b01c165f146139fa575060195460020b9060020b1390565b905060195460020b9060020b131590565b60020b5f52601560205260405f2060405190613a268261287f565b80549182815260ff60026001840154938460208501520154161515806040830152829381613ad4575b50613a5957505090565b60ff600654166004811015611c635760038114908115613ac9575b5015613aaf57600554905b5190818111613a8f575b50505090565b613aa7935090613a9e91612862565b60801b906127b9565b5f8080613a89565b6005548042115f14613ac2575b90613a7f565b5042613abc565b60029150145f613a74565b905015155f613a4f565b6001600160801b039091169081158015613b10575b613b095761283692613b0491612862565b612eea565b5050505f90565b5082811115613af3565b5f9060175460ff8160301c1615612d25578060020b9060181c60020b9060085460b81c60020b905b828160020b1315613b5257505050565b613b5e613b6791612c0b565b610da3846134d6565b158015613bf7575b613bf257613b7d828261438a565b8060020b90815f52601460205260018060801b0360405f2054169081613baf575b505050613baa906134d6565b613b42565b90613b04613bbc92613a0b565b905f52601b60205260405f205490818111613bd8575b80613b9e565b95610e4f613bea92613baa9498612862565b94905f613bd2565b505050565b50828160020b13613b6f565b60020b5f52601560205260405f20600554908142115f14613c7357815b815490811015613bf25760ff60028301541680613c6a575b613c40575055565b613c4a9083612862565b80613c53575055565b613c65600183019160801b82546127b9565b905555565b50801515613c38565b4291613c20565b5f81815260116020526040902080546001600160a01b038116158015613d3d575b613bf25760a01c60020b5f526015602052600160405f2001613cd28154600260018060801b03600186015416940193845491613ade565b80613cde575b50505050565b7f8c604db61ba06f8610b6c68ac9796a6271dbb25c72d6187c153aecca65039cd492602092855f52601c845260405f20613d198482546127b9565b9055613d2783601d546127b9565b601d55549055604051908152a25f808080613cd8565b5060018201546001600160801b031615613c9b565b613d5b906143fd565b613d64816151b1565b9060010b5f526016602052600160ff60405f205492161b1615613e4157613d8a81614447565b60185480156127c6575f19016018819055613daf57506017805460ff60301b19169055565b6017548060020b8260020b8181145f14613df757505050613ddc60175491610da38360181c60020b6134d6565b613de5575b5050565b62ffffff169062ffffff191617601755565b826018949293941c60020b14613e0c57505050565b613e18613e1e92612c0b565b906141e9565b613e26575050565b60181b65ffffff000000169065ffffff000000191617601755565b50565b604051602081019182526006604082015260408152613e6460608261291b565b51902090565b80156119a9577b01c1818141808140018080c0814100004181408140c0c100414140c160221b601f6f8421084210842108cc6318c6db6d54be6001600160801b03841160071b84811c6001600160401b031060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b600281900b5f908152601460205260409020546001600160801b0316613e4157613f15906143fd565b613f1e81614447565b613f296018546134c8565b60185560175460ff8160301c16155f14613f6d575060175490600160301b9162ffffff82169066ffffffffffffff1916179060181b65ffffff000000161717601755565b908060020b918060020b8312613f93575b50601754918260181c60020b12613e26575050565b62ffffff191662ffffff8216176017555f613f7e565b6019548060020b613fd4613fbb61446d565b60ff60035460b01c169060085460b81c60020b91615086565b918260020b90828214613cd85762ffffff191662ffffff8416176019557f360ac5802b06d23803589cb36bf71bab382e98c2aaa5882d14f01530ac7d52339260209261402091906150f7565b604051908152a1565b915f91825b156140365750565b9260010160020b92614047846151b1565b949060010b5f5260166020525f19600160ff87161b011960405f205416948515801596875f146141d45780916119a95760ff906001600160801b038116156141ca575050607f5b6001600160401b038216156141c05760ff603f1991160160ff81116127c6575b63ffffffff8216156141b65760ff601f1991160160ff81116127c6575b61ffff8216156141ac5760ff600f1991160160ff81116127c6575b60ff8216156141a25760ff60071991160160ff81116127c6575b600f8216156141985760ff60031991160160ff81116127c6575b600382161561418c5760ff60011991160160ff81116127c657600190915b16614176575b9060ff91031660020b0160020b935b61416f575f938160020b8160020b1215614167579361402e565b5092505f9150565b5060019150565b60ff5f199116019060ff82116127c6579061413e565b9060019060021c614138565b9060041c9061411a565b9060081c90614100565b9060101c906140e6565b9060201c906140cb565b9060401c906140ae565b60801c915061408e565b505060ff9081031660020b0160020b9361414d565b915f915b926141f7816151b1565b600191820b5f9081526016602052604090205460ff821692831b80015f190116801580159493909190826143785750805f926119a957600160801b811015614369575b50600160401b811015614351575b600160201b811015614339575b62010000811015614321575b610100811015614309575b60108110156142f1575b80600460029210156142d8575b10156142c2575b60ff91031660020b900360020b905b6142ba578360020b8160020b1315612d25576142b490612c0b565b926141ed565b925060019150565b60ff60019116019060ff82116127c6579061428a565b60ff90821c92160160ff81116127c65760029091614283565b60ff600491821c92160160ff81116127c65790614276565b60ff600891821c92160160ff81116127c6579061426c565b60ff601091821c92160160ff81116127c65790614261565b60ff602091821c92160160ff81116127c65790614255565b60ff604091821c92160160ff81116127c65790614248565b91505060801c6080905f61423a565b9250505060020b900360020b90614299565b9060020b9060020b02908160020b9182036127c657565b60020b9060020b9081156143c357627fffff1981145f198314166127c6570590565b634e487b7160e01b5f52601260045260245ffd5b9060020b9081156143c35760020b0790565b60020b627fffff1981146127c6575f190190565b60085460b81c60020b9061441182826143a1565b915f8260020b129182614431575b50506144285790565b612836906143e9565b61443b92506143d7565b60020b15155f8061441f565b614450906151b1565b9060010b5f526016602052600160ff60405f2092161b8154189055565b61447c600d54600e5490612862565b80156150685762ffffff61448e61314d565b926144a160ff60035460b01c169361286f565b604051936144ae8561287f565b1515845260208401526001600160a01b0390931660408301908152926144d2612955565b60405191905f6144e1846128e5565b5f845260208401965f88525f60408601525f60608601525f60808601528561452c60a085207f00000000000000000000000000000000000000000000000000000000000000006131e7565b99919293909916988960608a015216608088015260020b895260018060a01b03168552606083015160020b604086015286511515955f6020890151129160018060a01b0390511691604051976080890189811060018060401b0382111761289a5760405288526020880152604087015260608601526001926145b1602088015161286f565b9760018060a01b03865116905160020b62ffffff608088015116906145d860a08720613e44565b92600384018094116127c657604051631e2eaeaf60e01b815260048101949094526020846024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa93841561199e575f94615034575b506040519b6146478d612900565b8c525f60208d015260408c015260608b01525f60808b015260a08a015260018060801b031660c0890152865115155f1461502357610fff6080860151165b61ffff8116615002575062ffffff606086015116915b8851151580614fe3575b15614fd157506040516146b781612900565b5f81525f60208201525f60408201525f60608201525f60808201525f60a08201525f60c082015260018060a01b0360408a015116815260a08420604087015160020b60608b015160020b908951151561471082846143a1565b92825f82129182614fbb575b5050614fab575b15614e585761473182615525565b60ff81169490916001861b905f1982018281116127c65761477c92614755916127b9565b927f000000000000000000000000000000000000000000000000000000000000000061553b565b16801580159590614e3f57509260ff6147a46147ae9361479e6147b397613e6a565b906151f6565b1660020b90612c26565b61438a565b905b1515604083015260020b60208201819052620d89e719811215614e275750620d89e71960208201525b60208101516001600160a01b03906147f89060020b613556565b166060820181905260408a015188516001600160a01b03909116919015614e125760608901516001600160a01b031681105b15614e0c575060608801516001600160a01b0316905b60018060801b0360c08c015116916148588c5161286f565b62ffffff87169390926001600160a01b038316811015929091905f851215614ce35785620f4240039061488d82875f03612d2b565b8515614cd25761489e848684615626565b965b878210614c35575050958691620f424082145f14614c26575050845b935b15614c1857916148cd92615686565b905b60c085015260a084015260808301526001600160a01b031660408a0152602087015115614bcd57614909608082015160c0830151906127b9565b5f8112614bbe5761491b908a516151de565b8952602089015160a08201515f8112614bbe57614937916151c3565b60208a01525b604089015160608201516001600160a01b0391821691168103614b8f575060408101516149e8575b8651156149dc57602061497c91015160020b612c0b565b60020b60608901525b8551151560208701511515145f146149c2576149a788516020890151906151c3565b60208901515b505060408801516001600160a01b031661469b565b60208801516149d7895160208a0151906151c3565b6149ad565b6020015160020b61497c565b9360a084206149fe602087015160020b91613e44565b600481018091116127c6576040519060208201928352604082015260408152614a2860608261291b565b519020604051631afeb18d60e11b81526004810191909152600360248201525f816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561199e575f90614af4575b60209150015160801d8751614ae6575b60018060801b0360c08b01511690600f0b018060801c614ad9576001600160801b031660c08a015263ffffffff818116146127c65763ffffffff1660010193614965565b6393dafdf15f526004601cfd5b614aef9061293e565b614a95565b503d805f833e614b04818361291b565b8101906020818303126119a9578051906001600160401b0382116119a957019080601f830112156119a9578151916001600160401b03831161289a578260051b9060405193614b56602084018661291b565b84526020808501928201019283116119a957602001905b828210614b7f57505050602090614a85565b8151815260209182019101614b6d565b90516001600160a01b03168103614ba7575b50614985565b614bb090613286565b60020b60608901525f614ba1565b6393dafdf160e01b5f5260045ffd5b60a08101515f8112614bbe57614be4908a516151c3565b89526020890151614bfe608083015160c0840151906127b9565b5f8112614bbe57614c0e916151de565b60208a015261493d565b614c21926155bc565b6148cd565b614c3091876156ee565b6148bc565b96509650505084938115831517614cc5578315614c6357614c57868385615771565b958691015f03936148be565b6001600160a01b038611614ca757614ca2614c9d614c8e6001600160801b03851660608a901b6155b2565b6001600160a01b0386166127b9565b6157f0565b614c57565b614ca2614c9d614cc06001600160801b03851689612de0565b614c8e565b634f2461b85f526004601cfd5b614cdd8483876156b2565b966148a0565b9294939291908515614dfb57614cfa818385615686565b925b838510614d3c57614d2993945080965b15614d2e5791614d1b92615626565b809380620f424003916156ee565b6148cf565b614d37926156b2565b614d1b565b509150828215821517614cc5578515614de7576001600160a01b038111614da95760601b60018060801b0383168082061515910401915b6001600160a01b03821683811115614d9c57614d299390036001600160a01b03165b8096614d0c565b634323a5555f526004601cfd5b6001600160801b038316614dc281600160601b84612e6a565b9181156143c357600160601b9009614ddb575b91614d73565b60010180614dd5575f80fd5b91614df6614d29938284615717565b614d95565b614e068184846155bc565b92614cfc565b90614840565b60608901516001600160a01b0316811161482a565b620d89e812156147de57620d89e860208201526147de565b6147ae9250614e5394915060020b90612c26565b6147b3565b614e69614e64836134d6565b615525565b92909360ff8416946001861b905f1982019182116127c657614ead9119927f000000000000000000000000000000000000000000000000000000000000000061553b565b1690811590811595865f14614f715750614ec6906134d6565b906119a95760ff614f61614f6b95846147ae955f03167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f6101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff860260f81c161b60f71c1692831c63d76453e004161a176151f6565b1660020b906134f1565b906147b5565b94509050614f7f91506134d6565b9162ffffff8160ff03116127c657614fa69262ffffff6147ae9260ff031660020b906134f1565b614f6b565b91614fb5906143e9565b91614723565b614fc592506143d7565b60020b1515825f61471c565b95509650505050506128369150613286565b50604089015160608801516001600160a01b03908116911614156146a5565b610fff62ffffff606088015116911690620f4240818302049101039161469b565b610fff6080860151600c1c16614685565b9093506020813d602011615060575b816150506020938361291b565b810103126119a95751925f614639565b3d9150615043565b5060035460b01c60ff161561507e57620d89e890565b620d89e71990565b909190156150c5575f8260020b125f146150b8576147ae816150b36150ae8261283696612c26565b6134d6565b6143a1565b6147ae81612836936143a1565b5f8260020b125f146150de576147ae81612836936143a1565b6147ae816150b36150f282612836966134f1565b612c0b565b9060ff60175460301c1615613de15760085460b81c60020b9060ff60035460b01c1692835f146151a3578060020b8260020b125b1561517157612a4493508260ff60035460b01c165f14615162576151566150ae8261515c9495612c26565b92612c26565b906153c8565b5061516c906134d6565b6153c8565b9082612a44945f14615194576151566150ae8261518e9495612c26565b9061520a565b5061519e906134d6565b61520a565b8060020b8260020b1361512b565b9060ff8260020b60081d60010b921690565b9190915f83820193841291129080158216911516176127c657565b81810392915f1380158285131691841216176127c657565b9060ff8091169116039060ff82116127c657565b91909161521782826143a1565b90825f8260020b1391826153b2575b505061539b575b9061523b816152609361438a565b9261524682826143a1565b90825f8260020b129182615385575b505061537c5761438a565b908160020b8160020b13613de15761527a615280916143fd565b916143fd565b6017548060020b808460020b12615374575b5060181c60020b808260020b1361536c575b508060020b91828160020b13613bf2575b828160020b13156152c557505050565b610d9a6152d191612c0b565b158015615360575b613bf25761535b906152f360085460b81c60020b8261438a565b600281810b91825f52601560205261530e60405f2091613c03565b0160ff198154169055805f5260146020527f1fd92dd789e8ac301fd676a998b2cc37eeed03ecaca912737aea2de45dbfa952602060018060801b0360405f205416604051908152a26134d6565b6152b5565b50828160020b136152d9565b90505f6152a4565b92505f615292565b6147ae906143e9565b61538f92506143d7565b60020b1515825f615255565b60020b90627fffff82146127c6579060010161522d565b6153bc92506143d7565b60020b1515825f615226565b9190916153d582826143a1565b90825f8260020b13918261550f575b50506154f8575b9061523b816153f99361438a565b908160020b8160020b13613de15761527a615413916143fd565b6017548060020b808460020b126154f0575b5060181c60020b808260020b136154e8575b508060020b91828160020b13613bf2575b828160020b131561545857505050565b610d9a61546491612c0b565b1580156154dc575b613bf2576154d79061548660085460b81c60020b8261438a565b60020b805f526015602052600260405f2042815501600160ff19825416179055805f5260146020525f80516020615805833981519152602060018060801b0360405f205416604051908152a26134d6565b615448565b50828160020b1361546c565b90505f615437565b92505f615425565b60020b90627fffff82146127c657906001016153eb565b61551992506143d7565b60020b1515825f6153e4565b60020b9060ff6101008360081d60010b93071690565b919061554690613e44565b90600582018092116127c657602091604051908382019260010b835260408201526040815261557660608261291b565b519020604051631e2eaeaf60e01b8152600481019190915291829060249082906001600160a01b03165afa90811561199e575f916138c5575090565b81156143c3570490565b906001600160a01b0380821690831611615620575b6001600160a01b038216918215615614576128369361560f926001600160a01b0380821693909103169060601b600160601b600160e01b0316612e6a565b6155b2565b62bfc9215f526004601cfd5b906155d1565b6001600160a01b0382811690821611615680575b6001600160a01b03811692831561561457615674926001600160a01b0380821693909103169060601b600160601b600160e01b03166156ee565b90808206151591040190565b9061563a565b612836926001600160a01b03928316919092160360ff81901d90810118906001600160801b0316612d97565b6001600160a01b0391821691160360ff81901d90810118906001906001600160801b03166156e08382612d97565b928260601b91091515160190565b9291906156fc828286612e6a565b9382156143c3570961570a57565b906001019081156119a957565b9190811561576c576001600160a01b03909216918183029160609190911b600160601b600160e01b03169082048314828211161561575f5761283692614c9d928203916156ee565b63f5c787f15f526004601cfd5b505090565b9190811561576c5760601b600160601b600160e01b0316916001600160a01b031690808202826157a183836155b2565b146157ce575b506157b56157ba92846155b2565b6127b9565b80820491061515016001600160a01b031690565b83018381106157a7576001600160a01b03936157ec939192506156ee565b1690565b6001600160a01b03811691908203614bbe5756fec8d91e589f6bbb26714a08d1a59fb08e98c9f6e31d97596f7a8a7d2a49913f502c72687de19bad2b0040ca13a6c56d4eb94bd30b6102c489f7f99629dfe2ee5eeeb345fea22465c927333e05d324ee5b476597701d8be7e5d9aacc60e7aefbafa164736f6c634300081a000a";
@@ -6535,9 +6669,13 @@ var rehypeDopplerHookMigratorAbi = [
6535
6669
  // src/evm/utils/tokenAddressMiner.ts
6536
6670
  var DEFAULT_MAX_ITERATIONS = 1e6;
6537
6671
  var TOKEN_FACTORY_80_ADDRESS = "0xf0B5141dD9096254B2ca624dff26024f46087229";
6672
+ var BASE_SEPOLIA_DOPPLER404_FACTORY = "0x98b0Aa2e0f134dbB3eb157b5646D387E6D55243a";
6538
6673
  function isTokenFactory80(tokenFactory) {
6539
6674
  return tokenFactory.toLowerCase() === TOKEN_FACTORY_80_ADDRESS.toLowerCase();
6540
6675
  }
6676
+ function getDopplerDN404Bytecode(tokenFactory) {
6677
+ return tokenFactory.toLowerCase() === BASE_SEPOLIA_DOPPLER404_FACTORY.toLowerCase() ? dopplerDN404BaseSepolia_default : dopplerDN404_default;
6678
+ }
6541
6679
  var STANDARD_TOKEN_DATA_ABI = [
6542
6680
  { type: "string" },
6543
6681
  { type: "string" },
@@ -6658,7 +6796,7 @@ function buildTokenInitHash(params) {
6658
6796
  v2Implementation
6659
6797
  } = params;
6660
6798
  if (variant === "doppler404") {
6661
- const [name2, symbol2, baseURI] = viem.decodeAbiParameters(
6799
+ const [name2, symbol2, baseURI, unit] = viem.decodeAbiParameters(
6662
6800
  DOPPLER404_TOKEN_DATA_ABI,
6663
6801
  tokenData
6664
6802
  );
@@ -6669,14 +6807,15 @@ function buildTokenInitHash(params) {
6669
6807
  { type: "uint256" },
6670
6808
  { type: "address" },
6671
6809
  { type: "address" },
6672
- { type: "string" }
6810
+ { type: "string" },
6811
+ { type: "uint256" }
6673
6812
  ],
6674
- [name2, symbol2, initialSupply, recipient, owner, baseURI]
6813
+ [name2, symbol2, initialSupply, recipient, owner, baseURI, unit]
6675
6814
  );
6676
6815
  return viem.keccak256(
6677
6816
  viem.encodePacked(
6678
6817
  ["bytes", "bytes"],
6679
- [customBytecode ?? dopplerDN404_default, initHashData2]
6818
+ [customBytecode ?? getDopplerDN404Bytecode(tokenFactory), initHashData2]
6680
6819
  )
6681
6820
  );
6682
6821
  }
@@ -7360,37 +7499,18 @@ function normalizeUint32(value, label) {
7360
7499
  }
7361
7500
  return normalized;
7362
7501
  }
7363
- function encodeRehypeDopplerHookInitializerData(numeraire, config, chainId) {
7364
- if (chainId === CHAIN_IDS.BASE_SEPOLIA) {
7365
- return viem.encodeAbiParameters(rehypeInitializerDataAbi, [
7366
- {
7367
- numeraire,
7368
- buybackDst: config.buybackDestination ?? ZERO_ADDRESS,
7369
- startFee: config.startFee,
7370
- endFee: config.endFee,
7371
- durationSeconds: config.durationSeconds,
7372
- startingTime: config.startingTime,
7373
- feeRoutingMode: config.feeRoutingMode,
7374
- feeDistributionInfo: config.feeDistributionInfo,
7375
- feeBeneficiaries: config.feeBeneficiaries ?? []
7376
- }
7377
- ]);
7378
- }
7379
- if (config.feeBeneficiaries !== void 0) {
7380
- throw new Error(
7381
- "Rehype fee beneficiaries are temporarily supported only on Base Sepolia until the remaining initializer deployments are upgraded"
7382
- );
7383
- }
7384
- return viem.encodeAbiParameters(legacyRehypeInitializerDataAbi, [
7502
+ function encodeRehypeDopplerHookInitializerData(numeraire, config) {
7503
+ return viem.encodeAbiParameters(rehypeInitializerDataAbi, [
7385
7504
  {
7386
7505
  numeraire,
7387
- buybackDst: config.buybackDestination,
7506
+ buybackDst: config.buybackDestination ?? ZERO_ADDRESS,
7388
7507
  startFee: config.startFee,
7389
7508
  endFee: config.endFee,
7390
7509
  durationSeconds: config.durationSeconds,
7391
7510
  startingTime: config.startingTime,
7392
7511
  feeRoutingMode: config.feeRoutingMode,
7393
- feeDistributionInfo: config.feeDistributionInfo
7512
+ feeDistributionInfo: config.feeDistributionInfo,
7513
+ feeBeneficiaries: config.feeBeneficiaries ?? []
7394
7514
  }
7395
7515
  ]);
7396
7516
  }
@@ -7408,25 +7528,6 @@ var feeDistributionComponents = [
7408
7528
  { name: "numeraireFeesToBeneficiaryWad", type: "uint256" },
7409
7529
  { name: "numeraireFeesToLpWad", type: "uint256" }
7410
7530
  ];
7411
- var legacyRehypeInitializerDataAbi = [
7412
- {
7413
- type: "tuple",
7414
- components: [
7415
- { name: "numeraire", type: "address" },
7416
- { name: "buybackDst", type: "address" },
7417
- { name: "startFee", type: "uint24" },
7418
- { name: "endFee", type: "uint24" },
7419
- { name: "durationSeconds", type: "uint32" },
7420
- { name: "startingTime", type: "uint32" },
7421
- { name: "feeRoutingMode", type: "uint8" },
7422
- {
7423
- name: "feeDistributionInfo",
7424
- type: "tuple",
7425
- components: feeDistributionComponents
7426
- }
7427
- ]
7428
- }
7429
- ];
7430
7531
  var rehypeInitializerDataAbi = [
7431
7532
  {
7432
7533
  type: "tuple",
@@ -7835,42 +7936,44 @@ function tickToMarketCap(params) {
7835
7936
  }
7836
7937
 
7837
7938
  // src/evm/builders/shared.ts
7838
- function hasDopplerERC20V1OnlyTokenConfigFields(params) {
7839
- return "maxBalanceLimit" in params || "balanceLimitEnd" in params || "controller" in params || "excludedFromBalanceLimit" in params;
7840
- }
7841
- function isDopplerERC20V1TokenConfig(params) {
7842
- return params.type === "dopplerERC20V1" || hasDopplerERC20V1OnlyTokenConfigFields(params);
7939
+ function assertTokenConfigSupportsYearlyMintRate(params) {
7940
+ if ("yearlyMintRate" in params && params.type !== "standard") {
7941
+ throw new Error(
7942
+ "yearlyMintRate is only supported with token type 'standard'; DopplerERC20V1 does not support yearly minting."
7943
+ );
7944
+ }
7843
7945
  }
7844
7946
  function normalizeBuilderTokenConfig(params, defaultYearlyMintRate) {
7845
- if (isDopplerERC20V1TokenConfig(params)) {
7947
+ assertTokenConfigSupportsYearlyMintRate(params);
7948
+ if (params.type === "doppler404") {
7949
+ const token = params;
7846
7950
  return {
7847
- type: "dopplerERC20V1",
7848
- name: params.name,
7849
- symbol: params.symbol,
7850
- tokenURI: params.tokenURI,
7851
- maxBalanceLimit: params.maxBalanceLimit,
7852
- balanceLimitEnd: params.balanceLimitEnd,
7853
- controller: params.controller,
7854
- excludedFromBalanceLimit: params.excludedFromBalanceLimit
7951
+ type: "doppler404",
7952
+ name: token.name,
7953
+ symbol: token.symbol,
7954
+ baseURI: token.baseURI,
7955
+ unit: token.unit
7855
7956
  };
7856
7957
  }
7857
- if (params.type === "doppler404") {
7858
- const token2 = params;
7958
+ if (params.type === "standard") {
7959
+ const token = params;
7859
7960
  return {
7860
- type: "doppler404",
7861
- name: token2.name,
7862
- symbol: token2.symbol,
7863
- baseURI: token2.baseURI,
7864
- unit: token2.unit
7961
+ type: "standard",
7962
+ name: token.name,
7963
+ symbol: token.symbol,
7964
+ tokenURI: token.tokenURI,
7965
+ yearlyMintRate: token.yearlyMintRate ?? defaultYearlyMintRate
7865
7966
  };
7866
7967
  }
7867
- const token = params;
7868
7968
  return {
7869
- type: "standard",
7870
- name: token.name,
7871
- symbol: token.symbol,
7872
- tokenURI: token.tokenURI,
7873
- yearlyMintRate: token.yearlyMintRate ?? defaultYearlyMintRate
7969
+ type: "dopplerERC20V1",
7970
+ name: params.name,
7971
+ symbol: params.symbol,
7972
+ tokenURI: params.tokenURI,
7973
+ maxBalanceLimit: params.maxBalanceLimit,
7974
+ balanceLimitEnd: params.balanceLimitEnd,
7975
+ controller: params.controller,
7976
+ excludedFromBalanceLimit: params.excludedFromBalanceLimit
7874
7977
  };
7875
7978
  }
7876
7979
  var MAX_SAFE_INTEGER_BIGINT = BigInt(Number.MAX_SAFE_INTEGER);
@@ -8004,6 +8107,9 @@ function buildCurvesFromPresets(params) {
8004
8107
  // src/evm/entities/DopplerFactory.ts
8005
8108
  var MAX_UINT1282 = (1n << 128n) - 1n;
8006
8109
  var MAX_PROCEEDS_SPLIT_SHARE = WAD / 2n;
8110
+ function isDopplerHookMigratorConfig(config) {
8111
+ return config.type === "dopplerHookMigrator" || config.type === "dopplerHook";
8112
+ }
8007
8113
  var DERC20_V1_MAX_PREMINT_WAD = WAD * 8n / 10n;
8008
8114
  var ONE_MILLION = 1000000n;
8009
8115
  var MAX_COMPLETION_ATTEMPTS = 3;
@@ -8257,7 +8363,7 @@ var DopplerFactory = class {
8257
8363
  if ((migration.type === "uniswapV4" || migration.type === "uniswapV4Split") && migration.streamableFees) {
8258
8364
  return [addresses.streamableFeesLocker];
8259
8365
  }
8260
- if (migration.type === "dopplerHook") {
8366
+ if (isDopplerHookMigratorConfig(migration)) {
8261
8367
  return [
8262
8368
  addresses.streamableFeesLockerV2 ?? addresses.streamableFeesLocker
8263
8369
  ];
@@ -8492,6 +8598,19 @@ var DopplerFactory = class {
8492
8598
  );
8493
8599
  }
8494
8600
  }
8601
+ assertDoppler404Compatibility(args) {
8602
+ if (!this.isDoppler404Token(args.token)) {
8603
+ return;
8604
+ }
8605
+ if (!args.configuredFactory || args.configuredFactory === ZERO_ADDRESS) {
8606
+ throw new Error(
8607
+ "Doppler404 factory address not configured for this chain"
8608
+ );
8609
+ }
8610
+ if (args.vesting !== void 0) {
8611
+ throw new Error("Doppler404 tokens do not support vesting");
8612
+ }
8613
+ }
8495
8614
  buildStandardTokenFactoryData(args) {
8496
8615
  const { recipients, amounts } = this.resolveVestingAllocations(args);
8497
8616
  const yearlyMintRate = args.token.yearlyMintRate ?? DEFAULT_V4_YEARLY_MINT_RATE;
@@ -8695,6 +8814,11 @@ var DopplerFactory = class {
8695
8814
  async encodeCreateStaticAuctionParams(params) {
8696
8815
  this.validateStaticAuctionParams(params);
8697
8816
  const addresses = getAddresses(this.chainId);
8817
+ this.assertDoppler404Compatibility({
8818
+ token: params.token,
8819
+ vesting: params.vesting,
8820
+ configuredFactory: addresses.doppler404Factory
8821
+ });
8698
8822
  const hasBeneficiaries = params.pool.beneficiaries && params.pool.beneficiaries.length > 0;
8699
8823
  let poolInitializerData;
8700
8824
  if (hasBeneficiaries) {
@@ -8803,7 +8927,7 @@ var DopplerFactory = class {
8803
8927
  if (this.isDoppler404Token(params.token)) {
8804
8928
  const token404 = params.token;
8805
8929
  const baseURI = token404.baseURI;
8806
- const unit = token404.unit !== void 0 ? BigInt(token404.unit) : 1000n;
8930
+ const unit = token404.unit !== void 0 ? BigInt(token404.unit) : WAD;
8807
8931
  tokenFactoryData = viem.encodeAbiParameters(
8808
8932
  [
8809
8933
  { type: "string" },
@@ -9150,6 +9274,11 @@ var DopplerFactory = class {
9150
9274
  async encodeCreateDynamicAuctionParams(params) {
9151
9275
  this.validateDynamicAuctionParams(params);
9152
9276
  const addresses = getAddresses(this.chainId);
9277
+ this.assertDoppler404Compatibility({
9278
+ token: params.token,
9279
+ vesting: params.vesting,
9280
+ configuredFactory: addresses.doppler404Factory
9281
+ });
9153
9282
  const gamma = params.auction.gamma ?? computeOptimalGamma(
9154
9283
  params.auction.startTick,
9155
9284
  params.auction.endTick,
@@ -9186,13 +9315,6 @@ var DopplerFactory = class {
9186
9315
  fee: params.pool.fee,
9187
9316
  tickSpacing: params.pool.tickSpacing
9188
9317
  };
9189
- if (this.isDoppler404Token(params.token)) {
9190
- if (!addresses.doppler404Factory || addresses.doppler404Factory === ZERO_ADDRESS) {
9191
- throw new Error(
9192
- "Doppler404 factory address not configured for this chain"
9193
- );
9194
- }
9195
- }
9196
9318
  const resolvedTokenFactoryDyn = params.modules?.tokenFactory ?? (this.isDoppler404Token(params.token) ? addresses.doppler404Factory : this.isDopplerERC20V1Token(params.token) ? params.modules?.dopplerERC20V1Factory ?? addresses.dopplerERC20V1Factory : this.usesDerc20V2Vesting(params.vesting) ? addresses.derc20V2Factory : addresses.tokenFactory);
9197
9319
  if (!resolvedTokenFactoryDyn || resolvedTokenFactoryDyn === ZERO_ADDRESS) {
9198
9320
  throw new Error(
@@ -9222,7 +9344,7 @@ var DopplerFactory = class {
9222
9344
  name: t.name,
9223
9345
  symbol: t.symbol,
9224
9346
  baseURI: t.baseURI,
9225
- unit: t.unit !== void 0 ? BigInt(t.unit) : 1000n
9347
+ unit: t.unit !== void 0 ? BigInt(t.unit) : WAD
9226
9348
  };
9227
9349
  })() : this.isDopplerERC20V1Token(params.token) ? this.resolveDopplerERC20V1TokenFactoryData({
9228
9350
  token: params.token,
@@ -9458,6 +9580,11 @@ var DopplerFactory = class {
9458
9580
  async encodeCreateOpeningAuctionParams(params) {
9459
9581
  this.validateOpeningAuctionParams(params);
9460
9582
  const addresses = getAddresses(this.chainId);
9583
+ this.assertDoppler404Compatibility({
9584
+ token: params.token,
9585
+ vesting: params.vesting,
9586
+ configuredFactory: addresses.doppler404Factory
9587
+ });
9461
9588
  const openingAuctionInitializer = this.resolveOpeningAuctionInitializerAddress(params.modules, addresses);
9462
9589
  const [poolManagerForAuction, auctionDeployer] = await Promise.all([
9463
9590
  this.publicClient.readContract({
@@ -9562,13 +9689,6 @@ var DopplerFactory = class {
9562
9689
  }
9563
9690
  ]
9564
9691
  );
9565
- if (this.isDoppler404Token(params.token)) {
9566
- if (!addresses.doppler404Factory || addresses.doppler404Factory === ZERO_ADDRESS) {
9567
- throw new Error(
9568
- "Doppler404 factory address not configured for this chain"
9569
- );
9570
- }
9571
- }
9572
9692
  const resolvedTokenFactory = params.modules?.tokenFactory ?? (this.isDoppler404Token(params.token) ? addresses.doppler404Factory : this.isDopplerERC20V1Token(params.token) ? params.modules?.dopplerERC20V1Factory ?? addresses.dopplerERC20V1Factory : this.usesDerc20V2Vesting(params.vesting) ? addresses.derc20V2Factory : addresses.tokenFactory);
9573
9693
  if (!resolvedTokenFactory || resolvedTokenFactory === ZERO_ADDRESS) {
9574
9694
  throw new Error(
@@ -9592,7 +9712,7 @@ var DopplerFactory = class {
9592
9712
  name: t.name,
9593
9713
  symbol: t.symbol,
9594
9714
  baseURI: t.baseURI,
9595
- unit: t.unit !== void 0 ? BigInt(t.unit) : 1000n
9715
+ unit: t.unit !== void 0 ? BigInt(t.unit) : WAD
9596
9716
  };
9597
9717
  })() : this.isDopplerERC20V1Token(params.token) ? this.resolveDopplerERC20V1TokenFactoryData({
9598
9718
  token: params.token,
@@ -10398,7 +10518,7 @@ var DopplerFactory = class {
10398
10518
  { type: "string" },
10399
10519
  { type: "uint256" }
10400
10520
  ],
10401
- [t.name, t.symbol, t.baseURI, t.unit ?? 1000n]
10521
+ [t.name, t.symbol, t.baseURI, t.unit ?? WAD]
10402
10522
  );
10403
10523
  })() : params.tokenVariant === "dopplerERC20V1" ? this.encodeDopplerERC20V1TokenFactoryData(
10404
10524
  params.tokenFactoryData
@@ -10415,7 +10535,8 @@ var DopplerFactory = class {
10415
10535
  { type: "uint256" },
10416
10536
  { type: "address" },
10417
10537
  { type: "address" },
10418
- { type: "string" }
10538
+ { type: "string" },
10539
+ { type: "uint256" }
10419
10540
  ],
10420
10541
  [
10421
10542
  t.name,
@@ -10423,13 +10544,19 @@ var DopplerFactory = class {
10423
10544
  params.initialSupply,
10424
10545
  params.airlock,
10425
10546
  params.airlock,
10426
- t.baseURI
10547
+ t.baseURI,
10548
+ t.unit ?? WAD
10427
10549
  ]
10428
10550
  );
10429
10551
  tokenInitHash = viem.keccak256(
10430
10552
  viem.encodePacked(
10431
10553
  ["bytes", "bytes"],
10432
- [dopplerDN404_default, initData]
10554
+ [
10555
+ getDopplerDN404Bytecode(
10556
+ params.addresses?.doppler404Factory ?? params.tokenFactory
10557
+ ),
10558
+ initData
10559
+ ]
10433
10560
  )
10434
10561
  );
10435
10562
  } else if (params.tokenVariant === "dopplerERC20V1") {
@@ -10513,7 +10640,8 @@ var DopplerFactory = class {
10513
10640
  return token.type === "doppler404";
10514
10641
  }
10515
10642
  isDopplerERC20V1Token(token) {
10516
- return token.type === "dopplerERC20V1" || hasDopplerERC20V1OnlyTokenConfigFields(token);
10643
+ assertTokenConfigSupportsYearlyMintRate(token);
10644
+ return token.type !== "standard" && token.type !== "doppler404";
10517
10645
  }
10518
10646
  /**
10519
10647
  * Encode migration data based on the MigrationConfig
@@ -10523,6 +10651,12 @@ var DopplerFactory = class {
10523
10651
  if (this.customMigrationEncoder) {
10524
10652
  return this.customMigrationEncoder(config);
10525
10653
  }
10654
+ if (config.type === "uniswapV2" && this.resolveUniswapV2Migrator(options?.overrides).isSplit) {
10655
+ return viem.encodeAbiParameters(
10656
+ [{ type: "address" }, { type: "uint256" }],
10657
+ [ZERO_ADDRESS, 0n]
10658
+ );
10659
+ }
10526
10660
  switch (config.type) {
10527
10661
  case "uniswapV2":
10528
10662
  return "0x";
@@ -10596,24 +10730,25 @@ var DopplerFactory = class {
10596
10730
  ]
10597
10731
  );
10598
10732
  }
10599
- case "dopplerHook": {
10600
- const dopplerHookConfig = config;
10601
- if (dopplerHookConfig.hook && dopplerHookConfig.rehype) {
10733
+ case "dopplerHook":
10734
+ case "dopplerHookMigrator": {
10735
+ const dopplerHookMigratorConfig = config;
10736
+ if (dopplerHookMigratorConfig.hook && dopplerHookMigratorConfig.rehype) {
10602
10737
  throw new Error(
10603
- "dopplerHook migration cannot set both hook and rehype config. Use exactly one hook mode."
10738
+ "dopplerHookMigrator migration cannot set both hook and rehype config. Use exactly one hook mode."
10604
10739
  );
10605
10740
  }
10606
10741
  const beneficiaries = sortBeneficiaries(
10607
- dopplerHookConfig.beneficiaries
10742
+ dopplerHookMigratorConfig.beneficiaries
10608
10743
  );
10609
10744
  let dopplerHookAddress = ZERO_ADDRESS;
10610
10745
  let onInitializationCalldata = "0x";
10611
- if (dopplerHookConfig.hook) {
10612
- dopplerHookAddress = dopplerHookConfig.hook.hookAddress;
10613
- onInitializationCalldata = dopplerHookConfig.hook.onInitializationCalldata ?? "0x";
10614
- } else if (dopplerHookConfig.rehype) {
10746
+ if (dopplerHookMigratorConfig.hook) {
10747
+ dopplerHookAddress = dopplerHookMigratorConfig.hook.hookAddress;
10748
+ onInitializationCalldata = dopplerHookMigratorConfig.hook.onInitializationCalldata ?? "0x";
10749
+ } else if (dopplerHookMigratorConfig.rehype) {
10615
10750
  const addresses = getAddresses(this.chainId);
10616
- const resolvedRehypeHookAddress = dopplerHookConfig.rehype.hookAddress ?? options?.overrides?.rehypeDopplerHookMigrator ?? addresses.rehypeDopplerHookMigrator;
10751
+ const resolvedRehypeHookAddress = dopplerHookMigratorConfig.rehype.hookAddress ?? options?.overrides?.rehypeDopplerHookMigrator ?? addresses.rehypeDopplerHookMigrator;
10617
10752
  if (!resolvedRehypeHookAddress) {
10618
10753
  throw new Error(
10619
10754
  "RehypeDopplerHookMigrator address not configured on this chain. Provide migration.rehype.hookAddress or override modules.rehypeDopplerHookMigrator."
@@ -10621,17 +10756,17 @@ var DopplerFactory = class {
10621
10756
  }
10622
10757
  if (!options?.numeraire) {
10623
10758
  throw new Error(
10624
- "numeraire is required to encode rehype dopplerHook migration data"
10759
+ "numeraire is required to encode rehype dopplerHookMigrator migration data"
10625
10760
  );
10626
10761
  }
10627
10762
  dopplerHookAddress = resolvedRehypeHookAddress;
10628
10763
  onInitializationCalldata = encodeRehypeDopplerHookMigratorCalldata({
10629
10764
  numeraire: options.numeraire,
10630
- config: dopplerHookConfig.rehype
10765
+ config: dopplerHookMigratorConfig.rehype
10631
10766
  });
10632
10767
  }
10633
- const proceedsRecipient = dopplerHookConfig.proceedsSplit?.recipient ?? ZERO_ADDRESS;
10634
- const proceedsShare = dopplerHookConfig.proceedsSplit?.share ?? 0n;
10768
+ const proceedsRecipient = dopplerHookMigratorConfig.proceedsSplit?.recipient ?? ZERO_ADDRESS;
10769
+ const proceedsShare = dopplerHookMigratorConfig.proceedsSplit?.share ?? 0n;
10635
10770
  return viem.encodeAbiParameters(
10636
10771
  [
10637
10772
  { type: "uint24" },
@@ -10651,10 +10786,10 @@ var DopplerFactory = class {
10651
10786
  { type: "uint256" }
10652
10787
  ],
10653
10788
  [
10654
- dopplerHookConfig.fee,
10655
- dopplerHookConfig.useDynamicFee ?? false,
10656
- dopplerHookConfig.tickSpacing,
10657
- dopplerHookConfig.lockDuration,
10789
+ dopplerHookMigratorConfig.fee,
10790
+ dopplerHookMigratorConfig.useDynamicFee ?? false,
10791
+ dopplerHookMigratorConfig.tickSpacing,
10792
+ dopplerHookMigratorConfig.lockDuration,
10658
10793
  beneficiaries,
10659
10794
  dopplerHookAddress,
10660
10795
  onInitializationCalldata,
@@ -10763,10 +10898,20 @@ var DopplerFactory = class {
10763
10898
  hookConfig: legacyHook
10764
10899
  };
10765
10900
  } else {
10766
- mode = { type: "standard" };
10901
+ mode = { type: "rehype" };
10767
10902
  }
10768
10903
  } else {
10769
10904
  switch (initializer.type) {
10905
+ case "dopplerHook":
10906
+ case "dopplerHookInitializer": {
10907
+ if (hasLegacySchedule || hasLegacyHook) {
10908
+ throw new Error(
10909
+ "Initializer type 'dopplerHookInitializer' cannot be combined with legacy schedule or RehypeDopplerHookInitializer configuration"
10910
+ );
10911
+ }
10912
+ mode = { type: "rehype" };
10913
+ break;
10914
+ }
10770
10915
  case "standard": {
10771
10916
  if (hasLegacySchedule || hasLegacyHook) {
10772
10917
  throw new Error(
@@ -10869,7 +11014,7 @@ var DopplerFactory = class {
10869
11014
  mode = { type: "rehype" };
10870
11015
  } else if (mode.type !== "rehype") {
10871
11016
  throw new Error(
10872
- "modules.dopplerHookInitializer can only be used with the rehype or standard multicurve initializer mode"
11017
+ "modules.dopplerHookInitializer can only be used with the dopplerHookInitializer, rehype, or standard multicurve initializer mode"
10873
11018
  );
10874
11019
  }
10875
11020
  }
@@ -10937,8 +11082,7 @@ var DopplerFactory = class {
10937
11082
  dopplerHookAddress = hookConfig.hookAddress;
10938
11083
  onInitializationDopplerHookCalldata = encodeRehypeDopplerHookInitializerData(
10939
11084
  params.sale.numeraire,
10940
- hookConfig,
10941
- this.chainId
11085
+ hookConfig
10942
11086
  );
10943
11087
  graduationDopplerHookCalldata = hookConfig.graduationCalldata ?? "0x";
10944
11088
  }
@@ -11054,6 +11198,11 @@ var DopplerFactory = class {
11054
11198
  ]
11055
11199
  );
11056
11200
  }
11201
+ this.assertDoppler404Compatibility({
11202
+ token: params.token,
11203
+ vesting: params.vesting,
11204
+ configuredFactory: addresses.doppler404Factory
11205
+ });
11057
11206
  const resolvedTokenFactory = params.modules?.tokenFactory ?? (this.isDoppler404Token(params.token) ? addresses.doppler404Factory : this.isDopplerERC20V1Token(params.token) ? params.modules?.dopplerERC20V1Factory ?? addresses.dopplerERC20V1Factory : this.usesDerc20V2Vesting(params.vesting) ? addresses.derc20V2Factory : addresses.tokenFactory);
11058
11207
  if (!resolvedTokenFactory || resolvedTokenFactory === ZERO_ADDRESS) {
11059
11208
  throw new Error(
@@ -11069,7 +11218,7 @@ var DopplerFactory = class {
11069
11218
  let tokenFactoryData = void 0;
11070
11219
  if (this.isDoppler404Token(params.token)) {
11071
11220
  const token404 = params.token;
11072
- const unit = token404.unit !== void 0 ? BigInt(token404.unit) : 1000n;
11221
+ const unit = token404.unit !== void 0 ? BigInt(token404.unit) : WAD;
11073
11222
  tokenFactoryData = viem.encodeAbiParameters(
11074
11223
  [
11075
11224
  { type: "string" },
@@ -11118,7 +11267,7 @@ var DopplerFactory = class {
11118
11267
  ]
11119
11268
  );
11120
11269
  })();
11121
- const salt = this.generateRandomSalt(params.userAddress);
11270
+ const salt = params.salt ?? this.generateRandomSalt(params.userAddress);
11122
11271
  const resolvedInitializer = (() => {
11123
11272
  if (useDopplerHookInitializer) {
11124
11273
  return params.modules?.dopplerHookInitializer ?? addresses.dopplerHookInitializer;
@@ -11525,9 +11674,9 @@ var DopplerFactory = class {
11525
11674
  throw new Error("Cannot sell more tokens than initial supply");
11526
11675
  }
11527
11676
  this.validateVestingConfig(params.sale, params.vesting);
11528
- if (params.migration.type === "dopplerHook") {
11677
+ if (isDopplerHookMigratorConfig(params.migration)) {
11529
11678
  throw new Error(
11530
- "dopplerHook migration is only supported for dynamic auctions"
11679
+ "dopplerHookMigrator migration is only supported for dynamic auctions"
11531
11680
  );
11532
11681
  }
11533
11682
  if (params.migration.type === "uniswapV2Split") {
@@ -11644,7 +11793,7 @@ var DopplerFactory = class {
11644
11793
  "V4 split migration"
11645
11794
  );
11646
11795
  }
11647
- if (params.migration.type === "dopplerHook") {
11796
+ if (isDopplerHookMigratorConfig(params.migration)) {
11648
11797
  const migration = params.migration;
11649
11798
  if (!Number.isInteger(migration.fee) || migration.fee < 0) {
11650
11799
  throw new Error(
@@ -11661,7 +11810,7 @@ var DopplerFactory = class {
11661
11810
  }
11662
11811
  if (migration.beneficiaries.length === 0) {
11663
11812
  throw new Error(
11664
- "At least one beneficiary is required for dopplerHook migration"
11813
+ "At least one beneficiary is required for dopplerHookMigrator migration"
11665
11814
  );
11666
11815
  }
11667
11816
  const totalShares = migration.beneficiaries.reduce(
@@ -11686,7 +11835,7 @@ var DopplerFactory = class {
11686
11835
  }
11687
11836
  if (migration.hook && migration.rehype) {
11688
11837
  throw new Error(
11689
- "dopplerHook migration cannot set both hook and rehype config. Use exactly one hook mode."
11838
+ "dopplerHookMigrator migration cannot set both hook and rehype config. Use exactly one hook mode."
11690
11839
  );
11691
11840
  }
11692
11841
  if (migration.rehype) {
@@ -11797,9 +11946,9 @@ var DopplerFactory = class {
11797
11946
  if (params.doppler.gamma !== void 0 && params.doppler.gamma % params.doppler.tickSpacing !== 0) {
11798
11947
  throw new Error("doppler.gamma must be divisible by doppler.tickSpacing");
11799
11948
  }
11800
- if (params.migration.type === "dopplerHook") {
11949
+ if (isDopplerHookMigratorConfig(params.migration)) {
11801
11950
  throw new Error(
11802
- "dopplerHook migration type is not supported for opening auctions"
11951
+ "dopplerHookMigrator migration type is not supported for opening auctions"
11803
11952
  );
11804
11953
  }
11805
11954
  if (params.migration.type === "uniswapV2Split") {
@@ -11830,6 +11979,9 @@ var DopplerFactory = class {
11830
11979
  * Validate multicurve auction parameters
11831
11980
  */
11832
11981
  validateMulticurveParams(params) {
11982
+ if (params.salt !== void 0 && (typeof params.salt !== "string" || !/^0x[0-9a-fA-F]{64}$/.test(params.salt))) {
11983
+ throw new Error("Multicurve salt must be exactly 32 bytes");
11984
+ }
11833
11985
  if (!params.token.name || params.token.name.trim().length === 0) {
11834
11986
  throw new Error("Token name is required");
11835
11987
  }
@@ -11861,9 +12013,9 @@ var DopplerFactory = class {
11861
12013
  }
11862
12014
  }
11863
12015
  }
11864
- if (params.migration.type === "dopplerHook") {
12016
+ if (isDopplerHookMigratorConfig(params.migration)) {
11865
12017
  throw new Error(
11866
- "dopplerHook migration is only supported for dynamic auctions"
12018
+ "dopplerHookMigrator migration is only supported for dynamic auctions"
11867
12019
  );
11868
12020
  }
11869
12021
  if (params.migration.type === "uniswapV2Split") {
@@ -11906,18 +12058,25 @@ var DopplerFactory = class {
11906
12058
  * Get the appropriate migrator address based on migration config
11907
12059
  * Allows override via ModuleAddressOverrides when provided in params.
11908
12060
  */
12061
+ resolveUniswapV2Migrator(overrides) {
12062
+ const addresses = getAddresses(this.chainId);
12063
+ const v2Address = overrides?.v2Migrator ?? addresses.v2Migrator;
12064
+ if (v2Address && v2Address !== ZERO_ADDRESS) {
12065
+ return { address: v2Address, isSplit: false };
12066
+ }
12067
+ const v2SplitAddress = overrides?.v2MigratorSplit ?? addresses.v2MigratorSplit;
12068
+ if (v2SplitAddress && v2SplitAddress !== ZERO_ADDRESS) {
12069
+ return { address: v2SplitAddress, isSplit: true };
12070
+ }
12071
+ throw new Error(
12072
+ "Neither UniswapV2Migrator nor UniswapV2MigratorSplit is deployed on this chain. Provide an override via modules.v2Migrator or modules.v2MigratorSplit."
12073
+ );
12074
+ }
11909
12075
  getMigratorAddress(config, overrides) {
11910
12076
  const addresses = getAddresses(this.chainId);
11911
12077
  switch (config.type) {
11912
- case "uniswapV2": {
11913
- const v2Address = overrides?.v2Migrator ?? addresses.v2Migrator;
11914
- if (!v2Address || v2Address === ZERO_ADDRESS) {
11915
- throw new Error(
11916
- "UniswapV2Migrator not deployed on this chain. Use uniswapV2Split migration or provide override via modules.v2Migrator."
11917
- );
11918
- }
11919
- return v2Address;
11920
- }
12078
+ case "uniswapV2":
12079
+ return this.resolveUniswapV2Migrator(overrides).address;
11921
12080
  case "uniswapV2Split": {
11922
12081
  const v2SplitAddress = overrides?.v2MigratorSplit ?? addresses.v2MigratorSplit;
11923
12082
  if (!v2SplitAddress || v2SplitAddress === ZERO_ADDRESS) {
@@ -11945,7 +12104,8 @@ var DopplerFactory = class {
11945
12104
  }
11946
12105
  return v4SplitAddress;
11947
12106
  }
11948
- case "dopplerHook": {
12107
+ case "dopplerHook":
12108
+ case "dopplerHookMigrator": {
11949
12109
  const dopplerHookMigratorAddress = overrides?.dopplerHookMigrator ?? addresses.dopplerHookMigrator;
11950
12110
  if (!dopplerHookMigratorAddress || dopplerHookMigratorAddress === ZERO_ADDRESS) {
11951
12111
  throw new Error(
@@ -12278,7 +12438,7 @@ var DopplerFactory = class {
12278
12438
  { type: "string" },
12279
12439
  { type: "uint256" }
12280
12440
  ],
12281
- [t.name, t.symbol, t.baseURI, t.unit ?? 1000n]
12441
+ [t.name, t.symbol, t.baseURI, t.unit ?? WAD]
12282
12442
  );
12283
12443
  })() : params.tokenVariant === "dopplerERC20V1" ? this.encodeDopplerERC20V1TokenFactoryData(
12284
12444
  params.tokenFactoryData
@@ -12287,7 +12447,7 @@ var DopplerFactory = class {
12287
12447
  );
12288
12448
  let tokenInitHash;
12289
12449
  if (params.tokenVariant === "doppler404") {
12290
- const { name, symbol, baseURI } = params.tokenFactoryData;
12450
+ const { name, symbol, baseURI, unit } = params.tokenFactoryData;
12291
12451
  const { airlock, initialSupply } = params;
12292
12452
  const initHashData = viem.encodeAbiParameters(
12293
12453
  [
@@ -12296,14 +12456,20 @@ var DopplerFactory = class {
12296
12456
  { type: "uint256" },
12297
12457
  { type: "address" },
12298
12458
  { type: "address" },
12299
- { type: "string" }
12459
+ { type: "string" },
12460
+ { type: "uint256" }
12300
12461
  ],
12301
- [name, symbol, initialSupply, airlock, airlock, baseURI]
12462
+ [name, symbol, initialSupply, airlock, airlock, baseURI, unit ?? WAD]
12302
12463
  );
12303
12464
  tokenInitHash = viem.keccak256(
12304
12465
  viem.encodePacked(
12305
12466
  ["bytes", "bytes"],
12306
- [dopplerDN404_default, initHashData]
12467
+ [
12468
+ getDopplerDN404Bytecode(
12469
+ params.addresses?.doppler404Factory ?? params.tokenFactory
12470
+ ),
12471
+ initHashData
12472
+ ]
12307
12473
  )
12308
12474
  );
12309
12475
  } else if (params.tokenVariant === "dopplerERC20V1") {
@@ -13230,9 +13396,11 @@ function parseMulticurveInitializerDiscoveryResult({
13230
13396
  stateData
13231
13397
  }) {
13232
13398
  const parsedState = kind === "dopplerHook" ? parseDopplerHookInitializerState(stateData) : parseStandardInitializerState(stateData);
13233
- const { numeraire, status, poolKey, farTick } = parsedState;
13399
+ const { numeraire, status, poolKey, farTick, dopplerHookAddress } = parsedState;
13234
13400
  return {
13235
13401
  initializerAddress,
13402
+ initializerKind: kind,
13403
+ dopplerHookAddress,
13236
13404
  state: {
13237
13405
  asset: tokenAddress,
13238
13406
  numeraire,
@@ -13270,7 +13438,8 @@ function parseStandardInitializerState(stateData) {
13270
13438
  numeraire: state.numeraire ?? state[0],
13271
13439
  status: Number(state.status ?? state[1]),
13272
13440
  poolKey: parseMulticurvePoolKey(state.poolKey ?? state[2]),
13273
- farTick: Number(state.farTick ?? state[3])
13441
+ farTick: Number(state.farTick ?? state[3]),
13442
+ dopplerHookAddress: viem.zeroAddress
13274
13443
  };
13275
13444
  }
13276
13445
  function parseDopplerHookInitializerState(stateData) {
@@ -13279,7 +13448,8 @@ function parseDopplerHookInitializerState(stateData) {
13279
13448
  numeraire: state.numeraire ?? state[0],
13280
13449
  status: Number(state.status ?? state[4]),
13281
13450
  poolKey: parseMulticurvePoolKey(state.poolKey ?? state[5]),
13282
- farTick: Number(state.farTick ?? state[6])
13451
+ farTick: Number(state.farTick ?? state[6]),
13452
+ dopplerHookAddress: state.dopplerHook ?? state[2]
13283
13453
  };
13284
13454
  }
13285
13455
  function isAbsentPoolReadFailure(error) {
@@ -13772,6 +13942,129 @@ var MulticurvePool = class {
13772
13942
  return getMulticurveFeeSchedule(this.rpc, state);
13773
13943
  }
13774
13944
  };
13945
+ var REHYPE_NOT_CONFIGURED = {
13946
+ mode: "notConfigured",
13947
+ fees0: 0n,
13948
+ fees1: 0n
13949
+ };
13950
+ var REHYPE_UNSUPPORTED = {
13951
+ mode: "unsupported",
13952
+ fees0: 0n,
13953
+ fees1: 0n
13954
+ };
13955
+ async function getPendingFeeBreakdownForMulticurveTokens({
13956
+ client,
13957
+ beneficiary,
13958
+ tokenAddresses
13959
+ }) {
13960
+ if (tokenAddresses.length === 0) {
13961
+ return [];
13962
+ }
13963
+ const feeClient = client;
13964
+ const poolContexts = await discoverMulticurveFeePoolContexts(
13965
+ feeClient,
13966
+ tokenAddresses
13967
+ );
13968
+ const plans = poolContexts.map(
13969
+ (poolContext) => createPendingFeeBreakdownPreviewPlan(poolContext, beneficiary)
13970
+ );
13971
+ const calls = plans.flatMap(({ calls: planCalls }) => planCalls);
13972
+ const results = await callAggregate3(feeClient, calls);
13973
+ if (results.length !== calls.length) {
13974
+ throw new Error(
13975
+ "Multicall3 aggregate3 returned an incomplete pending fee breakdown result"
13976
+ );
13977
+ }
13978
+ let resultOffset = 0;
13979
+ return plans.map((plan) => {
13980
+ const planResults = results.slice(
13981
+ resultOffset,
13982
+ resultOffset + plan.calls.length
13983
+ );
13984
+ resultOffset += plan.calls.length;
13985
+ return decodePendingFeeBreakdownPreview(plan, planResults);
13986
+ });
13987
+ }
13988
+ function createPendingFeeBreakdownPreviewPlan(poolContext, beneficiary) {
13989
+ const poolId = computePoolId(poolContext.state.poolKey);
13990
+ const poolCalls = createPendingFeePreviewCalls(
13991
+ poolContext.initializerAddress,
13992
+ poolId,
13993
+ beneficiary
13994
+ );
13995
+ if (poolContext.initializerKind !== "dopplerHook" || poolContext.dopplerHookAddress === viem.zeroAddress) {
13996
+ return {
13997
+ kind: "poolOnly",
13998
+ poolContext,
13999
+ calls: poolCalls
14000
+ };
14001
+ }
14002
+ return {
14003
+ kind: "rehype",
14004
+ poolContext,
14005
+ poolId,
14006
+ calls: [
14007
+ ...poolCalls,
14008
+ createRehypeCapabilityProbe(poolContext.dopplerHookAddress, poolId),
14009
+ ...createPendingFeePreviewCalls(
14010
+ poolContext.dopplerHookAddress,
14011
+ poolId,
14012
+ beneficiary
14013
+ )
14014
+ ]
14015
+ };
14016
+ }
14017
+ function createRehypeCapabilityProbe(target, poolId) {
14018
+ return {
14019
+ target,
14020
+ allowFailure: true,
14021
+ callData: viem.encodeFunctionData({
14022
+ abi: feesManagerAbi,
14023
+ functionName: "getPoolKey",
14024
+ args: [poolId]
14025
+ })
14026
+ };
14027
+ }
14028
+ function decodePendingFeeBreakdownPreview(plan, results) {
14029
+ const poolInitializerFees = calculatePendingFees(
14030
+ results.slice(0, PENDING_FEE_PREVIEW_CALL_COUNT)
14031
+ );
14032
+ return {
14033
+ tokenAddress: plan.poolContext.state.asset,
14034
+ poolInitializerFees,
14035
+ rehypeFees: plan.kind === "poolOnly" ? REHYPE_NOT_CONFIGURED : decodeRehypePendingFees(plan, results)
14036
+ };
14037
+ }
14038
+ function decodeRehypePendingFees(plan, results) {
14039
+ const capabilityResult = results[PENDING_FEE_PREVIEW_CALL_COUNT];
14040
+ if (!capabilityResult?.success || !capabilityResult.returnData || capabilityResult.returnData === "0x") {
14041
+ return REHYPE_UNSUPPORTED;
14042
+ }
14043
+ const poolKey = parseMulticurvePoolKey(
14044
+ viem.decodeFunctionResult({
14045
+ abi: feesManagerAbi,
14046
+ functionName: "getPoolKey",
14047
+ data: capabilityResult.returnData
14048
+ })
14049
+ );
14050
+ if (poolKey.hooks === viem.zeroAddress) {
14051
+ return REHYPE_UNSUPPORTED;
14052
+ }
14053
+ if (computePoolId(poolKey) !== plan.poolId) {
14054
+ throw new Error(
14055
+ "Rehype FeesManager pool key does not match the discovered pool"
14056
+ );
14057
+ }
14058
+ return {
14059
+ mode: "feesManager",
14060
+ ...calculatePendingFees(
14061
+ results.slice(
14062
+ PENDING_FEE_PREVIEW_CALL_COUNT + 1,
14063
+ PENDING_FEE_PREVIEW_CALL_COUNT * 2 + 1
14064
+ )
14065
+ )
14066
+ };
14067
+ }
13775
14068
 
13776
14069
  // src/evm/entities/auction/MulticurveFees.ts
13777
14070
  var MulticurveFees = class {
@@ -13808,6 +14101,31 @@ var MulticurveFees = class {
13808
14101
  }
13809
14102
  return pendingFees;
13810
14103
  }
14104
+ async getPendingFeeBreakdown(beneficiary, tokenAddressesOrOptions, options) {
14105
+ const hasTokenAddressOverride = isTokenAddressList(tokenAddressesOrOptions);
14106
+ const tokenAddresses = hasTokenAddressOverride ? tokenAddressesOrOptions : this.tokenAddresses;
14107
+ const callOptions = hasTokenAddressOverride ? options : tokenAddressesOrOptions;
14108
+ const tokenBatchSize = getTokenBatchSize(
14109
+ callOptions?.tokenBatchSize ?? this.options.tokenBatchSize
14110
+ );
14111
+ if (!tokenBatchSize || tokenAddresses.length <= tokenBatchSize) {
14112
+ return getPendingFeeBreakdownForMulticurveTokens({
14113
+ client: this.client,
14114
+ beneficiary,
14115
+ tokenAddresses
14116
+ });
14117
+ }
14118
+ let pendingFees = [];
14119
+ for (let index = 0; index < tokenAddresses.length; index += tokenBatchSize) {
14120
+ const batchPendingFees = await getPendingFeeBreakdownForMulticurveTokens({
14121
+ client: this.client,
14122
+ beneficiary,
14123
+ tokenAddresses: tokenAddresses.slice(index, index + tokenBatchSize)
14124
+ });
14125
+ pendingFees = [...pendingFees, ...batchPendingFees];
14126
+ }
14127
+ return pendingFees;
14128
+ }
13811
14129
  };
13812
14130
  function isTokenAddressList(value) {
13813
14131
  return Array.isArray(value);
@@ -17755,6 +18073,163 @@ var DopplerERC20V1 = class _DopplerERC20V1 {
17755
18073
  );
17756
18074
  }
17757
18075
  };
18076
+
18077
+ // src/evm/entities/token/doppler404/DopplerDN404.ts
18078
+ var DopplerDN404 = class {
18079
+ publicClient;
18080
+ walletClient;
18081
+ address;
18082
+ get rpc() {
18083
+ return this.publicClient;
18084
+ }
18085
+ constructor(publicClient, walletClient, address) {
18086
+ this.publicClient = publicClient;
18087
+ this.walletClient = walletClient;
18088
+ this.address = address;
18089
+ }
18090
+ getAddress() {
18091
+ return this.address;
18092
+ }
18093
+ async getName() {
18094
+ return await this.rpc.readContract({
18095
+ address: this.address,
18096
+ abi: dopplerDN404Abi,
18097
+ functionName: "name"
18098
+ });
18099
+ }
18100
+ async getSymbol() {
18101
+ return await this.rpc.readContract({
18102
+ address: this.address,
18103
+ abi: dopplerDN404Abi,
18104
+ functionName: "symbol"
18105
+ });
18106
+ }
18107
+ async getDecimals() {
18108
+ return await this.rpc.readContract({
18109
+ address: this.address,
18110
+ abi: dopplerDN404Abi,
18111
+ functionName: "decimals"
18112
+ });
18113
+ }
18114
+ async getTotalSupply() {
18115
+ return await this.rpc.readContract({
18116
+ address: this.address,
18117
+ abi: dopplerDN404Abi,
18118
+ functionName: "totalSupply"
18119
+ });
18120
+ }
18121
+ async getBalanceOf(owner) {
18122
+ return await this.rpc.readContract({
18123
+ address: this.address,
18124
+ abi: dopplerDN404Abi,
18125
+ functionName: "balanceOf",
18126
+ args: [owner]
18127
+ });
18128
+ }
18129
+ async getAllowance(owner, spender) {
18130
+ return await this.rpc.readContract({
18131
+ address: this.address,
18132
+ abi: dopplerDN404Abi,
18133
+ functionName: "allowance",
18134
+ args: [owner, spender]
18135
+ });
18136
+ }
18137
+ async getUnit() {
18138
+ return await this.rpc.readContract({
18139
+ address: this.address,
18140
+ abi: dopplerDN404Abi,
18141
+ functionName: "unit"
18142
+ });
18143
+ }
18144
+ async getBaseURI() {
18145
+ return await this.rpc.readContract({
18146
+ address: this.address,
18147
+ abi: dopplerDN404Abi,
18148
+ functionName: "baseURI"
18149
+ });
18150
+ }
18151
+ async getMirrorERC721() {
18152
+ return await this.rpc.readContract({
18153
+ address: this.address,
18154
+ abi: dopplerDN404Abi,
18155
+ functionName: "mirrorERC721"
18156
+ });
18157
+ }
18158
+ async getTotalNFTSupply() {
18159
+ return await this.rpc.readContract({
18160
+ address: this.address,
18161
+ abi: dopplerDN404Abi,
18162
+ functionName: "totalNFTSupply"
18163
+ });
18164
+ }
18165
+ async getSkipNFT(owner) {
18166
+ return await this.rpc.readContract({
18167
+ address: this.address,
18168
+ abi: dopplerDN404Abi,
18169
+ functionName: "getSkipNFT",
18170
+ args: [owner]
18171
+ });
18172
+ }
18173
+ async getPool() {
18174
+ return await this.rpc.readContract({
18175
+ address: this.address,
18176
+ abi: dopplerDN404Abi,
18177
+ functionName: "pool"
18178
+ });
18179
+ }
18180
+ async getIsPoolUnlocked() {
18181
+ return await this.rpc.readContract({
18182
+ address: this.address,
18183
+ abi: dopplerDN404Abi,
18184
+ functionName: "isPoolUnlocked"
18185
+ });
18186
+ }
18187
+ async approve(spender, amount, options) {
18188
+ const walletClient = this.getWalletClient();
18189
+ const { request } = await this.rpc.simulateContract({
18190
+ address: this.address,
18191
+ abi: dopplerDN404Abi,
18192
+ functionName: "approve",
18193
+ args: [spender, amount],
18194
+ account: walletClient.account
18195
+ });
18196
+ return await walletClient.writeContract(
18197
+ options?.gas ? { ...request, gas: options.gas } : request
18198
+ );
18199
+ }
18200
+ async transfer(to, amount, options) {
18201
+ const walletClient = this.getWalletClient();
18202
+ const { request } = await this.rpc.simulateContract({
18203
+ address: this.address,
18204
+ abi: dopplerDN404Abi,
18205
+ functionName: "transfer",
18206
+ args: [to, amount],
18207
+ account: walletClient.account
18208
+ });
18209
+ return await walletClient.writeContract(
18210
+ options?.gas ? { ...request, gas: options.gas } : request
18211
+ );
18212
+ }
18213
+ async setSkipNFT(skipNFT, options) {
18214
+ const walletClient = this.getWalletClient();
18215
+ const { request } = await this.rpc.simulateContract({
18216
+ address: this.address,
18217
+ abi: dopplerDN404Abi,
18218
+ functionName: "setSkipNFT",
18219
+ args: [skipNFT],
18220
+ account: walletClient.account
18221
+ });
18222
+ return await walletClient.writeContract(
18223
+ options?.gas ? { ...request, gas: options.gas } : request
18224
+ );
18225
+ }
18226
+ getWalletClient() {
18227
+ if (!this.walletClient) {
18228
+ throw new Error("Wallet client required for write operations");
18229
+ }
18230
+ return this.walletClient;
18231
+ }
18232
+ };
17758
18233
  var Eth = class {
17759
18234
  publicClient;
17760
18235
  get rpc() {
@@ -18544,7 +19019,7 @@ var DynamicAuctionBuilder = class _DynamicAuctionBuilder {
18544
19019
  if (!this.auction) throw new Error("auction configuration is required");
18545
19020
  if (this.migration.type === "noOp") {
18546
19021
  throw new Error(
18547
- "noOp migration is not supported for dynamic auctions. Use uniswapV2, uniswapV4, or dopplerHook migration instead."
19022
+ "noOp migration is not supported for dynamic auctions. Use uniswapV2, uniswapV4, or dopplerHookMigrator migration instead."
18548
19023
  );
18549
19024
  }
18550
19025
  const governance = this.governance ?? (isNoOpEnabledChain(this.chainId) ? { type: "noOp" } : { type: "default" });
@@ -18595,6 +19070,7 @@ var MulticurveBuilder = class _MulticurveBuilder {
18595
19070
  migration;
18596
19071
  integrator;
18597
19072
  userAddress;
19073
+ salt;
18598
19074
  moduleAddresses;
18599
19075
  gasLimit;
18600
19076
  // Stored from withCurves() for graduationMarketCap conversion in build()
@@ -18904,7 +19380,7 @@ var MulticurveBuilder = class _MulticurveBuilder {
18904
19380
  }
18905
19381
  assertCanSetInitializer(nextType) {
18906
19382
  const currentType = this.initializer?.type;
18907
- if (currentType === void 0 || currentType === "standard" || currentType === nextType) {
19383
+ if (currentType === void 0 || currentType === nextType || currentType === "dopplerHookInitializer" && nextType === "rehype") {
18908
19384
  return;
18909
19385
  }
18910
19386
  throw new Error(
@@ -18921,7 +19397,7 @@ var MulticurveBuilder = class _MulticurveBuilder {
18921
19397
  withDecay(params) {
18922
19398
  if (!params) {
18923
19399
  if (this.initializer?.type === "decay") {
18924
- this.initializer = { type: "standard" };
19400
+ this.initializer = void 0;
18925
19401
  }
18926
19402
  return this;
18927
19403
  }
@@ -18959,7 +19435,7 @@ var MulticurveBuilder = class _MulticurveBuilder {
18959
19435
  withSchedule(params) {
18960
19436
  if (!params) {
18961
19437
  if (this.initializer?.type === "scheduled") {
18962
- this.initializer = { type: "standard" };
19438
+ this.initializer = void 0;
18963
19439
  }
18964
19440
  this.schedule = void 0;
18965
19441
  return this;
@@ -18989,6 +19465,10 @@ var MulticurveBuilder = class _MulticurveBuilder {
18989
19465
  this.integrator = address ?? ZERO_ADDRESS;
18990
19466
  return this;
18991
19467
  }
19468
+ withSalt(salt) {
19469
+ this.salt = salt;
19470
+ return this;
19471
+ }
18992
19472
  withGasLimit(gas) {
18993
19473
  this.gasLimit = gas;
18994
19474
  return this;
@@ -19007,6 +19487,8 @@ var MulticurveBuilder = class _MulticurveBuilder {
19007
19487
  return this.overrideModule("airlock", address);
19008
19488
  }
19009
19489
  withV4MulticurveInitializer(address) {
19490
+ this.assertCanSetInitializer("standard");
19491
+ this.initializer = { type: "standard" };
19010
19492
  return this.overrideModule("v4MulticurveInitializer", address);
19011
19493
  }
19012
19494
  withV4ScheduledMulticurveInitializer(address) {
@@ -19034,6 +19516,10 @@ var MulticurveBuilder = class _MulticurveBuilder {
19034
19516
  return this.overrideModule("noOpMigrator", address);
19035
19517
  }
19036
19518
  withDopplerHookInitializer(address) {
19519
+ if (this.initializer?.type !== "rehype") {
19520
+ this.assertCanSetInitializer("dopplerHookInitializer");
19521
+ this.initializer = { type: "dopplerHookInitializer" };
19522
+ }
19037
19523
  return this.overrideModule("dopplerHookInitializer", address);
19038
19524
  }
19039
19525
  build() {
@@ -19156,7 +19642,7 @@ var MulticurveBuilder = class _MulticurveBuilder {
19156
19642
  }
19157
19643
  dopplerHook = { ...dopplerHook, farTick };
19158
19644
  }
19159
- const initializer = this.initializer?.type === "rehype" && dopplerHook ? { type: "rehype", config: dopplerHook } : this.initializer ?? (dopplerHook ? { type: "rehype", config: dopplerHook } : this.schedule ? { type: "scheduled", startTime: this.schedule.startTime } : { type: "standard" });
19645
+ const initializer = this.initializer?.type === "rehype" && dopplerHook ? { type: "rehype", config: dopplerHook } : this.initializer ?? (dopplerHook ? { type: "rehype", config: dopplerHook } : this.schedule ? { type: "scheduled", startTime: this.schedule.startTime } : { type: "dopplerHookInitializer" });
19160
19646
  if (initializer.type === "scheduled" && dopplerHook) {
19161
19647
  throw new Error(
19162
19648
  "Cannot combine scheduled multicurve with rehype initializer. Use exactly one initializer mode."
@@ -19201,6 +19687,7 @@ var MulticurveBuilder = class _MulticurveBuilder {
19201
19687
  migration: this.migration,
19202
19688
  integrator: this.integrator ?? ZERO_ADDRESS,
19203
19689
  userAddress: this.userAddress,
19690
+ salt: this.salt,
19204
19691
  modules: this.moduleAddresses,
19205
19692
  gas: this.gasLimit
19206
19693
  };
@@ -19775,6 +20262,13 @@ var DopplerSDK = class {
19775
20262
  tokenAddress
19776
20263
  );
19777
20264
  }
20265
+ /**
20266
+ * Get a Doppler DN404 token instance for hybrid ERC-20/ERC-721 interaction.
20267
+ * @param tokenAddress The address of the Doppler DN404 token
20268
+ */
20269
+ getDopplerDN404(tokenAddress) {
20270
+ return new DopplerDN404(this.publicClient, this.walletClient, tokenAddress);
20271
+ }
19778
20272
  /**
19779
20273
  * Get information about a static auction pool
19780
20274
  * @param poolAddress The address of the pool
@@ -19899,6 +20393,8 @@ exports.DYNAMIC_FEE_FLAG = DYNAMIC_FEE_FLAG;
19899
20393
  exports.Derc20 = Derc20;
19900
20394
  exports.Derc20V2 = Derc20V2;
19901
20395
  exports.DopplerBytecode = doppler_default;
20396
+ exports.DopplerDN404 = DopplerDN404;
20397
+ exports.DopplerDN404BaseSepoliaBytecode = dopplerDN404BaseSepolia_default;
19902
20398
  exports.DopplerDN404Bytecode = dopplerDN404_default;
19903
20399
  exports.DopplerERC20V1 = DopplerERC20V1;
19904
20400
  exports.DopplerFactory = DopplerFactory;
@@ -19973,6 +20469,7 @@ exports.decayMulticurveInitializerHookAbi = decayMulticurveInitializerHookAbi;
19973
20469
  exports.decodeBalanceDelta = decodeBalanceDelta;
19974
20470
  exports.derc20Abi = derc20Abi;
19975
20471
  exports.derc20V2Abi = derc20V2Abi;
20472
+ exports.dopplerDN404Abi = dopplerDN404Abi;
19976
20473
  exports.dopplerERC20V1Abi = dopplerERC20V1Abi;
19977
20474
  exports.dopplerHookAbi = dopplerHookAbi;
19978
20475
  exports.dopplerHookInitializerAbi = dopplerHookInitializerAbi;