Minecraft V2 Script – Creative Mode, Block Building & Physics 3 No Key

Minecraft V2 Script – Creative Mode, Block Building & Physics

Universal • 15 hours ago • 3 views

Description

Minecraft V2 is a universal Roblox script that recreates several features inspired by Minecraft Java Edition. It includes Minecraft-style movement, physics, a Steve character model, and the ability to place or remove blocks. The project is still a work in progress, so bugs and incomplete features may occur.

Key Features

  • Creative Mode: Includes a Minecraft-inspired creative experience
  • Minecraft Movement: Recreates Minecraft-style character movement
  • Accurate Physics: Features physics inspired by Minecraft
  • Steve Model: Uses a Minecraft-style Steve character model
  • Block Placement: Place blocks in the world
  • Block Removal: Remove blocks from the world
  • World Editing: Supports placing and removing world blocks
  • Combat System: Allows hitting players and attacking entities or NPCs
  • Universal Script: Listed under the universal script category
  • Direct Execute: Supports direct execution
Universal
Game Page
Universal
Roblox
Views 3+
Likes 0
Dislikes 0
Posted 15 hours ago
Updated 15 hours ago
Key System No
Mobile Supported

Script Preview

3054 lines • 213.8 KB
local function __RunMinecraftClient()
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local GuiService = game:GetService("GuiService")
local ContextActionService = game:GetService("ContextActionService")
local Lighting = game:GetService("Lighting")
local lp = Players.LocalPlayer
local camera = workspace.CurrentCamera
while not camera do
    workspace:GetPropertyChangedSignal("CurrentCamera"):Wait()
    camera = workspace.CurrentCamera
