clanker-sdk 4.1.2 → 4.1.3

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.
package/README.md CHANGED
@@ -85,8 +85,8 @@ async function deployToken() {
85
85
  metadata: {
86
86
  description: "Token with custom configuration including vesting and rewards",
87
87
  socialMediaUrls: [
88
- "https://twitter.com/mytoken",
89
- "https://t.me/mytoken",
88
+ { platform: "x", url: "https://twitter.com/mytoken" },
89
+ { platform: "telegram", url: "https://t.me/mytoken" },
90
90
  ],
91
91
  auditUrls: ["https://example.com/audit"],
92
92
  },
@@ -15,7 +15,10 @@ declare const clankerTokenV4: z.ZodObject<{
15
15
  /** Metadata for the token. */
16
16
  metadata: z.ZodOptional<z.ZodObject<{
17
17
  description: z.ZodOptional<z.ZodString>;
18
- socialMediaUrls: z.ZodOptional<z.ZodArray<z.ZodURL>>;
18
+ socialMediaUrls: z.ZodOptional<z.ZodArray<z.ZodObject<{
19
+ platform: z.ZodString;
20
+ url: z.ZodString;
21
+ }, z.core.$strip>>>;
19
22
  auditUrls: z.ZodOptional<z.ZodArray<z.ZodURL>>;
20
23
  }, z.core.$strict>>;
21
24
  /** Social provenance for the token. Interface defaults to "SDK" if not set. */
@@ -27,7 +30,7 @@ declare const clankerTokenV4: z.ZodObject<{
27
30
  }, z.core.$strict>>;
28
31
  /** Pool information */
29
32
  pool: z.ZodPrefault<z.ZodObject<{
30
- pairedToken: z.ZodDefault<z.ZodCustom<`0x${string}`, `0x${string}`>>;
33
+ pairedToken: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<"WETH">, z.ZodCustom<`0x${string}`, `0x${string}`>]>>;
31
34
  tickIfToken0IsClanker: z.ZodDefault<z.ZodNumber>;
32
35
  tickSpacing: z.ZodDefault<z.ZodNumber>;
33
36
  positions: z.ZodArray<z.ZodObject<{
@@ -38,7 +41,7 @@ declare const clankerTokenV4: z.ZodObject<{
38
41
  }, z.core.$strip>>;
39
42
  /** Token locker */
40
43
  locker: z.ZodPrefault<z.ZodObject<{
41
- locker: z.ZodLiteral<`0x${string}`>;
44
+ locker: z.ZodUnion<readonly [z.ZodLiteral<"Locker">, z.ZodCustom<`0x${string}`, `0x${string}`>]>;
42
45
  lockerData: z.ZodDefault<z.ZodCustom<`0x${string}`, `0x${string}`>>;
43
46
  }, z.core.$strip>>;
44
47
  /** Token vault. Tokens are locked for some duration with possible vesting. */
package/dist/cli/cli.js CHANGED
@@ -720,14 +720,11 @@ var init_Clanker = __esm({
720
720
  });
721
721
 
722
722
  // src/constants.ts
723
- import { base, baseSepolia } from "viem/chains";
724
- var CLANKER_FACTORY_V3_1, WETH_ADDRESS, DEGEN_ADDRESS, NATIVE_ADDRESS, CLANKER_ADDRESS, ANON_ADDRESS, HIGHER_ADDRESS, CB_BTC_ADDRESS, A0X_ADDRESS, SUPPORTED_CHAINS, DEFAULT_SUPPLY;
723
+ var DEGEN_ADDRESS, NATIVE_ADDRESS, CLANKER_ADDRESS, ANON_ADDRESS, HIGHER_ADDRESS, CB_BTC_ADDRESS, A0X_ADDRESS, WETH_ADDRESSES, DEFAULT_SUPPLY;
725
724
  var init_constants = __esm({
726
725
  "src/constants.ts"() {
727
726
  "use strict";
728
727
  init_esm_shims();
729
- CLANKER_FACTORY_V3_1 = "0x2A787b2362021cC3eEa3C24C4748a6cD5B687382";
730
- WETH_ADDRESS = "0x4200000000000000000000000000000000000006";
731
728
  DEGEN_ADDRESS = "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed";
732
729
  NATIVE_ADDRESS = "0x20DD04c17AFD5c9a8b3f2cdacaa8Ee7907385BEF";
733
730
  CLANKER_ADDRESS = "0x1bc0c42215582d5A085795f4baDbaC3ff36d1Bcb";
@@ -735,7 +732,10 @@ var init_constants = __esm({
735
732
  HIGHER_ADDRESS = "0x0578d8A44db98B23BF096A382e016e29a5Ce0ffe";
736
733
  CB_BTC_ADDRESS = "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf";
737
734
  A0X_ADDRESS = "0x820C5F0fB255a1D18fd0eBB0F1CCefbC4D546dA7";
738
- SUPPORTED_CHAINS = [base.id, baseSepolia.id];
735
+ WETH_ADDRESSES = {
736
+ 8453: "0x4200000000000000000000000000000000000006",
737
+ 84532: "0x4200000000000000000000000000000000000006"
738
+ };
739
739
  DEFAULT_SUPPLY = 100000000000000000000000000000n;
740
740
  }
741
741
  });
@@ -3715,7 +3715,7 @@ var init_Clanker6 = __esm({
3715
3715
  });
3716
3716
 
3717
3717
  // src/utils/clankers.ts
3718
- import { base as base2, baseSepolia as baseSepolia2 } from "viem/chains";
3718
+ import { base, baseSepolia } from "viem/chains";
3719
3719
  var CLANKERS, Chains, ClankerDeployments;
3720
3720
  var init_clankers = __esm({
3721
3721
  "src/utils/clankers.ts"() {
@@ -3730,21 +3730,21 @@ var init_clankers = __esm({
3730
3730
  CLANKERS = {
3731
3731
  clanker_v0: {
3732
3732
  abi: Clanker_v0_abi,
3733
- chainId: base2.id,
3733
+ chainId: base.id,
3734
3734
  type: "proxy",
3735
3735
  address: "0x250c9FB2b411B48273f69879007803790A6AeA47",
3736
3736
  related: void 0
3737
3737
  },
3738
3738
  clanker_v1: {
3739
3739
  abi: Clanker_v1_abi,
3740
- chainId: base2.id,
3740
+ chainId: base.id,
3741
3741
  type: "clanker",
3742
3742
  address: "0x9B84fcE5Dcd9a38d2D01d5D72373F6b6b067c3e1",
3743
3743
  related: void 0
3744
3744
  },
3745
3745
  clanker_v2: {
3746
3746
  abi: Clanker_v2_abi,
3747
- chainId: base2.id,
3747
+ chainId: base.id,
3748
3748
  type: "clanker_v2",
3749
3749
  address: "0x732560fa1d1A76350b1A500155BA978031B53833",
3750
3750
  related: {
@@ -3753,7 +3753,7 @@ var init_clankers = __esm({
3753
3753
  },
3754
3754
  clanker_v3: {
3755
3755
  abi: Clanker_v3_abi,
3756
- chainId: base2.id,
3756
+ chainId: base.id,
3757
3757
  type: "clanker_v3",
3758
3758
  address: "0x375C15db32D28cEcdcAB5C03Ab889bf15cbD2c5E",
3759
3759
  related: {
@@ -3762,7 +3762,7 @@ var init_clankers = __esm({
3762
3762
  },
3763
3763
  clanker_v3_1: {
3764
3764
  abi: Clanker_v3_1_abi,
3765
- chainId: base2.id,
3765
+ chainId: base.id,
3766
3766
  type: "clanker_v3_1",
3767
3767
  address: "0x2A787b2362021cC3eEa3C24C4748a6cD5B687382",
3768
3768
  related: {
@@ -3772,7 +3772,7 @@ var init_clankers = __esm({
3772
3772
  },
3773
3773
  clanker_v4: {
3774
3774
  abi: Clanker_v4_abi,
3775
- chainId: base2.id,
3775
+ chainId: base.id,
3776
3776
  type: "clanker_v4",
3777
3777
  address: "0xE85A59c628F7d27878ACeB4bf3b35733630083a9",
3778
3778
  related: {
@@ -3780,7 +3780,7 @@ var init_clankers = __esm({
3780
3780
  vault: "0x8E845EAd15737bF71904A30BdDD3aEE76d6ADF6C",
3781
3781
  airdrop: "0x56Fa0Da89eD94822e46734e736d34Cab72dF344F",
3782
3782
  devbuy: "0x1331f0788F9c08C8F38D52c7a1152250A9dE00be",
3783
- mevModule: "0xE143f9872A33c955F23cF442BB4B1EFB3A7402A2",
3783
+ mevModule: "0xFdc013ce003980889cFfd66b0c8329545ae1d1E8",
3784
3784
  feeLocker: "0xF3622742b1E446D92e45E22923Ef11C2fcD55D68",
3785
3785
  feeStaticHook: "0xDd5EeaFf7BD481AD55Db083062b13a3cdf0A68CC",
3786
3786
  feeDynamicHook: "0x34a45c6B61876d739400Bd71228CbcbD4F53E8cC"
@@ -3788,7 +3788,7 @@ var init_clankers = __esm({
3788
3788
  },
3789
3789
  clanker_v4_sepolia: {
3790
3790
  abi: Clanker_v4_abi,
3791
- chainId: baseSepolia2.id,
3791
+ chainId: baseSepolia.id,
3792
3792
  type: "clanker_v4",
3793
3793
  address: "0xE85A59c628F7d27878ACeB4bf3b35733630083a9",
3794
3794
  related: {
@@ -3796,9 +3796,9 @@ var init_clankers = __esm({
3796
3796
  vault: "0xcC80d1226F899a78fC2E459a1500A13C373CE0A5",
3797
3797
  airdrop: "0x29d17C1A8D851d7d4cA97FAe97AcAdb398D9cCE0",
3798
3798
  devbuy: "0x691f97752E91feAcD7933F32a1FEdCeDae7bB59c",
3799
- mevModule: "0x71DB365E93e170ba3B053339A917c11024e7a9d4",
3799
+ mevModule: "0x261fE99C4D0D41EE8d0e594D11aec740E8354ab0",
3800
3800
  feeLocker: "0x42A95190B4088C88Dd904d930c79deC1158bF09D",
3801
- feeStaticHook: "0x3eC2a26b6eF16c288561692AE8D9681fa773A8cc",
3801
+ feeStaticHook: "0xDFcCcfBeef7F3Fc8b16027Ce6feACb48024068cC",
3802
3802
  feeDynamicHook: "0xE63b0A59100698f379F9B577441A561bAF9828cc"
3803
3803
  }
3804
3804
  }
@@ -3854,7 +3854,7 @@ var init_zod_onchain = __esm({
3854
3854
  /** Description of the token or token project. */
3855
3855
  description: z.string().optional(),
3856
3856
  /** Socials for the token. These may be displayed on aggregators. */
3857
- socialMediaUrls: z.array(z.url()).optional(),
3857
+ socialMediaUrls: z.array(z.object({ platform: z.string(), url: z.string() })).optional(),
3858
3858
  /** Audits for other contracts or services offered by the project. */
3859
3859
  auditUrls: z.array(z.url()).optional()
3860
3860
  });
@@ -3883,6 +3883,7 @@ var init_zod_onchain = __esm({
3883
3883
 
3884
3884
  // src/config/clankerTokenV3.ts
3885
3885
  import { isAddress as isAddress2, stringify } from "viem";
3886
+ import { base as base2 } from "viem/chains";
3886
3887
  import * as z2 from "zod/v4";
3887
3888
  function getRelativeUnixTimestamp(unixTimestamp) {
3888
3889
  let vestingDuration = BigInt(0);
@@ -3906,6 +3907,7 @@ var init_clankerTokenV3 = __esm({
3906
3907
  init_Clanker();
3907
3908
  init_constants();
3908
3909
  init_vanityAddress();
3910
+ init_clankers();
3909
3911
  init_zod_onchain();
3910
3912
  clankerTokenV3 = z2.strictObject({
3911
3913
  /** Name of the token. Example: "My Token". */
@@ -4006,7 +4008,7 @@ var init_clankerTokenV3 = __esm({
4006
4008
  const vestingDuration = cfg.vault.durationInDays ? getRelativeUnixTimestamp(vestingUnlockDate) : 0n;
4007
4009
  return {
4008
4010
  abi: Clanker_v3_1_abi,
4009
- address: CLANKER_FACTORY_V3_1,
4011
+ address: CLANKERS.clanker_v3_1.address,
4010
4012
  functionName: "deployToken",
4011
4013
  args: [
4012
4014
  {
@@ -4047,7 +4049,7 @@ var init_clankerTokenV3 = __esm({
4047
4049
  };
4048
4050
  };
4049
4051
  getTokenPairByAddress = (address) => {
4050
- if (address === WETH_ADDRESS) {
4052
+ if (address === WETH_ADDRESSES[base2.id]) {
4051
4053
  return "WETH";
4052
4054
  }
4053
4055
  if (address === DEGEN_ADDRESS) {
@@ -4075,7 +4077,7 @@ var init_clankerTokenV3 = __esm({
4075
4077
  };
4076
4078
  getDesiredPriceAndPairAddress = (pair, marketCap = 10) => {
4077
4079
  let desiredPrice = 1e-10;
4078
- let pairAddress = WETH_ADDRESS;
4080
+ let pairAddress = WETH_ADDRESSES[base2.id];
4079
4081
  if (pair === "WETH") {
4080
4082
  desiredPrice = marketCap * 1e-11;
4081
4083
  }
@@ -4323,8 +4325,8 @@ var init_v3 = __esm({
4323
4325
  init_esm_shims();
4324
4326
  init_Clanker();
4325
4327
  init_clankerTokenV3();
4326
- init_constants();
4327
4328
  init_deploy();
4329
+ init_clankers();
4328
4330
  init_write_clanker_contracts();
4329
4331
  Clanker = class {
4330
4332
  wallet;
@@ -4341,7 +4343,7 @@ var init_v3 = __esm({
4341
4343
  */
4342
4344
  async getClaimRewardsTransaction(token) {
4343
4345
  return {
4344
- address: CLANKER_FACTORY_V3_1,
4346
+ address: CLANKERS.clanker_v3_1.address,
4345
4347
  abi: Clanker_v3_1_abi,
4346
4348
  functionName: "claimRewards",
4347
4349
  args: [token]
@@ -4766,10 +4768,14 @@ RPC_URL=your_custom_rpc_url (if not provided, will use default Base RPC)
4766
4768
  const vaultPercentage = answers.vaultConfig.vaultPercentage === "CUSTOM" ? parseInt(answers.customVaultPercentage || "0", 10) : parseInt(answers.vaultConfig.vaultPercentage, 10);
4767
4769
  const vaultDuration = answers.vaultConfig.durationInDays === "CUSTOM" ? parseInt(answers.customVaultDuration || "31", 10) : parseInt(answers.vaultConfig.durationInDays, 10);
4768
4770
  const socialMediaUrls = [];
4769
- if (answers.metadata.telegram) socialMediaUrls.push(answers.metadata.telegram);
4770
- if (answers.metadata.website) socialMediaUrls.push(answers.metadata.website);
4771
- if (answers.metadata.twitter) socialMediaUrls.push(answers.metadata.twitter);
4772
- if (answers.metadata.farcaster) socialMediaUrls.push(answers.metadata.farcaster);
4771
+ if (answers.metadata.telegram)
4772
+ socialMediaUrls.push({ platform: "telegram", url: answers.metadata.telegram });
4773
+ if (answers.metadata.website)
4774
+ socialMediaUrls.push({ platform: "website", url: answers.metadata.website });
4775
+ if (answers.metadata.twitter)
4776
+ socialMediaUrls.push({ platform: "twitter", url: answers.metadata.twitter });
4777
+ if (answers.metadata.farcaster)
4778
+ socialMediaUrls.push({ platform: "farcaster", url: answers.metadata.farcaster });
4773
4779
  const metadata = {
4774
4780
  description: answers.metadata.description,
4775
4781
  socialMediaUrls,
@@ -4808,7 +4814,7 @@ RPC_URL=your_custom_rpc_url (if not provided, will use default Base RPC)
4808
4814
  publicClient
4809
4815
  });
4810
4816
  console.log("\n\u{1F504} Preparing deployment configuration...");
4811
- const quoteToken = answers.pairedTokenChoice === "WETH" ? WETH_ADDRESS2 : answers.pairedTokenChoice === "USDC" ? USDC_ADDRESS : answers.customPairedToken;
4817
+ const quoteToken = answers.pairedTokenChoice === "WETH" ? WETH_ADDRESS : answers.pairedTokenChoice === "USDC" ? USDC_ADDRESS : answers.customPairedToken;
4812
4818
  const token = {
4813
4819
  name: answers.name,
4814
4820
  symbol: answers.symbol,
@@ -4916,7 +4922,7 @@ RPC_URL=your_custom_rpc_url (if not provided, will use default Base RPC)
4916
4922
  }
4917
4923
  await main2();
4918
4924
  }
4919
- var ASCII_ART, WETH_ADDRESS2, USDC_ADDRESS, create_clanker_default;
4925
+ var ASCII_ART, WETH_ADDRESS, USDC_ADDRESS, create_clanker_default;
4920
4926
  var init_create_clanker = __esm({
4921
4927
  "src/cli/create-clanker.ts"() {
4922
4928
  "use strict";
@@ -4924,7 +4930,7 @@ var init_create_clanker = __esm({
4924
4930
  init_v3();
4925
4931
  dotenv.config();
4926
4932
  ASCII_ART = fs.readFileSync(path2.join(__dirname, "ascii.txt"), "utf8");
4927
- WETH_ADDRESS2 = "0x4200000000000000000000000000000000000006";
4933
+ WETH_ADDRESS = "0x4200000000000000000000000000000000000006";
4928
4934
  USDC_ADDRESS = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
4929
4935
  create_clanker_default = createClanker;
4930
4936
  if (process.argv[1] === fileURLToPath2(import.meta.url)) {
@@ -709,12 +709,10 @@ var Clanker_v3_1_abi = [
709
709
 
710
710
  // src/config/clankerTokenV3.ts
711
711
  import { isAddress as isAddress2, stringify } from "viem";
712
+ import { base as base2 } from "viem/chains";
712
713
  import * as z2 from "zod/v4";
713
714
 
714
715
  // src/constants.ts
715
- import { base, baseSepolia } from "viem/chains";
716
- var CLANKER_FACTORY_V3_1 = "0x2A787b2362021cC3eEa3C24C4748a6cD5B687382";
717
- var WETH_ADDRESS = "0x4200000000000000000000000000000000000006";
718
716
  var DEGEN_ADDRESS = "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed";
719
717
  var NATIVE_ADDRESS = "0x20DD04c17AFD5c9a8b3f2cdacaa8Ee7907385BEF";
720
718
  var CLANKER_ADDRESS = "0x1bc0c42215582d5A085795f4baDbaC3ff36d1Bcb";
@@ -722,7 +720,10 @@ var ANON_ADDRESS = "0x0Db510e79909666d6dEc7f5e49370838c16D950f";
722
720
  var HIGHER_ADDRESS = "0x0578d8A44db98B23BF096A382e016e29a5Ce0ffe";
723
721
  var CB_BTC_ADDRESS = "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf";
724
722
  var A0X_ADDRESS = "0x820C5F0fB255a1D18fd0eBB0F1CCefbC4D546dA7";
725
- var SUPPORTED_CHAINS = [base.id, baseSepolia.id];
723
+ var WETH_ADDRESSES = {
724
+ 8453: "0x4200000000000000000000000000000000000006",
725
+ 84532: "0x4200000000000000000000000000000000000006"
726
+ };
726
727
  var DEFAULT_SUPPLY = 100000000000000000000000000000n;
727
728
 
728
729
  // src/services/vanityAddress.ts
@@ -1939,7 +1940,7 @@ var ClankerToken_v3_1_monad_abi = [
1939
1940
  var ClankerToken_v3_1_monad_bytecode = "0x61016060405234610141576140a2803803809161001b82610159565b610160396101008161016001911261014157610160516001600160401b038111610141578161004d91610160016101b9565b610180516001600160401b038111610141578261006d91610160016101b9565b6101a05161007c6101c061020e565b6101e0516001600160401b038111610141578561009c91610160016101b9565b610200519091906001600160401b03811161014157866100bf91610160016101b9565b610220519093906001600160401b038111610141576100f0976100e591610160016101b9565b946102405196610669565b604051612ffa908161106882396080518161210a015260a051816121c7015260c051816120db015260e051816121590152610100518161217f01526101205181610bf701526101405181610c200152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b610160601f91909101601f19168101906001600160401b0382119082101761018057604052565b610145565b601f909101601f19168101906001600160401b0382119082101761018057604052565b604051906101b7604083610185565b565b81601f82011215610141578051906001600160401b03821161018057604051926101ed601f8401601f191660200185610185565b8284526020838301011161014157815f9260208093018386015e8301015290565b51906001600160a01b038216820361014157565b90600182811c92168015610250575b602083101461023c57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610231565b601f8111610266575050565b60035f5260205f20906020601f840160051c830193106102a0575b601f0160051c01905b818110610295575050565b5f815560010161028a565b9091508190610281565b601f82116102b757505050565b5f5260205f20906020601f840160051c830193106102ef575b601f0160051c01905b8181106102e4575050565b5f81556001016102d9565b90915081906102d0565b80519091906001600160401b038111610180576103228161031b600454610222565b60046102aa565b602092601f821160011461036257610352929382915f92610357575b50508160011b915f199060031b1c19161790565b600455565b015190505f8061033e565b60045f52601f198216937f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f5b8681106103c657508360019596106103ae575b505050811b01600455565b01515f1960f88460031b161c191690555f80806103a3565b91926020600181928685015181550194019201610390565b80519091906001600160401b0381116101805761040781610400600e54610222565b600e6102aa565b602092601f821160011461043b57610436929382915f926103575750508160011b915f199060031b1c19161790565b600e55565b600e5f52601f198216937fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd915f5b86811061049f5750836001959610610487575b505050811b01600e55565b01515f1960f88460031b161c191690555f808061047c565b91926020600181928685015181550194019201610469565b80519091906001600160401b038111610180576104e0816104d9600c54610222565b600c6102aa565b602092601f82116001146105145761050f929382915f926103575750508160011b915f199060031b1c19161790565b600c55565b600c5f52601f198216937fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7915f5b8681106105785750836001959610610560575b505050811b01600c55565b01515f1960f88460031b161c191690555f8080610555565b91926020600181928685015181550194019201610542565b80519091906001600160401b038111610180576105b9816105b2600d54610222565b600d6102aa565b602092601f82116001146105ed576105e8929382915f926103575750508160011b915f199060031b1c19161790565b600d55565b600d5f52601f198216937fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5915f5b8681106106515750836001959610610639575b505050811b01600d55565b01515f1960f88460031b161c191690555f808061062e565b9192602060018192868501518155019401920161061b565b969594939291966040519061067f604083610185565b60018252603160f81b6020830190815281519093906001600160401b038111610180576106b6816106b1600354610222565b61025a565b6020601f821160011461078f5793610762936107026107719b9a98946106fa856107679a9661076c9d9a5f91610784575b508160011b915f199060031b1c19161790565b6003556102f9565b61070b816108d2565b61012052610718826109c7565b610140526020815191012060e052519020610100524660a052610739610ab9565b6080523060c052600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6103de565b6104b7565b610590565b461461077a5750565b6101b79033610826565b90508501515f6106e7565b60035f52601f198216907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f5b81811061080e57506107719b9a989460018561076c9c999561076299956107679c9861070296106107f6575b5050811b016003556102f9565b8601515f1960f88460031b161c191690555f806107e9565b9192602060018192868a0151815501940192016107bd565b91906001600160a01b03831680156108bf576002548281018091116108ba576002555f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a3600254926001600160d01b038085116108a357506101b7929350610b96565b630e58ae9360e11b5f52600485905260245260445ffd5b610b82565b63ec442f0560e01b5f525f60045260245ffd5b908151602081105f146108ed5750906108ea90610b17565b90565b6001600160401b038111610180576109118161090a600554610222565b60056102aa565b602092601f821160011461094857610940929382915f926103575750508160011b915f199060031b1c19161790565b60055560ff90565b60055f52601f198216937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b8681106109af5750836001959610610997575b505050811b0160055560ff90565b01515f1960f88460031b161c191690555f8080610989565b91926020600181928685015181550194019201610976565b908151602081105f146109df5750906108ea90610b17565b6001600160401b03811161018057610a03816109fc600654610222565b60066102aa565b602092601f8211600114610a3a57610a32929382915f926103575750508160011b915f199060031b1c19161790565b60065560ff90565b60065f52601f198216937ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915f5b868110610aa15750836001959610610a89575b505050811b0160065560ff90565b01515f1960f88460031b161c191690555f8080610a7b565b91926020600181928685015181550194019201610a68565b60e051610100516040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152610b1160c082610185565b51902090565b601f815111610b42576020815191015160208210610b33571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b634e487b7160e01b5f52601160045260245ffd5b90610ba081610c95565b9165ffffffffffff4311610c7d57600a5480610c475750610bda610bca6101b7945f5b600161100b565b65ffffffffffff4316600a610f35565b50506001600160a01b03168015610c2f575b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7545f9182526040909120546001600160a01b039081169116610dc4565b610c40610c3b83610c95565b610cc6565b5050610bec565b92835f198101116108ba57600a5f525f5160206140625f395f51905f52909301546101b793610bda91610bca919060301c610bc3565b6306dfcc6560e41b5f5260306004524360245260445ffd5b6001600160d01b038111610caf576001600160d01b031690565b6306dfcc6560e41b5f5260d060045260245260445ffd5b65ffffffffffff4311610c7d57600a5480610cf05750610bca610cec915f5b600261100b565b9091565b805f198101116108ba57600a5f525f5160206140625f395f51905f520154610cec91610bca9160301c610ce5565b65ffffffffffff4311610c7d57805480610d525750610d42610cec925f600261100b565b9065ffffffffffff431690610f35565b805f198101116108ba575f82815260209020015f190154610cec92610d429160301c610ce5565b65ffffffffffff4311610c7d57805480610d9d5750610d42610cec925f600161100b565b805f198101116108ba575f82815260209020015f190154610cec92610d429160301c610bc3565b6001600160a01b03808316939291908116908185141580610eb7575b610dec575b5050505050565b81610e5d575b505082610e01575b8080610de5565b6001600160a01b03165f9081526009602052604090205f5160206140825f395f51905f5291610e3a91610e349091610c95565b90610d79565b604080516001600160d01b039384168152919092166020820152a25f8080610dfa565b6001600160a01b03165f9081526009602052604090205f5160206140825f395f51905f5290610e9590610e8f86610c95565b90610d1e565b604080516001600160d01b039384168152919092166020820152a25f80610df2565b50831515610de0565b5f198101919082116108ba57565b908154680100000000000000008110156101805760018101808455811015610f21575f9283526020928390208251929093015160301b65ffffffffffff191665ffffffffffff9290921691909117910155565b634e487b7160e01b5f52603260045260245ffd5b80549293928015610fe157610f4c610f5791610ec0565b825f5260205f200190565b8054603081901c9365ffffffffffff91821692918116808411610fd257879303610f9e5750610f9a92509065ffffffffffff82549181199060301b169116179055565b9190565b915050610f9a91610fbe610fb06101a8565b65ffffffffffff9093168352565b6001600160d01b0386166020830152610ece565b632520601d60e01b5f5260045ffd5b509061100691610ff2610fb06101a8565b6001600160d01b0385166020830152610ece565b5f9190565b9190918060011461104d5760021461103157634e487b7160e01b5f52605160045260245ffd5b6001600160d01b03908116918116919091039081116108ba5790565b506001600160d01b03918216908216019081116108ba579056fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a71461025457806306fdde031461024f578063095ea7b31461024a57806318160ddd1461024557806318bf50771461024057806323b872dd1461023b5780632b8c49e314610236578063313ce567146102315780633644e5151461022c578063392f37e9146102275780633a46b1a81461022257806342966c681461021d5780634bf5d7e914610218578063587cde1e146102135780635c19a95c1461020e5780636fcfff451461020957806370a082311461020457806379cc6790146101ff5780637ecebe00146101fa57806380007e83146101f557806384b0196e146101f05780638e539e8c146101eb578063918b5be1146101e657806391ddadf4146101e157806395d89b41146101dc5780639ab24eb0146101d7578063a9059cbb146101d2578063aba83150146101cd578063c3cda520146101c8578063d0496d6a146101c3578063d505accf146101be578063dd62ed3e146101b9578063eb3d68e7146101b4578063f1127ed8146101af578063f851a440146101aa5763fc735e99146101a5575f80fd5b6119de565b6119ab565b6118d5565b611761565b6116ee565b611553565b6114ae565b611340565b61127b565b611255565b6111ed565b611148565b61111d565b610f70565b610d16565b610bdf565b610bbd565b610b78565b610b48565b610b06565b610a7e565b610a5c565b610a01565b610958565b610939565b610871565b6107cc565b6107aa565b61078f565b610709565b6106d1565b61051d565b610500565b6104cf565b610391565b34610336576020600319360112610336576004357fffffffff000000000000000000000000000000000000000000000000000000008116809103610336577f3333199400000000000000000000000000000000000000000000000000000000811490811561030c575b81156102e2575b81156102d9575b506040519015158152602090f35b9050155f6102cb565b7f01ffc9a700000000000000000000000000000000000000000000000000000000811491506102c4565b7f36372b0700000000000000000000000000000000000000000000000000000000811491506102bd565b5f80fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602061038e92818152019061033a565b90565b34610336575f600319360112610336576040515f6003546103b181611abd565b808452906001811690811561044757506001146103e9575b6103e5836103d981850382610e88565b6040519182918261037d565b0390f35b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b80821061042d575090915081016020016103d96103c9565b919260018160209254838588010152019101909291610415565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506103d990506103c9565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361033657565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361033657565b34610336576040600319360112610336576104f56104eb610489565b6024359033612418565b602060405160018152f35b34610336575f600319360112610336576020600254604051908152f35b3461033657604060031936011261033657610536610489565b6024359073420000000000000000000000000000000000002833036106a95773ffffffffffffffffffffffffffffffffffffffff811690811561067d5761058761058284600254612251565b600255565b6105ae8173ffffffffffffffffffffffffffffffffffffffff165f525f60205260405f2090565b838154019055815f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef604051806105ea88829190602083019252565b0390a360025479ffffffffffffffffffffffffffffffffffffffffffffffffffff9081811161064f5750508261061f91612ccc565b60405191825233917fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea0490602090a3005b7f1cb15d26000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610336576060600319360112610336576104f56106ed610489565b6106f56104ac565b60443591610704833383611c66565b611dcb565b3461033657604060031936011261033657610722610489565b60243573420000000000000000000000000000000000002833036106a95761074a8183611f3e565b6040519081527fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd4602073ffffffffffffffffffffffffffffffffffffffff33941692a3005b34610336575f60031936011261033657602060405160128152f35b34610336575f6003193601126103365760206107c46120c4565b604051908152f35b34610336575f600319360112610336576040515f600c546107ec81611abd565b80845290600181169081156104475750600114610813576103e5836103d981850382610e88565b600c5f9081527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7939250905b808210610857575090915081016020016103d96103c9565b91926001816020925483858801015201910190929161083f565b346103365760406003193601126103365761088a610489565b60243565ffffffffffff61089d436121ed565b168082101561090a576103e579ffffffffffffffffffffffffffffffffffffffffffffffffffff6108f98473ffffffffffffffffffffffffffffffffffffffff87165f5260096020526108f360405f20916121ed565b9061225e565b604051911681529081906020820190565b907fecd3f81e000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b346103365760206003193601126103365761095660043533611f3e565b005b34610336575f60031936011261033657610971436121ed565b65ffffffffffff80610982436121ed565b169116036109d9576103e560405161099b604082610e88565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015260405191829160208352602083019061033a565b7f6ff07140000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103365760206003193601126103365773ffffffffffffffffffffffffffffffffffffffff610a2f610489565b165f526008602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b3461033657602060031936011261033657610956610a78610489565b336122ef565b346103365760206003193601126103365773ffffffffffffffffffffffffffffffffffffffff610aac610489565b165f52600960205260405f205463ffffffff8111610ad65760405163ffffffff9091168152602090f35b7f6dfcc650000000000000000000000000000000000000000000000000000000005f52602060045260245260445ffd5b346103365760206003193601126103365760206107c4610b24610489565b73ffffffffffffffffffffffffffffffffffffffff165f525f60205260405f205490565b3461033657604060031936011261033657610956610b64610489565b60243590610b73823383611c66565b611f3e565b346103365760206003193601126103365773ffffffffffffffffffffffffffffffffffffffff610ba6610489565b165f526007602052602060405f2054604051908152f35b34610336575f60031936011261033657602060ff600f54166040519015158152f35b34610336575f60031936011261033657610cbd610c1b7f000000000000000000000000000000000000000000000000000000000000000061284c565b610c447f00000000000000000000000000000000000000000000000000000000000000006128c5565b6020604051610c538282610e88565b5f815281610ccb818301947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083013687376040519788977f0f00000000000000000000000000000000000000000000000000000000000000895260e0858a015260e089019061033a565b90878203604089015261033a565b914660608701523060808701525f60a087015285830360c087015251918281520192915f5b828110610cff57505050500390f35b835185528695509381019392810192600101610cf0565b346103365760206003193601126103365760043565ffffffffffff610d3a436121ed565b169081811015610e0c57610d4d906121ed565b600a54905f829160058411610db3575b610d699350600a612661565b80610d97575060205f5b79ffffffffffffffffffffffffffffffffffffffffffffffffffff60405191168152f35b610da2602091612235565b600a5f52815f20015460301c610d73565b9192610dbe816124ec565b8103908111610e0757610d6993600a5f5265ffffffffffff8260205f2001541665ffffffffffff8516105f14610df5575091610d5d565b929150610e0190612243565b90610d5d565b611a90565b7fecd3f81e000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040810190811067ffffffffffffffff821117610e8357604052565b610e3a565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610e8357604052565b60405190610ed8604083610e88565b565b60206003198201126103365760043567ffffffffffffffff811161033657816023820112156103365780600401359067ffffffffffffffff8211610e835760405192610f4e601f84017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200185610e88565b8284526024838301011161033657815f92602460209301838601378301015290565b3461033657610f7e36610eda565b73ffffffffffffffffffffffffffffffffffffffff600b541633036110f557805167ffffffffffffffff8111610e8357610fc281610fbd600c54611abd565b611bae565b6020601f8211600114611032579161101382611022937ff26c33166d6eefdac067b052550e7713b98ff0ffc4abb3caf719a1de36b651f4955f91611027575b505f198260011b9260031b1c19161790565b600c556040519182918261037d565b0390a1005b90508301515f611001565b600c5f527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216907fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7915f5b8181106110dd5750927ff26c33166d6eefdac067b052550e7713b98ff0ffc4abb3caf719a1de36b651f494926001928261102296106110c5575b5050811b01600c556103d9565b8401515f1960f88460031b161c191690555f806110b8565b9192602060018192868901518155019401920161107e565b7f7bfa4b9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610336575f600319360112610336576020611138436121ed565b65ffffffffffff60405191168152f35b34610336575f600319360112610336576040515f60045461116881611abd565b8084529060018116908115610447575060011461118f576103e5836103d981850382610e88565b60045f9081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b8082106111d3575090915081016020016103d96103c9565b9192600181602092548385880101520191019092916111bb565b346103365760206003193601126103365773ffffffffffffffffffffffffffffffffffffffff61121b610489565b165f526009602052602079ffffffffffffffffffffffffffffffffffffffffffffffffffff61124c60405f2061239f565b16604051908152f35b34610336576040600319360112610336576104f5611271610489565b6024359033611dcb565b34610336575f600319360112610336576040515f600e5461129b81611abd565b808452906001811690811561044757506001146112c2576103e5836103d981850382610e88565b600e5f9081527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd939250905b808210611306575090915081016020016103d96103c9565b9192600181602092548385880101520191019092916112ee565b6064359060ff8216820361033657565b6084359060ff8216820361033657565b346103365760c060031936011261033657611359610489565b60243590604435611368611320565b6084359060a4359280421161148357916113fb93916113ed6113f29460405160208101917fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf835273ffffffffffffffffffffffffffffffffffffffff8a1660408301528a60608301526080820152608081526113e560a082610e88565b5190206123c8565b6128fc565b909291926129cd565b61142c8173ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2080549060018201905590565b80930361143d5761095692506122ef565b73ffffffffffffffffffffffffffffffffffffffff91507f752d88c0000000000000000000000000000000000000000000000000000000005f521660045260245260445ffd5b7f4683af0e000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b34610336575f600319360112610336576040515f600d546114ce81611abd565b808452906001811690811561044757506001146114f5576103e5836103d981850382610e88565b600d5f9081527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5939250905b808210611539575090915081016020016103d96103c9565b919260018160209254838588010152019101909291611521565b346103365760e06003193601126103365761156c610489565b6115746104ac565b6044359060643592611584611330565b60a43560c435908642116116c2576116549261164f6115ca8673ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2080549060018201905590565b9860405160208101917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9835273ffffffffffffffffffffffffffffffffffffffff89169b8c604084015273ffffffffffffffffffffffffffffffffffffffff8b1660608401528b608084015260a083015260c082015260c081526113e560e082610e88565b612409565b9373ffffffffffffffffffffffffffffffffffffffff85160361167b576109569350612418565b7f4b800e46000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff8085166004521660245260445ffd5b867f62791302000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461033657604060031936011261033657602061175861170c610489565b73ffffffffffffffffffffffffffffffffffffffff6117296104ac565b91165f526001835260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54604051908152f35b346103365761176f36610eda565b73ffffffffffffffffffffffffffffffffffffffff600b541633036110f557805167ffffffffffffffff8111610e83576117b3816117ae600e54611abd565b611bfe565b6020601f8211600114611812579161180382611022937fa27234ca678ebcb3cd33e8325c5563cd8d9ff626cc44a58b6ea2bf4b55524216955f9161102757505f198260011b9260031b1c19161790565b600e556040519182918261037d565b600e5f527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216907fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd915f5b8181106118bd5750927fa27234ca678ebcb3cd33e8325c5563cd8d9ff626cc44a58b6ea2bf4b5552421694926001928261102296106118a5575b5050811b01600e556103d9565b8401515f1960f88460031b161c191690555f80611898565b9192602060018192868901518155019401920161185e565b34610336576040600319360112610336576118ee610489565b6024359063ffffffff82168203610336576103e59173ffffffffffffffffffffffffffffffffffffffff61194892611924611c4e565b5061192d611c4e565b50165f52600960205260405f20611942611c4e565b50612a94565b506040519061195682610e67565b5465ffffffffffff8116825260301c602082015260405191829182919091602079ffffffffffffffffffffffffffffffffffffffffffffffffffff81604084019565ffffffffffff8151168552015116910152565b34610336575f60031936011261033657602073ffffffffffffffffffffffffffffffffffffffff600b5416604051908152f35b34610336575f6003193601126103365773ffffffffffffffffffffffffffffffffffffffff600b541633036110f557600f5460ff8116611a68577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117600f5530337f78a953f3f0d92abc078a34e5d4fedf8708e788e1b29300b3d6170e97f88a13fc5f80a3005b7f118fd7b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b90600182811c92168015611b04575b6020831014611ad757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691611acc565b5f9291815491611b1d83611abd565b8083529260018116908115611b725750600114611b3957505050565b5f9081526020812093945091925b838310611b58575060209250010190565b600181602092949394548385870101520191019190611b47565b905060209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b601f8111611bba575050565b600c5f5260205f20906020601f840160051c83019310611bf4575b601f0160051c01905b818110611be9575050565b5f8155600101611bde565b9091508190611bd5565b601f8111611c0a575050565b600e5f5260205f20906020601f840160051c83019310611c44575b601f0160051c01905b818110611c39575050565b5f8155600101611c2e565b9091508190611c25565b60405190611c5b82610e67565b5f6020838281520152565b73ffffffffffffffffffffffffffffffffffffffff909291921690815f526001602052611cb48360405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b545f198103611cc4575b50505050565b818110611d83578215611d575773ffffffffffffffffffffffffffffffffffffffff841615611d2b57611d21925f526001602052039160405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b555f808080611cbe565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff847ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b92919073ffffffffffffffffffffffffffffffffffffffff8416938415611f125773ffffffffffffffffffffffffffffffffffffffff8216801561067d57611e308273ffffffffffffffffffffffffffffffffffffffff165f525f60205260405f2090565b5495848710611ec65784610ed8969703611e678473ffffffffffffffffffffffffffffffffffffffff165f525f60205260405f2090565b55611e8f8473ffffffffffffffffffffffffffffffffffffffff165f525f60205260405f2090565b8054860190556040518581527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a3612d5f565b7fe450d38c000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff83166004526024879052604485905260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff8116908115611f1257611f838173ffffffffffffffffffffffffffffffffffffffff165f525f60205260405f2090565b548381106120795790611fbb84610ed8959493039173ffffffffffffffffffffffffffffffffffffffff165f525f60205260405f2090565b5581600254036002555f817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405180602081018782520390a38015612061575b61200d61200883612ad6565b612c6b565b50505f908152600860205260408120549080527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c75473ffffffffffffffffffffffffffffffffffffffff90811691166126c5565b61207261206d83612ad6565b612c0a565b5050611ffc565b7fe450d38c000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff909116600452602452604482905260645ffd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163014806121c4575b1561212c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526121be60c082610e88565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612103565b65ffffffffffff81116122055765ffffffffffff1690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f52603060045260245260445ffd5b905f198201918211610e0757565b9060018201809211610e0757565b91908201809211610e0757565b908154905f82916005841161229c575b612279935084612661565b806122845750505f90565b61228d90612235565b905f5260205f20015460301c90565b91926122a7816124ec565b8103908111610e075761227993855f5265ffffffffffff8260205f2001541665ffffffffffff8516105f146122dd57509161226e565b9291506122e990612243565b9061226e565b73ffffffffffffffffffffffffffffffffffffffff8181165f81815260086020526040812080548685167fffffffffffffffffffffffff000000000000000000000000000000000000000082168117909255610ed8969416946123999390928691907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9080a473ffffffffffffffffffffffffffffffffffffffff165f525f60205260405f205490565b916126c5565b8054806123ac5750505f90565b805f19810111610e07575f19915f5260205f2001015460301c90565b6042906123d36120c4565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b9161038e93916113f2936128fc565b73ffffffffffffffffffffffffffffffffffffffff16908115611d575773ffffffffffffffffffffffffffffffffffffffff8116928315611d2b57806124a87f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593855f52600160205260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b55604051908152602090a3565b81156124bf570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b600181111561038e5780600170010000000000000000000000000000000083101561261f575b6125c56125bb6125b16125a761259d6125936125826125cc9760048a680100000000000000006125d19c1015612612575b640100000000811015612605575b620100008110156125f8575b6101008110156125eb575b60108110156125de575b10156125d6575b60030260011c90565b61258c818b6124b5565b0160011c90565b61258c818a6124b5565b61258c81896124b5565b61258c81886124b5565b61258c81876124b5565b61258c81866124b5565b80936124b5565b821190565b900390565b60011b612579565b60041c9160021b91612572565b60081c9160041b91612568565b60101c9160081b9161255d565b60201c9160101b91612551565b60401c9160201b91612543565b50506125d16125cc6125c56125bb6125b16125a761259d6125936125826126468a60801c90565b98506801000000000000000097506125129650505050505050565b91905b8382106126715750505090565b9091928083169080841860011c8201809211610e0757845f5265ffffffffffff8260205f2001541665ffffffffffff8416105f146126b35750925b9190612664565b9392506126bf90612243565b916126ac565b919073ffffffffffffffffffffffffffffffffffffffff81169273ffffffffffffffffffffffffffffffffffffffff8116908482141580612843575b61270d575b5050505050565b816127c0575b505082612722575b8080612706565b6127b561279c7fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249361279661279079ffffffffffffffffffffffffffffffffffffffffffffffffffff9573ffffffffffffffffffffffffffffffffffffffff165f52600960205260405f2090565b91612ad6565b90612baa565b6040805192851683529316602082015291829190820190565b0390a25f808061271b565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff61283961279c61282a7fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249473ffffffffffffffffffffffffffffffffffffffff165f52600960205260405f2090565b61283388612ad6565b90612b46565b0390a25f80612713565b50831515612701565b60ff81146128ab5760ff811690601f82116128835760405191612870604084610e88565b6020808452838101919036833783525290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b5060405161038e816128be816005611b0e565b0382610e88565b60ff81146128e95760ff811690601f82116128835760405191612870604084610e88565b5060405161038e816128be816006611b0e565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161298b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15612980575f5173ffffffffffffffffffffffffffffffffffffffff81161561297657905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600411156129a057565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6129d681612996565b806129df575050565b6129e881612996565b60018103612a18577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b612a2181612996565b60028103612a5557507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b80612a61600392612996565b14612a695750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b8054821015612aa9575f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b79ffffffffffffffffffffffffffffffffffffffffffffffffffff8111612b165779ffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f5260d060045260245260445ffd5b90612b50436121ed565b9079ffffffffffffffffffffffffffffffffffffffffffffffffffff80612b768561239f565b92169116039079ffffffffffffffffffffffffffffffffffffffffffffffffffff8211610e0757612ba692612e91565b9091565b90612bb4436121ed565b9079ffffffffffffffffffffffffffffffffffffffffffffffffffff80612bda8561239f565b92169116019079ffffffffffffffffffffffffffffffffffffffffffffffffffff8211610e0757612ba692612e91565b612c13436121ed565b9079ffffffffffffffffffffffffffffffffffffffffffffffffffff80612c3a600a61239f565b921691160179ffffffffffffffffffffffffffffffffffffffffffffffffffff8111610e0757612ba691600a612e91565b612c74436121ed565b9079ffffffffffffffffffffffffffffffffffffffffffffffffffff80612c9b600a61239f565b921691160379ffffffffffffffffffffffffffffffffffffffffffffffffffff8111610e0757612ba691600a612e91565b9073ffffffffffffffffffffffffffffffffffffffff610ed892612cf261206d84612ad6565b5050168015612d4c575b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7545f91825260409091205473ffffffffffffffffffffffffffffffffffffffff90811691166126c5565b612d5861200883612ad6565b5050612cfc565b9073ffffffffffffffffffffffffffffffffffffffff80610ed8949316918215612deb575b16908115612dd8575b5f52600860205273ffffffffffffffffffffffffffffffffffffffff60405f205416905f52600860205273ffffffffffffffffffffffffffffffffffffffff60405f205416906126c5565b612de461200884612ad6565b5050612d8d565b612df761206d85612ad6565b5050612d84565b805468010000000000000000811015610e8357612e2091600182018155612a94565b612e655781516020929092015160301b7fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001665ffffffffffff92909216919091179055565b7f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b80549293928015612f8757612ea8612eb391612235565b825f5260205f200190565b8054603081901c9365ffffffffffff91821692918116808411612f5f57879303612f185750612f1492509065ffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000083549260301b169116179055565b9190565b915050612f1491612f38612f2a610ec9565b65ffffffffffff9093168352565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff86166020830152612dfe565b7f2520601d000000000000000000000000000000000000000000000000000000005f5260045ffd5b5090612fbf91612f98612f2a610ec9565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff85166020830152612dfe565b5f919056fea26469706673582212204e1de4ea938b928df16b4d797528b3228dc67d526470a44525dd87cdb1d41bf164736f6c634300081c0033c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724";
1940
1941
 
1941
1942
  // src/utils/clankers.ts
1942
- import { base as base2, baseSepolia as baseSepolia2 } from "viem/chains";
1943
+ import { base, baseSepolia } from "viem/chains";
1943
1944
 
1944
1945
  // src/abi/v0/Clanker.ts
1945
1946
  var Clanker_v0_abi = [
@@ -3660,21 +3661,21 @@ var Clanker_v4_abi = [
3660
3661
  var CLANKERS = {
3661
3662
  clanker_v0: {
3662
3663
  abi: Clanker_v0_abi,
3663
- chainId: base2.id,
3664
+ chainId: base.id,
3664
3665
  type: "proxy",
3665
3666
  address: "0x250c9FB2b411B48273f69879007803790A6AeA47",
3666
3667
  related: void 0
3667
3668
  },
3668
3669
  clanker_v1: {
3669
3670
  abi: Clanker_v1_abi,
3670
- chainId: base2.id,
3671
+ chainId: base.id,
3671
3672
  type: "clanker",
3672
3673
  address: "0x9B84fcE5Dcd9a38d2D01d5D72373F6b6b067c3e1",
3673
3674
  related: void 0
3674
3675
  },
3675
3676
  clanker_v2: {
3676
3677
  abi: Clanker_v2_abi,
3677
- chainId: base2.id,
3678
+ chainId: base.id,
3678
3679
  type: "clanker_v2",
3679
3680
  address: "0x732560fa1d1A76350b1A500155BA978031B53833",
3680
3681
  related: {
@@ -3683,7 +3684,7 @@ var CLANKERS = {
3683
3684
  },
3684
3685
  clanker_v3: {
3685
3686
  abi: Clanker_v3_abi,
3686
- chainId: base2.id,
3687
+ chainId: base.id,
3687
3688
  type: "clanker_v3",
3688
3689
  address: "0x375C15db32D28cEcdcAB5C03Ab889bf15cbD2c5E",
3689
3690
  related: {
@@ -3692,7 +3693,7 @@ var CLANKERS = {
3692
3693
  },
3693
3694
  clanker_v3_1: {
3694
3695
  abi: Clanker_v3_1_abi,
3695
- chainId: base2.id,
3696
+ chainId: base.id,
3696
3697
  type: "clanker_v3_1",
3697
3698
  address: "0x2A787b2362021cC3eEa3C24C4748a6cD5B687382",
3698
3699
  related: {
@@ -3702,7 +3703,7 @@ var CLANKERS = {
3702
3703
  },
3703
3704
  clanker_v4: {
3704
3705
  abi: Clanker_v4_abi,
3705
- chainId: base2.id,
3706
+ chainId: base.id,
3706
3707
  type: "clanker_v4",
3707
3708
  address: "0xE85A59c628F7d27878ACeB4bf3b35733630083a9",
3708
3709
  related: {
@@ -3710,7 +3711,7 @@ var CLANKERS = {
3710
3711
  vault: "0x8E845EAd15737bF71904A30BdDD3aEE76d6ADF6C",
3711
3712
  airdrop: "0x56Fa0Da89eD94822e46734e736d34Cab72dF344F",
3712
3713
  devbuy: "0x1331f0788F9c08C8F38D52c7a1152250A9dE00be",
3713
- mevModule: "0xE143f9872A33c955F23cF442BB4B1EFB3A7402A2",
3714
+ mevModule: "0xFdc013ce003980889cFfd66b0c8329545ae1d1E8",
3714
3715
  feeLocker: "0xF3622742b1E446D92e45E22923Ef11C2fcD55D68",
3715
3716
  feeStaticHook: "0xDd5EeaFf7BD481AD55Db083062b13a3cdf0A68CC",
3716
3717
  feeDynamicHook: "0x34a45c6B61876d739400Bd71228CbcbD4F53E8cC"
@@ -3718,7 +3719,7 @@ var CLANKERS = {
3718
3719
  },
3719
3720
  clanker_v4_sepolia: {
3720
3721
  abi: Clanker_v4_abi,
3721
- chainId: baseSepolia2.id,
3722
+ chainId: baseSepolia.id,
3722
3723
  type: "clanker_v4",
3723
3724
  address: "0xE85A59c628F7d27878ACeB4bf3b35733630083a9",
3724
3725
  related: {
@@ -3726,9 +3727,9 @@ var CLANKERS = {
3726
3727
  vault: "0xcC80d1226F899a78fC2E459a1500A13C373CE0A5",
3727
3728
  airdrop: "0x29d17C1A8D851d7d4cA97FAe97AcAdb398D9cCE0",
3728
3729
  devbuy: "0x691f97752E91feAcD7933F32a1FEdCeDae7bB59c",
3729
- mevModule: "0x71DB365E93e170ba3B053339A917c11024e7a9d4",
3730
+ mevModule: "0x261fE99C4D0D41EE8d0e594D11aec740E8354ab0",
3730
3731
  feeLocker: "0x42A95190B4088C88Dd904d930c79deC1158bF09D",
3731
- feeStaticHook: "0x3eC2a26b6eF16c288561692AE8D9681fa773A8cc",
3732
+ feeStaticHook: "0xDFcCcfBeef7F3Fc8b16027Ce6feACb48024068cC",
3732
3733
  feeDynamicHook: "0xE63b0A59100698f379F9B577441A561bAF9828cc"
3733
3734
  }
3734
3735
  }
@@ -3765,7 +3766,7 @@ var ClankerMetadataSchema = z.strictObject({
3765
3766
  /** Description of the token or token project. */
3766
3767
  description: z.string().optional(),
3767
3768
  /** Socials for the token. These may be displayed on aggregators. */
3768
- socialMediaUrls: z.array(z.url()).optional(),
3769
+ socialMediaUrls: z.array(z.object({ platform: z.string(), url: z.string() })).optional(),
3769
3770
  /** Audits for other contracts or services offered by the project. */
3770
3771
  auditUrls: z.array(z.url()).optional()
3771
3772
  });
@@ -3890,7 +3891,7 @@ var clankerTokenV3Converter = async (config2, options) => {
3890
3891
  const vestingDuration = cfg.vault.durationInDays ? getRelativeUnixTimestamp(vestingUnlockDate) : 0n;
3891
3892
  return {
3892
3893
  abi: Clanker_v3_1_abi,
3893
- address: CLANKER_FACTORY_V3_1,
3894
+ address: CLANKERS.clanker_v3_1.address,
3894
3895
  functionName: "deployToken",
3895
3896
  args: [
3896
3897
  {
@@ -3945,7 +3946,7 @@ function getRelativeUnixTimestamp(unixTimestamp) {
3945
3946
  return vestingDuration;
3946
3947
  }
3947
3948
  var getTokenPairByAddress = (address) => {
3948
- if (address === WETH_ADDRESS) {
3949
+ if (address === WETH_ADDRESSES[base2.id]) {
3949
3950
  return "WETH";
3950
3951
  }
3951
3952
  if (address === DEGEN_ADDRESS) {
@@ -3973,7 +3974,7 @@ var getTokenPairByAddress = (address) => {
3973
3974
  };
3974
3975
  var getDesiredPriceAndPairAddress = (pair, marketCap = 10) => {
3975
3976
  let desiredPrice = 1e-10;
3976
- let pairAddress = WETH_ADDRESS;
3977
+ let pairAddress = WETH_ADDRESSES[base2.id];
3977
3978
  if (pair === "WETH") {
3978
3979
  desiredPrice = marketCap * 1e-11;
3979
3980
  }
@@ -4208,7 +4209,7 @@ var Clanker = class {
4208
4209
  */
4209
4210
  async getClaimRewardsTransaction(token) {
4210
4211
  return {
4211
- address: CLANKER_FACTORY_V3_1,
4212
+ address: CLANKERS.clanker_v3_1.address,
4212
4213
  abi: Clanker_v3_1_abi,
4213
4214
  functionName: "claimRewards",
4214
4215
  args: [token]
@@ -4282,7 +4283,7 @@ var Clanker = class {
4282
4283
  // src/cli/create-clanker.ts
4283
4284
  dotenv.config();
4284
4285
  var ASCII_ART = fs.readFileSync(path2.join(__dirname, "ascii.txt"), "utf8");
4285
- var WETH_ADDRESS2 = "0x4200000000000000000000000000000000000006";
4286
+ var WETH_ADDRESS = "0x4200000000000000000000000000000000000006";
4286
4287
  var USDC_ADDRESS = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
4287
4288
  async function createClanker() {
4288
4289
  const PRIVATE_KEY = process.env.PRIVATE_KEY;
@@ -4623,10 +4624,14 @@ RPC_URL=your_custom_rpc_url (if not provided, will use default Base RPC)
4623
4624
  const vaultPercentage = answers.vaultConfig.vaultPercentage === "CUSTOM" ? parseInt(answers.customVaultPercentage || "0", 10) : parseInt(answers.vaultConfig.vaultPercentage, 10);
4624
4625
  const vaultDuration = answers.vaultConfig.durationInDays === "CUSTOM" ? parseInt(answers.customVaultDuration || "31", 10) : parseInt(answers.vaultConfig.durationInDays, 10);
4625
4626
  const socialMediaUrls = [];
4626
- if (answers.metadata.telegram) socialMediaUrls.push(answers.metadata.telegram);
4627
- if (answers.metadata.website) socialMediaUrls.push(answers.metadata.website);
4628
- if (answers.metadata.twitter) socialMediaUrls.push(answers.metadata.twitter);
4629
- if (answers.metadata.farcaster) socialMediaUrls.push(answers.metadata.farcaster);
4627
+ if (answers.metadata.telegram)
4628
+ socialMediaUrls.push({ platform: "telegram", url: answers.metadata.telegram });
4629
+ if (answers.metadata.website)
4630
+ socialMediaUrls.push({ platform: "website", url: answers.metadata.website });
4631
+ if (answers.metadata.twitter)
4632
+ socialMediaUrls.push({ platform: "twitter", url: answers.metadata.twitter });
4633
+ if (answers.metadata.farcaster)
4634
+ socialMediaUrls.push({ platform: "farcaster", url: answers.metadata.farcaster });
4630
4635
  const metadata = {
4631
4636
  description: answers.metadata.description,
4632
4637
  socialMediaUrls,
@@ -4665,7 +4670,7 @@ RPC_URL=your_custom_rpc_url (if not provided, will use default Base RPC)
4665
4670
  publicClient
4666
4671
  });
4667
4672
  console.log("\n\u{1F504} Preparing deployment configuration...");
4668
- const quoteToken = answers.pairedTokenChoice === "WETH" ? WETH_ADDRESS2 : answers.pairedTokenChoice === "USDC" ? USDC_ADDRESS : answers.customPairedToken;
4673
+ const quoteToken = answers.pairedTokenChoice === "WETH" ? WETH_ADDRESS : answers.pairedTokenChoice === "USDC" ? USDC_ADDRESS : answers.customPairedToken;
4669
4674
  const token = {
4670
4675
  name: answers.name,
4671
4676
  symbol: answers.symbol,