```json
{
  "sym_variables": [
    ("x0", "hours worked by John"),
    ("x1", "hours worked by Peggy"),
    ("x2", "hours worked by Paul"),
    ("x3", "hours worked by Bobby"),
    ("x4", "hours worked by Mary"),
    ("x5", "hours worked by Laura"),
    ("x6", "hours worked by Jean")
  ],
  "objective_function": "3*x0^2 + 4*x1*x4 + 3*x2*x4 + 4*x2*x5 + 7*x3*x5 + x4*x5 + 3*x3",
  "constraints": [
    "22*x0 <= 906",
    "17*x1 <= 906",
    "4*x2 <= 906",
    "29*x3 <= 906",
    "18*x4 <= 906",
    "15*x5 <= 906",
    "22*x6 <= 906",
    "-10*x0^2 + 10*x1^2 >= 0",
    "29*x3^2 + 18*x4^2 <= 385",
    "17*x1^2 + 22*x6^2 <= 449",
    "17*x1 + 18*x4 <= 432",
    "17*x1 + 4*x2 <= 855",
    "17*x1^2 + 29*x3^2 <= 264",
    "22*x0^2 + 18*x4^2 <= 364",
    "18*x4 + 15*x5 <= 283",
    "4*x2 + 22*x6 <= 363",
    "4*x2 + 18*x4 <= 653",
    "22*x0 + 15*x5 <= 253",
    "22*x0 + 4*x2 <= 690",
    "22*x0 + 17*x1 <= 300",
    "22*x0 + 22*x6 <= 279",
    "18*x4^2 + 22*x6^2 <= 527",
    "22*x0 + 29*x3 <= 199",
    "22*x0^2 + 15*x5^2 + 22*x6^2 <= 571",
    "17*x1 + 4*x2 + 15*x5 <= 527",
    "22*x0 + 17*x1 + 22*x6 <= 650",
    "4*x2 + 18*x4 + 15*x5 <= 862",
    "29*x3 + 15*x5 + 22*x6 <= 881",
    "22*x0 + 17*x1 + 15*x5 <= 561",
    "17*x1 + 4*x2 + 18*x4 <= 817",
    "22*x0 + 4*x2 + 15*x5 <= 402",
    "17*x1 + 29*x3 + 22*x6 <= 698",
    "22*x0 + 29*x3 + 22*x6 <= 380",
    "4*x2 + 29*x3 + 18*x4 <= 824",
    "29*x3 + 18*x4 + 15*x5 <= 699",
    "17*x1 + 29*x3 + 18*x4 <= 271",
    "4*x2 + 29*x3 + 22*x6 <= 899",
    "4*x2 + 29*x3 + 15*x5 <= 199",
    "22*x0 + 4*x2 + 29*x3 <= 225",
    "22*x0 + 17*x1 + 4*x2 + 29*x3 + 18*x4 + 15*x5 + 22*x6 <= 225"
  ]
}
```

```python
import gurobipy as gp
from gurobipy import GRB

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

# Create variables
x = m.addVars(7, lb=0, vtype=GRB.CONTINUOUS, name=["John", "Peggy", "Paul", "Bobby", "Mary", "Laura", "Jean"])


# Set objective function
m.setObjective(3*x[0]*x[0] + 4*x[1]*x[4] + 3*x[2]*x[4] + 4*x[2]*x[5] + 7*x[3]*x[5] + x[4]*x[5] + 3*x[3], GRB.MAXIMIZE)

# Add constraints
m.addConstr(22*x[0] <= 906)
m.addConstr(17*x[1] <= 906)
m.addConstr(4*x[2] <= 906)
m.addConstr(29*x[3] <= 906)
m.addConstr(18*x[4] <= 906)
m.addConstr(15*x[5] <= 906)
m.addConstr(22*x[6] <= 906)
m.addConstr(-10*x[0]*x[0] + 10*x[1]*x[1] >= 0)
m.addConstr(29*x[3]*x[3] + 18*x[4]*x[4] <= 385)
m.addConstr(17*x[1]*x[1] + 22*x[6]*x[6] <= 449)
m.addConstr(17*x[1] + 18*x[4] <= 432)
m.addConstr(17*x[1] + 4*x[2] <= 855)
m.addConstr(17*x[1]*x[1] + 29*x[3]*x[3] <= 264)
m.addConstr(22*x[0]*x[0] + 18*x[4]*x[4] <= 364)
m.addConstr(18*x[4] + 15*x[5] <= 283)
m.addConstr(4*x[2] + 22*x[6] <= 363)
m.addConstr(4*x[2] + 18*x[4] <= 653)
m.addConstr(22*x[0] + 15*x[5] <= 253)
m.addConstr(22*x[0] + 4*x[2] <= 690)
m.addConstr(22*x[0] + 17*x[1] <= 300)
m.addConstr(22*x[0] + 22*x[6] <= 279)
m.addConstr(18*x[4]*x[4] + 22*x[6]*x[6] <= 527)
m.addConstr(22*x[0] + 29*x[3] <= 199)
m.addConstr(22*x[0]*x[0] + 15*x[5]*x[5] + 22*x[6]*x[6] <= 571)
m.addConstr(17*x[1] + 4*x[2] + 15*x[5] <= 527)
m.addConstr(22*x[0] + 17*x[1] + 22*x[6] <= 650)
m.addConstr(4*x[2] + 18*x[4] + 15*x[5] <= 862)
m.addConstr(29*x[3] + 15*x[5] + 22*x[6] <= 881)
m.addConstr(22*x[0] + 17*x[1] + 15*x[5] <= 561)
m.addConstr(17*x[1] + 4*x[2] + 18*x[4] <= 817)
m.addConstr(22*x[0] + 4*x[2] + 15*x[5] <= 402)
m.addConstr(17*x[1] + 29*x[3] + 22*x[6] <= 698)
m.addConstr(22*x[0] + 29*x[3] + 22*x[6] <= 380)
m.addConstr(4*x[2] + 29*x[3] + 18*x[4] <= 824)
m.addConstr(29*x[3] + 18*x[4] + 15*x[5] <= 699)
m.addConstr(17*x[1] + 29*x[3] + 18*x[4] <= 271)
m.addConstr(4*x[2] + 29*x[3] + 22*x[6] <= 899)
m.addConstr(4*x[2] + 29*x[3] + 15*x[5] <= 199)
m.addConstr(22*x[0] + 4*x[2] + 29*x[3] <= 225)
m.addConstr(22*x[0] + 17*x[1] + 4*x[2] + 29*x[3] + 18*x[4] + 15*x[5] + 22*x[6] <= 225)


# Optimize model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    for v in m.getVars():
        print(f"{v.varName}: {v.x}")
    print(f"Objective Value: {m.objVal}")
elif m.status == GRB.INFEASIBLE:
    print("The model is infeasible.")
else:
    print(f"Optimization terminated with status {m.status}.")

```