end
local playerGui = lp:WaitForChild("PlayerGui")
local oldCameraMode = lp.CameraMode
local oldCameraMinZoom = lp.CameraMinZoomDistance
local oldCameraMaxZoom = lp.CameraMaxZoomDistance
local F = {} -- namespaces helper functions to stay within Luau local-register limits
if shared.__MCSteveStop then pcall(shared.__MCSteveStop) end
local conns = {}
F.track = function(c) conns[#conns + 1] = c return c end
local BLOCK = 2.75
local PX = BLOCK / 16
local TICK = 1 / 20
-- Build/Features : Steve model/animations, catalog, inventory/crafting, manual block
-- placement/breaking, and the original player-mechanics movement/camera behavior (recreated).
-- No initial world blocks are generated. Creative HUD omits hearts, hunger, and the XP bar.
local WALK_BLOCKS_PER_SECOND = 4.317
local SPRINT_BLOCKS_PER_SECOND = 5.612
local SNEAK_BLOCKS_PER_SECOND = 1.295
local FLY_BLOCKS_PER_SECOND = 10.92
local FLY_SPRINT_BLOCKS_PER_SECOND = 21.6
local GROUND_SLIPPERINESS = 0.6
local BODY_MOVE_TURN_RESPONSE = 16.0
local BODY_TURN_RESPONSE = 8.5
local BODY_TURN_DEADZONE = math.rad(3)
local MAX_HEAD_YAW = math.rad(38)
local IMG = {
	inventory = {w=176,h=166,d="2:-;171:000000;4:-;1:000000;171:ffffff;1:000000;2:-;1:000000;172:ffffff;1:c6c6c6;1:000000;1:-;1:000000;3:ffffff;169:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;17:373737;1:8b8b8b;50:373737;1:8b8b8b;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;17:373737;1:8b8b8b;17:373737;1:8b8b8b;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:8b8b8b;17:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;17:373737;1:8b8b8b;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;20:c6c6c6;17:373737;1:8b8b8b;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;20:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;11:c6c6c6;1:8b8b8b;8:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;11:c6c6c6;2:8b8b8b;7:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;11:c6c6c6;3:8b8b8b;6:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;11:c6c6c6;4:8b8b8b;5:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;11:c6c6c6;5:8b8b8b;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;2:c6c6c6;15:8b8b8b;3:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;17:373737;1:8b8b8b;17:373737;1:8b8b8b;2:c6c6c6;16:8b8b8b;2:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;15:8b8b8b;3:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;11:c6c6c6;5:8b8b8b;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;11:c6c6c6;4:8b8b8b;5:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;11:c6c6c6;3:8b8b8b;6:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;11:c6c6c6;2:8b8b8b;7:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;11:c6c6c6;1:8b8b8b;8:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:8b8b8b;17:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;20:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;17:373737;1:8b8b8b;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;20:c6c6c6;1:373737;16:8b8b8b;1:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;20:c6c6c6;1:8b8b8b;17:ffffff;2:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;21:c6c6c6;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;40:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:8b8b8b;17:ffffff;1:373737;49:000000;1:ffffff;97:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;17:373737;1:8b8b8b;1:373737;49:000000;1:ffffff;17:373737;1:8b8b8b;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;49:000000;1:ffffff;1:373737;16:8b8b8b;1:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:8b8b8b;17:ffffff;1:8b8b8b;50:ffffff;1:8b8b8b;17:ffffff;79:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;17:373737;1:8b8b8b;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;1:373737;16:8b8b8b;1:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;4:c6c6c6;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;1:8b8b8b;17:ffffff;4:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;170:c6c6c6;2:555555;2:000000;2:ffffff;169:c6c6c6;3:555555;1:000000;1:-;1:000000;1:c6c6c6;172:555555;1:000000;2:-;1:000000;171:555555;1:000000;4:-;171:000000;2:-"},
	hotbar = {w=182,h=22,d="183:000000;2:cecece;2:ababab;2:939393;1:ababab;172:939393;1:6d6d6d;2:000000;1:ababab;3:5d5d5d;1:676767;2:5d5d5d;1:626262;1:5a5a5a;1:5d5d5d;1:5a5a5a;1:5d5d5d;1:5a5a5a;1:5d5d5d;1:676767;1:626262;1:5a5a5a;1:5d5d5d;1:707070;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:5a5a5a;3:5d5d5d;1:666666;2:5d5d5d;1:5a5a5a;1:5d5d5d;1:606060;3:5d5d5d;1:6b6b6b;2:5d5d5d;1:777777;1:626262;1:7e7e7e;2:5d5d5d;1:626262;1:5d5d5d;1:666666;2:626262;1:5d5d5d;1:626262;1:676767;1:606060;1:5d5d5d;1:626262;4:5d5d5d;1:707070;1:5d5d5d;1:7e7e7e;3:5d5d5d;1:5a5a5a;4:5d5d5d;1:606060;3:5d5d5d;1:565656;1:5d5d5d;1:626262;2:5d5d5d;1:707070;1:5d5d5d;1:808080;1:5a5a5a;1:5d5d5d;1:5a5a5a;3:5d5d5d;1:6b6b6b;1:5a5a5a;3:5d5d5d;1:5a5a5a;3:5d5d5d;1:626262;1:5d5d5d;1:707070;1:5d5d5d;1:7e7e7e;3:5d5d5d;1:606060;2:5d5d5d;1:707070;4:5d5d5d;1:5a5a5a;5:5d5d5d;1:676767;1:666666;1:7c7c7c;1:5a5a5a;5:5d5d5d;1:5a5a5a;1:5d5d5d;1:626262;8:5d5d5d;1:707070;1:5d5d5d;1:7e7e7e;5:5d5d5d;1:5a5a5a;5:5d5d5d;1:666666;1:5d5d5d;1:626262;1:5d5d5d;1:5a5a5a;1:606060;1:666666;1:5d5d5d;1:7a7a7a;1:666666;5:5d5d5d;1:606060;2:676767;3:5d5d5d;1:626262;4:5d5d5d;1:707070;1:474747;2:000000;1:ababab;1:666666;8:040404;1:0b0b04;1:040404;1:080904;5:040404;1:737373;1:606060;1:7e7e7e;1:5a5a5a;1:040404;1:0d0e04;11:040404;1:080904;1:040404;1:060604;1:808080;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:060604;2:040404;1:080904;3:040404;1:060604;2:040404;1:080904;1:060604;2:040404;1:060604;1:7e7e7e;1:676767;1:7e7e7e;1:5d5d5d;7:040404;1:060604;8:040404;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:626262;7:040404;1:0f1004;1:060604;6:040404;1:060604;1:7e7e7e;1:6b6b6b;1:7e7e7e;1:5d5d5d;1:040404;1:060604;2:040404;1:060604;1:0f1004;5:040404;1:080904;4:040404;1:7e7e7e;1:5a5a5a;1:7e7e7e;1:5d5d5d;1:040404;1:060604;2:040404;1:0b0b04;7:040404;1:060604;3:040404;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;3:040404;1:060604;3:040404;1:080904;7:040404;1:080904;1:7e7e7e;1:5d5d5d;1:808080;1:626262;4:040404;1:060604;4:040404;1:0b0b04;1:080904;1:060604;4:040404;1:7e7e7e;1:474747;2:000000;1:939393;1:606060;1:040404;1:1b1d04;2:272505;1:191a04;1:272505;1:272406;1:2e2a0b;1:272406;1:272505;1:272406;1:161804;4:272505;1:7e7e7e;1:565656;1:7e7e7e;1:626262;1:040404;1:2e2a0b;7:272505;1:252404;1:2c2808;1:2a2607;1:1b1d04;1:272505;1:202205;1:2a2607;1:848484;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;5:272505;1:2a2507;1:272505;1:272406;3:272505;1:252404;1:1b1d04;1:222205;1:202205;1:808080;1:5d5d5d;1:7c7c7c;1:5d5d5d;1:040404;1:272505;1:252404;1:272505;1:2e2b0a;1:272505;1:1b1d04;1:222205;3:272505;1:191a04;3:272505;1:272406;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5a5a5a;1:040404;1:272505;1:252404;1:272505;1:222205;1:252404;1:1b1d04;1:272505;1:222205;1:252404;1:272505;1:191a04;1:272505;1:302d0e;1:222205;1:252404;1:7e7e7e;1:5d5d5d;1:7a7a7a;1:626262;1:040404;1:272505;1:1d2004;2:272505;1:2a2607;4:272505;1:191a04;1:202205;1:272505;1:2e2b0a;1:1b1d04;1:272505;1:737373;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:1d2004;6:272505;1:272406;1:2c2808;1:202205;1:272505;1:202205;1:272406;1:2a2607;1:272505;1:7e7e7e;1:606060;1:7e7e7e;1:5d5d5d;1:060604;2:272505;2:252404;1:272505;1:252404;5:272505;2:252404;1:2e2b0a;1:272505;1:777777;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:222205;1:272505;1:252404;1:222205;2:272505;1:2a2607;1:272505;1:272406;1:2a2607;1:272505;1:302d0e;1:272505;1:302c0e;1:272505;1:7e7e7e;1:474747;2:000000;1:ababab;1:5d5d5d;1:040404;4:272505;1:252404;3:272505;2:252404;1:2a2607;3:272505;1:272406;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:272505;1:252404;2:272505;1:252404;4:272505;1:302c0e;1:2a2507;1:272406;1:272505;1:2e2b0a;1:1b1d04;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:060604;1:191a04;3:272505;1:202205;6:272505;1:252404;1:222205;2:272505;1:777777;1:626262;1:7e7e7e;1:5a5a5a;1:040404;3:272505;1:2c2808;3:272505;1:202205;1:272505;1:2e2b0a;5:272505;1:858585;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:0d0e04;1:272505;1:1b1d04;1:252404;1:302c0e;2:272505;1:272406;2:272505;1:2e2b0a;3:272505;1:161804;1:272505;1:808080;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;2:272505;1:2c2808;1:332e10;1:222205;5:272505;1:252404;2:272505;1:1b1d04;1:191a04;1:7a7a7a;1:606060;1:848484;1:606060;1:040404;1:272505;1:2c2808;1:2a2607;3:272505;1:2a2507;2:272505;1:1d2004;1:272505;1:2e2b0a;3:272505;1:7e7e7e;1:606060;1:7e7e7e;1:5d5d5d;1:040404;3:272505;1:252404;1:272505;1:1b1d04;1:332e10;1:272505;1:272406;1:1b1d04;1:222205;4:272505;1:7e7e7e;1:5a5a5a;1:7e7e7e;1:606060;1:040404;1:272505;1:252404;1:222205;1:272505;1:272406;1:2c2808;1:1b1d04;1:2c2808;1:2a2607;2:272505;1:202205;1:2c2808;1:2a2607;1:272505;1:7e7e7e;1:474747;2:000000;1:939393;1:676767;1:040404;1:272505;1:2c2808;1:272505;1:191a04;1:272505;2:252404;1:272505;1:2a2607;1:2c2808;3:272505;1:2c2808;1:272505;1:7e7e7e;1:5a5a5a;1:7e7e7e;1:5d5d5d;1:080904;2:272505;1:2a2607;5:272505;1:272406;6:272505;1:7e7e7e;1:5a5a5a;1:7e7e7e;1:5d5d5d;1:040404;1:272505;1:272406;1:272505;1:2a2607;2:272505;1:2a2507;1:272505;1:2a2607;1:272505;1:1b1d04;1:272505;1:1b1d04;1:2e2a0b;1:272406;1:808080;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:060604;2:272505;1:272406;2:272505;2:252404;2:272505;1:2e2b0a;4:272505;1:222205;1:7e7e7e;1:5d5d5d;1:858585;1:626262;1:040404;1:252404;1:272406;1:2e2b0a;1:272505;1:272406;1:272505;1:1d2004;3:272505;1:1b1d04;2:272505;1:2c2808;1:272505;1:737373;1:666666;1:7e7e7e;1:5d5d5d;1:040404;1:1b1d04;7:272505;1:2a2607;2:272505;1:302c0e;3:272505;1:7a7a7a;1:626262;1:858585;1:5d5d5d;1:040404;1:272505;1:222205;2:272505;1:2a2607;2:272505;1:1d2004;1:272505;1:191a04;1:272406;1:2a2507;1:272406;1:202205;1:272505;1:7c7c7c;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:1b1d04;3:272505;1:2e2a0b;1:2a2507;5:272505;1:1b1d04;2:2e2b0a;1:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:272505;1:1d2004;1:272505;1:272406;1:2a2607;1:272505;1:2e2b0a;2:202205;1:272505;1:1b1d04;1:272505;1:202205;1:272406;1:2a2507;1:7e7e7e;1:474747;2:000000;1:939393;1:5d5d5d;1:040404;1:2c2808;1:2e2b0a;1:272505;1:1b1d04;4:272505;1:202205;1:2e2a0b;3:272505;1:2e2b0a;1:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:606060;1:040404;1:272505;1:272406;1:1b1d04;1:222205;1:272505;1:2a2507;2:272505;1:2a2607;1:272505;1:272406;3:272505;1:252404;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:626262;1:040404;1:272505;1:2a2507;5:272505;1:1d2004;1:272505;1:2e2b0a;1:1b1d04;2:272505;1:202205;1:2c2808;1:808080;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;2:252404;1:272505;1:161804;1:272505;1:2e2b0a;1:272406;1:272505;1:202205;3:272505;1:1b1d04;1:1d2004;1:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:606060;1:060604;2:272505;1:202205;1:272505;1:202205;1:222205;5:272505;1:1b1d04;1:252404;2:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:1b1d04;1:161804;1:252404;1:272406;1:272505;1:1b1d04;1:332e11;1:272406;2:272505;1:202205;2:2a2507;1:202205;1:272505;1:848484;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:060604;1:252404;1:272505;1:2a2607;1:252404;2:272505;1:272406;1:272505;1:2a2507;3:272505;1:332f11;1:272406;1:272505;1:848484;1:5d5d5d;1:737373;1:6d6d6d;1:060604;1:272505;1:302d0e;1:1d2004;2:272505;2:2e2b0a;1:222205;1:252404;6:272505;1:7e7e7e;1:626262;1:7e7e7e;1:5d5d5d;1:040404;1:302c0e;1:272505;1:161804;1:272406;5:272505;1:2c2808;2:272505;1:202205;2:272505;1:808080;1:474747;2:000000;1:939393;1:5d5d5d;1:040404;1:272505;1:2a2607;1:272505;1:2e2a0b;10:272505;1:1d2004;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;3:272505;1:202205;5:272505;1:2a2607;1:2e2b0a;2:272505;1:2e2b0a;1:272505;1:808080;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:2a2507;3:272505;1:252404;1:272406;2:272505;1:2e2b0a;3:272505;1:2e2a0b;2:272505;1:7e7e7e;1:666666;1:7e7e7e;1:5d5d5d;1:060604;2:272505;1:2e2b0a;2:272505;1:1b1d04;5:272505;1:161804;1:2c2808;1:222205;1:2a2607;1:777777;1:5d5d5d;1:7e7e7e;1:626262;1:040404;1:272505;1:202205;1:1b1d04;1:272505;1:2e2b0a;1:2c2808;3:272505;1:272406;1:1b1d04;3:272505;1:2e2a0b;1:848484;1:666666;1:7e7e7e;1:5d5d5d;1:040404;2:272505;1:2e2b0a;1:272505;1:252404;2:272505;1:191a04;5:272505;1:272406;1:191a04;1:7a7a7a;1:5d5d5d;1:8b8b8b;1:5d5d5d;1:060604;2:272505;1:252404;1:202205;1:272505;1:1b1d04;2:272505;1:252404;1:272505;1:272406;1:272505;1:2e2b0a;1:272505;1:2a2607;1:7e7e7e;1:626262;1:7e7e7e;1:5d5d5d;1:040404;4:272505;1:272406;1:272505;1:161804;1:272505;1:1b1d04;3:272505;1:252404;2:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:272505;2:191a04;3:272505;1:2e2a0b;8:272505;1:7e7e7e;1:474747;2:000000;1:939393;1:5d5d5d;1:040404;2:272505;1:272406;2:272505;1:1d2004;1:272505;1:1b1d04;3:272505;1:2a2507;1:272505;1:161804;1:272505;1:7e7e7e;1:606060;1:7a7a7a;1:5d5d5d;1:060604;1:272505;1:272406;2:272505;1:302c0e;1:1b1d04;1:191a04;2:272505;1:222205;1:272505;1:1d2004;1:272505;1:1b1d04;1:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;3:272505;1:272406;1:202205;1:2e2b0a;1:272505;1:252404;1:272505;1:272406;1:272505;1:302c0e;3:272505;1:7e7e7e;1:5a5a5a;1:7e7e7e;1:5d5d5d;1:040404;1:2c2808;1:272505;1:2a2507;1:202205;1:2a2607;1:272406;1:2a2607;1:2c2808;1:2a2607;1:222205;1:1b1d04;1:222205;1:272505;1:202205;1:332e10;1:7e7e7e;1:4d4d4d;1:7e7e7e;1:5a5a5a;1:060604;5:272505;1:2a2507;3:272505;1:272406;3:272505;1:202205;1:272505;1:7a7a7a;1:606060;1:858585;1:5d5d5d;1:040404;6:272505;2:202205;2:272505;1:222205;1:1b1d04;1:272505;1:2a2507;1:272505;1:7e7e7e;1:666666;1:707070;1:5d5d5d;1:040404;3:272505;1:252404;2:272406;1:2c2808;2:272505;1:222205;1:2a2507;1:2c2808;2:272505;1:2e2b0a;1:7e7e7e;1:5d5d5d;1:737373;1:626262;1:040404;1:1b1d04;1:272505;1:202205;1:272505;1:302d0e;1:252404;1:272505;1:2e2b0a;1:252404;1:1b1d04;1:222205;1:272505;1:1b1d04;1:2e2a0b;1:272505;1:7a7a7a;1:5d5d5d;1:808080;1:5d5d5d;1:080904;1:2c2808;2:272505;1:2e2b0a;1:191a04;1:272505;1:1b1d04;1:252404;4:272505;1:2c2808;2:272505;1:777777;1:474747;2:000000;1:939393;1:606060;1:040404;1:272505;1:2a2607;1:1b1d04;2:272505;1:272406;1:202205;1:272505;1:2e2a0b;1:222205;2:272505;1:252404;1:2e2a0b;1:272505;1:7e7e7e;1:626262;1:7e7e7e;1:5d5d5d;1:080904;1:202205;1:272505;1:1b1d04;1:252404;4:272505;1:1b1d04;1:272505;1:2c2808;2:272505;1:252404;1:332e10;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:080904;1:202205;1:272505;1:222205;1:252404;1:272505;1:1d2004;3:272505;1:272406;5:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:202205;1:252404;1:222205;1:202205;1:1b1d04;6:272505;1:2a2507;2:272505;1:272406;1:7e7e7e;1:5d5d5d;1:808080;1:606060;1:040404;1:1d2004;1:272406;3:272505;1:2a2607;4:272505;1:332e10;1:272505;1:272406;1:2e2b0a;1:272505;1:7c7c7c;1:5d5d5d;1:808080;1:5a5a5a;1:0b0b04;1:272505;1:202205;1:2e2a0b;3:272505;1:2e2b0a;1:272406;2:272505;1:1d2004;2:272505;1:161804;1:332f11;1:7e7e7e;1:666666;1:7e7e7e;1:5d5d5d;1:040404;3:272505;1:1b1d04;1:272505;1:272406;9:272505;1:7a7a7a;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;2:272505;1:1d2004;1:202205;1:272505;1:272406;5:272505;1:272406;1:252404;1:2e2b0a;1:272505;1:7e7e7e;1:5a5a5a;1:7e7e7e;1:5d5d5d;1:060604;1:272505;1:272406;1:2a2507;1:252404;1:2a2607;1:1b1d04;1:272505;1:202205;1:272505;1:2a2507;1:2c2808;4:272505;1:7e7e7e;1:474747;2:000000;1:939393;1:5d5d5d;1:040404;1:1d2004;1:272406;1:272505;1:2a2507;1:2c2808;2:252404;3:272505;1:1b1d04;2:272505;1:252404;1:272505;1:8b8b8b;1:5d5d5d;1:737373;1:5d5d5d;1:040404;4:272505;1:252404;1:272505;1:1d2004;1:252404;1:272505;1:272406;1:2e2b0a;1:272505;1:191a04;1:272505;1:252404;1:7e7e7e;1:5d5d5d;1:898989;1:5d5d5d;1:040404;1:1b1d04;1:272406;1:252404;3:272505;1:2a2607;1:302d0e;2:272505;1:252404;3:272505;1:222205;1:7c7c7c;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:252404;1:2a2607;1:332e11;1:272505;1:1b1d04;1:2a2607;5:272505;1:272406;1:1b1d04;2:272505;1:7a7a7a;1:676767;1:7c7c7c;1:4d4d4d;1:060604;2:272505;1:252404;1:1b1d04;1:272505;1:252404;3:272505;1:2c2808;1:252404;1:202205;1:272505;1:202205;1:2a2507;1:848484;1:666666;1:7e7e7e;1:5d5d5d;1:040404;1:1b1d04;6:272505;1:2c2808;2:272505;1:2a2507;1:272406;1:222205;1:272505;1:2c2808;1:7e7e7e;1:5d5d5d;1:7c7c7c;1:5d5d5d;1:060604;1:272406;1:272505;1:332f11;1:332e10;1:1b1d04;1:272505;1:222205;1:2c2808;6:272505;1:222205;1:7e7e7e;1:5d5d5d;1:7a7a7a;1:5d5d5d;1:040404;1:272505;1:272406;1:252404;1:272406;1:272505;1:1d2004;1:1b1d04;1:272505;1:2a2607;1:161804;4:272505;1:2a2507;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:565656;1:040404;4:272505;1:1d2004;5:272505;1:252404;1:272406;1:272505;1:191a04;1:272505;1:7e7e7e;1:474747;2:000000;1:939393;1:5d5d5d;1:040404;1:2a2507;3:272505;1:1b1d04;1:272505;1:2e2b0a;1:252404;3:272505;1:2c2808;1:272406;1:272505;1:2e2b0a;1:737373;1:5d5d5d;1:7a7a7a;1:5d5d5d;1:0f1004;2:272505;1:202205;2:272505;1:2e2a0b;1:272505;1:2a2507;1:272406;1:1b1d04;1:252404;1:2e2b0a;3:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:6b6b6b;1:040404;1:1b1d04;2:272505;1:252404;1:222205;2:1b1d04;1:202205;3:272505;1:1b1d04;1:272505;1:252404;1:272505;1:7e7e7e;1:5d5d5d;1:808080;1:5d5d5d;1:080904;1:1d2004;2:272505;1:1b1d04;2:272505;1:272406;1:2a2507;3:272505;1:2e2a0b;1:272505;1:252404;1:202205;1:848484;1:5d5d5d;1:858585;1:626262;1:040404;1:272505;1:272406;1:272505;1:252404;2:272505;1:2e2a0b;2:272505;1:222205;1:2a2507;1:252404;2:222205;1:272505;1:7e7e7e;1:5d5d5d;1:848484;1:5d5d5d;1:040404;1:2e2b0a;1:2a2607;1:141504;1:272406;1:191a04;4:272505;1:1b1d04;1:2e2b0a;1:1d2004;1:202205;1:2a2607;1:2e2b0a;1:808080;1:6b6b6b;1:858585;1:5d5d5d;1:040404;1:202205;1:1b1d04;3:272505;1:2c2808;1:252404;3:272505;1:252404;1:222205;2:272505;1:202205;1:7e7e7e;1:5d5d5d;1:737373;1:5d5d5d;1:060604;1:2a2507;1:1b1d04;2:272505;1:252404;1:272505;1:302c0e;1:272505;1:222205;1:272505;1:161804;1:272505;1:202205;2:272505;1:7a7a7a;1:5d5d5d;1:7e7e7e;1:5a5a5a;1:040404;1:1b1d04;3:272505;1:202205;1:272505;1:252404;1:191a04;7:272505;1:7e7e7e;1:474747;2:000000;1:939393;1:666666;1:060604;2:272505;1:1b1d04;1:2a2507;4:272505;1:2a2607;3:272505;1:191a04;1:272505;1:272406;1:7e7e7e;1:5a5a5a;1:7e7e7e;1:5d5d5d;1:040404;5:272505;1:2a2607;1:272505;1:202205;1:272505;2:272406;1:2c2808;1:1d2004;1:202205;1:222205;1:7a7a7a;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;2:272505;1:191a04;1:2a2607;1:202205;1:272505;1:222205;1:2e2b0a;1:272505;1:252404;3:272505;1:1b1d04;1:272505;1:7a7a7a;1:5a5a5a;1:7c7c7c;1:5a5a5a;1:060604;4:272505;1:252404;1:272505;1:2e2b0a;8:272505;1:7e7e7e;1:5a5a5a;1:7e7e7e;1:5d5d5d;1:040404;1:272505;1:202205;1:252404;1:2a2507;1:272505;1:1d2004;1:272505;1:2c2808;1:202205;1:272505;1:202205;1:2a2507;1:2e2a0b;1:272505;1:2a2507;1:7e7e7e;1:606060;1:7e7e7e;1:606060;1:080904;1:272505;1:2e2b0a;1:222205;9:272505;1:1b1d04;2:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:1b1d04;3:272505;1:2c2808;6:272505;1:202205;3:272505;1:7e7e7e;1:666666;1:7e7e7e;1:5d5d5d;1:040404;1:272505;1:272406;1:2c2808;4:272505;1:2a2607;3:272505;1:2a2607;3:272505;1:7e7e7e;1:5a5a5a;1:7e7e7e;1:606060;1:060604;1:272505;1:2a2607;3:272505;1:222205;1:2e2a0b;1:272406;1:272505;1:272406;1:272505;1:2e2b0a;1:272505;1:202205;1:272505;1:7e7e7e;1:474747;2:000000;1:939393;1:676767;1:060604;3:272505;1:2a2607;1:2a2507;2:272505;1:272406;1:272505;1:1b1d04;1:272505;1:272406;1:2c2808;1:191a04;1:272505;1:7e7e7e;1:5d5d5d;1:737373;1:5d5d5d;1:060604;1:272505;1:2a2507;4:272505;1:121304;1:252404;1:272505;1:2a2607;1:272505;1:272406;1:2a2507;1:161804;1:272505;1:707070;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:252404;1:272505;1:222205;1:272505;1:2a2607;1:1b1d04;6:272505;1:252404;2:272505;1:7e7e7e;1:5a5a5a;1:7e7e7e;1:626262;1:040404;1:272505;1:2a2507;1:2a2607;1:2a2507;2:272505;1:2a2607;1:1d2004;3:272505;1:202205;2:272505;1:272406;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5a5a5a;1:040404;3:272505;1:191a04;1:222205;1:1b1d04;1:252404;2:272505;1:272406;5:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:545454;1:040404;1:272505;1:252404;1:272505;2:272406;1:272505;1:272406;4:272505;1:2a2607;1:302d0e;2:252404;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:060604;7:272505;1:1b1d04;1:272505;1:2a2507;1:272505;1:272406;1:202205;2:272505;1:7e7e7e;1:626262;1:7e7e7e;1:5d5d5d;1:040404;1:272505;1:2e2a0b;1:252404;3:272505;1:2c2808;1:2a2507;5:272505;1:2a2507;1:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:606060;1:060604;1:272505;1:2a2607;1:2e2b0a;1:2a2507;7:272505;1:272406;1:272505;1:1b1d04;1:2c2808;1:7e7e7e;1:474747;2:000000;1:939393;1:5d5d5d;1:040404;1:2e2b0a;1:272505;1:1d2004;1:272505;1:1b1d04;1:272505;1:252404;2:272505;1:202205;1:2a2607;1:252404;1:1b1d04;1:202205;1:272505;1:7a7a7a;1:5a5a5a;1:737373;1:5d5d5d;1:040404;2:272505;1:272406;1:2a2607;1:272505;1:1b1d04;9:272505;1:7e7e7e;1:5d5d5d;1:848484;1:5d5d5d;1:040404;5:272505;1:272406;1:191a04;2:272505;1:202205;4:272505;1:2a2607;1:7e7e7e;1:5a5a5a;1:7e7e7e;1:5d5d5d;1:040404;2:272505;1:2c2808;1:191a04;1:2e2a0b;1:272505;1:272406;2:272505;1:2a2507;1:272505;1:302d0e;1:1d2004;2:272505;1:7e7e7e;1:5d5d5d;1:7c7c7c;1:5d5d5d;1:040404;1:2c2808;2:272505;1:2a2607;4:272505;1:202205;4:272505;1:252404;1:272406;1:7a7a7a;1:5d5d5d;1:858585;1:5d5d5d;1:040404;1:252404;3:272505;1:1b1d04;3:272505;1:202205;1:302d0e;3:272505;1:2e2a0b;1:272505;1:808080;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;2:272505;1:2e2b0a;1:1b1d04;3:272505;1:1b1d04;7:272505;1:858585;1:5d5d5d;1:7c7c7c;1:5d5d5d;1:040404;1:2a2507;1:252404;1:272505;1:252404;1:191a04;1:272505;1:272406;1:222205;1:272505;1:272406;3:272505;1:2a2507;1:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:272505;1:202205;1:272505;1:1b1d04;1:272406;2:272505;1:252404;3:272505;1:2a2507;1:272505;2:252404;1:7e7e7e;1:474747;2:000000;1:939393;1:5d5d5d;1:040404;1:272505;1:2e2b0a;1:272505;1:2a2607;1:272505;1:252404;2:272505;1:2a2607;6:272505;1:7e7e7e;1:676767;1:858585;1:626262;1:040404;1:272406;2:272505;1:2a2607;2:272505;1:1b1d04;1:2e2a0b;1:272505;1:191a04;1:272505;1:252404;2:272505;1:252404;1:7e7e7e;1:5d5d5d;1:898989;1:707070;1:040404;2:272505;1:1b1d04;1:2e2a0b;1:272505;1:272406;1:222205;2:272505;1:202205;1:1d2004;1:252404;1:1b1d04;1:272406;1:272505;1:848484;1:666666;1:7e7e7e;1:5d5d5d;1:040404;1:272505;1:202205;1:272406;1:272505;1:2e2b0a;1:2a2507;2:272505;1:272406;2:252404;1:272406;3:272505;1:7e7e7e;1:5d5d5d;1:777777;1:5d5d5d;1:040404;4:272505;1:252404;1:2a2607;1:272505;1:2c2808;2:272505;1:1b1d04;2:272505;1:2e2b0a;1:222205;1:7e7e7e;1:5d5d5d;1:808080;1:5d5d5d;1:040404;1:252404;1:272505;1:272406;1:2a2607;1:272505;1:252404;1:272406;1:1b1d04;1:302c0e;1:2a2607;4:272505;1:272406;1:777777;1:5d5d5d;1:858585;1:5d5d5d;1:040404;1:191a04;1:252404;1:332f11;5:272505;1:252404;1:202205;1:272505;1:202205;1:2e2a0b;2:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;3:272505;1:202205;1:252404;1:2a2607;3:272505;1:272406;1:2a2507;4:272505;1:7e7e7e;1:626262;1:808080;1:5d5d5d;1:040404;7:272505;1:2c2808;4:272505;1:2c2808;1:1b1d04;1:272505;1:7e7e7e;1:474747;2:000000;1:939393;1:5d5d5d;1:040404;9:272505;1:302c0e;4:272505;1:272406;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:202205;2:272505;1:202205;1:1b1d04;1:272505;1:272406;1:272505;1:2a2507;3:272505;1:252404;2:272505;1:808080;1:5d5d5d;1:858585;1:676767;1:040404;1:252404;2:272505;1:2e2b0a;3:272505;1:1b1d04;3:272505;1:2e2b0a;1:2a2607;1:1d2004;1:222205;1:808080;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:272505;1:252404;2:272505;2:252404;1:272505;1:332e10;2:272505;1:272406;1:1d2004;3:272505;1:7c7c7c;1:606060;1:707070;1:5a5a5a;1:0d0e04;1:332e11;3:272505;1:272406;1:272505;1:252404;1:1d2004;2:202205;1:1b1d04;1:272505;1:202205;1:2a2607;1:252404;1:808080;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;2:272505;1:222205;3:272505;1:202205;4:272505;1:222205;2:272505;1:2a2507;1:7e7e7e;1:5d5d5d;1:7c7c7c;1:5d5d5d;1:040404;1:272505;1:1d2004;1:2c2808;3:272505;1:2c2808;1:272505;1:272406;1:2a2507;5:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:1b1d04;3:272505;2:222205;2:272505;1:272406;1:272505;1:252404;1:302c0e;2:272505;1:2c2808;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;2:272505;1:252404;1:191a04;1:272406;1:222205;1:272505;1:1b1d04;1:2c2808;1:272406;2:272505;1:1d2004;1:2e2b0a;1:272505;1:7e7e7e;1:474747;2:000000;1:939393;1:5d5d5d;1:040404;2:272505;1:191a04;1:252404;1:272505;1:1b1d04;1:272505;1:272406;2:272505;1:161804;1:272406;3:272505;1:808080;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:060604;4:272505;1:222205;1:272505;1:252404;3:272505;1:1d2004;1:2e2b0a;3:272505;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:040404;1:332e10;1:2e2b0a;1:272406;2:272505;1:252404;2:272505;1:1b1d04;5:272505;1:202205;1:808080;1:5a5a5a;1:7e7e7e;1:5d5d5d;1:040404;1:222205;1:1b1d04;1:2c2808;1:1b1d04;1:2a2607;1:272505;1:2e2b0a;2:272505;1:191a04;1:272505;1:1b1d04;1:332e10;1:222205;1:272505;1:737373;1:606060;1:737373;1:5d5d5d;1:040404;1:1d2004;1:272505;1:252404;2:272505;1:2e2b0a;1:272505;1:2a2507;2:272505;1:1b1d04;1:272505;1:2c2808;2:272505;1:777777;1:5d5d5d;1:737373;1:5d5d5d;1:040404;1:272505;1:1b1d04;1:222205;1:272505;1:2a2607;1:272505;1:252404;1:272406;1:2a2507;1:272505;1:222205;1:252404;1:2a2607;1:2e2b0a;1:272406;1:7e7e7e;1:606060;1:808080;1:5a5a5a;1:040404;3:272505;1:2e2a0b;1:1b1d04;2:272505;1:191a04;1:222205;1:202205;3:272505;1:302d0e;1:2a2507;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:5d5d5d;1:060604;2:272505;1:222205;1:202205;1:272505;1:252404;1:202205;2:272406;2:272505;1:222205;2:272505;1:1b1d04;1:7c7c7c;1:5d5d5d;1:7a7a7a;1:666666;1:040404;1:272505;1:272406;1:2c2808;1:272505;1:1b1d04;1:2e2b0a;1:272505;1:1b1d04;2:272505;1:2a2607;1:202205;1:2a2507;1:272505;1:202205;1:7e7e7e;1:474747;2:000000;1:939393;1:707070;9:7e7e7e;1:898989;1:848484;2:7e7e7e;1:707070;1:898989;1:808080;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:6b6b6b;1:7e7e7e;1:7a7a7a;1:7e7e7e;1:848484;1:7a7a7a;1:7e7e7e;1:7a7a7a;1:7e7e7e;1:7c7c7c;2:7e7e7e;1:858585;2:7e7e7e;2:808080;1:7e7e7e;1:626262;1:7e7e7e;1:707070;1:7e7e7e;1:848484;2:7e7e7e;1:848484;1:7e7e7e;1:858585;1:7e7e7e;1:7c7c7c;3:7e7e7e;1:737373;1:808080;1:858585;1:7c7c7c;1:777777;1:5d5d5d;1:737373;1:6b6b6b;1:7c7c7c;1:777777;7:7e7e7e;1:808080;1:7e7e7e;2:848484;2:808080;1:7c7c7c;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:737373;3:7e7e7e;1:808080;1:7e7e7e;2:7a7a7a;3:7e7e7e;1:858585;1:7c7c7c;3:7e7e7e;1:7a7a7a;1:7e7e7e;1:5d5d5d;1:7e7e7e;1:737373;1:7e7e7e;1:7a7a7a;4:7e7e7e;1:808080;2:7e7e7e;1:737373;1:777777;2:808080;1:7e7e7e;1:808080;1:848484;1:7e7e7e;1:5a5a5a;1:777777;1:707070;2:7e7e7e;1:7c7c7c;4:7e7e7e;1:909090;2:7e7e7e;1:737373;4:7e7e7e;2:7c7c7c;1:5d5d5d;2:7a7a7a;1:909090;1:7a7a7a;8:7e7e7e;1:737373;1:7e7e7e;1:848484;1:7e7e7e;1:808080;2:7e7e7e;1:5d5d5d;1:7c7c7c;1:707070;5:7e7e7e;1:7c7c7c;1:7e7e7e;1:7c7c7c;1:7e7e7e;1:7c7c7c;1:777777;1:737373;3:7e7e7e;1:808080;1:7e7e7e;1:474747;2:000000;1:939393;1:676767;2:5d5d5d;1:606060;2:5d5d5d;2:626262;1:5d5d5d;1:5a5a5a;1:5d5d5d;1:676767;2:5d5d5d;1:666666;4:5d5d5d;1:6d6d6d;1:606060;1:666666;1:5d5d5d;1:5a5a5a;1:5d5d5d;1:626262;1:5d5d5d;1:606060;2:5d5d5d;1:5a5a5a;5:5d5d5d;1:565656;2:5d5d5d;1:707070;4:5d5d5d;2:626262;1:606060;3:5d5d5d;1:606060;4:5d5d5d;1:5a5a5a;3:5d5d5d;1:707070;5:5d5d5d;2:626262;3:5d5d5d;1:666666;2:5d5d5d;1:5a5a5a;2:626262;1:565656;2:5d5d5d;1:707070;1:5d5d5d;1:626262;3:5d5d5d;1:606060;2:5a5a5a;3:5d5d5d;1:666666;2:5d5d5d;1:606060;1:5d5d5d;1:606060;2:5d5d5d;1:707070;1:5d5d5d;1:666666;1:606060;1:5d5d5d;1:626262;5:5d5d5d;1:626262;1:565656;2:5d5d5d;1:606060;1:5d5d5d;1:606060;1:5d5d5d;1:606060;1:676767;1:5d5d5d;1:606060;1:5d5d5d;1:565656;1:606060;1:5d5d5d;1:5a5a5a;4:5d5d5d;1:606060;2:5d5d5d;1:5a5a5a;2:5d5d5d;2:5a5a5a;1:6b6b6b;2:5d5d5d;2:5a5a5a;5:5d5d5d;1:606060;2:5d5d5d;1:565656;3:5d5d5d;1:626262;2:5d5d5d;1:6d6d6d;3:5d5d5d;1:606060;5:5d5d5d;1:5a5a5a;7:5d5d5d;1:606060;1:474747;183:000000"},
	hotbar_sel = {w=24,h=23,d="24:000000;1:040404;1:ffffff;1:fdfdfd;1:f6f6f6;1:f7f9f7;1:ddf0d8;1:fcfefc;2:d5e8d0;1:cee1c9;1:d4e7cf;1:d5e8d0;1:daedd5;2:d5e8d0;1:d8ebd3;1:d5e8d0;1:cde0c8;4:d5e8d0;1:a1b29d;2:040404;1:fcfcfc;3:a1b29d;1:9bac97;3:a1b29d;1:a0b19c;1:aebfaa;1:9aab96;1:a1b29d;1:90a18c;1:a2b39e;1:9aab96;1:a1b29d;1:9aab96;2:a1b29d;1:aabba6;1:a1b29d;1:5e6c5b;2:040404;1:f7f9f7;1:a1b29d;1:616f5e;1:5f6d5c;1:586655;1:5f6d5c;1:596756;1:5e6c5b;3:5f6d5c;1:62705f;1:5f6d5c;1:606e5d;1:5b6958;1:5f6d5c;1:5d6b5a;2:5f6d5c;1:a8b9a4;1:a5b6a1;1:5f6d5c;2:040404;1:ffffff;1:a1b29d;1:5f6d5c;16:-;1:d1e4cc;1:a1b29d;1:5f6d5c;2:040404;1:d5e8d0;1:acbda8;1:5f6d5c;16:-;1:e2f5dd;1:a1b29d;1:667463;2:040404;1:d5e8d0;1:a1b29d;1:5f6d5c;16:-;1:d5e8d0;1:a1b29d;1:657362;2:040404;1:d5e8d0;1:a1b29d;1:5f6d5c;16:-;1:d5e8d0;1:a1b29d;1:5f6d5c;2:040404;1:caddc5;1:a1b29d;1:5f6d5c;16:-;1:d5e8d0;1:a1b29d;1:5f6d5c;2:040404;1:d5e8d0;1:a1b29d;1:5f6d5c;16:-;1:d5e8d0;1:a9baa5;1:5f6d5c;2:040404;1:d6e9d1;1:a9baa5;1:5f6d5c;16:-;1:d8ebd3;1:a1b29d;1:566453;2:040404;1:d5e8d0;1:a1b29d;1:5f6d5c;16:-;1:def1d9;1:a1b29d;1:687665;2:040404;1:daedd5;1:a1b29d;1:5b6958;16:-;1:d5e8d0;1:a1b29d;1:5a6857;2:040404;1:d5e8d0;1:a3b49f;1:556352;16:-;1:d5e8d0;1:a1b29d;1:5f6d5c;2:040404;1:dcefd7;1:a1b29d;1:677564;16:-;1:d5e8d0;1:a1b29d;1:5f6d5c;2:040404;1:d5e8d0;1:a1b29d;1:6d7b6a;16:-;1:d5e8d0;1:9cad98;1:586655;2:040404;1:dcefd7;1:9dae99;1:616f5e;16:-;1:d5e8d0;1:a1b29d;1:606e5d;2:040404;1:caddc5;1:a1b29d;1:546251;16:-;1:cfe2ca;1:a4b5a0;1:657362;2:040404;1:d3e6ce;1:95a691;1:5a6857;16:-;1:d7ead2;1:a1b29d;1:5f6d5c;2:040404;1:d5e8d0;1:9fb09b;1:5c6a59;16:-;1:f8faf8;1:9fb09b;1:556352;2:040404;1:d6e9d1;1:a1b29d;1:d0e3cb;1:d3e6ce;2:d5e8d0;1:d8ebd3;1:cfe2ca;1:d1e4cc;1:d5e8d0;1:d2e5cd;6:d5e8d0;1:daedd5;2:f7f9f7;1:a1b29d;1:5f6d5c;2:040404;1:d5e8d0;2:a1b29d;1:abbca7;1:9aab96;1:a2b39e;2:a1b29d;1:99aa95;1:abbca7;1:a1b29d;1:9dae99;3:a1b29d;1:9eaf9a;1:a1b29d;1:9eaf9a;1:a1b29d;1:9fb09b;1:a0b19c;1:5f6d5c;2:040404;1:a1b29d;2:5f6d5c;2:647261;1:596756;1:5c6a59;2:5f6d5c;1:667463;1:677564;4:5f6d5c;1:5e6c5b;1:667463;1:5f6d5c;1:6e7c6b;1:5f6d5c;1:566453;1:606e5d;1:040404"},
	xp_bg = {w=182,h=5,d="1:-;180:09100c;1:-;1:09100c;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;2:202b25;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;2:09100c;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;2:28332d;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;1:141f19;1:29352f;1:202c25;5:19241e;1:202c25;1:29352f;2:09100c;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;2:202b25;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:141f19;1:36433c;1:2e3a33;5:29352f;1:2e3a33;1:36433c;1:09100c;1:-;180:09100c;1:-"},
	crosshair = {w=15,h=15,d="52:-;1:ffffff;14:-;1:ffffff;14:-;1:ffffff;14:-;1:ffffff;10:-;9:ffffff;10:-;1:ffffff;14:-;1:ffffff;14:-;1:ffffff;14:-;1:ffffff;52:-"},
}
local ICON = {
	stone = {w=16,h=16,d="7:-;1:7f7f7f;1:8f8f8f;12:-;2:7f7f7f;1:8f8f8f;1:686868;2:747474;8:-;1:7f7f7f;1:8f8f8f;1:686868;1:8f8f8f;1:7f7f7f;1:747474;1:7f7f7f;1:686868;1:7f7f7f;1:686868;4:-;1:8f8f8f;1:747474;4:7f7f7f;1:747474;1:8f8f8f;1:7f7f7f;1:8f8f8f;2:7f7f7f;1:686868;1:7f7f7f;1:-;1:727272;2:7f7f7f;1:747474;2:8f8f8f;1:686868;2:8f8f8f;5:747474;1:7f7f7f;1:4c4c4c;1:5c5c5c;1:656565;1:5c5c5c;1:747474;1:7f7f7f;1:747474;3:7f7f7f;1:8f8f8f;3:7f7f7f;2:454545;1:4c4c4c;1:656565;1:727272;1:5c5c5c;1:656565;1:535353;1:8f8f8f;1:7f7f7f;2:747474;1:7f7f7f;1:747474;3:4c4c4c;1:454545;1:4c4c4c;2:656565;1:5c5c5c;1:656565;1:5c5c5c;1:535353;1:656565;1:7f7f7f;1:8f8f8f;1:555555;1:4c4c4c;1:3e3e3e;2:555555;1:3e3e3e;1:4c4c4c;1:727272;1:535353;1:727272;1:656565;1:727272;2:656565;1:5c5c5c;1:4c4c4c;1:3e3e3e;1:555555;3:454545;1:4c4c4c;1:454545;3:656565;2:5c5c5c;1:535353;2:5c5c5c;1:4c4c4c;1:454545;1:4c4c4c;1:555555;2:4c4c4c;1:555555;1:454545;1:5c5c5c;1:656565;1:5c5c5c;2:727272;1:5c5c5c;1:656565;1:727272;2:555555;1:3e3e3e;1:555555;2:4c4c4c;1:555555;1:454545;2:5c5c5c;1:727272;2:656565;1:727272;2:656565;1:454545;2:4c4c4c;1:3e3e3e;1:4c4c4c;1:3e3e3e;1:454545;1:555555;1:-;2:656565;1:5c5c5c;2:656565;1:5c5c5c;1:656565;2:4c4c4c;1:555555;2:454545;1:4c4c4c;1:454545;4:-;1:5c5c5c;2:656565;1:5c5c5c;1:727272;1:4c4c4c;1:454545;2:4c4c4c;1:555555;8:-;1:656565;2:727272;1:555555;2:4c4c4c;12:-;1:656565;1:4c4c4c;7:-"},
	dirt = {w=16,h=16,d="7:-;1:79553a;1:966c4a;12:-;2:79553a;1:b9855c;1:593d29;1:79553a;1:b9855c;8:-;2:79553a;1:b9855c;2:79553a;1:966c4a;4:79553a;4:-;1:79553a;1:593d29;1:79553a;1:b9855c;1:79553a;1:966c4a;1:79553a;1:b9855c;2:593d29;2:79553a;2:b9855c;1:-;1:78563b;2:b9855c;1:745844;1:966c4a;1:79553a;1:966c4a;1:79553a;2:966c4a;1:b9855c;1:79553a;2:966c4a;1:79553a;1:6f4f37;2:60442e;1:946a49;1:878787;1:593d29;2:79553a;1:966c4a;1:593d29;1:b9855c;1:79553a;2:966c4a;1:483322;1:5a402c;1:483322;3:60442e;1:473020;1:60442e;1:79553a;1:966c4a;4:79553a;1:5a402c;1:6f4f37;1:483322;1:6f4f37;1:483322;1:60442e;2:78563b;1:946a49;2:60442e;1:946a49;1:79553a;1:966c4a;1:483322;1:5a402c;1:483322;1:5a402c;1:404040;1:483322;1:5a402c;1:60442e;1:946a49;1:60442e;2:473020;1:78563b;2:473020;1:5a402c;2:352418;2:483322;1:6f4f37;2:483322;1:78563b;1:60442e;1:78563b;2:60442e;1:473020;1:78563b;1:60442e;1:404040;1:6f4f37;1:5a402c;1:6f4f37;1:352418;1:483322;1:6f4f37;1:483322;1:473020;1:78563b;2:60442e;3:78563b;1:946a49;1:352418;1:483322;1:5a402c;1:352418;1:483322;1:352418;1:5a402c;1:6f4f37;2:60442e;2:78563b;1:946a49;2:60442e;1:78563b;1:483322;1:5a402c;1:352418;2:5a402c;1:483322;1:6f4f37;1:5a402c;1:-;1:78563b;1:473020;1:78563b;2:60442e;2:78563b;1:5a402c;2:6f4f37;1:483322;1:352418;2:5a402c;4:-;1:60442e;1:946a49;1:473020;1:60442e;1:473020;3:483322;1:352418;1:5a402c;8:-;2:60442e;1:78563b;1:5a402c;1:6f4f37;1:483322;12:-;1:473020;1:483322;7:-"},
	cobblestone = {w=16,h=16,d="7:-;2:616161;12:-;1:b5b5b5;1:6e6d6d;1:888788;1:a6a6a6;1:888788;1:616161;8:-;2:616161;1:6e6d6d;2:888788;1:a6a6a6;2:888788;2:a6a6a6;4:-;1:616161;1:888788;6:6e6d6d;1:525252;4:616161;1:b5b5b5;1:-;1:4d4d4d;1:616161;1:6e6d6d;1:888788;1:616161;1:888788;1:525252;2:888788;4:a6a6a6;1:616161;1:6e6d6d;1:515151;1:848484;1:6c6c6c;1:4d4d4d;3:6e6d6d;1:a6a6a6;5:616161;1:b5b5b5;1:3a3a3a;1:515151;1:424141;2:585757;1:4d4d4d;1:909090;1:848484;3:616161;1:888788;2:b5b5b5;1:636363;1:515151;1:3a3a3a;1:515151;1:3a3a3a;1:6c6c6c;1:909090;1:848484;1:585757;1:848484;1:414141;1:909090;1:888788;1:616161;1:636363;1:313131;1:515151;1:424141;1:636363;1:515151;1:6c6c6c;1:4d4d4d;1:585757;1:6c6c6c;2:4d4d4d;1:6c6c6c;1:4d4d4d;1:6c6c6c;2:636363;1:3a3a3a;2:515151;1:636363;1:515151;1:424141;1:585757;1:6c6c6c;1:585757;2:4d4d4d;1:909090;1:848484;1:414141;1:3a3a3a;2:515151;1:424141;1:6c6c6c;2:515151;2:6c6c6c;2:4d4d4d;1:585757;1:6c6c6c;1:4d4d4d;1:585757;1:6c6c6c;1:424141;4:515151;1:3a3a3a;1:6c6c6c;1:515151;1:848484;1:6c6c6c;1:4d4d4d;1:909090;2:585757;1:4d4d4d;1:6c6c6c;1:515151;1:636363;1:515151;1:313131;4:3a3a3a;1:-;1:4d4d4d;1:585757;1:6c6c6c;1:848484;1:414141;1:848484;1:4d4d4d;1:6c6c6c;2:424141;1:636363;1:515151;1:3a3a3a;1:636363;4:-;1:4d4d4d;1:6c6c6c;1:585757;2:6c6c6c;1:424141;1:636363;1:3a3a3a;1:424141;1:3a3a3a;8:-;2:6c6c6c;1:585757;1:6c6c6c;1:424141;1:515151;12:-;1:585757;1:515151;7:-"},
	oak_planks = {w=16,h=16,d="7:-;1:b8945f;1:af8f55;12:-;1:af8f55;1:c29d62;1:7e6237;1:b8945f;1:967441;1:c29d62;8:-;1:b8945f;1:c29d62;1:7e6237;1:b8945f;1:9f844d;1:c29d62;1:67502c;1:9f844d;1:b8945f;1:c29d62;4:-;1:af8f55;1:9f844d;1:7e6237;1:af8f55;1:b8945f;1:af8f55;1:67502c;1:967441;1:9f844d;1:c29d62;1:67502c;1:af8f55;1:b8945f;1:c29d62;1:-;1:8c7244;1:7e6237;1:af8f55;1:9f844d;1:b8945f;1:67502c;2:9f844d;1:c29d62;1:7e6237;1:af8f55;1:b8945f;1:af8f55;1:7e6237;1:967441;1:5a4527;1:93764c;1:8c7244;1:9b7d4e;2:967441;1:9f844d;1:c29d62;1:967441;2:af8f55;1:c29d62;1:7e6237;1:9f844d;1:745e3a;1:6e5839;1:5a4527;1:9b7d4e;1:785c34;2:93764c;1:9b7d4e;1:67502c;1:9f844d;2:b8945f;1:67502c;1:9f844d;1:745e3a;1:6e5839;1:695533;1:3d301a;1:6e5839;1:7f693d;1:8c7244;1:9b7d4e;1:524023;1:7f693d;1:8c7244;1:9b7d4e;1:67502c;1:9f844d;1:745e3a;2:5f4f2e;1:4b3a21;2:6e5839;1:5f4f2e;1:9b7d4e;1:644e2c;1:8c7244;1:785c34;1:9b7d4e;1:644e2c;1:93764c;1:7f693d;2:6e5839;1:4b3a21;1:5f4f2e;2:695533;1:5a4527;1:5f4f2e;2:93764c;1:8c7244;1:524023;2:93764c;1:8c7244;1:524023;1:4b3a21;1:745e3a;1:695533;1:5a4527;1:3d301a;1:745e3a;2:5f4f2e;1:7f693d;1:785c34;2:7f693d;1:9b7d4e;1:644e2c;1:7f693d;1:8c7244;2:6e5839;1:4b3a21;1:745e3a;1:5f4f2e;1:695533;1:3d301a;1:745e3a;1:7f693d;2:93764c;1:524023;1:8c7244;1:7f693d;1:9b7d4e;1:524023;1:3d301a;2:6e5839;1:5f4f2e;1:4b3a21;1:5f4f2e;1:695533;1:5f4f2e;1:-;1:524023;1:8c7244;1:7f693d;1:9b7d4e;1:644e2c;1:7f693d;1:785c34;2:695533;1:4b3a21;1:5f4f2e;1:6e5839;1:5f4f2e;1:3d301a;4:-;1:785c34;1:93764c;1:8c7244;1:93764c;1:524023;1:3d301a;1:745e3a;1:5f4f2e;1:5a4527;1:4b3a21;8:-;1:644e2c;1:7f693d;1:8c7244;2:695533;1:4b3a21;12:-;1:524023;1:4b3a21;7:-"},
	oak_log = {w=16,h=16,d="7:-;2:4c3d26;12:-;1:4c3d26;1:af8f55;2:7e6237;1:b8945f;1:4c3d26;8:-;1:4c3d26;1:af8f55;1:9f844d;3:af8f55;1:b8945f;1:967441;1:c29d62;1:4c3d26;4:-;1:5f4a2b;1:b8945f;1:9f844d;1:b8945f;1:af8f55;1:967441;2:af8f55;1:9f844d;1:af8f55;1:b8945f;1:9f844d;1:b8945f;1:5f4a2b;1:-;1:3c301e;1:5f4a2b;1:b8945f;1:9f844d;2:af8f55;1:7e6237;2:af8f55;1:9f844d;1:af8f55;1:b8945f;1:9f844d;1:b8945f;1:5f4a2b;1:392c19;1:2c2213;1:4c3b22;1:2c2213;1:5f4a2b;1:af8f55;1:967441;1:b8945f;3:af8f55;1:967441;1:af8f55;1:5f4a2b;1:574327;1:453620;1:392c19;1:3c301e;1:4c3b22;1:2c2213;1:4c3b22;1:2c2213;1:5f4a2b;1:af8f55;2:967441;1:af8f55;1:5f4a2b;1:453620;1:21190e;1:2d2416;2:453620;2:5c482b;1:2c2213;1:4c3b22;1:3c301e;2:745a34;2:5f4a2b;1:453620;1:21190e;3:392c19;1:2d2416;1:453620;1:3c301e;1:5c482b;1:4c3b22;1:3c301e;1:4c3b22;1:2c2213;1:5c482b;1:4c3b22;1:2d2416;1:392c19;1:2d2416;2:392c19;1:453620;1:392c19;1:453620;1:5c482b;1:79603a;1:5c482b;1:745a34;1:5c482b;2:3c301e;1:4c3b22;1:21190e;1:392c19;1:2d2416;2:453620;1:392c19;2:453620;1:3c301e;1:745a34;1:4c3b22;1:5c482b;2:4c3b22;1:3c301e;1:5c482b;3:453620;1:574327;1:392c19;1:2d2416;2:453620;2:5c482b;1:4c3b22;1:2c2213;1:4c3b22;1:3c301e;1:4c3b22;1:5c482b;1:453620;1:5b482b;1:453620;1:21190e;1:453620;1:21190e;2:453620;1:-;1:745a34;1:5c482b;1:3c301e;1:4c3b22;1:2c2213;2:5c482b;1:453620;1:574327;1:392c19;1:21190e;1:392c19;1:2d2416;1:574327;4:-;3:3c301e;2:5c482b;1:2d2416;2:453620;1:21190e;1:2d2416;8:-;1:5c482b;1:745a34;1:5c482b;1:453620;1:574327;1:453620;12:-;1:4c3b22;1:453620;7:-"},
	grass_block = {w=16,h=16,d="7:-;1:546e34;1:6e9044;12:-;1:577135;1:4a612d;1:4e6630;1:4b612e;1:577135;1:516931;8:-;1:556f34;1:587236;1:597436;1:516a32;1:495f2d;1:62803c;1:475c2b;1:516a32;1:485e2c;1:556f34;4:-;1:495f2d;1:556f34;1:4c632e;1:5d7a39;1:4f6730;1:495f2d;1:5d7939;1:485e2c;1:4c642f;1:425628;1:506831;1:62803c;1:6e9044;1:5e7b3a;1:-;1:405428;1:4d642f;1:455b2a;1:475c2b;1:526b32;1:536c32;1:536c33;1:4c642f;1:607e3b;1:4c642f;1:617f3c;1:445829;1:475d2b;1:5e7b3a;1:67863f;1:33421f;1:473020;2:405428;1:546d33;1:536c33;1:5b7738;1:526b32;1:4f6730;1:4a612d;1:506931;1:536c33;1:485e2c;1:516931;1:364621;1:2f3d1c;1:352418;1:60442e;2:473020;1:3a4c24;1:485d2c;1:465b2b;1:4c642f;1:5a7637;1:5d7a39;1:475c2b;1:516931;2:33421f;1:3a4c24;1:352418;1:483322;1:60442e;2:78563b;1:473020;1:485d2c;1:425628;1:3a4c24;1:4d642f;1:44592a;1:2f3d1c;3:352418;1:404040;1:483322;1:5a402c;1:60442e;1:946a49;1:60442e;3:473020;1:354620;1:3f5226;1:2f3d1c;1:2d3a1b;1:352418;2:483322;1:6f4f37;2:483322;1:78563b;1:60442e;1:78563b;2:60442e;1:473020;1:78563b;1:60442e;1:404040;1:6f4f37;1:5a402c;1:6f4f37;1:352418;1:483322;1:6f4f37;1:483322;1:473020;1:78563b;2:60442e;3:78563b;1:946a49;1:352418;1:483322;1:5a402c;1:352418;1:483322;1:352418;1:5a402c;1:6f4f37;2:60442e;2:78563b;1:946a49;2:60442e;1:78563b;1:483322;1:5a402c;1:352418;2:5a402c;1:483322;1:6f4f37;1:5a402c;1:-;1:78563b;1:473020;1:78563b;2:60442e;2:78563b;1:5a402c;2:6f4f37;1:483322;1:352418;2:5a402c;4:-;1:60442e;1:946a49;1:473020;1:60442e;1:473020;3:483322;1:352418;1:5a402c;8:-;2:60442e;1:78563b;1:5a402c;1:6f4f37;1:483322;12:-;1:473020;1:483322;7:-"},
	crafting_table = {w=16,h=16,d="7:-;2:0e0b06;12:-;1:733920;1:9e5932;2:ae693c;1:9e5932;1:733920;8:-;1:733920;2:ae693c;1:553824;2:ae693c;1:553824;2:ae693c;1:733920;4:-;1:0e0b06;1:41230e;1:ae693c;2:4b2b18;1:ae693c;2:553824;1:ae693c;2:4b2b18;1:ae693c;1:41230e;1:0e0b06;1:-;1:8c7244;1:0e0b06;1:41230e;1:ae693c;2:4b2b18;1:ae693c;1:4b2b18;1:553824;1:ae693c;1:4b2b18;1:553824;1:ae693c;1:41230e;1:0e0b06;1:0f0c07;1:93764c;1:8c7244;1:2c1a11;1:733920;2:ae693c;1:553824;1:9e5932;1:ae693c;1:553824;2:ae693c;1:733920;1:745e3a;1:6e5839;1:0f0c07;1:9b7d4e;1:785c34;1:93764c;1:3c2213;1:5c2d19;1:733920;1:9e5932;2:ae693c;1:9e5932;1:733920;1:2d190e;1:21130d;1:695533;1:3d301a;1:0f0c07;1:7f693d;1:341c0b;1:9b7d4e;1:15110a;1:7f693d;1:8c7244;1:9b7d4e;1:0e0b06;1:1a150d;1:745e3a;1:5f4f2e;1:16130a;1:4b3a21;2:6e5839;1:0f0c07;1:9b7d4e;1:201808;1:8c7244;1:2c1a11;1:9b7d4e;1:341c0b;1:93764c;1:141009;2:6e5839;1:4b3a21;1:2d190e;2:695533;1:5a4527;1:0f0c07;1:93764c;1:acacac;1:8c7244;1:15110a;1:93764c;2:201808;1:141009;1:4b3a21;1:745e3a;1:271508;1:21130d;1:3d301a;1:745e3a;1:5f4f2e;1:0f0c07;1:7f693d;1:785c34;1:7f693d;1:2c1a11;1:9b7d4e;1:cccccc;1:909090;1:141009;1:6e5839;1:181206;1:4b3a21;1:2d190e;1:5f4f2e;1:695533;1:3d301a;1:0f0c07;1:7f693d;2:93764c;1:0d0b06;1:8c7244;1:7f693d;1:acacac;1:141009;1:3d301a;1:818181;1:6c6c6c;1:21130d;1:4b3a21;1:5f4f2e;1:695533;1:0f0c07;1:-;1:524023;1:8c7244;1:2c1a11;1:9b7d4e;1:644e2c;1:acacac;1:141009;2:695533;1:4b3a21;1:2d190e;1:6e5839;1:5f4f2e;1:3d301a;4:-;1:141009;1:93764c;1:8c7244;1:cccccc;1:141009;1:3d301a;1:745e3a;1:5f4f2e;1:21130d;1:4b3a21;8:-;1:644e2c;1:7f693d;1:141009;2:695533;1:4b3a21;12:-;1:15110a;1:4b3a21;7:-"},
	diamond_sword = {w=16,h=16,d="13:-;3:0e3f36;12:-;1:0e3f36;2:a4fdf0;1:082520;11:-;1:0e3f36;1:a4fdf0;1:2bc7ac;1:a4fdf0;1:082520;10:-;1:0e3f36;1:a4fdf0;1:2bc7ac;1:a4fdf0;1:082520;10:-;1:0e3f36;1:a4fdf0;1:2bc7ac;1:33ebcb;1:082520;10:-;1:0e3f36;1:a4fdf0;1:2bc7ac;1:33ebcb;1:082520;5:-;2:0e3f36;3:-;1:0e3f36;1:33ebcb;1:2bc7ac;1:33ebcb;1:082520;6:-;1:0e3f36;1:156355;1:0e3f36;1:-;1:0e3f36;1:33ebcb;1:2bc7ac;1:33ebcb;1:082520;8:-;1:0e3f36;1:1e8a77;1:082520;1:33ebcb;1:1e8a77;1:33ebcb;1:082520;9:-;1:0e3f36;2:1e8a77;1:156355;1:33ebcb;1:082520;11:-;1:0e3f36;1:156355;1:0e3f36;1:082520;11:-;1:493615;1:684e1e;1:082520;2:0e3f36;1:082520;9:-;1:493615;1:896727;1:281e0b;1:-;2:082520;1:0e3f36;1:082520;6:-;2:0e3f36;1:684e1e;1:281e0b;4:-;2:082520;6:-;1:0e3f36;1:156355;1:082520;13:-;3:082520;13:-"},
	diamond_pickaxe = {w=16,h=16,d="38:-;5:0e3f36;10:-;1:0e3f36;1:33ebcb;1:2bc7ac;2:27b29a;1:2bc7ac;1:0e3f36;1:493615;1:684e1e;8:-;1:0e3f36;3:082520;2:27b29a;1:896727;1:281e0b;12:-;1:493615;1:2bc7ac;1:27b29a;1:082520;11:-;1:493615;1:684e1e;1:281e0b;1:27b29a;1:2bc7ac;1:082520;9:-;1:493615;1:896727;1:281e0b;1:-;1:082520;1:27b29a;1:082520;8:-;1:493615;1:684e1e;1:281e0b;2:-;1:082520;1:27b29a;1:082520;7:-;1:493615;1:896727;1:281e0b;3:-;1:082520;1:2bc7ac;1:082520;6:-;1:493615;1:684e1e;1:281e0b;4:-;1:082520;1:33ebcb;1:082520;5:-;1:493615;1:896727;1:281e0b;6:-;1:082520;5:-;1:493615;1:684e1e;1:281e0b;12:-;1:493615;1:896727;1:281e0b;13:-;2:281e0b;28:-"},
	diamond_axe = {w=16,h=16,d="25:-;2:0e3f36;13:-;1:0e3f36;2:33ebcb;1:0e3f36;11:-;1:0e3f36;1:33ebcb;1:27b29a;1:2bc7ac;1:0e3f36;10:-;1:0e3f36;1:33ebcb;3:27b29a;1:493615;1:684e1e;9:-;1:082520;1:33ebcb;1:2bc7ac;1:27b29a;1:1e8a77;1:27b29a;1:281e0b;10:-;2:082520;1:493615;1:27b29a;1:1e8a77;1:27b29a;1:082520;10:-;1:493615;1:684e1e;1:281e0b;2:27b29a;1:082520;9:-;1:493615;1:896727;1:281e0b;1:-;2:082520;9:-;1:493615;1:684e1e;1:281e0b;12:-;1:493615;1:684e1e;1:281e0b;12:-;1:493615;1:896727;1:281e0b;12:-;1:493615;1:684e1e;1:281e0b;12:-;1:493615;1:896727;1:281e0b;13:-;2:281e0b;28:-"},
	diamond_shovel = {w=16,h=16,d="43:-;2:0e3f36;1:082520;12:-;1:0e3f36;2:33ebcb;1:27b29a;1:082520;10:-;1:0e3f36;1:33ebcb;1:2bc7ac;1:27b29a;1:33ebcb;1:082520;9:-;1:0e3f36;1:33ebcb;1:2bc7ac;1:27b29a;1:2bc7ac;1:33ebcb;1:082520;10:-;1:493615;1:27b29a;1:2bc7ac;1:33ebcb;1:082520;10:-;1:493615;1:896727;1:281e0b;1:33ebcb;1:082520;10:-;1:493615;1:896727;1:281e0b;1:-;1:082520;10:-;1:493615;1:684e1e;1:281e0b;12:-;1:493615;1:896727;1:281e0b;12:-;1:493615;1:684e1e;1:281e0b;11:-;2:493615;1:896727;1:281e0b;12:-;1:493615;1:896727;1:281e0b;14:-;2:281e0b;27:-"},
	iron_helmet = {w=16,h=16,d="53:-;6:2d2d2d;9:-;1:2d2d2d;1:969696;4:c6c6c6;1:6b6b6b;1:191919;7:-;1:2d2d2d;1:969696;1:d8d8d8;1:ffffff;1:d8d8d8;2:c6c6c6;1:969696;1:6b6b6b;1:191919;6:-;1:2d2d2d;1:c6c6c6;2:d8d8d8;2:c6c6c6;3:969696;1:191919;6:-;1:2d2d2d;2:c6c6c6;3:2d2d2d;1:191919;1:6b6b6b;1:969696;1:191919;6:-;1:2d2d2d;1:c6c6c6;1:2d2d2d;5:191919;1:969696;1:191919;6:-;1:2d2d2d;1:c6c6c6;1:2d2d2d;5:191919;1:6b6b6b;1:191919;6:-;1:2d2d2d;1:969696;6:191919;1:6b6b6b;1:191919;7:-;1:2d2d2d;1:191919;4:-;2:191919;68:-"},
	iron_chestplate = {w=16,h=16,d="33:-;5:2d2d2d;4:-;5:2d2d2d;2:-;1:2d2d2d;1:ffffff;1:d8d8d8;1:c6c6c6;1:2d2d2d;4:-;1:2d2d2d;1:ffffff;1:d8d8d8;1:c6c6c6;1:2d2d2d;2:-;1:2d2d2d;1:d8d8d8;2:c6c6c6;1:969696;1:2d2d2d;2:-;1:2d2d2d;1:969696;1:d8d8d8;2:c6c6c6;1:2d2d2d;2:-;1:2d2d2d;3:c6c6c6;1:d8d8d8;1:969696;2:2d2d2d;1:969696;4:c6c6c6;1:2d2d2d;2:-;1:2d2d2d;1:6b6b6b;1:969696;1:c6c6c6;1:ffffff;3:d8d8d8;3:c6c6c6;1:969696;1:6b6b6b;1:2d2d2d;2:-;2:191919;1:6b6b6b;3:d8d8d8;5:c6c6c6;1:6b6b6b;2:191919;4:-;1:191919;2:d8d8d8;6:c6c6c6;1:191919;6:-;1:191919;1:c6c6c6;1:d8d8d8;5:c6c6c6;1:969696;1:191919;6:-;1:191919;7:c6c6c6;1:969696;1:191919;6:-;1:191919;1:969696;5:c6c6c6;2:969696;1:191919;6:-;1:191919;1:6b6b6b;6:969696;1:6b6b6b;1:191919;7:-;1:191919;1:6b6b6b;4:969696;1:6b6b6b;1:191919;9:-;6:191919;21:-"},
	iron_leggings = {w=16,h=16,d="36:-;7:2d2d2d;1:191919;7:-;1:2d2d2d;1:d8d8d8;2:ffffff;2:d8d8d8;2:c6c6c6;1:6b6b6b;1:191919;6:-;1:2d2d2d;2:d8d8d8;5:c6c6c6;1:969696;1:191919;6:-;1:2d2d2d;1:d8d8d8;1:c6c6c6;3:969696;2:c6c6c6;1:969696;1:191919;6:-;1:2d2d2d;1:d8d8d8;1:c6c6c6;1:969696;2:191919;1:6b6b6b;1:c6c6c6;1:969696;1:191919;6:-;1:2d2d2d;2:c6c6c6;1:191919;2:-;1:191919;1:c6c6c6;1:969696;1:191919;6:-;1:2d2d2d;1:c6c6c6;1:969696;1:191919;2:-;1:2d2d2d;1:c6c6c6;1:969696;1:191919;6:-;1:2d2d2d;1:c6c6c6;1:969696;1:191919;2:-;1:2d2d2d;1:c6c6c6;1:969696;1:191919;6:-;1:2d2d2d;2:969696;1:191919;2:-;1:191919;2:969696;1:191919;6:-;1:2d2d2d;1:969696;1:6b6b6b;1:191919;2:-;1:191919;1:969696;1:6b6b6b;1:191919;6:-;1:191919;2:6b6b6b;1:191919;2:-;1:191919;2:6b6b6b;1:191919;6:-;4:191919;2:-;4:191919;35:-"},
	iron_boots = {w=16,h=16,d="52:-;3:2d2d2d;2:-;3:2d2d2d;7:-;1:2d2d2d;1:ffffff;1:d8d8d8;1:191919;2:-;1:2d2d2d;1:ffffff;1:d8d8d8;1:191919;6:-;1:2d2d2d;2:d8d8d8;1:191919;2:-;1:2d2d2d;1:d8d8d8;1:c6c6c6;1:191919;6:-;1:2d2d2d;1:d8d8d8;1:c6c6c6;1:191919;2:-;1:2d2d2d;2:c6c6c6;1:191919;6:-;1:2d2d2d;2:c6c6c6;1:191919;2:-;1:2d2d2d;2:c6c6c6;1:191919;6:-;1:2d2d2d;1:c6c6c6;1:969696;1:191919;2:-;1:2d2d2d;2:c6c6c6;1:191919;5:-;1:2d2d2d;2:c6c6c6;1:969696;1:191919;2:-;1:2d2d2d;1:969696;1:c6c6c6;1:969696;1:191919;3:-;1:2d2d2d;2:c6c6c6;1:969696;1:6b6b6b;1:191919;2:-;1:2d2d2d;1:6b6b6b;1:969696;1:c6c6c6;1:969696;1:191919;2:-;1:2d2d2d;2:969696;1:6b6b6b;2:191919;2:-;2:191919;2:969696;1:6b6b6b;1:191919;2:-;1:2d2d2d;3:191919;6:-;4:191919;49:-"},
	cooked_beef = {w=16,h=16,d="57:-;4:4e2719;11:-;1:4e2719;1:713f2d;1:7c4835;1:713f2d;1:8e523c;1:4e2719;9:-;1:4e2719;1:522f1f;1:985c43;1:8e523c;1:673728;1:713f2d;1:673728;1:4e2719;7:-;1:4e2719;2:8e523c;1:522f1f;1:7c4835;1:8e523c;1:522f1f;1:713f2d;1:2a160d;5:-;2:4e2719;1:673728;1:522f1f;1:985c43;1:8e523c;1:522f1f;1:7c4835;1:713f2d;1:522f1f;1:2a160d;4:-;1:4e2719;1:522f1f;1:7c4835;1:8e523c;1:673728;1:522f1f;1:985c43;1:8e523c;1:713f2d;1:673728;1:3f2116;1:2a160d;4:-;1:4e2719;1:713f2d;1:522f1f;1:985c43;2:8e523c;1:522f1f;1:985c43;1:673728;1:3f2116;1:2a160d;4:-;1:4e2719;1:713f2d;1:7c4835;1:985c43;1:522f1f;1:985c43;1:8e523c;1:713f2d;1:522f1f;2:3f2116;1:2a160d;4:-;1:4e2719;1:985c43;1:713f2d;1:7c4835;1:985c43;1:522f1f;1:713f2d;1:7c4835;1:673728;1:3f2116;1:2a160d;6:-;1:4e2719;1:985c43;2:8e523c;1:7c4835;1:673728;2:3f2116;1:2a160d;7:-;2:2a160d;1:522f1f;3:3f2116;2:2a160d;10:-;4:2a160d;23:-"},
	bread = {w=16,h=16,d="25:-;4:654b17;10:-;2:654b17;1:8c661e;2:a27924;1:8c661e;1:654b17;8:-;1:654b17;1:8c661e;4:bc8927;1:a27924;1:8c661e;1:3f2e0e;6:-;1:654b17;1:bc8927;1:a27924;2:8c661e;3:bc8927;1:8c661e;1:3f2e0e;5:-;1:654b17;4:bc8927;1:a27924;1:8c661e;1:bc8927;1:a27924;1:8c661e;1:3f2e0e;4:-;1:654b17;6:bc8927;1:a27924;1:bc8927;1:8c661e;1:654b17;1:3f2e0e;3:-;1:654b17;1:8c661e;1:a27924;2:8c661e;4:bc8927;2:8c661e;1:4c3811;1:3f2e0e;3:-;1:654b17;3:bc8927;1:a27924;1:8c661e;2:bc8927;2:8c661e;1:654b17;1:3f2e0e;3:-;1:654b17;1:8c661e;4:bc8927;1:a27924;1:bc8927;2:8c661e;1:654b17;1:3f2e0e;4:-;1:654b17;1:a27924;5:bc8927;2:8c661e;1:654b17;1:3f2e0e;5:-;1:654b17;2:a27924;3:bc8927;2:8c661e;1:654b17;1:3f2e0e;6:-;1:574114;1:8c661e;2:a27924;3:8c661e;1:654b17;1:3f2e0e;7:-;1:574114;1:654b17;4:8c661e;1:654b17;1:3f2e0e;9:-;1:4c3811;3:654b17;1:4c3811;1:3f2e0e;11:-;1:4c3811;3:3f2e0e;9:-"},
	apple = {w=16,h=16,d="25:-;1:752802;14:-;1:7e370e;1:542409;14:-;1:752802;12:-;2:9c1017;1:752802;1:542409;2:752802;8:-;1:9c1017;1:b4131e;1:ff969d;1:b4131e;1:542409;1:9c1017;1:dd1725;1:b4131e;2:752802;5:-;1:9c1017;1:b4131e;1:ff1c2b;1:ff5e69;3:ff969d;1:ff5e69;1:ff1c2b;1:b4131e;2:752802;4:-;1:9c1017;1:b4131e;6:ff1c2b;1:dd1725;1:ff1c2b;1:b4131e;1:752802;4:-;1:9c1017;1:b4131e;1:dd1725;1:ff1c2b;1:dd1725;1:ff1c2b;3:dd1725;1:ff1c2b;1:dd1725;1:54090e;4:-;1:752802;2:b4131e;2:dd1725;2:b4131e;1:dd1725;1:b4131e;1:ff1c2b;1:dd1725;1:54090e;4:-;1:752802;5:b4131e;1:dd1725;2:b4131e;1:ff1c2b;1:b4131e;1:54090e;5:-;1:752802;2:b4131e;1:dd1725;3:b4131e;1:dd1725;1:b4131e;1:54090e;6:-;1:752802;1:9c1017;3:b4131e;2:dd1725;1:b4131e;1:9c1017;1:54090e;7:-;1:54090e;1:9c1017;1:b4131e;2:9c1017;1:b4131e;1:9c1017;1:54090e;9:-;1:54090e;3:752802;2:54090e;21:-"},
	stick = {w=16,h=16,d="45:-;1:493615;1:281e0b;13:-;1:493615;1:896727;1:281e0b;12:-;1:493615;1:896727;1:281e0b;12:-;1:493615;1:684e1e;1:281e0b;12:-;1:493615;1:896727;1:281e0b;12:-;1:493615;1:684e1e;1:281e0b;12:-;1:493615;1:896727;1:281e0b;12:-;1:493615;1:684e1e;1:281e0b;12:-;1:493615;1:896727;1:281e0b;12:-;1:493615;1:684e1e;1:281e0b;12:-;1:493615;1:896727;1:281e0b;12:-;1:493615;1:896727;1:281e0b;13:-;2:281e0b;28:-"},
	coal = {w=16,h=16,d="37:-;4:1c1c1e;11:-;1:1c1c1e;1:2e2e2e;2:323232;1:2e2e2e;1:1c1c1e;9:-;1:1c1c1e;1:252525;1:363636;1:393e46;1:323232;2:252525;1:1c1c1e;8:-;1:1c1c1e;1:363636;1:252525;1:323232;1:2e2e2e;1:323232;1:2e2e2e;1:252525;1:1c1c1e;7:-;1:1c1c1e;2:261e24;1:252525;1:363636;1:393e46;1:363636;1:323232;1:252525;1:1c1c1e;5:-;1:1c1c1e;1:252525;1:2e2e2e;1:252525;1:261e24;1:252525;2:363636;1:2e2e2e;1:252525;1:323232;1:101015;4:-;1:1c1c1e;1:2e2e2e;1:393e46;1:323232;1:252525;3:2e2e2e;1:252525;1:261e24;1:252525;1:101015;4:-;1:1c1c1e;1:252525;3:2e2e2e;3:252525;1:2e2e2e;3:261e24;1:101015;3:-;1:1c1c1e;3:252525;1:261e24;1:252525;1:2e2e2e;1:261e24;1:252525;1:1f1721;1:252525;1:1f1721;1:101015;3:-;1:1c1c1e;1:1f1721;1:261e24;1:252525;5:261e24;1:1f1721;1:261e24;1:1f1721;1:101015;4:-;1:101015;2:1f1721;1:261e24;1:252525;1:1f1721;2:261e24;2:1f1721;1:101015;6:-;1:101015;4:1f1721;4:101015;8:-;4:101015;23:-"},
	iron_ingot = {w=16,h=16,d="42:-;2:5e5e5e;11:-;3:5e5e5e;2:a8a8a8;1:727272;7:-;3:5e5e5e;1:a8a8a8;4:d8d8d8;1:a8a8a8;1:727272;3:-;3:5e5e5e;1:a8a8a8;8:d8d8d8;1:a8a8a8;1:727272;1:-;1:5e5e5e;1:ffffff;10:d8d8d8;2:ffffff;1:d8d8d8;1:727272;1:5e5e5e;1:a8a8a8;1:ffffff;6:d8d8d8;3:ffffff;1:d8d8d8;1:727272;1:a8a8a8;1:353535;1:5e5e5e;2:a8a8a8;1:ffffff;2:d8d8d8;3:ffffff;1:d8d8d8;1:828282;2:727272;1:828282;1:a8a8a8;1:353535;1:5e5e5e;3:a8a8a8;2:ffffff;1:d8d8d8;1:828282;4:727272;3:a8a8a8;1:353535;1:5e5e5e;1:828282;2:a8a8a8;1:d8d8d8;1:828282;4:727272;2:a8a8a8;1:828282;2:353535;2:-;1:5e5e5e;1:828282;1:a8a8a8;1:d8d8d8;1:828282;2:727272;2:828282;3:353535;5:-;1:5e5e5e;1:828282;1:a8a8a8;1:828282;1:585858;3:353535;9:-;2:5e5e5e;2:353535;41:-"},
	diamond = {w=16,h=16,d="38:-;4:11727a;11:-;1:11727a;3:ffffff;1:d5fff6;1:11727a;9:-;1:11727a;1:ffffff;2:4aedd9;1:a1fbe8;1:d5fff6;1:20c5b5;1:145e53;7:-;1:11727a;1:ffffff;1:4aedd9;2:a1fbe8;1:d5fff6;1:a1fbe8;1:4aedd9;1:20c5b5;1:145e53;6:-;1:11727a;1:ffffff;1:4aedd9;1:ffffff;1:d5fff6;1:ffffff;1:d5fff6;2:4aedd9;1:145e53;5:-;1:11727a;1:ffffff;1:4aedd9;1:ffffff;2:4aedd9;2:a1fbe8;1:1aaaa7;1:20c5b5;1:1aaaa7;1:145e53;4:-;1:11727a;1:ffffff;1:4aedd9;1:d5fff6;1:4aedd9;3:a1fbe8;1:1c919a;1:20c5b5;1:1aaaa7;1:145e53;4:-;1:11727a;2:ffffff;1:20c5b5;3:a1fbe8;1:4aedd9;1:1c919a;2:1aaaa7;1:145e53;4:-;1:11727a;1:d5fff6;2:4aedd9;4:1aaaa7;2:20c5b5;1:1c919a;1:145e53;5:-;1:145e53;1:4aedd9;1:1aaaa7;4:20c5b5;1:1aaaa7;1:20c5b5;1:145e53;6:-;1:145e53;1:2ce0d8;1:1aaaa7;4:20c5b5;1:1aaaa7;1:a1fbe8;1:145e53;7:-;1:145e53;1:1c919a;2:4aedd9;2:a1fbe8;1:20c5b5;1:145e53;9:-;6:145e53;21:-"},
	bucket = {w=16,h=16,d="21:-;6:353535;8:-;2:353535;1:727272;3:969696;2:a8a8a8;2:353535;5:-;1:353535;2:727272;3:5f5f5f;3:727272;1:969696;1:727272;1:353535;4:-;1:353535;1:5f5f5f;3:545454;1:5f5f5f;4:727272;1:5f5f5f;1:353535;4:-;3:353535;2:545454;2:5f5f5f;2:727272;3:353535;4:-;1:353535;1:d8d8d8;1:a8a8a8;6:353535;1:727272;1:969696;1:353535;4:-;1:353535;4:d8d8d8;2:a8a8a8;1:969696;2:727272;1:969696;1:353535;4:-;1:353535;2:d8d8d8;1:ffffff;1:d8d8d8;2:a8a8a8;1:969696;2:727272;1:a8a8a8;1:353535;4:-;1:353535;1:a8a8a8;1:d8d8d8;1:ffffff;1:d8d8d8;2:a8a8a8;1:969696;2:727272;1:a8a8a8;1:353535;4:-;1:353535;1:727272;1:d8d8d8;1:ffffff;1:d8d8d8;2:a8a8a8;1:969696;2:727272;1:969696;1:353535;5:-;1:353535;3:d8d8d8;2:a8a8a8;1:969696;1:727272;1:969696;1:353535;6:-;1:353535;1:a8a8a8;2:d8d8d8;1:a8a8a8;2:969696;1:727272;1:969696;1:353535;7:-;1:353535;1:a8a8a8;1:d8d8d8;1:a8a8a8;1:969696;1:727272;1:969696;1:353535;9:-;6:353535;21:-"},
	torch = {w=16,h=16,d="103:-;1:ffd800;1:ff8f00;14:-;1:ffff97;1:ffffff;14:-;1:9f7f50;1:6d5736;14:-;1:957546;1:55452e;14:-;1:9f7f50;1:423522;14:-;1:9f7f50;1:55452e;14:-;1:957546;1:55452e;14:-;1:6d5736;1:3d301d;14:-;1:9f7f50;1:3b2e1b;14:-;1:6d5736;1:372a17;7:-"},
	ladder = {w=16,h=16,d="2:-;1:967441;1:513d24;8:-;1:967441;1:513d24;3:-;1:7e6237;1:b58d50;1:7e6237;1:967441;1:b58d50;1:967441;4:b58d50;1:967441;1:b58d50;1:7e6237;1:b58d50;2:-;1:67502c;1:7e6237;1:67502c;1:513d24;6:67502c;1:513d24;1:7e6237;2:67502c;3:-;1:513d24;1:3a2f1e;8:-;1:513d24;1:3a2f1e;4:-;1:967441;1:513d24;8:-;1:967441;1:513d24;3:-;2:b58d50;1:7e6237;1:967441;3:b58d50;1:967441;1:b58d50;2:967441;1:b58d50;1:7e6237;1:b58d50;2:-;1:67502c;1:7e6237;1:67502c;1:513d24;6:67502c;1:513d24;1:7e6237;2:67502c;3:-;1:513d24;1:3a2f1e;8:-;1:513d24;1:3a2f1e;4:-;1:967441;1:513d24;8:-;1:967441;1:513d24;3:-;2:b58d50;1:7e6237;1:967441;6:b58d50;1:967441;1:b58d50;2:7e6237;2:-;1:67502c;1:7e6237;1:67502c;1:513d24;6:67502c;1:513d24;1:7e6237;2:67502c;3:-;1:513d24;1:3a2f1e;8:-;1:513d24;1:3a2f1e;4:-;1:967441;1:513d24;8:-;1:967441;1:513d24;3:-;2:b58d50;1:7e6237;1:967441;1:b58d50;1:967441;4:b58d50;1:967441;1:b58d50;1:7e6237;1:b58d50;2:-;1:67502c;1:7e6237;1:67502c;1:513d24;6:67502c;1:513d24;1:7e6237;2:67502c;3:-;1:513d24;1:3a2f1e;8:-;1:513d24;1:3a2f1e;2:-"},
}
local BTEX = {
	stone = {w=16,h=16,d="4:8f8f8f;1:7f7f7f;2:747474;1:7f7f7f;1:747474;1:686868;2:747474;6:7f7f7f;1:747474;1:7f7f7f;1:747474;6:7f7f7f;2:686868;1:747474;1:7f7f7f;1:747474;1:7f7f7f;1:747474;2:686868;3:747474;1:686868;3:747474;7:7f7f7f;2:8f8f8f;1:7f7f7f;1:8f8f8f;2:7f7f7f;2:8f8f8f;3:7f7f7f;4:747474;2:7f7f7f;3:747474;1:7f7f7f;1:747474;1:7f7f7f;4:8f8f8f;1:747474;3:7f7f7f;1:8f8f8f;7:7f7f7f;2:747474;1:686868;1:747474;1:686868;1:747474;1:8f8f8f;1:747474;2:7f7f7f;3:8f8f8f;1:747474;2:8f8f8f;3:747474;4:7f7f7f;2:747474;2:686868;1:747474;1:686868;2:747474;2:7f7f7f;3:747474;3:7f7f7f;3:8f8f8f;1:7f7f7f;1:8f8f8f;2:7f7f7f;3:8f8f8f;5:7f7f7f;1:747474;2:7f7f7f;1:8f8f8f;3:7f7f7f;3:8f8f8f;2:7f7f7f;4:8f8f8f;1:7f7f7f;1:686868;1:7f7f7f;1:747474;1:7f7f7f;2:747474;2:686868;1:747474;1:7f7f7f;1:747474;2:7f7f7f;3:747474;5:7f7f7f;2:8f8f8f;5:7f7f7f;2:8f8f8f;1:7f7f7f;1:8f8f8f;1:7f7f7f;3:747474;1:7f7f7f;1:8f8f8f;1:7f7f7f;2:747474;2:7f7f7f;2:686868;1:747474;1:686868;1:747474;2:8f8f8f;1:7f7f7f;2:747474;2:7f7f7f;3:747474;2:7f7f7f;3:747474;1:8f8f8f;1:7f7f7f;2:747474;9:7f7f7f;4:8f8f8f;6:7f7f7f;2:747474;1:7f7f7f;2:8f8f8f;2:7f7f7f;1:747474;2:7f7f7f"},
	dirt = {w=16,h=16,d="1:b9855c;2:966c4a;2:79553a;1:b9855c;2:966c4a;2:79553a;1:593d29;2:79553a;1:b9855c;1:79553a;1:b9855c;1:79553a;1:966c4a;1:593d29;2:79553a;1:966c4a;1:878787;1:593d29;1:79553a;1:b9855c;1:966c4a;1:79553a;1:b9855c;1:966c4a;2:593d29;1:b9855c;2:79553a;1:593d29;1:b9855c;3:79553a;1:b9855c;3:79553a;2:593d29;1:b9855c;1:79553a;1:966c4a;1:6c6c6c;1:b9855c;1:79553a;1:966c4a;1:593d29;1:79553a;1:b9855c;2:966c4a;1:79553a;1:966c4a;1:79553a;1:b9855c;1:966c4a;1:79553a;1:966c4a;1:79553a;1:966c4a;1:b9855c;1:593d29;1:966c4a;2:79553a;1:966c4a;1:593d29;1:79553a;1:6c6c6c;1:79553a;1:966c4a;1:593d29;2:79553a;1:593d29;2:966c4a;1:79553a;1:966c4a;3:593d29;2:79553a;1:593d29;3:79553a;2:b9855c;3:79553a;1:878787;2:79553a;2:b9855c;1:79553a;2:b9855c;1:79553a;1:966c4a;1:79553a;1:966c4a;2:79553a;2:b9855c;2:966c4a;2:79553a;1:966c4a;1:593d29;2:966c4a;2:79553a;3:966c4a;2:79553a;1:966c4a;1:79553a;1:966c4a;1:79553a;1:593d29;1:79553a;2:966c4a;3:79553a;1:593d29;2:79553a;1:966c4a;1:593d29;2:79553a;2:593d29;5:79553a;2:b9855c;1:79553a;1:966c4a;1:79553a;1:966c4a;1:79553a;2:b9855c;1:79553a;1:b9855c;1:966c4a;1:593d29;2:b9855c;1:593d29;2:966c4a;1:878787;1:79553a;1:966c4a;2:79553a;2:966c4a;1:b9855c;1:79553a;1:966c4a;1:6c6c6c;2:966c4a;1:79553a;1:593d29;1:966c4a;1:79553a;1:593d29;1:79553a;1:593d29;1:966c4a;1:79553a;2:966c4a;1:b9855c;7:79553a;2:b9855c;1:79553a;1:966c4a;2:79553a;1:745844;1:79553a;2:966c4a;1:79553a;1:593d29;1:b9855c;1:593d29;1:79553a;1:b9855c;3:966c4a;1:79553a;1:593d29;1:b9855c;1:79553a;1:593d29;1:79553a;1:593d29;2:b9855c;1:79553a;1:966c4a;2:79553a;3:966c4a;1:79553a;1:b9855c;2:966c4a;1:79553a;1:878787;1:79553a;2:966c4a;2:79553a;2:966c4a;1:79553a;1:593d29"},
	cobble = {w=16,h=16,d="1:6e6d6d;1:616161;2:a6a6a6;1:525252;2:616161;1:a6a6a6;1:b5b5b5;1:a6a6a6;1:888788;1:616161;1:888788;1:b5b5b5;1:a6a6a6;1:888788;1:616161;1:a6a6a6;1:b5b5b5;2:888788;1:525252;2:b5b5b5;1:a6a6a6;2:888788;1:525252;1:616161;1:888788;1:6e6d6d;1:888788;1:616161;1:a6a6a6;1:888788;1:a6a6a6;1:6e6d6d;1:616161;1:a6a6a6;2:888788;1:a6a6a6;1:6e6d6d;1:616161;1:525252;1:616161;1:888788;1:6e6d6d;2:616161;1:888788;1:6e6d6d;2:616161;1:888788;1:6e6d6d;1:888788;1:6e6d6d;1:616161;1:888788;1:a6a6a6;1:888788;1:616161;2:525252;1:6e6d6d;1:616161;1:888788;1:b5b5b5;1:a6a6a6;1:616161;1:888788;2:616161;1:b5b5b5;3:a6a6a6;1:888788;1:616161;1:b5b5b5;1:6e6d6d;1:a6a6a6;1:b5b5b5;2:888788;1:6e6d6d;1:616161;1:525252;2:888788;1:b5b5b5;1:a6a6a6;1:888788;1:6e6d6d;1:888788;1:a6a6a6;1:888788;1:616161;1:888788;1:a6a6a6;2:888788;1:6e6d6d;2:616161;1:6e6d6d;1:a6a6a6;1:888788;1:6e6d6d;1:616161;1:b5b5b5;2:888788;2:6e6d6d;2:888788;1:6e6d6d;1:616161;1:888788;1:b5b5b5;1:a6a6a6;1:616161;1:6e6d6d;1:888788;1:616161;1:888788;1:6e6d6d;1:616161;1:b5b5b5;1:a6a6a6;2:6e6d6d;1:616161;1:888788;1:b5b5b5;3:888788;2:616161;1:525252;1:6e6d6d;1:616161;1:b5b5b5;1:a6a6a6;1:888788;1:6e6d6d;1:888788;2:6e6d6d;2:888788;1:616161;1:6e6d6d;1:616161;1:888788;1:a6a6a6;1:616161;1:888788;1:6e6d6d;1:888788;1:6e6d6d;1:888788;2:616161;1:525252;1:616161;2:6e6d6d;1:616161;1:525252;2:a6a6a6;1:b5b5b5;1:888788;2:6e6d6d;2:616161;1:6e6d6d;1:888788;1:b5b5b5;1:a6a6a6;2:616161;1:525252;1:888788;2:b5b5b5;1:888788;1:6e6d6d;1:888788;1:b5b5b5;1:a6a6a6;1:6e6d6d;1:616161;1:b5b5b5;1:a6a6a6;1:888788;1:a6a6a6;1:6e6d6d;1:616161;2:888788;1:6e6d6d;1:888788;1:616161;1:b5b5b5;1:a6a6a6;2:888788;1:616161;1:a6a6a6;1:888788;1:6e6d6d;2:888788;1:6e6d6d;2:616161;1:888788;1:6e6d6d;2:a6a6a6;1:888788;1:6e6d6d;1:888788;1:6e6d6d;1:616161;1:6e6d6d;2:888788;1:6e6d6d;1:616161;1:a6a6a6;1:888788;3:616161;1:888788;2:616161;1:6e6d6d;1:888788;1:6e6d6d;1:616161;1:6e6d6d;2:616161;1:888788;1:b5b5b5;1:a6a6a6;1:888788;1:6e6d6d"},
	planks = {w=16,h=16,d="1:b8945f;1:af8f55;1:b8945f;5:c29d62;1:b8945f;5:c29d62;1:b8945f;1:967441;2:b8945f;2:af8f55;1:967441;1:9f844d;1:af8f55;3:b8945f;2:af8f55;2:b8945f;2:9f844d;1:af8f55;3:b8945f;1:af8f55;1:b8945f;1:af8f55;4:9f844d;2:af8f55;2:b8945f;2:967441;2:7e6237;2:967441;1:7e6237;2:67502c;2:7e6237;1:67502c;1:7e6237;2:67502c;1:7e6237;1:67502c;1:b8945f;1:c29d62;1:9f844d;4:c29d62;1:9f844d;3:c29d62;1:b8945f;2:af8f55;1:9f844d;1:b8945f;1:af8f55;2:b8945f;1:af8f55;1:9f844d;1:af8f55;1:9f844d;1:967441;1:9f844d;2:af8f55;4:b8945f;1:af8f55;2:9f844d;1:af8f55;1:b8945f;3:af8f55;1:967441;3:b8945f;2:af8f55;3:9f844d;2:67502c;2:7e6237;1:967441;1:7e6237;4:67502c;3:7e6237;1:967441;1:7e6237;1:67502c;1:b8945f;2:c29d62;1:b8945f;2:af8f55;8:c29d62;1:b8945f;1:9f844d;1:b8945f;1:af8f55;4:b8945f;1:af8f55;3:9f844d;1:af8f55;1:9f844d;1:af8f55;2:9f844d;1:967441;1:c29d62;1:b8945f;2:af8f55;4:9f844d;4:af8f55;2:9f844d;1:b8945f;1:9f844d;2:67502c;1:7e6237;2:967441;1:7e6237;3:67502c;1:7e6237;1:967441;2:7e6237;3:67502c;1:c29d62;1:9f844d;1:b8945f;2:c29d62;2:b8945f;1:9f844d;3:c29d62;1:9f844d;1:c29d62;1:b8945f;2:c29d62;2:af8f55;2:b8945f;2:9f844d;1:af8f55;2:9f844d;2:b8945f;1:af8f55;1:b8945f;4:af8f55;2:9f844d;1:af8f55;1:b8945f;1:af8f55;1:9f844d;1:967441;2:b8945f;1:af8f55;5:9f844d;1:67502c;2:7e6237;2:67502c;1:7e6237;3:967441;1:7e6237;1:67502c;1:7e6237;4:67502c"},
	log = {w=16,h=16,d="1:745a36;1:4c3d26;1:917142;2:745a36;1:382b18;1:917142;2:745a36;1:382b18;1:745a36;1:917142;1:4c3d26;1:917142;1:745a36;1:5f4a2b;1:745a36;1:4c3d26;1:987849;1:5f4a2b;1:745a36;1:382b18;1:987849;1:5f4a2b;1:745a36;1:382b18;1:745a36;1:917142;1:4c3d26;2:745a36;1:5f4a2b;1:745a36;1:382b18;2:5f4a2b;1:745a36;1:382b18;1:987849;1:5f4a2b;1:745a36;1:4c3d26;1:745a36;2:4c3d26;2:745a36;1:5f4a2b;1:917142;1:382b18;1:745a36;1:5f4a2b;1:745a36;1:4c3d26;1:745a36;1:5f4a2b;1:745a36;1:5f4a2b;1:745a36;1:382b18;1:4c3d26;1:745a36;1:917142;1:5f4a2b;1:917142;1:4c3d26;1:745a36;1:5f4a2b;1:745a36;1:382b18;1:745a36;1:5f4a2b;1:987849;1:5f4a2b;1:745a36;1:5f4a2b;1:745a36;1:4c3d26;1:917142;1:745a36;1:917142;1:745a36;1:4c3d26;1:745a36;1:917142;1:4c3d26;1:745a36;1:4c3d26;1:987849;1:5f4a2b;1:917142;1:4c3d26;1:745a36;1:4c3d26;1:917142;1:745a36;1:5f4a2b;1:745a36;1:4c3d26;1:745a36;1:917142;2:5f4a2b;1:745a36;1:917142;1:745a36;1:917142;2:745a36;1:4c3d26;1:917142;1:745a36;1:5f4a2b;1:745a36;1:382b18;1:745a36;1:917142;1:745a36;1:5f4a2b;1:917142;2:745a36;1:917142;1:5f4a2b;1:745a36;1:5f4a2b;1:917142;2:745a36;1:4c3d26;1:382b18;1:987849;2:745a36;1:5f4a2b;1:917142;1:745a36;1:5f4a2b;1:917142;1:5f4a2b;1:917142;1:5f4a2b;1:917142;3:745a36;1:4c3d26;1:987849;2:745a36;1:5f4a2b;2:745a36;1:5f4a2b;1:917142;1:4c3d26;1:917142;1:745a36;1:382b18;4:745a36;1:917142;1:745a36;1:5f4a2b;1:745a36;1:382b18;1:745a36;1:5f4a2b;1:745a36;1:4c3d26;1:917142;1:745a36;1:382b18;2:745a36;1:4c3d26;1:745a36;1:917142;1:745a36;1:5f4a2b;1:745a36;1:382b18;1:987849;2:745a36;1:382b18;1:987849;1:745a36;1:4c3d26;1:745a36;1:987849;1:4c3d26;2:745a36;1:917142;1:5f4a2b;1:917142;1:382b18;1:987849;1:5f4a2b;1:745a36;1:382b18;2:745a36;1:5f4a2b;1:745a36;1:987849;1:745a36;1:4c3d26;1:745a36;1:917142;2:745a36;1:4c3d26;1:917142;1:5f4a2b;1:745a36;1:4c3d26;4:745a36;1:917142;1:745a36;1:4c3d26;1:917142;2:745a36;1:917142;1:382b18;1:745a36;1:4c3d26;1:745a36;2:4c3d26;1:917142;2:745a36;1:917142;1:745a36;1:4c3d26;1:917142;1:4c3d26;1:745a36;1:917142;1:4c3d26;1:745a36;1:4c3d26;2:745a36;1:4c3d26;1:917142;1:745a36;1:5f4a2b"},
	log_top = {w=16,h=16,d="1:5f4a2b;1:4c3d26;1:5f4a2b;1:745a36;1:5f4a2b;1:4c3d26;2:5f4a2b;1:745a36;1:4c3d26;2:5f4a2b;1:4c3d26;3:5f4a2b;1:4c3d26;4:b8945f;1:af8f55;1:b8945f;1:af8f55;1:c29d62;2:af8f55;4:b8945f;1:4c3d26;1:5f4a2b;1:b8945f;2:7e6237;2:967441;1:9f844d;1:967441;4:9f844d;2:967441;1:c29d62;2:5f4a2b;1:b8945f;1:7e6237;2:c29d62;4:b8945f;1:af8f55;3:b8945f;1:967441;1:b8945f;2:5f4a2b;1:af8f55;1:967441;1:b8945f;8:af8f55;1:b8945f;1:9f844d;1:af8f55;1:5f4a2b;1:4c3d26;1:b8945f;1:9f844d;1:b8945f;1:af8f55;2:967441;2:9f844d;2:967441;1:af8f55;1:b8945f;1:967441;1:af8f55;1:4c3d26;1:5f4a2b;1:af8f55;1:967441;2:af8f55;1:7e6237;4:af8f55;1:967441;2:af8f55;1:967441;1:b8945f;2:5f4a2b;1:af8f55;1:9f844d;1:b8945f;1:af8f55;1:967441;1:af8f55;2:9f844d;1:af8f55;1:9f844d;1:af8f55;1:b8945f;1:9f844d;1:af8f55;2:5f4a2b;1:af8f55;1:9f844d;1:b8945f;1:af8f55;1:967441;1:af8f55;1:9f844d;1:967441;1:af8f55;1:967441;1:af8f55;1:b8945f;1:967441;1:af8f55;1:5f4a2b;1:4c3d26;1:af8f55;1:9f844d;1:b8945f;1:af8f55;1:967441;4:af8f55;1:9f844d;2:af8f55;1:967441;1:af8f55;1:4c3d26;1:5f4a2b;1:af8f55;1:967441;1:b8945f;1:af8f55;2:967441;1:7e6237;1:967441;2:9f844d;1:af8f55;1:b8945f;1:9f844d;1:af8f55;2:5f4a2b;1:af8f55;1:9f844d;1:b8945f;8:af8f55;1:b8945f;1:967441;1:af8f55;1:5f4a2b;1:4c3d26;1:b8945f;1:9f844d;2:b8945f;1:af8f55;5:b8945f;1:c29d62;1:b8945f;1:967441;1:af8f55;1:4c3d26;1:5f4a2b;1:b8945f;1:9f844d;1:967441;1:9f844d;9:967441;1:b8945f;2:5f4a2b;3:b8945f;2:af8f55;1:b8945f;2:af8f55;1:c29d62;2:af8f55;3:b8945f;2:5f4a2b;1:4c3d26;3:5f4a2b;1:4c3d26;2:5f4a2b;1:745a36;1:4c3d26;2:5f4a2b;1:4c3d26;1:745a36;2:5f4a2b"},
	grass_top = {w=16,h=16,d="1:546d33;1:6e9044;1:536c33;2:4c632e;1:516931;1:485e2c;1:4f6730;1:597537;1:556f34;1:4e6630;1:4c642f;1:4d652f;1:5e7b3a;1:3f5327;1:506831;1:546e34;1:4f6730;1:5a7637;1:556f34;1:577135;1:485e2c;1:577135;1:49602d;1:485e2c;1:607d3a;1:5e7b39;1:536c33;1:6e9044;1:4f6730;1:4c642f;1:4f6730;1:5c7838;1:506831;1:475c2b;1:4b612e;1:4d652f;1:4d642f;2:516a32;1:546d33;1:5a7537;1:5f7c3a;1:62803c;1:4c642f;1:435829;1:485e2c;1:67863f;1:435729;1:4b622e;1:4e6630;1:556f34;1:526b32;1:577135;1:475c2b;1:536c32;1:485e2c;1:4a612d;1:506831;1:556f34;1:516931;1:4f6730;1:5e7b3a;1:475c2b;1:5c7838;1:4a612d;1:62803c;1:4a612d;1:617f3c;1:62803c;1:4d642f;1:617f3c;1:698940;1:425628;1:485e2c;1:5e7b3a;1:617e3b;1:475d2b;1:4d642f;1:506831;1:577135;1:567035;1:445829;1:5e7b39;1:495f2d;1:556f34;1:546e34;1:587236;1:4c642f;1:546e34;1:4d642f;1:4a612d;1:445829;1:4d642f;1:506931;1:546d33;1:475d2b;1:587336;1:5d7a39;1:516a32;1:536c32;1:4a612d;1:4e6630;1:485e2c;1:4b612e;1:4c642f;1:66863f;1:617f3c;1:526b32;1:5e7b3a;1:556f34;2:516931;1:4c642f;1:597436;1:4f6730;1:516a32;1:465b2b;1:5d7939;1:4b612e;1:556f34;1:62803c;1:4c642f;1:495f2d;1:516931;1:5a7637;1:485e2c;1:607d3a;1:5e7b3a;1:587236;1:67863f;1:607e3b;1:617f3c;1:495f2d;1:62803c;1:587336;1:65843e;1:607e3b;1:49602d;1:536c32;1:4b622e;1:536c33;1:597537;1:475d2b;1:556f34;1:49602d;1:68873f;1:506831;1:4f6730;1:567035;1:607e3b;1:485e2c;1:4c642f;1:526b32;1:536c32;1:607d3a;1:506931;1:65843e;1:516931;1:495f2d;1:587236;1:597537;1:556f34;1:5d7a39;1:49602d;1:67863f;1:506931;1:536c33;1:6d8e43;1:44592a;1:5e7b3a;1:4a612d;1:516931;1:4d642f;1:556f34;1:516931;1:4b612e;1:62803c;1:4c632e;1:5c7838;1:556f34;1:4b612e;1:536c32;1:4d652f;1:556f34;1:536c32;1:4f6730;1:455b2a;1:65843e;1:485e2c;1:475c2b;1:4e6630;1:698940;1:556f34;1:495f2d;1:4e6630;1:577135;1:526b32;1:4b622e;1:455a2a;1:4e6630;1:526b32;1:4e6630;1:475c2b;1:5a7537;1:5d7a39;1:44592a;1:556f34;1:495f2d;1:5f7c3a;1:435729;1:536c32;1:475c2b;1:577135;1:495f2d;1:6e9044;1:5b7738;1:536c33;1:5f7c3a;1:587236;1:5a7637;1:4d642f;1:5f7c3a;1:62803c;1:5c7838;1:5b7738;1:6d8e43;1:455b2a;1:65843e;1:617e3b;1:546d33;1:536c33;1:475d2b;2:546e34;1:4c642f;1:607d3a;1:597436;1:4f6730;1:44592a;1:4b622e;1:556f34;1:4d642f;1:4d652f;1:5d7939;1:567035;1:546d33;1:536c33;1:506931;1:6c8d42;1:465b2b;1:607d3a;1:4b612e;1:516a32;1:4d642f;1:597537"},
	grass_side = {w=16,h=16,d="1:607d3a;1:516a32;1:556f34;1:4f6730;1:607d3a;1:516a32;1:607d3a;2:556f34;1:5a7537;1:607d3a;1:5a7537;1:65833e;1:495f2d;1:5a7537;1:556f34;1:607d3a;1:4f6730;1:607d3a;1:516a32;1:65833e;1:593d29;1:607d3a;1:49602d;1:65833e;1:556f34;1:607d3a;1:536c33;1:607d3a;1:4f6730;1:607d3a;1:4f6730;1:556f34;1:593d29;1:65833e;1:4b612e;1:607d3a;1:593d29;1:516a32;1:593d29;1:607d3a;1:5a7537;1:556f34;1:62803c;1:593d29;1:435829;1:556f34;2:593d29;1:6c6c6c;2:593d29;1:526b32;3:593d29;1:485e2c;1:593d29;1:506831;1:593d29;1:79553a;2:593d29;1:79553a;1:966c4a;1:79553a;1:966c4a;1:b9855c;1:593d29;1:966c4a;2:79553a;3:593d29;1:6c6c6c;1:79553a;1:966c4a;1:593d29;2:79553a;1:593d29;2:966c4a;1:79553a;1:966c4a;3:593d29;2:79553a;1:593d29;3:79553a;2:b9855c;3:79553a;1:878787;2:79553a;2:b9855c;1:79553a;2:b9855c;1:79553a;1:966c4a;1:79553a;1:966c4a;2:79553a;2:b9855c;2:966c4a;2:79553a;1:966c4a;1:593d29;2:966c4a;2:79553a;3:966c4a;2:79553a;1:966c4a;1:79553a;1:966c4a;1:79553a;1:593d29;1:79553a;2:966c4a;3:79553a;1:593d29;2:79553a;1:966c4a;1:593d29;2:79553a;2:593d29;5:79553a;2:b9855c;1:79553a;1:966c4a;1:79553a;1:966c4a;1:79553a;2:b9855c;1:79553a;1:b9855c;1:966c4a;1:593d29;2:b9855c;1:593d29;2:966c4a;1:878787;1:79553a;1:966c4a;2:79553a;2:966c4a;1:b9855c;1:79553a;1:966c4a;1:6c6c6c;2:966c4a;1:79553a;1:593d29;1:966c4a;1:79553a;1:593d29;1:79553a;1:593d29;1:966c4a;1:79553a;2:966c4a;1:b9855c;7:79553a;2:b9855c;1:79553a;1:966c4a;2:79553a;1:745844;1:79553a;2:966c4a;1:79553a;1:593d29;1:b9855c;1:593d29;1:79553a;1:b9855c;3:966c4a;1:79553a;1:593d29;1:b9855c;1:79553a;1:593d29;1:79553a;1:593d29;2:b9855c;1:79553a;1:966c4a;2:79553a;3:966c4a;1:79553a;1:b9855c;2:966c4a;1:79553a;1:878787;1:79553a;2:966c4a;2:79553a;2:966c4a;1:79553a;1:593d29"},
	ct_top = {w=16,h=16,d="1:19140c;2:0e0b06;1:19140c;1:41230e;6:733920;1:41230e;1:1a150d;1:0e0b06;1:1a150d;1:19140c;1:0e0b06;2:bc9862;1:41230e;1:9e5932;6:ae693c;1:9e5932;1:41230e;2:bc9862;2:0e0b06;1:bc9862;1:41230e;10:ae693c;1:41230e;1:bc9862;1:0e0b06;1:19140c;1:41230e;1:ae693c;1:553824;1:4b2b18;3:553824;4:4b2b18;1:553824;1:ae693c;1:41230e;1:19140c;1:41230e;1:9e5932;1:ae693c;1:553824;1:9e5932;1:ae693c;1:553824;2:ae693c;1:4b2b18;2:ae693c;1:553824;1:ae693c;1:9e5932;1:41230e;1:733920;2:ae693c;1:553824;2:ae693c;1:4b2b18;1:9e5932;1:ae693c;1:553824;1:9e5932;1:ae693c;1:553824;2:ae693c;2:733920;2:ae693c;2:553824;1:4b2b18;2:553824;1:4b2b18;2:553824;1:4b2b18;1:553824;2:ae693c;2:733920;2:ae693c;1:553824;2:ae693c;1:553824;2:ae693c;1:553824;2:ae693c;1:553824;2:ae693c;2:733920;2:ae693c;1:553824;2:ae693c;1:553824;2:ae693c;1:553824;2:ae693c;1:553824;2:ae693c;2:733920;2:ae693c;3:4b2b18;1:553824;2:4b2b18;2:553824;1:4b2b18;1:553824;2:ae693c;2:733920;2:ae693c;1:4b2b18;1:9e5932;1:ae693c;1:4b2b18;1:ae693c;1:9e5932;1:4b2b18;2:ae693c;1:553824;2:ae693c;1:733920;1:41230e;1:9e5932;1:ae693c;1:553824;1:9e5932;1:ae693c;1:4b2b18;2:ae693c;1:4b2b18;1:9e5932;1:ae693c;1:553824;1:ae693c;1:9e5932;1:41230e;1:1a150d;1:41230e;1:ae693c;2:553824;1:4b2b18;7:553824;1:ae693c;1:41230e;1:1a150d;1:0e0b06;1:bc9862;1:41230e;10:ae693c;1:41230e;1:bc9862;1:0e0b06;1:1a150d;2:bc9862;1:41230e;1:9e5932;6:ae693c;1:9e5932;1:41230e;2:bc9862;1:1a150d;1:19140c;1:1a150d;1:0e0b06;1:1a150d;1:41230e;6:733920;1:41230e;1:19140c;2:0e0b06;1:19140c"},
	ct_front = {w=16,h=16,d="1:19140c;1:af8f55;1:b8945f;2:c29d62;1:382116;1:733920;2:4b2b18;1:733920;1:382116;3:c29d62;1:b8945f;2:19140c;1:b8945f;2:af8f55;1:967441;1:9f844d;1:382116;2:4b2b18;1:382116;2:af8f55;2:b8945f;1:9f844d;2:19140c;3:b8945f;1:af8f55;1:b8945f;1:af8f55;2:382116;2:9f844d;2:af8f55;2:b8945f;2:19140c;2:7e6237;2:967441;1:7e6237;1:67502c;2:1b160d;1:7e6237;1:67502c;3:41230e;1:7e6237;2:19140c;1:c29d62;1:9f844d;4:c29d62;2:4b2b18;2:c29d62;1:281e0b;1:af8f55;1:281e0b;1:9f844d;2:19140c;2:b8945f;1:41230e;1:9f844d;1:af8f55;1:9f844d;2:382116;2:af8f55;3:281e0b;1:b8945f;2:19140c;1:9f844d;1:af8f55;1:281e0b;3:af8f55;2:382116;2:b8945f;3:b5b5b5;1:9f844d;2:19140c;1:67502c;1:7e6237;1:281e0b;1:967441;1:7e6237;1:67502c;2:1b160d;1:67502c;1:7e6237;1:ffffff;2:d8d8d8;1:7e6237;2:19140c;2:c29d62;1:281e0b;2:af8f55;1:c29d62;2:4b2b18;2:c29d62;1:ffffff;2:d8d8d8;1:b8945f;2:19140c;1:af8f55;3:d8d8d8;1:b8945f;1:af8f55;2:382116;1:9f844d;1:af8f55;1:9f844d;2:d8d8d8;1:9f844d;2:19140c;1:b8945f;1:b5b5b5;1:d8d8d8;1:ffffff;2:9f844d;2:382116;3:af8f55;1:ffffff;1:d8d8d8;1:b8945f;2:19140c;1:67502c;1:7e6237;2:967441;1:7e6237;1:67502c;2:110e08;1:7e6237;1:967441;2:7e6237;1:d8d8d8;1:67502c;2:19140c;1:9f844d;1:b8945f;2:c29d62;2:b8945f;2:4b2b18;2:c29d62;1:9f844d;1:c29d62;1:ffffff;1:c29d62;2:19140c;1:af8f55;2:b8945f;2:9f844d;1:af8f55;2:382116;2:b8945f;1:af8f55;1:b8945f;2:af8f55;2:19140c;2:9f844d;1:af8f55;1:b8945f;1:af8f55;1:9f844d;2:382116;1:b8945f;1:af8f55;4:9f844d;1:19140c;1:1b160d;2:7e6237;2:67502c;1:7e6237;1:967441;1:19140c;1:1b160d;1:7e6237;1:67502c;1:7e6237;3:67502c;1:1b160d"},
	ct_side = {w=16,h=16,d="1:19140c;1:af8f55;1:b8945f;2:c29d62;1:382116;1:733920;2:4b2b18;1:733920;1:382116;3:c29d62;1:b8945f;2:19140c;1:b8945f;2:af8f55;1:967441;1:9f844d;1:382116;2:4b2b18;1:382116;2:af8f55;2:b8945f;1:9f844d;2:19140c;3:b8945f;1:af8f55;1:b8945f;1:af8f55;2:262012;2:9f844d;2:af8f55;2:b8945f;2:19140c;2:7e6237;2:967441;1:7e6237;1:67502c;2:1b160d;1:7e6237;1:67502c;1:7e6237;2:67502c;1:7e6237;2:19140c;1:c29d62;1:9f844d;4:c29d62;2:4b2b18;2:c29d62;1:b8945f;2:af8f55;1:9f844d;2:19140c;2:b8945f;1:41230e;1:9f844d;1:41230e;1:9f844d;2:382116;2:af8f55;4:b8945f;2:19140c;1:9f844d;1:af8f55;1:281e0b;1:af8f55;1:281e0b;1:af8f55;2:382116;2:b8945f;2:af8f55;2:9f844d;2:19140c;1:67502c;2:7e6237;1:d8d8d8;1:7e6237;1:67502c;2:1b160d;1:67502c;3:7e6237;1:967441;1:7e6237;2:19140c;2:c29d62;1:d8d8d8;1:af8f55;1:d8d8d8;1:c29d62;2:4b2b18;5:c29d62;1:b8945f;2:19140c;1:af8f55;1:b8945f;1:b5b5b5;1:b8945f;1:b5b5b5;1:af8f55;2:382116;1:9f844d;1:af8f55;1:9f844d;1:af8f55;2:9f844d;2:19140c;1:b8945f;2:af8f55;3:9f844d;2:382116;3:af8f55;2:9f844d;1:b8945f;2:19140c;1:67502c;1:7e6237;2:967441;1:7e6237;1:67502c;2:110e08;1:7e6237;1:967441;2:7e6237;2:67502c;2:19140c;1:9f844d;1:b8945f;2:c29d62;2:b8945f;2:4b2b18;2:c29d62;1:9f844d;1:c29d62;1:b8945f;1:c29d62;2:19140c;1:af8f55;2:b8945f;2:9f844d;1:af8f55;2:382116;2:b8945f;1:af8f55;1:b8945f;2:af8f55;2:19140c;2:9f844d;1:af8f55;1:b8945f;1:af8f55;1:9f844d;2:382116;1:b8945f;1:af8f55;4:9f844d;1:19140c;1:1b160d;2:7e6237;2:67502c;1:7e6237;1:967441;1:19140c;1:1b160d;1:7e6237;1:67502c;1:7e6237;3:67502c;1:1b160d"},
}
local PALETTE = {
	A = Color3.fromRGB(43, 30, 13),
	B = Color3.fromRGB(51, 36, 17),
	C = Color3.fromRGB(129, 83, 57),
	D = Color3.fromRGB(63, 42, 21),
	E = Color3.fromRGB(118, 75, 51),
	F = Color3.fromRGB(144, 89, 63),
	G = Color3.fromRGB(143, 94, 62),
	H = Color3.fromRGB(73, 37, 16),
	I = Color3.fromRGB(36, 24, 8),
	J = Color3.fromRGB(155, 99, 73),
	K = Color3.fromRGB(179, 121, 94),
	L = Color3.fromRGB(183, 131, 107),
	M = Color3.fromRGB(170, 114, 89),
	N = Color3.fromRGB(52, 37, 18),
	O = Color3.fromRGB(255, 255, 255),
	P = Color3.fromRGB(82, 61, 137),
	Q = Color3.fromRGB(106, 64, 48),
	R = Color3.fromRGB(148, 96, 62),
	S = Color3.fromRGB(119, 66, 53),
	T = Color3.fromRGB(66, 29, 10),
	U = Color3.fromRGB(38, 26, 10),
	V = Color3.fromRGB(58, 49, 137),
	W = Color3.fromRGB(55, 55, 55),
	X = Color3.fromRGB(40, 40, 40),
	Y = Color3.fromRGB(0, 204, 204),
	Z = Color3.fromRGB(0, 175, 175),
	a = Color3.fromRGB(0, 164, 164),
	b = Color3.fromRGB(10, 188, 188),
	c = Color3.fromRGB(65, 53, 155),
	d = Color3.fromRGB(70, 58, 165),
	e = Color3.fromRGB(4, 149, 149),
	f = Color3.fromRGB(0, 127, 127),
	g = Color3.fromRGB(5, 136, 136),
	h = Color3.fromRGB(0, 104, 104),
	i = Color3.fromRGB(3, 122, 122),
	j = Color3.fromRGB(74, 74, 74),
	k = Color3.fromRGB(63, 63, 63),
	l = Color3.fromRGB(85, 85, 85)
}
local SKIN = {
	"........AABAABBACCCCCCCC........................................",
	"........ABDABDBACCEEEECC........................................",
	"........ADBABABAFEEEEEEF........................................",
	"........ABABBBABFEEEEEEF........................................",
	"........AAABDABDFCEEEECF........................................",
	"........BBAABADDCFCCCCFG........................................",
	"........BDBABBBBGCGCGCGC........................................",
	"........ABBADBAACGHHHHCG........................................",
	"AABBAIAABBDDDDBAAAIABBAAABAAIABA................................",
	"ABAAIIBBIBBDDBDBDBIIAABAABDAIIBD................................",
	"BDBAABDBAJKLKMJNBDBAADBBABBAAIBB................................",
	"AIABBIAAJMKKMMMJAAIBBAIABBABAAAB................................",
	"ABABAFJIMOPMJPOMIJFABABABIIBBAIB................................",
	"BBABIJJJJMMQQMMJJJJIBABBAIIABIIA................................",
	"IAIFJGCRFGHSSTGCRCGJFIAIAIIAAIIA................................",
	"CFFJGJGCRCTHTHCGFGJGJFFCCCUUUUCC................................",
	"....VVVVWWXX........YMJFFJMYVVVVVVVV........ZZZaJMMM............",
	"....VVVVXXWW........YJFFFFJYVVVVVVVV........ZZZaMMJF............",
	"....VVVVWWXX........YJFFFFJYVVVVVVVV........ZbZaMMMM............",
	"....VVVVXXWW........YMJFFJMYVVVVVVVV........aZZaJMJF............",
	"ccVcdddVcVcccddVeeeeZaMJJMaZeeeeZaaeeeaZZZZaaaZZffffZZZZ........",
	"cVVcdddVcVccddddeggeZZeMMeZZeggeZZZZaZZZZZaaaZZZfhhfZaaZ........",
	"cVccdddccVccddddgiigaZaZgaZagiigeZZZeZZeZaaZZZaefhhfZZaa........",
	"cVccdddccVccdccdiiiieZZZeZZeiiiiaZZaeZZaffffffffhhhhffff........",
	"cVcccVVcccVcVVVViiiigaZZeZZgiiiiaZZeaZZaJJJFJFJFFFFFFJJJ........",
	"cVccdccdcVVccVVcgiiggaaZeZZggiigeZZeZZZeMMMJMJMMJFJJMMMM........",
	"cVccddddcVccddddggggeZZaeaZgggggeZZaZZaeJMMMMJMJJFJJMJJM........",
	"ccccddddcVccddddeggegZZeaaaeeggeeZZaZaaeJMMMMMMJJFJFMMMM........",
	"VVccddccccVVccccegeegeaeZZaeeegeaZZaaaegJMJMMMMJJJJFMMMM........",
	"jjVVVVVVVVjjjjjjeeeegeegaZZeeeeeaaaeaeggMMJMMMMMJJJJMMMM........",
	"WkjjjljjjjkWkjjkcVcVVVccVgaegVVccgegegVdMMJMMMJMJJJJMJMM........",
	"WWWkkjjkkWWWWkkWcVcccddcdcggcVccddcVgcddJMMJJMJJFJFJJJMJ........",
	"................................................................",
	"................................................................",
	"................................................................",
	"................................................................",
	"................................................................",
	"................................................................",
	"................................................................",
	"........................................bbbbbbbZaaaaZbbb........",
	"................................................................",
	"................................................................",
	"................................................................",
	"................................................................",
	"................................................................",
	"................................................................",
	"................................................................",
	"................................................................",
	"....................VVVVXXWW........aZZZMMMJ....................",
	"....................VVVVWWXX........aZZZFJMM....................",
	"....................VVVVXXWW........aZbZMMMM....................",
	"....................VVVVWWXX........aZZaFJMJ....................",
	"................ccVcddcccVccdddcffffZZaaaZZZZZZZ................",
	"................ccVccdddcVVcddddfhhfZZZaaaZZZaaZ................",
	"................ccVcVdddccVcddddfhhfeaZZZaaZaaZZ................",
	"................ccVccdddccVcdccdhhhhffffffffffffaaaaZbbbbbbbbbbZ",
	"................cVcccVVcccVcVVVVFFFFFJFJFJJJJJJF................",
	"................cVVccccdccVccVVcJJFJMMJMJMMMMMMM................",
	"................ccVccdddccVcddddJJFJJMJMMMMJMJJM................",
	"................ccVcVdddccccddddFJFJJMMMMMMJMMMM................",
	"................VVccVcddccVVccccFJJJJMMMMJMJMMMM................",
	"................jjVVVVVVVVjjjjjjJJJJMMMMMJMMMMMM................",
	"................WkjjjljjjjkWkjjkJJJJMJMMMJMMMMJM................",
	"................WWWkkjjkkWWWWkkWJFJFJJMJJMMJJMJJ................"
}
F.decodeRLE = function(s)
	local px, i = {}, 0
	for count, hex in s:gmatch("(%d+):([%x%-]+)") do
		local c = false
		if hex ~= "-" then
			c = Color3.fromRGB(tonumber(hex:sub(1, 2), 16), tonumber(hex:sub(3, 4), 16), tonumber(hex:sub(5, 6), 16))
		end
		for _ = 1, tonumber(count) do i += 1 px[i] = c end
	end
	return px
end
F.buildImage = function(img, s)
	if not img.px then img.px = F.decodeRLE(img.d) end
	local px, w, h = img.px, img.w, img.h
	local f = Instance.new("Frame")
	f.Size = UDim2.fromOffset(w * s, h * s)
	f.BackgroundTransparency = 1
	f.BorderSizePixel = 0
	for y = 0, h - 1 do
		local x = 0
		while x < w do
			local c = px[y * w + x + 1]
			local run = 1
			while x + run < w and px[y * w + x + run + 1] == c do run += 1 end
			if c then
				local p = Instance.new("Frame")
				p.BorderSizePixel = 0
				p.BackgroundColor3 = c
				p.Position = UDim2.fromOffset(x * s, y * s)
				p.Size = UDim2.fromOffset(run * s, s)
				p.Parent = f
			end
			x += run
		end
	end
	return f
end
local vp = camera.ViewportSize
local GS = math.clamp(math.floor(math.min(vp.X / 200, vp.Y / 180)), 1, 4)
F.getPixel = function(x, y)
	return PALETTE[SKIN[y + 1]:sub(x + 1, x + 1)]
end
local model = Instance.new("Model")
model.Name = "MinecraftSteve"
F.paintFace = function(part, face, u, v, w, h, flipX, flipY)
	local g = Instance.new("SurfaceGui")
	g.Face = face
	g.SizingMode = Enum.SurfaceGuiSizingMode.FixedSize
	g.CanvasSize = Vector2.new(w * 16, h * 16)
	g.LightInfluence = 0.7
	g.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
	g.Parent = part
	for row = 0, h - 1 do
		local ty = v + (flipY and (h - 1 - row) or row)
		local col = 0
		while col < w do
			local function tx(c) return u + (flipX and (w - 1 - c) or c) end
			local c = F.getPixel(tx(col), ty)
			local run = 1
			while col + run  0 then
		bodySwingYaw = math.sin(math.sqrt(swingProgress) * pi * 2) * 0.2
		local eased = 1 - swingProgress
		eased = 1 - eased * eased * eased * eased
		local f2 = math.sin(eased * pi)
		local f3 = math.sin(swingProgress * pi) * -(pitch - 0.7) * 0.75
		rArmX -= f2 * 1.2 + f3
		-- Main-hand arm receives body yaw plus the extra 2x ModelBiped swing term.
		rArmY += bodySwingYaw * 3
		lArmY += bodySwingYaw
		lArmX += bodySwingYaw
		rArmSwingZ = math.sin(swingProgress * pi) * -0.4
	end

	-- Keep eating as a held-input action, with the arm easing toward the mouth
	-- during the same 32-tick use window as Java 1.12.x, not really accurate tho.
	if eatBlend > 0.001 then
		rArmX -= eatBlend * eatPull * 0.48
	end

	local rLegX = math.cos(walkPos * 0.6662) * 1.4 * walkSpeed
	local lLegX = math.cos(walkPos * 0.6662 + pi) * 1.4 * walkSpeed
	local headP, bodyP = Vector3.new(0, 0, 0), Vector3.new(0, 0, 0)
	local rArmP = Vector3.new(-math.cos(bodySwingYaw) * 5, 2, math.sin(bodySwingYaw) * 5)
	local lArmP = Vector3.new(math.cos(bodySwingYaw) * 5, 2, -math.sin(bodySwingYaw) * 5)
	local rLegP, lLegP = Vector3.new(-1.9, 12, 0), Vector3.new(1.9, 12, 0)
	local bodyX = 0
	if crouch then
		bodyX = 0.5
		rArmX += 0.4 lArmX += 0.4
		rLegP += Vector3.new(0, 0, 4) lLegP += Vector3.new(0, 0, 4)
		headP += Vector3.new(0, 4.2, 0)
		bodyP += Vector3.new(0, 3.2, 0)
		rArmP += Vector3.new(0, 3.2, 0) lArmP += Vector3.new(0, 3.2, 0)
	end
	local rBobZ = math.cos(age * 0.09) * 0.05 + 0.05
	local lBobZ = -rBobZ
	rArmX += math.sin(age * 0.067) * 0.05
	lArmX -= math.sin(age * 0.067) * 0.05
	F.placeHead(root, headP, pitch, relYaw)
	F.placeLimb(limbs.body, root, bodyP, bodyX, bodySwingYaw, 0)
	F.placeLimb(limbs.rightArm, root, rArmP, rArmX, rArmY, rBobZ + rArmSwingZ)
	F.placeLimb(limbs.leftArm, root, lArmP, lArmX, lArmY, lBobZ)
	F.placeLimb(limbs.rightLeg, root, rLegP, rLegX, 0.005, 0.005)
	F.placeLimb(limbs.leftLeg, root, lLegP, lLegX, -0.005, -0.005)
	return rArmP, rArmX, rBobZ, rArmY, rArmSwingZ
end
local ITEMS = {
	diamond_sword = { name = "Diamond Sword", max = 1 },
	diamond_pickaxe = { name = "Diamond Pickaxe", max = 1 },
	diamond_axe = { name = "Diamond Axe", max = 1 },
	diamond_shovel = { name = "Diamond Shovel", max = 1 },
	cooked_beef = { name = "Steak" },
	bread = { name = "Bread" },
	apple = { name = "Apple" },
	torch = { name = "Torch" },
	stick = { name = "Stick" },
	coal = { name = "Coal" },
	iron_ingot = { name = "Iron Ingot" },
	diamond = { name = "Diamond" },
	bucket = { name = "Bucket", max = 16 },
	stone = { name = "Stone", placeable = true, hardness = 1.5 },
	dirt = { name = "Dirt", placeable = true, hardness = 0.5 },
	cobblestone = { name = "Cobblestone", placeable = true, hardness = 2.0 },
	oak_planks = { name = "Oak Planks", placeable = true, hardness = 2.0 },
	oak_log = { name = "Oak Log", placeable = true, hardness = 2.0 },
	grass_block = { name = "Grass Block", placeable = true, hardness = 0.6 },
	crafting_table = { name = "Crafting Table", placeable = true, hardness = 2.5 },
	ladder = { name = "Ladder", placeable = true, hardness = 0.4 },
}
local slots = {}
local carried = nil
F.maxOf = function(id) return ITEMS[id].max or 64 end
F.canPlace = function(idx, st)
	if idx == 0 or st == nil or ITEMS[st.id] == nil then return false end
	if idx >= 5 and idx  1 then
		for i = a, b do
			local s = slots[i]
			if s and s.id == st.id and s.n < F.maxOf(s.id) then
				local mv = math.min(F.maxOf(s.id) - s.n, st.n)
				s.n += mv st.n -= mv
				if st.n <= 0 then return true end
			end
		end
	end
	for i = a, b do
		if not slots[i] and F.canPlace(i, st) then
			slots[i] = { id = st.id, n = st.n }
			st.n = 0
			return true
		end
	end
	return st.n = n
end
F.give = function(id, n, a, b)
	local st = { id = id, n = n }
	F.insertStack(st, a or 9, b or 44)
end
F.updateCraft = function()
	local g = {}
	local count = 0
	for i = 1, 4 do g[i] = slots[i] and slots[i].id or nil if g[i] then count += 1 end end
	local r = nil
	if count == 1 then
		for i = 1, 4 do if g[i] == "oak_log" then r = { id = "oak_planks", n = 4 } end end
	elseif count == 2 then
		if (g[1] == "oak_planks" and g[3] == "oak_planks") or (g[2] == "oak_planks" and g[4] == "oak_planks") then
			r = { id = "stick", n = 4 }
		elseif (g[1] == "coal" and g[3] == "stick") or (g[2] == "coal" and g[4] == "stick") then
			r = { id = "torch", n = 4 }
		end
	elseif count == 4 then
		if g[1] == "oak_planks" and g[2] == "oak_planks" and g[3] == "oak_planks" and g[4] == "oak_planks" then
			r = { id = "crafting_table", n = 1 }
		end
	end
	slots[0] = r
end
F.consumeCraft = function()
	for i = 1, 4 do
		local s = slots[i]
		if s then s.n -= 1 if s.n <= 0 then slots[i] = nil end end
	end
	F.updateCraft()
end
slots[36] = { id = "diamond_sword", n = 1 }
slots[37] = { id = "diamond_pickaxe", n = 1 }
slots[38] = { id = "diamond_axe", n = 1 }
slots[39] = { id = "diamond_shovel", n = 1 }
slots[40] = { id = "cooked_beef", n = 64 }
slots[41] = { id = "oak_planks", n = 64 }
slots[42] = { id = "cobblestone", n = 64 }
slots[43] = { id = "grass_block", n = 64 }
slots[44] = { id = "dirt", n = 64 }
F.give("stone", 64) F.give("dirt", 64) F.give("oak_log", 64)
F.give("stick", 64) F.give("coal", 64) F.give("iron_ingot", 64) F.give("diamond", 32)
F.give("apple", 64) F.give("bread", 64) F.give("bucket", 1)
F.give("ladder", 64) -- Crafting table and torch remain available through crafting recipes.
local abilities = {
	invulnerable = true,
	flying = false,
	mayfly = true,
	instabuild = true,
	mayBuild = true,
	flyingSpeed = 0.05,
	walkingSpeed = 0.1,
}
local creative = true
local jumpTriggerTime = 0
local pos, eyeH, selected, refresh, touchJumpHeld, yaw, pitch, rp
local invOpen = false
local inventoryPage = "creative"
local hudVisible = true
local creativePlaceholder = nil
local creativePlaceholderOpen = false
local creativeTabButton = nil
local panel
local debugPanel, debugText
local chatPanel, chatInput, chatHistoryLabel, chatRowsFrame
local chatOpen = false
local mobileDpad = nil
local mobileMoveVector = Vector3.zero
local mobileHeldDirections = { Forward = false, Back = false, Left = false, Right = false }
local lastMobileForwardTap = -math.huge
local sprintLatch = false
local prevPos, vel
local recalcTouchMove
pos = Vector3.new(0, 10, 0)
eyeH = 1.62
selected = 0
touchJumpHeld = false
yaw, pitch = 0, 0
rp = RaycastParams.new()
rp.FilterType = Enum.RaycastFilterType.Exclude
rp.RespectCanCollide = true
local entityRayParams = RaycastParams.new()
entityRayParams.FilterType = Enum.RaycastFilterType.Exclude
entityRayParams.RespectCanCollide = false
F.setGameMode = function(isCreative)
	creative = isCreative
	if isCreative then
		abilities.mayfly = true
		abilities.instabuild = true
		abilities.invulnerable = true
		abilities.mayBuild = true
	else
		abilities.mayfly = false
		abilities.instabuild = false
		abilities.invulnerable = false
		abilities.flying = false
		abilities.mayBuild = true
	end
	if not invOpen then
		inventoryPage = isCreative and "creative" or "survival"
	else
		inventoryPage = isCreative and "creative" or "survival"
	end
	if F.updateInventoryPage then F.updateInventoryPage() end
end
F.setGameMode(true)
local REACH_SURVIVAL = 4.5
local REACH_CREATIVE = 5.0
local DESTROY_DELAY_CREATIVE = 5
local isDestroying = false
local destroyBlockPos = nil
local destroyPart = nil
local destroyingItemId = nil
local destroyProgress = 0
local destroyTicks = 0
local destroyDelay = 0
local rightClickDelay = 0
local missTime = 0
do
	local old = workspace:FindFirstChild("MCBlocks")
	if old then old:Destroy() end
end
local char, hum, hrp
local blockFolder = Instance.new("Folder")
blockFolder.Name = "MCBlocks"
blockFolder.Parent = workspace
local existingDropFolder = workspace:FindFirstChild("MCDroppedItems")
if existingDropFolder then existingDropFolder:Destroy() end
local dropFolder = Instance.new("Folder")
dropFolder.Name = "MCDroppedItems"
dropFolder.Parent = workspace
F.baseplateOriginals = {} -- retained empty for cleanup compatibility
F.voxelOriginals = {} -- no voxel conversions are performed
F.snapToGrid = function(v)
	return Vector3.new(
		math.floor(v.X / BLOCK + 0.5) * BLOCK,
		math.floor(v.Y / BLOCK + 0.5) * BLOCK,
		math.floor(v.Z / BLOCK + 0.5) * BLOCK
	)
end
local BLOCK_COLORS = {
	stone = Color3.fromRGB(125, 125, 125),
	dirt = Color3.fromRGB(134, 96, 67),
	cobblestone = Color3.fromRGB(110, 110, 110),
	oak_planks = Color3.fromRGB(162, 130, 78),
	oak_log = Color3.fromRGB(102, 81, 50),
	grass_block = Color3.fromRGB(91, 138, 54),
	crafting_table = Color3.fromRGB(120, 90, 50),
}
F.isMCBlock = function(part)
	return part and part:IsA("BasePart") and part:GetAttribute("MCBlockId") ~= nil
end
-- Any raycastable world BasePart can be selected and broken. Generated dropped items
-- are excluded so aiming at an item does not accidentally destroy the pickup.
F.isBreakableTarget = function(part)
	if not (part ~= nil and part:IsA("BasePart") and part.Parent ~= nil) then return false end
	if dropFolder and part:IsDescendantOf(dropFolder) then return false end
	-- A part beneath a Model with a Humanoid is an entity, not a block/CSG target.
	if F.getEntityTarget and F.getEntityTarget(part) then return false end
	return true
end
local MCB = (function()
local blocks = {}
local bulkBuild = false
local painted = setmetatable({}, { __mode = "k" })
local function cellKey(center)
	return math.floor(center.X / BLOCK + 0.5) .. ":" .. math.floor(center.Y / BLOCK + 0.5) .. ":" .. math.floor(center.Z / BLOCK + 0.5)
end
local function getBlockAt(center) return blocks[cellKey(center)] end
local BLOCKFACES = {
	stone = { all = "stone" },
	dirt = { all = "dirt" },
	cobblestone = { all = "cobble" },
	oak_planks = { all = "planks" },
	oak_log = { top = "log_top", bottom = "log_top", side = "log" },
	grass_block = { top = "grass_top", bottom = "dirt", side = "grass_side" },
	crafting_table = { top = "ct_top", bottom = "planks", front = "ct_front", side = "ct_side" },
}
local FACES = {
	{ Enum.NormalId.Top, Vector3.yAxis }, { Enum.NormalId.Bottom, -Vector3.yAxis },
	{ Enum.NormalId.Front, -Vector3.zAxis }, { Enum.NormalId.Back, Vector3.zAxis },
	{ Enum.NormalId.Right, Vector3.xAxis }, { Enum.NormalId.Left, -Vector3.xAxis },
}
local function faceTexKey(id, nid)
	local F = BLOCKFACES[id]
	if not F then return nil end
	if F.all then return F.all end
	if nid == Enum.NormalId.Top then return F.top end
	if nid == Enum.NormalId.Bottom then return F.bottom or F.top end
	if F.front and (nid == Enum.NormalId.Front or nid == Enum.NormalId.Left) then return F.front end
	return F.side
end
local function rectsOf(px, w, h)
	local used, out = {}, {}
	for y = 0, h - 1 do
		for x = 0, w - 1 do
			local i = y * w + x + 1
			local c = px[i]
			if c and not used[i] then
				local rw = 1
				while x + rw < w and px[i + rw] == c and not used[i + rw] do rw += 1 end
				local rh, ok = 1, true
				while ok and y + rh < h do
					for dx = 0, rw - 1 do
						local j = (y + rh) * w + x + dx + 1
						if px[j] ~= c or used[j] then ok = false break end
					end
					if ok then rh += 1 end
				end
				for dy = 0, rh - 1 do for dx = 0, rw - 1 do used[(y + dy) * w + x + dx + 1] = true end end
				out[#out + 1] = { x = x, y = y, w = rw, h = rh, c = c }
			end
		end
	end
	return out
end
local faceTpl = {}
local function faceTemplate(texKey, nid)
	local ck = texKey .. nid.Name
	local g = faceTpl[ck]
	if g then return g end
	local tex = BTEX[texKey]
	if not tex then return nil end
	if not tex.px then tex.px = F.decodeRLE(tex.d) end
	g = Instance.new("SurfaceGui")
	g.Face = nid
	g.SizingMode = Enum.SurfaceGuiSizingMode.FixedSize
	g.CanvasSize = Vector2.new(64, 64)
	g.LightInfluence = 0.5
	g.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
	for _, r in ipairs(rectsOf(tex.px, 16, 16)) do
		local f = Instance.new("Frame")
		f.BorderSizePixel = 0
		f.BackgroundColor3 = r.c
		f.Position = UDim2.fromOffset(r.x * 4, r.y * 4)
		f.Size = UDim2.fromOffset(r.w * 4, r.h * 4)
		f.Parent = g
	end
	faceTpl[ck] = g
	return g
end
local function paintFaceOf(part, nid, id)
	local key = faceTexKey(id, nid)
	local tpl = key and faceTemplate(key, nid)
	if tpl then tpl:Clone().Parent = part end
end
local function refreshFaces(part)
	if bulkBuild or not part.Parent then return end
	local id = part:GetAttribute("MCBlockId")
	if not id or id == "ladder" then return end
	local cell = part:GetAttribute("MCCell") or part.Position
	local p = painted[part]
	if not p then p = {} painted[part] = p end
	for _, f in ipairs(FACES) do
		if not p[f[1]] then
			local nb = getBlockAt(cell + f[2] * BLOCK)
			if not nb or nb:GetAttribute("MCClimb") then
				p[f[1]] = true
				paintFaceOf(part, f[1], id)
			end
		end
	end
end
local function buildLadderVisual(part, center, n)
	local tex = ICON.ladder
	if not tex.px then tex.px = F.decodeRLE(tex.d) end
	local right = (-n):Cross(Vector3.yAxis)
	for _, r in ipairs(rectsOf(tex.px, 16, 16)) do
		local v = Instance.new("Part")
		v.Size = Vector3.new(r.w, r.h, 1) * PX
		v.Color = r.c
		v.Material = Enum.Material.SmoothPlastic
		v.Anchored, v.CanCollide, v.CanQuery, v.CanTouch, v.CastShadow = true, false, false, false, false
		local p = center - n * (BLOCK / 2) + n * (1.3 * PX) + right * ((r.x + r.w / 2 - 8) * PX) + Vector3.yAxis * ((8 - r.y - r.h / 2) * PX)
		v.CFrame = CFrame.fromMatrix(p, right, Vector3.yAxis, n)
		v.Parent = part
	end
end
local function createBlock(id, center, face)
	center = F.snapToGrid(center)
	if getBlockAt(center) then return nil end
	local part = Instance.new("Part")
	part.Name = id
	part.Anchored = true
	part.CanTouch = false
	part.TopSurface = Enum.SurfaceType.Smooth
	part.BottomSurface = Enum.SurfaceType.Smooth
	part.Material = Enum.Material.SmoothPlastic
	part:SetAttribute("MCBlockId", id)
	part:SetAttribute("MCCell", center)
	if id == "ladder" then
		local n = (face and math.abs(face.Y)  0.5
		part.Size = alongX and Vector3.new(t, BLOCK, BLOCK) or Vector3.new(BLOCK, BLOCK, t)
		part.CFrame = CFrame.new(center - n * (BLOCK / 2 - t / 2))
		part.Transparency = 1
		part.CanCollide = false
		part.CanQuery = true
		part.CastShadow = false
		part:SetAttribute("MCClimb", true)
		buildLadderVisual(part, center, n)
	else
		part.Size = Vector3.new(BLOCK, BLOCK, BLOCK)
		part.CFrame = CFrame.new(center)
		part.CanCollide = true
		part.CanQuery = true
		part.CastShadow = true
		part.Color = BLOCK_COLORS[id] or Color3.fromRGB(150, 150, 150)
	end
	blocks[cellKey(center)] = part
	part.Parent = blockFolder
	refreshFaces(part)
	return part
end
local function removeBlock(part)
	local cell = part:GetAttribute("MCCell") or part.Position
	blocks[cellKey(cell)] = nil
	painted[part] = nil
	part:Destroy()
	for _, f in ipairs(FACES) do
		local nb = getBlockAt(cell + f[2] * BLOCK)
		if nb then refreshFaces(nb) end
	end
end
return {
	get = getBlockAt, create = createBlock, remove = removeBlock, refresh = refreshFaces,
	paintFace = paintFaceOf, rects = rectsOf, FACES = FACES, BLOCKFACES = BLOCKFACES, blocks = blocks,
	setBulk = function(v) bulkBuild = v end,
}
end)()
local getBlockAt, createBlock, removeBlock = MCB.get, MCB.create, MCB.remove

-- All world geometry stays as its existing geometry. No baseplate chunking,
-- voxelization, or replacement with generated block Parts is performed.
-- A target cell is identified on the same world grid used by placed MC blocks.
F.getGridCellCenter = function(part, hitPos, hitNormal)
	if F.isMCBlock(part) then
		return part:GetAttribute("MCCell") or F.snapToGrid(part.Position)
	end
	if not hitPos then
		return F.snapToGrid(part and part.Position or Vector3.zero)
	end
	local n = hitNormal or Vector3.yAxis
	local ax, ay, az = math.abs(n.X), math.abs(n.Y), math.abs(n.Z)
	local face
	if ay >= ax and ay >= az then
		face = Vector3.new(0, n.Y >= 0 and 1 or -1, 0)
	elseif ax >= az then
		face = Vector3.new(n.X >= 0 and 1 or -1, 0, 0)
	else
		face = Vector3.new(0, 0, n.Z >= 0 and 1 or -1)
	end
	return F.snapToGrid(hitPos - face * (BLOCK * 0.5))
end

-- Cut exactly one grid-sized cube from the existing geometry. Roblox's CSG
-- result is a UnionOperation; it is not expanded into a collection of Parts.
-- If the selected cube contains the entire target, removing that target is the
-- equivalent of breaking its only occupied cell. If CSG fails, leave it intact.
F.cutGridCellWithUnion = function(source, cellCenter)
	if not (source and source.Parent and source:IsA("BasePart") and cellCenter) then
		return false
	end
	if source:IsDescendantOf(dropFolder) or source.Name == "MCSelectionGridProxy" then
		return false
	end
	if F.isMCBlock(source) then
		removeBlock(source)
		return true
	end

	local GeometryService = game:GetService("GeometryService")
	local half = BLOCK * 0.5
	local cellCFrame = CFrame.new(cellCenter)
	local sourceParent = source.Parent
	local sourceCFrame = source.CFrame
	local sourceName = source.Name
	local sourceAttributes = source:GetAttributes()

	-- The selection cube is the target, not just the one BasePart that happened
	-- to be first in the raycast. Collect every eligible world part whose bounds
	-- intersect the selected Minecraft cell, including decorative Parts and unions.
	local excluded = { dropFolder, blockFolder, model }
	if char then table.insert(excluded, char) end
	local overlap = OverlapParams.new()
	overlap.FilterType = Enum.RaycastFilterType.Exclude
	overlap.FilterDescendantsInstances = excluded
	overlap.RespectCanCollide = false
	overlap.MaxParts = 0

	local targets, seen = {}, {}
	local function addTarget(part)
		if not (part and part.Parent and part:IsA("BasePart")) then return end
		if seen[part] or part:IsDescendantOf(dropFolder) or part:IsDescendantOf(blockFolder) then return end
		if part.Name == "MCSelectionGridProxy" then return end
		if F.getEntityTarget and F.getEntityTarget(part) then return end
		local playerModel = part:FindFirstAncestorOfClass("Model")
		if playerModel and Players:GetPlayerFromCharacter(playerModel) then return end
		seen[part] = true
		table.insert(targets, part)
	end
	addTarget(source)
	local overlapOK, overlapping = pcall(function()
		return workspace:GetPartBoundsInBox(cellCFrame, Vector3.one * BLOCK, overlap)
	end)
	if overlapOK and type(overlapping) == "table" then
		for _, part in ipairs(overlapping) do addTarget(part) end
	end
	if #targets == 0 then return false end

	local function allTargetsInsideCell(parts)
		for _, part in ipairs(parts) do
			if not (part and part.Parent and part:IsA("BasePart")) then return false end
			for sx = -1, 1, 2 do
				for sy = -1, 1, 2 do
					for sz = -1, 1, 2 do
						local corner = part.CFrame:PointToWorldSpace(Vector3.new(
							part.Size.X * 0.5 * sx,
							part.Size.Y * 0.5 * sy,
							part.Size.Z * 0.5 * sz
						))
						local localCorner = cellCFrame:PointToObjectSpace(corner)
						if math.abs(localCorner.X) > half + 0.01
							or math.abs(localCorner.Y) > half + 0.01
							or math.abs(localCorner.Z) > half + 0.01 then
							return false
						end
					end
				end
			end
		end
		return #parts > 0
	end
	local function destroyAllCellTargets(parts)
		for _, part in ipairs(parts) do
			if part and part.Parent then pcall(function() part:Destroy() end) end
		end
	end

	local options = {
		CollisionFidelity = Enum.CollisionFidelity.Default,
		RenderFidelity = Enum.RenderFidelity.Automatic,
		SplitApart = false,
	}
	local intermediate = {}
	local csgBase = source

	-- Multiple objects in the same highlighted cell first become one CSG Union.
	-- This keeps geometry from Parts A/B/C together so the same cell cut removes
	-- all of them, rather than only whichever one the raycast returned.
	if #targets > 1 then
		local others = {}
		for _, part in ipairs(targets) do
			if part ~= source then table.insert(others, part) end
		end
		local unionOK, unionRaw = pcall(function()
			return GeometryService:UnionAsync(source, others, options)
		end)
		if not unionOK or type(unionRaw) ~= "table" or #unionRaw == 0 then
			if allTargetsInsideCell(targets) then
				destroyAllCellTargets(targets)
				return true
			end
			warn("[Minecraft 1.12.1] Could not union every part in the selected cell; originals left unchanged.")
			return false
		end
		for _, item in ipairs(unionRaw) do
			if typeof(item) == "Instance" then table.insert(intermediate, item) end
		end
		if #intermediate == 0 then return false end
		csgBase = intermediate[1]
	end

	local cutter = Instance.new("Part")
	cutter.Name = "MCUnionCutCutter"
	cutter.Size = Vector3.one * BLOCK
	cutter.CFrame = cellCFrame
	cutter.Anchored = true
	cutter.CanCollide = false
	cutter.CanTouch = false
	cutter.CanQuery = false
	cutter.CastShadow = false
	cutter.Transparency = 1
	local cutOK, cutRaw = pcall(function()
		return GeometryService:SubtractAsync(csgBase, { cutter }, options)
	end)
	cutter:Destroy()

	local results = {}
	if cutOK and type(cutRaw) == "table" then
		for _, item in ipairs(cutRaw) do
			if typeof(item) == "Instance" then table.insert(results, item) end
		end
	end
	local function destroyIntermediate()
		for _, item in ipairs(intermediate) do
			if item then pcall(function() item:Destroy() end) end
		end
	end
	local function destroyResults()
		for _, item in ipairs(results) do
			if item then pcall(function() item:Destroy() end) end
		end
	end

	if not cutOK or type(cutRaw) ~= "table" then
		destroyResults()
		destroyIntermediate()
		if allTargetsInsideCell(targets) then
			destroyAllCellTargets(targets)
			return true
		end
		warn("[Minecraft 1.12.1] Union cell cut failed; all original parts were left unchanged.")
		return false
	end

	-- An empty successful result means every solid in the combined target was
	-- inside the selected cell and was removed by the cut.
	if #results == 0 then
		destroyIntermediate()
		for _, part in ipairs(targets) do
			if part and part.Parent then pcall(function() part:Destroy() end) end
		end
		return true
	end

	local firstResult = results[1]
	if not (firstResult and firstResult:IsA("BasePart")) then
		destroyResults()
		destroyIntermediate()
		return false
	end

	local function copySourceProperties(result, index)
		pcall(function() result.CFrame = sourceCFrame end)
		result.Name = index == 1 and sourceName or (sourceName .. "_CutPart" .. tostring(index))
		pcall(function() result.Color = source.Color end)
		pcall(function() result.Material = source.Material end)
		pcall(function() result.MaterialVariant = source.MaterialVariant end)
		pcall(function() result.Reflectance = source.Reflectance end)
		pcall(function() result.Transparency = source.Transparency end)
		pcall(function() result.LocalTransparencyModifier = source.LocalTransparencyModifier end)
		pcall(function() result.Anchored = source.Anchored end)
		pcall(function() result.CanCollide = source.CanCollide end)
		pcall(function() result.CanQuery = source.CanQuery end)
		pcall(function() result.CanTouch = source.CanTouch end)
		pcall(function() result.CastShadow = source.CastShadow end)
		pcall(function() result.CollisionGroup = source.CollisionGroup end)
		pcall(function() result.CustomPhysicalProperties = source.CustomPhysicalProperties end)
		pcall(function()
			if result:IsA("PartOperation") and source:IsA("PartOperation") then
				result.UsePartColor = source.UsePartColor
			end
		end)
		for name, value in pairs(sourceAttributes) do
			pcall(function() result:SetAttribute(name, value) end)
		end
		result:SetAttribute("MCClientUnionReplacement", true)
		result.Parent = sourceParent
	end

	for index, result in ipairs(results) do
		if result and result:IsA("BasePart") then copySourceProperties(result, index) end
	end

	-- Preserve relevant children (textures, decals, surface GUIs and attachments)
	-- from each original on the resulting union instead of orphaning them.
	for _, oldPart in ipairs(targets) do
		for _, child in ipairs(oldPart:GetChildren()) do
			if not child:IsA("BasePart") and not child:IsA("Model") and child.Parent == oldPart then
				pcall(function() child.Parent = firstResult end)
			end
		end
	end

	-- The new union/cut geometry is ready before originals are removed.
	-- Roblox CSG returns new result instances, so this is a successful local
	-- replacement, not a hidden source or a temporary visual clone.
	for _, oldPart in ipairs(targets) do
		if oldPart and oldPart.Parent then pcall(function() oldPart:Destroy() end) end
	end
	destroyIntermediate()
	for index = 2, #results do
		local extra = results[index]
		if extra and not extra.Parent then pcall(function() extra.Parent = sourceParent end) end
	end
	return true
end

-- Resolving a target is deliberately read-only. The same hit cell is used for
-- highlighting, breaking, and placement; no world geometry is changed here.
F.resolveBreakTarget = function(part, hitPos, hitNormal)
	return part, hitPos, hitNormal
end

local selectBox = Instance.new("SelectionBox")
selectBox.Color3 = Color3.new(0, 0, 0)
selectBox.LineThickness = 0.012
selectBox.Transparency = 0.3
selectBox.Name = "MCSelectBox"
local selectionProxy = Instance.new("Part")
selectionProxy.Name = "MCSelectionGridProxy"
selectionProxy.Size = Vector3.new(BLOCK, BLOCK, BLOCK)
selectionProxy.Anchored = true
selectionProxy.CanCollide = false
selectionProxy.CanTouch = false
selectionProxy.CanQuery = false
selectionProxy.CastShadow = false
selectionProxy.Transparency = 1
selectionProxy.Parent = workspace
local crackOverlay = Instance.new("SelectionBox")
crackOverlay.Color3 = Color3.new(1, 1, 1)
crackOverlay.LineThickness = 0.025
crackOverlay.Transparency = 1
crackOverlay.Name = "MCCrackOverlay"
F.setDestroyStage = function(stage)
	if stage  0 and math.floor(destroyProgress * 10) or -1
end
F.getDestroyProgressFor = function(id)
	local h = (id == "baseplate") and 0.6 or ((ITEMS[id] and ITEMS[id].hardness) or 1.0)
	if h = 1 then
			F.destroyBlock(part, cellCenter)
		else
			isDestroying = true
			destroyPart = part
			destroyBlockPos = cellCenter
			local held = slots[36 + selected]
			destroyingItemId = held and held.id or nil
			destroyProgress = 0
			destroyTicks = 0
			F.setDestroyStage(0)
		end
	end
	return true
end
F.continueDestroyBlock = function(part, _direction, hitPos, hitNormal)
	if destroyDelay > 0 then
		destroyDelay -= 1
		return true
	end
	if not F.isBreakableTarget(part) then return false end
	local cellCenter = F.getGridCellCenter(part, hitPos, hitNormal)
	if abilities.instabuild then
		destroyDelay = DESTROY_DELAY_CREATIVE
		F.destroyBlock(part, cellCenter)
		return true
	end
	if F.sameDestroyTarget(part, cellCenter) then
		if not part.Parent then
			isDestroying = false
			return false
		end
		local id = part:GetAttribute("MCBlockId")
		destroyProgress += F.getDestroyProgressFor(id)
		destroyTicks += 1
		F.setDestroyStage(F.getDestroyStage())
		if destroyProgress >= 1 then
			isDestroying = false
			F.destroyBlock(part, cellCenter)
			destroyProgress = 0
			destroyTicks = 0
			destroyDelay = DESTROY_DELAY_CREATIVE
			F.setDestroyStage(-1)
			destroyPart = nil
		end
		return true
	else
		return F.startDestroyBlock(part, _direction, hitPos, hitNormal)
	end
end
F.pickBlock = function()
	local reach = (abilities and abilities.instabuild) and REACH_CREATIVE or REACH_SURVIVAL
	local p = pos or Vector3.zero
	local eh = eyeH or 1.62
	local y = yaw or 0
	local pi = pitch or 0
	local eye = p + Vector3.new(0, eh * BLOCK, 0)
	local look = (CFrame.Angles(0, y, 0) * CFrame.Angles(pi, 0, 0)).LookVector
	local dir = look * (reach * BLOCK)
	if not rp then return nil, nil, nil end
	local r = workspace:Raycast(eye, dir, rp)
	-- If the normal ray already hit a collidable limb, return it without extra work.
	if r and F.getEntityTarget then
		local alreadyEntity = F.getEntityTarget(r.Instance)
		if alreadyEntity then return r.Instance, r.Position, r.Normal end
	end
	-- Standard block targeting intentionally ignores non-collidable BaseParts. This
	-- second ray lets Humanoid limbs/accessories count as entities without changing
	-- which ordinary world parts are eligible for union-cut block breaking.
	local excluded = {}
	for _, item in ipairs(rp.FilterDescendantsInstances or {}) do excluded[#excluded + 1] = item end
	if dropFolder then excluded[#excluded + 1] = dropFolder end
	entityRayParams.FilterDescendantsInstances = excluded
	local blockDistance = r and (r.Position - eye).Magnitude or math.huge
	for _ = 1, 16 do
		local candidate = workspace:Raycast(eye, dir, entityRayParams)
		if not candidate then break end
		local entity, entityHumanoid
		if F.getEntityTarget then entity, entityHumanoid = F.getEntityTarget(candidate.Instance) end
		if entity and entityHumanoid then
			local entityDistance = (candidate.Position - eye).Magnitude
			if entityDistance < blockDistance then
				return candidate.Instance, candidate.Position, candidate.Normal
			end
			break
		end
		-- Skip non-collidable decorative parts only. A collidable obstacle blocks the
		-- entity ray here, matching the normal block ray's line-of-sight behavior.
		if candidate.Instance.CanCollide then break end
		excluded[#excluded + 1] = candidate.Instance
		entityRayParams.FilterDescendantsInstances = excluded
	end
	if not r then return nil, nil, nil end
	return r.Instance, r.Position, r.Normal
end
F.faceFromNormal = function(n)
	if typeof(n) ~= "Vector3" or n.Magnitude = ax and ay >= az then
		return n.Y > 0 and Vector3.yAxis or -Vector3.yAxis
	elseif ax >= az then
		return n.X > 0 and Vector3.xAxis or -Vector3.xAxis
	else
		return n.Z > 0 and Vector3.zAxis or -Vector3.zAxis
	end
end
F.placeBlock = function(handId, hitPart, hitPos, hitNormal)
	if not abilities.mayBuild then return false end
	if not handId or not ITEMS[handId] or not ITEMS[handId].placeable then return false end
	if not hitPos or not hitNormal then return false end
	local face = F.faceFromNormal(hitNormal)
	local base
	if F.isMCBlock(hitPart) then
		base = hitPart:GetAttribute("MCCell") or hitPart.Position
	else
		base = F.snapToGrid(hitPos - face * (BLOCK * 0.5))
	end
	local center = F.snapToGrid(base + face * BLOCK)
	if handId == "ladder" and math.abs(face.Y) > 0.5 then return false end
	local halfW = 0.6 * BLOCK / 2 * 0.9
	local feet = pos
	local playerMin = feet - Vector3.new(halfW, 0.05, halfW)
	local playerMax = feet + Vector3.new(halfW, 1.8 * BLOCK - 0.05, halfW)
	local bmin = center - Vector3.new(BLOCK, BLOCK, BLOCK) * 0.5
	local bmax = center + Vector3.new(BLOCK, BLOCK, BLOCK) * 0.5
	if handId ~= "ladder" and playerMin.X  bmin.X
		and playerMin.Y  bmin.Y
		and playerMin.Z  bmin.Z then
		return false
	end
	local part = createBlock(handId, center, face)
	if not part then return false end
	if not abilities.instabuild then
		local s = slots[36 + selected]
		if s and s.id == handId then
			s.n -= 1
			if s.n = 4 then
		-- Queue a follow-up swing rather than resetting the current one mid-arc.
		swingQueued = true
	end
end
F.startAttack = function()
	if invOpen or F.playerDead then return false end
	F.startSwing()
	if missTime > 0 then return false end
	local part, hitPos, normal = F.pickBlock()
	local entity, entityHumanoid
	if F.getEntityTarget then entity, entityHumanoid = F.getEntityTarget(part) end
	if entity and entityHumanoid then
		F.stopDestroyBlock()
		F.attackEntity(entity, entityHumanoid)
		return true
	end
	part, hitPos, normal = F.resolveBreakTarget(part, hitPos, normal)
	if F.isBreakableTarget(part) then
		F.startDestroyBlock(part, normal, hitPos, normal)
		F.startSwing()
		return true
	end
	F.stopDestroyBlock()
	if abilities.instabuild then
		missTime = 0
	else
		missTime = 10
	end
	return false
end
F.continueAttack = function(down)
	if F.playerDead then return end
	if not down then
		missTime = 0
		F.stopDestroyBlock()
		return
	end
	if missTime > 0 or invOpen then return end
	local part, hitPos, normal = F.pickBlock()
	local entity, entityHumanoid
	if F.getEntityTarget then entity, entityHumanoid = F.getEntityTarget(part) end
	if entity and entityHumanoid then
		F.stopDestroyBlock()
		if F.attackEntity(entity, entityHumanoid) then F.startSwing() end
		return
	end
	part, hitPos, normal = F.resolveBreakTarget(part, hitPos, normal)
	if F.isBreakableTarget(part) then
		if F.continueDestroyBlock(part, normal, hitPos, normal) then F.startSwing() end
	else
		F.stopDestroyBlock()
	end
end
F.startUseItem = function()
	if F.playerDead or invOpen or F.eating then return end
	if rightClickDelay > 0 then return end
	local held = slots[36 + selected]
	local id = held and held.id or nil
	if id == "cooked_beef" or id == "bread" or id == "apple" then
		F.eating = true
		F.eatTime = 0
		F.eatTimePrev = 0
		F.eatItemId = id
		rightClickDelay = 32
		return
	end
	rightClickDelay = 4
	local part, hitPos, normal = F.pickBlock()
	-- Placement uses the hit face and shared grid directly; it must not replace
	-- the target part with voxel chunks as a side effect of placing a block.
	if not normal then return end
	if id and ITEMS[id] and ITEMS[id].placeable then
		F.placeBlock(id, part, hitPos, normal)
		F.startSwing()
	end
end
F.stopUseItem = function()
	useHeld = false
	if F.eating then
		-- Freeze the elapsed phase and let the render-smoothed blend fade out.
		-- Resetting eatTime here made the item/arm jump back to frame zero.
		F.eating = false
		F.eatItemId = nil
		rightClickDelay = 0
	end
end
local gui = Instance.new("ScreenGui")
gui.Name = "MinecraftGui"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
gui.DisplayOrder = 50
gui.Parent = playerGui
-- Separate ScreenGui for the control UI so it always renders above every other UI layer.
local controlsGui = Instance.new("ScreenGui")
controlsGui.Name = "MinecraftControlsGui"
controlsGui.ResetOnSpawn = false
controlsGui.IgnoreGuiInset = true
controlsGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
controlsGui.DisplayOrder = 4000
controlsGui.Parent = playerGui
selectBox.Parent = gui
crackOverlay.Parent = gui
local iconTpl = {}
F.cloneIcon = function(id)
	if not iconTpl[id] then iconTpl[id] = F.buildImage(ICON[id], GS) end
	return iconTpl[id]:Clone()
end
F.textLabel = function(parent, size, z)
	local t = Instance.new("TextLabel")
	t.BackgroundTransparency = 1
	t.Font = Enum.Font.Arcade
	t.TextSize = size
	t.TextXAlignment = Enum.TextXAlignment.Right
	t.TextYAlignment = Enum.TextYAlignment.Bottom
	t.ZIndex = z
	t.Text = ""
	t.Parent = parent
	return t
end
F.newView = function(parent, x, y, z)
	local v = {}
	v.holder = Instance.new("Frame")
	v.holder.BackgroundTransparency = 1
	v.holder.Size = UDim2.fromOffset(16 * GS, 16 * GS)
	v.holder.Position = UDim2.fromOffset(x * GS, y * GS)
	v.holder.ZIndex = z
	v.holder.Parent = parent
	v.shadow = F.textLabel(v.holder, 8 * GS, z + 2)
	v.shadow.TextColor3 = Color3.fromRGB(62, 62, 62)
	v.shadow.Size = UDim2.fromOffset(17 * GS, 17 * GS)
	v.shadow.Position = UDim2.fromOffset(GS, GS)
	v.count = F.textLabel(v.holder, 8 * GS, z + 3)
	v.count.TextColor3 = Color3.new(1, 1, 1)
	v.count.Size = UDim2.fromOffset(17 * GS, 17 * GS)
	return v
end
F.setView = function(v, st)
	if st then
		if v.id ~= st.id then
			if v.icon then v.icon:Destroy() end
			v.icon = F.cloneIcon(st.id)
			v.icon.ZIndex = v.holder.ZIndex + 1
			v.icon.Parent = v.holder
			v.id = st.id
		end
		local t = st.n > 1 and tostring(st.n) or ""
		v.count.Text = t
		v.shadow.Text = t
	else
		if v.icon then v.icon:Destroy() v.icon = nil end
		v.id = nil
		v.count.Text = ""
		v.shadow.Text = ""
	end
end
local hud = Instance.new("Frame")
hud.Name = "MinecraftHUD"
hud.BackgroundTransparency = 1
hud.Size = UDim2.fromScale(1, 1)
hud.Parent = gui

-- Restore the attachment's original hotbar. The previous merge accidentally
-- removed this block while leaving refresh(), selectHotbar(), and the render loop
-- referring to hudViews and selFrame. That nil reference stopped initialization
-- before the GUI and player interactions could finish initializing.
local MAIN_HOTBAR_SCALE = 0.78 -- Shrinks only the main HUD row that holds the grass block and tools.
local hotbar = F.buildImage(IMG.hotbar, GS)
hotbar.Name = "HotbarBackground"
hotbar.Position = UDim2.new(0.5, -91 * GS * MAIN_HOTBAR_SCALE, 1, -23 * GS * MAIN_HOTBAR_SCALE)
hotbar.ZIndex = 1
hotbar.Parent = hud
local mainHotbarScale = Instance.new("UIScale")
mainHotbarScale.Name = "MainHotbarScale"
mainHotbarScale.Scale = MAIN_HOTBAR_SCALE
mainHotbarScale.Parent = hotbar

local selFrame = F.buildImage(IMG.hotbar_sel, GS)
selFrame.Name = "HotbarSelection"
selFrame.ZIndex = 2
selFrame.Parent = hotbar

local hudViews = {}
F.selectHotbar = function(i)
    i = math.clamp(math.floor(i), 0, 8)
    selected = i
end

for i = 0, 8 do
    hudViews[i] = F.newView(hotbar, 3 + i * 20, 3, 3)

    local button = Instance.new("TextButton")
    button.Name = "HotbarSlot" .. i
    button.BackgroundTransparency = 1
    button.Text = ""
    button.AutoButtonColor = false
    button.Active = true
    button.Size = UDim2.fromOffset(20 * GS, 22 * GS)
    button.Position = UDim2.fromOffset(i * 20 * GS, 0)
    button.ZIndex = 20
    button.Parent = hotbar

    local slotIndex = i
    F.track(button.Activated:Connect(function()
        F.selectHotbar(slotIndex)
    end))
    F.track(button.InputBegan:Connect(function(input)
        local inputType = input.UserInputType
        if inputType == Enum.UserInputType.MouseButton1 or inputType == Enum.UserInputType.Touch then
            F.selectHotbar(slotIndex)
        end
    end))
end
F.selectHotbar(8)

-- Creative HUD keeps the hotbar and crosshair but has no XP bar.
local crosshair = F.buildImage(IMG.crosshair, GS)
crosshair.AnchorPoint = Vector2.new(0.5, 0.5)
crosshair.Position = UDim2.fromScale(0.5, 0.5)
crosshair.Parent = hud
local nameLabel = Instance.new("TextLabel")
nameLabel.BackgroundTransparency = 1
nameLabel.Font = Enum.Font.Arcade
nameLabel.TextSize = 8 * GS
nameLabel.TextColor3 = Color3.new(1, 1, 1)
nameLabel.TextStrokeTransparency = 0.3
nameLabel.AnchorPoint = Vector2.new(0.5, 1)
nameLabel.Position = UDim2.new(0.5, 0, 1, -(23 + 22) * GS * MAIN_HOTBAR_SCALE)
nameLabel.Size = UDim2.fromOffset(200 * GS, 10 * GS)
nameLabel.Text = ""
nameLabel.Parent = hud
local nameUntil, lastSel = 0, -1
invOpen = false
local invDim = Instance.new("TextButton")
invDim.Text = ""
invDim.AutoButtonColor = false
invDim.BackgroundColor3 = Color3.new(0, 0, 0)
invDim.BackgroundTransparency = 0.55
invDim.BorderSizePixel = 0
invDim.Size = UDim2.fromScale(1, 1)
invDim.Visible = false
invDim.Parent = gui
-- Keep the original inventory texture intact: the black player-preview rectangle,
-- armor-slot art, crafting grid, arrow, and result slot all remain visible. No 2D Steve
-- sprite is drawn over the preview area.
panel = F.buildImage(IMG.inventory, GS)
panel.Name = "SecondaryInventoryPanel"
panel.AnchorPoint = Vector2.new(0.5, 0.5)
panel.Position = UDim2.fromScale(0.5, 0.5)
panel.Active = true
panel.ZIndex = 30
panel.Parent = invDim
for _, child in ipairs(panel:GetDescendants()) do
	if child:IsA("GuiObject") then child.ZIndex = 31 end
end
local inventoryScale = Instance.new("UIScale")
inventoryScale.Scale = 0.55
inventoryScale.Parent = panel
local layout = {}
-- Vanilla 1.12.1 player-container positions on the unmodified 176x166 background.
layout[0] = { 152, 28 } -- crafting output
layout[1] = { 96, 17 }
layout[2] = { 114, 17 }
layout[3] = { 96, 35 }
layout[4] = { 114, 35 }
-- Armor slots are drawn by the original background; no 2D player preview is drawn.
layout[5] = { 8, 8 }   -- head
layout[6] = { 8, 26 }  -- chest
layout[7] = { 8, 44 }  -- legs
layout[8] = { 8, 62 }  -- feet
for r = 0, 2 do for c = 0, 8 do layout[9 + c + r * 9] = { 8 + c * 18, 84 + r * 18 } end end
for c = 0, 8 do layout[36 + c] = { 8 + c * 18, 142 } end
layout[45] = { 77, 62 }
local views = {}
local slotButtons = {}
local hover = nil
local highlight = Instance.new("Frame")
highlight.BackgroundColor3 = Color3.new(1, 1, 1)
highlight.BackgroundTransparency = 0.5
highlight.BorderSizePixel = 0
highlight.Size = UDim2.fromOffset(16 * GS, 16 * GS)
highlight.ZIndex = 38
highlight.Visible = false
highlight.Parent = panel
local carriedView = F.newView(gui, 0, 0, 30)
carriedView.holder.Visible = false
local tooltip = Instance.new("TextLabel")
tooltip.BackgroundColor3 = Color3.fromRGB(16, 0, 16)
tooltip.BackgroundTransparency = 0.06
tooltip.BorderSizePixel = 0
tooltip.Font = Enum.Font.Arcade
tooltip.TextSize = 8 * GS
tooltip.TextColor3 = Color3.new(1, 1, 1)
tooltip.ZIndex = 40
tooltip.Visible = false
tooltip.Size = UDim2.fromOffset(100 * GS, 12 * GS)
tooltip.Parent = gui
local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(40, 0, 77)
stroke.Thickness = GS
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
stroke.Parent = tooltip
refresh = function()
	for i = 0, 45 do
		if views[i] then F.setView(views[i], slots[i]) end
	end
	for i = 0, 8 do
        if hudViews[i] then F.setView(hudViews[i], slots[36 + i]) end
    end
	F.setView(carriedView, carried)
	carriedView.holder.Visible = invOpen and carried ~= nil
	if hover ~= nil and slots[hover] and not carried then
		tooltip.Text = ITEMS[slots[hover].id].name
		tooltip.Size = UDim2.fromOffset((#tooltip.Text * 6 + 8) * GS, 12 * GS)
		tooltip.Visible = invOpen
	else
		tooltip.Visible = false
	end
end
F.quickMove = function(idx)
	local s = slots[idx]
	if not s then return end
	if (idx >= 1 and idx = 9 and idx = 36 and idx <= 44 then
		F.insertStack(s, 9, 35)
	end
	if s and s.n <= 0 then slots[idx] = nil end
	F.updateCraft()
end
F.resultClick = function(shift)
	local r = slots[0]
	if not r then return end
	if shift then
		for _ = 1, 64 do
			r = slots[0]
			if not r then break end
			if not F.canFit(r.id, r.n, 9, 44) then break end
			F.insertStack({ id = r.id, n = r.n }, 9, 44)
			F.consumeCraft()
		end
	else
		if carried == nil then
			carried = { id = r.id, n = r.n }
			F.consumeCraft()
		elseif carried.id == r.id and carried.n + r.n  1 then
			local mv = math.min(F.maxOf(s.id) - s.n, carried.n)
			s.n += mv carried.n -= mv
			if carried.n <= 0 then carried = nil end
		elseif F.canPlace(idx, carried) then
			slots[idx], carried = carried, s
		end
	else
		if carried == nil then
			if s then
				local take = math.ceil(s.n / 2)
				carried = { id = s.id, n = take }
				s.n -= take
				if s.n <= 0 then slots[idx] = nil end
			end
		elseif s == nil then
			if F.canPlace(idx, carried) then
				slots[idx] = { id = carried.id, n = 1 }
				carried.n -= 1
			end
		elseif s.id == carried.id and s.n < F.maxOf(s.id) then
			s.n += 1 carried.n -= 1
		elseif F.canPlace(idx, carried) then
			slots[idx], carried = carried, s
		end
		if carried and carried.n  0 then
			local long = os.clock() - touchStart > 0.35
			local endPos = Vector2.new(input.Position.X, input.Position.Y)
			if F.touchDragging then
				local hitDelete = false
				local deleteButton = F.deleteButton
				if deleteButton and deleteButton.Visible then
					local ap, as = deleteButton.AbsolutePosition, deleteButton.AbsoluteSize
					hitDelete = endPos.X >= ap.X and endPos.X = ap.Y and endPos.Y = ap.X and endPos.X = ap.Y and endPos.Y <= ap.Y + as.Y then
								targetSlot = targetIdx
								break
							end
						end
					end
					if targetSlot ~= nil then F.clickSlot(targetSlot, 1, false) end
				end
			else
				F.clickSlot(idx, long and 2 or 1, false)
			end
			touchStart = 0
			F.activeTouchSlot = nil
			F.touchDragStartPos = nil
			F.touchDragCanPick = false
			F.touchDragging = false
			hover = nil
			highlight.Visible = false
			refresh()
		end
	end))
end
F.track(invDim.InputBegan:Connect(function(input)
	if not invOpen or carried == nil then return end
	local t = input.UserInputType
	if t == Enum.UserInputType.MouseButton1 or t == Enum.UserInputType.Touch then
		carried = nil refresh()
	elseif t == Enum.UserInputType.MouseButton2 then
		carried.n -= 1
		if carried.n "
cpClose.ZIndex = 22
cpClose.Visible = true
cpClose.Parent = creativePlaceholder

local inventoryPageToggle = nil
creativeTabButton = Instance.new("TextButton")
creativeTabButton.Name = "SwitchToCreativeInventory"
creativeTabButton.Position = UDim2.fromOffset(112 * GS, 5 * GS)
creativeTabButton.Size = UDim2.fromOffset(59 * GS, 12 * GS)
creativeTabButton.BackgroundColor3 = Color3.fromRGB(80, 110, 80)
creativeTabButton.BorderSizePixel = 1
creativeTabButton.BorderColor3 = Color3.fromRGB(45, 45, 45)
creativeTabButton.Font = Enum.Font.Code
creativeTabButton.TextSize = 6 * GS
creativeTabButton.TextColor3 = Color3.new(1, 1, 1)
creativeTabButton.Text = "CREATIVE >"
creativeTabButton.ZIndex = 25
creativeTabButton.Visible = false
creativeTabButton.Parent = panel
F.track(cpClose.Activated:Connect(function()
	if invOpen then F.setInventoryPage("survival") end
end))
F.track(creativeTabButton.Activated:Connect(function()
	if invOpen and creative then F.setInventoryPage("creative") end
end))
F.updateInventoryPage = function()
	local page = inventoryPage
	local showCreative = invOpen and creative and page == "creative"
	local showSurvival = invOpen and page == "survival"
	creativePlaceholderOpen = showCreative
	creativePlaceholder.Visible = showCreative
	panel.Visible = showSurvival
	if F.deleteButton then F.deleteButton.Visible = showSurvival end
	cpClose.Visible = false
	creativeTabButton.Visible = false
	if inventoryPageToggle then
		inventoryPageToggle.Visible = invOpen and creative
		inventoryPageToggle.Text = ""
	end
	if showCreative then
		creativePlaceholder.ZIndex = 50
	else
		creativePlaceholder.ZIndex = 20
	end
	if F.updateHudVisibility then F.updateHudVisibility() end
end
F.setInventoryPage = function(page)
	if page ~= "creative" and page ~= "survival" then return end
	if page == "creative" and not creative then return end
	inventoryPage = page
	hover = nil
	highlight.Visible = false
	if F.updateInventoryPage then F.updateInventoryPage() end
	refresh()
end
inventoryPageToggle = Instance.new("TextButton")
inventoryPageToggle.Name = "InventoryPageToggle"
inventoryPageToggle.AnchorPoint = Vector2.new(0, 0)
-- A single toggle outside the panel's lower-right corner, so it does not cover slots.
inventoryPageToggle.Position = UDim2.new(0.5, 46 * GS, 0.5, 45 * GS)
inventoryPageToggle.Size = UDim2.fromOffset(18 * GS, 18 * GS)
inventoryPageToggle.BackgroundColor3 = Color3.fromRGB(198, 198, 198)
inventoryPageToggle.BorderSizePixel = 1
inventoryPageToggle.BorderColor3 = Color3.fromRGB(55, 55, 55)
inventoryPageToggle.Text = ""
inventoryPageToggle.ZIndex = 75
inventoryPageToggle.Visible = false
inventoryPageToggle.Parent = invDim
-- Pixel-painted vanilla-style chest face: no external image or asset dependency.
local chestPixelFolder = Instance.new("Frame")
chestPixelFolder.Name = "PixelChestIcon"
chestPixelFolder.BackgroundTransparency = 1
chestPixelFolder.Position = UDim2.fromOffset(GS, GS)
chestPixelFolder.Size = UDim2.fromOffset(16 * GS, 16 * GS)
chestPixelFolder.Active = false
chestPixelFolder.ZIndex = 76
chestPixelFolder.Parent = inventoryPageToggle
-- A tiny isometric, blocky chest icon, using the vanilla inventory gray behind it.
local chestPalette = {
	outline = Color3.fromRGB(52, 31, 17),
	deep = Color3.fromRGB(91, 49, 22),
	wood = Color3.fromRGB(148, 86, 38),
	light = Color3.fromRGB(190, 126, 61),
	top = Color3.fromRGB(214, 157, 82),
	glint = Color3.fromRGB(235, 190, 119),
	latch = Color3.fromRGB(127, 127, 127),
	metalLight = Color3.fromRGB(191, 191, 191),
}
local chestPixels = {}
for y = 0, 15 do chestPixels[y] = {} end
local function chestPixel(x, y, color)
	if x >= 0 and x = 0 and y = 7 and x <= 9 then color = "glint" end
		if y == 4 and x <= 5 then color = "light" end
		chestPixel(x, y, color)
	end
end
-- Front panel.
for y = 5, 13 do
	for x = 2, 12 do
		local color
		if y == 5 or y == 13 or x == 2 or x == 12 then
			color = "outline"
		elseif y == 6 then
			color = "deep"
		elseif y == 7 or y == 8 then
			color = (x <= 4) and "light" or "wood"
		elseif y == 9 or y == 10 then
			color = (x <= 4) and "wood" or "light"
		elseif y == 11 or y == 12 then
			color = (x <= 4) and "deep" or "wood"
		end
		chestPixel(x, y, color)
	end
end
-- Darker right side gives the chest its Minecraft inventory-item perspective.
for y = 5, 12 do
	for x = 12, 14 do
		local color
		if x == 12 or x == 14 or y == 5 or y == 12 then
			color = "outline"
		elseif x == 13 then
			color = (y <= 8) and "deep" or "wood"
		end
		chestPixel(x, y, color)
	end
end
-- Gold latch and lid seam.
for x = 3, 12 do chestPixel(x, 6, "outline") end
chestPixel(7, 7, "outline")
chestPixel(8, 7, "latch")
chestPixel(7, 8, "latch")
chestPixel(8, 8, "metalLight")
chestPixel(7, 9, "latch")
chestPixel(8, 9, "outline")
for x = 3, 11 do
	if x % 3 == 0 then chestPixel(x, 11, "light") end
end
for y = 0, 15 do
	for x = 0, 15 do
		local shade = chestPixels[y][x]
		if shade then
			local pixel = Instance.new("Frame")
			pixel.BorderSizePixel = 0
			pixel.BackgroundColor3 = chestPalette[shade]
			pixel.Position = UDim2.fromOffset(x * GS, y * GS)
			pixel.Size = UDim2.fromOffset(GS, GS)
			pixel.ZIndex = 77
			pixel.Parent = chestPixelFolder
		end
	end
end
F.track(inventoryPageToggle.Activated:Connect(function()
	if not invOpen or not creative then return end
	F.setInventoryPage(inventoryPage == "creative" and "survival" or "creative")
end))
-- Raise the creative-page controls above the unchanged survival-page panel.
for _, child in ipairs(creativePlaceholder:GetDescendants()) do
	if child:IsA("GuiObject") then child.ZIndex = child.ZIndex + 40 end
end
creativePlaceholder.ZIndex = 50
local dropInventoryButton = Instance.new("TextButton")
dropInventoryButton.Name = "DropMainInventoryItem"
dropInventoryButton.AnchorPoint = Vector2.new(0, 1)
-- This button belongs to the main HUD hotbar, not the creative or survival inventory screen.
dropInventoryButton.Position = UDim2.new(0.5, 91 * GS * MAIN_HOTBAR_SCALE + 3 * GS, 1, -1 * GS * MAIN_HOTBAR_SCALE)
dropInventoryButton.Size = UDim2.fromOffset(34 * GS * MAIN_HOTBAR_SCALE, 18 * GS * MAIN_HOTBAR_SCALE)
dropInventoryButton.BackgroundColor3 = Color3.fromRGB(48, 48, 48)
dropInventoryButton.BackgroundTransparency = 0
dropInventoryButton.BorderSizePixel = 0
dropInventoryButton.Font = Enum.Font.Arcade
dropInventoryButton.Text = "DROP"
dropInventoryButton.TextSize = 7 * GS
dropInventoryButton.TextColor3 = Color3.new(1, 1, 1)
dropInventoryButton.AutoButtonColor = true
dropInventoryButton.ZIndex = 25
dropInventoryButton.Parent = controlsGui
F.track(dropInventoryButton.Activated:Connect(function()
	if F.dropInventorySelection then
		local all = UIS:IsKeyDown(Enum.KeyCode.LeftShift) or UIS:IsKeyDown(Enum.KeyCode.RightShift)
		F.dropInventorySelection(all)
	end
end))

-- The creative catalog stays visibly unfinished and cannot be interacted with yet.
local comingSoonOverlay = Instance.new("Frame")
comingSoonOverlay.Name = "CreativeComingSoonOverlay"
comingSoonOverlay.BackgroundColor3 = Color3.fromRGB(18, 18, 18)
comingSoonOverlay.BackgroundTransparency = 0.35
comingSoonOverlay.BorderSizePixel = 0
comingSoonOverlay.Position = UDim2.fromScale(0, 0)
comingSoonOverlay.Size = UDim2.fromScale(1, 1)
comingSoonOverlay.Active = true
comingSoonOverlay.ZIndex = 120
comingSoonOverlay.Parent = creativePlaceholder
local comingSoonText = Instance.new("TextLabel")
comingSoonText.Name = "ComingSoonText"
comingSoonText.BackgroundTransparency = 1
comingSoonText.AnchorPoint = Vector2.new(0.5, 0.5)
comingSoonText.Position = UDim2.fromScale(0.5, 0.5)
comingSoonText.Size = UDim2.new(1, -10 * GS, 0, 28 * GS)
comingSoonText.Font = Enum.Font.Arcade
comingSoonText.Text = "Coming soon"
comingSoonText.TextColor3 = Color3.fromRGB(255, 255, 255)
comingSoonText.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
comingSoonText.TextStrokeTransparency = 0.15
comingSoonText.TextScaled = true
comingSoonText.ZIndex = 121
comingSoonText.Parent = comingSoonOverlay

---------------------------------------------------------------------
-- POJAVLAUNCHER-STYLE TOUCH HUD: TOP BAR, D-PAD, CHAT AND DEBUG
---------------------------------------------------------------------
local topToolbar = Instance.new("Frame")
topToolbar.Name = "PojavTouchToolbar"
topToolbar.AnchorPoint = Vector2.new(0.5, 0)
topToolbar.Position = UDim2.new(0.5, 0, 0, 3)
topToolbar.Size = UDim2.fromOffset(304, 31)
topToolbar.BackgroundTransparency = 1
topToolbar.Visible = UIS.TouchEnabled
topToolbar.ZIndex = 10
topToolbar.Parent = controlsGui
local pojavButtons = {}
F.makePojavTopButton = function(label, x, width, callback, alwaysVisible)
	local b = Instance.new("TextButton")
	b.Name = "Pojav_" .. label:gsub("[^%w]", "")
	b.Position = UDim2.fromOffset(x, 1)
	b.Size = UDim2.fromOffset(width, 27)
	b.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
	b.BackgroundTransparency = 0.18
	b.BorderSizePixel = 0
	b.Text = label
	b.TextColor3 = Color3.fromRGB(245, 247, 250)
	b.TextSize = 10
	b.Font = Enum.Font.Code
	b.AutoButtonColor = false
	b.ZIndex = 11
	b.Parent = topToolbar
	F.track(b.Activated:Connect(callback))
	pojavButtons[#pojavButtons + 1] = {button = b, always = alwaysVisible == true}
	return b
end
local debugEnabled = false
F.updateHudVisibility = function()
	hud.Visible = hudVisible
	if debugPanel then debugPanel.Visible = hudVisible and debugEnabled end
	if topToolbar then
		-- Touch controls sit underneath inventory/chat overlays and never cover the inventory window.
		topToolbar.Visible = UIS.TouchEnabled
		for _, entry in ipairs(pojavButtons) do
			entry.button.Visible = (entry.always or hudVisible)
		end
	end
	for _, b in ipairs(touchButtons) do b.Visible = hudVisible end
	if mobileDpad then mobileDpad.Visible = hudVisible and UIS.TouchEnabled end
	if dropInventoryButton then dropInventoryButton.Visible = hudVisible end
	if chatPanel then
		chatPanel.Visible = hudVisible
		if chatInput then chatInput.Visible = hudVisible and chatOpen end
	end
end
F.toggleDebug = function()
	debugEnabled = not debugEnabled
	if debugPanel then
		debugPanel:SetAttribute("MCEnabled", debugEnabled)
		debugPanel.Visible = debugEnabled and hudVisible
	end
end

-- Debug readout is intentionally small and Pojav-like rather than a new full HUD.
debugPanel = Instance.new("Frame")
debugPanel.Name = "PojavDebugOverlay"
debugPanel.Position = UDim2.new(0, 8, 0, 38)
debugPanel.Size = UDim2.new(1, -16, 0, 112)
debugPanel.BackgroundColor3 = Color3.new(0, 0, 0)
debugPanel.BackgroundTransparency = 0.35
debugPanel.BorderSizePixel = 0
debugPanel.Visible = false
debugPanel.ZIndex = 15
debugPanel.Parent = gui
debugText = Instance.new("TextLabel")
debugText.Name = "DebugText"
debugText.BackgroundTransparency = 1
debugText.Position = UDim2.fromOffset(6, 4)
debugText.Size = UDim2.new(1, -12, 1, -8)
debugText.Font = Enum.Font.Code
debugText.TextSize = 12
debugText.TextColor3 = Color3.new(1, 1, 1)
debugText.TextXAlignment = Enum.TextXAlignment.Left
debugText.TextYAlignment = Enum.TextYAlignment.Top
debugText.TextWrapped = false
debugText.ZIndex = 16
debugText.Parent = debugPanel

chatPanel = Instance.new("Frame")
chatPanel.Name = "JavaLocalChat"
chatPanel.Position = UDim2.new(0, 0, 1, -188)
chatPanel.Size = UDim2.new(1, 0, 0, 160)
chatPanel.BackgroundTransparency = 1
chatPanel.BorderSizePixel = 0
chatPanel.Visible = true
chatPanel.ZIndex = 90
chatPanel.Parent = gui
chatRowsFrame = Instance.new("Frame")
chatRowsFrame.Name = "ChatLines"
chatRowsFrame.Position = UDim2.fromOffset(0, 0)
chatRowsFrame.Size = UDim2.new(1, 0, 1, -30)
chatRowsFrame.BackgroundTransparency = 1
chatRowsFrame.BorderSizePixel = 0
chatRowsFrame.ClipsDescendants = true
chatRowsFrame.ZIndex = 90
chatRowsFrame.Parent = chatPanel
local chatRowsLayout = Instance.new("UIListLayout")
chatRowsLayout.Name = "BottomAlignedChatLayout"
chatRowsLayout.FillDirection = Enum.FillDirection.Vertical
chatRowsLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left
chatRowsLayout.VerticalAlignment = Enum.VerticalAlignment.Bottom
chatRowsLayout.SortOrder = Enum.SortOrder.LayoutOrder
chatRowsLayout.Padding = UDim.new(0, 0)
chatRowsLayout.Parent = chatRowsFrame
-- The row frame replaces the old large opaque chat rectangle. Each line receives
-- its own translucent black background, like Java Edition's HUD chat.
chatHistoryLabel = chatRowsFrame
chatInput = Instance.new("TextBox")
chatInput.Name = "ChatInput"
chatInput.Position = UDim2.new(0, 0, 1, -27)
chatInput.Size = UDim2.new(1, 0, 0, 25)
chatInput.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
chatInput.BackgroundTransparency = 0.56
chatInput.BorderSizePixel = 0
chatInput.BorderColor3 = Color3.fromRGB(80, 80, 80)
chatInput.TextColor3 = Color3.fromRGB(255, 255, 255)
chatInput.PlaceholderColor3 = Color3.fromRGB(190, 190, 190)
chatInput.PlaceholderText = ""
chatInput.Text = ""
chatInput.ClearTextOnFocus = false
chatInput.Font = Enum.Font.Arcade
chatInput.TextSize = 11
chatInput.TextXAlignment = Enum.TextXAlignment.Left
chatInput.Visible = false
chatInput.ZIndex = 92
chatInput.Parent = chatPanel
local chatEntries = {}
local function escapeRichText(value)
	return tostring(value):gsub("&", "&"):gsub("", ">"):gsub('"', """):gsub("'", "&apos;")
end
local function renderChatEntries()
	for _, child in ipairs(chatRowsFrame:GetChildren()) do
		if child:IsA("TextLabel") then child:Destroy() end
	end
	for index, entry in ipairs(chatEntries) do
		local row = Instance.new("TextLabel")
		row.Name = "ChatLine" .. tostring(index)
		row.LayoutOrder = index
		row.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
		row.BackgroundTransparency = 0.56
		row.BorderSizePixel = 0
		row.Size = UDim2.new(1, 0, 0, 14)
		row.AutomaticSize = Enum.AutomaticSize.Y
		row.Font = Enum.Font.Arcade
		row.TextSize = 10
		row.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
		row.TextStrokeTransparency = 0.60
		row:SetAttribute("MCChatCreatedAt", entry.time or os.clock())
		row.TextColor3 = Color3.fromRGB(255, 255, 255)
		row.TextXAlignment = Enum.TextXAlignment.Left
		row.TextYAlignment = Enum.TextYAlignment.Center
		row.TextWrapped = true
		row.RichText = true
		row.Text = entry.color and ('' .. escapeRichText(entry.text) .. '') or escapeRichText(entry.text)
		row.ZIndex = 91
		row.Parent = chatRowsFrame
	end
end
F.appendChatLine = function(line, color)
	line = tostring(line or "")
	if not color and (line:match(" joined the game$") or line:match(" left the game$")) then
		color = "#FFFF55" -- Java formatting code §e (yellow).
	end
	table.insert(chatEntries, { text = line, color = color, time = os.clock() })
	while #chatEntries > 8 do table.remove(chatEntries, 1) end
	renderChatEntries()
end
local chatFadeAccumulator = 0
F.track(RunService.Heartbeat:Connect(function(dt)
	chatFadeAccumulator += dt
	if chatFadeAccumulator < 0.1 then return end
	chatFadeAccumulator = 0
	if not chatRowsFrame or not chatRowsFrame.Parent then return end
	local now = os.clock()
	for _, row in ipairs(chatRowsFrame:GetChildren()) do
		if row:IsA("TextLabel") then
			local createdAt = row:GetAttribute("MCChatCreatedAt") or now
			local age = math.max(0, now - createdAt)
			if chatOpen then
				row.Visible = true
				row.TextTransparency = 0
				row.BackgroundTransparency = 0.56
            else
                local fresh = age < 10
                row.Visible = fresh
                if fresh then
                    row.AutomaticSize = Enum.AutomaticSize.Y
                    local fade = age <= 8 and 1 or math.clamp((10 - age) / 2, 0, 1)
                    row.TextTransparency = 1 - fade
                    row.BackgroundTransparency = 1 - 0.44 * fade
                else
                    row.AutomaticSize = Enum.AutomaticSize.None
                    row.Size = UDim2.new(1, 0, 0, 0)
                    row.TextTransparency = 1
                    row.BackgroundTransparency = 1
                end
            end
		end
	end
end))
-- Announce the players already in this server, then watch future join/leave events.
for _, existingPlayer in ipairs(Players:GetPlayers()) do
	if existingPlayer ~= lp then
		F.appendChatLine(tostring(existingPlayer.DisplayName or existingPlayer.Name) .. " joined the game")
	end
end
F.track(Players.PlayerAdded:Connect(function(joiningPlayer)
	if joiningPlayer ~= lp then
		F.appendChatLine(tostring(joiningPlayer.DisplayName or joiningPlayer.Name) .. " joined the game")
	end
end))
F.track(Players.PlayerRemoving:Connect(function(leavingPlayer)
	if leavingPlayer ~= lp then
		F.appendChatLine(tostring(leavingPlayer.DisplayName or leavingPlayer.Name) .. " left the game")
	end
end))
F.setChatOpen = function(open, focus)
	chatOpen = open == true
	renderChatEntries()
	chatPanel.Visible = hudVisible
	chatInput.Visible = hudVisible and chatOpen
	if F.applyCameraMode then F.applyCameraMode() end
	if open and focus then chatInput:CaptureFocus() else chatInput:ReleaseFocus() end
	if open then
		attackHeld, useHeld, touchJumpHeld = false, false, false
		if F.stopUseItem then F.stopUseItem() end
		F.stopDestroyBlock()
	end
end
F.executeLocalCommand = function(raw)
	local message = tostring(raw or ""):gsub("^%s+", ""):gsub("%s+$", "")
	if message == "" then return end
	chatInput.Text = ""
	if message:sub(1, 1) ~= "/" then F.appendChatLine(" " .. message) return end
	local args = {}
	for word in message:gmatch("%S+") do args[#args + 1] = word end
	local cmd = (args[1] or ""):lower()
	if cmd == "/help" then
		F.appendChatLine("/help /fly /gamemode creative|survival /tp x y z /time set day|night")
	elseif cmd == "/fly" then
		if abilities.mayfly then abilities.flying = not abilities.flying F.appendChatLine("Flight: " .. (abilities.flying and "enabled" or "disabled")) else F.appendChatLine("Flight is Creative-only.") end
	elseif cmd == "/gamemode" then
		local mode = (args[2] or ""):lower()
		if mode == "creative" then F.setGameMode(true) elseif mode == "survival" then F.setGameMode(false) else F.appendChatLine("Usage: /gamemode creative|survival") end
		if creativeBtn then F.paintToggle(creativeBtn, creative); creativeBtn.Text = creative and "Creative" or "Survival" end
		if flyBtn then flyBtn.Visible = creative; F.paintToggle(flyBtn, abilities.flying) end
		F.appendChatLine("Gamemode: " .. (creative and "Creative" or "Survival"))
	elseif cmd == "/tp" or cmd == "/teleport" then
		local x, y, z = tonumber(args[2]), tonumber(args[3]), tonumber(args[4])
		if x and y and z then
			pos = Vector3.new(x * BLOCK, y * BLOCK, z * BLOCK)
			prevPos = pos
			vel = Vector3.zero
			F.appendChatLine(string.format("Teleported to %.1f %.1f %.1f", x, y, z))
		else F.appendChatLine("Usage: /tp x y z") end
	elseif cmd == "/time" and (args[2] or ""):lower() == "set" then
		local value = (args[3] or ""):lower()
		if value == "day" then Lighting.ClockTime = 12; F.appendChatLine("Set local time to day.")
		elseif value == "night" then Lighting.ClockTime = 0; F.appendChatLine("Set local time to night.")
		else F.appendChatLine("Usage: /time set day|night") end
	else
		F.appendChatLine("Unknown command. Use /help.")
	end
end
F.track(chatInput.FocusLost:Connect(function(enterPressed)
	if enterPressed then F.executeLocalCommand(chatInput.Text); F.setChatOpen(false, false) end
end))

F.makePojavTopButton("DEBUG", 0, 52, F.toggleDebug)
F.makePojavTopButton("CHAT", 56, 46, function() local open = not chatOpen; F.setChatOpen(open, open) end)
F.makePojavTopButton("KEYBOARD", 106, 65, function() F.setChatOpen(true, true) end)
F.makePojavTopButton("GUI", 175, 43, function()
	hudVisible = not hudVisible
	F.updateHudVisibility()
end, true)
cameraViewButton = F.makePojavTopButton("1ST", 221, 81, function()
	viewMode = (viewMode + 1) % 3
	if F.applyCameraMode then F.applyCameraMode() end
end, true)

-- Place directional buttons at bottom-left; these provide movement while touch
-- camera look remains on the right side of the screen.
if UIS.TouchEnabled then
	mobileDpad = Instance.new("Frame")
	mobileDpad.Name = "PojavDirectionalPad"
	mobileDpad.BackgroundTransparency = 1
	mobileDpad.Size = UDim2.fromOffset(114, 114)
	mobileDpad.Position = UDim2.new(0, 10, 1, -184)
	mobileDpad.ZIndex = 10
	mobileDpad.Parent = controlsGui
	local function makeDpadButton(name, symbol, x, y, direction)
		local b = Instance.new("TextButton")
		b.Name = "Move_" .. name
		b.Position = UDim2.fromOffset(x, y)
		b.Size = UDim2.fromOffset(36, 36)
		b.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
		b.BackgroundTransparency = 0.18
		b.BorderSizePixel = 0
		b.AutoButtonColor = false
		b.TextColor3 = Color3.fromRGB(248, 249, 252)
		b.TextSize = 19
        b.Font = Enum.Font.Code
        b.Text = symbol
		b.ZIndex = 11
		b.Parent = mobileDpad
		local function begin()
			if direction == "Forward" then
				local now = os.clock()
				if now - lastMobileForwardTap = 1 then break end
			RunService.Heartbeat:Wait()
		end
		-- Remove the dead NPC/player model after its death pose, rather than leaving
		-- an invisible humanoid or an empty model behind in this client's world.
		if entity and entity.Parent then pcall(function() entity:Destroy() end) end
		if deathHighlight and deathHighlight.Parent then pcall(function() deathHighlight:Destroy() end) end
	end)
end
F.attackEntity = function(entity, targetHumanoid)
	if F.playerDead or not (entity and entity.Parent and targetHumanoid and targetHumanoid.Parent) then return false end
	if F.entityAttackCooldown > 0 then return false end
	local state = F.getEntityState(entity, targetHumanoid)
	if state.dead or targetHumanoid.Health <= 0 or state.health <= 0 then
		if not state.dead and state.health <= 0 then F.beginEntityDeath(entity, targetHumanoid, state, nil) end
		return false
	end
	local hitHighlight = F.makeEntityHighlight(entity)
	local targetStack = slots[36 + selected]
	local heldId = targetStack and targetStack.id or nil
	local damageByItem = {
		diamond_sword = 7,
		diamond_axe = 6,
		diamond_pickaxe = 5,
		diamond_shovel = 4,
		stick = 1,
	}
	local damage = damageByItem[heldId] or 1
	state.health = math.max(0, state.health - damage)
	state.lastHitBy = tostring(lp.DisplayName or lp.Name)
	state.lastHitAt = os.clock()
	F.entityAttackCooldown = 6
	-- Mirror the translated Minecraft health back to this client's Humanoid copy.
	-- Set nativeHealth first so HealthChanged does not count our own write twice.
	state.nativeHealth = math.clamp(state.health * ENTITY_HEALTH_SCALE, 0, targetHumanoid.MaxHealth)
	if state.health  1 then mobileMoveVector = mobileMoveVector.Unit end
end
F.getMove = function()
	local move = Vector3.zero
	if controls then
		local ok, v = pcall(function() return controls:GetMoveVector() end)
		if ok and typeof(v) == "Vector3" then move = v end
	end
	if move.Magnitude  1 then move = move.Unit end
	return move
end
F.hideOneAvatarObject = function(d)
	if d:IsA("BasePart") then d.LocalTransparencyModifier = 1
	elseif d:IsA("Decal") then d.Transparency = 1 end
end
F.hideCharacterLocally = function(c)
	F.hiddenAvatarObjects = {}
	for _, d in ipairs(c:GetDescendants()) do
		if d:IsA("BasePart") or d:IsA("Decal") then
			F.hiddenAvatarObjects[#F.hiddenAvatarObjects + 1] = d
			F.hideOneAvatarObject(d)
		end
	end
	F.track(c.DescendantAdded:Connect(function(d)
		if char ~= c then return end
		if d:IsA("BasePart") or d:IsA("Decal") then
			F.hiddenAvatarObjects[#F.hiddenAvatarObjects + 1] = d
			F.hideOneAvatarObject(d)
		end
	end))
end
F.bind = function(c)
	F.hideDeathScreen()
	char = c
	hum = c:WaitForChild("Humanoid")
	F.observeHumanoid(hum)
	F.oldCameraOffset = hum.CameraOffset
	cameraEyeH = 1.62
	eyeH = 1.62
	hum.CameraOffset = Vector3.zero
	hrp = c:WaitForChild("HumanoidRootPart")
	if UIS.TouchEnabled and controls then pcall(function() controls:Disable() end) end
	local off = (hum.RigType == Enum.HumanoidRigType.R6) and 3 or (hrp.Size.Y / 2 + hum.HipHeight)
	rootVisualOffset = off
	pos = hrp.Position - Vector3.new(0, off, 0) + Vector3.new(0, 0.05, 0)
	prevPos, spawnPos, vel = pos, pos, Vector3.zero
	onGround = false
	yaw = math.atan2(-hrp.CFrame.LookVector.X, -hrp.CFrame.LookVector.Z)
	bodyYaw, prevBodyYaw = yaw, yaw
	hrp.Anchored = false
	hum.PlatformStand = true
	hum.WalkSpeed = 0
	hum.AutoRotate = false
	hum.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
	rp.FilterDescendantsInstances = { char, model }
	F.hideCharacterLocally(c)
	if F.applyCameraMode then F.applyCameraMode() end
end
F.applyCameraMode = function()
	camera = workspace.CurrentCamera or camera
	if not camera then return end
	camera.CameraType = Enum.CameraType.Custom
	if hum and hum.Parent then camera.CameraSubject = hum end
	local uiOpen = invOpen or chatOpen
	if uiOpen then
		-- Keep the native camera, but unlock the cursor while an interface is open.
		lp.CameraMode = Enum.CameraMode.Classic
		lp.CameraMinZoomDistance = oldCameraMinZoom
		lp.CameraMaxZoomDistance = oldCameraMaxZoom
		UIS.MouseBehavior = Enum.MouseBehavior.Default
		UIS.MouseIconEnabled = true
	elseif viewMode == 0 then
		lp.CameraMode = Enum.CameraMode.LockFirstPerson
		lp.CameraMinZoomDistance = oldCameraMinZoom
		lp.CameraMaxZoomDistance = oldCameraMaxZoom
	else
		lp.CameraMode = Enum.CameraMode.Classic
		-- Keep both third-person views at one fixed native-camera distance.
		lp.CameraMinZoomDistance = 12
		lp.CameraMaxZoomDistance = 12
	end
	if cameraViewButton then
		cameraViewButton.Text = ({[0] = "1ST", [1] = "3RD BACK", [2] = "3RD FRONT"})[viewMode] or "1ST"
	end
end
local W = 0.6 * BLOCK
local STEP_HEIGHT = 0.6 * BLOCK
local COLLISION_SKIN = 0.025
F.cast = function(p, h, d)
	local size = Vector3.new(W - 0.02, h * BLOCK - 0.02, W - 0.02)
	return workspace:Blockcast(CFrame.new(p + Vector3.new(0, h * BLOCK / 2, 0)), size, d, rp)
end
F.moveAxis = function(p, axis, amount, h)
	if math.abs(amount) <= 1e-5 then return p, false end
	local d = axis * amount
	local hit = F.cast(p, h, d)
	if hit then
		local travel = math.max(0, hit.Distance - COLLISION_SKIN)
		return p + d.Unit * travel, true
	end
	return p + d, false
end
F.tryStep = function(fromPosition, axis, amount, h)
	local upPosition, upHit = F.moveAxis(fromPosition, Vector3.yAxis, STEP_HEIGHT, h)
	if upHit then return fromPosition, false end
	local acrossPosition, acrossHit = F.moveAxis(upPosition, axis, amount, h)
	if acrossHit and (acrossPosition - upPosition).Magnitude  0.001
end
F.moveHorizontalAxis = function(p, axis, amount, h, grounded)
	local directPosition, hit = F.moveAxis(p, axis, amount, h)
	if not hit or not grounded then return directPosition, hit end
	local steppedPosition, stepped = F.tryStep(p, axis, amount, h)
	if stepped and (steppedPosition - p).Magnitude > math.abs(amount) * 0.5 then
		return steppedPosition, false
	end
	return directPosition, true
end
F.horizontal = function(p, dx, dz, h, grounded)
	local hx, hz = false, false
	if math.abs(dx) >= math.abs(dz) then
		p, hx = F.moveHorizontalAxis(p, Vector3.xAxis, dx, h, grounded)
		p, hz = F.moveHorizontalAxis(p, Vector3.zAxis, dz, h, grounded)
	else
		p, hz = F.moveHorizontalAxis(p, Vector3.zAxis, dz, h, grounded)
		p, hx = F.moveHorizontalAxis(p, Vector3.xAxis, dx, h, grounded)
	end
	return p, hx, hz
end
F.hasGroundAt = function(p, h)
	-- Use the original controller's short ground probe. A distant lower floor must
	-- not count as grounding, or the feet can stop above the baseplate.
	return F.cast(p, h, Vector3.new(0, -0.16, 0)) ~= nil
end
F.edgeClamp = function(p, dx, dz, h)
	local inc = 0.05 * BLOCK
	local function shrink(v) if math.abs(v) <= inc then return 0 end return v - math.sign(v) * inc end
	for _ = 1, 40 do if dx ~= 0 and not F.hasGroundAt(p + Vector3.new(dx, 0, 0), h) then dx = shrink(dx) else break end end
	for _ = 1, 40 do if dz ~= 0 and not F.hasGroundAt(p + Vector3.new(0, 0, dz), h) then dz = shrink(dz) else break end end
	for _ = 1, 40 do
		if dx ~= 0 and dz ~= 0 and not F.hasGroundAt(p + Vector3.new(dx, 0, dz), h) then dx = shrink(dx) dz = shrink(dz) else break end
	end
	return dx, dz
end
F.moveEntity = function(dx, dy, dz)
	local h = sneaking and 1.5 or 1.8
	local startGround = onGround
	local p = pos
	if sneaking and startGround and dy <= 0 then dx, dz = F.edgeClamp(p, dx, dz, h) end
	-- Match the mechanics controller: resolve horizontal movement first, then fall.
	-- This lets the player leave an upper platform before ground contact is tested.
	local hx, hz
	p, hx, hz = F.horizontal(p, dx, dz, h, startGround)
	local hitY
	p, hitY = F.moveAxis(p, Vector3.yAxis, dy, h)
	local landed = hitY and dy  0 then p -= Vector3.yAxis * settle end
	return p, true
end
local H = (function()
local rectsOf, paintFaceOf, FACES, BLOCKFACES, getBlockAt = MCB.rects, MCB.paintFace, MCB.FACES, MCB.BLOCKFACES, MCB.get
local climbOP = OverlapParams.new()
climbOP.FilterType = Enum.RaycastFilterType.Exclude
climbOP.RespectCanCollide = false
local handsFolder = Instance.new("Folder")
handsFolder.Name = "MCHands"
handsFolder.Parent = workspace
local function isOnClimbable()
	local b = getBlockAt(pos + Vector3.new(0, 0.05, 0))
	if b and b:GetAttribute("MCClimb") then return true end
	climbOP.FilterDescendantsInstances = { char, model, blockFolder, handsFolder }
	local box = workspace:GetPartBoundsInBox(CFrame.new(pos + Vector3.new(0, 0.9 * BLOCK, 0)), Vector3.new(0.6 * BLOCK, 1.8 * BLOCK, 0.6 * BLOCK), climbOP)
	for _, p in ipairs(box) do
		if p:IsA("TrussPart") then return true end
	end
	return false
end
local Mcf = CFrame.Angles(0, 0, math.pi)
local rad = math.rad
local HANDHELD = { diamond_sword = true, diamond_pickaxe = true, diamond_axe = true, diamond_shovel = true, stick = true }
local DISPLAY = {
	-- Non-block item transforms follow the Java 1.12.x item-model display settings.
	-- Generated items (food, ingots, gems, etc.) use generated.json's third-person pose;
	-- tools and swords use handheld.json's angled third-person pose. Block transforms
	-- are intentionally untouched.
	generated = { fp = { r = { 0, -90, 25 }, t = { 1.13, 3.2, 1.13 }, s = 0.60 }, tp = { r = { 0, 0, 0 }, t = { 0, 3, 1 }, s = 0.48 } },
	handheld = { fp = { r = { 0, -90, 25 }, t = { 1.13, 3.2, 1.13 }, s = 0.60 }, tp = { r = { 0, -90, 55 }, t = { 0, 4, 0.5 }, s = 0.68 } },
	block = { fp = { r = { 0, 45, 0 }, t = { 0, 0, 0 }, s = 0.36 }, tp = { r = { 75, 45, 0 }, t = { 0, 2.5, 0 }, s = 0.375 } },
}
local function itemKind(id)
	if BLOCKFACES[id] then return "block" end
	return HANDHELD[id] and "handheld" or "generated"
end
local function isBlockItem(id)
	return BLOCKFACES[id] ~= nil or (ITEMS[id] ~= nil and ITEMS[id].placeable == true)
end
local function dispCF(d, kind)
	local translation = CFrame.new(Vector3.new(d.t[1], d.t[2], d.t[3]) / 16 * BLOCK)
	if kind == "block" then
		-- Preserve the existing block-item transform path, per the requested scope.
		return translation
			* CFrame.Angles(0, 0, rad(d.r[3]))
			* CFrame.Angles(0, rad(d.r[2]), 0)
			* CFrame.Angles(rad(d.r[1]), 0, 0)
	end
	-- Java 1.12 ItemTransformVec3f JSON display transforms are composed X, Y, Z.
	return translation
		* CFrame.Angles(rad(d.r[1]), 0, 0)
		* CFrame.Angles(0, rad(d.r[2]), 0)
		* CFrame.Angles(0, 0, rad(d.r[3]))
end
local function basePart(size, color)
	local p = Instance.new("Part")
	p.Size = size
	p.Color = color
	p.Material = Enum.Material.SmoothPlastic
	p.Anchored, p.CanCollide, p.CanQuery, p.CanTouch, p.CastShadow = true, false, false, false, false
	return p
end
local itemModels = {}
local function getItemModel(id, scale)
	local key = id .. "@" .. scale
	local m = itemModels[key]
	if m then return m end
	m = Instance.new("Model")
	m.Name = key
	if itemKind(id) == "block" then
		local cube = basePart(Vector3.new(BLOCK, BLOCK, BLOCK) * scale, BLOCK_COLORS[id] or Color3.fromRGB(150, 150, 150))
		cube.Parent = m
		m.PrimaryPart = cube
		for _, f in ipairs(FACES) do paintFaceOf(cube, f[1], id) end
	else
		local a = basePart(Vector3.new(0.05, 0.05, 0.05), Color3.new(1, 1, 1))
		a.Transparency = 1
		a.Parent = m
		m.PrimaryPart = a
		local tex = ICON[id]
		if tex then
			if not tex.px then tex.px = F.decodeRLE(tex.d) end
			for _, r in ipairs(rectsOf(tex.px, tex.w, tex.h)) do
				local v = basePart(Vector3.new(r.w, r.h, 1) * PX * scale, r.c)
				v.CFrame = CFrame.new(Vector3.new(r.x + r.w / 2 - 8, 8 - r.y - r.h / 2, 0) * PX * scale)
				v.Parent = m
			end
		end
	end
	itemModels[key] = m
	return m
end
local FIRST_PERSON_ARM_SCALE = 1.0
local fpArm = basePart(Vector3.new(4, 12, 4) * PX * FIRST_PERSON_ARM_SCALE, Color3.fromRGB(176, 125, 96))
fpArm.Name = "FPArm"
F.paintBox(fpArm, 40, 16, 4, 12, 4)
local curModel = nil
local function showModel(m, cf)
	if curModel ~= m then
		if curModel then curModel.Parent = nil end
		curModel = m
		m.Parent = handsFolder
	end
	m:PivotTo(cf)
end
local function hideItem()
	if curModel then curModel.Parent = nil curModel = nil end
end
local function hideFP()
	fpArm.Parent = nil
	hideItem()
end
local attackPrev, attackCur = 0, 0
local handHeight, handHeightPrev = 0, 0
local shownId = nil
local function handTick()
	attackPrev = attackCur
	if swinging then
		swingTime += 1
		if swingTime >= 6 then
			-- End this six-tick swing at the wrapped zero phase. Render interpolation
			-- treats the 5/6 -> 0 boundary as 5/6 -> 1, matching Minecraft's partial-tick
			-- swing interpolation without playing the attack curve backward.
			swingTime = 0
			if swingQueued then
				swingQueued = false
				swinging = true
			else
				swinging = false
			end
			attackCur = 0
		else
			attackCur = math.clamp(swingTime / 6, 0, 1)
		end
	else
		attackCur = 0
	end
	F.swingProgress = attackCur
	local held = slots[36 + selected]
	local id = held and held.id or nil
	handHeightPrev = handHeight
	handHeight += math.clamp((id == shownId and 1 or 0) - handHeight, -0.4, 0.4)
	if handHeight < 0.1 and id ~= shownId then shownId = id end
end
local function attackAnim(alpha)
	-- Interpolate like Minecraft's partial-tick swing value. The end transition
	-- from a high phase back to zero wraps forward to phase 1, rather than swinging
	-- the arm backward or snapping at the final frame.
	local d = attackCur - attackPrev
	if d < -0.5 then d += 1 end
	return math.clamp(attackPrev + d * math.clamp(alpha or 0, 0, 1), 0, 1)
end
local function updateFirstPerson(camCF, alpha)
	local atk = attackAnim(alpha)
	local inv = 1 - (handHeightPrev + (handHeight - handHeightPrev) * alpha)
	local s = math.sqrt(atk)
	local id = shownId
	if id == nil then
		hideItem()
		local chain = CFrame.new(Vector3.new(
				-0.3 * math.sin(s * math.pi) + 0.64000005,
				0.4 * math.sin(s * 2 * math.pi) - 0.6 + inv * -0.6,
				-0.4 * math.sin(atk * math.pi) - 0.71999997) * BLOCK)
			* CFrame.Angles(0, rad(45), 0)
			* CFrame.Angles(0, rad(math.sin(s * math.pi) * 70), 0)
			* CFrame.Angles(0, 0, rad(math.sin(atk * atk * math.pi) * -20))
			* CFrame.new(Vector3.new(-1, 3.6, 3.5) * BLOCK)
			* CFrame.Angles(0, 0, rad(120)) * CFrame.Angles(rad(200), 0, 0) * CFrame.Angles(0, rad(-135), 0)
			* CFrame.new(Vector3.new(5.6, 0, 0) * BLOCK)
		if slots[36 + selected] == nil then
			fpArm.CFrame = camCF * chain * CFrame.new(Vector3.new(-6, 6, 0) / 16 * BLOCK) * Mcf
			fpArm.Parent = handsFolder
		else
			fpArm.Parent = nil
		end
	else
		local kind = itemKind(id)
		local d = DISPLAY[kind].fp
		local eatBlend = math.clamp(F.eatAnimationBlend or (F.eating and 1 or 0), 0, 1)
		local eatElapsed = math.clamp(F.renderEatTime or F.eatTime or 0, 0, 32)
		local eatRemaining = 1 - eatElapsed / 32
		local eatPull = 1 - eatRemaining ^ 27
		local eatBob = 0
		if eatRemaining  0.001 then
			local amount = eatPull * eatBlend
			eatTransform = CFrame.new(Vector3.new(amount * 0.6, amount * -0.5 + eatBob * eatBlend, 0) * BLOCK)
				* CFrame.Angles(0, rad(amount * 90), 0)
				* CFrame.Angles(rad(amount * 10), 0, 0)
				* CFrame.Angles(0, 0, rad(amount * 30))
		end
		-- Block item rotation intentionally stays on its existing transform path.
		fpArm.Parent = nil
		showModel(getItemModel(id, d.s), camCF * chain * eatTransform * dispCF(d, kind))
	end
end
local function updateThirdPerson(root, armP, armX, bobZ, armY, armSwingZ)
	fpArm.Parent = nil
	local held = slots[36 + selected]
	if not held then hideItem() return end
	local kind = itemKind(held.id)
	local d = DISPLAY[kind].tp
	local cf = root * Mcf
		* CFrame.new(armP / 16 * BLOCK)
		* CFrame.Angles(armX, armY or 0, bobZ + (armSwingZ or 0))
	local handOffset = CFrame.new(Vector3.new(1 / 16, 0.125, -0.625) * BLOCK)
	-- The pixel-art models are authored in an XY plane. Align that plane to the
	-- third-person hand first, then apply the independent display transform for this
	-- item kind. This fixes Item A without sharing its transform with block items.
	cf = cf * CFrame.Angles(rad(-90), 0, 0) * CFrame.Angles(0, rad(180), 0) * handOffset
	local eatBlend = math.clamp(F.eatAnimationBlend or (F.eating and 1 or 0), 0, 1)
	if kind ~= "block" and eatBlend > 0.001 then
		local elapsed = math.clamp(F.renderEatTime or F.eatTime or 0, 0, 32)
		local remaining = 1 - elapsed / 32
		local amount = (1 - remaining ^ 27) * eatBlend
		local bob = remaining < 0.8 and math.abs(math.cos((32 - elapsed) / 4 * math.pi) * 0.1) or 0
		-- The hand/item moves together, smoothly approaching the mouth while held.
		cf = cf * CFrame.new(Vector3.new(amount * 0.13, amount * 0.10 + bob * eatBlend, 0) * BLOCK)
			* CFrame.Angles(0, rad(amount * 35), 0)
			* CFrame.Angles(rad(amount * 10), 0, 0)
			* CFrame.Angles(0, 0, rad(amount * 18))
	end
	cf = cf * dispCF(d, kind)
	showModel(getItemModel(held.id, d.s), cf)
end
local function createDropVisual(id, count, position)
	local visual = getItemModel(id, 0.22):Clone()
	visual.Name = "DroppedItem_" .. id
	for _, node in ipairs(visual:GetDescendants()) do
		if node:IsA("BasePart") then
			node.Anchored = true
			node.CanCollide = false
			node.CanTouch = false
			node.CanQuery = false
			node.CastShadow = true
		end
	end
	visual.Parent = dropFolder
	visual:PivotTo(CFrame.new(position))
	local primary = visual.PrimaryPart
	local visiblePartCount = 0
	for _, node in ipairs(visual:GetDescendants()) do
		if node:IsA("BasePart") and node ~= primary and node.Transparency  1 and tostring(count) or ""
		countLabel.Parent = billboard
	end
	return visual, countLabel
end
return {
	isOnClimbable = isOnClimbable, handsFolder = handsFolder, handTick = handTick,
	updateFirstPerson = updateFirstPerson, updateThirdPerson = updateThirdPerson,
	swingAt = attackAnim,
	createDropVisual = createDropVisual,
}
end)()
local droppedItems = {}
local dropRayParams = RaycastParams.new()
dropRayParams.FilterType = Enum.RaycastFilterType.Exclude
dropRayParams.RespectCanCollide = true
F.spawnItemDrop = function(id, count)
	count = math.floor(tonumber(count) or 0)
	if not id or count <= 0 or not ITEMS[id] or not H.createDropVisual then return false end
	local cam = workspace.CurrentCamera
	local look = cam and cam.CFrame.LookVector or Vector3.new(0, 0, -1)
	local spawnAt = (pos or Vector3.zero) + Vector3.new(0, 0.85 * BLOCK, 0) + look * (1.5 * BLOCK)
	local visual, countLabel = H.createDropVisual(id, count, spawnAt)
	local initialVelocity = look * (BLOCK * 1.5) + Vector3.new(0, BLOCK * 0.9, 0)
	droppedItems[#droppedItems + 1] = {
		id = id, count = count, visual = visual, countLabel = countLabel,
		position = spawnAt, velocity = initialVelocity, spin = math.random() * math.pi * 2,
		age = 0, grounded = false, pickupDelay = 0.5,
	}
	return true
end
F.dropInventorySelection = function(dropAll)
	local stack, sourceIndex
	if carried then
		stack = carried
		sourceIndex = "carried"
	elseif panel and panel.Visible and hover ~= nil and slots[hover] then
		stack = slots[hover]
		sourceIndex = hover
	else
		sourceIndex = 36 + selected
		stack = slots[sourceIndex]
	end
	if not stack or not stack.id or stack.n <= 0 then return end
	local count = dropAll and stack.n or 1
	if not F.spawnItemDrop(stack.id, count) then return end
	stack.n -= count
	if stack.n  300 then
			if item.visual then item.visual:Destroy() end
			table.remove(droppedItems, i)
		else
			if not item.grounded then
				item.velocity = item.velocity + Vector3.new(0, -9.8 * BLOCK * dt, 0)
				local delta = item.velocity * dt
				local hit = workspace:Raycast(item.position, delta, dropRayParams)
				if hit then
					item.position = hit.Position + hit.Normal * 0.35
					if hit.Normal.Y > 0.45 and item.velocity.Y = item.pickupDelay and (item.position - pickupPoint).Magnitude <= BLOCK * 1.25 then
				local remaining = item.count
				local pending = { id = item.id, n = item.count }
				F.insertStack(pending, 9, 44)
				if pending.n < remaining then
					item.count = pending.n
					needsRefresh = true
					if item.count  1 and tostring(item.count) or "" end
					end
				end
			end
		end
	end
	if needsRefresh then refresh() end
end

local wasJumping = false
F.tick = function()
	if F.playerDead then return end
	prevPos, prevBodyYaw, prevWalkSpeed = pos, bodyYaw, walkSpeed
	age += 1
	H.handTick()
	F.eatTimePrev = F.eatTime or 0
	if F.eating then
		F.eatTime = (F.eatTime or 0) + 1
		if F.eatTime >= 32 then
			if not creative then
				local foodStack = slots[36 + selected]
				if foodStack and foodStack.id == F.eatItemId then
					foodStack.n -= 1
					if foodStack.n  0 then jumpDelay -= 1 end
	if jumpTriggerTime > 0 then jumpTriggerTime -= 1 end
	if rightClickDelay > 0 then rightClickDelay -= 1 end
	if missTime > 0 then missTime -= 1 end

	local blockedByUI = invOpen or chatOpen or (chatInput ~= nil and chatInput:IsFocused())
	local mv, jumpReq = Vector3.zero, false
	if not blockedByUI then
		mv = F.getMove()
		jumpReq = UIS:IsKeyDown(Enum.KeyCode.Space) or touchJumpHeld or (hum ~= nil and hum.Jump)
		if hum and hum.Jump then hum.Jump = false end
	end

	local inputForward = -mv.Z
	-- Sprint uses the original input; camera-relative movement below handles front-view inversion.

	sneaking = (not blockedByUI) and (UIS:IsKeyDown(Enum.KeyCode.LeftShift) or UIS:IsKeyDown(Enum.KeyCode.RightShift) or sneakToggle) and not abilities.flying
	if inputForward = 0.8 and (
		UIS:IsKeyDown(Enum.KeyCode.LeftControl) or UIS:IsKeyDown(Enum.KeyCode.RightControl) or sprintToggle or sprintLatch
	)

	local justToggledFlight = false
	if abilities.mayfly and not blockedByUI then
		if jumpReq and not wasJumping then
			if jumpTriggerTime == 0 then
				jumpTriggerTime = 7
			else
				abilities.flying = not abilities.flying
				if abilities.flying and onGround then vel = Vector3.new(vel.X, 0, vel.Z) end
				justToggledFlight = true
				jumpTriggerTime = 0
			end
		end
	end
	wasJumping = jumpReq
	if blockedByUI then
		vel = Vector3.zero
		walkSpeed += (0 - walkSpeed) * 0.4
		walkPos += walkSpeed
		F.continueAttack(false)
		return
	end

	local cameraNow = workspace.CurrentCamera or camera
	local worldDirection = Vector3.zero
	if cameraNow then
		local cameraMove = mv
		if viewMode == 2 then cameraMove = Vector3.new(-mv.X, 0, -mv.Z) end
		local look = cameraNow.CFrame.LookVector
		local right = cameraNow.CFrame.RightVector
		local forwardFlat = Vector3.new(look.X, 0, look.Z)
		local rightFlat = Vector3.new(right.X, 0, right.Z)
		if forwardFlat.Magnitude > 1e-5 then forwardFlat = forwardFlat.Unit end
		if rightFlat.Magnitude > 1e-5 then rightFlat = rightFlat.Unit end
		worldDirection = rightFlat * cameraMove.X + forwardFlat * -cameraMove.Z
		if worldDirection.Magnitude > 1 then worldDirection = worldDirection.Unit end
	end

	local onClimb = (not abilities.flying) and H.isOnClimbable()
	local horizontalSpeed
	if abilities.flying then
		horizontalSpeed = sprinting and FLY_SPRINT_BLOCKS_PER_SECOND or FLY_BLOCKS_PER_SECOND
	elseif sneaking then
		horizontalSpeed = SNEAK_BLOCKS_PER_SECOND
	elseif sprinting then
		horizontalSpeed = SPRINT_BLOCKS_PER_SECOND
	else
		horizontalSpeed = WALK_BLOCKS_PER_SECOND
	end

	-- Match the companion controller: horizontal velocity is measured in blocks/tick,
	-- approaches the target speed using Minecraft's friction factor, and uses the same
	-- 20 TPS collision movement below. Default ground slipperiness is 0.6 (0.546 friction).
	local slipperiness = GROUND_SLIPPERINESS
	if onGround then
		local groundRay = workspace:Raycast(pos + Vector3.new(0, 0.04, 0), Vector3.new(0, -0.18, 0), rp)
		if groundRay and groundRay.Instance and groundRay.Instance:IsA("BasePart") then
			local tagged = groundRay.Instance:GetAttribute("MCSlipperiness")
			if typeof(tagged) == "number" then
				slipperiness = math.clamp(tagged, 0.1, 1.0)
			elseif groundRay.Instance.Material == Enum.Material.Ice then
				slipperiness = 0.98
			end
		end
	end
	local friction = onGround and math.clamp(slipperiness * 0.91, 0.1, 0.99) or 0.91
	local targetPerTick = horizontalSpeed / 20
	local accel = (1 - friction) * targetPerTick
	local hv = Vector3.new(vel.X, 0, vel.Z) * friction
	if worldDirection.Magnitude > 0.001 and not blockedByUI then
		hv += worldDirection * accel
	end
	vel = Vector3.new(hv.X, vel.Y, hv.Z)

	if abilities.flying then
		local verticalInput = 0
		if jumpReq and not justToggledFlight then verticalInput += 1 end
		if UIS:IsKeyDown(Enum.KeyCode.LeftShift) or UIS:IsKeyDown(Enum.KeyCode.RightShift) or sneakToggle then verticalInput -= 1 end
		local targetVertical = verticalInput * 0.12
		vel = Vector3.new(vel.X, vel.Y * 0.55 + targetVertical * 0.45, vel.Z)
		F.moveEntity(vel.X * BLOCK, vel.Y * BLOCK, vel.Z * BLOCK)
		if onGround and vel.Y < 0 then vel = Vector3.new(vel.X, 0, vel.Z) end
	else
		if jumpReq then
			if onGround and jumpDelay == 0 and not blockedByUI then
				local newY = 0.42
				-- Keep sprint-jumping at normal ground sprint speed. The previous
				-- extra horizontal impulse made a regular jump feel like flight sprint.
				vel = Vector3.new(vel.X, newY, vel.Z)
				jumpDelay = 10
			end
		else
			jumpDelay = 0
		end

		if onClimb then
			fallDistance = 0
			local yd = math.max(vel.Y, -0.15)
			if yd < 0 and sneaking then yd = 0 end
			vel = Vector3.new(math.clamp(vel.X, -0.15, 0.15), yd, math.clamp(vel.Z, -0.15, 0.15))
		end

		local hit = F.moveEntity(vel.X * BLOCK, vel.Y * BLOCK, vel.Z * BLOCK)
		if hit then sprintLatch = false end
		if onClimb and (hit or jumpReq) then vel = Vector3.new(vel.X, 0.2, vel.Z) end

		local heightBlocks = sneaking and 1.5 or 1.8
		local groundedNow = false
		if vel.Y  3 and not abilities.invulnerable then
					local dmg = math.floor(fallDistance - 3)
					if dmg > 0 and hum then
						local nextHealth = math.max(0, hum.Health - dmg * 2)
						if nextHealth <= 0 then
							F.pendingPlayerDeathMessage = tostring(lp.Name) .. " was killed"
						end
						hum.Health = nextHealth
						if nextHealth <= 0 then
							F.beginPlayerDeath(F.pendingPlayerDeathMessage)
							return
						end
					end
				end
				fallDistance = 0
			end
		end
	end

	if math.abs(vel.X) < 0.003 then vel = Vector3.new(0, vel.Y, vel.Z) end
	if math.abs(vel.Z) < 0.003 then vel = Vector3.new(vel.X, vel.Y, 0) end
	if math.abs(vel.Y)  0.0025 or viewMode == 2 then
		local amount = 1 - math.exp(-BODY_MOVE_TURN_RESPONSE * TICK)
		bodyYaw = F.wrap(bodyYaw + yawDelta * amount)
		if math.abs(yawDelta)  0 then
			local catchup = excess - math.min(excess, BODY_TURN_DEADZONE)
			local amount = 1 - math.exp(-BODY_TURN_RESPONSE * TICK)
			bodyYaw = F.wrap(bodyYaw + math.sign(yawDelta) * catchup * amount)
		end
	end

	if F.entityAttackCooldown > 0 then F.entityAttackCooldown -= 1 end
	F.continueAttack(attackHeld and not blockedByUI)
	if useHeld and rightClickDelay == 0 and not blockedByUI then F.startUseItem() end
	if pos.Y < workspace.FallenPartsDestroyHeight + 50 then pos, prevPos, vel = spawnPos, spawnPos, Vector3.zero end
end
local NUM = {
	[Enum.KeyCode.One] = 1, [Enum.KeyCode.Two] = 2, [Enum.KeyCode.Three] = 3, [Enum.KeyCode.Four] = 4,
	[Enum.KeyCode.Five] = 5, [Enum.KeyCode.Six] = 6, [Enum.KeyCode.Seven] = 7, [Enum.KeyCode.Eight] = 8,
	[Enum.KeyCode.Nine] = 9,
}
local ptr = Vector2.new(vp.X / 2, vp.Y / 2)
F.isOverHotbar = function(pos2d)
	local objs = playerGui:GetGuiObjectsAtPosition(pos2d.X, pos2d.Y)
	for _, o in ipairs(objs) do
		if o:IsDescendantOf(hotbar) or o == dropInventoryButton or o:IsDescendantOf(dropInventoryButton) then return true end
	end
	return false
end
F.track(UIS.InputBegan:Connect(function(input, gpe)
	local t = input.UserInputType
	if t == Enum.UserInputType.Touch then
		ptr = Vector2.new(input.Position.X, input.Position.Y)
		return
	end
	if t == Enum.UserInputType.MouseButton1 and not invOpen and not chatOpen and not (chatInput and chatInput:IsFocused()) then
		local mp = UIS:GetMouseLocation()
		if F.isOverHotbar(mp) then return end
		if not gpe then
			attackHeld = true
			F.startAttack()
		end
		return
	end
	if t == Enum.UserInputType.MouseButton2 and not invOpen and not chatOpen and not (chatInput and chatInput:IsFocused()) then
		local mp = UIS:GetMouseLocation()
		if F.isOverHotbar(mp) then return end
		if not gpe then
			useHeld = true
			F.startUseItem()
		end
		return
	end
	if t ~= Enum.UserInputType.Keyboard then return end
	if F.playerDead then return end
	local k = input.KeyCode
	if k == Enum.KeyCode.Escape and chatOpen then
		F.setChatOpen(false, false)
		return
	end
	if UIS:GetFocusedTextBox() then return end
	if k == Enum.KeyCode.F1 then
		hudVisible = not hudVisible
		F.updateHudVisibility()
		return
	elseif k == Enum.KeyCode.F3 then
		F.toggleDebug()
		return
	elseif k == Enum.KeyCode.E then
		F.setInventory(not invOpen)
	elseif k == Enum.KeyCode.W then
		if os.clock() - lastW < 0.3 then sprintLatch = true end
		lastW = os.clock()
	elseif k == Enum.KeyCode.F5 or k == Enum.KeyCode.V then
		viewMode = (viewMode + 1) % 3
		F.applyCameraMode()
	elseif k == Enum.KeyCode.F4 then
		F.setGameMode(not creative)
		if creativeBtn then creativeBtn.Text = creative and "Creative" or "Survival"; F.paintToggle(creativeBtn, creative) end
		if flyBtn then flyBtn.Visible = creative; F.paintToggle(flyBtn, abilities.flying) end
		nameLabel.Text = creative and "Creative Mode" or "Survival Mode"
		nameUntil = os.clock() + 2
	elseif k == Enum.KeyCode.Q and not invOpen then
		local all = UIS:IsKeyDown(Enum.KeyCode.LeftControl) or UIS:IsKeyDown(Enum.KeyCode.RightControl)
		local s = slots[36 + selected]
		if s then
			local count = all and s.n or 1
			if F.spawnItemDrop(s.id, count) then
				s.n -= count
				if s.n = 12 then
				F.touchDragging = true
				F.clickSlot(F.activeTouchSlot, 1, false)
			end
		end
	elseif t == Enum.UserInputType.MouseWheel and not invOpen and not chatOpen and not (chatInput and chatInput:IsFocused()) then
		local dir = math.sign(input.Position.Z)
		if dir ~= 0 then F.selectHotbar((selected - dir) % 9) end
	end
end))
F.track(UIS.InputEnded:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		attackHeld = false
		F.stopDestroyBlock()
	elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
		F.stopUseItem()
	end
end))
do
	local keys = {
		Enum.KeyCode.One, Enum.KeyCode.Two, Enum.KeyCode.Three,
		Enum.KeyCode.Four, Enum.KeyCode.Five, Enum.KeyCode.Six,
		Enum.KeyCode.Seven, Enum.KeyCode.Eight, Enum.KeyCode.Nine,
		Enum.KeyCode.KeypadOne, Enum.KeyCode.KeypadTwo, Enum.KeyCode.KeypadThree,
		Enum.KeyCode.KeypadFour, Enum.KeyCode.KeypadFive, Enum.KeyCode.KeypadSix,
		Enum.KeyCode.KeypadSeven, Enum.KeyCode.KeypadEight, Enum.KeyCode.KeypadNine,
	}
	for i = 1, 9 do
		local slot = i - 1
		local name = "MCSteveHotbar" .. i
		ContextActionService:BindActionAtPriority(name, function(_, state)
			if state == Enum.UserInputState.Begin then
				if invOpen and hover ~= nil and hover ~= 0 then
					local a, b = slots[hover], slots[35 + i]
					if (b == nil or F.canPlace(hover, b)) and (a == nil or F.canPlace(35 + i, a)) then
						slots[hover], slots[35 + i] = b, a
						F.updateCraft()
						refresh()
					end
				else
					F.selectHotbar(slot)
				end
			end
			return Enum.ContextActionResult.Sink
		end, false, 3000, keys[i], keys[i + 9])
	end
	ContextActionService:BindActionAtPriority("MCSteveScrollHotbar", function(_, state, input)
		if state == Enum.UserInputState.Change and not invOpen and input then
			local dir = math.sign(input.Position.Z)
			if dir ~= 0 then F.selectHotbar((selected - dir) % 9) end
		end
		return Enum.ContextActionResult.Sink
	end, false, 3000, Enum.UserInputType.MouseWheel)
end
local accum = 0
local renderState = { alpha = 0, ipos = pos, ibody = bodyYaw }
F.update = function(dt)
	camera = workspace.CurrentCamera or camera
	if not camera or F.playerDead then return end
	if not (char and char.Parent and hrp and hrp.Parent) then return end
	accum += dt
	local n = 0
	while accum >= TICK and n < 5 and not F.playerDead do
		accum -= TICK
		F.tick()
		n += 1
	end
	if F.playerDead then accum = 0 return end
	if n == 5 then accum = 0 end
	local alpha = accum / TICK
	if debugPanel and debugPanel.Visible and debugText then
		local v = vel or Vector3.zero
		local mode = creative and "Creative" or "Survival"
		local view = ({[0] = "First person", [1] = "Back", [2] = "Front"})[viewMode] or "Unknown"
		debugText.Text = string.format(
			"Minecraft 1.12.1 (Steve / Luau)nMode: %s  View: %s  Flying: %snXYZ: %.2f / %.2f / %.2fnVelocity: %.3f / %.3f / %.3f  Ground: %snInventory: %s  Blocks: %d",
			mode, view, tostring(abilities.flying), pos.X / BLOCK, pos.Y / BLOCK, pos.Z / BLOCK,
			v.X, v.Y, v.Z, tostring(onGround), tostring(invOpen), blockFolder and #blockFolder:GetChildren() or 0
		)
	end
	local ipos = prevPos:Lerp(pos, alpha)
	local ibody = prevBodyYaw + F.wrap(bodyYaw - prevBodyYaw) * alpha
	renderState.alpha, renderState.ipos, renderState.ibody = alpha, ipos, ibody
	-- Keep the real character root synchronized before Roblox's native camera step.
	-- Viewmodel and Steve limbs are rendered separately after the camera updates.
	hrp.CFrame = CFrame.new(ipos + Vector3.new(0, rootVisualOffset, 0)) * CFrame.Angles(0, ibody, 0)
	hrp.AssemblyLinearVelocity = Vector3.zero
	hrp.AssemblyAngularVelocity = Vector3.zero
	if not invOpen then
		-- Hover/selection is read-only. Outline the shared-grid cell that the
		-- union-cut operation would remove; never replace or voxelize the target.
		local hitPart, hitPos, hitNormal = F.pickBlock()
		if F.isBreakableTarget(hitPart) and hitPos and hitNormal then
			local cellCenter = F.getGridCellCenter(hitPart, hitPos, hitNormal)
			selectionProxy.CFrame = CFrame.new(cellCenter)
			selectBox.Adornee = selectionProxy
		else
			selectBox.Adornee = nil
		end
	else
		selectBox.Adornee = nil
	end
	if selFrame and selFrame.Parent then
        selected = math.clamp(math.floor(selected or 0), 0, 8)
        selFrame.Position = UDim2.fromOffset((-1 + selected * 20) * GS, -1 * GS)
    end
	crosshair.Visible = (not invOpen) and viewMode ~= 2
	if selected ~= lastSel then
		lastSel = selected
		local s = slots[36 + selected]
		nameLabel.Text = s and ITEMS[s.id].name or ""
		nameUntil = os.clock() + 2
	end
	nameLabel.Visible = os.clock()  1e-5 then yaw = math.atan2(-facing.X, -facing.Z) end
		pitch = math.asin(math.clamp(-look.Y, -1, 1))
	else
		yaw = math.atan2(-look.X, -look.Z)
		pitch = math.asin(math.clamp(look.Y, -1, 1))
	end
	if viewMode == 0 then
		model.Parent = nil
		H.updateFirstPerson(camera.CFrame, alpha)
	else
		model.Parent = workspace
		local root = CFrame.new(ipos) * CFrame.Angles(0, ibody, 0) * CFrame.new(0, 24 * PX, 0)
		local ispeed = prevWalkSpeed + (walkSpeed - prevWalkSpeed) * alpha
		local targetHeadYaw = math.clamp(F.wrap(yaw - ibody), -math.rad(38), math.rad(38))
		local targetHeadPitch = math.clamp(pitch, -math.rad(50), math.rad(50))
		local smoothAlpha = 1 - math.exp(-14 * math.clamp(renderDt or (1 / 60), 0, 0.1))
		F.smoothedHeadYaw = F.wrap(F.smoothedHeadYaw + F.wrap(targetHeadYaw - F.smoothedHeadYaw) * smoothAlpha)
		F.smoothedHeadPitch += (targetHeadPitch - F.smoothedHeadPitch) * smoothAlpha
		local interpolatedSwing = H.swingAt(alpha)
		local held = slots[36 + selected]
		local aP, aX, aZ, aY, aSwingZ = F.poseSteve(root, F.smoothedHeadPitch, F.smoothedHeadYaw,
			walkPos - walkSpeed * (1 - alpha), ispeed, age + alpha, sneaking, held ~= nil, interpolatedSwing)
		H.updateThirdPerson(root, aP, aX, aZ, aY, aSwingZ)
	end
end
shared.__MCSteveStop = function()
	pcall(function() RunService:UnbindFromRenderStep("MCSteve") end)
	pcall(function() RunService:UnbindFromRenderStep("MCSteve_SmoothSneakCamera") end)
	pcall(function() RunService:UnbindFromRenderStep("MCSteve_ResetPreviousCameraTransforms") end)
	pcall(function() RunService:UnbindFromRenderStep("MCSteve_ThirdPersonFrontView") end)
	pcall(function() RunService:UnbindFromRenderStep("MCSteve_HideLocalAvatar") end)
	pcall(function() RunService:UnbindFromRenderStep("MCSteve_CharacterAndHands") end)
	pcall(function() RunService:UnbindFromRenderStep("MCSteve_DroppedItems") end)
	for i = 1, 9 do pcall(function() ContextActionService:UnbindAction("MCSteveHotbar" .. i) end) end
	pcall(function() ContextActionService:UnbindAction("MCSteveScrollHotbar") end)
	for _, c in ipairs(conns) do pcall(function() c:Disconnect() end) end
	pcall(function() gui:Destroy() end)
	pcall(function() controlsGui:Destroy() end)
	pcall(function() if selectionProxy then selectionProxy:Destroy() end end)
	pcall(function() model:Destroy() end)
	pcall(function() if mobileDpad then mobileDpad:Destroy() end end)
	pcall(function() if controls and UIS.TouchEnabled then controls:Enable() end end)
	pcall(function() if H.handsFolder then H.handsFolder:Destroy() end end)
	pcall(function() if dropFolder then dropFolder:Destroy() end end)
	pcall(function() if blockFolder then blockFolder:Destroy() end end)
	for _, info in ipairs(F.baseplateOriginals or {}) do
		pcall(function()
			local part = info.part
			if part and part.Parent then
				part.LocalTransparencyModifier = info.localTransparencyModifier or 0
				part.CanCollide = info.canCollide
				part.CanQuery = info.canQuery
				part.CanTouch = info.canTouch
			end
		end)
	end
	for _, info in ipairs(F.voxelOriginals or {}) do
		pcall(function()
			local part = info.part
			if part and part.Parent then
				part.LocalTransparencyModifier = info.localTransparencyModifier or 0
				part.CanCollide = info.canCollide
				part.CanQuery = info.canQuery
				part.CanTouch = info.canTouch
			end
		end)
	end
	pcall(function()
		UIS.MouseBehavior = Enum.MouseBehavior.Default
		UIS.MouseIconEnabled = true
		camera.CameraType = Enum.CameraType.Custom
		lp.CameraMode = oldCameraMode
		lp.CameraMinZoomDistance = oldCameraMinZoom
		lp.CameraMaxZoomDistance = oldCameraMaxZoom
		if hrp then hrp.Anchored = false end
		if hum then
			hum.WalkSpeed = 16
			hum.AutoRotate = true
			hum.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Viewer
			hum.CameraOffset = F.oldCameraOffset or Vector3.zero
			camera.CameraSubject = hum
		end
		if char then
			for _, d in ipairs(char:GetDescendants()) do
				if d:IsA("BasePart") then d.LocalTransparencyModifier = 0
				elseif d:IsA("Decal") then d.Transparency = 0 end
			end
		end
	end)
	shared.__MCSteveStop = nil
end
F.track(lp.CharacterAdded:Connect(F.bind))
F.bind(lp.Character or lp.CharacterAdded:Wait())
-- No initial terrain is created; manual block placement remains enabled.
RunService:UnbindFromRenderStep("MCSteve_ResetPreviousCameraTransforms")
RunService:UnbindFromRenderStep("MCSteve_ThirdPersonFrontView")
local lastFrontCamera, lastFrontTransform = nil, CFrame.identity
RunService:UnbindFromRenderStep("MCSteve_SmoothSneakCamera")
RunService:BindToRenderStep("MCSteve_SmoothSneakCamera", Enum.RenderPriority.Camera.Value - 2, function(dt)
	if not hum or not hum.Parent then return end
	local uiBlocking = invOpen or chatOpen
	local sneakInput = UIS:IsKeyDown(Enum.KeyCode.LeftShift) or UIS:IsKeyDown(Enum.KeyCode.RightShift) or sneakToggle
	local targetEyeH = (sneakInput and not uiBlocking and not abilities.flying) and 1.27 or 1.62
	local smoothAlpha = 1 - math.exp(-16 * math.clamp(dt, 0, 0.1))
	cameraEyeH += (targetEyeH - cameraEyeH) * smoothAlpha
	eyeH = cameraEyeH
	hum.CameraOffset = Vector3.new(0, (cameraEyeH - 1.62) * BLOCK, 0)
end)
RunService:BindToRenderStep("MCSteve_ResetPreviousCameraTransforms", Enum.RenderPriority.Camera.Value - 1, function()
	local cam = workspace.CurrentCamera
	if not cam then lastFrontCamera = nil; lastFrontTransform = CFrame.identity; return end
	if lastFrontCamera == cam then cam.CFrame = cam.CFrame * lastFrontTransform:Inverse() end
	lastFrontCamera = cam
	lastFrontTransform = CFrame.identity
end)
RunService:BindToRenderStep("MCSteve_ThirdPersonFrontView", Enum.RenderPriority.Camera.Value + 1, function()
	local cam = workspace.CurrentCamera
	if not cam then return end
	if viewMode ~= 2 or invOpen or chatOpen then
		lastFrontCamera = cam
		lastFrontTransform = CFrame.identity
		return
	end
	local base = cam.CFrame
	local focus = cam.Focus.Position
	if hrp and hrp.Parent and (focus - hrp.Position).Magnitude > BLOCK * 8 then
		focus = hrp.Position + Vector3.new(0, rootVisualOffset * 0.1, 0)
	end
	local relative = base.Position - focus
	local frontPosition = focus + Vector3.new(-relative.X, relative.Y, -relative.Z)
	local front = CFrame.lookAt(frontPosition, focus)
	lastFrontTransform = base:ToObjectSpace(front)
	cam.CFrame = front
end)
RunService:UnbindFromRenderStep("MCSteve_HideLocalAvatar")
RunService:BindToRenderStep("MCSteve_HideLocalAvatar", Enum.RenderPriority.Camera.Value + 1, function()
	if char and char.Parent then
		for _, descendant in ipairs(F.hiddenAvatarObjects or {}) do
			if descendant and descendant.Parent then F.hideOneAvatarObject(descendant) end
		end
	end
end)
RunService:BindToRenderStep("MCSteve_CharacterAndHands", Enum.RenderPriority.Camera.Value + 2, function(dt)
	if F.renderVisuals then F.renderVisuals(dt) end
end)
RunService:UnbindFromRenderStep("MCSteve_DroppedItems")
RunService:BindToRenderStep("MCSteve_DroppedItems", Enum.RenderPriority.Camera.Value + 3, function(dt)
	if F.updateDroppedItems then F.updateDroppedItems(dt) end
end)
F.updateCameraViewButton = function()
	if cameraViewButton then
		cameraViewButton.Text = ({[0] = "1ST", [1] = "3RD BACK", [2] = "3RD FRONT"})[viewMode] or "1ST"
	end
end
F.track(RunService.Heartbeat:Connect(function(dt) F.update(dt) end))
print("test")

end

__RunMinecraftClient()

How to Use This Script

1

Open Your Executor

Launch a supported executor and attach it to a running Roblox session.

2

Copy the Script

Click the Copy button above. The full loadstring is placed on your clipboard instantly.

3

Paste & Execute

Paste it into the executor and hit Execute. The hub window opens inside the game.

Compatible Executors

Comments

0
Join the discussion about this script.

No comments yet. Be the first to comment!