## Step 1: Define the optimization problem
The goal is to maximize the objective function: $5 \times \text{lemons} + 3 \times \text{eggs} + 4 \times \text{bagged salads} + 6 \times \text{tomatoes}$.

## Step 2: List all the constraints
The constraints are as follows:
- $14 \times \text{lemons} \leq 135$
- $11 \times \text{lemons} \leq 156$
- $2 \times \text{lemons} \leq 156$
- $4 \times \text{eggs} \leq 135$
- $5 \times \text{eggs} \leq 156$
- $8 \times \text{eggs} \leq 156$
- $15 \times \text{bagged salads} \leq 135$
- $5 \times \text{bagged salads} \leq 156$
- $15 \times \text{bagged salads} \leq 156$
- $13 \times \text{tomatoes} \leq 135$
- $4 \times \text{tomatoes} \leq 156$
- $12 \times \text{tomatoes} \leq 156$
- $14 \times \text{lemons} + 13 \times \text{tomatoes} \geq 19$
- $4 \times \text{eggs} + 13 \times \text{tomatoes} \geq 33$
- $11 \times \text{lemons} + 5 \times \text{eggs} + 4 \times \text{tomatoes} \geq 37$
- $2 \times \text{lemons} + 12 \times \text{tomatoes} \geq 24$
- $2 \times \text{lemons} + 8 \times \text{eggs} \geq 34$
- $2 \times \text{lemons} + 8 \times \text{eggs} + 15 \times \text{bagged salads} \geq 27$
- $8 \times \text{eggs} + 15 \times \text{bagged salads} + 12 \times \text{tomatoes} \geq 27$
- $2 \times \text{lemons} + 8 \times \text{eggs} + 12 \times \text{tomatoes} \geq 27$
- $2 \times \text{lemons} + 8 \times \text{eggs} + 15 \times \text{bagged salads} \geq 35$
- $8 \times \text{eggs} + 15 \times \text{bagged salads} + 12 \times \text{tomatoes} \geq 35$
- $2 \times \text{lemons} + 8 \times \text{eggs} + 12 \times \text{tomatoes} \geq 35$
- $2 \times \text{lemons} + 8 \times \text{eggs} + 15 \times \text{bagged salads} \geq 31$
- $8 \times \text{eggs} + 15 \times \text{bagged salads} + 12 \times \text{tomatoes} \geq 31$
- $2 \times \text{lemons} + 8 \times \text{eggs} + 12 \times \text{tomatoes} \geq 31$
- $4 \times \text{eggs} + 13 \times \text{tomatoes} \leq 86$
- $14 \times \text{lemons} + 4 \times \text{eggs} + 15 \times \text{bagged salads} \leq 75$
- $14 \times \text{lemons} + 4 \times \text{eggs} + 15 \times \text{bagged salads} + 13 \times \text{tomatoes} \leq 75$
- $11 \times \text{lemons} + 5 \times \text{bagged salads} \leq 100$
- $5 \times \text{eggs} + 4 \times \text{tomatoes} \leq 85$
- $5 \times \text{bagged salads} + 4 \times \text{tomatoes} \leq 104$
- $5 \times \text{eggs} + 5 \times \text{bagged salads} \leq 47$
- $11 \times \text{lemons} + 5 \times \text{eggs} + 5 \times \text{bagged salads} + 4 \times \text{tomatoes} \leq 47$
- $15 \times \text{bagged salads} + 12 \times \text{tomatoes} \leq 81$
- $2 \times \text{lemons} + 12 \times \text{tomatoes} \leq 102$
- $8 \times \text{eggs} + 15 \times \text{bagged salads} + 12 \times \text{tomatoes} \leq 142$
- $2 \times \text{lemons} + 8 \times \text{eggs} + 12 \times \text{tomatoes} \leq 147$
- $2 \times \text{lemons} + 8 \times \text{eggs} + 15 \times \text{bagged salads} + 12 \times \text{tomatoes} \leq 147$

