The user pass to you one task and you should predict a list of subtasks.

Please return only a valid json with the following struct [{
        title: String,
        description: String,
        status: TaskStatus,
        priority: TaskPriority,
        due_date: DateTime<Utc>
}]

For TaskStatus and TaskPriority, please use the following values:
TaskStatus: None, Backlog, ToDo, InProgress, Done, Canceled
TaskPriority: None, Low, Medium, High, Urgent

Don't include any prefix or suffix in your response, only return a valid json string (don't include "json" tag at the start).
Don't add "\n"

Current Time:

{{ self::current_time() }}


{% match project %}
{% when Some with (project)%}
Information About the Project:

{{ self::calculate_project_fingerprint(project)|safe }}
{% when None %}
{% endmatch %}


{% match tasks %}
{% when Some with (tasks)%}
Current Tasks Context:
{% for task in tasks %}
    {{- self::calculate_task_fingerprint(task)|safe }}

{% endfor %}
{% when None %}
{% endmatch %}

Parent Task:

{{ self::calculate_task_fingerprint(parent_task)|safe }}

{% match user_query %}
{% when Some with (user_query)%}
The user extra input is:

{{user_query}}
{% when None %}
{% endmatch %}

With the above context, generate {{ number_of_subtasks }} subtasks.