Compare commits

...

5 commits

Author SHA1 Message Date
25188a8bcf update go.mod and go.sum
Some checks are pending
Test / Format (gofmt) (push) Waiting to run
Test / Lint (golangci-lint) (push) Waiting to run
Test / Test (go test) (push) Blocked by required conditions
Test / Build CLI (go install) (push) Blocked by required conditions
2025-08-18 21:32:54 -07:00
e7a4362a66 add http handler into play.go
this allows for http game creation
2025-08-18 21:31:31 -07:00
442970f17c this was never supposed to be here 2025-08-18 21:30:02 -07:00
38368ba151 add db package
db package allows for writing games to postgres db
2025-08-18 21:29:05 -07:00
7426ddaf74 fix spacing
this totally was not an ai commit
2025-08-16 20:33:22 -07:00
6 changed files with 386 additions and 137 deletions

View file

@ -16,19 +16,46 @@ import (
"sync" "sync"
"time" "time"
// adding custom stuff here
"context"
"github.com/BattlesnakeOfficial/rules" "github.com/BattlesnakeOfficial/rules"
"github.com/BattlesnakeOfficial/rules/board" "github.com/BattlesnakeOfficial/rules/board"
"github.com/BattlesnakeOfficial/rules/client" "github.com/BattlesnakeOfficial/rules/client"
"github.com/BattlesnakeOfficial/rules/maps" "github.com/BattlesnakeOfficial/rules/maps"
"github.com/google/uuid" "github.com/google/uuid"
_ "github.com/mattn/go-sqlite3" // the SQLite driver (underscore means we only init it)
"github.com/pkg/browser" // _ "github.com/mattn/go-sqlite3" // the SQLite driver for local development
"github.com/spf13/cobra" "github.com/spf13/cobra"
log "github.com/spf13/jwalterweatherman" log "github.com/spf13/jwalterweatherman"
"github.com/BattlesnakeOfficial/rules/db"
) )
// will write to db at end of game
var frames []board.GameEvent var frames []board.GameEvent
func setupDb(dsn string) *db.Database {
// Replace with your Postgres DSN or set DATABASE_URL
if dsn == "" {
print("Using default DSN for local development. Please set DATABASE_URL in production.\n")
dsn = "removeditdidnotpushtoproductionhaha" // DO NOT PUSH TO PRODUCTION
}
// Connect to DB
database, err := db.Connect(dsn)
if err != nil {
log.ERROR.Fatalf("Failed to connect: %v", err)
}
print("SUCCESS: Connected to database\n")
// os.Exit(0) // Exit after successful connection for testing purposes
return database
}
// Used to store state for each SnakeState while running a local game // Used to store state for each SnakeState while running a local game
type SnakeState struct { type SnakeState struct {
URL string URL string
@ -80,6 +107,172 @@ type GameState struct {
idGenerator func(int) string idGenerator func(int) string
} }
var (
activeGame *GameState
// Mutex to protect activeGame from concurrent access
activeGameMutex sync.Mutex
)
func NewHostCommand() *cobra.Command {
var hostCmd = &cobra.Command{
Use: "host",
Short: "Host an HTTP server to start Battlesnake games via /play endpoint.",
Long: "Runs an HTTP server that accepts /play requests with query parameters instead of CLI flags. Each request will initialize and run a new game in the background.",
Run: func(cmd *cobra.Command, args []string) {
http.HandleFunc("/play", func(w http.ResponseWriter, r *http.Request) {
activeGameMutex.Lock()
defer activeGameMutex.Unlock()
if activeGame != nil {
log.WARN.Print("A game is already running. Please wait for it to finish before starting a new one.")
w.WriteHeader(http.StatusConflict) // 409 Conflict
json.NewEncoder(w).Encode(map[string]string{
"status": "busy",
"message": "A game is already running. Please wait for it to finish before starting a new one.",
})
return
}
// Create a new game state with defaults
gameState := &GameState{
Width: 11,
Height: 11,
Timeout: 500,
GameType: "standard",
MapName: "standard",
Seed: time.Now().UTC().UnixNano(),
TurnDelay: 0,
TurnDuration: 0,
OutputPath: "",
ViewInBrowser: true,
BoardURL: "https://board.battlesnake.com",
FoodSpawnChance: 15,
MinimumFood: 1,
HazardDamagePerTurn: 14,
ShrinkEveryNTurns: 25,
}
q := r.URL.Query()
// Map query params to fields
if v := q.Get("width"); v != "" {
if i, err := strconv.Atoi(v); err == nil {
gameState.Width = i
}
}
if v := q.Get("height"); v != "" {
if i, err := strconv.Atoi(v); err == nil {
gameState.Height = i
}
}
if v := q["name"]; len(v) > 0 {
gameState.Names = v
}
if v := q["url"]; len(v) > 0 {
gameState.URLs = v
}
if v := q.Get("timeout"); v != "" {
if i, err := strconv.Atoi(v); err == nil {
gameState.Timeout = i
}
}
if v := q.Get("sequential"); v == "true" {
gameState.Sequential = true
}
if v := q.Get("gametype"); v != "" {
gameState.GameType = v
}
if v := q.Get("map"); v != "" {
gameState.MapName = v
}
if v := q.Get("viewmap"); v == "true" {
gameState.ViewMap = true
}
if v := q.Get("color"); v == "true" {
gameState.UseColor = true
}
if v := q.Get("seed"); v != "" {
if i, err := strconv.ParseInt(v, 10, 64); err == nil {
gameState.Seed = i
}
}
if v := q.Get("delay"); v != "" {
if i, err := strconv.Atoi(v); err == nil {
gameState.TurnDelay = i
}
}
if v := q.Get("duration"); v != "" {
if i, err := strconv.Atoi(v); err == nil {
gameState.TurnDuration = i
}
}
if v := q.Get("output"); v != "" {
gameState.OutputPath = v
}
if v := q.Get("browser"); v == "true" {
gameState.ViewInBrowser = true
}
if v := q.Get("board-url"); v != "" {
gameState.BoardURL = v
}
if v := q.Get("foodSpawnChance"); v != "" {
if i, err := strconv.Atoi(v); err == nil {
gameState.FoodSpawnChance = i
}
}
if v := q.Get("minimumFood"); v != "" {
if i, err := strconv.Atoi(v); err == nil {
gameState.MinimumFood = i
}
}
if v := q.Get("hazardDamagePerTurn"); v != "" {
if i, err := strconv.Atoi(v); err == nil {
gameState.HazardDamagePerTurn = i
}
}
if v := q.Get("shrinkEveryNTurns"); v != "" {
if i, err := strconv.Atoi(v); err == nil {
gameState.ShrinkEveryNTurns = i
}
}
if err := gameState.Initialize(); err != nil {
log.FATAL.Printf("Error initializing game: %v", err)
http.Error(w, fmt.Sprintf("failed to initialize: %v", err), http.StatusBadRequest)
return
}
// Set active game
activeGame = gameState
// Run game asynchronously
go func(gs *GameState) {
if err := gs.Run(); err != nil {
log.FATAL.Printf("Error running game: %v", err)
}
}(gameState)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
resp := map[string]string{
"id": gameState.gameID,
}
print("gameState.gameID", gameState.gameID)
json.NewEncoder(w).Encode(resp)
})
log.INFO.Print("Hosting Battlesnake HTTP server on :6969")
log.INFO.Print(http.ListenAndServe(":6969", nil))
},
}
return hostCmd
}
func NewPlayCommand() *cobra.Command { func NewPlayCommand() *cobra.Command {
gameState := &GameState{} gameState := &GameState{}
@ -178,6 +371,11 @@ func (gameState *GameState) Initialize() error {
// Setup and run a full game. // Setup and run a full game.
func (gameState *GameState) Run() error { func (gameState *GameState) Run() error {
var dbconnection string = os.Getenv("DATABASE_URL")
var ctx context.Context = context.Background()
var database *db.Database = setupDb(dbconnection)
defer database.Pool.Close()
var gameOver bool var gameOver bool
var err error var err error
@ -207,7 +405,7 @@ func (gameState *GameState) Run() error {
boardGame := board.Game{ boardGame := board.Game{
ID: gameState.gameID, ID: gameState.gameID,
Status: "running", Status: "running", // switch to comlpeted before pushing to prod
Width: gameState.Width, Width: gameState.Width,
Height: gameState.Height, Height: gameState.Height,
Ruleset: map[string]string{ Ruleset: map[string]string{
@ -219,21 +417,24 @@ func (gameState *GameState) Run() error {
} }
boardServer := board.NewBoardServer(boardGame) boardServer := board.NewBoardServer(boardGame)
if gameState.outputFile != nil { // commented out for now, we will write to db at end of game, and we modified the functionality
// insert initial game start into database // if gameState.outputFile != nil {
bytes, err := json.Marshal(boardGame) // // insert initial game start into database
// // direct db call since this is the first event
if err != nil { // bytes, err := json.Marshal(boardGame) // remove this later
log.WARN.Printf("Failed to serialize frame event for turn%v", err)
} else { // if err != nil {
bytes = append(bytes, '\n') // write each event on its own line // log.WARN.Printf("Failed to serialize frame event for turn%v", err)
if _, err := gameState.outputFile.Write(bytes); err != nil { // } else {
log.WARN.Printf("Failed to write frame event to file: %v", err) // bytes = append(bytes, '\n') // write each event on its own line
} else { // if _, err := gameState.outputFile.Write(bytes); err != nil {
log.INFO.Printf("Wrote initial get state to output file") // log.WARN.Printf("Failed to write frame event to file: %v", err)
} // } else {
} // log.INFO.Printf("Wrote initial get state to output file")
} // }
// }
// }
if gameState.ViewInBrowser { if gameState.ViewInBrowser {
serverURL, err := boardServer.Listen() serverURL, err := boardServer.Listen()
@ -242,13 +443,13 @@ func (gameState *GameState) Run() error {
} }
defer boardServer.Shutdown() defer boardServer.Shutdown()
log.INFO.Printf("Board server listening on %s", serverURL) log.INFO.Printf("Board server listening on %s", serverURL)
// no need to open the browser automatically since our primary use case is to run this headlessly
// boardURL := fmt.Sprintf(gameState.BoardURL+"?engine=%s&game=%s&autoplay=true", serverURL, gameState.gameID)
boardURL := fmt.Sprintf(gameState.BoardURL+"?engine=%s&game=%s&autoplay=true", serverURL, gameState.gameID) // log.INFO.Printf("Opening board URL: %s", boardURL)
// if err := browser.OpenURL(boardURL); err != nil {
log.INFO.Printf("Opening board URL: %s", boardURL) // log.ERROR.Printf("Failed to open browser: %v", err)
if err := browser.OpenURL(boardURL); err != nil { // }
log.ERROR.Printf("Failed to open browser: %v", err)
}
// send turn zero to websocket server // send turn zero to websocket server
boardServer.SendEvent(gameState.buildFrameEvent(boardState)) boardServer.SendEvent(gameState.buildFrameEvent(boardState))
@ -262,6 +463,7 @@ func (gameState *GameState) Run() error {
gameState.printState(boardState) gameState.printState(boardState)
} }
// Bhavnoor's notes: This is straight up a lie, the default output is nothing like a valid API request.
// Export game first, if enabled, so that we capture the request for turn zero. // Export game first, if enabled, so that we capture the request for turn zero.
if exportGame { if exportGame {
// The output file was designed in a way so that (nearly) every entry is equivalent to a valid API request. // The output file was designed in a way so that (nearly) every entry is equivalent to a valid API request.
@ -353,16 +555,11 @@ func (gameState *GameState) Run() error {
Data: boardGame, Data: boardGame,
} }
// boardServer.SendEvent(board.GameEvent{
// EventType: board.EVENT_TYPE_GAME_END,
// Data: boardGame,
// })
boardServer.SendEvent(endEvent) boardServer.SendEvent(endEvent)
frames = append(frames, endEvent) // add game end to frames array
if gameState.outputFile != nil { if gameState.outputFile != nil {
// write frames array to db
// insert game end into database
bytes, err := json.Marshal(endEvent) bytes, err := json.Marshal(endEvent)
if err != nil { if err != nil {
// log.WARN.Printf("Unable to serialize game end event: %v", err) // log.WARN.Printf("Unable to serialize game end event: %v", err)
@ -374,23 +571,36 @@ func (gameState *GameState) Run() error {
} }
} }
// // log.INFO.Printf("wrote frame event for game end")
} }
} }
// the magic happens here:
if exportGame { err = database.WriteInfo(ctx, boardGame, frames)
// lines, err := gameExporter.FlushToFile(gameState.outputFile) if err != nil {
log.WARN.Printf("Failed to write game end event to database: %v", err)
lines, err := gameExporter.FlushToFile(io.Discard) } else {
log.INFO.Printf("Wrote game end event to database")
if err != nil {
return fmt.Errorf("Unable to export game: %w", err)
}
log.INFO.Printf("Fake Wrote %d lines to output file: %s", lines, gameState.OutputPath)
} }
activeGameMutex.Lock()
activeGame = nil
activeGameMutex.Unlock()
// if exportGame {
// // lines, err := gameExporter.FlushToFile(gameState.outputFile)
// lines, err := gameExporter.FlushToFile(io.Discard)
// if err != nil {
// return fmt.Errorf("Unable to export game: %w", err)
// }
// log.INFO.Printf("Fake Wrote %d lines to output file: %s", lines, gameState.OutputPath)
// }
// return nil
// os.Exit(0) // Exit after successful run for testing purposes
return nil return nil
} }
func (gameState *GameState) initializeBoardFromArgs() (bool, *rules.BoardState, error) { func (gameState *GameState) initializeBoardFromArgs() (bool, *rules.BoardState, error) {
@ -832,10 +1042,12 @@ func (gameState *GameState) buildFrameEvent(boardState *rules.BoardState) board.
Data: gameFrame, Data: gameFrame,
} }
frames = append(frames, gameEvent)
// === New: Write frame event to output file if set === // === New: Write frame event to output file if set ===
if gameState.outputFile != nil { if gameState.outputFile != nil {
// add frame event to array for now, will write to db at end of game // add frame event to array for now, will write to db at end of game
frames = append(frames, gameEvent) // frames = append(frames, gameEvent)
bytes, err := json.Marshal(gameEvent) bytes, err := json.Marshal(gameEvent)
if err != nil { if err != nil {

View file

@ -22,7 +22,9 @@ var rootCmd = &cobra.Command{
} }
func Execute() { func Execute() {
rootCmd.AddCommand(NewPlayCommand()) rootCmd.AddCommand(NewPlayCommand())
rootCmd.AddCommand(NewHostCommand())
mapCommand := NewMapCommand() mapCommand := NewMapCommand()
mapCommand.AddCommand(NewMapListCommand()) mapCommand.AddCommand(NewMapListCommand())

97
db/db.go Normal file
View file

@ -0,0 +1,97 @@
package db
import (
"context"
"encoding/json"
"fmt"
"github.com/BattlesnakeOfficial/rules/board"
"github.com/jackc/pgx/v5/pgxpool"
)
// the db package provides a simple interface to interact with a PostgreSQL database, it is extremely simple and only writing, reading and deleting game info
// @ author Bhavnoor Singh Saroya
// Database wraps pgxpool
type Database struct {
Pool *pgxpool.Pool
}
// Connect initializes the pool and creates the table if needed
func Connect(dsn string) (*Database, error) {
ctx := context.Background()
pool, err := pgxpool.New(ctx, dsn)
if err != nil {
return nil, fmt.Errorf("db connect: %w", err)
}
// Ensure table exists
_, err = pool.Exec(ctx, `
CREATE TABLE IF NOT EXISTS items (
id UUID PRIMARY KEY,
info JSONB NOT NULL,
frames JSONB[]
)
`)
if err != nil {
return nil, fmt.Errorf("create table: %w", err)
}
return &Database{Pool: pool}, nil
}
func (db *Database) GetInfo(ctx context.Context, id string) (*board.Game, error) {
var gameData []byte
var it board.Game
err := db.Pool.QueryRow(ctx,
"SELECT info FROM items WHERE id=$1", id).
Scan(&gameData)
if err != nil {
return nil, err
}
// 2. Unmarshal the byte slice into the struct.
err = json.Unmarshal(gameData, &it)
if err != nil {
return nil, err
}
return &it, nil
}
func (db *Database) WriteInfo(ctx context.Context, info board.Game, frames []board.GameEvent) error {
var err error
var uuid string = info.ID
// 1. Marshal the struct into a byte slice.
gameData, err := json.Marshal(info)
if err != nil {
return fmt.Errorf("marshal game info: %w", err)
}
// convert []board.GameEvent to []json.RawMessage
var framesData []json.RawMessage
for _, f := range frames {
b, err := json.Marshal(f)
if err != nil {
return fmt.Errorf("marshal frame: %w", err)
}
framesData = append(framesData, b)
}
// use pgtype to wrap into postgres []JSONB
_, errr := db.Pool.Exec(ctx,
"INSERT INTO items (id, info, frames) VALUES ($1, $2, $3)",
uuid, gameData, framesData)
if errr != nil {
print("error writing to db, bad stuff happened: ")
// panic(fmt.Sprintf("Error inserting item: %v", err))
return fmt.Errorf("insert item: %w", errr)
}
return nil
}
func (db *Database) Delete(ctx context.Context, id int) error {
_, err := db.Pool.Exec(ctx,
"DELETE FROM items WHERE id=$1", id)
return err
}

View file

@ -1,91 +0,0 @@
{"ID":"25c502f3-a05c-49af-8dbf-4c0fd17e8544","Status":"running","Width":11,"Height":11,"Ruleset":{"name":"standard"},"SnakeTimeout":0,"Source":"","RulesetName":"standard","RulesStages":[],"Map":"standard"}
{"Type":"frame","Data":{"Turn":0,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":5,"Y":1},{"X":5,"Y":1},{"X":5,"Y":1}],"Health":100,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"1","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":5},{"X":9,"Y":5},{"X":9,"Y":5}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"1","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":4,"Y":0},{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":1,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":6,"Y":1},{"X":5,"Y":1},{"X":5,"Y":1}],"Health":99,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":6},{"X":9,"Y":5},{"X":9,"Y":5}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":4,"Y":0},{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":2,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":6,"Y":0},{"X":6,"Y":1},{"X":5,"Y":1}],"Health":98,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":6},{"X":9,"Y":6},{"X":9,"Y":5}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":4,"Y":0},{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":3,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":5,"Y":0},{"X":6,"Y":0},{"X":6,"Y":1}],"Health":97,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":6},{"X":8,"Y":6},{"X":9,"Y":6}],"Health":97,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":4,"Y":0},{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":4,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":0},{"X":5,"Y":0},{"X":6,"Y":0},{"X":6,"Y":0}],"Health":100,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"45","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":6},{"X":7,"Y":6},{"X":8,"Y":6}],"Health":96,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"44","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":5,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":0},{"X":4,"Y":0},{"X":5,"Y":0},{"X":6,"Y":0}],"Health":99,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":5},{"X":6,"Y":6},{"X":7,"Y":6}],"Health":95,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":6,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":1},{"X":3,"Y":0},{"X":4,"Y":0},{"X":5,"Y":0}],"Health":98,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":4},{"X":6,"Y":5},{"X":6,"Y":6}],"Health":94,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":7,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":2},{"X":3,"Y":1},{"X":3,"Y":0},{"X":4,"Y":0}],"Health":97,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"37","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":4},{"X":6,"Y":4},{"X":6,"Y":5}],"Health":93,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"37","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":8,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":2},{"X":3,"Y":2},{"X":3,"Y":1},{"X":3,"Y":0}],"Health":96,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":3},{"X":7,"Y":4},{"X":6,"Y":4}],"Health":92,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"17","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":9,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":3},{"X":2,"Y":2},{"X":3,"Y":2},{"X":3,"Y":1}],"Health":95,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":3},{"X":7,"Y":3},{"X":7,"Y":4}],"Health":91,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":10,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2},{"X":3,"Y":2}],"Health":94,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":3},{"X":6,"Y":3},{"X":7,"Y":3}],"Health":90,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":11,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2}],"Health":93,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":4},{"X":5,"Y":3},{"X":6,"Y":3}],"Health":89,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":12,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3}],"Health":92,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":4},{"X":5,"Y":4},{"X":5,"Y":3}],"Health":88,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":13,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4}],"Health":91,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":3},{"X":6,"Y":4},{"X":5,"Y":4}],"Health":87,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":14,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":2},{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4}],"Health":90,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":3},{"X":6,"Y":3},{"X":6,"Y":4}],"Health":86,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":15,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":2},{"X":0,"Y":2},{"X":0,"Y":3},{"X":1,"Y":3}],"Health":89,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"18","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":3},{"X":7,"Y":3},{"X":6,"Y":3}],"Health":85,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"18","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5},{"X":7,"Y":2}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":16,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":1},{"X":1,"Y":2},{"X":0,"Y":2},{"X":0,"Y":3},{"X":0,"Y":3}],"Health":100,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":2},{"X":8,"Y":3},{"X":7,"Y":3}],"Health":84,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":17,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":1},{"X":1,"Y":1},{"X":1,"Y":2},{"X":0,"Y":2},{"X":0,"Y":3}],"Health":99,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":2},{"X":8,"Y":2},{"X":8,"Y":3}],"Health":83,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":18,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":1,"Y":2},{"X":0,"Y":2}],"Health":98,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":1},{"X":9,"Y":2},{"X":8,"Y":2}],"Health":82,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":19,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":1,"Y":2}],"Health":97,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":0},{"X":9,"Y":1},{"X":9,"Y":2}],"Health":81,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":20,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":2},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1}],"Health":96,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":10,"Y":0},{"X":9,"Y":0},{"X":9,"Y":1}],"Health":80,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":21,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":1},{"X":4,"Y":2},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1}],"Health":95,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":10,"Y":1},{"X":10,"Y":0},{"X":9,"Y":0}],"Health":79,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":22,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":1},{"X":4,"Y":1},{"X":4,"Y":2},{"X":3,"Y":2},{"X":2,"Y":2}],"Health":94,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":1},{"X":10,"Y":1},{"X":10,"Y":0}],"Health":78,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":23,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":1},{"X":3,"Y":1},{"X":4,"Y":1},{"X":4,"Y":2},{"X":3,"Y":2}],"Health":93,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":1},{"X":9,"Y":1},{"X":10,"Y":1}],"Health":77,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":24,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":2},{"X":2,"Y":1},{"X":3,"Y":1},{"X":4,"Y":1},{"X":4,"Y":2}],"Health":92,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":0},{"X":8,"Y":1},{"X":9,"Y":1}],"Health":76,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":25,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":3},{"X":2,"Y":2},{"X":2,"Y":1},{"X":3,"Y":1},{"X":4,"Y":1}],"Health":91,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":0},{"X":8,"Y":0},{"X":8,"Y":1}],"Health":75,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":26,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2},{"X":2,"Y":1},{"X":3,"Y":1}],"Health":90,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":0},{"X":7,"Y":0},{"X":8,"Y":0}],"Health":74,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":1,"Y":3}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":27,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2},{"X":2,"Y":1}],"Health":89,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":1},{"X":6,"Y":0},{"X":7,"Y":0}],"Health":73,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":1,"Y":3}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":28,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2},{"X":2,"Y":2}],"Health":100,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":2},{"X":6,"Y":1},{"X":6,"Y":0}],"Health":72,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":29,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2}],"Health":99,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":2},{"X":6,"Y":2},{"X":6,"Y":1},{"X":6,"Y":1}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":30,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":4},{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3}],"Health":98,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":2},{"X":7,"Y":2},{"X":6,"Y":2},{"X":6,"Y":1}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":31,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":5},{"X":0,"Y":4},{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4}],"Health":97,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":2},{"X":8,"Y":2},{"X":7,"Y":2},{"X":6,"Y":2}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":32,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":6},{"X":0,"Y":5},{"X":0,"Y":4},{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4}],"Health":96,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":1},{"X":9,"Y":2},{"X":8,"Y":2},{"X":7,"Y":2}],"Health":97,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":33,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":0,"Y":4},{"X":0,"Y":3},{"X":1,"Y":3}],"Health":95,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"11","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":0},{"X":9,"Y":1},{"X":9,"Y":2},{"X":8,"Y":2}],"Health":96,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":34,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":0,"Y":4},{"X":0,"Y":3}],"Health":94,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"44","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":0},{"X":9,"Y":0},{"X":9,"Y":1},{"X":9,"Y":2}],"Health":95,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"26","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":35,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":7},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":0,"Y":4}],"Health":93,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":0},{"X":8,"Y":0},{"X":9,"Y":0},{"X":9,"Y":1}],"Health":94,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":36,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":6},{"X":2,"Y":7},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5}],"Health":92,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":1},{"X":7,"Y":0},{"X":8,"Y":0},{"X":9,"Y":0}],"Health":93,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":37,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":7},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6}],"Health":91,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":1},{"X":7,"Y":1},{"X":7,"Y":0},{"X":8,"Y":0}],"Health":92,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":38,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":5},{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":7},{"X":1,"Y":7},{"X":0,"Y":7}],"Health":90,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":0},{"X":6,"Y":1},{"X":7,"Y":1},{"X":7,"Y":0}],"Health":91,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":39,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":5},{"X":1,"Y":5},{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":7},{"X":1,"Y":7}],"Health":89,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":0},{"X":6,"Y":0},{"X":6,"Y":1},{"X":7,"Y":1}],"Health":90,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"11","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":40,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":6},{"X":0,"Y":5},{"X":1,"Y":5},{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":7}],"Health":88,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":0},{"X":5,"Y":0},{"X":6,"Y":0},{"X":6,"Y":1}],"Health":89,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":41,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":1,"Y":5},{"X":1,"Y":6},{"X":2,"Y":6}],"Health":87,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":0},{"X":4,"Y":0},{"X":5,"Y":0},{"X":6,"Y":0}],"Health":88,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":42,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":1,"Y":5},{"X":1,"Y":6}],"Health":86,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":0},{"X":3,"Y":0},{"X":4,"Y":0},{"X":5,"Y":0}],"Health":87,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"22","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":43,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":8},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":1,"Y":5}],"Health":85,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":0},{"X":2,"Y":0},{"X":3,"Y":0},{"X":4,"Y":0}],"Health":86,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":44,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5}],"Health":84,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":0},{"X":1,"Y":0},{"X":2,"Y":0},{"X":3,"Y":0}],"Health":85,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":45,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":10},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6}],"Health":83,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":1},{"X":0,"Y":0},{"X":1,"Y":0},{"X":2,"Y":0}],"Health":84,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":46,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":10},{"X":1,"Y":10},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":0,"Y":7}],"Health":82,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":2},{"X":0,"Y":1},{"X":0,"Y":0},{"X":1,"Y":0}],"Health":83,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":47,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":10},{"X":2,"Y":10},{"X":1,"Y":10},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7}],"Health":81,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":3},{"X":0,"Y":2},{"X":0,"Y":1},{"X":0,"Y":0}],"Health":82,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":48,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":9},{"X":3,"Y":10},{"X":2,"Y":10},{"X":1,"Y":10},{"X":1,"Y":9},{"X":1,"Y":8}],"Health":80,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":3},{"X":0,"Y":3},{"X":0,"Y":2},{"X":0,"Y":1}],"Health":81,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":49,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":9},{"X":3,"Y":9},{"X":3,"Y":10},{"X":2,"Y":10},{"X":1,"Y":10},{"X":1,"Y":9}],"Health":79,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":2},{"X":1,"Y":3},{"X":0,"Y":3},{"X":0,"Y":2}],"Health":80,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":50,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":8},{"X":2,"Y":9},{"X":3,"Y":9},{"X":3,"Y":10},{"X":2,"Y":10},{"X":1,"Y":10}],"Health":78,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3},{"X":0,"Y":3}],"Health":79,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"18","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":51,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":8},{"X":2,"Y":8},{"X":2,"Y":9},{"X":3,"Y":9},{"X":3,"Y":10},{"X":2,"Y":10}],"Health":77,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":1},{"X":2,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3}],"Health":78,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":52,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":9},{"X":1,"Y":8},{"X":2,"Y":8},{"X":2,"Y":9},{"X":3,"Y":9},{"X":3,"Y":10}],"Health":76,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"19","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":0},{"X":2,"Y":1},{"X":2,"Y":2},{"X":1,"Y":2}],"Health":77,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":53,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":2,"Y":8},{"X":2,"Y":9},{"X":3,"Y":9}],"Health":75,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":0},{"X":2,"Y":0},{"X":2,"Y":1},{"X":2,"Y":2}],"Health":76,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":54,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":10},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":2,"Y":8},{"X":2,"Y":9}],"Health":74,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":1},{"X":3,"Y":0},{"X":2,"Y":0},{"X":2,"Y":1}],"Health":75,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":55,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":10},{"X":0,"Y":10},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":2,"Y":8}],"Health":73,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":2},{"X":3,"Y":1},{"X":3,"Y":0},{"X":2,"Y":0}],"Health":74,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":56,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":10},{"X":1,"Y":10},{"X":0,"Y":10},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8}],"Health":72,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":2},{"X":3,"Y":2},{"X":3,"Y":1},{"X":3,"Y":0}],"Health":73,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":57,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":9},{"X":2,"Y":10},{"X":1,"Y":10},{"X":0,"Y":10},{"X":0,"Y":9},{"X":1,"Y":9}],"Health":71,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"21","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":1},{"X":2,"Y":2},{"X":3,"Y":2},{"X":3,"Y":1}],"Health":72,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"28","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":58,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":8},{"X":2,"Y":9},{"X":2,"Y":10},{"X":1,"Y":10},{"X":0,"Y":10},{"X":0,"Y":9}],"Health":70,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":1},{"X":2,"Y":1},{"X":2,"Y":2},{"X":3,"Y":2}],"Health":71,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":59,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":7},{"X":2,"Y":8},{"X":2,"Y":9},{"X":2,"Y":10},{"X":1,"Y":10},{"X":0,"Y":10}],"Health":69,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":1},{"X":1,"Y":1},{"X":2,"Y":1},{"X":2,"Y":2}],"Health":70,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":60,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":7},{"X":2,"Y":7},{"X":2,"Y":8},{"X":2,"Y":9},{"X":2,"Y":10},{"X":1,"Y":10}],"Health":68,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":0},{"X":0,"Y":1},{"X":1,"Y":1},{"X":2,"Y":1}],"Health":69,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":61,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":8},{"X":1,"Y":7},{"X":2,"Y":7},{"X":2,"Y":8},{"X":2,"Y":9},{"X":2,"Y":10}],"Health":67,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":0},{"X":0,"Y":0},{"X":0,"Y":1},{"X":1,"Y":1}],"Health":68,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":62,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":2,"Y":7},{"X":2,"Y":8},{"X":2,"Y":9}],"Health":66,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":0},{"X":1,"Y":0},{"X":0,"Y":0},{"X":0,"Y":1}],"Health":67,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":63,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":2,"Y":7},{"X":2,"Y":8}],"Health":65,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":1},{"X":2,"Y":0},{"X":1,"Y":0},{"X":0,"Y":0}],"Health":66,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":64,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":8},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":2,"Y":7}],"Health":64,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":1},{"X":2,"Y":1},{"X":2,"Y":0},{"X":1,"Y":0}],"Health":65,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":65,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":7},{"X":0,"Y":8},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7}],"Health":63,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":1},{"X":3,"Y":1},{"X":2,"Y":1},{"X":2,"Y":0}],"Health":64,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":66,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":6},{"X":0,"Y":7},{"X":0,"Y":8},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8}],"Health":62,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1},{"X":2,"Y":1}],"Health":63,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":67,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":5},{"X":0,"Y":6},{"X":0,"Y":7},{"X":0,"Y":8},{"X":0,"Y":9},{"X":1,"Y":9}],"Health":61,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1}],"Health":62,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":68,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":5},{"X":0,"Y":5},{"X":0,"Y":6},{"X":0,"Y":7},{"X":0,"Y":8},{"X":0,"Y":9}],"Health":60,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1}],"Health":61,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":69,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":4},{"X":1,"Y":5},{"X":0,"Y":5},{"X":0,"Y":6},{"X":0,"Y":7},{"X":0,"Y":8}],"Health":59,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2}],"Health":60,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"11","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":70,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":3},{"X":1,"Y":4},{"X":1,"Y":5},{"X":0,"Y":5},{"X":0,"Y":6},{"X":0,"Y":7}],"Health":58,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3}],"Health":59,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":71,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":2},{"X":1,"Y":3},{"X":1,"Y":4},{"X":1,"Y":5},{"X":0,"Y":5},{"X":0,"Y":6}],"Health":57,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"22","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3}],"Health":58,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"23","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":72,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3},{"X":1,"Y":4},{"X":1,"Y":5},{"X":0,"Y":5}],"Health":56,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":5},{"X":3,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":3}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":73,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":1},{"X":0,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3},{"X":1,"Y":4},{"X":1,"Y":5}],"Health":55,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"39","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":5},{"X":3,"Y":5},{"X":3,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"39","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":74,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":1},{"X":0,"Y":1},{"X":0,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3},{"X":1,"Y":4}],"Health":54,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":6},{"X":2,"Y":5},{"X":3,"Y":5},{"X":3,"Y":4},{"X":2,"Y":4}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"17","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":75,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":1},{"X":1,"Y":1},{"X":0,"Y":1},{"X":0,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3}],"Health":53,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":7},{"X":2,"Y":6},{"X":2,"Y":5},{"X":3,"Y":5},{"X":3,"Y":4}],"Health":97,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":76,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":0,"Y":1},{"X":0,"Y":2},{"X":1,"Y":2}],"Health":52,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":8},{"X":2,"Y":7},{"X":2,"Y":6},{"X":2,"Y":5},{"X":3,"Y":5}],"Health":96,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":77,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":0,"Y":1},{"X":0,"Y":2}],"Health":51,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":9},{"X":2,"Y":8},{"X":2,"Y":7},{"X":2,"Y":6},{"X":2,"Y":5}],"Health":95,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":78,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":1},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":0,"Y":1}],"Health":50,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":10},{"X":2,"Y":9},{"X":2,"Y":8},{"X":2,"Y":7},{"X":2,"Y":6}],"Health":94,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":79,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":1},{"X":3,"Y":1},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1}],"Health":49,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9},{"X":2,"Y":8},{"X":2,"Y":7}],"Health":93,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":80,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1}],"Health":48,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":10},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9},{"X":2,"Y":8},{"X":2,"Y":8}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":81,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1},{"X":3,"Y":2},{"X":2,"Y":2}],"Health":47,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":10},{"X":4,"Y":10},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9},{"X":2,"Y":8}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":82,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1},{"X":3,"Y":2}],"Health":46,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":9},{"X":5,"Y":10},{"X":4,"Y":10},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":83,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1}],"Health":45,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10},{"X":4,"Y":10},{"X":3,"Y":10},{"X":2,"Y":10}],"Health":97,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":84,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1}],"Health":44,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10},{"X":4,"Y":10},{"X":3,"Y":10}],"Health":96,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":85,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":5},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2}],"Health":43,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":8},{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10},{"X":4,"Y":10}],"Health":95,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":86,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":6},{"X":2,"Y":5},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3}],"Health":42,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":7},{"X":3,"Y":8},{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10},{"X":5,"Y":10}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":87,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":5},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3}],"Health":41,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":7},{"X":3,"Y":7},{"X":3,"Y":8},{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}}
{"Type":"frame","Data":{"Turn":88,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":7},{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":5},{"X":2,"Y":4},{"X":2,"Y":3}],"Health":40,"Death":{"Cause":"head-collision","Turn":88,"EliminatedBy":"6afa331f-14c7-43c9-89cb-324a5c8dda4d"},"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":7},{"X":2,"Y":7},{"X":3,"Y":7},{"X":3,"Y":8},{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}}
{"Type":"game_end","Data":{"ID":"25c502f3-a05c-49af-8dbf-4c0fd17e8544","Status":"running","Width":11,"Height":11,"Ruleset":{"name":"standard"},"SnakeTimeout":0,"Source":"","RulesetName":"standard","RulesStages":[],"Map":"standard"}}

