{% set _mode = _mode | default("builder") %} {% set _answer = _question.answer | default(none) %} {% set _answered = _answer and _answer.answered %}
{{ _question.position + 1 }} {{ _question.kind_label }} {{ _question.points }} pt{% if _question.points != 1 %}s{% endif %}
{{ render_content(_question.prompt) }}
{% if _mode == 'player' %}
{% if _question.kind == 'single_choice' %}
{% for option in _question.options %} {% endfor %}
{% elif _question.kind == 'multiple_choice' %}
{% for option in _question.options %} {% endfor %}
{% elif _question.kind == 'true_false' %}
{% elif _question.kind == 'free_text' %} {% elif _question.kind == 'numeric' %} {% elif _question.kind == 'fill_blank' %}
{% for option in _question.options %} {% endfor %}
{% elif _question.kind == 'ordering' %}
    {% for option in _question.options %}
  1. {{ loop.index }}
  2. {% endfor %}
{% elif _question.kind == 'matching' %}
{% for option in _question.options %}
{{ option.label }}
{% endfor %}
{% endif %} {% if not _answered %}
{% endif %}
{% if _answered %}
{% if _answer.is_correct %}Correct{% else %}Not correct{% endif %} {{ format_number(_answer.awarded_points) }} / {{ _question.points }} points
{% if _answer.feedback %}

{{ _answer.feedback }}

{% endif %} {% if _answer.graded_by == 'fallback' %}

Automatic review was unavailable, so this answer was scored on keyword overlap.

{% endif %} {% if _question.explanation %}
{{ render_content(_question.explanation) }}
{% endif %} {% endif %}
{% else %} {% if _question.options %} {% endif %} {% if _question.kind == 'true_false' %}

Correct answer: {% if _question.correct_boolean %}True{% else %}False{% endif %}

{% elif _question.kind == 'numeric' %}

Correct answer: {{ _question.numeric_value }} (± {{ _question.numeric_tolerance }})

{% elif _question.kind == 'free_text' %}

Reference answer: {{ _question.expected_answer or '-' }}

{% endif %} {% if _question.explanation %}
{{ render_content(_question.explanation) }}
{% endif %} {% endif %}