demo_capture = {
   "demoIndex": 4,
   "demoVersion": "4.b",
   "gravity": false,
   "wallMapData": {
      "wall1": {
         "parsAtBirth": {
            "fence": true,
            "half_width_m": 3,
            "half_height_m": 0.05,
            "name": "wall1"
         },
         "name": "wall1",
         "position_2d_m": {
            "x": 3,
            "y": 6
         },
         "position_2d_px": {
            "x": 300,
            "y": 0
         },
         "fence": true,
         "velocity_2d_mps": {
            "x": 0,
            "y": 0
         },
         "angle_r": 0,
         "angularSpeed_rps": 0,
         "half_width_m": 3,
         "half_height_m": 0.05,
         "half_width_px": 300,
         "half_height_px": 5,
         "width_scaling": 1,
         "height_scaling": 1,
         "color": "white",
         "deleted": false
      },
      "wall2": {
         "parsAtBirth": {
            "fence": true,
            "half_width_m": 3,
            "half_height_m": 0.05,
            "name": "wall2"
         },
         "name": "wall2",
         "position_2d_m": {
            "x": 3,
            "y": 0
         },
         "position_2d_px": {
            "x": 300,
            "y": 600
         },
         "fence": true,
         "velocity_2d_mps": {
            "x": 0,
            "y": 0
         },
         "angle_r": 0,
         "angularSpeed_rps": 0,
         "half_width_m": 3,
         "half_height_m": 0.05,
         "half_width_px": 300,
         "half_height_px": 5,
         "width_scaling": 1,
         "height_scaling": 1,
         "color": "white",
         "deleted": false
      },
      "wall3": {
         "parsAtBirth": {
            "fence": true,
            "half_width_m": 0.05,
            "half_height_m": 3,
            "name": "wall3"
         },
         "name": "wall3",
         "position_2d_m": {
            "x": 0,
            "y": 3
         },
         "position_2d_px": {
            "x": 0,
            "y": 300
         },
         "fence": true,
         "velocity_2d_mps": {
            "x": 0,
            "y": 0
         },
         "angle_r": 0,
         "angularSpeed_rps": 0,
         "half_width_m": 0.05,
         "half_height_m": 3,
         "half_width_px": 5,
         "half_height_px": 300,
         "width_scaling": 1,
         "height_scaling": 1,
         "color": "white",
         "deleted": false
      },
      "wall4": {
         "parsAtBirth": {
            "fence": true,
            "half_width_m": 0.05,
            "half_height_m": 3,
            "name": "wall4"
         },
         "name": "wall4",
         "position_2d_m": {
            "x": 6,
            "y": 3
         },
         "position_2d_px": {
            "x": 600,
            "y": 300
         },
         "fence": true,
         "velocity_2d_mps": {
            "x": 0,
            "y": 0
         },
         "angle_r": 0,
         "angularSpeed_rps": 0,
         "half_width_m": 0.05,
         "half_height_m": 3,
         "half_width_px": 5,
         "half_height_px": 300,
         "width_scaling": 1,
         "height_scaling": 1,
         "color": "white",
         "deleted": false
      }
   },
   "puckMapData": {
      "puck1": {
         "parsAtBirth": {
            "radius_m": 0.4,
            "color": "GoldenRod",
            "colorSource": true,
            "shape": "rect",
            "angularSpeed_rps": -24.518729259179903,
            "angle_r": -3202.0724848606246,
            "half_height_m": 0.027,
            "half_width_m": 0.4840000000000001,
            "name": "puck1"
         },
         "bullet": false,
         "jello": false,
         "clientName": null,
         "name": "puck1",
         "position_2d_m": {
            "x": 3.5368937746190787,
            "y": 3.4894566236792297
         },
         "position_2d_px": {
            "x": 354,
            "y": 251
         },
         "velocity_2d_mps": {
            "x": 1.340093988203286e-15,
            "y": 6.605311721515957e-15
         },
         "color": "GoldenRod",
         "shape": "rect",
         "colorSource": true,
         "density": 1.5,
         "linDamp": 0,
         "hitLimit": 10,
         "createdByClient": null,
         "ageLimit_ms": null,
         "tailSwitch": false,
         "tail": null,
         "groupIndex": 0,
         "categoryBits": 1,
         "maskBits": 65535,
         "angle_r": -4458.248713905882,
         "angularSpeed_rps": -24.518729259179903,
         "borderWidth_px": 3,
         "createTime": 873803.93,
         "restitution": 1,
         "restitution_fixed": false,
         "friction": 0,
         "friction_fixed": false,
         "radius_m": 0.4,
         "aspectR": 1,
         "half_height_m": 0.027,
         "half_width_m": 0.4840000000000001,
         "half_width_px": 48,
         "half_height_px": 3,
         "width_scaling": 1,
         "height_scaling": 1,
         "radius_scaling": 1,
         "mass_kg": 0.07840800000000002,
         "cursorString_spring_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "cursorString_puckDrag_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "nonCOM_2d_N": [],
         "sprDamp_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "springOnly_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "jet_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "impulse_2d_Ns": {
            "x": 0,
            "y": 0
         },
         "hitCount": 0,
         "poorHealthFraction": 0,
         "flash": false,
         "inComing": false,
         "flashCount": 0,
         "springName": null,
         "pinName": null,
         "deleted": false
      },
      "puck2": {
         "parsAtBirth": {
            "radius_m": 0.15,
            "shape": "rect",
            "aspectR": 4,
            "angularSpeed_rps": -22.23732315942405,
            "angle_r": -3473.6472467344965,
            "half_height_m": 0.03,
            "half_width_m": 0.48600000000000004,
            "name": "puck2"
         },
         "bullet": false,
         "jello": false,
         "clientName": null,
         "name": "puck2",
         "position_2d_m": {
            "x": 2.563973126189772,
            "y": 2.9552698685490086
         },
         "position_2d_px": {
            "x": 256,
            "y": 304
         },
         "velocity_2d_mps": {
            "x": 8.479088445744828e-15,
            "y": -6.397023229809008e-15
         },
         "color": "DarkSlateGray",
         "shape": "rect",
         "colorSource": false,
         "density": 1.5,
         "linDamp": 0,
         "hitLimit": 10,
         "createdByClient": null,
         "ageLimit_ms": null,
         "tailSwitch": false,
         "tail": null,
         "groupIndex": 0,
         "categoryBits": 1,
         "maskBits": 65535,
         "angle_r": -4612.9394366025235,
         "angularSpeed_rps": -22.23732315942405,
         "borderWidth_px": 3,
         "createTime": 873804.0350000001,
         "restitution": 1,
         "restitution_fixed": false,
         "friction": 0,
         "friction_fixed": false,
         "radius_m": 0.15,
         "aspectR": 4,
         "half_height_m": 0.03,
         "half_width_m": 0.48600000000000004,
         "half_width_px": 49,
         "half_height_px": 3,
         "width_scaling": 1,
         "height_scaling": 1,
         "radius_scaling": 1,
         "mass_kg": 0.08748,
         "cursorString_spring_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "cursorString_puckDrag_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "nonCOM_2d_N": [],
         "sprDamp_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "springOnly_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "jet_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "impulse_2d_Ns": {
            "x": 0,
            "y": 0
         },
         "hitCount": 0,
         "poorHealthFraction": 0,
         "flash": false,
         "inComing": false,
         "flashCount": 0,
         "springName": null,
         "pinName": null,
         "deleted": false
      },
      "puck3": {
         "parsAtBirth": {
            "radius_m": 0.15,
            "shape": "rect",
            "aspectR": 4,
            "angularSpeed_rps": -24.49352681889044,
            "angle_r": -4371.42694334071,
            "half_height_m": 0.03,
            "half_width_m": 0.48600000000000004,
            "name": "puck3"
         },
         "bullet": false,
         "jello": false,
         "clientName": null,
         "name": "puck3",
         "position_2d_m": {
            "x": 3.513052750712375,
            "y": 2.379789248707911
         },
         "position_2d_px": {
            "x": 351,
            "y": 362
         },
         "velocity_2d_mps": {
            "x": -9.680209131469477e-15,
            "y": 4.76713713217607e-16
         },
         "color": "DarkSlateGray",
         "shape": "rect",
         "colorSource": false,
         "density": 1.5,
         "linDamp": 0,
         "hitLimit": 10,
         "createdByClient": null,
         "ageLimit_ms": null,
         "tailSwitch": false,
         "tail": null,
         "groupIndex": 0,
         "categoryBits": 1,
         "maskBits": 65535,
         "angle_r": -5626.311967361242,
         "angularSpeed_rps": -24.49352681889044,
         "borderWidth_px": 3,
         "createTime": 873804.1200000001,
         "restitution": 1,
         "restitution_fixed": false,
         "friction": 0,
         "friction_fixed": false,
         "radius_m": 0.15,
         "aspectR": 4,
         "half_height_m": 0.03,
         "half_width_m": 0.48600000000000004,
         "half_width_px": 49,
         "half_height_px": 3,
         "width_scaling": 1,
         "height_scaling": 1,
         "radius_scaling": 1,
         "mass_kg": 0.08748,
         "cursorString_spring_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "cursorString_puckDrag_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "nonCOM_2d_N": [],
         "sprDamp_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "springOnly_force_2d_N": {
            "x": -1.3669579034604412e-16,
            "y": -6.3624305498168015e-15
         },
         "jet_force_2d_N": {
            "x": 0,
            "y": 0
         },
         "impulse_2d_Ns": {
            "x": 0,
            "y": 0
         },
         "hitCount": 0,
         "poorHealthFraction": 0,
         "flash": false,
         "inComing": false,
         "flashCount": 0,
         "springName": null,
         "pinName": null,
         "deleted": false
      }
   },
   "pinMapData": {
      "pin1": {
         "parsAtBirth": {
            "name": "pin1"
         },
         "name": "pin1",
         "position_2d_m": {
            "x": 0.1,
            "y": 0.2
         },
         "position_2d_px": {
            "x": 10,
            "y": 580
         },
         "radius_px": 6,
         "radius_m": 0.08,
         "categoryBits": 0,
         "maskBits": 0,
         "velocity_2d_mps": {
            "x": 0,
            "y": 0
         },
         "deleted": false,
         "NPC": false,
         "nextPinName": null,
         "previousPinName": null,
         "fillColor": "blue",
         "borderColor": "gray"
      },
      "pin2": {
         "parsAtBirth": {
            "name": "pin2"
         },
         "name": "pin2",
         "position_2d_m": {
            "x": 0.1,
            "y": 1.2
         },
         "position_2d_px": {
            "x": 10,
            "y": 480
         },
         "radius_px": 6,
         "radius_m": 0.08,
         "categoryBits": 0,
         "maskBits": 0,
         "velocity_2d_mps": {
            "x": 0,
            "y": 0
         },
         "deleted": false,
         "NPC": false,
         "nextPinName": null,
         "previousPinName": null,
         "fillColor": "blue",
         "borderColor": "gray"
      }
   },
   "springMapData": {
      "s1": {
         "parsAtBirth": {
            "length_m": 1.5,
            "strength_Npm": 10,
            "unstretched_width_m": 0.1,
            "color": "yellow",
            "damper_Ns2pm2": 1,
            "name": "s1"
         },
         "name": "s1",
         "color": "yellow",
         "length_m": 1.5,
         "strength_Npm": 10,
         "unstretched_width_m": 0.1,
         "drag_c": 0,
         "damper_Ns2pm2": 1,
         "dashedLine": false,
         "roundedEnds": true,
         "navigationForNPC": false,
         "p1_name": "pin1",
         "pinned": true,
         "p2_name": "pin2",
         "p1p2_separation_2d_m": {
            "x": 0,
            "y": -1
         },
         "p1p2_separation_m": 1,
         "p1p2_normalized_2d": {
            "x": 0,
            "y": -1
         }
      },
      "s2": {
         "parsAtBirth": {
            "length_m": 1.1099234556926247,
            "strength_Npm": 28.6604523717643,
            "unstretched_width_m": 0.28660452371764306,
            "color": "yellow",
            "damper_Ns2pm2": 1,
            "name": "s2"
         },
         "name": "s2",
         "color": "yellow",
         "length_m": 1.1099234556926247,
         "strength_Npm": 28.6604523717643,
         "unstretched_width_m": 0.28660452371764306,
         "drag_c": 0,
         "damper_Ns2pm2": 1,
         "dashedLine": false,
         "roundedEnds": true,
         "navigationForNPC": false,
         "p1_name": "puck3",
         "pinned": false,
         "p2_name": "puck2",
         "p1p2_separation_2d_m": {
            "x": 0.9490796245226032,
            "y": -0.5754806198410978
         },
         "p1p2_separation_m": 1.1099234556926254,
         "p1p2_normalized_2d": {
            "x": 0.8550856544700636,
            "y": -0.5184867631092458
         }
      },
      "s3": {
         "parsAtBirth": {
            "length_m": 1.1099234556926247,
            "strength_Npm": 28.6604523717643,
            "unstretched_width_m": 0.28660452371764306,
            "color": "yellow",
            "damper_Ns2pm2": 1,
            "name": "s3"
         },
         "name": "s3",
         "color": "yellow",
         "length_m": 1.1099234556926247,
         "strength_Npm": 28.6604523717643,
         "unstretched_width_m": 0.28660452371764306,
         "drag_c": 0,
         "damper_Ns2pm2": 1,
         "dashedLine": false,
         "roundedEnds": true,
         "navigationForNPC": false,
         "p1_name": "puck1",
         "pinned": false,
         "p2_name": "puck3",
         "p1p2_separation_2d_m": {
            "x": 0.02384102390670373,
            "y": 1.1096673749713188
         },
         "p1p2_separation_m": 1.1099234556926245,
         "p1p2_normalized_2d": {
            "x": 0.021479881143539072,
            "y": 0.9997692807373407
         }
      },
      "s4": {
         "parsAtBirth": {
            "length_m": 1.1099234556926247,
            "strength_Npm": 28.6604523717643,
            "unstretched_width_m": 0.28660452371764306,
            "color": "yellow",
            "damper_Ns2pm2": 1,
            "name": "s4"
         },
         "name": "s4",
         "color": "yellow",
         "length_m": 1.1099234556926247,
         "strength_Npm": 28.6604523717643,
         "unstretched_width_m": 0.28660452371764306,
         "drag_c": 0,
         "damper_Ns2pm2": 1,
         "dashedLine": false,
         "roundedEnds": true,
         "navigationForNPC": false,
         "p1_name": "puck2",
         "pinned": false,
         "p2_name": "puck1",
         "p1p2_separation_2d_m": {
            "x": -0.9729206484293069,
            "y": -0.5341867551302211
         },
         "p1p2_separation_m": 1.1099234556926247,
         "p1p2_normalized_2d": {
            "x": -0.8765655356136032,
            "y": -0.4812825176280944
         }
      }
   },
   "clients": {
      "local": {
         "color": "red",
         "name": "local",
         "puck": null,
         "isMouseDown": false,
         "button": null,
         "mouseX_px": 640,
         "mouseY_px": 414,
         "mouse_2d_px": {
            "x": 635,
            "y": 410
         },
         "mouse_2d_m": {
            "x": 6.35,
            "y": 1.9
         },
         "selectedBody": null,
         "selectionPoint_l_2d_m": null,
         "selectionPoint_w_2d_m": null,
         "selectionPoint_w_2d_px": null,
         "key_shift": "U",
         "key_ctrl": "U",
         "key_alt": "U",
         "key_space": "U",
         "key_leftArrow": "U",
         "key_upArrow": "U",
         "key_rightArrow": "U",
         "key_downArrow": "U",
         "key_0": "U",
         "key_1": "U",
         "key_2": "U",
         "key_3": "U",
         "key_4": "U",
         "key_5": "U",
         "key_6": "U",
         "key_7": "U",
         "key_8": "U",
         "key_9": "U",
         "key_a": "U",
         "key_b": "U",
         "key_c": "U",
         "key_d": "U",
         "key_e": "U",
         "key_f": "U",
         "key_g": "U",
         "key_i": "U",
         "key_j": "U",
         "key_k": "U",
         "key_l": "U",
         "key_m": "U",
         "key_p": "U",
         "key_q": "U",
         "key_r": "U",
         "key_s": "U",
         "key_t": "U",
         "key_v": "U",
         "key_w": "U",
         "key_x": "U",
         "key_z": "U",
         "key_s_enabled": true,
         "key_k_enabled": true,
         "key_i_enabled": true,
         "triangle_raw_2d_px": [{
               "x": 0,
               "y": 0
            }, {
               "x": 11,
               "y": 12
            }, {
               "x": 3,
               "y": 16
            }
         ],
         "NPC_guncooling_timer_s": 0,
         "NPC_guncooling_timer_limit_s": 2,
         "NPC_shield_timer_s": 0,
         "NPC_shield_timer_limit_s": 0.5,
         "NPC_pin_timer_s": 0,
         "NPC_pin_timer_limit_s": 5,
         "NPC_aimStepCount": 0,
         "NPC_aimStepCount_limit": 20,
         "NPC_skipFrame": false,
         "triangle_2d_px": [{
               "x": 635,
               "y": 411
            }, {
               "x": 646,
               "y": 423
            }, {
               "x": 638,
               "y": 427
            }
         ],
         "mouseX_m": null,
         "mouseY_m": null
      }
   }
}