{
 "about": "Boomfood Bridge (030) sprites. w/h = draw size in px at the 1280x720 reference (PNG is 2x; 1 u = 60 px). pivot = anchor in 0..1 of the image (props/cast: ground contact or the joint to the parent; members: the start joint; particles: centre). joints = child anchors in the same 0..1 space. Child world pos = parent pos + rotate(parent angle, (joint - parent pivot) * parent size * scale), angles clockwise. load = lazy set (first = the first screen; common after it; ch1/ch2/ch3 with that chapter; hub; cards; twop; ending). Rebuild: python3 art/tools/build.py",
 "load_groups": {
  "first": [
   "anchor_stake",
   "apple_tree",
   "bank_fill",
   "bank_l",
   "bank_r",
   "basket_turnips",
   "brace",
   "brace_icon",
   "brace_snug",
   "btn_go",
   "budget_board",
   "bunting",
   "chalk_fill",
   "chalk_mark",
   "chapel",
   "cottage_0",
   "duck_swim",
   "dulcie_kneel",
   "dulcie_stand",
   "far_hills_1",
   "far_trees_1",
   "gate",
   "ghost_plank",
   "glyph_drag",
   "glyph_tap",
   "hedge",
   "hen_bustle_body",
   "hen_bustle_body_peck",
   "hen_bustle_wing_fold",
   "hen_bustle_wing_mid",
   "hen_bustle_wing_up",
   "hen_leg",
   "icon_lang",
   "icon_pause",
   "icon_undo",
   "joint_wood",
   "joint_wood_amber",
   "joint_wood_red",
   "joint_wood_snap",
   "mat_plank",
   "mill",
   "mill_wheel",
   "oak_0",
   "p_chip",
   "p_chip_red",
   "p_drop",
   "p_feather_bustle",
   "p_sawdust",
   "penny",
   "plank_1u",
   "plank_2u",
   "reeds",
   "ring_snug",
   "rosette_glint",
   "sow_ear_down",
   "sow_ear_mid",
   "sow_ear_up",
   "sow_head_calm",
   "sow_head_chew",
   "splash_crown",
   "star_empty",
   "star_full",
   "tool_roll_3",
   "tool_roll_4",
   "tuft",
   "turnip",
   "water_race",
   "willow"
  ],
  "common": [
   "brace_icon_used",
   "btn_board",
   "btn_board_down",
   "btn_go_down",
   "btn_wide",
   "btn_wide_down",
   "card_packet",
   "crack_overlay",
   "dulcie_cheer",
   "dulcie_jam",
   "dulcie_ladder",
   "dulcie_point",
   "dulcie_portrait",
   "dulcie_punt",
   "dulcie_sit",
   "dulcie_swing",
   "dulcie_thumbs",
   "dulcie_walk_a",
   "dulcie_walk_b",
   "dulcie_wave",
   "hen_bustle_fall",
   "hen_bustle_shake",
   "hen_bustle_swim",
   "hen_cream_body",
   "hen_cream_body_peck",
   "hen_cream_fall",
   "hen_cream_shake",
   "hen_cream_swim",
   "hen_cream_wing_fold",
   "hen_cream_wing_mid",
   "hen_cream_wing_up",
   "hen_slate_body",
   "hen_slate_body_peck",
   "hen_slate_fall",
   "hen_slate_shake",
   "hen_slate_swim",
   "hen_slate_wing_fold",
   "hen_slate_wing_mid",
   "hen_slate_wing_up",
   "icon_again",
   "icon_close",
   "icon_music",
   "icon_next",
   "icon_settings",
   "icon_sound",
   "icon_twop",
   "icon_video",
   "icon_workshop",
   "lever_gate_0",
   "lever_gate_1",
   "mat_rope",
   "oak_1",
   "p_bark",
   "p_dust",
   "p_feather_cream",
   "p_feather_slate",
   "p_fibre",
   "p_turnip_leaf",
   "p_willow",
   "panel",
   "piglet_body_0",
   "piglet_body_1",
   "piglet_body_2",
   "piglet_ear_down",
   "piglet_ear_mid",
   "piglet_ear_up",
   "piglet_head_blink",
   "piglet_head_calm",
   "piglet_head_happy",
   "piglet_head_open",
   "piglet_leg_f",
   "piglet_leg_n",
   "piglet_tail_0",
   "piglet_tail_1",
   "plank_1u_amber",
   "plank_1u_red",
   "plank_2u_amber",
   "plank_2u_broken_l",
   "plank_2u_broken_r",
   "plank_2u_red",
   "poplar",
   "ring_spray",
   "rope",
   "rope_amber",
   "rope_red",
   "rope_slack",
   "rope_snapped",
   "sow_bellyflop",
   "sow_body",
   "sow_head_blink",
   "sow_head_grin",
   "sow_head_happy",
   "sow_head_lily",
   "sow_head_look",
   "sow_head_open",
   "sow_head_sniff",
   "sow_leg_f",
   "sow_leg_n",
   "sow_shake",
   "sow_swim",
   "sow_tail_0",
   "sow_tail_1",
   "twelvetrees_cheer",
   "twelvetrees_gesture",
   "twelvetrees_point",
   "twelvetrees_stand",
   "wear_dulcie_flat_cap",
   "wear_dulcie_keeper_cap",
   "wear_dulcie_neckerchief",
   "wear_dulcie_spirit_level",
   "wear_hen_cherry_hat",
   "wear_hen_lace_cap",
   "wear_hen_sunday_bonnet",
   "wear_hen_toque",
   "wear_sow_bow_blue",
   "wear_sow_bow_gingham",
   "wear_sow_bunting",
   "wear_sow_daisy_chain",
   "wear_sow_party_hat",
   "wear_sow_sash",
   "wear_sow_tea_rosette"
  ],
  "ch1": [
   "cake_stand_2",
   "cake_stand_3",
   "cottage_1",
   "duck_dabble",
   "duck_surf",
   "ford_stone",
   "island",
   "lily_pad",
   "miller_cheer",
   "miller_stand",
   "scarecrow",
   "splash_wave",
   "tea_bench",
   "tea_table",
   "villager_a_cheer",
   "villager_a_sit",
   "villager_a_stand",
   "villager_b_cheer",
   "villager_b_sit",
   "villager_b_stand",
   "washing",
   "washing_wet",
   "water_pond"
  ],
  "ch2": [
   "anchor_hook",
   "anchor_ring",
   "barge_0",
   "barge_1",
   "barge_horse",
   "bargee_dog",
   "bargee_stand",
   "bargee_wave",
   "coal_heap",
   "dandelion",
   "dandelion_seeds",
   "drawbridge_leaf",
   "drawbridge_lever_0",
   "drawbridge_lever_1",
   "far_hills_2",
   "far_trees_2",
   "fog",
   "iron_1u",
   "iron_1u_amber",
   "iron_1u_red",
   "iron_3u",
   "iron_3u_amber",
   "iron_3u_broken_l",
   "iron_3u_broken_r",
   "iron_3u_red",
   "joint_bolt",
   "joint_bolt_amber",
   "joint_bolt_red",
   "joint_bolt_snap",
   "lantern",
   "lantern_off",
   "lever_bridge",
   "lock_cottage",
   "lock_gate",
   "lock_wall",
   "mat_iron",
   "p_coal",
   "p_seed",
   "p_spark",
   "poplar_row",
   "sundial_float",
   "sundial_head_calm",
   "sundial_head_nap",
   "sundial_head_tucked",
   "sundial_leg",
   "sundial_nap",
   "sundial_shell",
   "sundial_shell_daisies",
   "sundial_shell_moss",
   "sundial_shell_vane",
   "teal_cheer",
   "teal_gesture",
   "teal_stand",
   "teal_wave",
   "towpath_fence",
   "water_canal",
   "wharf_crane"
  ],
  "ch3": [
   "anchor_rock",
   "cable",
   "cable_amber",
   "cable_red",
   "cable_slack",
   "cable_snapped",
   "far_hills_3",
   "far_trees_3",
   "gorge_wall_l",
   "gorge_wall_r",
   "hawthorn",
   "hawthorn_bent",
   "marrowby",
   "mat_cable",
   "milestone",
   "old_pier",
   "p_grit",
   "p_hawthorn",
   "p_steam",
   "puncheon_cheer",
   "puncheon_gesture",
   "puncheon_point",
   "puncheon_stand",
   "quarry_ledge",
   "rim_flag_0",
   "rim_flag_2",
   "ring_beat",
   "rock_tower",
   "rock_tower_base",
   "rook_fly",
   "rook_nest",
   "rook_perch",
   "shingle",
   "signal_down",
   "signal_up",
   "signalman_stand",
   "signalman_wave",
   "steam_puff",
   "tank_engine",
   "thimble_body",
   "thimble_brasses",
   "thimble_brasses_heart",
   "thimble_collar",
   "thimble_head_calm",
   "thimble_head_grin",
   "thimble_head_shut",
   "thimble_leg_bent",
   "thimble_leg_bent_far",
   "thimble_leg_straight",
   "thimble_leg_straight_far",
   "thimble_neck",
   "thimble_neck_plaited",
   "thimble_shake",
   "thimble_swim",
   "thimble_tail_0",
   "thimble_tail_1",
   "viaduct",
   "water_pool",
   "wear_thimble_sun_hat"
  ],
  "hub": [
   "badge_01",
   "badge_02",
   "badge_03",
   "badge_04",
   "badge_05",
   "badge_06",
   "badge_07",
   "badge_08",
   "badge_09",
   "badge_10",
   "badge_11",
   "badge_12",
   "badge_13",
   "badge_14",
   "badge_15",
   "badge_16",
   "badge_locked",
   "feed_sack_1",
   "feed_sack_2",
   "feed_sack_3",
   "feed_sack_4",
   "feed_sack_5",
   "feed_sack_6",
   "feed_sack_7",
   "golden_rosette",
   "hub_bench",
   "hub_door",
   "hub_hat_pegs",
   "hub_rosette_board",
   "hub_souvenirs",
   "hub_tool_box",
   "hub_wall",
   "kit_portrait",
   "padlock",
   "puncheon_portrait",
   "rosette_01",
   "rosette_02",
   "rosette_03",
   "rosette_04",
   "rosette_05",
   "rosette_06",
   "rosette_07",
   "rosette_08",
   "rosette_09",
   "rosette_10",
   "rosette_11",
   "rosette_12",
   "rosette_13",
   "rosette_14",
   "rosette_15",
   "rosette_16",
   "rosette_17",
   "rosette_18",
   "rosette_19",
   "rosette_20",
   "rosette_21",
   "rosette_22",
   "rosette_23",
   "rosette_24",
   "rosette_25",
   "rosette_26",
   "rosette_27",
   "rosette_28",
   "rosette_29",
   "rosette_30",
   "rosette_locked",
   "tag",
   "teal_portrait",
   "twelvetrees_portrait",
   "valley_map"
  ],
  "cards": [
   "card_ch1",
   "card_ch2",
   "card_ch3",
   "card_end_1",
   "card_end_2",
   "card_end_3",
   "card_end_4",
   "card_intro_1",
   "card_intro_2",
   "card_intro_3"
  ],
  "twop": [
   "kit_cheer",
   "kit_jam",
   "kit_kneel",
   "kit_point",
   "kit_stand",
   "kit_swing",
   "kit_thumbs",
   "kit_wave",
   "phone_board"
  ],
  "ending": [
   "cake_tent",
   "judges_table",
   "show_tent",
   "strongbox",
   "village_sign"
  ]
 },
 "sprites": {
  "anchor_hook": {
   "file": "sprites/anchor_hook.png",
   "w": 32.0,
   "h": 47.0,
   "pivot": [
    0.1875,
    0.5319
   ],
   "group": "members",
   "load": "ch2",
   "note": "fixed anchor; pivot = the joint point"
  },
  "anchor_ring": {
   "file": "sprites/anchor_ring.png",
   "w": 31.0,
   "h": 30.0,
   "pivot": [
    0.5,
    0.4167
   ],
   "group": "members",
   "load": "ch2",
   "note": "fixed anchor; pivot = the joint point"
  },
  "anchor_rock": {
   "file": "sprites/anchor_rock.png",
   "w": 27.5,
   "h": 28.5,
   "pivot": [
    0.4909,
    0.4737
   ],
   "group": "members",
   "load": "ch3",
   "note": "fixed anchor; pivot = the joint point"
  },
  "anchor_stake": {
   "file": "sprites/anchor_stake.png",
   "w": 27.0,
   "h": 54.0,
   "pivot": [
    0.5,
    0.25
   ],
   "group": "members",
   "load": "first",
   "note": "fixed anchor; pivot = the joint point"
  },
  "apple_tree": {
   "file": "sprites/apple_tree.png",
   "w": 124.0,
   "h": 129.0,
   "pivot": [
    0.4879,
    0.9806
   ],
   "group": "ch1",
   "load": "first",
   "note": "orchard tree, pivot = trunk foot"
  },
  "badge_01": {
   "file": "sprites/badge_01.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 1 (strings badges[0])"
  },
  "badge_02": {
   "file": "sprites/badge_02.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 2 (strings badges[1])"
  },
  "badge_03": {
   "file": "sprites/badge_03.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 3 (strings badges[2])"
  },
  "badge_04": {
   "file": "sprites/badge_04.png",
   "w": 81.0,
   "h": 53.5,
   "pivot": [
    0.5,
    0.5047
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 4 (strings badges[3])"
  },
  "badge_05": {
   "file": "sprites/badge_05.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 5 (strings badges[4])"
  },
  "badge_06": {
   "file": "sprites/badge_06.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 6 (strings badges[5])"
  },
  "badge_07": {
   "file": "sprites/badge_07.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 7 (strings badges[6])"
  },
  "badge_08": {
   "file": "sprites/badge_08.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 8 (strings badges[7])"
  },
  "badge_09": {
   "file": "sprites/badge_09.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 9 (strings badges[8])"
  },
  "badge_10": {
   "file": "sprites/badge_10.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 10 (strings badges[9])"
  },
  "badge_11": {
   "file": "sprites/badge_11.png",
   "w": 81.0,
   "h": 56.5,
   "pivot": [
    0.5,
    0.531
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 11 (strings badges[10])"
  },
  "badge_12": {
   "file": "sprites/badge_12.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 12 (strings badges[11])"
  },
  "badge_13": {
   "file": "sprites/badge_13.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 13 (strings badges[12])"
  },
  "badge_14": {
   "file": "sprites/badge_14.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 14 (strings badges[13])"
  },
  "badge_15": {
   "file": "sprites/badge_15.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 15 (strings badges[14])"
  },
  "badge_16": {
   "file": "sprites/badge_16.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "badge 16 (strings badges[15])"
  },
  "badge_locked": {
   "file": "sprites/badge_locked.png",
   "w": 81.0,
   "h": 53.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "awards",
   "load": "hub",
   "note": "locked badge plate (padlock)"
  },
  "bank_fill": {
   "file": "sprites/bank_fill.png",
   "w": 400.0,
   "h": 230.0,
   "pivot": [
    0.0,
    0.0652
   ],
   "group": "ch1",
   "load": "first",
   "note": "bank body to tile inland (tileable every 800, no side lines)"
  },
  "bank_l": {
   "file": "sprites/bank_l.png",
   "w": 410.0,
   "h": 229.5,
   "pivot": [
    0.9878,
    0.0632
   ],
   "group": "ch1",
   "load": "first",
   "note": "river bank end (l); pivot = the bank edge top (where the anchor stake goes); extend inland with bank_fill"
  },
  "bank_r": {
   "file": "sprites/bank_r.png",
   "w": 410.0,
   "h": 229.5,
   "pivot": [
    0.0122,
    0.0632
   ],
   "group": "ch1",
   "load": "first",
   "note": "river bank end (r); pivot = the bank edge top (where the anchor stake goes); extend inland with bank_fill"
  },
  "barge_0": {
   "file": "sprites/barge_0.png",
   "w": 499.5,
   "h": 131.0,
   "pivot": [
    0.039,
    0.9733
   ],
   "joints": {
    "chimney": [
     0.6527,
     0.0191
    ],
    "stern": [
     0.9399,
     0.7443
    ]
   },
   "group": "ch2",
   "load": "ch2",
   "note": "barge, pivot = bow at the water line; chimney top at \"chimney\" (2-10 lantern mark check)"
  },
  "barge_1": {
   "file": "sprites/barge_1.png",
   "w": 499.5,
   "h": 131.0,
   "pivot": [
    0.039,
    0.9733
   ],
   "joints": {
    "chimney": [
     0.6527,
     0.0191
    ],
    "stern": [
     0.9399,
     0.7443
    ]
   },
   "group": "ch2",
   "load": "ch2",
   "note": "barge, pivot = bow at the water line; chimney top at \"chimney\" (2-10 lantern mark check)"
  },
  "barge_horse": {
   "file": "sprites/barge_horse.png",
   "w": 187.5,
   "h": 111.5,
   "pivot": [
    0.4133,
    1.3004
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "towpath barge horse (background, small)"
  },
  "bargee_dog": {
   "file": "sprites/bargee_dog.png",
   "w": 72.5,
   "h": 55.5,
   "pivot": [
    0.4552,
    0.9369
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "the bargee's dog (barks once)"
  },
  "bargee_stand": {
   "file": "sprites/bargee_stand.png",
   "w": 51.5,
   "h": 137.5,
   "pivot": [
    0.4563,
    0.9273
   ],
   "joints": {
    "hand": [
     0.8447,
     0.4909
    ]
   },
   "group": "people",
   "load": "ch2",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "bargee_wave": {
   "file": "sprites/bargee_wave.png",
   "w": 62.5,
   "h": 138.0,
   "pivot": [
    0.352,
    0.9275
   ],
   "joints": {
    "hand": [
     0.672,
     0.4928
    ]
   },
   "group": "people",
   "load": "ch2",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "basket_turnips": {
   "file": "sprites/basket_turnips.png",
   "w": 74.0,
   "h": 81.0,
   "pivot": [
    0.5,
    0.9691
   ],
   "group": "ch1",
   "load": "first",
   "note": "turnip basket (1-1 rosette spot sits in it)"
  },
  "brace": {
   "file": "sprites/brace.png",
   "w": 78.0,
   "h": 16.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "members",
   "load": "first",
   "note": "hazel brace, centre on the joint, rotate 45 deg across it; _snug = the Snug flash frame (0.2 s)"
  },
  "brace_icon": {
   "file": "sprites/brace_icon.png",
   "w": 45.0,
   "h": 45.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "first",
   "note": "brace in the pouch"
  },
  "brace_icon_used": {
   "file": "sprites/brace_icon_used.png",
   "w": 49.0,
   "h": 49.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "common",
   "note": "used brace slot"
  },
  "brace_snug": {
   "file": "sprites/brace_snug.png",
   "w": 79.0,
   "h": 65.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "members",
   "load": "first",
   "note": "hazel brace, centre on the joint, rotate 45 deg across it; _snug = the Snug flash frame (0.2 s)"
  },
  "btn_board": {
   "file": "sprites/btn_board.png",
   "w": 220.0,
   "h": 70.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "common",
   "note": "timber board button (secondary); 9-slice insets 30 px; label in paper colour"
  },
  "btn_board_down": {
   "file": "sprites/btn_board_down.png",
   "w": 220.0,
   "h": 70.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "common",
   "note": "timber board button (secondary); 9-slice insets 30 px; label in paper colour"
  },
  "btn_go": {
   "file": "sprites/btn_go.png",
   "w": 120.0,
   "h": 120.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "first",
   "note": "GO = the gate latch, 104 px at 1280x720"
  },
  "btn_go_down": {
   "file": "sprites/btn_go_down.png",
   "w": 120.0,
   "h": 120.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "common",
   "note": "GO = the gate latch, 104 px at 1280x720"
  },
  "btn_wide": {
   "file": "sprites/btn_wide.png",
   "w": 220.0,
   "h": 70.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "common",
   "note": "seed-packet label button; 9-slice insets 30 px (PNG 60); label in the body font, Lamp Ink"
  },
  "btn_wide_down": {
   "file": "sprites/btn_wide_down.png",
   "w": 220.0,
   "h": 70.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "common",
   "note": "seed-packet label button; 9-slice insets 30 px (PNG 60); label in the body font, Lamp Ink"
  },
  "budget_board": {
   "file": "sprites/budget_board.png",
   "w": 280.0,
   "h": 75.0,
   "pivot": [
    0.5,
    0.5
   ],
   "joints": {
    "bar": [
     0.2393,
     0.5933
    ],
    "bar_end": [
     0.9179,
     0.5933
    ],
    "text": [
     0.4286,
     0.2933
    ]
   },
   "group": "ui",
   "load": "first",
   "note": "budget board: pennies text at \"text\", the chalk fill bar runs from \"bar\" to \"bar_end\""
  },
  "bunting": {
   "file": "sprites/bunting.png",
   "w": 304.0,
   "h": 52.0,
   "pivot": [
    0.0066,
    0.0385
   ],
   "joints": {
    "end": [
     0.9934,
     0.0385
    ]
   },
   "group": "ch1",
   "load": "first",
   "note": "bunting string between two points; pivot = left end"
  },
  "cable": {
   "file": "sprites/cable.png",
   "w": 280.0,
   "h": 40.0,
   "pivot": [
    0.0714,
    0.5
   ],
   "joints": {
    "end": [
     0.9286,
     0.5
    ]
   },
   "group": "members",
   "load": "ch3",
   "note": "steel cable 4 u taut; scale x for other lengths (up to 8 u: use two)"
  },
  "cable_amber": {
   "file": "sprites/cable_amber.png",
   "w": 280.0,
   "h": 40.0,
   "pivot": [
    0.0714,
    0.5
   ],
   "joints": {
    "end": [
     0.9286,
     0.5
    ]
   },
   "group": "members",
   "load": "ch3",
   "note": "steel cable 4 u taut; scale x for other lengths (up to 8 u: use two)"
  },
  "cable_red": {
   "file": "sprites/cable_red.png",
   "w": 280.0,
   "h": 40.0,
   "pivot": [
    0.0714,
    0.5
   ],
   "joints": {
    "end": [
     0.9286,
     0.5
    ]
   },
   "group": "members",
   "load": "ch3",
   "note": "steel cable 4 u taut; scale x for other lengths (up to 8 u: use two)"
  },
  "cable_slack": {
   "file": "sprites/cable_slack.png",
   "w": 280.0,
   "h": 90.0,
   "pivot": [
    0.0714,
    0.5
   ],
   "joints": {
    "end": [
     0.9286,
     0.5
    ]
   },
   "group": "members",
   "load": "ch3",
   "note": "pivot = start joint, \"end\" = end joint; length 4.0 u"
  },
  "cable_snapped": {
   "file": "sprites/cable_snapped.png",
   "w": 136.0,
   "h": 40.0,
   "pivot": [
    0.1471,
    0.5
   ],
   "joints": {
    "end": [
     0.8529,
     0.5
    ]
   },
   "group": "members",
   "load": "ch3",
   "note": "snapped cable end, splayed wires"
  },
  "cake_stand_2": {
   "file": "sprites/cake_stand_2.png",
   "w": 115.0,
   "h": 83.0,
   "pivot": [
    0.5,
    0.9699
   ],
   "group": "ch1",
   "load": "ch1",
   "note": "three-tier cake stand; _2 = top tier eaten"
  },
  "cake_stand_3": {
   "file": "sprites/cake_stand_3.png",
   "w": 115.0,
   "h": 113.0,
   "pivot": [
    0.5,
    0.9779
   ],
   "group": "ch1",
   "load": "ch1",
   "note": "three-tier cake stand; _2 = top tier eaten"
  },
  "cake_tent": {
   "file": "sprites/cake_tent.png",
   "w": 215.5,
   "h": 201.0,
   "pivot": [
    0.058,
    0.9876
   ],
   "group": "ending",
   "load": "ending",
   "note": "the cake tent"
  },
  "card_ch1": {
   "file": "sprites/card_ch1.png",
   "w": 600.0,
   "h": 400.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "cards",
   "load": "cards",
   "note": "story picture (text is live, strings.js); shown inside card_packet"
  },
  "card_ch2": {
   "file": "sprites/card_ch2.png",
   "w": 600.0,
   "h": 400.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "cards",
   "load": "cards",
   "note": "story picture (text is live, strings.js); shown inside card_packet"
  },
  "card_ch3": {
   "file": "sprites/card_ch3.png",
   "w": 600.0,
   "h": 400.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "cards",
   "load": "cards",
   "note": "story picture (text is live, strings.js); shown inside card_packet"
  },
  "card_end_1": {
   "file": "sprites/card_end_1.png",
   "w": 600.0,
   "h": 400.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "cards",
   "load": "cards",
   "note": "story picture (text is live, strings.js); shown inside card_packet"
  },
  "card_end_2": {
   "file": "sprites/card_end_2.png",
   "w": 600.0,
   "h": 400.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "cards",
   "load": "cards",
   "note": "story picture (text is live, strings.js); shown inside card_packet"
  },
  "card_end_3": {
   "file": "sprites/card_end_3.png",
   "w": 600.0,
   "h": 400.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "cards",
   "load": "cards",
   "note": "story picture (text is live, strings.js); shown inside card_packet"
  },
  "card_end_4": {
   "file": "sprites/card_end_4.png",
   "w": 600.0,
   "h": 400.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "cards",
   "load": "cards",
   "note": "story picture (text is live, strings.js); shown inside card_packet"
  },
  "card_intro_1": {
   "file": "sprites/card_intro_1.png",
   "w": 600.0,
   "h": 400.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "cards",
   "load": "cards",
   "note": "story picture (text is live, strings.js); shown inside card_packet"
  },
  "card_intro_2": {
   "file": "sprites/card_intro_2.png",
   "w": 600.0,
   "h": 400.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "cards",
   "load": "cards",
   "note": "story picture (text is live, strings.js); shown inside card_packet"
  },
  "card_intro_3": {
   "file": "sprites/card_intro_3.png",
   "w": 600.0,
   "h": 400.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "cards",
   "load": "cards",
   "note": "story picture (text is live, strings.js); shown inside card_packet"
  },
  "card_packet": {
   "file": "sprites/card_packet.png",
   "w": 350.0,
   "h": 460.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "common",
   "note": "result/story card as an Edwardian seed packet; 9-slice: top 60, sides 40, bottom 110 (the mustard foot band)"
  },
  "chalk_fill": {
   "file": "sprites/chalk_fill.png",
   "w": 20.0,
   "h": 15.0,
   "pivot": [
    0.0,
    0.5
   ],
   "group": "ui",
   "load": "first",
   "note": "chalk fill of the budget bar (scale x)"
  },
  "chalk_mark": {
   "file": "sprites/chalk_mark.png",
   "w": 15.0,
   "h": 30.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "first",
   "note": "thrift line chalk mark"
  },
  "chapel": {
   "file": "sprites/chapel.png",
   "w": 155.5,
   "h": 170.0,
   "pivot": [
    0.0161,
    0.9853
   ],
   "group": "ch1",
   "load": "first",
   "note": "chapel with bell-cote, pivot bottom-left"
  },
  "coal_heap": {
   "file": "sprites/coal_heap.png",
   "w": 160.0,
   "h": 68.0,
   "pivot": [
    0.0312,
    0.9265
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "coal wharf heap"
  },
  "cottage_0": {
   "file": "sprites/cottage_0.png",
   "w": 190.0,
   "h": 156.5,
   "pivot": [
    0.0263,
    0.9744
   ],
   "group": "ch1",
   "load": "first",
   "note": "thatched cottage, pivot = bottom-left"
  },
  "cottage_1": {
   "file": "sprites/cottage_1.png",
   "w": 190.0,
   "h": 157.5,
   "pivot": [
    0.0263,
    0.9683
   ],
   "group": "ch1",
   "load": "ch1",
   "note": "thatched cottage, pivot = bottom-left"
  },
  "crack_overlay": {
   "file": "sprites/crack_overlay.png",
   "w": 160.0,
   "h": 40.0,
   "pivot": [
    0.125,
    0.5
   ],
   "joints": {
    "end": [
     0.875,
     0.5
    ]
   },
   "group": "members",
   "load": "common",
   "note": "colour-blind setting: drawn over red members, scaled to their length"
  },
  "dandelion": {
   "file": "sprites/dandelion.png",
   "w": 28.0,
   "h": 63.5,
   "pivot": [
    0.5536,
    0.9528
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "dandelion (marks where Sundial naps)"
  },
  "dandelion_seeds": {
   "file": "sprites/dandelion_seeds.png",
   "w": 27.5,
   "h": 63.5,
   "pivot": [
    0.5636,
    0.9528
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "dandelion (marks where Sundial naps)"
  },
  "drawbridge_leaf": {
   "file": "sprites/drawbridge_leaf.png",
   "w": 315.0,
   "h": 52.5,
   "pivot": [
    0.2302,
    0.6667
   ],
   "joints": {
    "tip": [
     0.9921,
     0.6667
    ]
   },
   "group": "ch2",
   "load": "ch2",
   "note": "lifting leaf; pivot = hinge; rotate up to -75 deg; deck for the animals when down"
  },
  "drawbridge_lever_0": {
   "file": "sprites/drawbridge_lever_0.png",
   "w": 92.5,
   "h": 50.5,
   "pivot": [
    0.5946,
    0.8614
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "scene lever (0 = leaf down, 1 = up)"
  },
  "drawbridge_lever_1": {
   "file": "sprites/drawbridge_lever_1.png",
   "w": 92.5,
   "h": 50.5,
   "pivot": [
    0.4054,
    0.8614
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "scene lever (0 = leaf down, 1 = up)"
  },
  "duck_dabble": {
   "file": "sprites/duck_dabble.png",
   "w": 65.5,
   "h": 33.5,
   "pivot": [
    0.4351,
    0.7463
   ],
   "group": "ch1",
   "load": "ch1",
   "note": "duck, pivot = water line"
  },
  "duck_surf": {
   "file": "sprites/duck_surf.png",
   "w": 70.5,
   "h": 43.0,
   "pivot": [
    0.4752,
    0.8721
   ],
   "group": "ch1",
   "load": "ch1",
   "note": "duck, pivot = water line"
  },
  "duck_swim": {
   "file": "sprites/duck_swim.png",
   "w": 65.5,
   "h": 42.0,
   "pivot": [
    0.4351,
    0.8929
   ],
   "group": "ch1",
   "load": "first",
   "note": "duck, pivot = water line"
  },
  "dulcie_cheer": {
   "file": "sprites/dulcie_cheer.png",
   "w": 70.0,
   "h": 134.0,
   "pivot": [
    0.4429,
    0.9328
   ],
   "joints": {
    "hand": [
     0.7286,
     0.4851
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "dulcie_jam": {
   "file": "sprites/dulcie_jam.png",
   "w": 99.5,
   "h": 132.0,
   "pivot": [
    0.5025,
    0.9318
   ],
   "joints": {
    "hand": [
     0.7035,
     0.4773
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "dulcie_kneel": {
   "file": "sprites/dulcie_kneel.png",
   "w": 101.5,
   "h": 115.5,
   "pivot": [
    0.4877,
    0.9481
   ],
   "joints": {
    "hand": [
     0.6847,
     0.4286
    ]
   },
   "group": "people",
   "load": "first",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "dulcie_ladder": {
   "file": "sprites/dulcie_ladder.png",
   "w": 83.0,
   "h": 158.0,
   "pivot": [
    0.4337,
    0.943
   ],
   "joints": {
    "hand": [
     0.6747,
     0.5633
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "dulcie_point": {
   "file": "sprites/dulcie_point.png",
   "w": 81.5,
   "h": 134.5,
   "pivot": [
    0.4785,
    0.9294
   ],
   "joints": {
    "hand": [
     0.7239,
     0.4833
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "dulcie_portrait": {
   "file": "sprites/dulcie_portrait.png",
   "w": 132.5,
   "h": 104.0,
   "pivot": [
    0.634,
    1.0
   ],
   "group": "people",
   "load": "common",
   "note": "head-and-shoulders portrait for cards / hub tags"
  },
  "dulcie_punt": {
   "file": "sprites/dulcie_punt.png",
   "w": 140.5,
   "h": 134.0,
   "pivot": [
    0.3238,
    0.9328
   ],
   "joints": {
    "hand": [
     0.4662,
     0.4851
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "dulcie_sit": {
   "file": "sprites/dulcie_sit.png",
   "w": 89.0,
   "h": 113.5,
   "pivot": [
    0.4045,
    1.022
   ],
   "joints": {
    "hand": [
     0.6292,
     0.4934
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "dulcie_stand": {
   "file": "sprites/dulcie_stand.png",
   "w": 63.5,
   "h": 134.5,
   "pivot": [
    0.5748,
    0.9294
   ],
   "joints": {
    "hand": [
     0.8898,
     0.4833
    ]
   },
   "group": "people",
   "load": "first",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "dulcie_swing": {
   "file": "sprites/dulcie_swing.png",
   "w": 60.5,
   "h": 166.5,
   "pivot": [
    0.4628,
    0.9459
   ],
   "joints": {
    "hand": [
     0.7934,
     0.5856
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "dulcie_thumbs": {
   "file": "sprites/dulcie_thumbs.png",
   "w": 71.0,
   "h": 134.5,
   "pivot": [
    0.4789,
    0.9294
   ],
   "joints": {
    "hand": [
     0.7606,
     0.4833
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "dulcie_walk_a": {
   "file": "sprites/dulcie_walk_a.png",
   "w": 67.0,
   "h": 133.5,
   "pivot": [
    0.5672,
    0.9363
   ],
   "joints": {
    "hand": [
     0.8657,
     0.4869
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "dulcie_walk_b": {
   "file": "sprites/dulcie_walk_b.png",
   "w": 67.0,
   "h": 133.5,
   "pivot": [
    0.5672,
    0.9363
   ],
   "joints": {
    "hand": [
     0.8657,
     0.4869
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "dulcie_wave": {
   "file": "sprites/dulcie_wave.png",
   "w": 73.0,
   "h": 134.5,
   "pivot": [
    0.4452,
    0.9294
   ],
   "joints": {
    "hand": [
     0.7192,
     0.4833
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "far_hills_1": {
   "file": "sprites/far_hills_1.png",
   "w": 520.0,
   "h": 150.0,
   "pivot": [
    0.0,
    1.0
   ],
   "group": "ch1",
   "load": "first",
   "note": "far plane (flat tint, no line); tile horizontally every 1040 PNG px (520 draw px); parallax 0.2"
  },
  "far_hills_2": {
   "file": "sprites/far_hills_2.png",
   "w": 520.0,
   "h": 150.0,
   "pivot": [
    0.0,
    1.0
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "far plane ch2; tileable"
  },
  "far_hills_3": {
   "file": "sprites/far_hills_3.png",
   "w": 520.0,
   "h": 150.0,
   "pivot": [
    0.0,
    1.0
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "far plane ch3"
  },
  "far_trees_1": {
   "file": "sprites/far_trees_1.png",
   "w": 520.0,
   "h": 100.0,
   "pivot": [
    0.0,
    1.0
   ],
   "group": "ch1",
   "load": "first",
   "note": "second far plane; parallax 0.4; tileable"
  },
  "far_trees_2": {
   "file": "sprites/far_trees_2.png",
   "w": 520.0,
   "h": 100.0,
   "pivot": [
    0.0,
    1.0
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "second far plane ch2; tileable"
  },
  "far_trees_3": {
   "file": "sprites/far_trees_3.png",
   "w": 520.0,
   "h": 100.0,
   "pivot": [
    0.0,
    1.0
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "second far plane ch3"
  },
  "feed_sack_1": {
   "file": "sprites/feed_sack_1.png",
   "w": 77.0,
   "h": 107.0,
   "pivot": [
    0.5,
    1.0
   ],
   "group": "hub",
   "load": "hub",
   "note": "feed sack day 1 (fixed contents painted on)"
  },
  "feed_sack_2": {
   "file": "sprites/feed_sack_2.png",
   "w": 77.0,
   "h": 107.0,
   "pivot": [
    0.5,
    1.0
   ],
   "group": "hub",
   "load": "hub",
   "note": "feed sack day 2 (fixed contents painted on)"
  },
  "feed_sack_3": {
   "file": "sprites/feed_sack_3.png",
   "w": 77.0,
   "h": 107.0,
   "pivot": [
    0.5,
    1.0
   ],
   "group": "hub",
   "load": "hub",
   "note": "feed sack day 3 (fixed contents painted on)"
  },
  "feed_sack_4": {
   "file": "sprites/feed_sack_4.png",
   "w": 77.0,
   "h": 107.0,
   "pivot": [
    0.5,
    1.0
   ],
   "group": "hub",
   "load": "hub",
   "note": "feed sack day 4 (fixed contents painted on)"
  },
  "feed_sack_5": {
   "file": "sprites/feed_sack_5.png",
   "w": 77.0,
   "h": 107.0,
   "pivot": [
    0.5,
    1.0
   ],
   "group": "hub",
   "load": "hub",
   "note": "feed sack day 5 (fixed contents painted on)"
  },
  "feed_sack_6": {
   "file": "sprites/feed_sack_6.png",
   "w": 77.0,
   "h": 107.0,
   "pivot": [
    0.5,
    1.0
   ],
   "group": "hub",
   "load": "hub",
   "note": "feed sack day 6 (fixed contents painted on)"
  },
  "feed_sack_7": {
   "file": "sprites/feed_sack_7.png",
   "w": 77.0,
   "h": 107.0,
   "pivot": [
    0.5,
    1.0
   ],
   "group": "hub",
   "load": "hub",
   "note": "feed sack day 7 (fixed contents painted on)"
  },
  "fog": {
   "file": "sprites/fog.png",
   "w": 520.0,
   "h": 100.0,
   "pivot": [
    0.0,
    1.0
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "fog bank (flat tint, no transparency), tile x; drift 10 px/s; reveal the barge by moving it down"
  },
  "ford_stone": {
   "file": "sprites/ford_stone.png",
   "w": 136.0,
   "h": 56.0,
   "pivot": [
    0.4706,
    0.125
   ],
   "joints": {
    "peg": [
     0.4706,
     0.125
    ]
   },
   "group": "ch1",
   "load": "ch1",
   "note": "1-5 flat ford stone with its pier peg at \"peg\"; sits in the water"
  },
  "gate": {
   "file": "sprites/gate.png",
   "w": 129.0,
   "h": 105.5,
   "pivot": [
    0.0853,
    0.9763
   ],
   "group": "ch1",
   "load": "first",
   "note": "five-bar field gate where the herd waits (hinge at the pivot)"
  },
  "ghost_plank": {
   "file": "sprites/ghost_plank.png",
   "w": 160.0,
   "h": 40.0,
   "pivot": [
    0.125,
    0.5
   ],
   "joints": {
    "end": [
     0.875,
     0.5
    ]
   },
   "group": "members",
   "load": "first",
   "note": "chalk ghost plank (1-1 hint), pulse scale 1.0-1.04"
  },
  "glyph_drag": {
   "file": "sprites/glyph_drag.png",
   "w": 105.5,
   "h": 58.5,
   "pivot": [
    0.4597,
    0.3846
   ],
   "group": "ui",
   "load": "first",
   "note": "onboarding: drag"
  },
  "glyph_tap": {
   "file": "sprites/glyph_tap.png",
   "w": 57.5,
   "h": 96.0,
   "pivot": [
    0.5478,
    0.2708
   ],
   "group": "ui",
   "load": "first",
   "note": "onboarding: tap (ring over the joint)"
  },
  "golden_rosette": {
   "file": "sprites/golden_rosette.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.3388
   ],
   "group": "wear",
   "load": "hub",
   "note": "the Golden Rosette (all 30 rosettes); pivot = attachment point"
  },
  "gorge_wall_l": {
   "file": "sprites/gorge_wall_l.png",
   "w": 222.0,
   "h": 382.5,
   "pivot": [
    0.9572,
    0.0065
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "gorge wall (l); pivot = the rim edge (rock bolts go here); extends down"
  },
  "gorge_wall_r": {
   "file": "sprites/gorge_wall_r.png",
   "w": 222.5,
   "h": 382.5,
   "pivot": [
    0.0449,
    0.0065
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "gorge wall (r); pivot = the rim edge (rock bolts go here); extends down"
  },
  "hawthorn": {
   "file": "sprites/hawthorn.png",
   "w": 113.5,
   "h": 131.5,
   "pivot": [
    0.4846,
    0.962
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "hawthorn on the rim; _bent = in a gust"
  },
  "hawthorn_bent": {
   "file": "sprites/hawthorn_bent.png",
   "w": 119.0,
   "h": 131.5,
   "pivot": [
    0.2143,
    0.962
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "hawthorn on the rim; _bent = in a gust"
  },
  "hedge": {
   "file": "sprites/hedge.png",
   "w": 260.0,
   "h": 43.5,
   "pivot": [
    0.0192,
    0.8851
   ],
   "group": "ch1",
   "load": "first",
   "note": "hedge run, pivot bottom-left; tile x every 500"
  },
  "hen_bustle_body": {
   "file": "sprites/hen_bustle_body.png",
   "w": 115.5,
   "h": 108.5,
   "pivot": [
    0.4589,
    0.9539
   ],
   "joints": {
    "wing": [
     0.4329,
     0.6313
    ],
    "leg_n": [
     0.4935,
     0.9539
    ],
    "leg_f": [
     0.4329,
     0.9539
    ],
    "hat": [
     0.7446,
     0.1429
    ]
   },
   "group": "cast",
   "load": "first",
   "note": "pivot = hip (legs hang from leg_n/leg_f); wing on \"wing\"; layer: far leg, body, wing, near leg"
  },
  "hen_bustle_body_peck": {
   "file": "sprites/hen_bustle_body_peck.png",
   "w": 138.0,
   "h": 84.5,
   "pivot": [
    0.3841,
    0.9408
   ],
   "joints": {
    "wing": [
     0.3623,
     0.5266
    ],
    "leg_n": [
     0.413,
     0.9408
    ],
    "leg_f": [
     0.3623,
     0.9408
    ],
    "hat": [
     0.7971,
     0.5266
    ]
   },
   "group": "cast",
   "load": "first",
   "note": "pivot = hip (legs hang from leg_n/leg_f); wing on \"wing\"; layer: far leg, body, wing, near leg"
  },
  "hen_bustle_fall": {
   "file": "sprites/hen_bustle_fall.png",
   "w": 115.5,
   "h": 137.0,
   "pivot": [
    0.4589,
    0.5365
   ],
   "group": "cast",
   "load": "common",
   "note": "falling: wings up, legs out, beak open (never tumbling)"
  },
  "hen_bustle_shake": {
   "file": "sprites/hen_bustle_shake.png",
   "w": 143.0,
   "h": 136.0,
   "pivot": [
    0.5,
    0.761
   ],
   "group": "cast",
   "load": "common",
   "note": "shake-off with feathers flying"
  },
  "hen_bustle_swim": {
   "file": "sprites/hen_bustle_swim.png",
   "w": 115.5,
   "h": 92.5,
   "pivot": [
    0.4589,
    0.973
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = water line; paddle bob"
  },
  "hen_bustle_wing_fold": {
   "file": "sprites/hen_bustle_wing_fold.png",
   "w": 60.5,
   "h": 27.0,
   "pivot": [
    0.4298,
    0.3519
   ],
   "group": "cast",
   "load": "first",
   "note": "pivot = wing root; flap = fold, mid, up, mid (0.06 s each)"
  },
  "hen_bustle_wing_mid": {
   "file": "sprites/hen_bustle_wing_mid.png",
   "w": 45.5,
   "h": 43.0,
   "pivot": [
    0.1648,
    0.8372
   ],
   "group": "cast",
   "load": "first",
   "note": "pivot = wing root; flap = fold, mid, up, mid (0.06 s each)"
  },
  "hen_bustle_wing_up": {
   "file": "sprites/hen_bustle_wing_up.png",
   "w": 27.5,
   "h": 65.0,
   "pivot": [
    0.2364,
    0.8846
   ],
   "group": "cast",
   "load": "first",
   "note": "pivot = wing root; flap = fold, mid, up, mid (0.06 s each)"
  },
  "hen_cream_body": {
   "file": "sprites/hen_cream_body.png",
   "w": 115.5,
   "h": 107.5,
   "pivot": [
    0.4589,
    0.9535
   ],
   "joints": {
    "wing": [
     0.4329,
     0.6279
    ],
    "leg_n": [
     0.4935,
     0.9535
    ],
    "leg_f": [
     0.4329,
     0.9535
    ],
    "hat": [
     0.7446,
     0.1349
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = hip (legs hang from leg_n/leg_f); wing on \"wing\"; layer: far leg, body, wing, near leg"
  },
  "hen_cream_body_peck": {
   "file": "sprites/hen_cream_body_peck.png",
   "w": 138.0,
   "h": 84.5,
   "pivot": [
    0.3841,
    0.9408
   ],
   "joints": {
    "wing": [
     0.3623,
     0.5266
    ],
    "leg_n": [
     0.413,
     0.9408
    ],
    "leg_f": [
     0.3623,
     0.9408
    ],
    "hat": [
     0.7971,
     0.5266
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = hip (legs hang from leg_n/leg_f); wing on \"wing\"; layer: far leg, body, wing, near leg"
  },
  "hen_cream_fall": {
   "file": "sprites/hen_cream_fall.png",
   "w": 115.5,
   "h": 136.0,
   "pivot": [
    0.4589,
    0.5331
   ],
   "group": "cast",
   "load": "common",
   "note": "falling: wings up, legs out, beak open (never tumbling)"
  },
  "hen_cream_shake": {
   "file": "sprites/hen_cream_shake.png",
   "w": 143.0,
   "h": 135.0,
   "pivot": [
    0.5,
    0.7593
   ],
   "group": "cast",
   "load": "common",
   "note": "shake-off with feathers flying"
  },
  "hen_cream_swim": {
   "file": "sprites/hen_cream_swim.png",
   "w": 115.5,
   "h": 92.5,
   "pivot": [
    0.4589,
    0.973
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = water line; paddle bob"
  },
  "hen_cream_wing_fold": {
   "file": "sprites/hen_cream_wing_fold.png",
   "w": 60.5,
   "h": 27.0,
   "pivot": [
    0.4298,
    0.3519
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = wing root; flap = fold, mid, up, mid (0.06 s each)"
  },
  "hen_cream_wing_mid": {
   "file": "sprites/hen_cream_wing_mid.png",
   "w": 45.5,
   "h": 43.0,
   "pivot": [
    0.1648,
    0.8372
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = wing root; flap = fold, mid, up, mid (0.06 s each)"
  },
  "hen_cream_wing_up": {
   "file": "sprites/hen_cream_wing_up.png",
   "w": 27.5,
   "h": 65.0,
   "pivot": [
    0.2364,
    0.8846
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = wing root; flap = fold, mid, up, mid (0.06 s each)"
  },
  "hen_leg": {
   "file": "sprites/hen_leg.png",
   "w": 32.0,
   "h": 39.0,
   "pivot": [
    0.4062,
    0.1795
   ],
   "joints": {
    "foot": [
     0.4062,
     0.7692
    ]
   },
   "group": "cast",
   "load": "first",
   "note": "pivot = hip; walk 4 = angles 20, 0, -20, 0 (legs half a cycle apart), 0.35 s per step"
  },
  "hen_slate_body": {
   "file": "sprites/hen_slate_body.png",
   "w": 115.5,
   "h": 107.5,
   "pivot": [
    0.4589,
    0.9535
   ],
   "joints": {
    "wing": [
     0.4329,
     0.6279
    ],
    "leg_n": [
     0.4935,
     0.9535
    ],
    "leg_f": [
     0.4329,
     0.9535
    ],
    "hat": [
     0.7446,
     0.1349
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = hip (legs hang from leg_n/leg_f); wing on \"wing\"; layer: far leg, body, wing, near leg"
  },
  "hen_slate_body_peck": {
   "file": "sprites/hen_slate_body_peck.png",
   "w": 138.0,
   "h": 84.5,
   "pivot": [
    0.3841,
    0.9408
   ],
   "joints": {
    "wing": [
     0.3623,
     0.5266
    ],
    "leg_n": [
     0.413,
     0.9408
    ],
    "leg_f": [
     0.3623,
     0.9408
    ],
    "hat": [
     0.7971,
     0.5266
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = hip (legs hang from leg_n/leg_f); wing on \"wing\"; layer: far leg, body, wing, near leg"
  },
  "hen_slate_fall": {
   "file": "sprites/hen_slate_fall.png",
   "w": 115.5,
   "h": 136.0,
   "pivot": [
    0.4589,
    0.5331
   ],
   "group": "cast",
   "load": "common",
   "note": "falling: wings up, legs out, beak open (never tumbling)"
  },
  "hen_slate_shake": {
   "file": "sprites/hen_slate_shake.png",
   "w": 143.0,
   "h": 135.0,
   "pivot": [
    0.5,
    0.7593
   ],
   "group": "cast",
   "load": "common",
   "note": "shake-off with feathers flying"
  },
  "hen_slate_swim": {
   "file": "sprites/hen_slate_swim.png",
   "w": 115.5,
   "h": 92.5,
   "pivot": [
    0.4589,
    0.973
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = water line; paddle bob"
  },
  "hen_slate_wing_fold": {
   "file": "sprites/hen_slate_wing_fold.png",
   "w": 60.5,
   "h": 27.0,
   "pivot": [
    0.4298,
    0.3519
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = wing root; flap = fold, mid, up, mid (0.06 s each)"
  },
  "hen_slate_wing_mid": {
   "file": "sprites/hen_slate_wing_mid.png",
   "w": 45.5,
   "h": 43.0,
   "pivot": [
    0.1648,
    0.8372
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = wing root; flap = fold, mid, up, mid (0.06 s each)"
  },
  "hen_slate_wing_up": {
   "file": "sprites/hen_slate_wing_up.png",
   "w": 27.5,
   "h": 65.0,
   "pivot": [
    0.2364,
    0.8846
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = wing root; flap = fold, mid, up, mid (0.06 s each)"
  },
  "hub_bench": {
   "file": "sprites/hub_bench.png",
   "w": 412.5,
   "h": 172.5,
   "pivot": [
    0.0061,
    0.9855
   ],
   "group": "hub",
   "load": "hub",
   "note": "workbench (tag \"Workshop\"); padlock until 1-10"
  },
  "hub_door": {
   "file": "sprites/hub_door.png",
   "w": 155.0,
   "h": 285.0,
   "pivot": [
    0.0161,
    0.9912
   ],
   "joints": {
    "chalk": [
     0.5,
     0.1404
    ]
   },
   "group": "hub",
   "load": "hub",
   "note": "workshop door; the streak chalk tally (live, drawn in code as paper strokes) at \"chalk\""
  },
  "hub_hat_pegs": {
   "file": "sprites/hub_hat_pegs.png",
   "w": 305.0,
   "h": 177.5,
   "pivot": [
    0.0082,
    0.0986
   ],
   "group": "hub",
   "load": "hub",
   "note": "hat pegs + ribbon box (tag \"Ribbons & hats\")"
  },
  "hub_rosette_board": {
   "file": "sprites/hub_rosette_board.png",
   "w": 515.0,
   "h": 295.0,
   "pivot": [
    0.0,
    0.0
   ],
   "joints": {
    "s01": [
     0.1029,
     0.2136
    ],
    "s02": [
     0.1903,
     0.2136
    ],
    "s03": [
     0.2777,
     0.2136
    ],
    "s04": [
     0.365,
     0.2136
    ],
    "s05": [
     0.4524,
     0.2136
    ],
    "s06": [
     0.5398,
     0.2136
    ],
    "s07": [
     0.6272,
     0.2136
    ],
    "s08": [
     0.7146,
     0.2136
    ],
    "s09": [
     0.8019,
     0.2136
    ],
    "s10": [
     0.8893,
     0.2136
    ],
    "s11": [
     0.1029,
     0.4847
    ],
    "s12": [
     0.1903,
     0.4847
    ],
    "s13": [
     0.2777,
     0.4847
    ],
    "s14": [
     0.365,
     0.4847
    ],
    "s15": [
     0.4524,
     0.4847
    ],
    "s16": [
     0.5398,
     0.4847
    ],
    "s17": [
     0.6272,
     0.4847
    ],
    "s18": [
     0.7146,
     0.4847
    ],
    "s19": [
     0.8019,
     0.4847
    ],
    "s20": [
     0.8893,
     0.4847
    ],
    "s21": [
     0.1029,
     0.7559
    ],
    "s22": [
     0.1903,
     0.7559
    ],
    "s23": [
     0.2777,
     0.7559
    ],
    "s24": [
     0.365,
     0.7559
    ],
    "s25": [
     0.4524,
     0.7559
    ],
    "s26": [
     0.5398,
     0.7559
    ],
    "s27": [
     0.6272,
     0.7559
    ],
    "s28": [
     0.7146,
     0.7559
    ],
    "s29": [
     0.8019,
     0.7559
    ],
    "s30": [
     0.8893,
     0.7559
    ]
   },
   "group": "hub",
   "load": "hub",
   "note": "rosette board; slot centres s01..s30 (draw rosette_NN at 0.42 scale on its slot)"
  },
  "hub_souvenirs": {
   "file": "sprites/hub_souvenirs.png",
   "w": 164.5,
   "h": 135.0,
   "pivot": [
    -0.0456,
    1.0556
   ],
   "group": "hub",
   "load": "hub",
   "note": "souvenirs: mill-wheel paddle (ch1), lock windlass (ch2), railway lamp (ch3); crop by chapter in code or draw all"
  },
  "hub_tool_box": {
   "file": "sprites/hub_tool_box.png",
   "w": 295.0,
   "h": 163.0,
   "pivot": [
    0.0254,
    0.9847
   ],
   "joints": {
    "b01": [
     0.1102,
     0.3405
    ],
    "b02": [
     0.2186,
     0.3405
    ],
    "b03": [
     0.3271,
     0.3405
    ],
    "b04": [
     0.4356,
     0.3405
    ],
    "b05": [
     0.5441,
     0.3405
    ],
    "b06": [
     0.6525,
     0.3405
    ],
    "b07": [
     0.761,
     0.3405
    ],
    "b08": [
     0.8695,
     0.3405
    ],
    "b09": [
     0.1102,
     0.6779
    ],
    "b10": [
     0.2186,
     0.6779
    ],
    "b11": [
     0.3271,
     0.6779
    ],
    "b12": [
     0.4356,
     0.6779
    ],
    "b13": [
     0.5441,
     0.6779
    ],
    "b14": [
     0.6525,
     0.6779
    ],
    "b15": [
     0.761,
     0.6779
    ],
    "b16": [
     0.8695,
     0.6779
    ]
   },
   "group": "hub",
   "load": "hub",
   "note": "tool box; brass badge plates go on b01..b16 at 0.3 scale"
  },
  "hub_wall": {
   "file": "sprites/hub_wall.png",
   "w": 1280.0,
   "h": 720.0,
   "pivot": [
    0.0,
    0.0
   ],
   "group": "hub",
   "load": "hub",
   "note": "full-screen workshop backdrop (2560x1440 = 1280x720 draw); windows: mill wheel (left), Marchpane's eye (right)"
  },
  "icon_again": {
   "file": "sprites/icon_again.png",
   "w": 61.5,
   "h": 53.5,
   "pivot": [
    0.5041,
    0.4673
   ],
   "group": "ui",
   "load": "common",
   "note": "again (rope arrow)"
  },
  "icon_close": {
   "file": "sprites/icon_close.png",
   "w": 47.0,
   "h": 46.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "common",
   "note": "close (crossed laths)"
  },
  "icon_lang": {
   "file": "sprites/icon_lang.png",
   "w": 67.0,
   "h": 69.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "first",
   "note": "language button: a three-arm signpost (cycles languages)"
  },
  "icon_music": {
   "file": "sprites/icon_music.png",
   "w": 61.0,
   "h": 39.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "common",
   "note": "music = concertina"
  },
  "icon_next": {
   "file": "sprites/icon_next.png",
   "w": 60.5,
   "h": 45.5,
   "pivot": [
    0.5041,
    0.4945
   ],
   "group": "ui",
   "load": "common",
   "note": "next"
  },
  "icon_pause": {
   "file": "sprites/icon_pause.png",
   "w": 59.5,
   "h": 46.5,
   "pivot": [
    0.5126,
    0.4624
   ],
   "group": "ui",
   "load": "first",
   "note": "pause = the carpenter's pencil"
  },
  "icon_settings": {
   "file": "sprites/icon_settings.png",
   "w": 42.0,
   "h": 64.5,
   "pivot": [
    0.5,
    0.4574
   ],
   "group": "ui",
   "load": "common",
   "note": "settings = oil lamp"
  },
  "icon_sound": {
   "file": "sprites/icon_sound.png",
   "w": 37.0,
   "h": 52.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "common",
   "note": "sound = hand bell"
  },
  "icon_twop": {
   "file": "sprites/icon_twop.png",
   "w": 88.0,
   "h": 33.0,
   "pivot": [
    0.483,
    0.5455
   ],
   "group": "ui",
   "load": "common",
   "note": "two players = the two-handled saw"
  },
  "icon_undo": {
   "file": "sprites/icon_undo.png",
   "w": 46.5,
   "h": 36.5,
   "pivot": [
    0.4839,
    0.5479
   ],
   "group": "ui",
   "load": "first",
   "note": "undo = a curled shaving"
  },
  "icon_video": {
   "file": "sprites/icon_video.png",
   "w": 85.5,
   "h": 63.5,
   "pivot": [
    0.4678,
    0.5433
   ],
   "group": "ui",
   "load": "common",
   "note": "rewarded offer glyph: a magic lantern (not a red play button)"
  },
  "icon_workshop": {
   "file": "sprites/icon_workshop.png",
   "w": 65.0,
   "h": 54.0,
   "pivot": [
    0.5,
    0.537
   ],
   "group": "ui",
   "load": "common",
   "note": "workshop / hub"
  },
  "iron_1u": {
   "file": "sprites/iron_1u.png",
   "w": 100.0,
   "h": 40.0,
   "pivot": [
    0.2,
    0.5
   ],
   "joints": {
    "end": [
     0.8,
     0.5
    ]
   },
   "group": "members",
   "load": "ch2",
   "note": "pivot = start joint, \"end\" = end joint; length 1.0 u"
  },
  "iron_1u_amber": {
   "file": "sprites/iron_1u_amber.png",
   "w": 100.0,
   "h": 40.0,
   "pivot": [
    0.2,
    0.5
   ],
   "joints": {
    "end": [
     0.8,
     0.5
    ]
   },
   "group": "members",
   "load": "ch2",
   "note": "pivot = start joint, \"end\" = end joint; length 1.0 u"
  },
  "iron_1u_red": {
   "file": "sprites/iron_1u_red.png",
   "w": 100.0,
   "h": 40.0,
   "pivot": [
    0.2,
    0.5
   ],
   "joints": {
    "end": [
     0.8,
     0.5
    ]
   },
   "group": "members",
   "load": "ch2",
   "note": "pivot = start joint, \"end\" = end joint; length 1.0 u"
  },
  "iron_3u": {
   "file": "sprites/iron_3u.png",
   "w": 220.0,
   "h": 40.0,
   "pivot": [
    0.0909,
    0.5
   ],
   "joints": {
    "end": [
     0.9091,
     0.5
    ]
   },
   "group": "members",
   "load": "ch2",
   "note": "pivot = start joint, \"end\" = end joint; length 3.0 u"
  },
  "iron_3u_amber": {
   "file": "sprites/iron_3u_amber.png",
   "w": 220.0,
   "h": 40.0,
   "pivot": [
    0.0909,
    0.5
   ],
   "joints": {
    "end": [
     0.9091,
     0.5
    ]
   },
   "group": "members",
   "load": "ch2",
   "note": "pivot = start joint, \"end\" = end joint; length 3.0 u"
  },
  "iron_3u_broken_l": {
   "file": "sprites/iron_3u_broken_l.png",
   "w": 220.0,
   "h": 40.0,
   "pivot": [
    0.0909,
    0.5
   ],
   "joints": {
    "end": [
     0.9091,
     0.5
    ]
   },
   "group": "members",
   "load": "ch2",
   "note": "snapped half of the iron bar"
  },
  "iron_3u_broken_r": {
   "file": "sprites/iron_3u_broken_r.png",
   "w": 220.0,
   "h": 40.0,
   "pivot": [
    0.0909,
    0.5
   ],
   "joints": {
    "end": [
     0.9091,
     0.5
    ]
   },
   "group": "members",
   "load": "ch2",
   "note": "snapped half of the iron bar"
  },
  "iron_3u_red": {
   "file": "sprites/iron_3u_red.png",
   "w": 220.0,
   "h": 40.0,
   "pivot": [
    0.0909,
    0.5
   ],
   "joints": {
    "end": [
     0.9091,
     0.5
    ]
   },
   "group": "members",
   "load": "ch2",
   "note": "pivot = start joint, \"end\" = end joint; length 3.0 u"
  },
  "island": {
   "file": "sprites/island.png",
   "w": 278.5,
   "h": 180.0,
   "pivot": [
    0.0305,
    0.6389
   ],
   "group": "ch1",
   "load": "ch1",
   "note": "1-9 island with the scarecrow (two races, one budget)"
  },
  "joint_bolt": {
   "file": "sprites/joint_bolt.png",
   "w": 19.0,
   "h": 17.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "members",
   "load": "ch2",
   "note": "iron bolt joint (Iron Bolts unlock and iron/steel members)"
  },
  "joint_bolt_amber": {
   "file": "sprites/joint_bolt_amber.png",
   "w": 19.0,
   "h": 17.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "members",
   "load": "ch2",
   "note": "iron bolt joint (Iron Bolts unlock and iron/steel members)"
  },
  "joint_bolt_red": {
   "file": "sprites/joint_bolt_red.png",
   "w": 19.0,
   "h": 17.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "members",
   "load": "ch2",
   "note": "iron bolt joint (Iron Bolts unlock and iron/steel members)"
  },
  "joint_bolt_snap": {
   "file": "sprites/joint_bolt_snap.png",
   "w": 19.0,
   "h": 17.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "members",
   "load": "ch2",
   "note": "iron bolt joint (Iron Bolts unlock and iron/steel members)"
  },
  "joint_wood": {
   "file": "sprites/joint_wood.png",
   "w": 19.0,
   "h": 19.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "members",
   "load": "first",
   "note": "wooden peg joint; amber/red get an ink ring so the state reads on a phone"
  },
  "joint_wood_amber": {
   "file": "sprites/joint_wood_amber.png",
   "w": 25.0,
   "h": 25.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "members",
   "load": "first",
   "note": "wooden peg joint; amber/red get an ink ring so the state reads on a phone"
  },
  "joint_wood_red": {
   "file": "sprites/joint_wood_red.png",
   "w": 25.0,
   "h": 25.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "members",
   "load": "first",
   "note": "wooden peg joint; amber/red get an ink ring so the state reads on a phone"
  },
  "joint_wood_snap": {
   "file": "sprites/joint_wood_snap.png",
   "w": 19.0,
   "h": 20.0,
   "pivot": [
    0.5,
    0.525
   ],
   "group": "members",
   "load": "first",
   "note": "wooden peg joint; amber/red get an ink ring so the state reads on a phone"
  },
  "judges_table": {
   "file": "sprites/judges_table.png",
   "w": 215.0,
   "h": 99.0,
   "pivot": [
    0.0116,
    0.9747
   ],
   "group": "ending",
   "load": "ending",
   "note": "judges' table with rosettes"
  },
  "kit_cheer": {
   "file": "sprites/kit_cheer.png",
   "w": 54.5,
   "h": 111.5,
   "pivot": [
    0.422,
    0.9372
   ],
   "joints": {
    "hand": [
     0.7229,
     0.496
    ]
   },
   "group": "people",
   "load": "twop",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.57 u"
  },
  "kit_jam": {
   "file": "sprites/kit_jam.png",
   "w": 73.5,
   "h": 110.0,
   "pivot": [
    0.4558,
    0.9318
   ],
   "joints": {
    "hand": [
     0.6789,
     0.4845
    ]
   },
   "group": "people",
   "load": "twop",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.57 u"
  },
  "kit_kneel": {
   "file": "sprites/kit_kneel.png",
   "w": 68.5,
   "h": 97.0,
   "pivot": [
    0.5766,
    0.9485
   ],
   "joints": {
    "hand": [
     0.8161,
     0.4412
    ]
   },
   "group": "people",
   "load": "twop",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.57 u"
  },
  "kit_point": {
   "file": "sprites/kit_point.png",
   "w": 58.5,
   "h": 112.0,
   "pivot": [
    0.4188,
    0.933
   ],
   "joints": {
    "hand": [
     0.6991,
     0.4938
    ]
   },
   "group": "people",
   "load": "twop",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.57 u"
  },
  "kit_portrait": {
   "file": "sprites/kit_portrait.png",
   "w": 91.5,
   "h": 59.0,
   "pivot": [
    0.4372,
    1.0
   ],
   "group": "people",
   "load": "hub",
   "note": "head-and-shoulders portrait for cards / hub tags"
  },
  "kit_stand": {
   "file": "sprites/kit_stand.png",
   "w": 49.5,
   "h": 112.5,
   "pivot": [
    0.4646,
    0.9333
   ],
   "joints": {
    "hand": [
     0.796,
     0.496
    ]
   },
   "group": "people",
   "load": "twop",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.57 u"
  },
  "kit_swing": {
   "file": "sprites/kit_swing.png",
   "w": 53.5,
   "h": 133.0,
   "pivot": [
    0.4112,
    0.9474
   ],
   "joints": {
    "hand": [
     0.7178,
     0.5774
    ]
   },
   "group": "people",
   "load": "twop",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.57 u"
  },
  "kit_thumbs": {
   "file": "sprites/kit_thumbs.png",
   "w": 51.0,
   "h": 112.0,
   "pivot": [
    0.4118,
    0.933
   ],
   "joints": {
    "hand": [
     0.7333,
     0.4938
    ]
   },
   "group": "people",
   "load": "twop",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.57 u"
  },
  "kit_wave": {
   "file": "sprites/kit_wave.png",
   "w": 52.0,
   "h": 112.0,
   "pivot": [
    0.375,
    0.933
   ],
   "joints": {
    "hand": [
     0.6904,
     0.4938
    ]
   },
   "group": "people",
   "load": "twop",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.57 u"
  },
  "lantern": {
   "file": "sprites/lantern.png",
   "w": 37.5,
   "h": 140.0,
   "pivot": [
    0.1467,
    0.9643
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "lantern post (2-8 fog: lit; the 2-10 water mark)"
  },
  "lantern_off": {
   "file": "sprites/lantern_off.png",
   "w": 37.5,
   "h": 140.0,
   "pivot": [
    0.1467,
    0.9643
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "lantern post (2-8 fog: lit; the 2-10 water mark)"
  },
  "lever_bridge": {
   "file": "sprites/lever_bridge.png",
   "w": 66.5,
   "h": 66.5,
   "pivot": [
    0.4887,
    0.4887
   ],
   "group": "ui",
   "load": "ch2",
   "note": "drawbridge lever button (right edge, ch2)"
  },
  "lever_gate_0": {
   "file": "sprites/lever_gate_0.png",
   "w": 166.5,
   "h": 119.5,
   "pivot": [
    0.4955,
    0.8159
   ],
   "joints": {
    "x1": [
     0.2252,
     -0.0209
    ],
    "x3": [
     0.7658,
     -0.0209
    ]
   },
   "group": "ui",
   "load": "common",
   "note": "risk lever: 0 = one hen (x1), 1 = the whole herd (x3); \"x1\"/\"x3\" live text under the plates at the joints"
  },
  "lever_gate_1": {
   "file": "sprites/lever_gate_1.png",
   "w": 166.5,
   "h": 119.5,
   "pivot": [
    0.4955,
    0.8159
   ],
   "joints": {
    "x1": [
     0.2252,
     -0.0209
    ],
    "x3": [
     0.7658,
     -0.0209
    ]
   },
   "group": "ui",
   "load": "common",
   "note": "risk lever: 0 = one hen (x1), 1 = the whole herd (x3); \"x1\"/\"x3\" live text under the plates at the joints"
  },
  "lily_pad": {
   "file": "sprites/lily_pad.png",
   "w": 60.0,
   "h": 23.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "fx",
   "load": "ch1",
   "note": "lily pad (floats; lands on a head after a splash)"
  },
  "lock_cottage": {
   "file": "sprites/lock_cottage.png",
   "w": 175.0,
   "h": 160.0,
   "pivot": [
    0.0143,
    0.9844
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "lock-keeper's cottage with the geranium window box"
  },
  "lock_gate": {
   "file": "sprites/lock_gate.png",
   "w": 225.0,
   "h": 266.5,
   "pivot": [
    0.5889,
    0.9906
   ],
   "joints": {
    "beam_end": [
     0.0111,
     0.212
    ]
   },
   "group": "ch2",
   "load": "ch2",
   "note": "mitre gate side-on with its balance beam; pivot = heel post foot"
  },
  "lock_wall": {
   "file": "sprites/lock_wall.png",
   "w": 165.0,
   "h": 215.0,
   "pivot": [
    0.0455,
    0.0116
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "lock chamber side wall; pivot = top-left of the coping (anchor rings go on the coping)"
  },
  "marrowby": {
   "file": "sprites/marrowby.png",
   "w": 432.0,
   "h": 122.0,
   "pivot": [
    -0.0093,
    1.0738
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "Marrowby in the distance (far plane)"
  },
  "mat_cable": {
   "file": "sprites/mat_cable.png",
   "w": 65.0,
   "h": 65.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "ch3",
   "note": "material icon; cost shown as 3 notches (pennies/u: plank 4, rope 2, iron 8, cable 6)"
  },
  "mat_iron": {
   "file": "sprites/mat_iron.png",
   "w": 65.0,
   "h": 65.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "ch2",
   "note": "material icon; cost shown as 4 notches (pennies/u: plank 4, rope 2, iron 8, cable 6)"
  },
  "mat_plank": {
   "file": "sprites/mat_plank.png",
   "w": 65.0,
   "h": 65.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "first",
   "note": "material icon; cost shown as 2 notches (pennies/u: plank 4, rope 2, iron 8, cable 6)"
  },
  "mat_rope": {
   "file": "sprites/mat_rope.png",
   "w": 65.0,
   "h": 65.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "common",
   "note": "material icon; cost shown as 1 notches (pennies/u: plank 4, rope 2, iron 8, cable 6)"
  },
  "milestone": {
   "file": "sprites/milestone.png",
   "w": 55.0,
   "h": 80.0,
   "pivot": [
    0.5,
    0.9688
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "3-10 finish milestone (no lettering; numbers are drawn as plain bars)"
  },
  "mill": {
   "file": "sprites/mill.png",
   "w": 275.5,
   "h": 307.5,
   "pivot": [
    0.0181,
    1.0
   ],
   "joints": {
    "hoist": [
     0.9474,
     0.1675
    ],
    "wheel": [
     -0.0544,
     0.9024
    ]
   },
   "group": "ch1",
   "load": "first",
   "note": "Wenlow Mill, pivot = bottom-left of the brick floor on the bank; the title banner hangs at \"hoist\"; the wheel hub at \"wheel\" (left of the wall)"
  },
  "mill_wheel": {
   "file": "sprites/mill_wheel.png",
   "w": 190.0,
   "h": 190.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ch1",
   "load": "first",
   "note": "rotate continuously (45 deg = one paddle step); undershot: lower third in the race"
  },
  "miller_cheer": {
   "file": "sprites/miller_cheer.png",
   "w": 77.0,
   "h": 150.5,
   "pivot": [
    0.4286,
    0.9336
   ],
   "joints": {
    "hand": [
     0.7013,
     0.515
    ]
   },
   "group": "people",
   "load": "ch1",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 2.01 u"
  },
  "miller_stand": {
   "file": "sprites/miller_stand.png",
   "w": 57.0,
   "h": 150.5,
   "pivot": [
    0.4649,
    0.9336
   ],
   "joints": {
    "hand": [
     0.8333,
     0.515
    ]
   },
   "group": "people",
   "load": "ch1",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 2.01 u"
  },
  "oak_0": {
   "file": "sprites/oak_0.png",
   "w": 163.0,
   "h": 189.0,
   "pivot": [
    0.4816,
    0.9868
   ],
   "group": "ch1",
   "load": "first",
   "note": "tree, pivot = trunk foot"
  },
  "oak_1": {
   "file": "sprites/oak_1.png",
   "w": 155.0,
   "h": 170.0,
   "pivot": [
    0.4903,
    0.9853
   ],
   "group": "ch1",
   "load": "common",
   "note": "tree, pivot = trunk foot"
  },
  "old_pier": {
   "file": "sprites/old_pier.png",
   "w": 101.0,
   "h": 232.5,
   "pivot": [
    0.5,
    0.9892
   ],
   "joints": {
    "bolt": [
     0.5,
     0.1204
    ]
   },
   "group": "ch3",
   "load": "ch3",
   "note": "3-9 old viaduct pier with ivy; anchor at \"bolt\""
  },
  "p_bark": {
   "file": "sprites/p_bark.png",
   "w": 16.0,
   "h": 11.0,
   "pivot": [
    0.5,
    0.5455
   ],
   "group": "fx",
   "load": "common",
   "note": "particle (centre pivot)"
  },
  "p_chip": {
   "file": "sprites/p_chip.png",
   "w": 19.0,
   "h": 14.0,
   "pivot": [
    0.4737,
    0.5
   ],
   "group": "fx",
   "load": "first",
   "note": "particle (centre pivot)"
  },
  "p_chip_red": {
   "file": "sprites/p_chip_red.png",
   "w": 19.0,
   "h": 14.0,
   "pivot": [
    0.4737,
    0.5
   ],
   "group": "fx",
   "load": "first",
   "note": "particle (centre pivot)"
  },
  "p_coal": {
   "file": "sprites/p_coal.png",
   "w": 22.0,
   "h": 17.0,
   "pivot": [
    0.5,
    0.5588
   ],
   "group": "fx",
   "load": "ch2",
   "note": "particle (centre pivot)"
  },
  "p_drop": {
   "file": "sprites/p_drop.png",
   "w": 10.0,
   "h": 21.0,
   "pivot": [
    0.5,
    0.619
   ],
   "group": "fx",
   "load": "first",
   "note": "particle (centre pivot)"
  },
  "p_dust": {
   "file": "sprites/p_dust.png",
   "w": 22.0,
   "h": 17.0,
   "pivot": [
    0.5,
    0.5588
   ],
   "group": "fx",
   "load": "common",
   "note": "particle (centre pivot)"
  },
  "p_feather_bustle": {
   "file": "sprites/p_feather_bustle.png",
   "w": 16.5,
   "h": 23.0,
   "pivot": [
    0.4848,
    0.5
   ],
   "group": "fx",
   "load": "first",
   "note": "particle"
  },
  "p_feather_cream": {
   "file": "sprites/p_feather_cream.png",
   "w": 16.5,
   "h": 23.0,
   "pivot": [
    0.4848,
    0.5
   ],
   "group": "fx",
   "load": "common",
   "note": "particle"
  },
  "p_feather_slate": {
   "file": "sprites/p_feather_slate.png",
   "w": 16.5,
   "h": 23.0,
   "pivot": [
    0.4848,
    0.5
   ],
   "group": "fx",
   "load": "common",
   "note": "particle"
  },
  "p_fibre": {
   "file": "sprites/p_fibre.png",
   "w": 20.0,
   "h": 10.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "fx",
   "load": "common",
   "note": "particle (centre pivot)"
  },
  "p_grit": {
   "file": "sprites/p_grit.png",
   "w": 10.0,
   "h": 10.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "fx",
   "load": "ch3",
   "note": "particle (centre pivot)"
  },
  "p_hawthorn": {
   "file": "sprites/p_hawthorn.png",
   "w": 12.0,
   "h": 18.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "fx",
   "load": "ch3",
   "note": "particle (centre pivot)"
  },
  "p_sawdust": {
   "file": "sprites/p_sawdust.png",
   "w": 22.0,
   "h": 17.0,
   "pivot": [
    0.5,
    0.5588
   ],
   "group": "fx",
   "load": "first",
   "note": "particle (centre pivot)"
  },
  "p_seed": {
   "file": "sprites/p_seed.png",
   "w": 14.0,
   "h": 16.5,
   "pivot": [
    0.5,
    0.4545
   ],
   "group": "fx",
   "load": "ch2",
   "note": "particle (centre pivot)"
  },
  "p_spark": {
   "file": "sprites/p_spark.png",
   "w": 7.0,
   "h": 14.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "fx",
   "load": "ch2",
   "note": "particle (centre pivot)"
  },
  "p_steam": {
   "file": "sprites/p_steam.png",
   "w": 22.0,
   "h": 17.0,
   "pivot": [
    0.5,
    0.5588
   ],
   "group": "fx",
   "load": "ch3",
   "note": "particle (centre pivot)"
  },
  "p_turnip_leaf": {
   "file": "sprites/p_turnip_leaf.png",
   "w": 12.0,
   "h": 18.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "fx",
   "load": "common",
   "note": "particle (centre pivot)"
  },
  "p_willow": {
   "file": "sprites/p_willow.png",
   "w": 12.0,
   "h": 18.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "fx",
   "load": "common",
   "note": "particle (centre pivot)"
  },
  "padlock": {
   "file": "sprites/padlock.png",
   "w": 45.0,
   "h": 59.0,
   "pivot": [
    0.5,
    0.4068
   ],
   "group": "ui",
   "load": "hub",
   "note": "locked"
  },
  "panel": {
   "file": "sprites/panel.png",
   "w": 460.0,
   "h": 320.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "common",
   "note": "noticeboard panel; 9-slice insets 50 px"
  },
  "penny": {
   "file": "sprites/penny.png",
   "w": 35.0,
   "h": 35.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "first",
   "note": "penny icon"
  },
  "phone_board": {
   "file": "sprites/phone_board.png",
   "w": 270.0,
   "h": 210.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "twop",
   "note": "turn-your-phone board (rotate the right phone in code)"
  },
  "piglet_body_0": {
   "file": "sprites/piglet_body_0.png",
   "w": 86.0,
   "h": 48.0,
   "pivot": [
    0.5,
    1.0192
   ],
   "joints": {
    "neck": [
     0.8684,
     0.4379
    ],
    "collar": [
     0.8684,
     0.5035
    ],
    "shoulder_n": [
     0.7763,
     0.8317
    ],
    "shoulder_f": [
     0.6842,
     0.8317
    ],
    "hip_n": [
     0.2421,
     0.8129
    ],
    "hip_f": [
     0.15,
     0.7942
    ],
    "tail": [
     0.058,
     0.4004
    ],
    "back": [
     0.5,
     0.0817
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = belly centre on the line through the hip/shoulder joints; legs hang from shoulder_*/hip_*; layer: far legs, near legs, tail, body, head, near ear (on head \"ear\")"
  },
  "piglet_body_1": {
   "file": "sprites/piglet_body_1.png",
   "w": 86.0,
   "h": 48.0,
   "pivot": [
    0.5,
    1.0192
   ],
   "joints": {
    "neck": [
     0.8684,
     0.4379
    ],
    "collar": [
     0.8684,
     0.5035
    ],
    "shoulder_n": [
     0.7763,
     0.8317
    ],
    "shoulder_f": [
     0.6842,
     0.8317
    ],
    "hip_n": [
     0.2421,
     0.8129
    ],
    "hip_f": [
     0.15,
     0.7942
    ],
    "tail": [
     0.058,
     0.4004
    ],
    "back": [
     0.5,
     0.0817
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = belly centre on the line through the hip/shoulder joints; legs hang from shoulder_*/hip_*; layer: far legs, near legs, tail, body, head, near ear (on head \"ear\")"
  },
  "piglet_body_2": {
   "file": "sprites/piglet_body_2.png",
   "w": 86.0,
   "h": 48.0,
   "pivot": [
    0.5,
    1.0192
   ],
   "joints": {
    "neck": [
     0.8684,
     0.4379
    ],
    "collar": [
     0.8684,
     0.5035
    ],
    "shoulder_n": [
     0.7763,
     0.8317
    ],
    "shoulder_f": [
     0.6842,
     0.8317
    ],
    "hip_n": [
     0.2421,
     0.8129
    ],
    "hip_f": [
     0.15,
     0.7942
    ],
    "tail": [
     0.058,
     0.4004
    ],
    "back": [
     0.5,
     0.0817
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = belly centre on the line through the hip/shoulder joints; legs hang from shoulder_*/hip_*; layer: far legs, near legs, tail, body, head, near ear (on head \"ear\")"
  },
  "piglet_ear_down": {
   "file": "sprites/piglet_ear_down.png",
   "w": 29.0,
   "h": 17.5,
   "pivot": [
    0.2474,
    0.6958
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = ear root; flap = swap down/mid/up per step (0.08 s each), or rotate +-15 deg"
  },
  "piglet_ear_mid": {
   "file": "sprites/piglet_ear_mid.png",
   "w": 28.5,
   "h": 17.0,
   "pivot": [
    0.2342,
    0.6868
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = ear root; flap = swap down/mid/up per step (0.08 s each), or rotate +-15 deg"
  },
  "piglet_ear_up": {
   "file": "sprites/piglet_ear_up.png",
   "w": 23.0,
   "h": 18.5,
   "pivot": [
    0.9642,
    0.6582
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = ear root; flap = swap down/mid/up per step (0.08 s each), or rotate +-15 deg"
  },
  "piglet_head_blink": {
   "file": "sprites/piglet_head_blink.png",
   "w": 54.0,
   "h": 44.5,
   "pivot": [
    0.1123,
    0.6571
   ],
   "joints": {
    "ear": [
     0.396,
     0.3309
    ],
    "hat": [
     0.299,
     0.2493
    ],
    "mouth": [
     0.7843,
     0.8202
    ],
    "snout": [
     0.9262,
     0.639
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = neck (attach to body \"neck\"); near ear goes on joint \"ear\" (drawn over the head)"
  },
  "piglet_head_calm": {
   "file": "sprites/piglet_head_calm.png",
   "w": 54.0,
   "h": 44.5,
   "pivot": [
    0.1123,
    0.6571
   ],
   "joints": {
    "ear": [
     0.396,
     0.3309
    ],
    "hat": [
     0.299,
     0.2493
    ],
    "mouth": [
     0.7843,
     0.8202
    ],
    "snout": [
     0.9262,
     0.639
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = neck (attach to body \"neck\"); near ear goes on joint \"ear\" (drawn over the head)"
  },
  "piglet_head_happy": {
   "file": "sprites/piglet_head_happy.png",
   "w": 54.0,
   "h": 44.5,
   "pivot": [
    0.1123,
    0.6571
   ],
   "joints": {
    "ear": [
     0.396,
     0.3309
    ],
    "hat": [
     0.299,
     0.2493
    ],
    "mouth": [
     0.7843,
     0.8202
    ],
    "snout": [
     0.9262,
     0.639
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = neck (attach to body \"neck\"); near ear goes on joint \"ear\" (drawn over the head)"
  },
  "piglet_head_open": {
   "file": "sprites/piglet_head_open.png",
   "w": 54.0,
   "h": 44.5,
   "pivot": [
    0.1123,
    0.6571
   ],
   "joints": {
    "ear": [
     0.396,
     0.3309
    ],
    "hat": [
     0.299,
     0.2493
    ],
    "mouth": [
     0.7843,
     0.8202
    ],
    "snout": [
     0.9262,
     0.639
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = neck (attach to body \"neck\"); near ear goes on joint \"ear\" (drawn over the head)"
  },
  "piglet_leg_f": {
   "file": "sprites/piglet_leg_f.png",
   "w": 14.0,
   "h": 23.0,
   "pivot": [
    0.5143,
    0.1409
   ],
   "joints": {
    "foot": [
     0.5143,
     0.9235
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = hip/shoulder; walk cycle 6 = angles (deg) near-front 18,9,0,-12,-6,8 (each other leg phase-shifted 1/2); trot = x1.5 amplitude, 0.3 s"
  },
  "piglet_leg_n": {
   "file": "sprites/piglet_leg_n.png",
   "w": 14.0,
   "h": 23.0,
   "pivot": [
    0.5143,
    0.1409
   ],
   "joints": {
    "foot": [
     0.5143,
     0.9235
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = hip/shoulder; walk cycle 6 = angles (deg) near-front 18,9,0,-12,-6,8 (each other leg phase-shifted 1/2); trot = x1.5 amplitude, 0.3 s"
  },
  "piglet_tail_0": {
   "file": "sprites/piglet_tail_0.png",
   "w": 16.5,
   "h": 18.0,
   "pivot": [
    0.7818,
    0.8
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = root; wag = swap 0/1 every 0.12 s"
  },
  "piglet_tail_1": {
   "file": "sprites/piglet_tail_1.png",
   "w": 18.0,
   "h": 18.0,
   "pivot": [
    0.8,
    0.8
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = root; wag = swap 0/1 every 0.12 s"
  },
  "plank_1u": {
   "file": "sprites/plank_1u.png",
   "w": 100.0,
   "h": 40.0,
   "pivot": [
    0.2,
    0.5
   ],
   "joints": {
    "end": [
     0.8,
     0.5
    ]
   },
   "group": "members",
   "load": "first",
   "note": "pivot = start joint, \"end\" = end joint; length 1.0 u"
  },
  "plank_1u_amber": {
   "file": "sprites/plank_1u_amber.png",
   "w": 100.0,
   "h": 40.0,
   "pivot": [
    0.2,
    0.5
   ],
   "joints": {
    "end": [
     0.8,
     0.5
    ]
   },
   "group": "members",
   "load": "common",
   "note": "pivot = start joint, \"end\" = end joint; length 1.0 u"
  },
  "plank_1u_red": {
   "file": "sprites/plank_1u_red.png",
   "w": 100.0,
   "h": 40.0,
   "pivot": [
    0.2,
    0.5
   ],
   "joints": {
    "end": [
     0.8,
     0.5
    ]
   },
   "group": "members",
   "load": "common",
   "note": "pivot = start joint, \"end\" = end joint; length 1.0 u"
  },
  "plank_2u": {
   "file": "sprites/plank_2u.png",
   "w": 160.0,
   "h": 40.0,
   "pivot": [
    0.125,
    0.5
   ],
   "joints": {
    "end": [
     0.875,
     0.5
    ]
   },
   "group": "members",
   "load": "first",
   "note": "pivot = start joint, \"end\" = end joint; length 2.0 u"
  },
  "plank_2u_amber": {
   "file": "sprites/plank_2u_amber.png",
   "w": 160.0,
   "h": 40.0,
   "pivot": [
    0.125,
    0.5
   ],
   "joints": {
    "end": [
     0.875,
     0.5
    ]
   },
   "group": "members",
   "load": "common",
   "note": "pivot = start joint, \"end\" = end joint; length 2.0 u"
  },
  "plank_2u_broken_l": {
   "file": "sprites/plank_2u_broken_l.png",
   "w": 160.0,
   "h": 40.0,
   "pivot": [
    0.125,
    0.5
   ],
   "joints": {
    "end": [
     0.875,
     0.5
    ]
   },
   "group": "members",
   "load": "common",
   "note": "snapped half (l): grain-split end; falls as a body"
  },
  "plank_2u_broken_r": {
   "file": "sprites/plank_2u_broken_r.png",
   "w": 160.0,
   "h": 40.0,
   "pivot": [
    0.125,
    0.5
   ],
   "joints": {
    "end": [
     0.875,
     0.5
    ]
   },
   "group": "members",
   "load": "common",
   "note": "snapped half (r): grain-split end; falls as a body"
  },
  "plank_2u_red": {
   "file": "sprites/plank_2u_red.png",
   "w": 160.0,
   "h": 40.0,
   "pivot": [
    0.125,
    0.5
   ],
   "joints": {
    "end": [
     0.875,
     0.5
    ]
   },
   "group": "members",
   "load": "common",
   "note": "pivot = start joint, \"end\" = end joint; length 2.0 u"
  },
  "poplar": {
   "file": "sprites/poplar.png",
   "w": 55.0,
   "h": 170.5,
   "pivot": [
    0.4818,
    0.9853
   ],
   "group": "ch1",
   "load": "common",
   "note": "poplar (canal/gorge rims too)"
  },
  "poplar_row": {
   "file": "sprites/poplar_row.png",
   "w": 253.5,
   "h": 178.5,
   "pivot": [
    -0.0237,
    1.014
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "poplars along the cut"
  },
  "puncheon_cheer": {
   "file": "sprites/puncheon_cheer.png",
   "w": 63.5,
   "h": 127.5,
   "pivot": [
    0.4252,
    0.9294
   ],
   "joints": {
    "hand": [
     0.6961,
     0.5247
    ]
   },
   "group": "people",
   "load": "ch3",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.65 u"
  },
  "puncheon_gesture": {
   "file": "sprites/puncheon_gesture.png",
   "w": 60.5,
   "h": 127.5,
   "pivot": [
    0.4215,
    0.9255
   ],
   "joints": {
    "hand": [
     0.7058,
     0.5208
    ]
   },
   "group": "people",
   "load": "ch3",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.65 u"
  },
  "puncheon_point": {
   "file": "sprites/puncheon_point.png",
   "w": 65.5,
   "h": 127.5,
   "pivot": [
    0.3969,
    0.9255
   ],
   "joints": {
    "hand": [
     0.6595,
     0.5208
    ]
   },
   "group": "people",
   "load": "ch3",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.65 u"
  },
  "puncheon_portrait": {
   "file": "sprites/puncheon_portrait.png",
   "w": 94.5,
   "h": 88.0,
   "pivot": [
    0.4656,
    1.0
   ],
   "group": "people",
   "load": "hub",
   "note": "head-and-shoulders portrait for cards / hub tags"
  },
  "puncheon_stand": {
   "file": "sprites/puncheon_stand.png",
   "w": 54.5,
   "h": 127.5,
   "pivot": [
    0.4587,
    0.9255
   ],
   "joints": {
    "hand": [
     0.7743,
     0.5208
    ]
   },
   "group": "people",
   "load": "ch3",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.65 u"
  },
  "quarry_ledge": {
   "file": "sprites/quarry_ledge.png",
   "w": 194.0,
   "h": 66.0,
   "pivot": [
    0.0361,
    0.1364
   ],
   "joints": {
    "bolt": [
     0.5,
     0.2424
    ]
   },
   "group": "ch3",
   "load": "ch3",
   "note": "3-6 ledge; anchor bolt at \"bolt\""
  },
  "reeds": {
   "file": "sprites/reeds.png",
   "w": 34.0,
   "h": 63.0,
   "pivot": [
    0.5,
    0.9444
   ],
   "group": "ch1",
   "load": "first",
   "note": "reed clump, pivot = root"
  },
  "rim_flag_0": {
   "file": "sprites/rim_flag_0.png",
   "w": 64.0,
   "h": 118.0,
   "pivot": [
    0.0938,
    0.9661
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "flag on the rim; _2 = cracking in the gust"
  },
  "rim_flag_2": {
   "file": "sprites/rim_flag_2.png",
   "w": 75.0,
   "h": 119.0,
   "pivot": [
    0.0867,
    0.9664
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "flag on the rim; _2 = cracking in the gust"
  },
  "ring_beat": {
   "file": "sprites/ring_beat.png",
   "w": 69.0,
   "h": 27.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "fx",
   "load": "ch3",
   "note": "beat ring on the deck at each of Thimble's footfalls"
  },
  "ring_snug": {
   "file": "sprites/ring_snug.png",
   "w": 69.0,
   "h": 27.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "fx",
   "load": "first",
   "note": "Snug brace ring (honey/mustard), expands 0.3 s"
  },
  "ring_spray": {
   "file": "sprites/ring_spray.png",
   "w": 140.0,
   "h": 50.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "fx",
   "load": "common",
   "note": "shake-off spray ring"
  },
  "rock_tower": {
   "file": "sprites/rock_tower.png",
   "w": 82.0,
   "h": 272.0,
   "pivot": [
    0.5183,
    0.9908
   ],
   "joints": {
    "bolt_a": [
     0.3963,
     0.0717
    ],
    "bolt_b": [
     0.6402,
     0.0717
    ]
   },
   "group": "ch3",
   "load": "ch3",
   "note": "3-1 tower; cables bolt at the top"
  },
  "rock_tower_base": {
   "file": "sprites/rock_tower_base.png",
   "w": 90.0,
   "h": 265.0,
   "pivot": [
    0.5,
    0.9906
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "lower courses of a rock tower (no cap, no ivy, slightly wider): stack under rock_tower down to the pool instead of repeating rock_tower"
  },
  "rook_fly": {
   "file": "sprites/rook_fly.png",
   "w": 79.5,
   "h": 40.5,
   "pivot": [
    0.5346,
    0.7778
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "rook (gust warning: they lift out of the gorge)"
  },
  "rook_nest": {
   "file": "sprites/rook_nest.png",
   "w": 55.0,
   "h": 27.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ch3",
   "load": "ch3"
  },
  "rook_perch": {
   "file": "sprites/rook_perch.png",
   "w": 53.5,
   "h": 45.0,
   "pivot": [
    0.4393,
    0.7111
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "rook (gust warning: they lift out of the gorge)"
  },
  "rope": {
   "file": "sprites/rope.png",
   "w": 280.0,
   "h": 40.0,
   "pivot": [
    0.0714,
    0.5
   ],
   "joints": {
    "end": [
     0.9286,
     0.5
    ]
   },
   "group": "members",
   "load": "common",
   "note": "hemp rope 4 u taut; the game scales x only for shorter ropes (twists stretch, no other detail)"
  },
  "rope_amber": {
   "file": "sprites/rope_amber.png",
   "w": 280.0,
   "h": 40.0,
   "pivot": [
    0.0714,
    0.5
   ],
   "joints": {
    "end": [
     0.9286,
     0.5
    ]
   },
   "group": "members",
   "load": "common",
   "note": "hemp rope 4 u taut; the game scales x only for shorter ropes (twists stretch, no other detail)"
  },
  "rope_red": {
   "file": "sprites/rope_red.png",
   "w": 280.0,
   "h": 40.0,
   "pivot": [
    0.0714,
    0.5
   ],
   "joints": {
    "end": [
     0.9286,
     0.5
    ]
   },
   "group": "members",
   "load": "common",
   "note": "hemp rope 4 u taut; the game scales x only for shorter ropes (twists stretch, no other detail)"
  },
  "rope_slack": {
   "file": "sprites/rope_slack.png",
   "w": 280.0,
   "h": 100.0,
   "pivot": [
    0.0714,
    0.5
   ],
   "joints": {
    "end": [
     0.9286,
     0.5
    ]
   },
   "group": "members",
   "load": "common",
   "note": "slack rope (compression or before load): sag 0.5 u"
  },
  "rope_snapped": {
   "file": "sprites/rope_snapped.png",
   "w": 136.0,
   "h": 40.0,
   "pivot": [
    0.1471,
    0.5
   ],
   "joints": {
    "end": [
     0.8529,
     0.5
    ]
   },
   "group": "members",
   "load": "common",
   "note": "the frayed end of a snapped rope (draw one from each joint, swinging)"
  },
  "rosette_01": {
   "file": "sprites/rosette_01.png",
   "w": 83.0,
   "h": 121.5,
   "pivot": [
    0.5,
    0.3366
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 1 (strings rosetteNames[0]); level 1-1; centre at the pivot"
  },
  "rosette_02": {
   "file": "sprites/rosette_02.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 2 (strings rosetteNames[1]); level 1-2; centre at the pivot"
  },
  "rosette_03": {
   "file": "sprites/rosette_03.png",
   "w": 83.0,
   "h": 122.0,
   "pivot": [
    0.5,
    0.3393
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 3 (strings rosetteNames[2]); level 1-3; centre at the pivot"
  },
  "rosette_04": {
   "file": "sprites/rosette_04.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 4 (strings rosetteNames[3]); level 1-4; centre at the pivot"
  },
  "rosette_05": {
   "file": "sprites/rosette_05.png",
   "w": 83.0,
   "h": 121.5,
   "pivot": [
    0.5,
    0.3366
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 5 (strings rosetteNames[4]); level 1-5; centre at the pivot"
  },
  "rosette_06": {
   "file": "sprites/rosette_06.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 6 (strings rosetteNames[5]); level 1-6; centre at the pivot"
  },
  "rosette_07": {
   "file": "sprites/rosette_07.png",
   "w": 83.0,
   "h": 122.0,
   "pivot": [
    0.5,
    0.3393
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 7 (strings rosetteNames[6]); level 1-7; centre at the pivot"
  },
  "rosette_08": {
   "file": "sprites/rosette_08.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 8 (strings rosetteNames[7]); level 1-8; centre at the pivot"
  },
  "rosette_09": {
   "file": "sprites/rosette_09.png",
   "w": 83.0,
   "h": 121.5,
   "pivot": [
    0.5,
    0.3366
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 9 (strings rosetteNames[8]); level 1-9; centre at the pivot"
  },
  "rosette_10": {
   "file": "sprites/rosette_10.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 10 (strings rosetteNames[9]); level 1-10; centre at the pivot"
  },
  "rosette_11": {
   "file": "sprites/rosette_11.png",
   "w": 83.0,
   "h": 122.0,
   "pivot": [
    0.5,
    0.3393
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 11 (strings rosetteNames[10]); level 2-1; centre at the pivot"
  },
  "rosette_12": {
   "file": "sprites/rosette_12.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 12 (strings rosetteNames[11]); level 2-2; centre at the pivot"
  },
  "rosette_13": {
   "file": "sprites/rosette_13.png",
   "w": 83.0,
   "h": 121.5,
   "pivot": [
    0.5,
    0.3366
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 13 (strings rosetteNames[12]); level 2-3; centre at the pivot"
  },
  "rosette_14": {
   "file": "sprites/rosette_14.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 14 (strings rosetteNames[13]); level 2-4; centre at the pivot"
  },
  "rosette_15": {
   "file": "sprites/rosette_15.png",
   "w": 83.0,
   "h": 122.0,
   "pivot": [
    0.5,
    0.3393
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 15 (strings rosetteNames[14]); level 2-5; centre at the pivot"
  },
  "rosette_16": {
   "file": "sprites/rosette_16.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 16 (strings rosetteNames[15]); level 2-6; centre at the pivot"
  },
  "rosette_17": {
   "file": "sprites/rosette_17.png",
   "w": 83.0,
   "h": 121.5,
   "pivot": [
    0.5,
    0.3366
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 17 (strings rosetteNames[16]); level 2-7; centre at the pivot"
  },
  "rosette_18": {
   "file": "sprites/rosette_18.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 18 (strings rosetteNames[17]); level 2-8; centre at the pivot"
  },
  "rosette_19": {
   "file": "sprites/rosette_19.png",
   "w": 83.0,
   "h": 122.0,
   "pivot": [
    0.5,
    0.3393
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 19 (strings rosetteNames[18]); level 2-9; centre at the pivot"
  },
  "rosette_20": {
   "file": "sprites/rosette_20.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 20 (strings rosetteNames[19]); level 2-10; centre at the pivot"
  },
  "rosette_21": {
   "file": "sprites/rosette_21.png",
   "w": 83.0,
   "h": 121.5,
   "pivot": [
    0.5,
    0.3366
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 21 (strings rosetteNames[20]); level 3-1; centre at the pivot"
  },
  "rosette_22": {
   "file": "sprites/rosette_22.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 22 (strings rosetteNames[21]); level 3-2; centre at the pivot"
  },
  "rosette_23": {
   "file": "sprites/rosette_23.png",
   "w": 83.0,
   "h": 122.0,
   "pivot": [
    0.5,
    0.3393
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 23 (strings rosetteNames[22]); level 3-3; centre at the pivot"
  },
  "rosette_24": {
   "file": "sprites/rosette_24.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 24 (strings rosetteNames[23]); level 3-4; centre at the pivot"
  },
  "rosette_25": {
   "file": "sprites/rosette_25.png",
   "w": 83.0,
   "h": 121.5,
   "pivot": [
    0.5,
    0.3366
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 25 (strings rosetteNames[24]); level 3-5; centre at the pivot"
  },
  "rosette_26": {
   "file": "sprites/rosette_26.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 26 (strings rosetteNames[25]); level 3-6; centre at the pivot"
  },
  "rosette_27": {
   "file": "sprites/rosette_27.png",
   "w": 83.0,
   "h": 122.0,
   "pivot": [
    0.5,
    0.3393
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 27 (strings rosetteNames[26]); level 3-7; centre at the pivot"
  },
  "rosette_28": {
   "file": "sprites/rosette_28.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 28 (strings rosetteNames[27]); level 3-8; centre at the pivot"
  },
  "rosette_29": {
   "file": "sprites/rosette_29.png",
   "w": 83.0,
   "h": 121.5,
   "pivot": [
    0.5,
    0.3366
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 29 (strings rosetteNames[28]); level 3-9; centre at the pivot"
  },
  "rosette_30": {
   "file": "sprites/rosette_30.png",
   "w": 83.0,
   "h": 122.5,
   "pivot": [
    0.5,
    0.342
   ],
   "group": "awards",
   "load": "hub",
   "note": "rosette 30 (strings rosetteNames[29]); level 3-10; centre at the pivot"
  },
  "rosette_glint": {
   "file": "sprites/rosette_glint.png",
   "w": 43.0,
   "h": 56.5,
   "pivot": [
    0.5,
    0.4159
   ],
   "group": "awards",
   "load": "first",
   "note": "the in-level rosette spot (a small rosette peeking out)"
  },
  "rosette_locked": {
   "file": "sprites/rosette_locked.png",
   "w": 83.0,
   "h": 116.0,
   "pivot": [
    0.5,
    0.3612
   ],
   "group": "awards",
   "load": "hub",
   "note": "locked slot outline (chalk)"
  },
  "scarecrow": {
   "file": "sprites/scarecrow.png",
   "w": 95.0,
   "h": 152.5,
   "pivot": [
    0.5,
    0.9672
   ],
   "group": "ch1",
   "load": "ch1",
   "note": "scarecrow alone"
  },
  "shingle": {
   "file": "sprites/shingle.png",
   "w": 520.0,
   "h": 60.0,
   "pivot": [
    0.0,
    0.0
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "pool shingle strip, tileable"
  },
  "show_tent": {
   "file": "sprites/show_tent.png",
   "w": 285.5,
   "h": 241.0,
   "pivot": [
    0.0438,
    0.9896
   ],
   "group": "ending",
   "load": "ending",
   "note": "the Marrowby show tent"
  },
  "signal_down": {
   "file": "sprites/signal_down.png",
   "w": 83.5,
   "h": 238.0,
   "pivot": [
    0.2275,
    0.9748
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "3-4 signal; arm drops = train coming"
  },
  "signal_up": {
   "file": "sprites/signal_up.png",
   "w": 98.5,
   "h": 238.0,
   "pivot": [
    0.2132,
    0.9748
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "3-4 signal; arm drops = train coming"
  },
  "signalman_stand": {
   "file": "sprites/signalman_stand.png",
   "w": 49.0,
   "h": 140.5,
   "pivot": [
    0.4184,
    0.9324
   ],
   "joints": {
    "hand": [
     0.8265,
     0.5053
    ]
   },
   "group": "people",
   "load": "ch3",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "signalman_wave": {
   "file": "sprites/signalman_wave.png",
   "w": 61.0,
   "h": 141.0,
   "pivot": [
    0.3197,
    0.9326
   ],
   "joints": {
    "hand": [
     0.6475,
     0.5071
    ]
   },
   "group": "people",
   "load": "ch3",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "sow_bellyflop": {
   "file": "sprites/sow_bellyflop.png",
   "w": 349.0,
   "h": 154.5,
   "pivot": [
    0.4126,
    0.9579
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = belly; falls belly-down, legs out (never tumbling); splash on contact"
  },
  "sow_body": {
   "file": "sprites/sow_body.png",
   "w": 231.0,
   "h": 126.0,
   "pivot": [
    0.4892,
    1.0357
   ],
   "joints": {
    "neck": [
     0.8701,
     0.4206
    ],
    "collar": [
     0.8701,
     0.4901
    ],
    "shoulder_n": [
     0.7749,
     0.8373
    ],
    "shoulder_f": [
     0.6797,
     0.8373
    ],
    "hip_n": [
     0.2225,
     0.8175
    ],
    "hip_f": [
     0.1273,
     0.7976
    ],
    "tail": [
     0.032,
     0.381
    ],
    "back": [
     0.4892,
     0.0437
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = belly centre on the line through the hip/shoulder joints; legs hang from shoulder_*/hip_*; layer: far legs, near legs, tail, body, head, near ear (on head \"ear\")"
  },
  "sow_ear_down": {
   "file": "sprites/sow_ear_down.png",
   "w": 78.5,
   "h": 43.5,
   "pivot": [
    0.2178,
    0.7264
   ],
   "group": "cast",
   "load": "first",
   "note": "pivot = ear root; flap = swap down/mid/up per step (0.08 s each), or rotate +-15 deg"
  },
  "sow_ear_mid": {
   "file": "sprites/sow_ear_mid.png",
   "w": 77.5,
   "h": 44.0,
   "pivot": [
    0.2077,
    0.6955
   ],
   "group": "cast",
   "load": "first",
   "note": "pivot = ear root; flap = swap down/mid/up per step (0.08 s each), or rotate +-15 deg"
  },
  "sow_ear_up": {
   "file": "sprites/sow_ear_up.png",
   "w": 62.5,
   "h": 46.5,
   "pivot": [
    0.9856,
    0.6796
   ],
   "group": "cast",
   "load": "first",
   "note": "pivot = ear root; flap = swap down/mid/up per step (0.08 s each), or rotate +-15 deg"
  },
  "sow_head_blink": {
   "file": "sprites/sow_head_blink.png",
   "w": 144.0,
   "h": 117.5,
   "pivot": [
    0.1,
    0.6596
   ],
   "joints": {
    "ear": [
     0.3956,
     0.3164
    ],
    "hat": [
     0.2944,
     0.2306
    ],
    "mouth": [
     0.8,
     0.8311
    ],
    "snout": [
     0.9478,
     0.6405
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = neck (attach to body \"neck\"); near ear goes on joint \"ear\" (drawn over the head)"
  },
  "sow_head_calm": {
   "file": "sprites/sow_head_calm.png",
   "w": 144.0,
   "h": 117.5,
   "pivot": [
    0.1,
    0.6596
   ],
   "joints": {
    "ear": [
     0.3956,
     0.3164
    ],
    "hat": [
     0.2944,
     0.2306
    ],
    "mouth": [
     0.8,
     0.8311
    ],
    "snout": [
     0.9478,
     0.6405
    ]
   },
   "group": "cast",
   "load": "first",
   "note": "pivot = neck (attach to body \"neck\"); near ear goes on joint \"ear\" (drawn over the head)"
  },
  "sow_head_chew": {
   "file": "sprites/sow_head_chew.png",
   "w": 144.0,
   "h": 117.5,
   "pivot": [
    0.1,
    0.6596
   ],
   "joints": {
    "ear": [
     0.3956,
     0.3164
    ],
    "hat": [
     0.2944,
     0.2306
    ],
    "mouth": [
     0.8,
     0.8311
    ],
    "snout": [
     0.9478,
     0.6405
    ]
   },
   "group": "cast",
   "load": "first",
   "note": "pivot = neck (attach to body \"neck\"); near ear goes on joint \"ear\" (drawn over the head)"
  },
  "sow_head_grin": {
   "file": "sprites/sow_head_grin.png",
   "w": 144.0,
   "h": 118.0,
   "pivot": [
    0.1,
    0.6568
   ],
   "joints": {
    "ear": [
     0.3956,
     0.3151
    ],
    "hat": [
     0.2944,
     0.2297
    ],
    "mouth": [
     0.8,
     0.8276
    ],
    "snout": [
     0.9478,
     0.6378
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = neck (attach to body \"neck\"); near ear goes on joint \"ear\" (drawn over the head)"
  },
  "sow_head_happy": {
   "file": "sprites/sow_head_happy.png",
   "w": 144.0,
   "h": 117.5,
   "pivot": [
    0.1,
    0.6596
   ],
   "joints": {
    "ear": [
     0.3956,
     0.3164
    ],
    "hat": [
     0.2944,
     0.2306
    ],
    "mouth": [
     0.8,
     0.8311
    ],
    "snout": [
     0.9478,
     0.6405
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = neck (attach to body \"neck\"); near ear goes on joint \"ear\" (drawn over the head)"
  },
  "sow_head_lily": {
   "file": "sprites/sow_head_lily.png",
   "w": 137.0,
   "h": 107.5,
   "pivot": [
    0.146,
    0.6558
   ],
   "group": "cast",
   "load": "common",
   "note": "head variant: grin with a lily pad on top (after the belly-flop)"
  },
  "sow_head_look": {
   "file": "sprites/sow_head_look.png",
   "w": 144.0,
   "h": 117.5,
   "pivot": [
    0.1,
    0.6596
   ],
   "joints": {
    "ear": [
     0.3956,
     0.3164
    ],
    "hat": [
     0.2944,
     0.2306
    ],
    "mouth": [
     0.8,
     0.8311
    ],
    "snout": [
     0.9478,
     0.6405
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = neck (attach to body \"neck\"); near ear goes on joint \"ear\" (drawn over the head)"
  },
  "sow_head_open": {
   "file": "sprites/sow_head_open.png",
   "w": 144.0,
   "h": 118.0,
   "pivot": [
    0.1,
    0.6568
   ],
   "joints": {
    "ear": [
     0.3956,
     0.3151
    ],
    "hat": [
     0.2944,
     0.2297
    ],
    "mouth": [
     0.8,
     0.8276
    ],
    "snout": [
     0.9478,
     0.6378
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = neck (attach to body \"neck\"); near ear goes on joint \"ear\" (drawn over the head)"
  },
  "sow_head_sniff": {
   "file": "sprites/sow_head_sniff.png",
   "w": 155.0,
   "h": 117.5,
   "pivot": [
    0.0929,
    0.6596
   ],
   "joints": {
    "ear": [
     0.3675,
     0.3164
    ],
    "hat": [
     0.2735,
     0.2306
    ],
    "mouth": [
     0.7432,
     0.8311
    ],
    "snout": [
     0.8805,
     0.6405
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = neck (attach to body \"neck\"); near ear goes on joint \"ear\" (drawn over the head)"
  },
  "sow_leg_f": {
   "file": "sprites/sow_leg_f.png",
   "w": 32.0,
   "h": 61.5,
   "pivot": [
    0.5,
    0.1463
   ],
   "joints": {
    "foot": [
     0.5,
     0.9593
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = hip/shoulder; walk cycle 6 = angles (deg) near-front 18,9,0,-12,-6,8 (each other leg phase-shifted 1/2); trot = x1.5 amplitude, 0.3 s"
  },
  "sow_leg_n": {
   "file": "sprites/sow_leg_n.png",
   "w": 32.0,
   "h": 61.5,
   "pivot": [
    0.5,
    0.1463
   ],
   "joints": {
    "foot": [
     0.5,
     0.9593
    ]
   },
   "group": "cast",
   "load": "common",
   "note": "pivot = hip/shoulder; walk cycle 6 = angles (deg) near-front 18,9,0,-12,-6,8 (each other leg phase-shifted 1/2); trot = x1.5 amplitude, 0.3 s"
  },
  "sow_shake": {
   "file": "sprites/sow_shake.png",
   "w": 373.5,
   "h": 230.5,
   "pivot": [
    0.4913,
    0.8243
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = belly centre on the ground; play for 0.6 s after wading out"
  },
  "sow_swim": {
   "file": "sprites/sow_swim.png",
   "w": 327.5,
   "h": 115.5,
   "pivot": [
    0.374,
    0.9784
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = the water line under her; bob +-6 px at 1.2 s"
  },
  "sow_tail_0": {
   "file": "sprites/sow_tail_0.png",
   "w": 38.0,
   "h": 47.5,
   "pivot": [
    0.8026,
    0.8421
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = root; wag = swap 0/1 every 0.12 s"
  },
  "sow_tail_1": {
   "file": "sprites/sow_tail_1.png",
   "w": 46.0,
   "h": 48.0,
   "pivot": [
    0.837,
    0.8333
   ],
   "group": "cast",
   "load": "common",
   "note": "pivot = root; wag = swap 0/1 every 0.12 s"
  },
  "splash_crown": {
   "file": "sprites/splash_crown.png",
   "w": 95.0,
   "h": 54.0,
   "pivot": [
    0.5,
    0.8056
   ],
   "group": "fx",
   "load": "first",
   "note": "splash crown; scale by weight (hen 0.5 .. Thimble 1.6)"
  },
  "splash_wave": {
   "file": "sprites/splash_wave.png",
   "w": 330.0,
   "h": 109.5,
   "pivot": [
    0.0303,
    0.9589
   ],
   "group": "fx",
   "load": "ch1",
   "note": "1-10 belly-flop wave up the bank"
  },
  "star_empty": {
   "file": "sprites/star_empty.png",
   "w": 49.0,
   "h": 49.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "first",
   "note": "empty star slot"
  },
  "star_full": {
   "file": "sprites/star_full.png",
   "w": 49.0,
   "h": 49.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "first",
   "note": "star = rosette medallion (pop 0.3 s)"
  },
  "steam_puff": {
   "file": "sprites/steam_puff.png",
   "w": 75.0,
   "h": 119.0,
   "pivot": [
    0.5467,
    0.8782
   ],
   "group": "fx",
   "load": "ch3",
   "note": "steam column / downdraught puff"
  },
  "strongbox": {
   "file": "sprites/strongbox.png",
   "w": 99.0,
   "h": 80.0,
   "pivot": [
    0.5,
    0.9688
   ],
   "group": "ending",
   "load": "ending",
   "note": "the iron strongbox the last Boomfood is locked in"
  },
  "sundial_float": {
   "file": "sprites/sundial_float.png",
   "w": 205.0,
   "h": 126.5,
   "pivot": [
    0.5,
    0.0514
   ],
   "group": "cast",
   "load": "ch2",
   "note": "floating on his back, water line at the pivot"
  },
  "sundial_head_calm": {
   "file": "sprites/sundial_head_calm.png",
   "w": 120.0,
   "h": 64.5,
   "pivot": [
    0.1167,
    0.9535
   ],
   "group": "cast",
   "load": "ch2",
   "note": "pivot = where the neck leaves the shell (shell joint \"head\")"
  },
  "sundial_head_nap": {
   "file": "sprites/sundial_head_nap.png",
   "w": 109.0,
   "h": 98.0,
   "pivot": [
    0.1284,
    0.9694
   ],
   "group": "cast",
   "load": "ch2",
   "note": "pivot = where the neck leaves the shell (shell joint \"head\")"
  },
  "sundial_head_tucked": {
   "file": "sprites/sundial_head_tucked.png",
   "w": 32.5,
   "h": 28.5,
   "pivot": [
    0.2462,
    0.9298
   ],
   "group": "cast",
   "load": "ch2",
   "note": "pivot = where the neck leaves the shell (shell joint \"head\")"
  },
  "sundial_leg": {
   "file": "sprites/sundial_leg.png",
   "w": 41.5,
   "h": 46.0,
   "pivot": [
    0.494,
    0.2065
   ],
   "group": "cast",
   "load": "ch2",
   "note": "pivot = top; walk 4 = angles 10, 0, -10, 0, 0.9 s per step"
  },
  "sundial_nap": {
   "file": "sprites/sundial_nap.png",
   "w": 211.5,
   "h": 174.0,
   "pivot": [
    0.4326,
    0.9138
   ],
   "group": "cast",
   "load": "ch2",
   "note": "whole pose: tucked nap"
  },
  "sundial_shell": {
   "file": "sprites/sundial_shell.png",
   "w": 176.5,
   "h": 148.5,
   "pivot": [
    0.5014,
    0.9495
   ],
   "joints": {
    "head": [
     0.8414,
     0.9495
    ],
    "leg_fn": [
     0.7734,
     1.0034
    ],
    "leg_bn": [
     0.2181,
     1.0034
    ],
    "leg_ff": [
     0.6997,
     0.9697
    ],
    "leg_bf": [
     0.2748,
     0.9697
    ]
   },
   "group": "cast",
   "load": "ch2",
   "note": "pivot = bottom centre of the shell rim; layer: far legs, head, near legs, shell (the shell overlaps the leg tops)"
  },
  "sundial_shell_daisies": {
   "file": "sprites/sundial_shell_daisies.png",
   "w": 176.5,
   "h": 136.5,
   "pivot": [
    0.5014,
    0.9451
   ],
   "joints": {
    "head": [
     0.8414,
     0.9451
    ],
    "leg_fn": [
     0.7734,
     1.0037
    ],
    "leg_bn": [
     0.2181,
     1.0037
    ],
    "leg_ff": [
     0.6997,
     0.967
    ],
    "leg_bf": [
     0.2748,
     0.967
    ]
   },
   "group": "wear",
   "load": "ch2",
   "note": "pivot = bottom centre of the shell rim; layer: far legs, head, near legs, shell (the shell overlaps the leg tops)"
  },
  "sundial_shell_moss": {
   "file": "sprites/sundial_shell_moss.png",
   "w": 176.5,
   "h": 148.5,
   "pivot": [
    0.5014,
    0.9495
   ],
   "joints": {
    "head": [
     0.8414,
     0.9495
    ],
    "leg_fn": [
     0.7734,
     1.0034
    ],
    "leg_bn": [
     0.2181,
     1.0034
    ],
    "leg_ff": [
     0.6997,
     0.9697
    ],
    "leg_bf": [
     0.2748,
     0.9697
    ]
   },
   "group": "wear",
   "load": "ch2",
   "note": "pivot = bottom centre of the shell rim; layer: far legs, head, near legs, shell (the shell overlaps the leg tops)"
  },
  "sundial_shell_vane": {
   "file": "sprites/sundial_shell_vane.png",
   "w": 176.5,
   "h": 136.0,
   "pivot": [
    0.5014,
    0.9449
   ],
   "joints": {
    "head": [
     0.8414,
     0.9449
    ],
    "leg_fn": [
     0.7734,
     1.0037
    ],
    "leg_bn": [
     0.2181,
     1.0037
    ],
    "leg_ff": [
     0.6997,
     0.9669
    ],
    "leg_bf": [
     0.2748,
     0.9669
    ]
   },
   "group": "wear",
   "load": "ch2",
   "note": "pivot = bottom centre of the shell rim; layer: far legs, head, near legs, shell (the shell overlaps the leg tops)"
  },
  "tag": {
   "file": "sprites/tag.png",
   "w": 190.0,
   "h": 60.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "ui",
   "load": "hub",
   "note": "painted wooden tag for hub labels; 9-slice 30 px; 16 px text"
  },
  "tank_engine": {
   "file": "sprites/tank_engine.png",
   "w": 221.0,
   "h": 129.5,
   "pivot": [
    0.9163,
    0.9807
   ],
   "joints": {
    "chimney": [
     0.8756,
     0.0154
    ]
   },
   "group": "ch3",
   "load": "ch3",
   "note": "our own tank engine (no real livery); steam at \"chimney\""
  },
  "tea_bench": {
   "file": "sprites/tea_bench.png",
   "w": 215.0,
   "h": 40.0,
   "pivot": [
    0.0116,
    0.9375
   ],
   "group": "ch1",
   "load": "ch1",
   "note": "bench (Marchpane lands on it; it holds)"
  },
  "tea_table": {
   "file": "sprites/tea_table.png",
   "w": 291.0,
   "h": 102.5,
   "pivot": [
    0.0189,
    0.9756
   ],
   "joints": {
    "cake": [
     0.8265,
     0.3415
    ]
   },
   "group": "ch1",
   "load": "ch1",
   "note": "1-10 harvest tea table; cake stand at \"cake\""
  },
  "teal_cheer": {
   "file": "sprites/teal_cheer.png",
   "w": 73.0,
   "h": 136.5,
   "pivot": [
    0.4452,
    0.9304
   ],
   "joints": {
    "hand": [
     0.7192,
     0.4908
    ]
   },
   "group": "people",
   "load": "ch2",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "teal_gesture": {
   "file": "sprites/teal_gesture.png",
   "w": 72.5,
   "h": 137.5,
   "pivot": [
    0.4621,
    0.9273
   ],
   "joints": {
    "hand": [
     0.7379,
     0.4909
    ]
   },
   "group": "people",
   "load": "ch2",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "teal_portrait": {
   "file": "sprites/teal_portrait.png",
   "w": 112.5,
   "h": 109.5,
   "pivot": [
    0.4578,
    1.0
   ],
   "group": "people",
   "load": "hub",
   "note": "head-and-shoulders portrait for cards / hub tags"
  },
  "teal_stand": {
   "file": "sprites/teal_stand.png",
   "w": 71.5,
   "h": 138.0,
   "pivot": [
    0.4615,
    0.9275
   ],
   "joints": {
    "hand": [
     0.7413,
     0.4928
    ]
   },
   "group": "people",
   "load": "ch2",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "teal_wave": {
   "file": "sprites/teal_wave.png",
   "w": 74.0,
   "h": 137.5,
   "pivot": [
    0.4392,
    0.9273
   ],
   "joints": {
    "hand": [
     0.7095,
     0.4909
    ]
   },
   "group": "people",
   "load": "ch2",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.92 u"
  },
  "thimble_body": {
   "file": "sprites/thimble_body.png",
   "w": 191.5,
   "h": 95.0,
   "pivot": [
    0.483,
    0.8316
   ],
   "joints": {
    "neck": [
     0.8225,
     0.2526
    ],
    "tail": [
     0.0183,
     0.1579
    ],
    "leg_fn": [
     0.8747,
     0.7474
    ],
    "leg_ff": [
     0.8486,
     0.7263
    ],
    "leg_bn": [
     0.1697,
     0.7474
    ],
    "leg_bf": [
     0.1436,
     0.7263
    ],
    "saddle": [
     0.483,
     0.0421
    ]
   },
   "group": "cast",
   "load": "ch3",
   "note": "pivot = barrel centre; layer: far legs, near legs, tail, body, neck, head, collar, brasses"
  },
  "thimble_brasses": {
   "file": "sprites/thimble_brasses.png",
   "w": 23.0,
   "h": 85.5,
   "pivot": [
    0.5,
    0.0585
   ],
   "group": "cast",
   "load": "ch3",
   "note": "on neck \"brass\""
  },
  "thimble_brasses_heart": {
   "file": "sprites/thimble_brasses_heart.png",
   "w": 23.0,
   "h": 85.5,
   "pivot": [
    0.5,
    0.0585
   ],
   "group": "wear",
   "load": "ch3",
   "note": "cosmetic: Heart Brasses"
  },
  "thimble_collar": {
   "file": "sprites/thimble_collar.png",
   "w": 39.5,
   "h": 87.5,
   "pivot": [
    0.4051,
    0.6229
   ],
   "group": "cast",
   "load": "ch3",
   "note": "on neck \"collar\""
  },
  "thimble_head_calm": {
   "file": "sprites/thimble_head_calm.png",
   "w": 89.0,
   "h": 95.0,
   "pivot": [
    0.118,
    0.3368
   ],
   "joints": {
    "hat": [
     0.1742,
     0.1789
    ]
   },
   "group": "cast",
   "load": "ch3",
   "note": "pivot = poll; nod on the beat +-6 deg"
  },
  "thimble_head_grin": {
   "file": "sprites/thimble_head_grin.png",
   "w": 89.0,
   "h": 95.0,
   "pivot": [
    0.118,
    0.3368
   ],
   "joints": {
    "hat": [
     0.1742,
     0.1789
    ]
   },
   "group": "cast",
   "load": "ch3",
   "note": "pivot = poll; nod on the beat +-6 deg"
  },
  "thimble_head_shut": {
   "file": "sprites/thimble_head_shut.png",
   "w": 89.0,
   "h": 95.0,
   "pivot": [
    0.118,
    0.3368
   ],
   "joints": {
    "hat": [
     0.1742,
     0.1789
    ]
   },
   "group": "cast",
   "load": "ch3",
   "note": "pivot = poll; nod on the beat +-6 deg"
  },
  "thimble_leg_bent": {
   "file": "sprites/thimble_leg_bent.png",
   "w": 63.5,
   "h": 85.5,
   "pivot": [
    0.2913,
    0.117
   ],
   "group": "cast",
   "load": "ch3",
   "note": "pivot = shoulder/hip; trot 4 on the beat: diagonal pairs swap straight/bent, angles +-14 deg; canter = 0.34 s"
  },
  "thimble_leg_bent_far": {
   "file": "sprites/thimble_leg_bent_far.png",
   "w": 63.5,
   "h": 85.5,
   "pivot": [
    0.2913,
    0.117
   ],
   "group": "cast",
   "load": "ch3",
   "note": "pivot = shoulder/hip; trot 4 on the beat: diagonal pairs swap straight/bent, angles +-14 deg; canter = 0.34 s"
  },
  "thimble_leg_straight": {
   "file": "sprites/thimble_leg_straight.png",
   "w": 46.5,
   "h": 103.5,
   "pivot": [
    0.4624,
    0.0966
   ],
   "group": "cast",
   "load": "ch3",
   "note": "pivot = shoulder/hip; trot 4 on the beat: diagonal pairs swap straight/bent, angles +-14 deg; canter = 0.34 s"
  },
  "thimble_leg_straight_far": {
   "file": "sprites/thimble_leg_straight_far.png",
   "w": 46.5,
   "h": 103.5,
   "pivot": [
    0.4624,
    0.0966
   ],
   "group": "cast",
   "load": "ch3",
   "note": "pivot = shoulder/hip; trot 4 on the beat: diagonal pairs swap straight/bent, angles +-14 deg; canter = 0.34 s"
  },
  "thimble_neck": {
   "file": "sprites/thimble_neck.png",
   "w": 114.5,
   "h": 126.0,
   "pivot": [
    0.3188,
    0.7778
   ],
   "joints": {
    "poll": [
     0.8865,
     0.0952
    ],
    "collar": [
     0.2751,
     0.8175
    ],
    "brass": [
     0.4934,
     0.8968
    ]
   },
   "group": "cast",
   "load": "ch3",
   "note": "pivot = withers (body \"neck\"); head on \"poll\""
  },
  "thimble_neck_plaited": {
   "file": "sprites/thimble_neck_plaited.png",
   "w": 111.0,
   "h": 119.0,
   "pivot": [
    0.2973,
    0.7647
   ],
   "joints": {
    "poll": [
     0.8829,
     0.042
    ],
    "collar": [
     0.2523,
     0.8067
    ],
    "brass": [
     0.4775,
     0.8908
    ]
   },
   "group": "wear",
   "load": "ch3",
   "note": "pivot = withers (body \"neck\"); head on \"poll\""
  },
  "thimble_shake": {
   "file": "sprites/thimble_shake.png",
   "w": 368.0,
   "h": 290.0,
   "pivot": [
    0.4334,
    0.7052
   ],
   "group": "cast",
   "load": "ch3",
   "note": "shakes like a dog after the splash"
  },
  "thimble_swim": {
   "file": "sprites/thimble_swim.png",
   "w": 343.5,
   "h": 115.5,
   "pivot": [
    0.4148,
    0.9784
   ],
   "group": "cast",
   "load": "ch3",
   "note": "pivot = water line"
  },
  "thimble_tail_0": {
   "file": "sprites/thimble_tail_0.png",
   "w": 42.5,
   "h": 88.0,
   "pivot": [
    0.9294,
    0.1136
   ],
   "group": "cast",
   "load": "ch3",
   "note": "pivot = dock"
  },
  "thimble_tail_1": {
   "file": "sprites/thimble_tail_1.png",
   "w": 62.0,
   "h": 78.0,
   "pivot": [
    0.9516,
    0.1282
   ],
   "group": "cast",
   "load": "ch3",
   "note": "pivot = dock"
  },
  "tool_roll_3": {
   "file": "sprites/tool_roll_3.png",
   "w": 255.0,
   "h": 100.0,
   "pivot": [
    0.0,
    0.0
   ],
   "group": "ui",
   "load": "first",
   "note": "brace pouch background (3 sticks)"
  },
  "tool_roll_4": {
   "file": "sprites/tool_roll_4.png",
   "w": 330.0,
   "h": 100.0,
   "pivot": [
    0.0,
    0.0
   ],
   "group": "ui",
   "load": "first",
   "note": "material tray background; slot centres every 150 PNG px from x=95"
  },
  "towpath_fence": {
   "file": "sprites/towpath_fence.png",
   "w": 254.0,
   "h": 54.0,
   "pivot": [
    0.0276,
    0.963
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "towpath fence, tile every 480"
  },
  "tuft": {
   "file": "sprites/tuft.png",
   "w": 25.0,
   "h": 17.0,
   "pivot": [
    0.48,
    0.8824
   ],
   "group": "ch1",
   "load": "first",
   "note": "grass tuft"
  },
  "turnip": {
   "file": "sprites/turnip.png",
   "w": 35.0,
   "h": 55.0,
   "pivot": [
    0.5,
    0.6
   ],
   "group": "ui",
   "load": "first",
   "note": "turnip currency icon"
  },
  "twelvetrees_cheer": {
   "file": "sprites/twelvetrees_cheer.png",
   "w": 83.5,
   "h": 164.5,
   "pivot": [
    0.4251,
    0.9392
   ],
   "joints": {
    "hand": [
     0.7078,
     0.5088
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 2.26 u"
  },
  "twelvetrees_gesture": {
   "file": "sprites/twelvetrees_gesture.png",
   "w": 76.0,
   "h": 164.5,
   "pivot": [
    0.3882,
    0.9392
   ],
   "joints": {
    "hand": [
     0.6987,
     0.5088
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 2.26 u"
  },
  "twelvetrees_point": {
   "file": "sprites/twelvetrees_point.png",
   "w": 82.0,
   "h": 164.5,
   "pivot": [
    0.3659,
    0.9392
   ],
   "joints": {
    "hand": [
     0.6537,
     0.5088
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 2.26 u"
  },
  "twelvetrees_portrait": {
   "file": "sprites/twelvetrees_portrait.png",
   "w": 119.0,
   "h": 168.5,
   "pivot": [
    0.5042,
    1.0
   ],
   "group": "people",
   "load": "hub",
   "note": "head-and-shoulders portrait for cards / hub tags"
  },
  "twelvetrees_stand": {
   "file": "sprites/twelvetrees_stand.png",
   "w": 59.0,
   "h": 164.5,
   "pivot": [
    0.5,
    0.9392
   ],
   "joints": {
    "hand": [
     0.9,
     0.5088
    ]
   },
   "group": "people",
   "load": "common",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 2.26 u"
  },
  "valley_map": {
   "file": "sprites/valley_map.png",
   "w": 1020.0,
   "h": 570.0,
   "pivot": [
    0.0,
    0.0
   ],
   "joints": {
    "l01": [
     0.0387,
     0.7895
    ],
    "l02": [
     0.0819,
     0.7754
    ],
    "l03": [
     0.1196,
     0.7632
    ],
    "l04": [
     0.15,
     0.7816
    ],
    "l05": [
     0.1814,
     0.8167
    ],
    "l06": [
     0.2088,
     0.8474
    ],
    "l07": [
     0.2431,
     0.8289
    ],
    "l08": [
     0.2824,
     0.8079
    ],
    "l09": [
     0.3157,
     0.7842
    ],
    "l10": [
     0.3466,
     0.7474
    ],
    "l11": [
     0.3819,
     0.7053
    ],
    "l12": [
     0.4127,
     0.6965
    ],
    "l13": [
     0.4436,
     0.7088
    ],
    "l14": [
     0.4789,
     0.7228
    ],
    "l15": [
     0.5098,
     0.6982
    ],
    "l16": [
     0.5407,
     0.6675
    ],
    "l17": [
     0.576,
     0.6386
    ],
    "l18": [
     0.6069,
     0.6509
    ],
    "l19": [
     0.6377,
     0.6632
    ],
    "l20": [
     0.673,
     0.6561
    ],
    "l21": [
     0.7039,
     0.6193
    ],
    "l22": [
     0.7348,
     0.5825
    ],
    "l23": [
     0.7652,
     0.5798
    ],
    "l24": [
     0.7892,
     0.5982
    ],
    "l25": [
     0.8132,
     0.6167
    ],
    "l26": [
     0.8407,
     0.5763
    ],
    "l27": [
     0.8647,
     0.5333
    ],
    "l28": [
     0.8892,
     0.4947
    ],
    "l29": [
     0.9206,
     0.4807
    ],
    "l30": [
     0.948,
     0.4684
    ]
   },
   "group": "hub",
   "load": "hub",
   "note": "level select = the valley painted on a board; bridge pins l01..l30 (cleared = draw a tiny plank bridge there)"
  },
  "viaduct": {
   "file": "sprites/viaduct.png",
   "w": 535.0,
   "h": 227.0,
   "pivot": [
    0.014,
    0.0639
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "viaduct high above the gorge; the engine runs along y = pivot"
  },
  "village_sign": {
   "file": "sprites/village_sign.png",
   "w": 245.0,
   "h": 287.5,
   "pivot": [
    0.5,
    0.9826
   ],
   "group": "ending",
   "load": "ending",
   "note": "the village sign the new bridges are painted on"
  },
  "villager_a_cheer": {
   "file": "sprites/villager_a_cheer.png",
   "w": 70.5,
   "h": 138.0,
   "pivot": [
    0.4255,
    0.9348
   ],
   "joints": {
    "hand": [
     0.7035,
     0.5087
    ]
   },
   "group": "people",
   "load": "ch1",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.88 u"
  },
  "villager_a_sit": {
   "file": "sprites/villager_a_sit.png",
   "w": 83.5,
   "h": 116.0,
   "pivot": [
    0.3653,
    1.0216
   ],
   "joints": {
    "hand": [
     0.6,
     0.5147
    ]
   },
   "group": "people",
   "load": "ch1",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.88 u"
  },
  "villager_a_stand": {
   "file": "sprites/villager_a_stand.png",
   "w": 58.5,
   "h": 137.5,
   "pivot": [
    0.4615,
    0.9309
   ],
   "joints": {
    "hand": [
     0.7966,
     0.5033
    ]
   },
   "group": "people",
   "load": "ch1",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 1.88 u"
  },
  "villager_b_cheer": {
   "file": "sprites/villager_b_cheer.png",
   "w": 77.0,
   "h": 151.5,
   "pivot": [
    0.4286,
    0.934
   ],
   "joints": {
    "hand": [
     0.7013,
     0.5182
    ]
   },
   "group": "people",
   "load": "ch1",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 2.01 u"
  },
  "villager_b_sit": {
   "file": "sprites/villager_b_sit.png",
   "w": 75.5,
   "h": 128.0,
   "pivot": [
    0.3576,
    1.0195
   ],
   "joints": {
    "hand": [
     0.6358,
     0.5273
    ]
   },
   "group": "people",
   "load": "ch1",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 2.01 u"
  },
  "villager_b_stand": {
   "file": "sprites/villager_b_stand.png",
   "w": 61.5,
   "h": 150.5,
   "pivot": [
    0.439,
    0.9336
   ],
   "joints": {
    "hand": [
     0.7805,
     0.515
    ]
   },
   "group": "people",
   "load": "ch1",
   "note": "pivot = between the feet on the ground; facing right (flip for left); height 2.01 u"
  },
  "washing": {
   "file": "sprites/washing.png",
   "w": 270.0,
   "h": 110.0,
   "pivot": [
    0.0185,
    0.9545
   ],
   "group": "ch1",
   "load": "ch1",
   "note": "the miller's washing line; _wet after the belly-flop wave"
  },
  "washing_wet": {
   "file": "sprites/washing_wet.png",
   "w": 270.0,
   "h": 110.0,
   "pivot": [
    0.0185,
    0.9545
   ],
   "group": "ch1",
   "load": "ch1",
   "note": "the miller's washing line; _wet after the belly-flop wave"
  },
  "water_canal": {
   "file": "sprites/water_canal.png",
   "w": 520.0,
   "h": 110.0,
   "pivot": [
    0.0,
    0.0
   ],
   "group": "ch2",
   "load": "ch2",
   "note": "canal water (darker, still)"
  },
  "water_pond": {
   "file": "sprites/water_pond.png",
   "w": 520.0,
   "h": 110.0,
   "pivot": [
    0.0,
    0.0
   ],
   "group": "ch1",
   "load": "ch1",
   "note": "mill pond (calmer, paler), tileable"
  },
  "water_pool": {
   "file": "sprites/water_pool.png",
   "w": 520.0,
   "h": 110.0,
   "pivot": [
    0.0,
    0.0
   ],
   "group": "ch3",
   "load": "ch3",
   "note": "gorge pool"
  },
  "water_race": {
   "file": "sprites/water_race.png",
   "w": 520.0,
   "h": 110.0,
   "pivot": [
    0.0,
    0.0
   ],
   "group": "ch1",
   "load": "first",
   "note": "mill race water, tile x every 1040; scroll ripples 20 px/s"
  },
  "wear_dulcie_flat_cap": {
   "file": "sprites/wear_dulcie_flat_cap.png",
   "w": 51.5,
   "h": 25.5,
   "pivot": [
    0.4466,
    0.7255
   ],
   "group": "wear",
   "load": "common",
   "note": "Dulcie: Flat Cap (head top; the portrait/pose sprites are drawn bare); pivot = attachment point"
  },
  "wear_dulcie_keeper_cap": {
   "file": "sprites/wear_dulcie_keeper_cap.png",
   "w": 48.5,
   "h": 24.5,
   "pivot": [
    0.4536,
    0.7143
   ],
   "group": "wear",
   "load": "common",
   "note": "Dulcie: the Lock-Keeper's Cap (earned); pivot = attachment point"
  },
  "wear_dulcie_neckerchief": {
   "file": "sprites/wear_dulcie_neckerchief.png",
   "w": 35.0,
   "h": 27.5,
   "pivot": [
    0.5,
    0.1818
   ],
   "group": "wear",
   "load": "common",
   "note": "Dulcie: Red Neckerchief (neck); pivot = attachment point"
  },
  "wear_dulcie_spirit_level": {
   "file": "sprites/wear_dulcie_spirit_level.png",
   "w": 55.0,
   "h": 15.0,
   "pivot": [
    0.5,
    0.5
   ],
   "group": "wear",
   "load": "common",
   "note": "Dulcie: Brass Spirit Level (belt); pivot = attachment point"
  },
  "wear_hen_cherry_hat": {
   "file": "sprites/wear_hen_cherry_hat.png",
   "w": 51.0,
   "h": 44.5,
   "pivot": [
    0.5,
    0.764
   ],
   "group": "wear",
   "load": "common",
   "note": "hens: Cherry Hat; pivot = attachment point"
  },
  "wear_hen_lace_cap": {
   "file": "sprites/wear_hen_lace_cap.png",
   "w": 52.0,
   "h": 33.5,
   "pivot": [
    0.5,
    0.6716
   ],
   "group": "wear",
   "load": "common",
   "note": "hens: Lace Cap (on hen body \"hat\"); pivot = attachment point"
  },
  "wear_hen_sunday_bonnet": {
   "file": "sprites/wear_hen_sunday_bonnet.png",
   "w": 71.0,
   "h": 53.5,
   "pivot": [
    0.4718,
    0.6075
   ],
   "group": "wear",
   "load": "common",
   "note": "Mrs Bustle's Sunday Bonnet (feed sack day 7); pivot = attachment point"
  },
  "wear_hen_toque": {
   "file": "sprites/wear_hen_toque.png",
   "w": 59.0,
   "h": 56.5,
   "pivot": [
    0.339,
    0.8673
   ],
   "group": "wear",
   "load": "common",
   "note": "hens: Feather Toque; pivot = attachment point"
  },
  "wear_sow_bow_blue": {
   "file": "sprites/wear_sow_bow_blue.png",
   "w": 77.0,
   "h": 60.5,
   "pivot": [
    0.5,
    0.3306
   ],
   "group": "wear",
   "load": "common",
   "note": "Marchpane: Blue Show Bow (on body \"collar\"); pivot = attachment point"
  },
  "wear_sow_bow_gingham": {
   "file": "sprites/wear_sow_bow_gingham.png",
   "w": 77.0,
   "h": 60.5,
   "pivot": [
    0.5,
    0.3306
   ],
   "group": "wear",
   "load": "common",
   "note": "Marchpane: Gingham Bow (on body \"collar\"); pivot = attachment point"
  },
  "wear_sow_bunting": {
   "file": "sprites/wear_sow_bunting.png",
   "w": 135.0,
   "h": 38.5,
   "pivot": [
    0.5,
    0.1948
   ],
   "group": "wear",
   "load": "common",
   "note": "Marchpane: Bunting Collar (on body \"collar\"); pivot = attachment point"
  },
  "wear_sow_daisy_chain": {
   "file": "sprites/wear_sow_daisy_chain.png",
   "w": 153.0,
   "h": 37.0,
   "pivot": [
    0.5,
    0.4459
   ],
   "group": "wear",
   "load": "common",
   "note": "Marchpane: Daisy Chain (on body \"collar\"); pivot = attachment point"
  },
  "wear_sow_party_hat": {
   "file": "sprites/wear_sow_party_hat.png",
   "w": 115.0,
   "h": 51.0,
   "pivot": [
    0.5,
    0.7353
   ],
   "group": "wear",
   "load": "common",
   "note": "Marchpane: Garden Party Hat with ear holes (on head \"hat\"); pivot = attachment point"
  },
  "wear_sow_sash": {
   "file": "sprites/wear_sow_sash.png",
   "w": 50.0,
   "h": 100.5,
   "pivot": [
    0.35,
    0.4726
   ],
   "group": "wear",
   "load": "common",
   "note": "Marchpane: the Show Champion's Sash (earned; on body \"collar\"); pivot = attachment point"
  },
  "wear_sow_tea_rosette": {
   "file": "sprites/wear_sow_tea_rosette.png",
   "w": 51.0,
   "h": 74.5,
   "pivot": [
    0.5,
    0.3423
   ],
   "group": "wear",
   "load": "common",
   "note": "Marchpane: the Tea-Table Rosette (earned; on body \"collar\"); pivot = attachment point"
  },
  "wear_thimble_sun_hat": {
   "file": "sprites/wear_thimble_sun_hat.png",
   "w": 95.0,
   "h": 45.5,
   "pivot": [
    0.5,
    0.7473
   ],
   "group": "wear",
   "load": "ch3",
   "note": "Thimble: Straw Sun Hat (on head \"hat\"); pivot = attachment point"
  },
  "wharf_crane": {
   "file": "sprites/wharf_crane.png",
   "w": 177.0,
   "h": 237.5,
   "pivot": [
    0.1102,
    0.9895
   ],
   "joints": {
    "hook": [
     0.9294,
     0.4632
    ]
   },
   "group": "ch2",
   "load": "ch2",
   "note": "2-6 crane; anchor_hook hangs at \"hook\" and sways"
  },
  "willow": {
   "file": "sprites/willow.png",
   "w": 172.0,
   "h": 145.0,
   "pivot": [
    0.5116,
    0.9828
   ],
   "group": "ch1",
   "load": "first",
   "note": "weeping willow, pivot = trunk foot"
  }
 }
}