```json
{
  "sym_variables": [
    ("x0", "headsets"),
    ("x1", "color printers"),
    ("x2", "blue highlighters"),
    ("x3", "usb flash drives"),
    ("x4", "mechanical pencils")
  ],
  "objective_function": "3.93 * x0 + 2.1 * x1 + 1.18 * x2 + 1.57 * x3 + 6.78 * x4",
  "constraints": [
    "2.55 * x0 + 1.31 * x1 >= 51",
    "1.31 * x1 + 4.06 * x3 >= 78",
    "2.55 * x0 + 1.31 * x1 + 4.06 * x3 >= 86",
    "1.31 * x1 + 8.32 * x2 + 0.91 * x4 >= 86",
    "2.55 * x0 + 1.31 * x1 + 0.91 * x4 >= 86",
    "2.55 * x0 + 8.32 * x2 + 0.91 * x4 >= 86",
    "2.55 * x0 + 1.31 * x1 + 4.06 * x3 >= 126",
    "1.31 * x1 + 8.32 * x2 + 0.91 * x4 >= 126",
    "2.55 * x0 + 1.31 * x1 + 0.91 * x4 >= 126",
    "2.55 * x0 + 8.32 * x2 + 0.91 * x4 >= 126",
    "2.55 * x0 + 1.31 * x1 + 4.06 * x3 >= 129",
    "1.31 * x1 + 8.32 * x2 + 0.91 * x4 >= 129",
    "2.55 * x0 + 1.31 * x1 + 0.91 * x4 >= 129",
    "2.55 * x0 + 8.32 * x2 + 0.91 * x4 >= 129",
    "2.55 * x0 + 1.31 * x1 + 4.06 * x3 >= 88",
    "1.31 * x1 + 8.32 * x2 + 0.91 * x4 >= 88",
    "2.55 * x0 + 1.31 * x1 + 0.91 * x4 >= 88",
    "2.55 * x0 + 8.32 * x2 + 0.91 * x4 >= 88",
    "9.37 * x1 + 12.6 * x3 >= 120",
    "0.62 * x2 + 8.74 * x4 >= 64",
    "11.86 * x0 + 0.62 * x2 + 8.74 * x4 >= 121",
    "11.86 * x0 + 9.37 * x1 + 8.74 * x4 >= 121",
    "9.37 * x1 + 12.6 * x3 + 8.74 * x4 >= 121",
    "11.86 * x0 + 0.62 * x2 + 8.74 * x4 >= 113",
    "11.86 * x0 + 9.37 * x1 + 8.74 * x4 >= 113",
    "9.37 * x1 + 12.6 * x3 + 8.74 * x4 >= 113",
    "11.86 * x0 + 0.62 * x2 + 8.74 * x4 >= 95",
    "11.86 * x0 + 9.37 * x1 + 8.74 * x4 >= 95",
    "9.37 * x1 + 12.6 * x3 + 8.74 * x4 >= 95",
    "2.55 * x0 + 8.32 * x2 <= 544",
    "4.06 * x3 + 0.91 * x4 <= 579",
    "1.31 * x1 + 4.06 * x3 <= 223",
    "2.55 * x0 + 0.91 * x4 <= 713",
    "2.55 * x0 + 4.06 * x3 + 0.91 * x4 <= 237",
    "8.32 * x2 + 4.06 * x3 + 0.91 * x4 <= 493",
    "1.31 * x1 + 8.32 * x2 + 4.06 * x3 <= 708",
    "2.55 * x0 + 1.31 * x1 + 8.32 * x2 + 4.06 * x3 + 0.91 * x4 <= 708",
    "11.86 * x0 + 9.37 * x1 <= 286",
    "11.86 * x0 + 12.6 * x3 <= 605",
    "0.62 * x2 + 8.74 * x4 <= 376",
    "0.62 * x2 + 12.6 * x3 + 8.74 * x4 <= 215",
    "11.86 * x0 + 0.62 * x2 + 12.6 * x3 <= 142",
    "9.37 * x1 + 0.62 * x2 + 12.6 * x3 <= 476",
    "9.37 * x1 + 0.62 * x2 + 8.74 * x4 <= 533",
    "9.37 * x1 + 12.6 * x3 + 8.74 * x4 <= 449",
    "11.86 * x0 + 9.37 * x1 + 0.62 * x2 + 12.6 * x3 + 8.74 * x4 <= 449"
  ]
}
```

```python
import gurobipy as gp

# Create a new model
m = gp.Model("optimization_problem")

# Create variables
headsets = m.addVar(vtype=gp.GRB.INTEGER, name="headsets")
color_printers = m.addVar(vtype=gp.GRB.INTEGER, name="color_printers")
blue_highlighters = m.addVar(vtype=gp.GRB.INTEGER, name="blue_highlighters")
usb_flash_drives = m.addVar(vtype=gp.GRB.INTEGER, name="usb_flash_drives")
mechanical_pencils = m.addVar(vtype=gp.GRB.INTEGER, name="mechanical_pencils")

# Set objective function
m.setObjective(3.93 * headsets + 2.1 * color_printers + 1.18 * blue_highlighters + 1.57 * usb_flash_drives + 6.78 * mechanical_pencils, gp.GRB.MAXIMIZE)

# Add constraints
m.addConstr(2.55 * headsets + 1.31 * color_printers >= 51)
m.addConstr(1.31 * color_printers + 4.06 * usb_flash_drives >= 78)
m.addConstr(2.55 * headsets + 1.31 * color_printers + 4.06 * usb_flash_drives >= 86)
m.addConstr(1.31 * color_printers + 8.32 * blue_highlighters + 0.91 * mechanical_pencils >= 86)
# ... (add all other constraints similarly)
m.addConstr(11.86 * headsets + 9.37 * color_printers + 0.62 * blue_highlighters + 12.6 * usb_flash_drives + 8.74 * mechanical_pencils <= 449)


# Optimize model
m.optimize()

# Print results
if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    print('headsets:', headsets.x)
    print('color_printers:', color_printers.x)
    print('blue_highlighters:', blue_highlighters.x)
    print('usb_flash_drives:', usb_flash_drives.x)
    print('mechanical_pencils:', mechanical_pencils.x)

elif m.status == gp.GRB.INFEASIBLE:
    print("The model is infeasible.")
else:
    print("Optimization ended with status:", m.status)

```