```python
def gen_plan(state: DrawState, pos: list, size: float, offsets: list):
    x, y = pos

    # Define base square corners in order (clockwise)
    base_corners = [
        [x, y],                   # bottom-left
        [x + size, y],            # bottom-right
        [x + size, y + size],     # top-right
        [x, y + size]             # top-left
    ]

    # Add offsets to each corner
    perturbed = [
        [px + dx, py + dy]
        for (px, py), (dx, dy) in zip(base_corners, offsets)
    ]

    # Create draw_line actions
    actions = []
    for i in range(4):
        x0, y0 = perturbed[i]
        x1, y1 = perturbed[(i + 1) % 4]  # Wrap around to close the square
        actions.append(Action("draw_line", [x0, y0, x1, y1]))

    return actions

def gen_initial_guess(initial: DrawState):
    return {
        "pos": [.5, .35],
        "size": .2,
        "point_offsets": [[0., 0.], [0., 0.], [0., 0.], [0., 0.]]
    }
```