16
go.mod
View file

@ -1,6 +1,8 @@
module github.com/BattlesnakeOfficial/rules module github.com/BattlesnakeOfficial/rules
go 1.21 go 1.23.0
toolchain go1.24.6
require ( require (
github.com/google/uuid v1.5.0 github.com/google/uuid v1.5.0
@ -19,6 +21,10 @@ require (
github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
github.com/jackc/pgx/v5 v5.7.5 // indirect
github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/magiconair/properties v1.8.7 // indirect github.com/magiconair/properties v1.8.7 // indirect
github.com/mattn/go-sqlite3 v1.14.32 // indirect github.com/mattn/go-sqlite3 v1.14.32 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect
@ -32,10 +38,12 @@ require (
github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/pflag v1.0.5 // indirect
github.com/subosito/gotenv v1.6.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect
go.uber.org/multierr v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.37.0 // indirect
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a // indirect golang.org/x/exp v0.0.0-20240119083558-1b970713d09a // indirect
golang.org/x/net v0.20.0 // indirect golang.org/x/net v0.21.0 // indirect
golang.org/x/sys v0.16.0 // indirect golang.org/x/sync v0.13.0 // indirect
golang.org/x/text v0.14.0 // indirect golang.org/x/sys v0.32.0 // indirect
golang.org/x/text v0.24.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect
) )

21
go.sum
View file

@ -17,6 +17,14 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5 v5.7.5 h1:JHGfMnQY+IEtGM63d+NGMjoRpysB2JBwDr5fsngwmJs=
github.com/jackc/pgx/v5 v5.7.5/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M=
github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@ -63,6 +71,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
@ -71,18 +81,29 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a h1:Q8/wZp0KX97QFTc2ywcOE0YRjZPVIx+MXInMzdvQqcA= golang.org/x/exp v0.0.0-20240119083558-1b970713d09a h1:Q8/wZp0KX97QFTc2ywcOE0YRjZPVIx+MXInMzdvQqcA=
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= golang.org/x/exp v0.0.0-20240119083558-1b970713d09a/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08=
golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=