From 02e35612268b551de81563d4fd36c0015cdb47c3 Mon Sep 17 00:00:00 2001 From: Gabriel Zimmermann Date: Mon, 7 Oct 2024 16:30:45 -0300 Subject: [PATCH] Adds circulating supply endpoint / service / controller (#1771) * Adds circulating supply endpoint / service / controller * modify supply endpoint to response in json format, add docs --------- Co-authored-by: Agustin Pazos --- api/docs/docs.go | 59 +- api/docs/swagger.json | 59 +- api/docs/swagger.yaml | 41 +- api/handlers/supply/service.go | 43 + api/handlers/supply/supply_data.go | 1679 ++++++++++++++++++++++ api/main.go | 4 +- api/routes/wormscan/routes.go | 8 + api/routes/wormscan/supply/controller.go | 55 + 8 files changed, 1944 insertions(+), 4 deletions(-) create mode 100644 api/handlers/supply/service.go create mode 100644 api/handlers/supply/supply_data.go create mode 100644 api/routes/wormscan/supply/controller.go diff --git a/api/docs/docs.go b/api/docs/docs.go index a3c54f32..3daec8ca 100644 --- a/api/docs/docs.go +++ b/api/docs/docs.go @@ -825,7 +825,7 @@ const docTemplate = `{ }, "/api/v1/native-token-transfer/top-holder": { "get": { - "description": "Returns a list of volume of the Native Token Transfer for holder.", + "description": "Returns a list of volume and chain of the Native Token Transfer for top holders.", "tags": [ "wormholescan" ], @@ -1398,6 +1398,23 @@ const docTemplate = `{ } } }, + "/api/v1/supply": { + "get": { + "description": "Get W token circulation supply.", + "tags": [ + "wormholescan" + ], + "operationId": "supply", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/supply.CirculatingSupplyResponse" + } + } + } + } + }, "/api/v1/token/:chain_id/:token_address": { "get": { "description": "Returns a token symbol, coingecko id and address by chain and token address.", @@ -1557,6 +1574,23 @@ const docTemplate = `{ } } }, + "/api/v1/total-supply": { + "get": { + "description": "Get W token total supply.", + "tags": [ + "wormholescan" + ], + "operationId": "total-supply", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/supply.TotalSupplyResponse" + } + } + } + } + }, "/api/v1/transactions/": { "get": { "description": "Returns transactions. Output is paginated.", @@ -3264,6 +3298,9 @@ const docTemplate = `{ "error": { "type": "string" }, + "last_24_hour_volume": { + "type": "number" + }, "last_day_diff_percentage": { "type": "string" }, @@ -3784,6 +3821,22 @@ const docTemplate = `{ } } }, + "supply.CirculatingSupplyResponse": { + "type": "object", + "properties": { + "circulating_supply": { + "type": "string" + } + } + }, + "supply.TotalSupplyResponse": { + "type": "object", + "properties": { + "total_supply": { + "type": "string" + } + } + }, "transactions.AssetWithVolume": { "type": "object", "properties": { @@ -4140,6 +4193,8 @@ const docTemplate = `{ 37, 38, 39, + 40, + 43, 3104, 4000, 4001, @@ -4195,6 +4250,8 @@ const docTemplate = `{ "ChainIDXLayer", "ChainIDLinea", "ChainIDBerachain", + "ChainIDSeiEVM", + "ChainIDSnaxchain", "ChainIDWormchain", "ChainIDCosmoshub", "ChainIDEvmos", diff --git a/api/docs/swagger.json b/api/docs/swagger.json index 3ac50ebd..7f6a2cd2 100644 --- a/api/docs/swagger.json +++ b/api/docs/swagger.json @@ -818,7 +818,7 @@ }, "/api/v1/native-token-transfer/top-holder": { "get": { - "description": "Returns a list of volume of the Native Token Transfer for holder.", + "description": "Returns a list of volume and chain of the Native Token Transfer for top holders.", "tags": [ "wormholescan" ], @@ -1391,6 +1391,23 @@ } } }, + "/api/v1/supply": { + "get": { + "description": "Get W token circulation supply.", + "tags": [ + "wormholescan" + ], + "operationId": "supply", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/supply.CirculatingSupplyResponse" + } + } + } + } + }, "/api/v1/token/:chain_id/:token_address": { "get": { "description": "Returns a token symbol, coingecko id and address by chain and token address.", @@ -1550,6 +1567,23 @@ } } }, + "/api/v1/total-supply": { + "get": { + "description": "Get W token total supply.", + "tags": [ + "wormholescan" + ], + "operationId": "total-supply", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/supply.TotalSupplyResponse" + } + } + } + } + }, "/api/v1/transactions/": { "get": { "description": "Returns transactions. Output is paginated.", @@ -3257,6 +3291,9 @@ "error": { "type": "string" }, + "last_24_hour_volume": { + "type": "number" + }, "last_day_diff_percentage": { "type": "string" }, @@ -3777,6 +3814,22 @@ } } }, + "supply.CirculatingSupplyResponse": { + "type": "object", + "properties": { + "circulating_supply": { + "type": "string" + } + } + }, + "supply.TotalSupplyResponse": { + "type": "object", + "properties": { + "total_supply": { + "type": "string" + } + } + }, "transactions.AssetWithVolume": { "type": "object", "properties": { @@ -4133,6 +4186,8 @@ 37, 38, 39, + 40, + 43, 3104, 4000, 4001, @@ -4188,6 +4243,8 @@ "ChainIDXLayer", "ChainIDLinea", "ChainIDBerachain", + "ChainIDSeiEVM", + "ChainIDSnaxchain", "ChainIDWormchain", "ChainIDCosmoshub", "ChainIDEvmos", diff --git a/api/docs/swagger.yaml b/api/docs/swagger.yaml index 4fa053dc..5743a8e0 100644 --- a/api/docs/swagger.yaml +++ b/api/docs/swagger.yaml @@ -551,6 +551,8 @@ definitions: properties: error: type: string + last_24_hour_volume: + type: number last_day_diff_percentage: type: string last_day_messages: @@ -887,6 +889,16 @@ definitions: volume: type: number type: object + supply.CirculatingSupplyResponse: + properties: + circulating_supply: + type: string + type: object + supply.TotalSupplyResponse: + properties: + total_supply: + type: string + type: object transactions.AssetWithVolume: properties: emitterChain: @@ -1142,6 +1154,8 @@ definitions: - 37 - 38 - 39 + - 40 + - 43 - 3104 - 4000 - 4001 @@ -1197,6 +1211,8 @@ definitions: - ChainIDXLayer - ChainIDLinea - ChainIDBerachain + - ChainIDSeiEVM + - ChainIDSnaxchain - ChainIDWormchain - ChainIDCosmoshub - ChainIDEvmos @@ -1820,7 +1836,8 @@ paths: - wormholescan /api/v1/native-token-transfer/top-holder: get: - description: Returns a list of volume of the Native Token Transfer for holder. + description: Returns a list of volume and chain of the Native Token Transfer + for top holders. operationId: /api/v1/native-token-transfer/top-holder parameters: - description: Symbol of the token. Currently only supports W. @@ -2210,6 +2227,17 @@ paths: description: Internal Server Error tags: - wormholescan + /api/v1/supply: + get: + description: Get W token circulation supply. + operationId: supply + responses: + "200": + description: OK + schema: + $ref: '#/definitions/supply.CirculatingSupplyResponse' + tags: + - wormholescan /api/v1/token/:chain_id/:token_address: get: description: Returns a token symbol, coingecko id and address by chain and token @@ -2321,6 +2349,17 @@ paths: description: Internal Server Error tags: - wormholescan + /api/v1/total-supply: + get: + description: Get W token total supply. + operationId: total-supply + responses: + "200": + description: OK + schema: + $ref: '#/definitions/supply.TotalSupplyResponse' + tags: + - wormholescan /api/v1/transactions/: get: description: Returns transactions. Output is paginated. diff --git a/api/handlers/supply/service.go b/api/handlers/supply/service.go new file mode 100644 index 00000000..3435f44c --- /dev/null +++ b/api/handlers/supply/service.go @@ -0,0 +1,43 @@ +package supply + +import ( + "context" + "time" + + "go.uber.org/zap" +) + +type Service struct { + logger *zap.Logger +} + +func NewService(logger *zap.Logger) *Service { + return &Service{ + logger: logger.With(zap.String("module", "SupplyService")), + } +} + +func (s *Service) getCirculatingSupplyForDate(_ context.Context, date time.Time) Supply { + firstUnlock := Supplies[0] + lastUnlock := Supplies[len(Supplies)-1] + daysDifference := int(date.Sub(firstUnlock.Day).Hours() / 24) // Calculate the difference in days + + if daysDifference < 0 { + // If the date is before the initial date, return 0 + return Supply{} + } else if daysDifference >= len(Supplies) { + // If the date is beyond the last date, return the last unlock + return lastUnlock + } + + // Return the unlocked amount for the calculated index + return Supplies[daysDifference] +} + +func (s *Service) GetCurrentCirculatingSupply(ctx context.Context) Supply { + return s.getCirculatingSupplyForDate(ctx, time.Now()) +} + +func (s *Service) GetTotalSupply(_ context.Context) int { + return TotalSupply +} diff --git a/api/handlers/supply/supply_data.go b/api/handlers/supply/supply_data.go new file mode 100644 index 00000000..900c6bb5 --- /dev/null +++ b/api/handlers/supply/supply_data.go @@ -0,0 +1,1679 @@ +package supply + +import ( + "time" +) + +type Supply struct { + Day time.Time + Unlocked int +} + +var TotalSupply = 10_000_000_000 + +var Supplies = []Supply{ + {Day: parseTime("4/3/24"), Unlocked: 1_800_000_000}, + {Day: parseTime("4/4/24"), Unlocked: 1_801_456_747}, + {Day: parseTime("4/5/24"), Unlocked: 1_802_913_493}, + {Day: parseTime("4/6/24"), Unlocked: 1_804_370_240}, + {Day: parseTime("4/7/24"), Unlocked: 1_805_826_986}, + {Day: parseTime("4/8/24"), Unlocked: 1_807_283_733}, + {Day: parseTime("4/9/24"), Unlocked: 1_808_740_479}, + {Day: parseTime("4/10/24"), Unlocked: 1_810_197_226}, + {Day: parseTime("4/11/24"), Unlocked: 1_811_653_973}, + {Day: parseTime("4/12/24"), Unlocked: 1_813_110_719}, + {Day: parseTime("4/13/24"), Unlocked: 1_814_567_466}, + {Day: parseTime("4/14/24"), Unlocked: 1_816_024_212}, + {Day: parseTime("4/15/24"), Unlocked: 1_817_480_959}, + {Day: parseTime("4/16/24"), Unlocked: 1_818_937_705}, + {Day: parseTime("4/17/24"), Unlocked: 1_820_394_452}, + {Day: parseTime("4/18/24"), Unlocked: 1_821_851_199}, + {Day: parseTime("4/19/24"), Unlocked: 1_823_307_945}, + {Day: parseTime("4/20/24"), Unlocked: 1_824_764_692}, + {Day: parseTime("4/21/24"), Unlocked: 1_826_221_438}, + {Day: parseTime("4/22/24"), Unlocked: 1_827_678_185}, + {Day: parseTime("4/23/24"), Unlocked: 1_829_134_932}, + {Day: parseTime("4/24/24"), Unlocked: 1_830_591_678}, + {Day: parseTime("4/25/24"), Unlocked: 1_832_048_425}, + {Day: parseTime("4/26/24"), Unlocked: 1_833_505_171}, + {Day: parseTime("4/27/24"), Unlocked: 1_834_961_918}, + {Day: parseTime("4/28/24"), Unlocked: 1_836_418_664}, + {Day: parseTime("4/29/24"), Unlocked: 1_837_875_411}, + {Day: parseTime("4/30/24"), Unlocked: 1_839_332_158}, + {Day: parseTime("5/1/24"), Unlocked: 1_840_788_904}, + {Day: parseTime("5/2/24"), Unlocked: 1_842_245_651}, + {Day: parseTime("5/3/24"), Unlocked: 1_843_852_909}, + {Day: parseTime("5/4/24"), Unlocked: 1_845_309_656}, + {Day: parseTime("5/5/24"), Unlocked: 1_846_766_402}, + {Day: parseTime("5/6/24"), Unlocked: 1_848_223_149}, + {Day: parseTime("5/7/24"), Unlocked: 1_849_679_896}, + {Day: parseTime("5/8/24"), Unlocked: 1_851_136_642}, + {Day: parseTime("5/9/24"), Unlocked: 1_852_593_389}, + {Day: parseTime("5/10/24"), Unlocked: 1_854_050_135}, + {Day: parseTime("5/11/24"), Unlocked: 1_855_506_882}, + {Day: parseTime("5/12/24"), Unlocked: 1_856_963_628}, + {Day: parseTime("5/13/24"), Unlocked: 1_858_420_375}, + {Day: parseTime("5/14/24"), Unlocked: 1_859_877_122}, + {Day: parseTime("5/15/24"), Unlocked: 1_861_333_868}, + {Day: parseTime("5/16/24"), Unlocked: 1_862_790_615}, + {Day: parseTime("5/17/24"), Unlocked: 1_864_247_361}, + {Day: parseTime("5/18/24"), Unlocked: 1_865_704_108}, + {Day: parseTime("5/19/24"), Unlocked: 1_867_160_854}, + {Day: parseTime("5/20/24"), Unlocked: 1_868_617_601}, + {Day: parseTime("5/21/24"), Unlocked: 1_870_074_348}, + {Day: parseTime("5/22/24"), Unlocked: 1_871_531_094}, + {Day: parseTime("5/23/24"), Unlocked: 1_872_987_841}, + {Day: parseTime("5/24/24"), Unlocked: 1_874_444_587}, + {Day: parseTime("5/25/24"), Unlocked: 1_875_901_334}, + {Day: parseTime("5/26/24"), Unlocked: 1_877_358_080}, + {Day: parseTime("5/27/24"), Unlocked: 1_878_814_827}, + {Day: parseTime("5/28/24"), Unlocked: 1_880_271_574}, + {Day: parseTime("5/29/24"), Unlocked: 1_881_728_320}, + {Day: parseTime("5/30/24"), Unlocked: 1_883_185_067}, + {Day: parseTime("5/31/24"), Unlocked: 1_884_641_813}, + {Day: parseTime("6/1/24"), Unlocked: 1_886_098_560}, + {Day: parseTime("6/2/24"), Unlocked: 1_887_555_307}, + {Day: parseTime("6/3/24"), Unlocked: 1_889_012_053}, + {Day: parseTime("6/4/24"), Unlocked: 1_890_468_800}, + {Day: parseTime("6/5/24"), Unlocked: 1_891_925_546}, + {Day: parseTime("6/6/24"), Unlocked: 1_893_382_293}, + {Day: parseTime("6/7/24"), Unlocked: 1_894_839_039}, + {Day: parseTime("6/8/24"), Unlocked: 1_896_295_786}, + {Day: parseTime("6/9/24"), Unlocked: 1_897_752_533}, + {Day: parseTime("6/10/24"), Unlocked: 1_899_209_279}, + {Day: parseTime("6/11/24"), Unlocked: 1_900_666_026}, + {Day: parseTime("6/12/24"), Unlocked: 1_902_122_772}, + {Day: parseTime("6/13/24"), Unlocked: 1_903_579_519}, + {Day: parseTime("6/14/24"), Unlocked: 1_905_036_265}, + {Day: parseTime("6/15/24"), Unlocked: 1_906_493_012}, + {Day: parseTime("6/16/24"), Unlocked: 1_907_949_759}, + {Day: parseTime("6/17/24"), Unlocked: 1_909_406_505}, + {Day: parseTime("6/18/24"), Unlocked: 1_910_863_252}, + {Day: parseTime("6/19/24"), Unlocked: 1_912_319_998}, + {Day: parseTime("6/20/24"), Unlocked: 1_913_776_745}, + {Day: parseTime("6/21/24"), Unlocked: 1_915_233_491}, + {Day: parseTime("6/22/24"), Unlocked: 1_916_690_238}, + {Day: parseTime("6/23/24"), Unlocked: 1_918_146_985}, + {Day: parseTime("6/24/24"), Unlocked: 1_919_603_731}, + {Day: parseTime("6/25/24"), Unlocked: 1_921_060_478}, + {Day: parseTime("6/26/24"), Unlocked: 1_922_517_224}, + {Day: parseTime("6/27/24"), Unlocked: 1_923_973_971}, + {Day: parseTime("6/28/24"), Unlocked: 1_925_430_717}, + {Day: parseTime("6/29/24"), Unlocked: 1_926_887_464}, + {Day: parseTime("6/30/24"), Unlocked: 1_928_344_211}, + {Day: parseTime("7/1/24"), Unlocked: 1_929_800_957}, + {Day: parseTime("7/2/24"), Unlocked: 1_931_257_704}, + {Day: parseTime("7/3/24"), Unlocked: 1_932_714_450}, + {Day: parseTime("7/4/24"), Unlocked: 1_934_171_197}, + {Day: parseTime("7/5/24"), Unlocked: 1_935_627_944}, + {Day: parseTime("7/6/24"), Unlocked: 1_937_084_690}, + {Day: parseTime("7/7/24"), Unlocked: 1_938_541_437}, + {Day: parseTime("7/8/24"), Unlocked: 1_939_998_183}, + {Day: parseTime("7/9/24"), Unlocked: 1_941_454_930}, + {Day: parseTime("7/10/24"), Unlocked: 1_942_911_676}, + {Day: parseTime("7/11/24"), Unlocked: 1_944_368_423}, + {Day: parseTime("7/12/24"), Unlocked: 1_945_825_170}, + {Day: parseTime("7/13/24"), Unlocked: 1_947_281_916}, + {Day: parseTime("7/14/24"), Unlocked: 1_948_738_663}, + {Day: parseTime("7/15/24"), Unlocked: 1_950_195_409}, + {Day: parseTime("7/16/24"), Unlocked: 1_951_652_156}, + {Day: parseTime("7/17/24"), Unlocked: 1_953_108_902}, + {Day: parseTime("7/18/24"), Unlocked: 1_954_565_649}, + {Day: parseTime("7/19/24"), Unlocked: 2_556_022_396}, + {Day: parseTime("7/20/24"), Unlocked: 2_557_479_142}, + {Day: parseTime("7/21/24"), Unlocked: 2_558_935_889}, + {Day: parseTime("7/22/24"), Unlocked: 2_560_392_635}, + {Day: parseTime("7/23/24"), Unlocked: 2_561_849_382}, + {Day: parseTime("7/24/24"), Unlocked: 2_563_306_128}, + {Day: parseTime("7/25/24"), Unlocked: 2_564_762_875}, + {Day: parseTime("7/26/24"), Unlocked: 2_566_219_622}, + {Day: parseTime("7/27/24"), Unlocked: 2_567_676_368}, + {Day: parseTime("7/28/24"), Unlocked: 2_569_133_115}, + {Day: parseTime("7/29/24"), Unlocked: 2_570_589_861}, + {Day: parseTime("7/30/24"), Unlocked: 2_572_046_608}, + {Day: parseTime("7/31/24"), Unlocked: 2_573_503_354}, + {Day: parseTime("8/1/24"), Unlocked: 2_574_960_101}, + {Day: parseTime("8/2/24"), Unlocked: 2_576_416_848}, + {Day: parseTime("8/3/24"), Unlocked: 2_577_873_594}, + {Day: parseTime("8/4/24"), Unlocked: 2_579_330_341}, + {Day: parseTime("8/5/24"), Unlocked: 2_580_787_087}, + {Day: parseTime("8/6/24"), Unlocked: 2_582_243_834}, + {Day: parseTime("8/7/24"), Unlocked: 2_583_700_580}, + {Day: parseTime("8/8/24"), Unlocked: 2_585_157_327}, + {Day: parseTime("8/9/24"), Unlocked: 2_586_614_074}, + {Day: parseTime("8/10/24"), Unlocked: 2_588_070_820}, + {Day: parseTime("8/11/24"), Unlocked: 2_589_527_567}, + {Day: parseTime("8/12/24"), Unlocked: 2_590_984_313}, + {Day: parseTime("8/13/24"), Unlocked: 2_592_441_060}, + {Day: parseTime("8/14/24"), Unlocked: 2_593_897_807}, + {Day: parseTime("8/15/24"), Unlocked: 2_595_354_553}, + {Day: parseTime("8/16/24"), Unlocked: 2_596_811_300}, + {Day: parseTime("8/17/24"), Unlocked: 2_598_268_046}, + {Day: parseTime("8/18/24"), Unlocked: 2_599_724_793}, + {Day: parseTime("8/19/24"), Unlocked: 2_601_181_539}, + {Day: parseTime("8/20/24"), Unlocked: 2_602_638_286}, + {Day: parseTime("8/21/24"), Unlocked: 2_604_095_033}, + {Day: parseTime("8/22/24"), Unlocked: 2_605_551_779}, + {Day: parseTime("8/23/24"), Unlocked: 2_607_008_526}, + {Day: parseTime("8/24/24"), Unlocked: 2_608_465_272}, + {Day: parseTime("8/25/24"), Unlocked: 2_609_922_019}, + {Day: parseTime("8/26/24"), Unlocked: 2_611_378_765}, + {Day: parseTime("8/27/24"), Unlocked: 2_612_835_512}, + {Day: parseTime("8/28/24"), Unlocked: 2_614_292_259}, + {Day: parseTime("8/29/24"), Unlocked: 2_615_749_005}, + {Day: parseTime("8/30/24"), Unlocked: 2_617_205_752}, + {Day: parseTime("8/31/24"), Unlocked: 2_618_662_498}, + {Day: parseTime("9/1/24"), Unlocked: 2_620_119_245}, + {Day: parseTime("9/2/24"), Unlocked: 2_621_575_991}, + {Day: parseTime("9/3/24"), Unlocked: 2_623_032_738}, + {Day: parseTime("9/4/24"), Unlocked: 2_624_489_485}, + {Day: parseTime("9/5/24"), Unlocked: 2_625_946_231}, + {Day: parseTime("9/6/24"), Unlocked: 2_627_402_978}, + {Day: parseTime("9/7/24"), Unlocked: 2_628_859_724}, + {Day: parseTime("9/8/24"), Unlocked: 2_630_316_471}, + {Day: parseTime("9/9/24"), Unlocked: 2_631_773_217}, + {Day: parseTime("9/10/24"), Unlocked: 2_633_229_964}, + {Day: parseTime("9/11/24"), Unlocked: 2_634_686_711}, + {Day: parseTime("9/12/24"), Unlocked: 2_636_143_457}, + {Day: parseTime("9/13/24"), Unlocked: 2_637_600_204}, + {Day: parseTime("9/14/24"), Unlocked: 2_639_056_950}, + {Day: parseTime("9/15/24"), Unlocked: 2_640_513_697}, + {Day: parseTime("9/16/24"), Unlocked: 2_641_970_444}, + {Day: parseTime("9/17/24"), Unlocked: 2_643_427_190}, + {Day: parseTime("9/18/24"), Unlocked: 2_644_883_937}, + {Day: parseTime("9/19/24"), Unlocked: 2_646_340_683}, + {Day: parseTime("9/20/24"), Unlocked: 2_647_797_430}, + {Day: parseTime("9/21/24"), Unlocked: 2_649_254_176}, + {Day: parseTime("9/22/24"), Unlocked: 2_650_710_923}, + {Day: parseTime("9/23/24"), Unlocked: 2_652_167_670}, + {Day: parseTime("9/24/24"), Unlocked: 2_653_624_416}, + {Day: parseTime("9/25/24"), Unlocked: 2_655_081_163}, + {Day: parseTime("9/26/24"), Unlocked: 2_656_537_909}, + {Day: parseTime("9/27/24"), Unlocked: 2_657_994_656}, + {Day: parseTime("9/28/24"), Unlocked: 2_659_451_402}, + {Day: parseTime("9/29/24"), Unlocked: 2_660_908_149}, + {Day: parseTime("9/30/24"), Unlocked: 2_662_364_896}, + {Day: parseTime("10/1/24"), Unlocked: 2_663_946_642}, + {Day: parseTime("10/2/24"), Unlocked: 2_665_403_389}, + {Day: parseTime("10/3/24"), Unlocked: 2_666_860_135}, + {Day: parseTime("10/4/24"), Unlocked: 2_668_316_882}, + {Day: parseTime("10/5/24"), Unlocked: 2_669_773_628}, + {Day: parseTime("10/6/24"), Unlocked: 2_671_230_375}, + {Day: parseTime("10/7/24"), Unlocked: 2_672_687_122}, + {Day: parseTime("10/8/24"), Unlocked: 2_674_143_868}, + {Day: parseTime("10/9/24"), Unlocked: 2_675_600_615}, + {Day: parseTime("10/10/24"), Unlocked: 2_677_057_361}, + {Day: parseTime("10/11/24"), Unlocked: 2_678_514_108}, + {Day: parseTime("10/12/24"), Unlocked: 2_679_970_854}, + {Day: parseTime("10/13/24"), Unlocked: 2_681_427_601}, + {Day: parseTime("10/14/24"), Unlocked: 2_682_884_348}, + {Day: parseTime("10/15/24"), Unlocked: 2_684_341_094}, + {Day: parseTime("10/16/24"), Unlocked: 2_685_797_841}, + {Day: parseTime("10/17/24"), Unlocked: 2_687_254_587}, + {Day: parseTime("10/18/24"), Unlocked: 2_688_711_334}, + {Day: parseTime("10/19/24"), Unlocked: 2_690_168_080}, + {Day: parseTime("10/20/24"), Unlocked: 2_691_624_827}, + {Day: parseTime("10/21/24"), Unlocked: 2_693_081_574}, + {Day: parseTime("10/22/24"), Unlocked: 2_694_538_320}, + {Day: parseTime("10/23/24"), Unlocked: 2_695_995_067}, + {Day: parseTime("10/24/24"), Unlocked: 2_697_451_813}, + {Day: parseTime("10/25/24"), Unlocked: 2_698_908_560}, + {Day: parseTime("10/26/24"), Unlocked: 2_700_365_307}, + {Day: parseTime("10/27/24"), Unlocked: 2_701_822_053}, + {Day: parseTime("10/28/24"), Unlocked: 2_703_278_800}, + {Day: parseTime("10/29/24"), Unlocked: 2_704_735_546}, + {Day: parseTime("10/30/24"), Unlocked: 2_706_192_293}, + {Day: parseTime("10/31/24"), Unlocked: 2_707_649_039}, + {Day: parseTime("11/1/24"), Unlocked: 2_709_105_786}, + {Day: parseTime("11/2/24"), Unlocked: 2_710_562_533}, + {Day: parseTime("11/3/24"), Unlocked: 2_712_019_279}, + {Day: parseTime("11/4/24"), Unlocked: 2_713_476_026}, + {Day: parseTime("11/5/24"), Unlocked: 2_714_932_772}, + {Day: parseTime("11/6/24"), Unlocked: 2_716_389_519}, + {Day: parseTime("11/7/24"), Unlocked: 2_717_846_265}, + {Day: parseTime("11/8/24"), Unlocked: 2_719_303_012}, + {Day: parseTime("11/9/24"), Unlocked: 2_720_759_759}, + {Day: parseTime("11/10/24"), Unlocked: 2_722_216_505}, + {Day: parseTime("11/11/24"), Unlocked: 2_723_673_252}, + {Day: parseTime("11/12/24"), Unlocked: 2_725_129_998}, + {Day: parseTime("11/13/24"), Unlocked: 2_726_936_745}, + {Day: parseTime("11/14/24"), Unlocked: 2_728_393_491}, + {Day: parseTime("11/15/24"), Unlocked: 2_729_850_238}, + {Day: parseTime("11/16/24"), Unlocked: 2_731_306_985}, + {Day: parseTime("11/17/24"), Unlocked: 2_732_763_731}, + {Day: parseTime("11/18/24"), Unlocked: 2_734_220_478}, + {Day: parseTime("11/19/24"), Unlocked: 2_735_677_224}, + {Day: parseTime("11/20/24"), Unlocked: 2_737_133_971}, + {Day: parseTime("11/21/24"), Unlocked: 2_738_590_717}, + {Day: parseTime("11/22/24"), Unlocked: 2_740_047_464}, + {Day: parseTime("11/23/24"), Unlocked: 2_741_504_211}, + {Day: parseTime("11/24/24"), Unlocked: 2_742_960_957}, + {Day: parseTime("11/25/24"), Unlocked: 2_744_417_704}, + {Day: parseTime("11/26/24"), Unlocked: 2_745_874_450}, + {Day: parseTime("11/27/24"), Unlocked: 2_747_331_197}, + {Day: parseTime("11/28/24"), Unlocked: 2_748_787_944}, + {Day: parseTime("11/29/24"), Unlocked: 2_750_244_690}, + {Day: parseTime("11/30/24"), Unlocked: 2_751_701_437}, + {Day: parseTime("12/1/24"), Unlocked: 2_753_158_183}, + {Day: parseTime("12/2/24"), Unlocked: 2_754_614_930}, + {Day: parseTime("12/3/24"), Unlocked: 2_756_071_676}, + {Day: parseTime("12/4/24"), Unlocked: 2_757_528_423}, + {Day: parseTime("12/5/24"), Unlocked: 2_758_985_170}, + {Day: parseTime("12/6/24"), Unlocked: 2_760_441_916}, + {Day: parseTime("12/7/24"), Unlocked: 2_761_898_663}, + {Day: parseTime("12/8/24"), Unlocked: 2_763_355_409}, + {Day: parseTime("12/9/24"), Unlocked: 2_764_812_156}, + {Day: parseTime("12/10/24"), Unlocked: 2_766_268_902}, + {Day: parseTime("12/11/24"), Unlocked: 2_767_725_649}, + {Day: parseTime("12/12/24"), Unlocked: 2_769_182_396}, + {Day: parseTime("12/13/24"), Unlocked: 2_770_639_142}, + {Day: parseTime("12/14/24"), Unlocked: 2_772_095_889}, + {Day: parseTime("12/15/24"), Unlocked: 2_773_552_635}, + {Day: parseTime("12/16/24"), Unlocked: 2_775_009_382}, + {Day: parseTime("12/17/24"), Unlocked: 2_776_466_128}, + {Day: parseTime("12/18/24"), Unlocked: 2_777_922_875}, + {Day: parseTime("12/19/24"), Unlocked: 2_779_379_622}, + {Day: parseTime("12/20/24"), Unlocked: 2_780_836_368}, + {Day: parseTime("12/21/24"), Unlocked: 2_782_293_115}, + {Day: parseTime("12/22/24"), Unlocked: 2_783_749_861}, + {Day: parseTime("12/23/24"), Unlocked: 2_785_206_608}, + {Day: parseTime("12/24/24"), Unlocked: 2_786_663_354}, + {Day: parseTime("12/25/24"), Unlocked: 2_788_120_101}, + {Day: parseTime("12/26/24"), Unlocked: 2_789_576_848}, + {Day: parseTime("12/27/24"), Unlocked: 2_791_033_594}, + {Day: parseTime("12/28/24"), Unlocked: 2_792_490_341}, + {Day: parseTime("12/29/24"), Unlocked: 2_793_947_087}, + {Day: parseTime("12/30/24"), Unlocked: 2_795_403_834}, + {Day: parseTime("12/31/24"), Unlocked: 2_796_860_580}, + {Day: parseTime("1/1/25"), Unlocked: 2_798_512_327}, + {Day: parseTime("1/2/25"), Unlocked: 2_799_969_074}, + {Day: parseTime("1/3/25"), Unlocked: 2_801_425_820}, + {Day: parseTime("1/4/25"), Unlocked: 2_802_882_567}, + {Day: parseTime("1/5/25"), Unlocked: 2_804_339_313}, + {Day: parseTime("1/6/25"), Unlocked: 2_805_796_060}, + {Day: parseTime("1/7/25"), Unlocked: 2_807_252_807}, + {Day: parseTime("1/8/25"), Unlocked: 2_808_709_553}, + {Day: parseTime("1/9/25"), Unlocked: 2_810_166_300}, + {Day: parseTime("1/10/25"), Unlocked: 2_811_623_046}, + {Day: parseTime("1/11/25"), Unlocked: 2_813_079_793}, + {Day: parseTime("1/12/25"), Unlocked: 2_814_536_539}, + {Day: parseTime("1/13/25"), Unlocked: 2_815_993_286}, + {Day: parseTime("1/14/25"), Unlocked: 2_817_450_033}, + {Day: parseTime("1/15/25"), Unlocked: 2_818_906_779}, + {Day: parseTime("1/16/25"), Unlocked: 2_820_363_526}, + {Day: parseTime("1/17/25"), Unlocked: 2_821_820_272}, + {Day: parseTime("1/18/25"), Unlocked: 2_823_277_019}, + {Day: parseTime("1/19/25"), Unlocked: 2_824_733_765}, + {Day: parseTime("1/20/25"), Unlocked: 2_826_190_512}, + {Day: parseTime("1/21/25"), Unlocked: 2_827_647_259}, + {Day: parseTime("1/22/25"), Unlocked: 2_829_104_005}, + {Day: parseTime("1/23/25"), Unlocked: 2_830_560_752}, + {Day: parseTime("1/24/25"), Unlocked: 2_832_017_498}, + {Day: parseTime("1/25/25"), Unlocked: 2_833_474_245}, + {Day: parseTime("1/26/25"), Unlocked: 2_834_930_991}, + {Day: parseTime("1/27/25"), Unlocked: 2_836_387_738}, + {Day: parseTime("1/28/25"), Unlocked: 2_837_844_485}, + {Day: parseTime("1/29/25"), Unlocked: 2_839_301_231}, + {Day: parseTime("1/30/25"), Unlocked: 2_840_757_978}, + {Day: parseTime("1/31/25"), Unlocked: 2_842_214_724}, + {Day: parseTime("2/1/25"), Unlocked: 2_843_671_471}, + {Day: parseTime("2/2/25"), Unlocked: 2_845_128_217}, + {Day: parseTime("2/3/25"), Unlocked: 2_846_584_964}, + {Day: parseTime("2/4/25"), Unlocked: 2_848_041_711}, + {Day: parseTime("2/5/25"), Unlocked: 2_849_498_457}, + {Day: parseTime("2/6/25"), Unlocked: 2_850_955_204}, + {Day: parseTime("2/7/25"), Unlocked: 2_852_411_950}, + {Day: parseTime("2/8/25"), Unlocked: 2_853_868_697}, + {Day: parseTime("2/9/25"), Unlocked: 2_855_325_444}, + {Day: parseTime("2/10/25"), Unlocked: 2_856_782_190}, + {Day: parseTime("2/11/25"), Unlocked: 2_858_238_937}, + {Day: parseTime("2/12/25"), Unlocked: 2_859_695_683}, + {Day: parseTime("2/13/25"), Unlocked: 2_861_152_430}, + {Day: parseTime("2/14/25"), Unlocked: 2_862_609_176}, + {Day: parseTime("2/15/25"), Unlocked: 2_864_065_923}, + {Day: parseTime("2/16/25"), Unlocked: 2_865_522_670}, + {Day: parseTime("2/17/25"), Unlocked: 2_866_979_416}, + {Day: parseTime("2/18/25"), Unlocked: 2_868_436_163}, + {Day: parseTime("2/19/25"), Unlocked: 2_869_892_909}, + {Day: parseTime("2/20/25"), Unlocked: 2_871_349_656}, + {Day: parseTime("2/21/25"), Unlocked: 2_872_806_402}, + {Day: parseTime("2/22/25"), Unlocked: 2_874_263_149}, + {Day: parseTime("2/23/25"), Unlocked: 2_875_719_896}, + {Day: parseTime("2/24/25"), Unlocked: 2_877_176_642}, + {Day: parseTime("2/25/25"), Unlocked: 2_878_633_389}, + {Day: parseTime("2/26/25"), Unlocked: 2_880_090_135}, + {Day: parseTime("2/27/25"), Unlocked: 2_881_546_882}, + {Day: parseTime("2/28/25"), Unlocked: 2_883_003_628}, + {Day: parseTime("3/1/25"), Unlocked: 2_884_460_375}, + {Day: parseTime("3/2/25"), Unlocked: 2_885_917_122}, + {Day: parseTime("3/3/25"), Unlocked: 2_887_373_868}, + {Day: parseTime("3/4/25"), Unlocked: 2_888_830_615}, + {Day: parseTime("3/5/25"), Unlocked: 2_890_287_361}, + {Day: parseTime("3/6/25"), Unlocked: 2_891_744_108}, + {Day: parseTime("3/7/25"), Unlocked: 2_893_200_854}, + {Day: parseTime("3/8/25"), Unlocked: 2_894_657_601}, + {Day: parseTime("3/9/25"), Unlocked: 2_896_114_348}, + {Day: parseTime("3/10/25"), Unlocked: 2_897_571_094}, + {Day: parseTime("3/11/25"), Unlocked: 2_899_027_841}, + {Day: parseTime("3/12/25"), Unlocked: 2_900_484_587}, + {Day: parseTime("3/13/25"), Unlocked: 2_901_941_334}, + {Day: parseTime("3/14/25"), Unlocked: 2_903_398_080}, + {Day: parseTime("3/15/25"), Unlocked: 2_904_854_827}, + {Day: parseTime("3/16/25"), Unlocked: 2_906_311_574}, + {Day: parseTime("3/17/25"), Unlocked: 2_907_768_320}, + {Day: parseTime("3/18/25"), Unlocked: 2_909_225_067}, + {Day: parseTime("3/19/25"), Unlocked: 2_911_431_813}, + {Day: parseTime("3/20/25"), Unlocked: 2_912_888_560}, + {Day: parseTime("3/21/25"), Unlocked: 2_914_345_307}, + {Day: parseTime("3/22/25"), Unlocked: 2_915_802_053}, + {Day: parseTime("3/23/25"), Unlocked: 2_917_258_800}, + {Day: parseTime("3/24/25"), Unlocked: 2_918_715_546}, + {Day: parseTime("3/25/25"), Unlocked: 2_920_172_293}, + {Day: parseTime("3/26/25"), Unlocked: 2_921_629_039}, + {Day: parseTime("3/27/25"), Unlocked: 2_923_085_786}, + {Day: parseTime("3/28/25"), Unlocked: 2_924_542_533}, + {Day: parseTime("3/29/25"), Unlocked: 2_925_999_279}, + {Day: parseTime("3/30/25"), Unlocked: 2_927_456_026}, + {Day: parseTime("3/31/25"), Unlocked: 2_928_912_772}, + {Day: parseTime("4/1/25"), Unlocked: 2_932_869_519}, + {Day: parseTime("4/2/25"), Unlocked: 2_934_326_265}, + {Day: parseTime("4/3/25"), Unlocked: 4_520_087_884}, + {Day: parseTime("4/4/25"), Unlocked: 4_521_544_631}, + {Day: parseTime("4/5/25"), Unlocked: 4_523_001_377}, + {Day: parseTime("4/6/25"), Unlocked: 4_524_458_124}, + {Day: parseTime("4/7/25"), Unlocked: 4_525_914_870}, + {Day: parseTime("4/8/25"), Unlocked: 4_527_371_617}, + {Day: parseTime("4/9/25"), Unlocked: 4_528_828_363}, + {Day: parseTime("4/10/25"), Unlocked: 4_530_285_110}, + {Day: parseTime("4/11/25"), Unlocked: 4_531_741_857}, + {Day: parseTime("4/12/25"), Unlocked: 4_533_198_603}, + {Day: parseTime("4/13/25"), Unlocked: 4_534_655_350}, + {Day: parseTime("4/14/25"), Unlocked: 4_536_112_096}, + {Day: parseTime("4/15/25"), Unlocked: 4_537_568_843}, + {Day: parseTime("4/16/25"), Unlocked: 4_539_025_590}, + {Day: parseTime("4/17/25"), Unlocked: 4_540_482_336}, + {Day: parseTime("4/18/25"), Unlocked: 4_541_939_083}, + {Day: parseTime("4/19/25"), Unlocked: 4_543_395_829}, + {Day: parseTime("4/20/25"), Unlocked: 4_544_852_576}, + {Day: parseTime("4/21/25"), Unlocked: 4_546_309_322}, + {Day: parseTime("4/22/25"), Unlocked: 4_547_766_069}, + {Day: parseTime("4/23/25"), Unlocked: 4_549_222_816}, + {Day: parseTime("4/24/25"), Unlocked: 4_550_679_562}, + {Day: parseTime("4/25/25"), Unlocked: 4_552_136_309}, + {Day: parseTime("4/26/25"), Unlocked: 4_553_593_055}, + {Day: parseTime("4/27/25"), Unlocked: 4_555_049_802}, + {Day: parseTime("4/28/25"), Unlocked: 4_556_506_548}, + {Day: parseTime("4/29/25"), Unlocked: 4_557_963_295}, + {Day: parseTime("4/30/25"), Unlocked: 4_559_420_042}, + {Day: parseTime("5/1/25"), Unlocked: 4_560_876_788}, + {Day: parseTime("5/2/25"), Unlocked: 4_562_333_535}, + {Day: parseTime("5/3/25"), Unlocked: 4_563_790_281}, + {Day: parseTime("5/4/25"), Unlocked: 4_565_247_028}, + {Day: parseTime("5/5/25"), Unlocked: 4_566_703_774}, + {Day: parseTime("5/6/25"), Unlocked: 4_568_160_521}, + {Day: parseTime("5/7/25"), Unlocked: 4_569_617_268}, + {Day: parseTime("5/8/25"), Unlocked: 4_571_074_014}, + {Day: parseTime("5/9/25"), Unlocked: 4_572_530_761}, + {Day: parseTime("5/10/25"), Unlocked: 4_573_987_507}, + {Day: parseTime("5/11/25"), Unlocked: 4_575_444_254}, + {Day: parseTime("5/12/25"), Unlocked: 4_576_901_000}, + {Day: parseTime("5/13/25"), Unlocked: 4_578_357_747}, + {Day: parseTime("5/14/25"), Unlocked: 4_579_814_494}, + {Day: parseTime("5/15/25"), Unlocked: 4_581_271_240}, + {Day: parseTime("5/16/25"), Unlocked: 4_582_727_987}, + {Day: parseTime("5/17/25"), Unlocked: 4_584_184_733}, + {Day: parseTime("5/18/25"), Unlocked: 4_585_641_480}, + {Day: parseTime("5/19/25"), Unlocked: 4_587_098_227}, + {Day: parseTime("5/20/25"), Unlocked: 4_588_554_973}, + {Day: parseTime("5/21/25"), Unlocked: 4_590_011_720}, + {Day: parseTime("5/22/25"), Unlocked: 4_591_468_466}, + {Day: parseTime("5/23/25"), Unlocked: 4_592_925_213}, + {Day: parseTime("5/24/25"), Unlocked: 4_594_381_959}, + {Day: parseTime("5/25/25"), Unlocked: 4_595_838_706}, + {Day: parseTime("5/26/25"), Unlocked: 4_597_295_453}, + {Day: parseTime("5/27/25"), Unlocked: 4_598_752_199}, + {Day: parseTime("5/28/25"), Unlocked: 4_600_208_946}, + {Day: parseTime("5/29/25"), Unlocked: 4_601_665_692}, + {Day: parseTime("5/30/25"), Unlocked: 4_603_122_439}, + {Day: parseTime("5/31/25"), Unlocked: 4_604_579_185}, + {Day: parseTime("6/1/25"), Unlocked: 4_606_035_932}, + {Day: parseTime("6/2/25"), Unlocked: 4_607_492_679}, + {Day: parseTime("6/3/25"), Unlocked: 4_608_949_425}, + {Day: parseTime("6/4/25"), Unlocked: 4_610_406_172}, + {Day: parseTime("6/5/25"), Unlocked: 4_611_862_918}, + {Day: parseTime("6/6/25"), Unlocked: 4_613_319_665}, + {Day: parseTime("6/7/25"), Unlocked: 4_614_776_411}, + {Day: parseTime("6/8/25"), Unlocked: 4_616_233_158}, + {Day: parseTime("6/9/25"), Unlocked: 4_617_689_905}, + {Day: parseTime("6/10/25"), Unlocked: 4_619_146_651}, + {Day: parseTime("6/11/25"), Unlocked: 4_620_603_398}, + {Day: parseTime("6/12/25"), Unlocked: 4_622_060_144}, + {Day: parseTime("6/13/25"), Unlocked: 4_623_516_891}, + {Day: parseTime("6/14/25"), Unlocked: 4_624_973_637}, + {Day: parseTime("6/15/25"), Unlocked: 4_626_430_384}, + {Day: parseTime("6/16/25"), Unlocked: 4_627_887_131}, + {Day: parseTime("6/17/25"), Unlocked: 4_629_343_877}, + {Day: parseTime("6/18/25"), Unlocked: 4_630_800_624}, + {Day: parseTime("6/19/25"), Unlocked: 4_632_257_370}, + {Day: parseTime("6/20/25"), Unlocked: 4_633_714_117}, + {Day: parseTime("6/21/25"), Unlocked: 4_635_170_863}, + {Day: parseTime("6/22/25"), Unlocked: 4_636_627_610}, + {Day: parseTime("6/23/25"), Unlocked: 4_638_084_357}, + {Day: parseTime("6/24/25"), Unlocked: 4_639_541_103}, + {Day: parseTime("6/25/25"), Unlocked: 4_640_997_850}, + {Day: parseTime("6/26/25"), Unlocked: 4_642_454_596}, + {Day: parseTime("6/27/25"), Unlocked: 4_643_911_343}, + {Day: parseTime("6/28/25"), Unlocked: 4_645_368_090}, + {Day: parseTime("6/29/25"), Unlocked: 4_646_824_836}, + {Day: parseTime("6/30/25"), Unlocked: 4_648_281_583}, + {Day: parseTime("7/1/25"), Unlocked: 4_649_769_579}, + {Day: parseTime("7/2/25"), Unlocked: 4_651_226_326}, + {Day: parseTime("7/3/25"), Unlocked: 4_652_683_072}, + {Day: parseTime("7/4/25"), Unlocked: 4_654_139_819}, + {Day: parseTime("7/5/25"), Unlocked: 4_655_596_566}, + {Day: parseTime("7/6/25"), Unlocked: 4_657_053_312}, + {Day: parseTime("7/7/25"), Unlocked: 4_658_510_059}, + {Day: parseTime("7/8/25"), Unlocked: 4_659_966_805}, + {Day: parseTime("7/9/25"), Unlocked: 4_661_423_552}, + {Day: parseTime("7/10/25"), Unlocked: 4_662_880_298}, + {Day: parseTime("7/11/25"), Unlocked: 4_664_337_045}, + {Day: parseTime("7/12/25"), Unlocked: 4_665_793_792}, + {Day: parseTime("7/13/25"), Unlocked: 4_667_250_538}, + {Day: parseTime("7/14/25"), Unlocked: 4_668_707_285}, + {Day: parseTime("7/15/25"), Unlocked: 4_670_164_031}, + {Day: parseTime("7/16/25"), Unlocked: 4_671_620_778}, + {Day: parseTime("7/17/25"), Unlocked: 4_673_077_524}, + {Day: parseTime("7/18/25"), Unlocked: 4_674_534_271}, + {Day: parseTime("7/19/25"), Unlocked: 4_675_991_018}, + {Day: parseTime("7/20/25"), Unlocked: 4_677_447_764}, + {Day: parseTime("7/21/25"), Unlocked: 4_678_904_511}, + {Day: parseTime("7/22/25"), Unlocked: 4_680_361_257}, + {Day: parseTime("7/23/25"), Unlocked: 4_681_818_004}, + {Day: parseTime("7/24/25"), Unlocked: 4_683_274_750}, + {Day: parseTime("7/25/25"), Unlocked: 4_684_731_497}, + {Day: parseTime("7/26/25"), Unlocked: 4_686_188_244}, + {Day: parseTime("7/27/25"), Unlocked: 4_687_644_990}, + {Day: parseTime("7/28/25"), Unlocked: 4_689_101_737}, + {Day: parseTime("7/29/25"), Unlocked: 4_690_558_483}, + {Day: parseTime("7/30/25"), Unlocked: 4_692_015_230}, + {Day: parseTime("7/31/25"), Unlocked: 4_693_471_977}, + {Day: parseTime("8/1/25"), Unlocked: 4_694_928_723}, + {Day: parseTime("8/2/25"), Unlocked: 4_696_385_470}, + {Day: parseTime("8/3/25"), Unlocked: 4_697_842_216}, + {Day: parseTime("8/4/25"), Unlocked: 4_699_298_963}, + {Day: parseTime("8/5/25"), Unlocked: 4_700_755_709}, + {Day: parseTime("8/6/25"), Unlocked: 4_702_212_456}, + {Day: parseTime("8/7/25"), Unlocked: 4_703_669_203}, + {Day: parseTime("8/8/25"), Unlocked: 4_705_125_949}, + {Day: parseTime("8/9/25"), Unlocked: 4_706_582_696}, + {Day: parseTime("8/10/25"), Unlocked: 4_708_039_442}, + {Day: parseTime("8/11/25"), Unlocked: 4_709_496_189}, + {Day: parseTime("8/12/25"), Unlocked: 4_710_952_935}, + {Day: parseTime("8/13/25"), Unlocked: 4_712_409_682}, + {Day: parseTime("8/14/25"), Unlocked: 4_713_866_429}, + {Day: parseTime("8/15/25"), Unlocked: 4_715_323_175}, + {Day: parseTime("8/16/25"), Unlocked: 4_716_779_922}, + {Day: parseTime("8/17/25"), Unlocked: 4_718_236_668}, + {Day: parseTime("8/18/25"), Unlocked: 4_719_693_415}, + {Day: parseTime("8/19/25"), Unlocked: 4_721_150_161}, + {Day: parseTime("8/20/25"), Unlocked: 4_722_606_908}, + {Day: parseTime("8/21/25"), Unlocked: 4_724_063_655}, + {Day: parseTime("8/22/25"), Unlocked: 4_725_520_401}, + {Day: parseTime("8/23/25"), Unlocked: 4_726_977_148}, + {Day: parseTime("8/24/25"), Unlocked: 4_728_433_894}, + {Day: parseTime("8/25/25"), Unlocked: 4_729_890_641}, + {Day: parseTime("8/26/25"), Unlocked: 4_731_347_387}, + {Day: parseTime("8/27/25"), Unlocked: 4_732_804_134}, + {Day: parseTime("8/28/25"), Unlocked: 4_734_260_881}, + {Day: parseTime("8/29/25"), Unlocked: 4_735_717_627}, + {Day: parseTime("8/30/25"), Unlocked: 4_737_174_374}, + {Day: parseTime("8/31/25"), Unlocked: 4_738_631_120}, + {Day: parseTime("9/1/25"), Unlocked: 4_740_087_867}, + {Day: parseTime("9/2/25"), Unlocked: 4_741_544_613}, + {Day: parseTime("9/3/25"), Unlocked: 4_743_001_360}, + {Day: parseTime("9/4/25"), Unlocked: 4_744_458_107}, + {Day: parseTime("9/5/25"), Unlocked: 4_745_914_853}, + {Day: parseTime("9/6/25"), Unlocked: 4_747_371_600}, + {Day: parseTime("9/7/25"), Unlocked: 4_748_828_346}, + {Day: parseTime("9/8/25"), Unlocked: 4_750_285_093}, + {Day: parseTime("9/9/25"), Unlocked: 4_751_741_840}, + {Day: parseTime("9/10/25"), Unlocked: 4_753_198_586}, + {Day: parseTime("9/11/25"), Unlocked: 4_754_655_333}, + {Day: parseTime("9/12/25"), Unlocked: 4_756_112_079}, + {Day: parseTime("9/13/25"), Unlocked: 4_757_568_826}, + {Day: parseTime("9/14/25"), Unlocked: 4_759_025_572}, + {Day: parseTime("9/15/25"), Unlocked: 4_760_482_319}, + {Day: parseTime("9/16/25"), Unlocked: 4_761_939_066}, + {Day: parseTime("9/17/25"), Unlocked: 4_763_395_812}, + {Day: parseTime("9/18/25"), Unlocked: 4_764_852_559}, + {Day: parseTime("9/19/25"), Unlocked: 4_766_309_305}, + {Day: parseTime("9/20/25"), Unlocked: 4_767_766_052}, + {Day: parseTime("9/21/25"), Unlocked: 4_769_222_798}, + {Day: parseTime("9/22/25"), Unlocked: 4_770_679_545}, + {Day: parseTime("9/23/25"), Unlocked: 4_772_136_292}, + {Day: parseTime("9/24/25"), Unlocked: 4_773_593_038}, + {Day: parseTime("9/25/25"), Unlocked: 4_775_049_785}, + {Day: parseTime("9/26/25"), Unlocked: 4_776_506_531}, + {Day: parseTime("9/27/25"), Unlocked: 4_777_963_278}, + {Day: parseTime("9/28/25"), Unlocked: 4_779_420_024}, + {Day: parseTime("9/29/25"), Unlocked: 4_780_876_771}, + {Day: parseTime("9/30/25"), Unlocked: 4_782_333_518}, + {Day: parseTime("10/1/25"), Unlocked: 4_783_870_264}, + {Day: parseTime("10/2/25"), Unlocked: 4_785_327_011}, + {Day: parseTime("10/3/25"), Unlocked: 4_786_783_757}, + {Day: parseTime("10/4/25"), Unlocked: 4_788_240_504}, + {Day: parseTime("10/5/25"), Unlocked: 4_789_697_250}, + {Day: parseTime("10/6/25"), Unlocked: 4_791_153_997}, + {Day: parseTime("10/7/25"), Unlocked: 4_792_610_744}, + {Day: parseTime("10/8/25"), Unlocked: 4_794_067_490}, + {Day: parseTime("10/9/25"), Unlocked: 4_795_524_237}, + {Day: parseTime("10/10/25"), Unlocked: 4_796_980_983}, + {Day: parseTime("10/11/25"), Unlocked: 4_798_437_730}, + {Day: parseTime("10/12/25"), Unlocked: 4_799_894_477}, + {Day: parseTime("10/13/25"), Unlocked: 4_801_351_223}, + {Day: parseTime("10/14/25"), Unlocked: 4_802_807_970}, + {Day: parseTime("10/15/25"), Unlocked: 4_804_264_716}, + {Day: parseTime("10/16/25"), Unlocked: 4_805_721_463}, + {Day: parseTime("10/17/25"), Unlocked: 4_807_178_209}, + {Day: parseTime("10/18/25"), Unlocked: 4_808_634_956}, + {Day: parseTime("10/19/25"), Unlocked: 4_810_091_703}, + {Day: parseTime("10/20/25"), Unlocked: 4_811_548_449}, + {Day: parseTime("10/21/25"), Unlocked: 4_813_005_196}, + {Day: parseTime("10/22/25"), Unlocked: 4_814_461_942}, + {Day: parseTime("10/23/25"), Unlocked: 4_815_918_689}, + {Day: parseTime("10/24/25"), Unlocked: 4_817_375_435}, + {Day: parseTime("10/25/25"), Unlocked: 4_818_832_182}, + {Day: parseTime("10/26/25"), Unlocked: 4_820_288_929}, + {Day: parseTime("10/27/25"), Unlocked: 4_821_745_675}, + {Day: parseTime("10/28/25"), Unlocked: 4_823_202_422}, + {Day: parseTime("10/29/25"), Unlocked: 4_824_659_168}, + {Day: parseTime("10/30/25"), Unlocked: 4_826_115_915}, + {Day: parseTime("10/31/25"), Unlocked: 4_827_572_661}, + {Day: parseTime("11/1/25"), Unlocked: 4_829_029_408}, + {Day: parseTime("11/2/25"), Unlocked: 4_830_486_155}, + {Day: parseTime("11/3/25"), Unlocked: 4_831_942_901}, + {Day: parseTime("11/4/25"), Unlocked: 4_833_399_648}, + {Day: parseTime("11/5/25"), Unlocked: 4_834_856_394}, + {Day: parseTime("11/6/25"), Unlocked: 4_836_313_141}, + {Day: parseTime("11/7/25"), Unlocked: 4_837_769_887}, + {Day: parseTime("11/8/25"), Unlocked: 4_839_226_634}, + {Day: parseTime("11/9/25"), Unlocked: 4_840_683_381}, + {Day: parseTime("11/10/25"), Unlocked: 4_842_140_127}, + {Day: parseTime("11/11/25"), Unlocked: 4_843_596_874}, + {Day: parseTime("11/12/25"), Unlocked: 4_845_053_620}, + {Day: parseTime("11/13/25"), Unlocked: 4_846_860_367}, + {Day: parseTime("11/14/25"), Unlocked: 4_848_317_113}, + {Day: parseTime("11/15/25"), Unlocked: 4_849_773_860}, + {Day: parseTime("11/16/25"), Unlocked: 4_851_230_607}, + {Day: parseTime("11/17/25"), Unlocked: 4_852_687_353}, + {Day: parseTime("11/18/25"), Unlocked: 4_854_144_100}, + {Day: parseTime("11/19/25"), Unlocked: 4_855_600_846}, + {Day: parseTime("11/20/25"), Unlocked: 4_857_057_593}, + {Day: parseTime("11/21/25"), Unlocked: 4_858_514_340}, + {Day: parseTime("11/22/25"), Unlocked: 4_859_971_086}, + {Day: parseTime("11/23/25"), Unlocked: 4_861_427_833}, + {Day: parseTime("11/24/25"), Unlocked: 4_862_884_579}, + {Day: parseTime("11/25/25"), Unlocked: 4_864_341_326}, + {Day: parseTime("11/26/25"), Unlocked: 4_865_798_072}, + {Day: parseTime("11/27/25"), Unlocked: 4_867_254_819}, + {Day: parseTime("11/28/25"), Unlocked: 4_868_711_566}, + {Day: parseTime("11/29/25"), Unlocked: 4_870_168_312}, + {Day: parseTime("11/30/25"), Unlocked: 4_871_625_059}, + {Day: parseTime("12/1/25"), Unlocked: 4_873_081_805}, + {Day: parseTime("12/2/25"), Unlocked: 4_874_538_552}, + {Day: parseTime("12/3/25"), Unlocked: 4_875_995_298}, + {Day: parseTime("12/4/25"), Unlocked: 4_877_452_045}, + {Day: parseTime("12/5/25"), Unlocked: 4_878_908_792}, + {Day: parseTime("12/6/25"), Unlocked: 4_880_365_538}, + {Day: parseTime("12/7/25"), Unlocked: 4_881_822_285}, + {Day: parseTime("12/8/25"), Unlocked: 4_883_279_031}, + {Day: parseTime("12/9/25"), Unlocked: 4_884_735_778}, + {Day: parseTime("12/10/25"), Unlocked: 4_886_192_524}, + {Day: parseTime("12/11/25"), Unlocked: 4_887_649_271}, + {Day: parseTime("12/12/25"), Unlocked: 4_889_106_018}, + {Day: parseTime("12/13/25"), Unlocked: 4_890_562_764}, + {Day: parseTime("12/14/25"), Unlocked: 4_892_019_511}, + {Day: parseTime("12/15/25"), Unlocked: 4_893_476_257}, + {Day: parseTime("12/16/25"), Unlocked: 4_894_933_004}, + {Day: parseTime("12/17/25"), Unlocked: 4_896_389_750}, + {Day: parseTime("12/18/25"), Unlocked: 4_897_846_497}, + {Day: parseTime("12/19/25"), Unlocked: 4_899_303_244}, + {Day: parseTime("12/20/25"), Unlocked: 4_900_759_990}, + {Day: parseTime("12/21/25"), Unlocked: 4_902_216_737}, + {Day: parseTime("12/22/25"), Unlocked: 4_903_673_483}, + {Day: parseTime("12/23/25"), Unlocked: 4_905_130_230}, + {Day: parseTime("12/24/25"), Unlocked: 4_906_586_977}, + {Day: parseTime("12/25/25"), Unlocked: 4_908_043_723}, + {Day: parseTime("12/26/25"), Unlocked: 4_909_500_470}, + {Day: parseTime("12/27/25"), Unlocked: 4_910_957_216}, + {Day: parseTime("12/28/25"), Unlocked: 4_912_413_963}, + {Day: parseTime("12/29/25"), Unlocked: 4_913_870_709}, + {Day: parseTime("12/30/25"), Unlocked: 4_915_327_456}, + {Day: parseTime("12/31/25"), Unlocked: 4_916_784_203}, + {Day: parseTime("1/1/26"), Unlocked: 4_918_945_949}, + {Day: parseTime("1/2/26"), Unlocked: 4_920_402_696}, + {Day: parseTime("1/3/26"), Unlocked: 4_921_859_442}, + {Day: parseTime("1/4/26"), Unlocked: 4_923_316_189}, + {Day: parseTime("1/5/26"), Unlocked: 4_924_772_935}, + {Day: parseTime("1/6/26"), Unlocked: 4_926_229_682}, + {Day: parseTime("1/7/26"), Unlocked: 4_927_686_429}, + {Day: parseTime("1/8/26"), Unlocked: 4_929_143_175}, + {Day: parseTime("1/9/26"), Unlocked: 4_930_599_922}, + {Day: parseTime("1/10/26"), Unlocked: 4_932_056_668}, + {Day: parseTime("1/11/26"), Unlocked: 4_933_513_415}, + {Day: parseTime("1/12/26"), Unlocked: 4_934_970_161}, + {Day: parseTime("1/13/26"), Unlocked: 4_936_426_908}, + {Day: parseTime("1/14/26"), Unlocked: 4_937_883_655}, + {Day: parseTime("1/15/26"), Unlocked: 4_939_340_401}, + {Day: parseTime("1/16/26"), Unlocked: 4_940_797_148}, + {Day: parseTime("1/17/26"), Unlocked: 4_942_253_894}, + {Day: parseTime("1/18/26"), Unlocked: 4_943_710_641}, + {Day: parseTime("1/19/26"), Unlocked: 4_945_167_387}, + {Day: parseTime("1/20/26"), Unlocked: 4_946_624_134}, + {Day: parseTime("1/21/26"), Unlocked: 4_948_080_881}, + {Day: parseTime("1/22/26"), Unlocked: 4_949_537_627}, + {Day: parseTime("1/23/26"), Unlocked: 4_950_994_374}, + {Day: parseTime("1/24/26"), Unlocked: 4_952_451_120}, + {Day: parseTime("1/25/26"), Unlocked: 4_953_907_867}, + {Day: parseTime("1/26/26"), Unlocked: 4_955_364_613}, + {Day: parseTime("1/27/26"), Unlocked: 4_956_821_360}, + {Day: parseTime("1/28/26"), Unlocked: 4_958_278_107}, + {Day: parseTime("1/29/26"), Unlocked: 4_959_734_853}, + {Day: parseTime("1/30/26"), Unlocked: 4_961_191_600}, + {Day: parseTime("1/31/26"), Unlocked: 4_962_648_346}, + {Day: parseTime("2/1/26"), Unlocked: 4_964_105_093}, + {Day: parseTime("2/2/26"), Unlocked: 4_965_561_840}, + {Day: parseTime("2/3/26"), Unlocked: 4_967_018_586}, + {Day: parseTime("2/4/26"), Unlocked: 4_968_475_333}, + {Day: parseTime("2/5/26"), Unlocked: 4_969_932_079}, + {Day: parseTime("2/6/26"), Unlocked: 4_971_388_826}, + {Day: parseTime("2/7/26"), Unlocked: 4_972_845_572}, + {Day: parseTime("2/8/26"), Unlocked: 4_974_302_319}, + {Day: parseTime("2/9/26"), Unlocked: 4_975_759_066}, + {Day: parseTime("2/10/26"), Unlocked: 4_977_215_812}, + {Day: parseTime("2/11/26"), Unlocked: 4_978_672_559}, + {Day: parseTime("2/12/26"), Unlocked: 4_980_129_305}, + {Day: parseTime("2/13/26"), Unlocked: 4_981_586_052}, + {Day: parseTime("2/14/26"), Unlocked: 4_983_042_798}, + {Day: parseTime("2/15/26"), Unlocked: 4_984_499_545}, + {Day: parseTime("2/16/26"), Unlocked: 4_985_956_292}, + {Day: parseTime("2/17/26"), Unlocked: 4_987_413_038}, + {Day: parseTime("2/18/26"), Unlocked: 4_988_869_785}, + {Day: parseTime("2/19/26"), Unlocked: 4_990_326_531}, + {Day: parseTime("2/20/26"), Unlocked: 4_991_783_278}, + {Day: parseTime("2/21/26"), Unlocked: 4_993_240_024}, + {Day: parseTime("2/22/26"), Unlocked: 4_994_696_771}, + {Day: parseTime("2/23/26"), Unlocked: 4_996_153_518}, + {Day: parseTime("2/24/26"), Unlocked: 4_997_610_264}, + {Day: parseTime("2/25/26"), Unlocked: 4_999_067_011}, + {Day: parseTime("2/26/26"), Unlocked: 5_000_523_757}, + {Day: parseTime("2/27/26"), Unlocked: 5_001_980_504}, + {Day: parseTime("2/28/26"), Unlocked: 5_003_437_250}, + {Day: parseTime("3/1/26"), Unlocked: 5_004_893_997}, + {Day: parseTime("3/2/26"), Unlocked: 5_006_350_744}, + {Day: parseTime("3/3/26"), Unlocked: 5_007_807_490}, + {Day: parseTime("3/4/26"), Unlocked: 5_009_264_237}, + {Day: parseTime("3/5/26"), Unlocked: 5_010_720_983}, + {Day: parseTime("3/6/26"), Unlocked: 5_012_177_730}, + {Day: parseTime("3/7/26"), Unlocked: 5_013_634_477}, + {Day: parseTime("3/8/26"), Unlocked: 5_015_091_223}, + {Day: parseTime("3/9/26"), Unlocked: 5_016_547_970}, + {Day: parseTime("3/10/26"), Unlocked: 5_018_004_716}, + {Day: parseTime("3/11/26"), Unlocked: 5_019_461_463}, + {Day: parseTime("3/12/26"), Unlocked: 5_020_918_209}, + {Day: parseTime("3/13/26"), Unlocked: 5_022_374_956}, + {Day: parseTime("3/14/26"), Unlocked: 5_023_831_703}, + {Day: parseTime("3/15/26"), Unlocked: 5_025_288_449}, + {Day: parseTime("3/16/26"), Unlocked: 5_026_745_196}, + {Day: parseTime("3/17/26"), Unlocked: 5_028_201_942}, + {Day: parseTime("3/18/26"), Unlocked: 5_029_658_689}, + {Day: parseTime("3/19/26"), Unlocked: 5_031_865_435}, + {Day: parseTime("3/20/26"), Unlocked: 5_033_322_182}, + {Day: parseTime("3/21/26"), Unlocked: 5_034_778_929}, + {Day: parseTime("3/22/26"), Unlocked: 5_036_235_675}, + {Day: parseTime("3/23/26"), Unlocked: 5_037_692_422}, + {Day: parseTime("3/24/26"), Unlocked: 5_039_149_168}, + {Day: parseTime("3/25/26"), Unlocked: 5_040_605_915}, + {Day: parseTime("3/26/26"), Unlocked: 5_042_062_661}, + {Day: parseTime("3/27/26"), Unlocked: 5_043_519_408}, + {Day: parseTime("3/28/26"), Unlocked: 5_044_976_155}, + {Day: parseTime("3/29/26"), Unlocked: 5_046_432_901}, + {Day: parseTime("3/30/26"), Unlocked: 5_047_889_648}, + {Day: parseTime("3/31/26"), Unlocked: 5_049_346_394}, + {Day: parseTime("4/1/26"), Unlocked: 5_051_508_141}, + {Day: parseTime("4/2/26"), Unlocked: 5_052_964_887}, + {Day: parseTime("4/3/26"), Unlocked: 6_418_926_506}, + {Day: parseTime("4/4/26"), Unlocked: 6_420_383_253}, + {Day: parseTime("4/5/26"), Unlocked: 6_421_839_999}, + {Day: parseTime("4/6/26"), Unlocked: 6_423_296_746}, + {Day: parseTime("4/7/26"), Unlocked: 6_424_753_492}, + {Day: parseTime("4/8/26"), Unlocked: 6_426_210_239}, + {Day: parseTime("4/9/26"), Unlocked: 6_427_666_986}, + {Day: parseTime("4/10/26"), Unlocked: 6_429_123_732}, + {Day: parseTime("4/11/26"), Unlocked: 6_430_580_479}, + {Day: parseTime("4/12/26"), Unlocked: 6_432_037_225}, + {Day: parseTime("4/13/26"), Unlocked: 6_433_493_972}, + {Day: parseTime("4/14/26"), Unlocked: 6_434_950_718}, + {Day: parseTime("4/15/26"), Unlocked: 6_436_407_465}, + {Day: parseTime("4/16/26"), Unlocked: 6_437_864_212}, + {Day: parseTime("4/17/26"), Unlocked: 6_439_320_958}, + {Day: parseTime("4/18/26"), Unlocked: 6_440_777_705}, + {Day: parseTime("4/19/26"), Unlocked: 6_442_234_451}, + {Day: parseTime("4/20/26"), Unlocked: 6_443_691_198}, + {Day: parseTime("4/21/26"), Unlocked: 6_445_147_944}, + {Day: parseTime("4/22/26"), Unlocked: 6_446_604_691}, + {Day: parseTime("4/23/26"), Unlocked: 6_448_061_438}, + {Day: parseTime("4/24/26"), Unlocked: 6_449_518_184}, + {Day: parseTime("4/25/26"), Unlocked: 6_450_974_931}, + {Day: parseTime("4/26/26"), Unlocked: 6_452_431_677}, + {Day: parseTime("4/27/26"), Unlocked: 6_453_888_424}, + {Day: parseTime("4/28/26"), Unlocked: 6_455_345_170}, + {Day: parseTime("4/29/26"), Unlocked: 6_456_801_917}, + {Day: parseTime("4/30/26"), Unlocked: 6_458_258_664}, + {Day: parseTime("5/1/26"), Unlocked: 6_459_715_410}, + {Day: parseTime("5/2/26"), Unlocked: 6_461_172_157}, + {Day: parseTime("5/3/26"), Unlocked: 6_462_628_903}, + {Day: parseTime("5/4/26"), Unlocked: 6_464_085_650}, + {Day: parseTime("5/5/26"), Unlocked: 6_465_542_396}, + {Day: parseTime("5/6/26"), Unlocked: 6_466_999_143}, + {Day: parseTime("5/7/26"), Unlocked: 6_468_455_890}, + {Day: parseTime("5/8/26"), Unlocked: 6_469_912_636}, + {Day: parseTime("5/9/26"), Unlocked: 6_471_369_383}, + {Day: parseTime("5/10/26"), Unlocked: 6_472_826_129}, + {Day: parseTime("5/11/26"), Unlocked: 6_474_282_876}, + {Day: parseTime("5/12/26"), Unlocked: 6_475_739_623}, + {Day: parseTime("5/13/26"), Unlocked: 6_477_196_369}, + {Day: parseTime("5/14/26"), Unlocked: 6_478_653_116}, + {Day: parseTime("5/15/26"), Unlocked: 6_480_109_862}, + {Day: parseTime("5/16/26"), Unlocked: 6_481_566_609}, + {Day: parseTime("5/17/26"), Unlocked: 6_483_023_355}, + {Day: parseTime("5/18/26"), Unlocked: 6_484_480_102}, + {Day: parseTime("5/19/26"), Unlocked: 6_485_936_849}, + {Day: parseTime("5/20/26"), Unlocked: 6_487_393_595}, + {Day: parseTime("5/21/26"), Unlocked: 6_488_850_342}, + {Day: parseTime("5/22/26"), Unlocked: 6_490_307_088}, + {Day: parseTime("5/23/26"), Unlocked: 6_491_763_835}, + {Day: parseTime("5/24/26"), Unlocked: 6_493_220_581}, + {Day: parseTime("5/25/26"), Unlocked: 6_494_677_328}, + {Day: parseTime("5/26/26"), Unlocked: 6_496_134_075}, + {Day: parseTime("5/27/26"), Unlocked: 6_497_590_821}, + {Day: parseTime("5/28/26"), Unlocked: 6_499_047_568}, + {Day: parseTime("5/29/26"), Unlocked: 6_500_504_314}, + {Day: parseTime("5/30/26"), Unlocked: 6_501_961_061}, + {Day: parseTime("5/31/26"), Unlocked: 6_503_417_807}, + {Day: parseTime("6/1/26"), Unlocked: 6_504_874_554}, + {Day: parseTime("6/2/26"), Unlocked: 6_506_331_301}, + {Day: parseTime("6/3/26"), Unlocked: 6_507_788_047}, + {Day: parseTime("6/4/26"), Unlocked: 6_509_244_794}, + {Day: parseTime("6/5/26"), Unlocked: 6_510_701_540}, + {Day: parseTime("6/6/26"), Unlocked: 6_512_158_287}, + {Day: parseTime("6/7/26"), Unlocked: 6_513_615_033}, + {Day: parseTime("6/8/26"), Unlocked: 6_515_071_780}, + {Day: parseTime("6/9/26"), Unlocked: 6_516_528_527}, + {Day: parseTime("6/10/26"), Unlocked: 6_517_985_273}, + {Day: parseTime("6/11/26"), Unlocked: 6_519_442_020}, + {Day: parseTime("6/12/26"), Unlocked: 6_520_898_766}, + {Day: parseTime("6/13/26"), Unlocked: 6_522_355_513}, + {Day: parseTime("6/14/26"), Unlocked: 6_523_812_259}, + {Day: parseTime("6/15/26"), Unlocked: 6_525_269_006}, + {Day: parseTime("6/16/26"), Unlocked: 6_526_725_753}, + {Day: parseTime("6/17/26"), Unlocked: 6_528_182_499}, + {Day: parseTime("6/18/26"), Unlocked: 6_529_639_246}, + {Day: parseTime("6/19/26"), Unlocked: 6_531_095_992}, + {Day: parseTime("6/20/26"), Unlocked: 6_532_552_739}, + {Day: parseTime("6/21/26"), Unlocked: 6_534_009_486}, + {Day: parseTime("6/22/26"), Unlocked: 6_535_466_232}, + {Day: parseTime("6/23/26"), Unlocked: 6_536_922_979}, + {Day: parseTime("6/24/26"), Unlocked: 6_538_379_725}, + {Day: parseTime("6/25/26"), Unlocked: 6_539_836_472}, + {Day: parseTime("6/26/26"), Unlocked: 6_541_293_218}, + {Day: parseTime("6/27/26"), Unlocked: 6_542_749_965}, + {Day: parseTime("6/28/26"), Unlocked: 6_544_206_712}, + {Day: parseTime("6/29/26"), Unlocked: 6_545_663_458}, + {Day: parseTime("6/30/26"), Unlocked: 6_547_120_205}, + {Day: parseTime("7/1/26"), Unlocked: 6_549_281_951}, + {Day: parseTime("7/2/26"), Unlocked: 6_550_738_698}, + {Day: parseTime("7/3/26"), Unlocked: 6_552_195_444}, + {Day: parseTime("7/4/26"), Unlocked: 6_553_652_191}, + {Day: parseTime("7/5/26"), Unlocked: 6_555_108_938}, + {Day: parseTime("7/6/26"), Unlocked: 6_556_565_684}, + {Day: parseTime("7/7/26"), Unlocked: 6_558_022_431}, + {Day: parseTime("7/8/26"), Unlocked: 6_559_479_177}, + {Day: parseTime("7/9/26"), Unlocked: 6_560_935_924}, + {Day: parseTime("7/10/26"), Unlocked: 6_562_392_670}, + {Day: parseTime("7/11/26"), Unlocked: 6_563_849_417}, + {Day: parseTime("7/12/26"), Unlocked: 6_565_306_164}, + {Day: parseTime("7/13/26"), Unlocked: 6_566_762_910}, + {Day: parseTime("7/14/26"), Unlocked: 6_568_219_657}, + {Day: parseTime("7/15/26"), Unlocked: 6_569_676_403}, + {Day: parseTime("7/16/26"), Unlocked: 6_571_133_150}, + {Day: parseTime("7/17/26"), Unlocked: 6_572_589_896}, + {Day: parseTime("7/18/26"), Unlocked: 6_574_046_643}, + {Day: parseTime("7/19/26"), Unlocked: 6_575_503_390}, + {Day: parseTime("7/20/26"), Unlocked: 6_576_960_136}, + {Day: parseTime("7/21/26"), Unlocked: 6_578_416_883}, + {Day: parseTime("7/22/26"), Unlocked: 6_579_873_629}, + {Day: parseTime("7/23/26"), Unlocked: 6_581_330_376}, + {Day: parseTime("7/24/26"), Unlocked: 6_582_787_123}, + {Day: parseTime("7/25/26"), Unlocked: 6_584_243_869}, + {Day: parseTime("7/26/26"), Unlocked: 6_585_700_616}, + {Day: parseTime("7/27/26"), Unlocked: 6_587_157_362}, + {Day: parseTime("7/28/26"), Unlocked: 6_588_614_109}, + {Day: parseTime("7/29/26"), Unlocked: 6_590_070_855}, + {Day: parseTime("7/30/26"), Unlocked: 6_591_527_602}, + {Day: parseTime("7/31/26"), Unlocked: 6_592_984_349}, + {Day: parseTime("8/1/26"), Unlocked: 6_594_441_095}, + {Day: parseTime("8/2/26"), Unlocked: 6_595_897_842}, + {Day: parseTime("8/3/26"), Unlocked: 6_597_354_588}, + {Day: parseTime("8/4/26"), Unlocked: 6_598_811_335}, + {Day: parseTime("8/5/26"), Unlocked: 6_600_268_081}, + {Day: parseTime("8/6/26"), Unlocked: 6_601_724_828}, + {Day: parseTime("8/7/26"), Unlocked: 6_603_181_575}, + {Day: parseTime("8/8/26"), Unlocked: 6_604_638_321}, + {Day: parseTime("8/9/26"), Unlocked: 6_606_095_068}, + {Day: parseTime("8/10/26"), Unlocked: 6_607_551_814}, + {Day: parseTime("8/11/26"), Unlocked: 6_609_008_561}, + {Day: parseTime("8/12/26"), Unlocked: 6_610_465_307}, + {Day: parseTime("8/13/26"), Unlocked: 6_611_922_054}, + {Day: parseTime("8/14/26"), Unlocked: 6_613_378_801}, + {Day: parseTime("8/15/26"), Unlocked: 6_614_835_547}, + {Day: parseTime("8/16/26"), Unlocked: 6_616_292_294}, + {Day: parseTime("8/17/26"), Unlocked: 6_617_749_040}, + {Day: parseTime("8/18/26"), Unlocked: 6_619_205_787}, + {Day: parseTime("8/19/26"), Unlocked: 6_620_662_533}, + {Day: parseTime("8/20/26"), Unlocked: 6_622_119_280}, + {Day: parseTime("8/21/26"), Unlocked: 6_623_576_027}, + {Day: parseTime("8/22/26"), Unlocked: 6_625_032_773}, + {Day: parseTime("8/23/26"), Unlocked: 6_626_489_520}, + {Day: parseTime("8/24/26"), Unlocked: 6_627_946_266}, + {Day: parseTime("8/25/26"), Unlocked: 6_629_403_013}, + {Day: parseTime("8/26/26"), Unlocked: 6_630_859_759}, + {Day: parseTime("8/27/26"), Unlocked: 6_632_316_506}, + {Day: parseTime("8/28/26"), Unlocked: 6_633_773_253}, + {Day: parseTime("8/29/26"), Unlocked: 6_635_229_999}, + {Day: parseTime("8/30/26"), Unlocked: 6_636_686_746}, + {Day: parseTime("8/31/26"), Unlocked: 6_638_143_492}, + {Day: parseTime("9/1/26"), Unlocked: 6_639_600_239}, + {Day: parseTime("9/2/26"), Unlocked: 6_641_056_986}, + {Day: parseTime("9/3/26"), Unlocked: 6_642_513_732}, + {Day: parseTime("9/4/26"), Unlocked: 6_643_970_479}, + {Day: parseTime("9/5/26"), Unlocked: 6_645_427_225}, + {Day: parseTime("9/6/26"), Unlocked: 6_646_883_972}, + {Day: parseTime("9/7/26"), Unlocked: 6_648_340_718}, + {Day: parseTime("9/8/26"), Unlocked: 6_649_797_465}, + {Day: parseTime("9/9/26"), Unlocked: 6_651_254_212}, + {Day: parseTime("9/10/26"), Unlocked: 6_652_710_958}, + {Day: parseTime("9/11/26"), Unlocked: 6_654_167_705}, + {Day: parseTime("9/12/26"), Unlocked: 6_655_624_451}, + {Day: parseTime("9/13/26"), Unlocked: 6_657_081_198}, + {Day: parseTime("9/14/26"), Unlocked: 6_658_537_944}, + {Day: parseTime("9/15/26"), Unlocked: 6_659_994_691}, + {Day: parseTime("9/16/26"), Unlocked: 6_661_451_438}, + {Day: parseTime("9/17/26"), Unlocked: 6_662_908_184}, + {Day: parseTime("9/18/26"), Unlocked: 6_664_364_931}, + {Day: parseTime("9/19/26"), Unlocked: 6_665_821_677}, + {Day: parseTime("9/20/26"), Unlocked: 6_667_278_424}, + {Day: parseTime("9/21/26"), Unlocked: 6_668_735_170}, + {Day: parseTime("9/22/26"), Unlocked: 6_670_191_917}, + {Day: parseTime("9/23/26"), Unlocked: 6_671_648_664}, + {Day: parseTime("9/24/26"), Unlocked: 6_673_105_410}, + {Day: parseTime("9/25/26"), Unlocked: 6_674_562_157}, + {Day: parseTime("9/26/26"), Unlocked: 6_676_018_903}, + {Day: parseTime("9/27/26"), Unlocked: 6_677_475_650}, + {Day: parseTime("9/28/26"), Unlocked: 6_678_932_396}, + {Day: parseTime("9/29/26"), Unlocked: 6_680_389_143}, + {Day: parseTime("9/30/26"), Unlocked: 6_681_845_890}, + {Day: parseTime("10/1/26"), Unlocked: 6_684_007_636}, + {Day: parseTime("10/2/26"), Unlocked: 6_685_464_383}, + {Day: parseTime("10/3/26"), Unlocked: 6_686_921_129}, + {Day: parseTime("10/4/26"), Unlocked: 6_688_377_876}, + {Day: parseTime("10/5/26"), Unlocked: 6_689_834_623}, + {Day: parseTime("10/6/26"), Unlocked: 6_691_291_369}, + {Day: parseTime("10/7/26"), Unlocked: 6_692_748_116}, + {Day: parseTime("10/8/26"), Unlocked: 6_694_204_862}, + {Day: parseTime("10/9/26"), Unlocked: 6_695_661_609}, + {Day: parseTime("10/10/26"), Unlocked: 6_697_118_355}, + {Day: parseTime("10/11/26"), Unlocked: 6_698_575_102}, + {Day: parseTime("10/12/26"), Unlocked: 6_700_031_849}, + {Day: parseTime("10/13/26"), Unlocked: 6_701_488_595}, + {Day: parseTime("10/14/26"), Unlocked: 6_702_945_342}, + {Day: parseTime("10/15/26"), Unlocked: 6_704_402_088}, + {Day: parseTime("10/16/26"), Unlocked: 6_705_858_835}, + {Day: parseTime("10/17/26"), Unlocked: 6_707_315_581}, + {Day: parseTime("10/18/26"), Unlocked: 6_708_772_328}, + {Day: parseTime("10/19/26"), Unlocked: 6_710_229_075}, + {Day: parseTime("10/20/26"), Unlocked: 6_711_685_821}, + {Day: parseTime("10/21/26"), Unlocked: 6_713_142_568}, + {Day: parseTime("10/22/26"), Unlocked: 6_714_599_314}, + {Day: parseTime("10/23/26"), Unlocked: 6_716_056_061}, + {Day: parseTime("10/24/26"), Unlocked: 6_717_512_807}, + {Day: parseTime("10/25/26"), Unlocked: 6_718_969_554}, + {Day: parseTime("10/26/26"), Unlocked: 6_720_426_301}, + {Day: parseTime("10/27/26"), Unlocked: 6_721_883_047}, + {Day: parseTime("10/28/26"), Unlocked: 6_723_339_794}, + {Day: parseTime("10/29/26"), Unlocked: 6_724_796_540}, + {Day: parseTime("10/30/26"), Unlocked: 6_726_253_287}, + {Day: parseTime("10/31/26"), Unlocked: 6_727_710_033}, + {Day: parseTime("11/1/26"), Unlocked: 6_729_166_780}, + {Day: parseTime("11/2/26"), Unlocked: 6_730_623_527}, + {Day: parseTime("11/3/26"), Unlocked: 6_732_080_273}, + {Day: parseTime("11/4/26"), Unlocked: 6_733_537_020}, + {Day: parseTime("11/5/26"), Unlocked: 6_734_993_766}, + {Day: parseTime("11/6/26"), Unlocked: 6_736_450_513}, + {Day: parseTime("11/7/26"), Unlocked: 6_737_907_259}, + {Day: parseTime("11/8/26"), Unlocked: 6_739_364_006}, + {Day: parseTime("11/9/26"), Unlocked: 6_740_820_753}, + {Day: parseTime("11/10/26"), Unlocked: 6_742_277_499}, + {Day: parseTime("11/11/26"), Unlocked: 6_743_734_246}, + {Day: parseTime("11/12/26"), Unlocked: 6_745_190_992}, + {Day: parseTime("11/13/26"), Unlocked: 6_746_647_739}, + {Day: parseTime("11/14/26"), Unlocked: 6_748_104_486}, + {Day: parseTime("11/15/26"), Unlocked: 6_749_561_232}, + {Day: parseTime("11/16/26"), Unlocked: 6_751_017_979}, + {Day: parseTime("11/17/26"), Unlocked: 6_752_474_725}, + {Day: parseTime("11/18/26"), Unlocked: 6_753_931_472}, + {Day: parseTime("11/19/26"), Unlocked: 6_755_388_218}, + {Day: parseTime("11/20/26"), Unlocked: 6_756_844_965}, + {Day: parseTime("11/21/26"), Unlocked: 6_758_301_712}, + {Day: parseTime("11/22/26"), Unlocked: 6_759_758_458}, + {Day: parseTime("11/23/26"), Unlocked: 6_761_215_205}, + {Day: parseTime("11/24/26"), Unlocked: 6_762_671_951}, + {Day: parseTime("11/25/26"), Unlocked: 6_764_128_698}, + {Day: parseTime("11/26/26"), Unlocked: 6_765_585_444}, + {Day: parseTime("11/27/26"), Unlocked: 6_767_042_191}, + {Day: parseTime("11/28/26"), Unlocked: 6_768_498_938}, + {Day: parseTime("11/29/26"), Unlocked: 6_769_955_684}, + {Day: parseTime("11/30/26"), Unlocked: 6_771_412_431}, + {Day: parseTime("12/1/26"), Unlocked: 6_772_869_177}, + {Day: parseTime("12/2/26"), Unlocked: 6_774_325_924}, + {Day: parseTime("12/3/26"), Unlocked: 6_775_782_670}, + {Day: parseTime("12/4/26"), Unlocked: 6_777_239_417}, + {Day: parseTime("12/5/26"), Unlocked: 6_778_696_164}, + {Day: parseTime("12/6/26"), Unlocked: 6_780_152_910}, + {Day: parseTime("12/7/26"), Unlocked: 6_781_609_657}, + {Day: parseTime("12/8/26"), Unlocked: 6_783_066_403}, + {Day: parseTime("12/9/26"), Unlocked: 6_784_523_150}, + {Day: parseTime("12/10/26"), Unlocked: 6_785_979_896}, + {Day: parseTime("12/11/26"), Unlocked: 6_787_436_643}, + {Day: parseTime("12/12/26"), Unlocked: 6_788_893_390}, + {Day: parseTime("12/13/26"), Unlocked: 6_790_350_136}, + {Day: parseTime("12/14/26"), Unlocked: 6_791_806_883}, + {Day: parseTime("12/15/26"), Unlocked: 6_793_263_629}, + {Day: parseTime("12/16/26"), Unlocked: 6_794_720_376}, + {Day: parseTime("12/17/26"), Unlocked: 6_796_177_123}, + {Day: parseTime("12/18/26"), Unlocked: 6_797_633_869}, + {Day: parseTime("12/19/26"), Unlocked: 6_799_090_616}, + {Day: parseTime("12/20/26"), Unlocked: 6_800_547_362}, + {Day: parseTime("12/21/26"), Unlocked: 6_802_004_109}, + {Day: parseTime("12/22/26"), Unlocked: 6_803_460_855}, + {Day: parseTime("12/23/26"), Unlocked: 6_804_917_602}, + {Day: parseTime("12/24/26"), Unlocked: 6_806_374_349}, + {Day: parseTime("12/25/26"), Unlocked: 6_807_831_095}, + {Day: parseTime("12/26/26"), Unlocked: 6_809_287_842}, + {Day: parseTime("12/27/26"), Unlocked: 6_810_744_588}, + {Day: parseTime("12/28/26"), Unlocked: 6_812_201_335}, + {Day: parseTime("12/29/26"), Unlocked: 6_813_658_081}, + {Day: parseTime("12/30/26"), Unlocked: 6_815_114_828}, + {Day: parseTime("12/31/26"), Unlocked: 6_816_571_575}, + {Day: parseTime("1/1/27"), Unlocked: 6_818_733_321}, + {Day: parseTime("1/2/27"), Unlocked: 6_820_190_068}, + {Day: parseTime("1/3/27"), Unlocked: 6_821_646_814}, + {Day: parseTime("1/4/27"), Unlocked: 6_823_103_561}, + {Day: parseTime("1/5/27"), Unlocked: 6_824_560_307}, + {Day: parseTime("1/6/27"), Unlocked: 6_826_017_054}, + {Day: parseTime("1/7/27"), Unlocked: 6_827_473_801}, + {Day: parseTime("1/8/27"), Unlocked: 6_828_930_547}, + {Day: parseTime("1/9/27"), Unlocked: 6_830_387_294}, + {Day: parseTime("1/10/27"), Unlocked: 6_831_844_040}, + {Day: parseTime("1/11/27"), Unlocked: 6_833_300_787}, + {Day: parseTime("1/12/27"), Unlocked: 6_834_757_533}, + {Day: parseTime("1/13/27"), Unlocked: 6_836_214_280}, + {Day: parseTime("1/14/27"), Unlocked: 6_837_671_027}, + {Day: parseTime("1/15/27"), Unlocked: 6_839_127_773}, + {Day: parseTime("1/16/27"), Unlocked: 6_840_584_520}, + {Day: parseTime("1/17/27"), Unlocked: 6_842_041_266}, + {Day: parseTime("1/18/27"), Unlocked: 6_843_498_013}, + {Day: parseTime("1/19/27"), Unlocked: 6_844_954_759}, + {Day: parseTime("1/20/27"), Unlocked: 6_846_411_506}, + {Day: parseTime("1/21/27"), Unlocked: 6_847_868_253}, + {Day: parseTime("1/22/27"), Unlocked: 6_849_324_999}, + {Day: parseTime("1/23/27"), Unlocked: 6_850_781_746}, + {Day: parseTime("1/24/27"), Unlocked: 6_852_238_492}, + {Day: parseTime("1/25/27"), Unlocked: 6_853_695_239}, + {Day: parseTime("1/26/27"), Unlocked: 6_855_151_986}, + {Day: parseTime("1/27/27"), Unlocked: 6_856_608_732}, + {Day: parseTime("1/28/27"), Unlocked: 6_858_065_479}, + {Day: parseTime("1/29/27"), Unlocked: 6_859_522_225}, + {Day: parseTime("1/30/27"), Unlocked: 6_860_978_972}, + {Day: parseTime("1/31/27"), Unlocked: 6_862_435_718}, + {Day: parseTime("2/1/27"), Unlocked: 6_863_892_465}, + {Day: parseTime("2/2/27"), Unlocked: 6_865_349_212}, + {Day: parseTime("2/3/27"), Unlocked: 6_866_805_958}, + {Day: parseTime("2/4/27"), Unlocked: 6_868_262_705}, + {Day: parseTime("2/5/27"), Unlocked: 6_869_719_451}, + {Day: parseTime("2/6/27"), Unlocked: 6_871_176_198}, + {Day: parseTime("2/7/27"), Unlocked: 6_872_632_944}, + {Day: parseTime("2/8/27"), Unlocked: 6_874_089_691}, + {Day: parseTime("2/9/27"), Unlocked: 6_875_546_438}, + {Day: parseTime("2/10/27"), Unlocked: 6_877_003_184}, + {Day: parseTime("2/11/27"), Unlocked: 6_878_459_931}, + {Day: parseTime("2/12/27"), Unlocked: 6_879_916_677}, + {Day: parseTime("2/13/27"), Unlocked: 6_881_373_424}, + {Day: parseTime("2/14/27"), Unlocked: 6_882_830_170}, + {Day: parseTime("2/15/27"), Unlocked: 6_884_286_917}, + {Day: parseTime("2/16/27"), Unlocked: 6_885_743_664}, + {Day: parseTime("2/17/27"), Unlocked: 6_887_200_410}, + {Day: parseTime("2/18/27"), Unlocked: 6_888_657_157}, + {Day: parseTime("2/19/27"), Unlocked: 6_890_113_903}, + {Day: parseTime("2/20/27"), Unlocked: 6_891_570_650}, + {Day: parseTime("2/21/27"), Unlocked: 6_893_027_396}, + {Day: parseTime("2/22/27"), Unlocked: 6_894_484_143}, + {Day: parseTime("2/23/27"), Unlocked: 6_895_940_890}, + {Day: parseTime("2/24/27"), Unlocked: 6_897_397_636}, + {Day: parseTime("2/25/27"), Unlocked: 6_898_854_383}, + {Day: parseTime("2/26/27"), Unlocked: 6_900_311_129}, + {Day: parseTime("2/27/27"), Unlocked: 6_901_767_876}, + {Day: parseTime("2/28/27"), Unlocked: 6_903_224_623}, + {Day: parseTime("3/1/27"), Unlocked: 6_904_681_369}, + {Day: parseTime("3/2/27"), Unlocked: 6_906_138_116}, + {Day: parseTime("3/3/27"), Unlocked: 6_907_594_862}, + {Day: parseTime("3/4/27"), Unlocked: 6_909_051_609}, + {Day: parseTime("3/5/27"), Unlocked: 6_910_508_355}, + {Day: parseTime("3/6/27"), Unlocked: 6_911_965_102}, + {Day: parseTime("3/7/27"), Unlocked: 6_913_421_849}, + {Day: parseTime("3/8/27"), Unlocked: 6_914_878_595}, + {Day: parseTime("3/9/27"), Unlocked: 6_916_335_342}, + {Day: parseTime("3/10/27"), Unlocked: 6_917_792_088}, + {Day: parseTime("3/11/27"), Unlocked: 6_919_248_835}, + {Day: parseTime("3/12/27"), Unlocked: 6_920_705_581}, + {Day: parseTime("3/13/27"), Unlocked: 6_922_162_328}, + {Day: parseTime("3/14/27"), Unlocked: 6_923_619_075}, + {Day: parseTime("3/15/27"), Unlocked: 6_925_075_821}, + {Day: parseTime("3/16/27"), Unlocked: 6_926_532_568}, + {Day: parseTime("3/17/27"), Unlocked: 6_927_989_314}, + {Day: parseTime("3/18/27"), Unlocked: 6_929_446_061}, + {Day: parseTime("3/19/27"), Unlocked: 6_931_652_807}, + {Day: parseTime("3/20/27"), Unlocked: 6_933_109_554}, + {Day: parseTime("3/21/27"), Unlocked: 6_934_566_301}, + {Day: parseTime("3/22/27"), Unlocked: 6_936_023_047}, + {Day: parseTime("3/23/27"), Unlocked: 6_937_479_794}, + {Day: parseTime("3/24/27"), Unlocked: 6_938_936_540}, + {Day: parseTime("3/25/27"), Unlocked: 6_940_393_287}, + {Day: parseTime("3/26/27"), Unlocked: 6_941_850_033}, + {Day: parseTime("3/27/27"), Unlocked: 6_943_306_780}, + {Day: parseTime("3/28/27"), Unlocked: 6_944_763_527}, + {Day: parseTime("3/29/27"), Unlocked: 6_946_220_273}, + {Day: parseTime("3/30/27"), Unlocked: 6_947_677_020}, + {Day: parseTime("3/31/27"), Unlocked: 6_949_133_766}, + {Day: parseTime("4/1/27"), Unlocked: 6_951_295_513}, + {Day: parseTime("4/2/27"), Unlocked: 6_952_752_259}, + {Day: parseTime("4/3/27"), Unlocked: 8_318_713_878}, + {Day: parseTime("4/4/27"), Unlocked: 8_320_170_625}, + {Day: parseTime("4/5/27"), Unlocked: 8_321_627_371}, + {Day: parseTime("4/6/27"), Unlocked: 8_323_084_118}, + {Day: parseTime("4/7/27"), Unlocked: 8_324_540_864}, + {Day: parseTime("4/8/27"), Unlocked: 8_325_997_611}, + {Day: parseTime("4/9/27"), Unlocked: 8_327_454_358}, + {Day: parseTime("4/10/27"), Unlocked: 8_328_911_104}, + {Day: parseTime("4/11/27"), Unlocked: 8_330_367_851}, + {Day: parseTime("4/12/27"), Unlocked: 8_331_824_597}, + {Day: parseTime("4/13/27"), Unlocked: 8_333_281_344}, + {Day: parseTime("4/14/27"), Unlocked: 8_334_738_090}, + {Day: parseTime("4/15/27"), Unlocked: 8_336_194_837}, + {Day: parseTime("4/16/27"), Unlocked: 8_337_651_584}, + {Day: parseTime("4/17/27"), Unlocked: 8_339_108_330}, + {Day: parseTime("4/18/27"), Unlocked: 8_340_565_077}, + {Day: parseTime("4/19/27"), Unlocked: 8_342_021_823}, + {Day: parseTime("4/20/27"), Unlocked: 8_343_478_570}, + {Day: parseTime("4/21/27"), Unlocked: 8_344_935_316}, + {Day: parseTime("4/22/27"), Unlocked: 8_346_392_063}, + {Day: parseTime("4/23/27"), Unlocked: 8_347_848_810}, + {Day: parseTime("4/24/27"), Unlocked: 8_349_305_556}, + {Day: parseTime("4/25/27"), Unlocked: 8_350_762_303}, + {Day: parseTime("4/26/27"), Unlocked: 8_352_219_049}, + {Day: parseTime("4/27/27"), Unlocked: 8_353_675_796}, + {Day: parseTime("4/28/27"), Unlocked: 8_355_132_542}, + {Day: parseTime("4/29/27"), Unlocked: 8_356_589_289}, + {Day: parseTime("4/30/27"), Unlocked: 8_358_046_036}, + {Day: parseTime("5/1/27"), Unlocked: 8_359_502_782}, + {Day: parseTime("5/2/27"), Unlocked: 8_360_959_529}, + {Day: parseTime("5/3/27"), Unlocked: 8_362_416_275}, + {Day: parseTime("5/4/27"), Unlocked: 8_363_873_022}, + {Day: parseTime("5/5/27"), Unlocked: 8_365_329_769}, + {Day: parseTime("5/6/27"), Unlocked: 8_366_786_515}, + {Day: parseTime("5/7/27"), Unlocked: 8_368_243_262}, + {Day: parseTime("5/8/27"), Unlocked: 8_369_700_008}, + {Day: parseTime("5/9/27"), Unlocked: 8_371_156_755}, + {Day: parseTime("5/10/27"), Unlocked: 8_372_613_501}, + {Day: parseTime("5/11/27"), Unlocked: 8_374_070_248}, + {Day: parseTime("5/12/27"), Unlocked: 8_375_526_995}, + {Day: parseTime("5/13/27"), Unlocked: 8_376_983_741}, + {Day: parseTime("5/14/27"), Unlocked: 8_378_440_488}, + {Day: parseTime("5/15/27"), Unlocked: 8_379_897_234}, + {Day: parseTime("5/16/27"), Unlocked: 8_381_353_981}, + {Day: parseTime("5/17/27"), Unlocked: 8_382_810_727}, + {Day: parseTime("5/18/27"), Unlocked: 8_384_267_474}, + {Day: parseTime("5/19/27"), Unlocked: 8_385_724_221}, + {Day: parseTime("5/20/27"), Unlocked: 8_387_180_967}, + {Day: parseTime("5/21/27"), Unlocked: 8_388_637_714}, + {Day: parseTime("5/22/27"), Unlocked: 8_390_094_460}, + {Day: parseTime("5/23/27"), Unlocked: 8_391_551_207}, + {Day: parseTime("5/24/27"), Unlocked: 8_393_007_953}, + {Day: parseTime("5/25/27"), Unlocked: 8_394_464_700}, + {Day: parseTime("5/26/27"), Unlocked: 8_395_921_447}, + {Day: parseTime("5/27/27"), Unlocked: 8_397_378_193}, + {Day: parseTime("5/28/27"), Unlocked: 8_398_834_940}, + {Day: parseTime("5/29/27"), Unlocked: 8_400_291_686}, + {Day: parseTime("5/30/27"), Unlocked: 8_401_748_433}, + {Day: parseTime("5/31/27"), Unlocked: 8_403_205_179}, + {Day: parseTime("6/1/27"), Unlocked: 8_404_661_926}, + {Day: parseTime("6/2/27"), Unlocked: 8_406_118_673}, + {Day: parseTime("6/3/27"), Unlocked: 8_407_575_419}, + {Day: parseTime("6/4/27"), Unlocked: 8_409_032_166}, + {Day: parseTime("6/5/27"), Unlocked: 8_410_488_912}, + {Day: parseTime("6/6/27"), Unlocked: 8_411_945_659}, + {Day: parseTime("6/7/27"), Unlocked: 8_413_402_406}, + {Day: parseTime("6/8/27"), Unlocked: 8_414_859_152}, + {Day: parseTime("6/9/27"), Unlocked: 8_416_315_899}, + {Day: parseTime("6/10/27"), Unlocked: 8_417_772_645}, + {Day: parseTime("6/11/27"), Unlocked: 8_419_229_392}, + {Day: parseTime("6/12/27"), Unlocked: 8_420_686_138}, + {Day: parseTime("6/13/27"), Unlocked: 8_422_142_885}, + {Day: parseTime("6/14/27"), Unlocked: 8_423_599_632}, + {Day: parseTime("6/15/27"), Unlocked: 8_425_056_378}, + {Day: parseTime("6/16/27"), Unlocked: 8_426_513_125}, + {Day: parseTime("6/17/27"), Unlocked: 8_427_969_871}, + {Day: parseTime("6/18/27"), Unlocked: 8_429_426_618}, + {Day: parseTime("6/19/27"), Unlocked: 8_430_883_364}, + {Day: parseTime("6/20/27"), Unlocked: 8_432_340_111}, + {Day: parseTime("6/21/27"), Unlocked: 8_433_796_858}, + {Day: parseTime("6/22/27"), Unlocked: 8_435_253_604}, + {Day: parseTime("6/23/27"), Unlocked: 8_436_710_351}, + {Day: parseTime("6/24/27"), Unlocked: 8_438_167_097}, + {Day: parseTime("6/25/27"), Unlocked: 8_439_623_844}, + {Day: parseTime("6/26/27"), Unlocked: 8_441_080_590}, + {Day: parseTime("6/27/27"), Unlocked: 8_442_537_337}, + {Day: parseTime("6/28/27"), Unlocked: 8_443_994_084}, + {Day: parseTime("6/29/27"), Unlocked: 8_445_450_830}, + {Day: parseTime("6/30/27"), Unlocked: 8_446_907_577}, + {Day: parseTime("7/1/27"), Unlocked: 8_449_069_323}, + {Day: parseTime("7/2/27"), Unlocked: 8_450_526_070}, + {Day: parseTime("7/3/27"), Unlocked: 8_451_982_816}, + {Day: parseTime("7/4/27"), Unlocked: 8_453_439_563}, + {Day: parseTime("7/5/27"), Unlocked: 8_454_896_310}, + {Day: parseTime("7/6/27"), Unlocked: 8_456_353_056}, + {Day: parseTime("7/7/27"), Unlocked: 8_457_809_803}, + {Day: parseTime("7/8/27"), Unlocked: 8_459_266_549}, + {Day: parseTime("7/9/27"), Unlocked: 8_460_723_296}, + {Day: parseTime("7/10/27"), Unlocked: 8_462_180_042}, + {Day: parseTime("7/11/27"), Unlocked: 8_463_636_789}, + {Day: parseTime("7/12/27"), Unlocked: 8_465_093_536}, + {Day: parseTime("7/13/27"), Unlocked: 8_466_550_282}, + {Day: parseTime("7/14/27"), Unlocked: 8_468_007_029}, + {Day: parseTime("7/15/27"), Unlocked: 8_469_463_775}, + {Day: parseTime("7/16/27"), Unlocked: 8_470_920_522}, + {Day: parseTime("7/17/27"), Unlocked: 8_472_377_269}, + {Day: parseTime("7/18/27"), Unlocked: 8_473_834_015}, + {Day: parseTime("7/19/27"), Unlocked: 8_475_290_762}, + {Day: parseTime("7/20/27"), Unlocked: 8_476_747_508}, + {Day: parseTime("7/21/27"), Unlocked: 8_478_204_255}, + {Day: parseTime("7/22/27"), Unlocked: 8_479_661_001}, + {Day: parseTime("7/23/27"), Unlocked: 8_481_117_748}, + {Day: parseTime("7/24/27"), Unlocked: 8_482_574_495}, + {Day: parseTime("7/25/27"), Unlocked: 8_484_031_241}, + {Day: parseTime("7/26/27"), Unlocked: 8_485_487_988}, + {Day: parseTime("7/27/27"), Unlocked: 8_486_944_734}, + {Day: parseTime("7/28/27"), Unlocked: 8_488_401_481}, + {Day: parseTime("7/29/27"), Unlocked: 8_489_858_227}, + {Day: parseTime("7/30/27"), Unlocked: 8_491_314_974}, + {Day: parseTime("7/31/27"), Unlocked: 8_492_771_721}, + {Day: parseTime("8/1/27"), Unlocked: 8_494_228_467}, + {Day: parseTime("8/2/27"), Unlocked: 8_495_685_214}, + {Day: parseTime("8/3/27"), Unlocked: 8_497_141_960}, + {Day: parseTime("8/4/27"), Unlocked: 8_498_598_707}, + {Day: parseTime("8/5/27"), Unlocked: 8_500_055_453}, + {Day: parseTime("8/6/27"), Unlocked: 8_501_512_200}, + {Day: parseTime("8/7/27"), Unlocked: 8_502_968_947}, + {Day: parseTime("8/8/27"), Unlocked: 8_504_425_693}, + {Day: parseTime("8/9/27"), Unlocked: 8_505_882_440}, + {Day: parseTime("8/10/27"), Unlocked: 8_507_339_186}, + {Day: parseTime("8/11/27"), Unlocked: 8_508_795_933}, + {Day: parseTime("8/12/27"), Unlocked: 8_510_252_679}, + {Day: parseTime("8/13/27"), Unlocked: 8_511_709_426}, + {Day: parseTime("8/14/27"), Unlocked: 8_513_166_173}, + {Day: parseTime("8/15/27"), Unlocked: 8_514_622_919}, + {Day: parseTime("8/16/27"), Unlocked: 8_516_079_666}, + {Day: parseTime("8/17/27"), Unlocked: 8_517_536_412}, + {Day: parseTime("8/18/27"), Unlocked: 8_518_993_159}, + {Day: parseTime("8/19/27"), Unlocked: 8_520_449_906}, + {Day: parseTime("8/20/27"), Unlocked: 8_521_906_652}, + {Day: parseTime("8/21/27"), Unlocked: 8_523_363_399}, + {Day: parseTime("8/22/27"), Unlocked: 8_524_820_145}, + {Day: parseTime("8/23/27"), Unlocked: 8_526_276_892}, + {Day: parseTime("8/24/27"), Unlocked: 8_527_733_638}, + {Day: parseTime("8/25/27"), Unlocked: 8_529_190_385}, + {Day: parseTime("8/26/27"), Unlocked: 8_530_647_132}, + {Day: parseTime("8/27/27"), Unlocked: 8_532_103_878}, + {Day: parseTime("8/28/27"), Unlocked: 8_533_560_625}, + {Day: parseTime("8/29/27"), Unlocked: 8_535_017_371}, + {Day: parseTime("8/30/27"), Unlocked: 8_536_474_118}, + {Day: parseTime("8/31/27"), Unlocked: 8_537_930_864}, + {Day: parseTime("9/1/27"), Unlocked: 8_539_387_611}, + {Day: parseTime("9/2/27"), Unlocked: 8_540_844_358}, + {Day: parseTime("9/3/27"), Unlocked: 8_542_301_104}, + {Day: parseTime("9/4/27"), Unlocked: 8_543_757_851}, + {Day: parseTime("9/5/27"), Unlocked: 8_545_214_597}, + {Day: parseTime("9/6/27"), Unlocked: 8_546_671_344}, + {Day: parseTime("9/7/27"), Unlocked: 8_548_128_090}, + {Day: parseTime("9/8/27"), Unlocked: 8_549_584_837}, + {Day: parseTime("9/9/27"), Unlocked: 8_551_041_584}, + {Day: parseTime("9/10/27"), Unlocked: 8_552_498_330}, + {Day: parseTime("9/11/27"), Unlocked: 8_553_955_077}, + {Day: parseTime("9/12/27"), Unlocked: 8_555_411_823}, + {Day: parseTime("9/13/27"), Unlocked: 8_556_868_570}, + {Day: parseTime("9/14/27"), Unlocked: 8_558_325_316}, + {Day: parseTime("9/15/27"), Unlocked: 8_559_782_063}, + {Day: parseTime("9/16/27"), Unlocked: 8_561_238_810}, + {Day: parseTime("9/17/27"), Unlocked: 8_562_695_556}, + {Day: parseTime("9/18/27"), Unlocked: 8_564_152_303}, + {Day: parseTime("9/19/27"), Unlocked: 8_565_609_049}, + {Day: parseTime("9/20/27"), Unlocked: 8_567_065_796}, + {Day: parseTime("9/21/27"), Unlocked: 8_568_522_542}, + {Day: parseTime("9/22/27"), Unlocked: 8_569_979_289}, + {Day: parseTime("9/23/27"), Unlocked: 8_571_436_036}, + {Day: parseTime("9/24/27"), Unlocked: 8_572_892_782}, + {Day: parseTime("9/25/27"), Unlocked: 8_574_349_529}, + {Day: parseTime("9/26/27"), Unlocked: 8_575_806_275}, + {Day: parseTime("9/27/27"), Unlocked: 8_577_263_022}, + {Day: parseTime("9/28/27"), Unlocked: 8_578_719_769}, + {Day: parseTime("9/29/27"), Unlocked: 8_580_176_515}, + {Day: parseTime("9/30/27"), Unlocked: 8_581_633_262}, + {Day: parseTime("10/1/27"), Unlocked: 8_583_795_008}, + {Day: parseTime("10/2/27"), Unlocked: 8_585_251_755}, + {Day: parseTime("10/3/27"), Unlocked: 8_586_708_501}, + {Day: parseTime("10/4/27"), Unlocked: 8_588_165_248}, + {Day: parseTime("10/5/27"), Unlocked: 8_589_621_995}, + {Day: parseTime("10/6/27"), Unlocked: 8_591_078_741}, + {Day: parseTime("10/7/27"), Unlocked: 8_592_535_488}, + {Day: parseTime("10/8/27"), Unlocked: 8_593_992_234}, + {Day: parseTime("10/9/27"), Unlocked: 8_595_448_981}, + {Day: parseTime("10/10/27"), Unlocked: 8_596_905_727}, + {Day: parseTime("10/11/27"), Unlocked: 8_598_362_474}, + {Day: parseTime("10/12/27"), Unlocked: 8_599_819_221}, + {Day: parseTime("10/13/27"), Unlocked: 8_601_275_967}, + {Day: parseTime("10/14/27"), Unlocked: 8_602_732_714}, + {Day: parseTime("10/15/27"), Unlocked: 8_604_189_460}, + {Day: parseTime("10/16/27"), Unlocked: 8_605_646_207}, + {Day: parseTime("10/17/27"), Unlocked: 8_607_102_953}, + {Day: parseTime("10/18/27"), Unlocked: 8_608_559_700}, + {Day: parseTime("10/19/27"), Unlocked: 8_610_016_447}, + {Day: parseTime("10/20/27"), Unlocked: 8_611_473_193}, + {Day: parseTime("10/21/27"), Unlocked: 8_612_929_940}, + {Day: parseTime("10/22/27"), Unlocked: 8_614_386_686}, + {Day: parseTime("10/23/27"), Unlocked: 8_615_843_433}, + {Day: parseTime("10/24/27"), Unlocked: 8_617_300_179}, + {Day: parseTime("10/25/27"), Unlocked: 8_618_756_926}, + {Day: parseTime("10/26/27"), Unlocked: 8_620_213_673}, + {Day: parseTime("10/27/27"), Unlocked: 8_621_670_419}, + {Day: parseTime("10/28/27"), Unlocked: 8_623_127_166}, + {Day: parseTime("10/29/27"), Unlocked: 8_624_583_912}, + {Day: parseTime("10/30/27"), Unlocked: 8_626_040_659}, + {Day: parseTime("10/31/27"), Unlocked: 8_627_497_406}, + {Day: parseTime("11/1/27"), Unlocked: 8_628_954_152}, + {Day: parseTime("11/2/27"), Unlocked: 8_630_410_899}, + {Day: parseTime("11/3/27"), Unlocked: 8_631_867_645}, + {Day: parseTime("11/4/27"), Unlocked: 8_633_324_392}, + {Day: parseTime("11/5/27"), Unlocked: 8_634_781_138}, + {Day: parseTime("11/6/27"), Unlocked: 8_636_237_885}, + {Day: parseTime("11/7/27"), Unlocked: 8_637_694_632}, + {Day: parseTime("11/8/27"), Unlocked: 8_639_151_378}, + {Day: parseTime("11/9/27"), Unlocked: 8_640_608_125}, + {Day: parseTime("11/10/27"), Unlocked: 8_642_064_871}, + {Day: parseTime("11/11/27"), Unlocked: 8_643_521_618}, + {Day: parseTime("11/12/27"), Unlocked: 8_644_978_364}, + {Day: parseTime("11/13/27"), Unlocked: 8_646_435_111}, + {Day: parseTime("11/14/27"), Unlocked: 8_647_891_858}, + {Day: parseTime("11/15/27"), Unlocked: 8_649_348_604}, + {Day: parseTime("11/16/27"), Unlocked: 8_650_805_351}, + {Day: parseTime("11/17/27"), Unlocked: 8_652_262_097}, + {Day: parseTime("11/18/27"), Unlocked: 8_653_718_844}, + {Day: parseTime("11/19/27"), Unlocked: 8_655_175_590}, + {Day: parseTime("11/20/27"), Unlocked: 8_656_632_337}, + {Day: parseTime("11/21/27"), Unlocked: 8_658_089_084}, + {Day: parseTime("11/22/27"), Unlocked: 8_659_545_830}, + {Day: parseTime("11/23/27"), Unlocked: 8_661_002_577}, + {Day: parseTime("11/24/27"), Unlocked: 8_662_459_323}, + {Day: parseTime("11/25/27"), Unlocked: 8_663_916_070}, + {Day: parseTime("11/26/27"), Unlocked: 8_665_372_816}, + {Day: parseTime("11/27/27"), Unlocked: 8_666_829_563}, + {Day: parseTime("11/28/27"), Unlocked: 8_668_286_310}, + {Day: parseTime("11/29/27"), Unlocked: 8_669_743_056}, + {Day: parseTime("11/30/27"), Unlocked: 8_671_199_803}, + {Day: parseTime("12/1/27"), Unlocked: 8_672_656_549}, + {Day: parseTime("12/2/27"), Unlocked: 8_674_113_296}, + {Day: parseTime("12/3/27"), Unlocked: 8_675_570_042}, + {Day: parseTime("12/4/27"), Unlocked: 8_677_026_789}, + {Day: parseTime("12/5/27"), Unlocked: 8_678_483_536}, + {Day: parseTime("12/6/27"), Unlocked: 8_679_940_282}, + {Day: parseTime("12/7/27"), Unlocked: 8_681_397_029}, + {Day: parseTime("12/8/27"), Unlocked: 8_682_853_775}, + {Day: parseTime("12/9/27"), Unlocked: 8_684_310_522}, + {Day: parseTime("12/10/27"), Unlocked: 8_685_767_269}, + {Day: parseTime("12/11/27"), Unlocked: 8_687_224_015}, + {Day: parseTime("12/12/27"), Unlocked: 8_688_680_762}, + {Day: parseTime("12/13/27"), Unlocked: 8_690_137_508}, + {Day: parseTime("12/14/27"), Unlocked: 8_691_594_255}, + {Day: parseTime("12/15/27"), Unlocked: 8_693_051_001}, + {Day: parseTime("12/16/27"), Unlocked: 8_694_507_748}, + {Day: parseTime("12/17/27"), Unlocked: 8_695_964_495}, + {Day: parseTime("12/18/27"), Unlocked: 8_697_421_241}, + {Day: parseTime("12/19/27"), Unlocked: 8_698_877_988}, + {Day: parseTime("12/20/27"), Unlocked: 8_700_334_734}, + {Day: parseTime("12/21/27"), Unlocked: 8_701_791_481}, + {Day: parseTime("12/22/27"), Unlocked: 8_703_248_227}, + {Day: parseTime("12/23/27"), Unlocked: 8_704_704_974}, + {Day: parseTime("12/24/27"), Unlocked: 8_706_161_721}, + {Day: parseTime("12/25/27"), Unlocked: 8_707_618_467}, + {Day: parseTime("12/26/27"), Unlocked: 8_709_075_214}, + {Day: parseTime("12/27/27"), Unlocked: 8_710_531_960}, + {Day: parseTime("12/28/27"), Unlocked: 8_711_988_707}, + {Day: parseTime("12/29/27"), Unlocked: 8_713_445_453}, + {Day: parseTime("12/30/27"), Unlocked: 8_714_902_200}, + {Day: parseTime("12/31/27"), Unlocked: 8_716_358_947}, + {Day: parseTime("1/1/28"), Unlocked: 8_718_520_693}, + {Day: parseTime("1/2/28"), Unlocked: 8_719_977_440}, + {Day: parseTime("1/3/28"), Unlocked: 8_721_434_186}, + {Day: parseTime("1/4/28"), Unlocked: 8_722_890_933}, + {Day: parseTime("1/5/28"), Unlocked: 8_724_347_679}, + {Day: parseTime("1/6/28"), Unlocked: 8_725_804_426}, + {Day: parseTime("1/7/28"), Unlocked: 8_727_261_173}, + {Day: parseTime("1/8/28"), Unlocked: 8_728_717_919}, + {Day: parseTime("1/9/28"), Unlocked: 8_730_174_666}, + {Day: parseTime("1/10/28"), Unlocked: 8_731_631_412}, + {Day: parseTime("1/11/28"), Unlocked: 8_733_088_159}, + {Day: parseTime("1/12/28"), Unlocked: 8_734_544_906}, + {Day: parseTime("1/13/28"), Unlocked: 8_736_001_652}, + {Day: parseTime("1/14/28"), Unlocked: 8_737_458_399}, + {Day: parseTime("1/15/28"), Unlocked: 8_738_915_145}, + {Day: parseTime("1/16/28"), Unlocked: 8_740_371_892}, + {Day: parseTime("1/17/28"), Unlocked: 8_741_828_638}, + {Day: parseTime("1/18/28"), Unlocked: 8_743_285_385}, + {Day: parseTime("1/19/28"), Unlocked: 8_744_742_132}, + {Day: parseTime("1/20/28"), Unlocked: 8_746_198_878}, + {Day: parseTime("1/21/28"), Unlocked: 8_747_655_625}, + {Day: parseTime("1/22/28"), Unlocked: 8_749_112_371}, + {Day: parseTime("1/23/28"), Unlocked: 8_750_569_118}, + {Day: parseTime("1/24/28"), Unlocked: 8_752_025_864}, + {Day: parseTime("1/25/28"), Unlocked: 8_753_482_611}, + {Day: parseTime("1/26/28"), Unlocked: 8_754_939_358}, + {Day: parseTime("1/27/28"), Unlocked: 8_756_396_104}, + {Day: parseTime("1/28/28"), Unlocked: 8_757_852_851}, + {Day: parseTime("1/29/28"), Unlocked: 8_759_309_597}, + {Day: parseTime("1/30/28"), Unlocked: 8_760_766_344}, + {Day: parseTime("1/31/28"), Unlocked: 8_762_223_090}, + {Day: parseTime("2/1/28"), Unlocked: 8_763_679_837}, + {Day: parseTime("2/2/28"), Unlocked: 8_765_136_584}, + {Day: parseTime("2/3/28"), Unlocked: 8_766_593_330}, + {Day: parseTime("2/4/28"), Unlocked: 8_768_050_077}, + {Day: parseTime("2/5/28"), Unlocked: 8_769_506_823}, + {Day: parseTime("2/6/28"), Unlocked: 8_770_963_570}, + {Day: parseTime("2/7/28"), Unlocked: 8_772_420_316}, + {Day: parseTime("2/8/28"), Unlocked: 8_773_877_063}, + {Day: parseTime("2/9/28"), Unlocked: 8_775_333_810}, + {Day: parseTime("2/10/28"), Unlocked: 8_776_790_556}, + {Day: parseTime("2/11/28"), Unlocked: 8_778_247_303}, + {Day: parseTime("2/12/28"), Unlocked: 8_779_704_049}, + {Day: parseTime("2/13/28"), Unlocked: 8_781_160_796}, + {Day: parseTime("2/14/28"), Unlocked: 8_782_617_542}, + {Day: parseTime("2/15/28"), Unlocked: 8_784_074_289}, + {Day: parseTime("2/16/28"), Unlocked: 8_785_531_036}, + {Day: parseTime("2/17/28"), Unlocked: 8_786_987_782}, + {Day: parseTime("2/18/28"), Unlocked: 8_788_444_529}, + {Day: parseTime("2/19/28"), Unlocked: 8_789_901_275}, + {Day: parseTime("2/20/28"), Unlocked: 8_791_358_022}, + {Day: parseTime("2/21/28"), Unlocked: 8_792_814_769}, + {Day: parseTime("2/22/28"), Unlocked: 8_794_271_515}, + {Day: parseTime("2/23/28"), Unlocked: 8_795_728_262}, + {Day: parseTime("2/24/28"), Unlocked: 8_797_185_008}, + {Day: parseTime("2/25/28"), Unlocked: 8_798_641_755}, + {Day: parseTime("2/26/28"), Unlocked: 8_800_098_501}, + {Day: parseTime("2/27/28"), Unlocked: 8_801_555_248}, + {Day: parseTime("2/28/28"), Unlocked: 8_803_011_995}, + {Day: parseTime("2/29/28"), Unlocked: 8_804_468_741}, + {Day: parseTime("3/1/28"), Unlocked: 8_805_925_488}, + {Day: parseTime("3/2/28"), Unlocked: 8_807_382_234}, + {Day: parseTime("3/3/28"), Unlocked: 8_808_838_981}, + {Day: parseTime("3/4/28"), Unlocked: 8_810_295_727}, + {Day: parseTime("3/5/28"), Unlocked: 8_811_752_474}, + {Day: parseTime("3/6/28"), Unlocked: 8_813_209_221}, + {Day: parseTime("3/7/28"), Unlocked: 8_814_665_967}, + {Day: parseTime("3/8/28"), Unlocked: 8_816_122_714}, + {Day: parseTime("3/9/28"), Unlocked: 8_817_579_460}, + {Day: parseTime("3/10/28"), Unlocked: 8_819_036_207}, + {Day: parseTime("3/11/28"), Unlocked: 8_820_492_953}, + {Day: parseTime("3/12/28"), Unlocked: 8_821_949_700}, + {Day: parseTime("3/13/28"), Unlocked: 8_823_406_447}, + {Day: parseTime("3/14/28"), Unlocked: 8_824_863_193}, + {Day: parseTime("3/15/28"), Unlocked: 8_826_319_940}, + {Day: parseTime("3/16/28"), Unlocked: 8_827_776_686}, + {Day: parseTime("3/17/28"), Unlocked: 8_829_233_433}, + {Day: parseTime("3/18/28"), Unlocked: 8_830_690_179}, + {Day: parseTime("3/19/28"), Unlocked: 8_832_896_926}, + {Day: parseTime("3/20/28"), Unlocked: 8_834_353_673}, + {Day: parseTime("3/21/28"), Unlocked: 8_835_810_419}, + {Day: parseTime("3/22/28"), Unlocked: 8_837_267_166}, + {Day: parseTime("3/23/28"), Unlocked: 8_838_723_912}, + {Day: parseTime("3/24/28"), Unlocked: 8_840_180_659}, + {Day: parseTime("3/25/28"), Unlocked: 8_841_637_406}, + {Day: parseTime("3/26/28"), Unlocked: 8_843_094_152}, + {Day: parseTime("3/27/28"), Unlocked: 8_844_550_899}, + {Day: parseTime("3/28/28"), Unlocked: 8_846_007_645}, + {Day: parseTime("3/29/28"), Unlocked: 8_847_464_392}, + {Day: parseTime("3/30/28"), Unlocked: 8_848_921_138}, + {Day: parseTime("3/31/28"), Unlocked: 8_850_377_885}, + {Day: parseTime("4/1/28"), Unlocked: 8_852_539_632}, + {Day: parseTime("4/2/28"), Unlocked: 8_853_996_378}, + {Day: parseTime("4/3/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/4/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/5/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/6/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/7/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/8/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/9/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/10/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/11/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/12/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/13/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/14/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/15/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/16/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/17/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/18/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/19/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/20/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/21/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/22/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/23/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/24/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/25/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/26/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/27/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/28/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/29/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("4/30/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/1/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/2/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/3/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/4/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/5/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/6/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/7/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/8/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/9/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/10/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/11/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/12/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/13/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/14/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/15/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/16/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/17/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/18/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/19/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/20/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/21/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/22/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/23/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/24/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/25/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/26/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/27/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/28/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/29/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/30/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("5/31/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/1/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/2/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/3/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/4/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/5/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/6/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/7/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/8/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/9/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/10/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/11/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/12/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/13/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/14/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/15/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/16/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/17/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/18/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/19/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/20/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/21/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/22/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/23/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/24/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/25/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/26/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/27/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/28/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/29/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("6/30/28"), Unlocked: 9_998_701_250}, + {Day: parseTime("7/1/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/2/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/3/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/4/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/5/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/6/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/7/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/8/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/9/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/10/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/11/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/12/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/13/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/14/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/15/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/16/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/17/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/18/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/19/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/20/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/21/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/22/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/23/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/24/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/25/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/26/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/27/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/28/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/29/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/30/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("7/31/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/1/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/2/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/3/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/4/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/5/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/6/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/7/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/8/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/9/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/10/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/11/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/12/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/13/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/14/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/15/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/16/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/17/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/18/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/19/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/20/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/21/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/22/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/23/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/24/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/25/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/26/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/27/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/28/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/29/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/30/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("8/31/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/1/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/2/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/3/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/4/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/5/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/6/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/7/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/8/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/9/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/10/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/11/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/12/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/13/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/14/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/15/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/16/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/17/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/18/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/19/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/20/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/21/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/22/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/23/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/24/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/25/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/26/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/27/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/28/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/29/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("9/30/28"), Unlocked: 9_999_375_000}, + {Day: parseTime("10/1/28"), Unlocked: TotalSupply}, +} + +func parseTime(day string) time.Time { + t, _ := time.Parse("1/2/06", day) // Format for parsing the date + return t +} + +func GetUnlockedAmount(date *time.Time) Supply { + initialDate := Supplies[0].Day // Assuming the first entry in the array is the earliest date + daysDifference := int(date.Sub(initialDate).Hours() / 24) // Calculate the difference in days + + if daysDifference < 0 { + // If the date is before the initial date, return 0 + return Supply{} + } else if daysDifference >= len(Supplies) { + // If the date is beyond the last date, return the last unlocked amount + return Supplies[len(Supplies)-1] + } + + // Return the unlocked amount for the calculated index + return Supplies[daysDifference] +} diff --git a/api/main.go b/api/main.go index 7aaf3577..c00615aa 100644 --- a/api/main.go +++ b/api/main.go @@ -12,6 +12,7 @@ import ( "time" "github.com/wormhole-foundation/wormhole-explorer/api/handlers/protocols" + "github.com/wormhole-foundation/wormhole-explorer/api/handlers/supply" frs "github.com/XLabs/fiber-redis-storage" "github.com/ansrivas/fiberprometheus/v2" @@ -218,6 +219,7 @@ func main() { statsService := stats.NewService(statsRepo, statsAddressRepo, statsHolderRepo, cache, expirationTime, metrics, rootLogger) protocolsService := protocols.NewService(cfg.Protocols, protocolsRepo, rootLogger, cache, cfg.Cache.ProtocolsStatsKey, cfg.Cache.ProtocolsStatsExpiration, metrics, tvl) guardianService := guardianHandlers.NewService(guardianSetRepository, cfg.P2pNetwork, cache, metrics, rootLogger) + supplyService := supply.NewService(rootLogger) // Set up a custom error handler response.SetEnableStackTrace(*cfg) @@ -258,7 +260,7 @@ func main() { notSupportedByEnv := middleware.NotSupportedByTestnetEnv(cfg.P2pNetwork) // Set up route handlers app.Get("/swagger.json", GetSwagger) - wormscan.RegisterRoutes(notSupportedByEnv, app, rootLogger, addressService, vaaService, obsService, governorService, infrastructureService, transactionsService, relaysService, operationsService, statsService, protocolsService) + wormscan.RegisterRoutes(notSupportedByEnv, app, rootLogger, addressService, vaaService, obsService, governorService, infrastructureService, transactionsService, relaysService, operationsService, statsService, protocolsService, supplyService) guardian.RegisterRoutes(cfg, app, rootLogger, vaaService, governorService, heartbeatsService, guardianService) // Set up gRPC handlers diff --git a/api/routes/wormscan/routes.go b/api/routes/wormscan/routes.go index 3e44077e..8f60969b 100644 --- a/api/routes/wormscan/routes.go +++ b/api/routes/wormscan/routes.go @@ -14,6 +14,7 @@ import ( protocolssvc "github.com/wormhole-foundation/wormhole-explorer/api/handlers/protocols" relayssvc "github.com/wormhole-foundation/wormhole-explorer/api/handlers/relays" statssvc "github.com/wormhole-foundation/wormhole-explorer/api/handlers/stats" + supplySvc "github.com/wormhole-foundation/wormhole-explorer/api/handlers/supply" trxsvc "github.com/wormhole-foundation/wormhole-explorer/api/handlers/transactions" vaasvc "github.com/wormhole-foundation/wormhole-explorer/api/handlers/vaa" "github.com/wormhole-foundation/wormhole-explorer/api/routes/wormscan/address" @@ -24,6 +25,7 @@ import ( "github.com/wormhole-foundation/wormhole-explorer/api/routes/wormscan/protocols" "github.com/wormhole-foundation/wormhole-explorer/api/routes/wormscan/relays" "github.com/wormhole-foundation/wormhole-explorer/api/routes/wormscan/stats" + "github.com/wormhole-foundation/wormhole-explorer/api/routes/wormscan/supply" "github.com/wormhole-foundation/wormhole-explorer/api/routes/wormscan/transactions" "github.com/wormhole-foundation/wormhole-explorer/api/routes/wormscan/vaa" @@ -46,6 +48,7 @@ func RegisterRoutes( operationsService *opsvc.Service, statsService *statssvc.Service, protocolsService *protocolssvc.Service, + supplyService *supplySvc.Service, ) { // Set up controllers @@ -59,6 +62,7 @@ func RegisterRoutes( opsCtrl := operations.NewController(operationsService, rootLogger) statsCtrl := stats.NewController(statsService, rootLogger) contributorsCtrl := protocols.NewController(rootLogger, protocolsService) + supplyCtrl := supply.NewController(supplyService, rootLogger) // Set up route handlers api := app.Group("/api/v1") @@ -82,6 +86,10 @@ func RegisterRoutes( api.Get("/ready", infrastructureCtrl.ReadyCheck) api.Get("/version", infrastructureCtrl.Version) + // Circulating Supply + api.Get("/supply", supplyCtrl.GetCirculatingSupply) + api.Get("/total-supply", supplyCtrl.GetTotalSupply) + // accounts resource api.Get("/address/:id", addressCtrl.FindById) diff --git a/api/routes/wormscan/supply/controller.go b/api/routes/wormscan/supply/controller.go new file mode 100644 index 00000000..275ca5f9 --- /dev/null +++ b/api/routes/wormscan/supply/controller.go @@ -0,0 +1,55 @@ +package supply + +import ( + "strconv" + + "github.com/gofiber/fiber/v2" + "github.com/wormhole-foundation/wormhole-explorer/api/handlers/supply" + "go.uber.org/zap" +) + +// Controller definition. +type Controller struct { + srv *supply.Service + logger *zap.Logger +} + +// NewController create a new controler. +func NewController(serv *supply.Service, logger *zap.Logger) *Controller { + return &Controller{srv: serv, logger: logger.With(zap.String("module", "CirculatingSupplyService"))} +} + +type CirculatingSupplyResponse struct { + CirculatingSupply string `json:"circulating_supply"` +} + +// GetCirculatingSupply godoc +// @Description Get W token circulation supply. +// @Tags wormholescan +// @ID supply +// @Success 200 {object} CirculatingSupplyResponse +// @Router /api/v1/supply [get] +func (c *Controller) GetCirculatingSupply(ctx *fiber.Ctx) error { + supply := c.srv.GetCurrentCirculatingSupply(ctx.Context()) + return ctx.JSON(CirculatingSupplyResponse{ + CirculatingSupply: strconv.Itoa(supply.Unlocked), + }) +} + +type TotalSupplyResponse struct { + TotalSupply string `json:"total_supply"` +} + +// GetTotalSupply godoc +// @Description Get W token total supply. +// @Tags wormholescan +// @ID total-supply +// @Success 200 {object} TotalSupplyResponse +// @Router /api/v1/total-supply [get] +func (c *Controller) GetTotalSupply(ctx *fiber.Ctx) error { + supply := c.srv.GetTotalSupply(ctx.Context()) + + return ctx.JSON(TotalSupplyResponse{ + TotalSupply: strconv.Itoa(supply), + }) +}