| @@ -10,7 +10,7 @@ const UNLOCKS_ALL_AT_9_MONTHS: UnlockInfo = UnlockInfo { | |||||||
|     cliff_years: 0.75, |     cliff_years: 0.75, | ||||||
|     unlocks: 0, |     unlocks: 0, | ||||||
|     unlock_years: 0.0, |     unlock_years: 0.0, | ||||||
|     custodian: "6LnFgiECFQKUcxNYDvUBMxgjeGQzzy4kgxGhantoxfUe", |     custodian: "Mc5XB47H3DKJHym5RLa9mPzWv5snERsF3KNv5AauXK8", | ||||||
| }; | }; | ||||||
|  |  | ||||||
| // no lockups | // no lockups | ||||||
| @@ -19,7 +19,7 @@ const UNLOCKS_ALL_DAY_ZERO: UnlockInfo = UnlockInfo { | |||||||
|     cliff_years: 0.0, |     cliff_years: 0.0, | ||||||
|     unlocks: 0, |     unlocks: 0, | ||||||
|     unlock_years: 0.0, |     unlock_years: 0.0, | ||||||
|     custodian: "6LnFgiECFQKUcxNYDvUBMxgjeGQzzy4kgxGhantoxfUe", |     custodian: "Mc5XB47H3DKJHym5RLa9mPzWv5snERsF3KNv5AauXK8", | ||||||
| }; | }; | ||||||
|  |  | ||||||
| pub const BATCH_FOUR_STAKER_INFOS: &[StakerInfo] = &[ | pub const BATCH_FOUR_STAKER_INFOS: &[StakerInfo] = &[ | ||||||
| @@ -27,106 +27,127 @@ pub const BATCH_FOUR_STAKER_INFOS: &[StakerInfo] = &[ | |||||||
|         name: "impossible pizza", |         name: "impossible pizza", | ||||||
|         staker: "CDtJpwRSiPRDGeKrvymWQKM7JY9M3hU7iimEKBDxZyoP", |         staker: "CDtJpwRSiPRDGeKrvymWQKM7JY9M3hU7iimEKBDxZyoP", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "wretched texture", |         name: "wretched texture", | ||||||
|         staker: "HbENu65qjWLEB5TrMouSSWLq9mbtGx2bvfhPjk2FpYek", |         staker: "HbENu65qjWLEB5TrMouSSWLq9mbtGx2bvfhPjk2FpYek", | ||||||
|         lamports: 225_000 * LAMPORTS_PER_SOL, |         lamports: 225_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "nutritious examination", |         name: "nutritious examination", | ||||||
|         staker: "C9CfFpmLDsQsz6wt7MrrZquNB5oS4QkpJkmDAiboVEZZ", |         staker: "C9CfFpmLDsQsz6wt7MrrZquNB5oS4QkpJkmDAiboVEZZ", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "tidy impression", |         name: "tidy impression", | ||||||
|         staker: "6ne6Rbag4FAnop1KNgVdM1SEHnJEysHSWyqvRpFrzaig", |         staker: "6ne6Rbag4FAnop1KNgVdM1SEHnJEysHSWyqvRpFrzaig", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "unbecoming silver", |         name: "unbecoming silver", | ||||||
|         staker: "4AcoZa1P8fF5XK21RJsiuMRZPEScbbWNc75oakRFHiBz", |         staker: "4AcoZa1P8fF5XK21RJsiuMRZPEScbbWNc75oakRFHiBz", | ||||||
|         lamports: 28_800 * LAMPORTS_PER_SOL, |         lamports: 28_800 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "dramatic treatment", |         name: "dramatic treatment", | ||||||
|         staker: "GTyawCMwt3kMb51AgDtfdp97mDot7jNwc8ifuS9qqANg", |         staker: "GTyawCMwt3kMb51AgDtfdp97mDot7jNwc8ifuS9qqANg", | ||||||
|         lamports: 1_205_602 * LAMPORTS_PER_SOL, |         lamports: 1_205_602 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "angry noise", |         name: "angry noise", | ||||||
|         staker: "Fqxs9MhqjKuMq6YwjBG4ktEapuZQ3kj19mpuHLZKtkg9", |         staker: "Fqxs9MhqjKuMq6YwjBG4ktEapuZQ3kj19mpuHLZKtkg9", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "hard cousin", |         name: "hard cousin", | ||||||
|         staker: "9MYDzj7QuAX9QAK7da1GhzPB4gA3qbPNWsW3MMSZobru", |         staker: "9MYDzj7QuAX9QAK7da1GhzPB4gA3qbPNWsW3MMSZobru", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "inexpensive uncle", |         name: "inexpensive uncle", | ||||||
|         staker: "E4DLNkmdL34ejA48ApfPDoFVuD9XWAFqi8bXzBGRhKst", |         staker: "E4DLNkmdL34ejA48ApfPDoFVuD9XWAFqi8bXzBGRhKst", | ||||||
|         lamports: 300_000 * LAMPORTS_PER_SOL, |         lamports: 300_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "lopsided skill", |         name: "lopsided skill", | ||||||
|         staker: "8cV7zCTF5UMrZakZXiL2Jw5uY3ms2Wz4twzFXEY9Kge2", |         staker: "8cV7zCTF5UMrZakZXiL2Jw5uY3ms2Wz4twzFXEY9Kge2", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "red snake", |         name: "red snake", | ||||||
|         staker: "JBGnGdLyo7V2z9hz51mnnbyDp9sBACtw5WYH9YRG8n7e", |         staker: "JBGnGdLyo7V2z9hz51mnnbyDp9sBACtw5WYH9YRG8n7e", | ||||||
|         lamports: 3_655_292 * LAMPORTS_PER_SOL, |         lamports: 3_655_292 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "hellish money", |         name: "hellish money", | ||||||
|         staker: "CqKdQ57mBj2mKcAbpjWc28Ls7yXzBXboxSTCRWocmUVj", |         staker: "CqKdQ57mBj2mKcAbpjWc28Ls7yXzBXboxSTCRWocmUVj", | ||||||
|         lamports: 200_000 * LAMPORTS_PER_SOL, |         lamports: 200_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "full grape", |         name: "full grape", | ||||||
|         staker: "2SCJKvh7wWo32PtfUZdVZQ84WnMWoUpF4WTm6ZxcCJ15", |         staker: "2SCJKvh7wWo32PtfUZdVZQ84WnMWoUpF4WTm6ZxcCJ15", | ||||||
|         lamports: 450_000 * LAMPORTS_PER_SOL, |         lamports: 450_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "nice ghost", |         name: "nice ghost", | ||||||
|         staker: "FeumxB3gfzrVQzABBiha8AacKPY3Rf4BTFSh2aZWHqR8", |         staker: "FeumxB3gfzrVQzABBiha8AacKPY3Rf4BTFSh2aZWHqR8", | ||||||
|         lamports: 650_000 * LAMPORTS_PER_SOL, |         lamports: 650_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "jolly year", |         name: "jolly year", | ||||||
|         staker: "HBwFWNGPVZgkf3yqUKxuAds5aANGWX62LzUFvZVCWLdJ", |         staker: "HBwFWNGPVZgkf3yqUKxuAds5aANGWX62LzUFvZVCWLdJ", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "typical initiative", |         name: "typical initiative", | ||||||
|         staker: "3JMz3kaDUZEVK2JVjRqwERGMp7LbWbgUjAFBb42qxoHb", |         staker: "3JMz3kaDUZEVK2JVjRqwERGMp7LbWbgUjAFBb42qxoHb", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "deserted window", |         name: "deserted window", | ||||||
|         staker: "XTeBBZextvHkoRqDF8yb4hihjcraKQDwTEXhzjd8fip", |         staker: "XTeBBZextvHkoRqDF8yb4hihjcraKQDwTEXhzjd8fip", | ||||||
|         lamports: 3_655_292 * LAMPORTS_PER_SOL, |         lamports: 3_655_292 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "eight nation", |         name: "eight nation", | ||||||
|         staker: "E5bSU5ywqPiz3ije89ef5gaEC7jy81BAc72Zeb9MqeHY", |         staker: "E5bSU5ywqPiz3ije89ef5gaEC7jy81BAc72Zeb9MqeHY", | ||||||
|         lamports: 103_519 * LAMPORTS_PER_SOL, |         lamports: 103_519 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "earsplitting meaning", |         name: "earsplitting meaning", | ||||||
|         staker: "4ZemkSoE75RFE1SVLnnmHcaNWT4qN8KFrKP2wAYfv8CB", |         staker: "4ZemkSoE75RFE1SVLnnmHcaNWT4qN8KFrKP2wAYfv8CB", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "alike cheese", |         name: "alike cheese", | ||||||
|         staker: "72BGEwYee5txFonmpEarTEKCZVN2UxcSUgdphdhcx3V", |         staker: "72BGEwYee5txFonmpEarTEKCZVN2UxcSUgdphdhcx3V", | ||||||
|         lamports: 3_880_295 * LAMPORTS_PER_SOL, |         lamports: 3_880_295 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "noisy honey", |         name: "noisy honey", | ||||||
|         staker: "DRp1Scyn4yJZQfMAdQew2x8RtvRmsNELN37JTK5Xvzgn", |         staker: "DRp1Scyn4yJZQfMAdQew2x8RtvRmsNELN37JTK5Xvzgn", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
| ]; | ]; | ||||||
|  |  | ||||||
| @@ -135,11 +156,13 @@ pub const FOUNDATION_STAKER_INFOS: &[StakerInfo] = &[ | |||||||
|         name: "lyrical supermarket", |         name: "lyrical supermarket", | ||||||
|         staker: "GRZwoJGisLTszcxtWpeREJ98EGg8pZewhbtcrikoU7b3", |         staker: "GRZwoJGisLTszcxtWpeREJ98EGg8pZewhbtcrikoU7b3", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "frequent description", |         name: "frequent description", | ||||||
|         staker: "J51tinoLdmEdUR27LUVymrb2LB3xQo1aSHSgmbSGdj58", |         staker: "J51tinoLdmEdUR27LUVymrb2LB3xQo1aSHSgmbSGdj58", | ||||||
|         lamports: 57_500_000 * LAMPORTS_PER_SOL, |         lamports: 57_500_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
| ]; | ]; | ||||||
|  |  | ||||||
| @@ -148,29 +171,34 @@ pub const GRANTS_STAKER_INFOS: &[StakerInfo] = &[ | |||||||
|         name: "rightful agreement", |         name: "rightful agreement", | ||||||
|         staker: "DNaKiBwwbbqk1wVoC5AQxWQbuDhvaDVbAtXzsVos9mrc", |         staker: "DNaKiBwwbbqk1wVoC5AQxWQbuDhvaDVbAtXzsVos9mrc", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "tasty location", |         name: "tasty location", | ||||||
|         staker: "HvXQPXAijjG1vnQs6HXVtUUtFVzi5HNgXV9LGnHvYF85", |         staker: "HvXQPXAijjG1vnQs6HXVtUUtFVzi5HNgXV9LGnHvYF85", | ||||||
|         lamports: 15_000_000 * LAMPORTS_PER_SOL, |         lamports: 15_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: None, | ||||||
|     }, |     }, | ||||||
| ]; | ]; | ||||||
|  |  | ||||||
| pub const COMMUNITY_STAKER_INFOS: &[StakerInfo] = &[ | pub const COMMUNITY_STAKER_INFOS: &[StakerInfo] = &[ | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "shrill charity", |         name: "shrill charity", | ||||||
|         staker: "BzuqQFnu7oNUeok9ZoJezpqu2vZJU7XR1PxVLkk6wwUD", |         staker: "Eo1iDtrZZiAkQFA8u431hedChaSUnPbU8MWg849MFvEZ", | ||||||
|         lamports: 5_000_000 * LAMPORTS_PER_SOL, |         lamports: 5_000_000 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: Some("8CUUMKYNGxdgYio5CLHRHyzMEhhVRMcqefgE6dLqnVRK"), | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "legal gate", |         name: "legal gate", | ||||||
|         staker: "FwMbkDZUb78aiMWhZY4BEroAcqmnrXZV77nwrg71C57d", |         staker: "7KCzZCbZz6V1U1YXUpBNaqQzQCg2DKo8JsNhKASKtYxe", | ||||||
|         lamports: 16_086_641 * LAMPORTS_PER_SOL, |         lamports: 16_086_641 * LAMPORTS_PER_SOL, | ||||||
|  |         withdrawer: Some("92viKFftk1dJjqJwreFqT2qHXxjSUuEE9VyHvTdY1mpY"), | ||||||
|     }, |     }, | ||||||
|     StakerInfo { |     StakerInfo { | ||||||
|         name: "cluttered complaint", |         name: "cluttered complaint", | ||||||
|         staker: "4h1rt2ic4AXwG7p3Qqhw57EMDD4c3tLYb5J3QstGA2p5", |         staker: "2J8mJU6tWg78DdQVEqMfpN3rMeNbcRT9qGL3yLbmSXYL", | ||||||
|         lamports: 153_333_633 * LAMPORTS_PER_SOL + 41 * LAMPORTS_PER_SOL / 100, |         lamports: 153_333_633 * LAMPORTS_PER_SOL + 41 * LAMPORTS_PER_SOL / 100, | ||||||
|  |         withdrawer: Some("7kgfDmgbEfypBujqn4tyApjf8H7ZWuaL3F6Ah9vQHzgR"), | ||||||
|     }, |     }, | ||||||
| ]; | ]; | ||||||
|  |  | ||||||
| @@ -209,8 +237,9 @@ pub fn add_genesis_accounts(genesis_config: &mut GenesisConfig, mut issued_lampo | |||||||
|         genesis_config, |         genesis_config, | ||||||
|         &StakerInfo { |         &StakerInfo { | ||||||
|             name: "one thanks", |             name: "one thanks", | ||||||
|             staker: "3b7akieYUyCgz3Cwt5sTSErMWjg8NEygD6mbGjhGkduB", |             staker: "7vEAL3nS9CWmy1q6njUUyHE7Cf5RmyQpND6CsoHjzPiR", | ||||||
|             lamports: 500_000_000 * LAMPORTS_PER_SOL - issued_lamports, |             lamports: 500_000_000 * LAMPORTS_PER_SOL - issued_lamports, | ||||||
|  |             withdrawer: Some("3FFaheyqtyAXZSYxDzsr5CVKvJuvZD1WE1VEsBtDbRqB"), | ||||||
|         }, |         }, | ||||||
|         &UNLOCKS_ALL_DAY_ZERO, |         &UNLOCKS_ALL_DAY_ZERO, | ||||||
|         None, |         None, | ||||||
|   | |||||||
| @@ -16,6 +16,7 @@ use solana_stake_program::{ | |||||||
| pub struct StakerInfo { | pub struct StakerInfo { | ||||||
|     pub name: &'static str, |     pub name: &'static str, | ||||||
|     pub staker: &'static str, |     pub staker: &'static str, | ||||||
|  |     pub withdrawer: Option<&'static str>, | ||||||
|     pub lamports: u64, |     pub lamports: u64, | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -44,12 +45,19 @@ pub fn create_and_add_stakes( | |||||||
|     granularity: Option<u64>, |     granularity: Option<u64>, | ||||||
| ) -> u64 { | ) -> u64 { | ||||||
|     let granularity = granularity.unwrap_or(std::u64::MAX); |     let granularity = granularity.unwrap_or(std::u64::MAX); | ||||||
|     let authorized = Authorized::auto( |     let staker = &staker_info | ||||||
|         &staker_info |         .staker | ||||||
|             .staker |         .parse::<Pubkey>() | ||||||
|             .parse::<Pubkey>() |         .expect("invalid staker"); | ||||||
|             .expect("invalid staker"), |     let withdrawer = &staker_info | ||||||
|     ); |         .withdrawer | ||||||
|  |         .unwrap_or(staker_info.staker) | ||||||
|  |         .parse::<Pubkey>() | ||||||
|  |         .expect("invalid staker"); | ||||||
|  |     let authorized = Authorized { | ||||||
|  |         staker: *staker, | ||||||
|  |         withdrawer: *withdrawer, | ||||||
|  |     }; | ||||||
|     let custodian = unlock_info |     let custodian = unlock_info | ||||||
|         .custodian |         .custodian | ||||||
|         .parse::<Pubkey>() |         .parse::<Pubkey>() | ||||||
| @@ -240,6 +248,7 @@ mod tests { | |||||||
|                 name: "fun", |                 name: "fun", | ||||||
|                 staker: "P1aceHo1derPubkey11111111111111111111111111", |                 staker: "P1aceHo1derPubkey11111111111111111111111111", | ||||||
|                 lamports: total_lamports, |                 lamports: total_lamports, | ||||||
|  |                 withdrawer: None, | ||||||
|             }, |             }, | ||||||
|             &UnlockInfo { |             &UnlockInfo { | ||||||
|                 cliff_fraction: 0.5, |                 cliff_fraction: 0.5, | ||||||
| @@ -265,6 +274,7 @@ mod tests { | |||||||
|                 name: "fun", |                 name: "fun", | ||||||
|                 staker: "P1aceHo1derPubkey11111111111111111111111111", |                 staker: "P1aceHo1derPubkey11111111111111111111111111", | ||||||
|                 lamports: total_lamports, |                 lamports: total_lamports, | ||||||
|  |                 withdrawer: None, | ||||||
|             }, |             }, | ||||||
|             &UnlockInfo { |             &UnlockInfo { | ||||||
|                 cliff_fraction: 0.5, |                 cliff_fraction: 0.5, | ||||||
| @@ -290,6 +300,7 @@ mod tests { | |||||||
|                 name: "fun", |                 name: "fun", | ||||||
|                 staker: "P1aceHo1derPubkey11111111111111111111111111", |                 staker: "P1aceHo1derPubkey11111111111111111111111111", | ||||||
|                 lamports: total_lamports, |                 lamports: total_lamports, | ||||||
|  |                 withdrawer: None, | ||||||
|             }, |             }, | ||||||
|             &UnlockInfo { |             &UnlockInfo { | ||||||
|                 cliff_fraction: 0.5, |                 cliff_fraction: 0.5, | ||||||
| @@ -314,6 +325,7 @@ mod tests { | |||||||
|                 name: "fun", |                 name: "fun", | ||||||
|                 staker: "P1aceHo1derPubkey11111111111111111111111111", |                 staker: "P1aceHo1derPubkey11111111111111111111111111", | ||||||
|                 lamports: total_lamports, |                 lamports: total_lamports, | ||||||
|  |                 withdrawer: None, | ||||||
|             }, |             }, | ||||||
|             &UnlockInfo { |             &UnlockInfo { | ||||||
|                 cliff_fraction: 0.5, |                 cliff_fraction: 0.5, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user