## Step 3: Implement the optimization problem using Gurobi
```python
import gurobi as gp

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

# Define the variables
lemons = m.addVar(lb=-gp.GRB.INFINITY, name="lemons")
eggs = m.addVar(lb=-gp.GRB.INFINITY, name="eggs")
bagged_salads = m.addVar(lb=-gp.GRB.INFINITY, name="bagged_salads")
tomatoes = m.addVar(lb=-gp.GRB.INFINITY, name="tomatoes")

# Define the objective function
m.setObjective(5 * lemons + 3 * eggs + 4 * bagged_salads + 6 * tomatoes, gp.GRB.MAXIMIZE)

# Add constraints
m.addConstr(14 * lemons <= 135)
m.addConstr(11 * lemons <= 156)
m.addConstr(2 * lemons <= 156)
m.addConstr(4 * eggs <= 135)
m.addConstr(5 * eggs <= 156)
m.addConstr(8 * eggs <= 156)
m.addConstr(15 * bagged_salads <= 135)
m.addConstr(5 * bagged_salads <= 156)
m.addConstr(15 * bagged_salads <= 156)
m.addConstr(13 * tomatoes <= 135)
m.addConstr(4 * tomatoes <= 156)
m.addConstr(12 * tomatoes <= 156)

m.addConstr(14 * lemons + 13 * tomatoes >= 19)
m.addConstr(4 * eggs + 13 * tomatoes >= 33)
m.addConstr(11 * lemons + 5 * eggs + 4 * tomatoes >= 37)
m.addConstr(2 * lemons + 12 * tomatoes >= 24)
m.addConstr(2 * lemons + 8 * eggs >= 34)
m.addConstr(2 * lemons + 8 * eggs + 15 * bagged_salads >= 27)
m.addConstr(8 * eggs + 15 * bagged_salads + 12 * tomatoes >= 27)
m.addConstr(2 * lemons + 8 * eggs + 12 * tomatoes >= 27)
m.addConstr(2 * lemons + 8 * eggs + 15 * bagged_salads >= 35)
m.addConstr(8 * eggs + 15 * bagged_salads + 12 * tomatoes >= 35)
m.addConstr(2 * lemons + 8 * eggs + 12 * tomatoes >= 35)
m.addConstr(2 * lemons + 8 * eggs + 15 * bagged_salads >= 31)
m.addConstr(8 * eggs + 15 * bagged_salads + 12 * tomatoes >= 31)
m.addConstr(2 * lemons + 8 * eggs + 12 * tomatoes >= 31)

m.addConstr(4 * eggs + 13 * tomatoes <= 86)
m.addConstr(14 * lemons + 4 * eggs + 15 * bagged_salads <= 75)
m.addConstr(14 * lemons + 4 * eggs + 15 * bagged_salads + 13 * tomatoes <= 75)

m.addConstr(11 * lemons + 5 * bagged_salads <= 100)
m.addConstr(5 * eggs + 4 * tomatoes <= 85)
m.addConstr(5 * bagged_salads + 4 * tomatoes <= 104)
m.addConstr(5 * eggs + 5 * bagged_salads <= 47)
m.addConstr(11 * lemons + 5 * eggs + 5 * bagged_salads + 4 * tomatoes <= 47)

m.addConstr(15 * bagged_salads + 12 * tomatoes <= 81)
m.addConstr(2 * lemons + 12 * tomatoes <= 102)
m.addConstr(8 * eggs + 15 * bagged_salads + 12 * tomatoes <= 142)
m.addConstr(2 * lemons + 8 * eggs + 12 * tomatoes <= 147)
m.addConstr(2 * lemons + 8 * eggs + 15 * bagged_salads + 12 * tomatoes <= 147)

# Solve the model
m.optimize()

# Print the solution
if m.status == gp.GRB.OPTIMAL:
    print("Objective: ", m.objVal)
    print("Lemons: ", lemons.varValue)
    print("Eggs: ", eggs.varValue)
    print("Bagged Salads: ", bagged_salads.varValue)
    print("Tomatoes: ", tomatoes.varValue)
else:
    print("The model is infeasible")
```