% -*- mode: LaTeX; coding: koi8-r -*-
% $Id: rm_contest_xml.tex 66 2006-03-01 21:51:11Z cher $
% Copyright (C) 2003-2006 Alexander Chernov <cher@unicorn.cmc.msu.ru>

\newpage
\section{Конфигурационный файл турниров \V{contest.xml}}
\hypertarget{F:contest.xml}{}

В данном разделе даётся описание формата файла описания параметров турнира.
В системе \S{ejudge} описание каждого турнира хранится в отдельном
XML-файле. Все файлы располагаются в одном каталоге, который
задаётся в элементе \V{contests\_dir} для конфигурационных файлов в
формате XML или в параметре \V{contests\_dir} для
конфигурационных файлов в формате INI. Описание каждого турнира
хранится в этом каталоге в файле с именем \V{$N$.xml},
где $N$ --- идентификатор (номер) турнира в десятичной записи из
6 знаков с ведущими нулями. Например, информация о турнире с
номером 1 хранится в файле \V{000001.xml}, а информация о
турнире с номером 192 --- в файле \V{000192.xml}.
Идентификатор турнира назначается администратором системы
\S{ejudge} и должен быть целым числом в диапазоне
$1 \leqslant N \leqslant 999999$. Никакие два турнира в одной
инсталляции системы \S{ejudge} не могут иметь один и тот же
идентификатор. Для большей эффективности работы системы
\S{ejudge} рекомендуется нумеровать турниры подряд, начиная с 1.
Идентификатор турнира, определяемый по имени файла, в котором
хранится его описание, должен совпадать со значением атрибута
\V{id} элемента верхнего уровня \V{contest} самого файла.

Файл описания турнира должен представлять собой правильно
сформированный XML-файл. Элементом верхнего уровня файла
является элемент \V{contest}, который должен присутствовать и не
может повторяться. Общая структура вложенности элементов файла
приведена в таблице \ref{tableContestXMLStructure}.

\begin{table}[htp]
{\scriptsize
\begin{tabbing}
\hspace{1cm}\=\hspace{1cm}\=\kill
\hyperlink{F:contest.xml,T:contest}{\V{contest}}\\
\>\hyperlink{F:contest.xml,T:name}{\V{name}}\\
\>\hyperlink{F:contest.xml,T:name_en}{\V{name\_en}}\\
\>\hyperlink{F:contest.xml,T:register_access}{\V{register\_access}}\\
\>\>\hyperlink{F:contest.xml,T:ip}{\V{ip}}\\
\>\hyperlink{F:contest.xml,T:users_access}{\V{users\_access}}\\
\>\>\hyperlink{F:contest.xml,T:ip}{\V{ip}}\\
\>\hyperlink{F:contest.xml,T:master_access}{\V{master\_access}}\\
\>\>\hyperlink{F:contest.xml,T:ip}{\V{ip}}\\
\>\hyperlink{F:contest.xml,T:judge_access}{\V{judge\_access}}\\
\>\>\hyperlink{F:contest.xml,T:ip}{\V{ip}}\\
\>\hyperlink{F:contest.xml,T:team_access}{\V{team\_access}}\\
\>\>\hyperlink{F:contest.xml,T:ip}{\V{ip}}\\
\>\hyperlink{F:contest.xml,T:serve_control_access}{\V{serve\_control\_access}}\\
\>\>\hyperlink{F:contest.xml,T:ip}{\V{ip}}\\
\>\hyperlink{F:contest.xml,T:field}{\V{field}}\\
\>\hyperlink{F:contest.xml,T:contestants}{\V{contestants}}\\
\>\>\hyperlink{F:contest.xml,T:field}{\V{field}}\\
\>\hyperlink{F:contest.xml,T:reserves}{\V{reserves}}\\
\>\>\hyperlink{F:contest.xml,T:field}{\V{field}}\\
\>\hyperlink{F:contest.xml,T:coaches}{\V{coaches}}\\
\>\>\hyperlink{F:contest.xml,T:field}{\V{field}}\\
\>\hyperlink{F:contest.xml,T:advisors}{\V{advisors}}\\
\>\>\hyperlink{F:contest.xml,T:field}{\V{field}}\\
\>\hyperlink{F:contest.xml,T:guests}{\V{guests}}\\
\>\>\hyperlink{F:contest.xml,T:field}{\V{field}}\\
\>\hyperlink{F:contest.xml,T:users_header_file}{\V{users\_header\_file}}\\
\>\hyperlink{F:contest.xml,T:users_footer_file}{\V{users\_footer\_file}}\\
\>\hyperlink{F:contest.xml,T:register_header_file}{\V{register\_header\_file}}\\
\>\hyperlink{F:contest.xml,T:register_footer_file}{\V{register\_footer\_file}}\\
\>\hyperlink{F:contest.xml,T:team_header_file}{\V{team\_header\_file}}\\
\>\hyperlink{F:contest.xml,T:team_footer_file}{\V{team\_footer\_file}}\\
\>\hyperlink{F:contest.xml,T:register_email}{\V{register\_email}}\\
\>\hyperlink{F:contest.xml,T:register_url}{\V{register\_url}}\\
\>\hyperlink{F:contest.xml,T:register_email_file}{\V{register\_email\_file}}\\
\>\hyperlink{F:contest.xml,T:team_url}{\V{team\_url}}\\
\>\hyperlink{F:contest.xml,T:registration_deadline}{\V{registration\_deadline}}\\
\>\hyperlink{F:contest.xml,T:users_head_style}{\V{users\_head\_style}}\\
\>\hyperlink{F:contest.xml,T:users_par_style}{\V{users\_par\_style}}\\
\>\hyperlink{F:contest.xml,T:users_table_style}{\V{users\_table\_style}}\\
\>\hyperlink{F:contest.xml,T:users_verb_style}{\V{users\_verb\_style}}\\
\>\hyperlink{F:contest.xml,T:register_head_style}{\V{register\_head\_style}}\\
\>\hyperlink{F:contest.xml,T:register_par_style}{\V{register\_par\_style}}\\
\>\hyperlink{F:contest.xml,T:register_table_style}{\V{register\_table\_style}}\\
\>\hyperlink{F:contest.xml,T:team_head_style}{\V{team\_head\_style}}\\
\>\hyperlink{F:contest.xml,T:team_par_style}{\V{team\_par\_style}}\\
\\
\>\hyperlink{F:contest.xml,T:caps}{\V{caps}}\\
\>\>\hyperlink{F:contest.xml,T:cap}{\V{cap}}\\
\>\hyperlink{F:contest.xml,T:root_dir}{\V{root\_dir}}\\
\>\hyperlink{F:contest.xml,T:conf_dir}{\V{conf\_dir}}\\
\>\hyperlink{F:contest.xml,T:standings_url}{\V{standings\_url}}\\
\>\hyperlink{F:contest.xml,T:problems_url}{\V{problems\_url}}\\
\>\hyperlink{F:contest.xml,T:client_flags}{\V{client\_flags}}\\
\>\hyperlink{F:contest.xml,T:serve_user}{\V{serve\_user}}\\
\>\hyperlink{F:contest.xml,T:serve_group}{\V{serve\_group}}\\
\>\hyperlink{F:contest.xml,T:run_user}{\V{run\_user}}\\
\>\hyperlink{F:contest.xml,T:run_group}{\V{run\_group}}\\
\>\hyperlink{F:contest.xml,T:users_table_format}{\V{users\_table\_format}}\\
\>\hyperlink{F:contest.xml,T:users_table_format_en}{\V{users\_table\_format\_en}}\\
\>\hyperlink{F:contest.xml,T:users_table_legend}{\V{users\_table\_legend}}\\
\>\hyperlink{F:contest.xml,T:users_table_legend_en}{\V{users\_table\_legend\_en}}\\
%% NEW
\>\hyperlink{F:contest.xml,T:user_name_comment}{\V{user\_name\_comment}}\\
\>\hyperlink{F:contest.xml,T:allowed_languages}{\V{allowed\_languages}}\\
%% END
%% NEW
\>\hyperlink{F:contest.xml,T:cf_notify_email}{\V{cf\_notify\_email}}\\
\>\hyperlink{F:contest.xml,T:clar_notify_email}{\V{clar\_notify\_email}}\\
\>\hyperlink{F:contest.xml,T:daily_stat_email}{\V{daily\_stat\_email}}\\
%% END
\end{tabbing}}

\caption{Структура вложенности элементов конфигурационного файла
\V{contest.xml}}
\label{tableContestXMLStructure}
\end{table}

В конфигурационном файле турнира, в частности, задаются
дополнительные ограничения на допустимые IP-адреса для всех
CGI-программ. Кроме этого, в конфигурационном
файле определяются обязательные и необязательные поля анкеты
участника.

\subsection{Регистрационная анкета пользователя}
\label{sectionRegistrationForm}
\hypertarget{F:contest.xml,S:registration_form}{}

Анкета участника турнира заполняется пользователем, когда он
регистрируется на турнир с помощью CGI-программы
\hyperlink{P:register}{\S{register}}. Участником турнира может
быть как команда (для командных соревнований), так и
единственный человек. Поэтому анкета участника турнира
состоит из нескольких частей. Первую часть составляют данные
общего характера, такие как название участника турнира (то есть
название команды или имя, под которым в турнире выступает
человек), учебное заведение, факультет, город, страна.
Вторую часть анкеты составляют персональные данные всех лиц,
связанных с командой (в случае командного турнира) или
участником. Для командных турниров могут задаваться личные данные членов
команды, запасных игроков, тренеров и руководителей команды, а
также гостей, приглашаемых командой. Для личных турниров могут
задаваться личные данные участника турнира, его тренера и
руководителя.

Поскольку количество требуемой информации об участнике может
варьироваться от турнира к турниру, так же как и ограничения на
число лиц, связанных с участником или командой, в
конфигурационном файле турнира задаются поля анкеты,
предъявляемые для заполнения. Поля анкеты первой части
описываются в элементах \V{field}, вложенных непосредственно в
элемент \V{contest}. Атрибут \V{id} элемента в этом случае может
принимать значения, перечисленные в таблице
\ref{tableGlobalFieldId}.

\begin{table}[ht]
\begin{center}
\begin{tabular}{|>{\small\ttfamily}l|p{12cm}|}
\hline
homepage
  & Домашняя страница пользователя. \\
inst
  & Полное название учебного заведения, к которому относится
    участник. \\
inst\_en
  & Полное название учебного заведения, к которому относится
    участник, на английском языке. \\
instshort
  & Краткое название учебного заведения. \\
instshort\_en
  & Краткое название учебного заведения на английском языке. \\
fac
  & Полное название факультета, к которому относится
  участник. \\
fac\_en
  & Полное название факультета, к которому относится
  участник, на английском языке. \\
facshort
  & Краткое название факультета. \\
facshort\_en
  & Краткое название факультета на английском языке. \\
city
  & Город. \\
city\_en
  & Название города на английском языке. \\
country
  & Страна. \\
country\_en
  & Название страны на английском языке. \\
phone
  & Телефон. \\
languages
  & Языки программирования. См. элемент
    \hyperlink{F:contest.xml,T:allowed_languages}{\V{allowed\_languages}}. \\
\hline
\end{tabular}
\end{center}
\caption{Описание полей анкеты участника, допустимых в первой
  части анкеты}
\label{tableGlobalFieldId}
\end{table}

Поля второй части анкеты описываются отдельно по каждой
категории лиц, связанных с участником. Выделяются пять категорий
лиц:
\begin{enumerate}
\item
Непосредственно игроки (\V{contestants}). В случае
командного турнира это --- члены команды, в случае личного
турнира это сам участник турнира.
\item
Запасные игроки (\V{reserves}). В случае личного турнира эта
категория не имеет смысла.
\item
Тренеры (\V{coaches}).
\item
Руководители (\V{advisors}).
\item
Прочие (\V{guests}).
\end{enumerate}
Для каждой из категории атрибутами соответствующего элемента
файла конфигурации турнира задаётся минимальное и максимальное
число лиц этой категории. Поля анкеты задаются с помощью
вложенных элементов \V{field}, атрибут \V{id} которых может
принимать значения, перечисленные в таблице
\ref{tablePersonalFieldId}.

\begin{table}[ht]
\begin{center}
\begin{tabular}{|>{\small\ttfamily}l|p{12cm}|}
\hline
firstname
  & Имя. \\
firstname\_en
  & Имя в английском написании. \\
middlename
  & Отчество. \\
middlename\_en
  & Отчество в английском написании. \\
surname
  & Фамилия. \\
surname\_en
  & Фамилия в английском написании. \\
status
  & Статус: школьник, студент, аспирант, учитель и т. д. \\
grade
  & Класс школы или номер курса ВУЗа. \\
group
  & Название класса или академической группы. \\
group\_en
  & Название класса или академической группы в английском написании. \\
email
  & Личный адрес e-mail. \\
homepage
  & Личная страничка в Интернет. \\
phone
  & Телефон. \\
inst
  & Полное название учебного заведения (если отличается от
    заданного для участника в целом). \\
inst\_en
  & Полное название учебного заведения (если отличается от
    заданного для участника в целом) на английском языке. \\
instshort
  & Краткое название учебного заведения. \\
instshort\_en
  & Краткое название учебного заведения на английском языке. \\
fac
  & Полное название факультета. \\
fac\_en
  & Полное название факультета на английском языке. \\
facshort
  & Краткое название факультета. \\
facshort\_en
  & Краткое название факультета на английском языке. \\
occupation
  & Занимаемая должность. \\
occupation\_en
  & Занимаемая должность на английском языке. \\
\hline
\end{tabular}
\end{center}
\caption{Описание полей анкеты участника, допустимых во второй
  части анкеты}
\label{tablePersonalFieldId}
\end{table}

Далее рассматриваются все элементы конфигурационного файла
\V{contest.xml}.

\clearpage
\subsection{Элемент \V{contest}}
\hypertarget{F:contest.xml,T:contest}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{contest} \\
Содержится в:        & \I{нет}\\
%Может содержать:     & \strut\small%
%  \hyperlink{F:contest.xml,T:name}{\V{name}},
%  \hyperlink{F:contest.xml,T:name_en}{\V{name\_en}},
%  \hyperlink{F:contest.xml,T:register_access}{\V{register\_access}},
%  \hyperlink{F:contest.xml,T:users_access}{\V{users\_access}},
%  \hyperlink{F:contest.xml,T:master_access}{\V{master\_access}},
%  \hyperlink{F:contest.xml,T:judge_access}{\V{judge\_access}},
%  \hyperlink{F:contest.xml,T:team_access}{\V{team\_access}},
%  \hyperlink{F:contest.xml,T:field}{\V{field}},
%  \hyperlink{F:contest.xml,T:contestants}{\V{contestants}},
%  \hyperlink{F:contest.xml,T:reserves}{\V{reserves}},
%  \hyperlink{F:contest.xml,T:coaches}{\V{coaches}},
%  \hyperlink{F:contest.xml,T:advisors}{\V{advisors}},
%  \hyperlink{F:contest.xml,T:guests}{\V{guests}},
%  \hyperlink{F:contest.xml,T:users_header_file}{\V{users\_header\_file}},
%  \hyperlink{F:contest.xml,T:users_footer_file}{\V{users\_footer\_file}},
%  \hyperlink{F:contest.xml,T:register_header_file}{\V{register\_header\_file}},
%  \hyperlink{F:contest.xml,T:register_footer_file}{\V{register\_footer\_file}},
%  \hyperlink{F:contest.xml,T:team_header_file}{\V{team\_header\_file}},
%  \hyperlink{F:contest.xml,T:team_footer_file}{\V{team\_footer\_file}},
%  \hyperlink{F:contest.xml,T:register_email}{\V{register\_email}},
%  \hyperlink{F:contest.xml,T:register_url}{\V{register\_url}},
%  \hyperlink{F:contest.xml,T:team_url}{\V{team\_url}},
%  \hyperlink{F:contest.xml,T:registration_deadline}{\V{registration\_deadline}},
%  \hyperlink{F:contest.xml,T:caps}{\V{caps}},
%  \hyperlink{F:contest.xml,T:root_dir}{\V{root\_dir}},
%  \hyperlink{F:contest.xml,T:standings_dir}{\V{standings\_url}},
%  \hyperlink{F:contest.xml,T:problems_dir}{\V{problems\_url}},
%  \hyperlink{F:contest.xml,T:client_flags}{\V{client\_flags}},
%  \hyperlink{F:contest.xml,T:serve_user}{\V{serve\_user}},
%  \hyperlink{F:contest.xml,T:serve_group}{\V{serve\_group}},
%  \hyperlink{F:contest.xml,T:users_head_style}{\V{users\_head\_style}},
%  \hyperlink{F:contest.xml,T:users_par_style}{\V{users\_par\_style}},
%  \hyperlink{F:contest.xml,T:users_table_style}{\V{users\_table\_style}},
%  \hyperlink{F:contest.xml,T:users_verb_style}{\V{users\_verb\_style}},
%  \hyperlink{F:contest.xml,T:register_head_style}{\V{register\_head\_style}},
%  \hyperlink{F:contest.xml,T:register_par_style}{\V{register\_par\_style}},
%  \hyperlink{F:contest.xml,T:register_table_style}{\V{register\_table\_style}},
%  \hyperlink{F:contest.xml,T:team_head_style}{\V{team\_head\_style}},
%  \hyperlink{F:contest.xml,T:team_par_style}{\V{team\_par\_style}}\\
Атрибуты:            & {\raggedright\strut%
  \hyperlink{F:contest.xml,T:contest,A:id}{\V{id}},
  \hyperlink{F:contest.xml,T:contest,A:autoregister}{\V{autoregister}},
  \hyperlink{F:contest.xml,T:contest,A:managed}{\V{managed}},
  \hyperlink{F:contest.xml,T:contest,A:run_managed}{\V{run\_managed}},
  \hyperlink{F:contest.xml,T:contest,A:clean_users}{\V{clean\_users}},
  \hyperlink{F:contest.xml,T:contest,A:disable_team_password}{\V{disable\_team\_password}},
  \hyperlink{F:contest.xml,T:contest,A:closed}{\V{closed}},
  \hyperlink{F:contest.xml,T:contest,A:invisible}{\V{invisible}}\par} \\
Тип содержимого:     & игнорируется\\
Может отсутствовать: & \I{нет}\\
Может повторяться:   & \I{нет}\\
\end{tabular}

\B{Описание.} Элемент верхнего уровня конфигурационного файла.
Элемент должен иметь обязательный атрибут \V{id}, определяющий
идентификатор этого турнира.

\subsubsection{Атрибут \V{id}}
\hypertarget{F:contest.xml,T:contest,A:id}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{id} \\
Содержится в:          & \strut\hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Тип значения:          & \I{integer} \\
Может отсутствовать:   & \I{нет} \\
\end{tabular}

\B{Описание.} Данный атрибут должен содержать идентификатор
турнира. Идентификатор турнира представляет собой число в
десятичной записи в диапазоне от 1 до 999999
включительно. Идентификатор турнира, определяемого в файле,
должен соответствовать имени этого файла.

\subsubsection{Атрибут \V{autoregister}}
\hypertarget{F:contest.xml,T:contest,A:autoregister}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{autoregister} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Тип значения:          & \I{boolean} \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \I{false} \\
\end{tabular}

\B{Описание.} Данный атрибут устанавливает значение флага
авторегистрации. Если атрибут установлен в значение \I{true},
регистрация каждого нового участника турнира автоматически
подтверждается как только он полностью заполнил регистрационную
форму. Сразу после этого участник может заходить на личную
страницу сдачи решений. Если атрибут установлен в значение
\I{false} (по умолчанию), после того, как участник полностью
заполнил регистрационную форму, его регистрации присваивается статус
<<Ожидает подтверждения>>. В этом статусе участник не может
заходить на свою личную страницу. Подтверждение регистрации
может быть сделано привилегированным пользователем турнира,
который имеет полномочие \V{EDIT\_REGISTRATION}.

Значение этого атрибута рекомендуется устанавливать в \I{true}
для постоянно открытых турниров, таких как интернет-туры или
виртуальные турниры. Значение атрибута \I{false} позволяет
регулировать регистрацию на турнир и может применяться для
традиционной формы проведения турниров.

\subsubsection{Атрибут \V{managed}}
\hypertarget{F:contest.xml,T:contest,A:managed}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{managed} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Тип значения:          & \I{boolean} \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \I{false} \\
\end{tabular}

\B{Описание.} Если значение этого атрибута установлено в \I{true}, программа
управления турниром \hyperlink{P:serve}{\S{serve}} ставится под
управление программы \hyperlink{P:super-serve}{\S{super-serve}},
которая следит одновременно за несколькими турнирами и запускает
программу \S{serve}, как только поступает запрос
соответствующему турниру. Если значение атрибута установлено в
\I{false}, данный турнир игнорируется программой \S{super-serve}.

\subsubsection{Атрибут \V{run\_managed}}
\hypertarget{F:contest.xml,T:contest,A:run_managed}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{run\_managed} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Тип значения:          & \I{boolean} \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \I{false} \\
\end{tabular}

\B{Описание.} Если значение этого атрибута установлено в
\I{true}, программа проверки решений \hyperlink{P:run}{\S{run}}
ставится под управление программы
\hyperlink{P:super-serve}{\S{super-serve}}, которая следит
одновременно за несколькими турнирами и запускает программу
\S{run}, как только поступает запрос на проверку решения в
соответствующем турнире. Если значение атрибута установлено в
\I{false}, данный турнир игнорируется программой \S{super-serve}.

\subsubsection{Атрибут \V{clean\_users}}
\hypertarget{F:contest.xml,T:contest,A:clean_users}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{clean\_users} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Тип значения:          & \I{boolean} \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \I{true} \\
\end{tabular}

\B{Описание.} Если значение данного атрибута установлено в
\I{true} (значение по умолчанию), программа
\hyperlink{P:clean-users}{\S{clean-users}}
будет сканировать базу сдач решений и вопросов судьям текущего
турнира. Программа \S{clean-users} выявляет пользователей,
занесённых в базу пользователей, возможно зарегистрировавшихся
для участия в каком-либо турнире, но не сделавших ни одной
попытки сдачи решения и не задавших ни один вопрос. Такие
пользователи помечаются как кандидаты на удаление из базы
пользователей. Если значение данного атрибута установлено в
\I{false}, программа \S{clean-users} игнорирует данный турнир.

\subsubsection{Атрибут \V{disable\_team\_password}}
\hypertarget{F:contest.xml,T:contest,A:disable_team_password}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{disable\_team\_password} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Тип значения:          & \I{boolean} \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \I{false} \\
\end{tabular}

\B{Описание.} По умолчанию
каждый пользователь имеет два пароля: регистрационный и пароль
участника. Регистрационный пароль необходим для доступа к
CGI-программе \hyperlink{P:register}{\S{register}}, которая
позволяет изменять регистрационную информацию и регистрироваться
для участия в турнирах. Пароль участника необходим для доступа к
CGI-программе \hyperlink{P:team}{\S{team}}, то есть
непосредственно для участия в турнире.
Если значение атрибута \V{disable\_team\_password} равно \I{true},
специальный пароль участия в турнире отключается. Для доступа к
CGI-программе \S{team} в этом случае используется
регистрационный пароль.

Пароли участников обычно генерируются администратором турнира
(точнее, пользователем с полномочием
\V{GENERATE\_TEAM\_PASSWORDS}) перед началом турнира. Для
турниров с открытой регистрацией (см. атрибут
\hyperlink{F:contest.xml,T:contest,A:autoregister}{\V{autoregister}} элемента
\hyperlink{F:contest.xml,T:contest}{\V{contest}})
это становится затруднительным. Тогда
использование атрибута \V{disable\_team\_password} может быть удобным.

\subsubsection{Атрибут \V{closed}}
\hypertarget{F:contest.xml,T:contest,A:closed}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{closed} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Тип значения:          & \I{boolean} \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \I{false} \\
\end{tabular}

\B{Описание.}
Если этот атрибут установлен в \I{true}, данный турнир считается
<<закрытым>> (оконченным), то есть регистрация на него с помощью
CGI-программы \hyperlink{P:register}{\S{register}} невозможна, и
запуск CGI-программы \hyperlink{P:team}{\S{team}} для данного
турнира также невозможен (будет выведено сообщение о том, что
данный турнир закрыт). Данный атрибут турнира может
устанавливаться, когда желательно предотвратить случайные
бессмысленные попытки регистрации на турнир и участия в нём.

\subsubsection{Атрибут \V{invisible}}
\hypertarget{F:contest.xml,T:contest,A:invisible}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{invisible} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Тип значения:          & \I{boolean} \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \I{false} \\
\end{tabular}

\B{Описание.}
Если этот атрибут установлен в \I{true}, данный турнир считается
<<невидимым>> и не отображается в списке турниров программы
\hyperlink{P:serve-control}{\S{serve-control}}.

\subsection{Элемент \V{name}}
\hypertarget{F:contest.xml,T:name}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{name} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & \I{string}\\
Может отсутствовать: & \I{нет}\\
Может повторяться:   & \I{нет}\\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать имя турнира.

\B{Пример.}
{\small
\begin{verbatim}
  <name>Турнир пионеров</name>
\end{verbatim}
}

\subsection{Элемент \V{name\_en}}
\hypertarget{F:contest.xml,T:name_en}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{name} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & \I{string}\\
Может отсутствовать: & \I{да}\\
Может повторяться:   & \I{нет}\\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать имя турнира на
английском языке. Английское имя турнира используется программами
\S{users}, \S{register} и \S{team} когда идентификатор языка
(\V{locale\_id}) равен 0. Если элемент \V{name\_en} не задан,
используется значение элемента \V{name}, то есть имя турнира на
локальном языке (в настоящее время это может быть только русский
язык).

\B{Замечание.} Английское название турнира должно использоваться во
всех случаях, когда идентификатор языка в CGI-программах не совпадает
с идентификатором языка, указанным в конфигурационном файле
турнира. Данная возможность в настоящее время не реализована,
поскольку система \S{ejudge} поддерживает пока только два языка:
английский и русский.

\B{Пример.}
{\small
\begin{verbatim}
  <name_en>The pioneer's contest</name_en>
\end{verbatim}
}

\subsection{Элемент \V{register\_access}}
\hypertarget{F:contest.xml,T:register_access}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{register\_access} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \V{ip} \\
Атрибуты:            & \V{default} \\
Тип содержимого:     & \strut%
  \hyperlink{F:all,IPLimitationsXML}{\I{список IP-ограничений}}\\
Может отсутствовать: & \I{да}\\
Может повторяться:   & \I{нет}\\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать ограничения на
IP-адреса, с которых возможна регистрация на данный турнир с
помощью CGI-программы \hyperlink{P:register}{\S{register}}. Для
подробного описания средств ограничения доступа по IP-адресам
системы \S{ejudge} см. раздел \ref{sectionIPAddressLimitation}.

\subsection{Элемент \V{users\_access}}
\hypertarget{F:contest.xml,T:users_access}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{users\_access} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \V{ip} \\
Атрибуты:            & \V{default} \\
Тип содержимого:     & \strut%
  \hyperlink{F:all,IPLimitationsXML}{\I{список IP-ограничений}}\\
Может отсутствовать: & \I{да}\\
Может повторяться:   & \I{нет}\\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать ограничения на
IP-адреса, с которых возможен просмотр списка участников и
информации об участниках с
помощью CGI-программы \hyperlink{P:users}{\S{users}}. Для
подробного описания средств ограничения доступа по IP-адресам
системы \S{ejudge} см. раздел \ref{sectionIPAddressLimitation}.

\subsection{Элемент \V{master\_access}}
\hypertarget{F:contest.xml,T:master_access}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{master\_access} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \V{ip} \\
Атрибуты:            & \V{default} \\
Тип содержимого:     & \strut%
  \hyperlink{F:all,IPLimitationsXML}{\I{список IP-ограничений}}\\
Может отсутствовать: & \I{да}\\
Может повторяться:   & \I{нет}\\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать ограничения на
IP-адреса, с которых возможно администрирование данного турнира
с помощью CGI-программы \hyperlink{P:master}{\S{master}}. Для
подробного описания средств ограничения доступа по IP-адресам
системы \S{ejudge} см. раздел \ref{sectionIPAddressLimitation}.

\subsection{Элемент \V{judge\_access}}
\hypertarget{F:contest.xml,T:judge_access}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{judge\_access} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \V{ip} \\
Атрибуты:            & \V{default} \\
Тип содержимого:     & \strut%
  \hyperlink{F:all,IPLimitationsXML}{\I{список IP-ограничений}}\\
Может отсутствовать: & \I{да}\\
Может повторяться:   & \I{нет}\\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать ограничения на
IP-адреса, с которых возможно судейство данного турнира
с помощью CGI-программы \hyperlink{P:judge}{\S{judge}}. Для
подробного описания средств ограничения доступа по IP-адресам
системы \S{ejudge} см. раздел \ref{sectionIPAddressLimitation}.

\subsection{Элемент \V{serve\_control\_access}}
\hypertarget{F:contest.xml,T:serve_control_access}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{serve\_control\_access} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \V{ip} \\
Атрибуты:            & \V{default} \\
Тип содержимого:     & \strut%
  \hyperlink{F:all,IPLimitationsXML}{\I{список IP-ограничений}}\\
Может отсутствовать: & \I{да}\\
Может повторяться:   & \I{нет}\\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать ограничения на
IP-адреса, с которых возможно управление данным турниром и редактирование
его конфигурационных файлов
с помощью CGI-программы \hyperlink{P:serve-control}{\S{serve-control}}. Для
подробного описания средств ограничения доступа по IP-адресам
системы \S{ejudge} см. раздел \ref{sectionIPAddressLimitation}.

\subsection{Элемент \V{team\_access}}
\hypertarget{F:contest.xml,T:team_access}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{team\_access} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \V{ip} \\
Атрибуты:            & \V{default} \\
Тип содержимого:     & \strut%
  \hyperlink{F:all,IPLimitationsXML}{\I{список IP-ограничений}}\\
Может отсутствовать: & \I{да}\\
Может повторяться:   & \I{нет}\\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать ограничения на
IP-адреса, с которых возможно участие в данном турнире
с помощью CGI-программы \hyperlink{P:team}{\S{team}}. Для
подробного описания средств ограничения доступа по IP-адресам
системы \S{ejudge} см. раздел \ref{sectionIPAddressLimitation}.

\subsection{Элемент \V{ip}}
\hypertarget{F:contest.xml,T:ip}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{ip} \\
Содержится в:        & {\raggedright\strut%
  \hyperlink{F:contest.xml,T:register_access}{\V{register\_access}},
  \hyperlink{F:contest.xml,T:users_access}{\V{users\_access}},
  \hyperlink{F:contest.xml,T:master_access}{\V{master\_access}},
  \hyperlink{F:contest.xml,T:judge_access}{\V{judge\_access}},
  \hyperlink{F:contest.xml,T:super_serve_access}{\V{super\_serve\_access}},
  \hyperlink{F:contest.xml,T:team_access}{\V{team\_access}}\par} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \V{allow} \\
Тип содержимого:     & \strut%
  \hyperlink{F:all,IPLimitationsXML}{\I{IP-ограничение}}\\
Может отсутствовать: & \I{да}\\
Может повторяться:   & \I{да}\\
\end{tabular}

\B{Описание.} Данный элемент  задаёт одно ограничения на
IP-адреса. Для
подробного описания средств ограничения доступа по IP-адресам
системы \S{ejudge} см. раздел \ref{sectionIPAddressLimitation}.

\subsection{Элемент \V{field}}
\hypertarget{F:contest.xml,T:field}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{field} \\
Содержится в:        & {\raggedright\strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}},
  \hyperlink{F:contest.xml,T:contestants}{\V{contestants}},
  \hyperlink{F:contest.xml,T:reserves}{\V{reserves}},
  \hyperlink{F:contest.xml,T:coaches}{\V{coaches}},
  \hyperlink{F:contest.xml,T:advisors}{\V{advisors}},
  \hyperlink{F:contest.xml,T:guests}{\V{guests}}\par} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \strut%
  \hyperlink{F:contest.xml,T:field,A:id}{\V{id}},
  \hyperlink{F:contest.xml,T:field,A:mandatory}{\V{mandatory}} \\
Тип содержимого:     & игнорируется \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{да} \\
\end{tabular}

\B{Описание.} Элемент \V{field} позволяет указывать поля ввода,
которые будут предъявлены участнику при регистрации на
турнир. Если элемент находится непосредственно в элементе
\V{contest}, он позволяет указывать поля ввода общей информации
об участнике. В этом случае атрибут \V{id} должен принимать одно
из значений, перечисленных в таблице \ref{tableGlobalFieldId}.
Если элемент находится в элементах \V{contestants},
\V{reserves}, \V{coaches}, \V{advisors}, и \V{guests}, с его
помощью указываются поля анкеты, заполняемые для соответствующей
категории лиц. В этом случае атрибут \V{id} должен принимать
одно из значений, перечисленных в таблице \ref{tablePersonalFieldId}.
С помощью атрибута \V{mandatory} элемента \V{field} можно указать,
что данное поле ввода является обязательным для заполнения в анкете.

\subsubsection{Атрибут \V{id}}
\hypertarget{F:contest.xml,T:field,A:id}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{id} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:field}{\V{field}} \\
Тип значения:          & См. таблицы \ref{tableGlobalFieldId}
                         и \ref{tablePersonalFieldId}.  \\
Может отсутствовать:   & \I{нет} \\
\end{tabular}

\B{Описание.} С помощью данного атрибута указывается поле ввода
анкеты. Если элемент \V{field} непосредственно вложен в элемент
\V{contest}, данный атрибут должен принимать одно из значений,
перечисленных в таблице \ref{tableGlobalFieldId}. Если элемент
\V{field} вложен в элементы \V{contestants}, \V{reserves},
\V{coaches}, \V{advisors}, и \V{guests}, данный атрибут должен
принимать одно из значений, перечисленных в таблице
\ref{tablePersonalFieldId}.

\subsubsection{Атрибут \V{mandatory}}
\hypertarget{F:contest.xml,T:field,A:mandatory}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{mandatory} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:field}{\V{field}} \\
Тип значения:          & \I{boolean} \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \I{false} \\
\end{tabular}

\B{Описание.} Данный атрибут позволяет указать, что поле ввода
анкеты, задаваемое с помощью данного элемента \V{field},
обязательно к заполнению.

{
\subsection{\V{contestants}, \V{reserves}, \V{coaches}, \V{advisors},
  \V{guests}}
\hypertarget{F:contest.xml,T:contestants}{}
\hypertarget{F:contest.xml,T:reserves}{}
\hypertarget{F:contest.xml,T:coaches}{}
\hypertarget{F:contest.xml,T:advisors}{}
\hypertarget{F:contest.xml,T:guests}{}

}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & {\raggedright\K{contestants}, \K{reserves},
  \K{coaches}, \K{advisors}, \K{guests}\par} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \strut%
  \hyperlink{F:contest.xml,T:field}{\V{field}} \\
Атрибуты:            & \strut%
  \hyperlink{F:contest.xml,T:contestants,A:min}{\V{min}},
  \hyperlink{F:contest.xml,T:contestants,A:max}{\V{max}},
  \hyperlink{F:contest.xml,T:contestants,A:initial}{\V{initial}} \\
Тип содержимого:     & игнорируется \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.} Описание нескольких элементов объединено в один раздел,
так как эти элементы очень близки друг другу. Данные элементы
позволяют задавать ограничения на количество лиц соответствующей
категории. Кроме того, данные элементы содержат в себе элементы
\V{field}, задающие поля ввода регистрационной анкеты. Элемент
\V{contestants} соответствует категории игроков турнира, элемент
\V{reserves} соответствует категории запасных игроков, элемент
\V{coaches} --- категории тренеров, элемент \V{advisors} ---
категории руководителей, и элемент \V{guests} --- прочим.

Атрибут \hyperlink{F:contest.xml,T:contestants,A:min}{\V{min}}
позволяет задать минимальное число лиц в данной
категории. Например, минимальное количество игроков одной команды
(contestants) в командном турнире может быть установлено в 2 или
3, а в личном турнире --- в 1. Если у каждого участника должен
быть тренер, минимальное число лиц этой категории (coaches)
должно быть установлено в 1.
Атрибут \hyperlink{F:contest.xml,T:contestants,A:max}{\V{max}}
позволяет задать
максимальное число лиц в данной категории. Например,
максимальное количество игроков одной команды в командном
турнире равно 3, а в личном турнире --- 1.
Атрибут \hyperlink{F:contest.xml,T:contestants,A:initial}{\V{initial}}
позволяет задать, формы ввода для скольких
лиц в данной категории будут выведены при регистрации на турнир,
когда формы печатаются для данного пользователя первый раз.

\subsubsection{Атрибут \V{min}}
\hypertarget{F:contest.xml,T:contestants,A:min}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{min} \\
Содержится в:          & {\raggedright\strut%
  \hyperlink{F:contest.xml,T:contestants}{\V{contestants}},
  \hyperlink{F:contest.xml,T:reserves}{\V{reserves}},
  \hyperlink{F:contest.xml,T:coaches}{\V{coaches}},
  \hyperlink{F:contest.xml,T:advisors}{\V{advisors}},
  \hyperlink{F:contest.xml,T:guests}{\V{guests}}\par} \\
Тип значения:          & \I{integer} \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & 0 \\
Описание:              & Минимальное количество лиц в данной
                         категории. \\
\end{tabular}

\subsubsection{Атрибут \V{max}}
\hypertarget{F:contest.xml,T:contestants,A:max}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{max} \\
Содержится в:          & {\raggedright\strut%
  \hyperlink{F:contest.xml,T:contestants}{\V{contestants}},
  \hyperlink{F:contest.xml,T:reserves}{\V{reserves}},
  \hyperlink{F:contest.xml,T:coaches}{\V{coaches}},
  \hyperlink{F:contest.xml,T:advisors}{\V{advisors}},
  \hyperlink{F:contest.xml,T:guests}{\V{guests}}\par} \\
Тип значения:          & \I{integer} \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & 0 \\
Описание:              & Максимальное количество лиц в данной
                         категории. \\
\end{tabular}

\subsubsection{Атрибут \V{initial}}
\hypertarget{F:contest.xml,T:contestants,A:initial}{}

\begin{tabular}{@{}>{\bfseries}lp{10cm}}
Имя атрибута:          & \K{initial} \\
Содержится в:          & {\raggedright\strut%
  \hyperlink{F:contest.xml,T:contestants}{\V{contestants}},
  \hyperlink{F:contest.xml,T:reserves}{\V{reserves}},
  \hyperlink{F:contest.xml,T:coaches}{\V{coaches}},
  \hyperlink{F:contest.xml,T:advisors}{\V{advisors}},
  \hyperlink{F:contest.xml,T:guests}{\V{guests}}\par} \\
Тип значения:          & \I{integer} \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & 0 \\
Описание:              & Начальное количество лиц в данной
                         категории. \\
\end{tabular}

\subsubsection{Пример}

{\small
\begin{verbatim}
  <contestants min="2" max="3">
    <field id="firstname" mandatory="yes"/>
    <field id="middlename"/>
    <field id="surname" mandatory="yes"/>
    <field id="status" mandatory="yes"/>
    <field id="grade" mandatory="yes"/>
    <field id="group"/>
  </contestants>
  <reserves min="0" max="1">
    <field id="firstname" mandatory="yes"/>
    <field id="middlename"/>
    <field id="surname" mandatory="yes"/>
    <field id="status" mandatory="yes"/>
    <field id="grade" mandatory="yes"/>
    <field id="group"/>
  </reserves>
  <coaches min="1" max="1">
    <field id="firstname" mandatory="yes"/>
    <field id="middlename"/>
    <field id="surname" mandatory="yes"/>
    <field id="status" mandatory="yes"/>
    <field id="occupation" mandatory="yes"/>
  </coaches>
  <advisors min="0" max="1">
    <field id="firstname" mandatory="yes"/>
    <field id="middlename"/>
    <field id="surname" mandatory="yes"/>
    <field id="status" mandatory="yes"/>
    <field id="occupation" mandatory="yes"/>
  </advisors>
\end{verbatim}
}

\subsection{Элемент \V{users\_header\_file}}
\hypertarget{F:contest.xml,T:users_header_file}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{users\_header\_file} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & путь к файлу \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать путь к файлу,
который содержит <<шапку>> html-файла, генерируемого
CGI-программой \hyperlink{P:users}{\S{users}}. Если элемент
задан, то содержимое указанного файла будет выведено в начале
генерируемого файла. Если элемент не задан, генерируется
заголовок по умолчанию, включающий название турнира и кодировку
страницы. В файле-заголовке допускаются специальные
конструкции, начинающиеся со знака \V{\%} (<<процент>>),
перечисленные в таблице \ref{tableHeaderPercentSpecials}.

Если значением элемента является относительный путь, то полный путь
к файлу вычисляется относительно каталога конфигурационных файлов
турнира, определяемого с помощью элементов
\hyperlink{F:contest.xml,T:root_dir}{\V{root\_dir}} или
\hyperlink{F:contest.xml,T:conf_dir}{\V{conf\_dir}}.
Рекомендуется всегда использовать относительные пути.

\B{Пример.}
{\small
\begin{verbatim}
<users_header_file>users_header.shtml</users_header_file>
\end{verbatim}
}

\B{Замечание.} Если в файле-заголовке используются server-side
includes (SSI), поддержка SSI в CGI-программах должна быть
включена в используемом http-сервере. Для дальнейшей информации
обратитесь к документации на Ваш http-сервер.

\begin{table}[p]
\begin{center}
\begin{tabular}{|>{\ttfamily}l|p{12cm}|}
\hline
\%L & Заменяется на идентификатор языкового окружения, выбранного
      пользователем. Английскому языку соответствует идентификатор 0,
      а русскому --- 1.\\
\%C & Заменяется на кодировку (charset) страницы, например, \V{koi8-r}. \\
\%T & Заменяется на тип содержимого (content-type) страницы,
      например, \V{text/html}. \\
\%H & Заменяется на заголовок страницы, который может включать в себя
      название турнира и/или имя пользователя. \\
\%\% & Заменяется на один знак \V{\%}. \\
\hline
\end{tabular}
\end{center}
\caption{Специальные конструкции подстановки в
  файлах-заголовках}
\label{tableHeaderPercentSpecials}
\end{table}

\subsection{Элемент \V{users\_footer\_file}}
\hypertarget{F:contest.xml,T:users_footer_file}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{users\_footer\_file} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & путь к файлу \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать путь к файлу,
который содержит <<подвал>> html-файла, генерируемого
CGI-программой \hyperlink{P:users}{\S{users}}. Если элемент
задан, то содержимое указанного файла будет выведено в конце
генерируемого файла. Если элемент не задан, генерируется
подвал страницы по умолчанию, включающий информацию об авторских
правах и версии системы \S{ejudge}. В файле-подвале допускаются специальные
конструкции, начинающиеся со знака \V{\%} (<<процент>>),
перечисленные в таблице \ref{tableFooterPercentSpecials}.

Если значением элемента является относительный путь, то полный путь
к файлу вычисляется относительно каталога конфигурационных файлов
турнира, определяемого с помощью элементов
\hyperlink{F:contest.xml,T:root_dir}{\V{root\_dir}} или
\hyperlink{F:contest.xml,T:conf_dir}{\V{conf\_dir}}.
Рекомендуется всегда использовать относительные пути.

\B{Пример.}
{\small
\begin{verbatim}
<users_footer_file>users_footer.shtml</users_footer_file>
\end{verbatim}
}

\B{Замечание.} Если в файле-подвале используются server-side
includes (SSI), поддержка SSI в CGI-программах должна быть
включена в используемом http-сервере. Для дальнейшей информации
обратитесь к документации на Ваш http-сервер.

\begin{table}[p]
\begin{center}
\begin{tabular}{|>{\ttfamily}l|p{12cm}|}
\hline
\%R & Заменяется на информацию об авторских правах, правах на
      распространение (GNU GPL) и версии системы \S{ejudge}. \\
\%\% & Заменяется на один знак \V{\%}. \\
\hline
\end{tabular}
\end{center}
\caption{Специальные конструкции подстановки в
  файлах-подвалах}
\label{tableFooterPercentSpecials}
\end{table}

\subsection{Элемент \V{register\_header\_file}}
\hypertarget{F:contest.xml,T:register_header_file}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{register\_header\_file} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & путь к файлу \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать путь к файлу,
который содержит <<шапку>> html-файла, генерируемого
CGI-программой \hyperlink{P:register}{\S{register}}. Если элемент
задан, то содержимое указанного файла будет выведено в начале
генерируемого файла. Если элемент не задан, генерируется
заголовок по умолчанию, включающий название турнира и кодировку
страницы. В файле-заголовке допускаются специальные
конструкции, начинающиеся со знака \V{\%} (<<процент>>),
перечисленные в таблице \ref{tableHeaderPercentSpecials}.

Если значением элемента является относительный путь, то полный путь
к файлу вычисляется относительно каталога конфигурационных файлов
турнира, определяемого с помощью элементов
\hyperlink{F:contest.xml,T:root_dir}{\V{root\_dir}} или
\hyperlink{F:contest.xml,T:conf_dir}{\V{conf\_dir}}.
Рекомендуется всегда использовать относительные пути.

\B{Пример.}
{\scriptsize
\begin{verbatim}
<register_header_file>reg_header.shtml</register_header_file>
\end{verbatim}
}

\B{Замечание.} Если в файле-заголовке используются server-side
includes (SSI), поддержка SSI в CGI-программах должна быть
включена в используемом http-сервере. Для дальнейшей информации
обратитесь к документации на Ваш http-сервер.

\subsection{Элемент \V{register\_footer\_file}},
\hypertarget{F:contest.xml,T:register_footer_file}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{register\_footer\_file} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & путь к файлу \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать путь к файлу,
который содержит <<подвал>> html-файла, генерируемого
CGI-программой \hyperlink{P:register}{\S{register}}. Если элемент
задан, то содержимое указанного файла будет выведено в конце
генерируемого файла. Если элемент не задан, генерируется
подвал страницы по умолчанию, включающий информацию об авторских
правах и версии системы \S{ejudge}. В файле-подвале допускаются специальные
конструкции, начинающиеся со знака \V{\%} (<<процент>>),
перечисленные в таблице \ref{tableFooterPercentSpecials}.

Если значением элемента является относительный путь, то полный путь
к файлу вычисляется относительно каталога конфигурационных файлов
турнира, определяемого с помощью элементов
\hyperlink{F:contest.xml,T:root_dir}{\V{root\_dir}} или
\hyperlink{F:contest.xml,T:conf_dir}{\V{conf\_dir}}.
Рекомендуется всегда использовать относительные пути.

\B{Пример.}
{\small
\begin{verbatim}
<register_footer_file>reg_footer.shtml</register_footer_file>
\end{verbatim}
}

\B{Замечание.} Если в файле-подвале используются server-side
includes (SSI), поддержка SSI в CGI-программах должна быть
включена в используемом http-сервере. Для дальнейшей информации
обратитесь к документации на Ваш http-сервер.

\subsection{Элемент \V{team\_header\_file}}
\hypertarget{F:contest.xml,T:team_header_file}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{team\_header\_file} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & путь к файлу \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать путь к файлу,
который содержит <<шапку>> html-файла, генерируемого
CGI-программой \hyperlink{P:team}{\S{team}}. Если элемент
задан, то содержимое указанного файла будет выведено в начале
генерируемого файла. Если элемент не задан, генерируется
заголовок по умолчанию, включающий название турнира и кодировку
страницы. В файле-заголовке допускаются специальные
конструкции, начинающиеся со знака \V{\%} (<<процент>>),
перечисленные в таблице \ref{tableHeaderPercentSpecials}.

Если значением элемента является относительный путь, то полный путь
к файлу вычисляется относительно каталога конфигурационных файлов
турнира, определяемого с помощью элементов
\hyperlink{F:contest.xml,T:root_dir}{\V{root\_dir}} или
\hyperlink{F:contest.xml,T:conf_dir}{\V{conf\_dir}}.
Рекомендуется всегда использовать относительные пути.

\B{Пример.}
{\small
\begin{verbatim}
<team_header_file>team_header.shtml</team_header_file>
\end{verbatim}
}

\B{Замечание.} Если в файле-заголовке используются server-side
includes (SSI), поддержка SSI в CGI-программах должна быть
включена в используемом http-сервере. Для дальнейшей информации
обратитесь к документации на Ваш http-сервер.

\subsection{Элемент \V{team\_footer\_file}}
\hypertarget{F:contest.xml,T:team_footer_file}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{team\_footer\_file} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & путь к файлу \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать путь к файлу,
который содержит <<подвал>> html-файла, генерируемого
CGI-программой \hyperlink{P:team}{\S{team}}. Если элемент
задан, то содержимое указанного файла будет выведено в конце
генерируемого файла. Если элемент не задан, генерируется
подвал страницы по умолчанию, включающий информацию об авторских
правах и версии системы \S{ejudge}. В файле-подвале допускаются специальные
конструкции, начинающиеся со знака \V{\%} (<<процент>>),
перечисленные в таблице \ref{tableFooterPercentSpecials}.

Если значением элемента является относительный путь, то полный путь
к файлу вычисляется относительно каталога конфигурационных файлов
турнира, определяемого с помощью элементов
\hyperlink{F:contest.xml,T:root_dir}{\V{root\_dir}} или
\hyperlink{F:contest.xml,T:conf_dir}{\V{conf\_dir}}.
Рекомендуется всегда использовать относительные пути.

\B{Пример.}
{\small
\begin{verbatim}
<team_footer_file>team_footer.shtml</team_footer_file>
\end{verbatim}
}

\B{Замечание.} Если в файле-подвале используются server-side
includes (SSI), поддержка SSI в CGI-программах должна быть
включена в используемом http-сервере. Для дальнейшей информации
обратитесь к документации на Ваш http-сервер.

\subsection{Элемент \V{users\_head\_style}}
\hypertarget{F:contest.xml,T:users_head_style}{\V{users\_head\_style}}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:          & \K{users\_head\_style} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:       & \I{нет} \\
Атрибуты:              & \I{нет} \\
Тип содержимого:       & строка \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \V{h2} \\
Может повторяться:     & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет установить тег языка
HTML, который используется для выделения названий секций в
html-странице, генерируемой CGI-программой \S{users}. Если
значение этого элемента не установлено, используется тег \V{h2},
то есть заголовки в генерируемом html-документе будут иметь
примерно следующий вид.
{\small
\begin{verbatim}
<h2>Список участников турнира X</h2>
\end{verbatim}
}

\B{Пример.}
{\small
\begin{verbatim}
<users_head_style>h3</users_head_style>
\end{verbatim}
}

Такое значение данной конфигурационной переменной приведёт к
тому, что тот же самый заголовок будет иметь следующий вид.
{\small
\begin{verbatim}
<h3>Список участников турнира X</h3>
\end{verbatim}
}

\B{Замечание.} В текущей реализации системы \S{ejudge}
отсутствует возможность задать отдельно открывающий и
закрывающий тег. И для того, и для другого будет использоваться
значение данной переменной. Поэтому указание ещё каких-либо
дополнительных атрибутов тега заголовка приведёт к тому, что
дополнительные атрибуты продублируются в закрывающем теге,
приводя, строго говоря, к неправильному html.

\subsection{Элемент \V{users\_par\_style}}
\hypertarget{F:contest.xml,T:users_par_style}{\V{users\_par\_style}}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:          & \K{users\_par\_style} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:       & \I{нет} \\
Атрибуты:              & \I{нет} \\
Тип содержимого:       & строка \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \V{"{}"{}} (пустая строка) \\
Может повторяться:     & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать параметры тега \V{<p>} в
html-страницах, генерируемых программой \V{users}. Значение элемента
\V{users\_par\_style} добавляется в открывающий тег \V{<p>}.
Закрывающий тег \V{</p>} остаётся без изменений.

\B{Пример.}
{\small
\begin{verbatim}
<users_par_style> class="common"</users_par_style>
\end{verbatim}
}

Такое значение конфигурационной переменной \V{users\_par\_style}
приведёт к тому, что в генерируемых CGI-программой \S{users}
html-страницах все абзацы будут помечены следующим образом:
{\small
\begin{verbatim}
<p class="common">A paragraph</p>
\end{verbatim}
}

Обратите внимание на пробел в начале строки значения конфигурационной
переменной \V{users\_par\_style}. Если бы он отсутствовал, тег \V{p} и
атрибут \V{class} слились в одно слово \V{pclass}.

\subsection{Элемент \V{users\_table\_style}}
\hypertarget{F:contest.xml,T:users_table_style}{\V{users\_table\_style}}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:          & \K{users\_table\_style} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:       & \I{нет} \\
Атрибуты:              & \I{нет} \\
Тип содержимого:       & строка \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \V{"{}"{}} (пустая строка) \\
Может повторяться:     & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать параметры тегов \V{<th>} и
\V{<td>} в html-странице, содержащей таблицу всех участников,
зарегистрированных на турнир, генерируемой программой
\V{users}. Значение элемента \V{users\_table\_style} добавляется в
открывающие теги \V{<th>} и \V{<td>}. Закрывающие теги \V{</th>} и
\V{</td>} остаются без изменений.

\B{Пример.}
{\small
\begin{verbatim}
<users_table_style> class="reg"</users_table_style>
\end{verbatim}
}

Такое значение конфигурационной переменной \V{users\_table\_style}
приведёт к тому, что в генерируемой CGI-программой \S{users} таблице
участников турнира все заголовки столбцов и ячейки таблицы будут
помечены следующим образом:
{\small
\begin{verbatim}
<td class="reg">User</td>
\end{verbatim}
}

Обратите внимание на пробел в начале строки значения конфигурационной
переменной \V{users\_table\_style}. Если бы он отсутствовал, тег
\V{td} и атрибут \V{class} слились в одно слово \V{tdclass}.

\subsection{Элемент \V{users\_verb\_style}}
\hypertarget{F:contest.xml,T:users_verb_style}{\V{users\_verb\_style}}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:          & \K{users\_verb\_style} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:       & \I{нет} \\
Атрибуты:              & \I{нет} \\
Тип содержимого:       & строка \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \V{"{}"{}} (пустая строка) \\
Может повторяться:     & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать параметры тегов \V{<th>} и
\V{<td>} в html-странице, содержащей подробную информацию об одном
участнике и генерируемой программой \V{users}. Значение элемента
\V{users\_verb\_style} добавляется в открывающие теги \V{<th>} и
\V{<td>}. Закрывающие теги \V{</th>} и \V{</td>} остаются без изменений.

\B{Пример.}
{\small
\begin{verbatim}
<users_verb_style> class="verb"</users_verb_style>
\end{verbatim}
}

Такое значение конфигурационной переменной \V{users\_verb\_style}
приведёт к тому, что в генерируемой CGI-программой \S{users}
html-странице с подробной информацией об участнике все заголовки
столбцов и ячейки таблицы будут помечены следующим образом:
{\small
\begin{verbatim}
<td class="verb">User</td>
\end{verbatim}
}

Обратите внимание на пробел в начале строки значения конфигурационной
переменной \V{users\_verb\_style}. Если бы он отсутствовал, тег
\V{td} и атрибут \V{class} слились в одно слово \V{tdclass}.

\subsection{Элемент \V{register\_head\_style}}
\hypertarget{F:contest.xml,T:register_head_style}{\V{register\_head\_style}}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:          & \K{register\_head\_style} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:       & \I{нет} \\
Атрибуты:              & \I{нет} \\
Тип содержимого:       & строка \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \V{h2} \\
Может повторяться:     & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет установить тег языка
HTML, который используется для выделения названий секций в
html-странице, генерируемой CGI-программой \S{register}. Если
значение этого элемента не установлено, используется тег \V{h2},
то есть заголовки в генерируемом html-документе будут иметь
примерно следующий вид.
{\small
\begin{verbatim}
<h2>Персональная информация пользователя X</h2>
\end{verbatim}
}

\B{Пример.}
{\small
\begin{verbatim}
<register_head_style>h3</register_head_style>
\end{verbatim}
}

Такое значение данной конфигурационной переменной приведёт к
тому, что тот же самый заголовок будет иметь следующий вид.
{\small
\begin{verbatim}
<h3>Персональная информация пользователя X</h3>
\end{verbatim}
}

\B{Замечание.} В текущей версии системы \S{ejudge}
отсутствует возможность задать отдельно открывающий и
закрывающий тег. И для того, и для другого будет использоваться
значение данной переменной. Поэтому указание ещё каких-либо
дополнительных атрибутов тега заголовка приведёт к тому, что
дополнительные атрибуты продублируются в закрывающем теге,
приводя, строго говоря, к неправильному html.

\subsection{Элемент \V{register\_par\_style}}
\hypertarget{F:contest.xml,T:register_par_style}{\V{register\_par\_style}}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:          & \K{register\_par\_style} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:       & \I{нет} \\
Атрибуты:              & \I{нет} \\
Тип содержимого:       & строка \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \V{"{}"{}} (пустая строка) \\
Может повторяться:     & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать параметры тега \V{<p>} в
html-страницах, генерируемых программой \V{register}. Значение
элемента \V{register\_par\_style} добавляется в открывающий тег
\V{<p>}. Закрывающий тег \V{</p>} остаётся без изменений.

\B{Пример.}
{\small
\begin{verbatim}
<register_par_style> class="common"</register_par_style>
\end{verbatim}
}

Такое значение конфигурационной переменной \V{register\_par\_style} 
приведёт к тому, что в генерируемых CGI-программой \S{register}
html-страницах все абзацы будут помечены следующим образом:
{\small
\begin{verbatim}
<p class="common">A paragraph</p>
\end{verbatim}
}

Обратите внимание на пробел в начале строки значения конфигурационной
переменной \V{register\_par\_style}. Если бы он отсутствовал, тег
\V{p} и атрибут \V{class} слились в одно слово \V{pclass}.

\subsection{Элемент \V{register\_table\_style}}
\hypertarget{F:contest.xml,T:register_table_style}{\V{register\_table\_style}}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:          & \K{register\_table\_style} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:       & \I{нет} \\
Атрибуты:              & \I{нет} \\
Тип содержимого:       & строка \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \V{"{}"{}} (пустая строка) \\
Может повторяться:     & \I{нет} \\
\end{tabular}

{\raggedright
\B{Описание.} Данный элемент позволяет задать параметры тегов \V{<th>} и
\V{<td>} в html-странице, содержащей таблицу всех турниров, на которые
зарегистрировался данный пользователь, генерируемой программой
\V{register}. Значение элемента \V{register\_table\_style} добавляется
в открывающие теги \V{<th>} и \V{<td>}. Закрывающие теги \V{</th>} и
\V{</td>} остаются без изменений.

}

\B{Пример.}
{\small
\begin{verbatim}
<register_table_style> class="reg"</register_table_style>
\end{verbatim}
}

Такое значение конфигурационной переменной \V{register\_table\_style}
приведёт к тому, что в генерируемой CGI-программой \S{register} таблице
участников турнира все заголовки столбцов и ячейки таблицы будут
помечены следующим образом:
{\small
\begin{verbatim}
<td class="reg">User</td>
\end{verbatim}
}

Обратите внимание на пробел в начале строки значения конфигурационной
переменной \V{register\_table\_style}. Если бы он отсутствовал, тег
\V{td} и атрибут \V{class} слились в одно слово \V{tdclass}.

\subsection{Элемент \V{team\_head\_style}}
\hypertarget{F:contest.xml,T:team_head_style}{\V{team\_head\_style}}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:          & \K{team\_head\_style} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:       & \I{нет} \\
Атрибуты:              & \I{нет} \\
Тип содержимого:       & строка \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \V{h2} \\
Может повторяться:     & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет установить тег языка
HTML, который используется для выделения названий секций в
html-странице, генерируемой CGI-программой \S{team}. Если
значение этого элемента не установлено, используется тег \V{h2},
то есть заголовки в генерируемом html-документе будут иметь
примерно следующий вид.
{\small
\begin{verbatim}
<h2>Персональная страница участника X</h2>
\end{verbatim}
}

\B{Пример.}
{\small
\begin{verbatim}
<team_head_style>h3</team_head_style>
\end{verbatim}
}

Такое значение данной конфигурационной переменной приведёт к
тому, что тот же самый заголовок будет иметь следующий вид.
{\small
\begin{verbatim}
<h3>Персональная страница участника X</h3>
\end{verbatim}
}

\B{Замечание.} В текущей версии системы \S{ejudge}
отсутствует возможность задать отдельно открывающий и
закрывающий тег. И для того, и для другого будет использоваться
значение данной переменной. Поэтому указание ещё каких-либо
дополнительных атрибутов тега заголовка приведёт к тому, что
дополнительные атрибуты продублируются в закрывающем теге,
приводя, строго говоря, к неправильному html.

\subsection{Элемент \V{team\_par\_style}}
\hypertarget{F:contest.xml,T:team_par_style}{\V{team\_par\_style}}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:          & \K{team\_par\_style} \\
Содержится в:          & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:       & \I{нет} \\
Атрибуты:              & \I{нет} \\
Тип содержимого:       & строка \\
Может отсутствовать:   & \I{да} \\
Значение по умолчанию: & \V{"{}"{}} (пустая строка) \\
Может повторяться:     & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать параметры тега \V{<p>} в
html-страницах, генерируемых программой \V{team}. Значение
элемента \V{team\_par\_style} добавляется в открывающий тег
\V{<p>}. Закрывающий тег \V{</p>} остаётся без изменений.

\B{Пример.}
{\small
\begin{verbatim}
<team_par_style> class="common"</team_par_style>
\end{verbatim}
}

Такое значение конфигурационной переменной \V{team\_par\_style} 
приведёт к тому, что в генерируемых CGI-программой \S{team}
html-страницах все абзацы будут помечены следующим образом:
{\small
\begin{verbatim}
<p class="common">A paragraph</p>
\end{verbatim}
}

Обратите внимание на пробел в начале строки значения конфигурационной
переменной \V{team\_par\_style}. Если бы он отсутствовал, тег
\V{p} и атрибут \V{class} слились в одно слово \V{pclass}.

\subsection{Элемент \V{register\_email}}
\hypertarget{F:contest.xml,T:register_email}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{register\_email} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & e-mail адрес \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать адрес отправителя
(поле \V{From}) электронного письма, посылаемого пользователю
при регистрации в системе. Это письмо посылается по адресу,
который был задан пользователем в регистрационной анкете и
содержит регистрационное имя, пароль пользователя, а также URL,
для дальнейшей регистрации в системе. Если данный элемент в
конфигурационном файле турнира не задан, используется значение
элемента \hyperlink{F:ejudge.xml,T:register_email}{\V{register\_email}}
конфигурационного файла \hyperlink{F:ejudge.xml}{\V{ejudge.xml}}.
Если и тот элемент не задан, используется адрес по умолчанию
\V{USER}, где \V{USER} --- логин пользователя в \S{Linux},
от имени которого выполняется программа
\hyperlink{P:userlist-server}{\S{userlist-server}}.
Полный почтовый адрес в этом случае будет сформирован
программой отсылки почты в \S{Linux} и зависит от её настроек.
Например, это может быть полный адрес DNS компьютера,
на котором работает \S{userlist-server}.

\B{Пример.}
{\small
\begin{verbatim}
<register_email>register@supercontest.ru</register_email>
\end{verbatim}
}

\subsection{Элемент \V{register\_url}}
\hypertarget{F:contest.xml,T:register_url}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{register\_url} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & URL \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать URL CGI-программы
\hyperlink{P:register}{\S{register}} для дальнейшей регистрации
в системе \S{ejudge}. Этот URL будет помещён в текст
письма-уведомления, посылаемого пользователю при регистрации в
системе. Если в конфигурационном файле турнира
\hyperlink{F:contest.xml}{\V{contest.xml}} данный элемент не
задан, используется URL, заданный в элементе
\hyperlink{F:ejudge.xml,T:register_url}{\V{register\_url}}
конфигурационного файла
\hyperlink{F:ejudge.xml}{\V{ejudge.xml}}.
Если и тот элемент не задан, используется URL по умолчанию
\V{http://contest.cmc.msu.ru/cgi-bin/register}.
К URL, заданному в любом из конфигурационных файлов или по
умолчанию, автоматически добавляется параметр \V{contest\_id} со
значением, равным идентификатору данного турнира, параметр
\V{locale\_id} со значением, равным идентификатору выбранного
языка интерфейса, параметр \V{login} со значением, равным
регистрационному имени нового пользователя, и параметр
\V{action} со значением \V{3} для перехода непосредственно к
странице входа в систему. Таким образом, полностью
сформированный URL для примера ниже может выглядеть следующим
образом:

{\scriptsize
\begin{verbatim}
http://www.supercontest.ru/cgi-bin/register?action=3&login=user&contest_id=4&locale_id=1
\end{verbatim}
}

\B{Пример.}
{\small
\begin{verbatim}
<register_url>http://www.supercontest.ru/cgi-bin/register</register_url>
\end{verbatim}
}

\subsection{Элемент \V{register\_email\_file}}
\hypertarget{F:contest.xml,T:register_email_file}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{register\_email\_file} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & путь к файлу шаблона регистрационного письма \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание}.
Данный элемент позволяет задать имя файла, в котором хранится шаблон
регистрационного письма, отсылаемого пользователю для подтверждения
регистрации. Если значение данного элемента не задано, используется
стандартная встроенная форма сообщения.

Значение элемента на самом деле представляет собой шаблон
\hyperlink{F:serve.cfg,S:format_substitutions}{форматной подстановки},
в котором можно использовать спецификации преобразования
\verb|%Ui|, \verb|%Ul|, \verb|%Ue|, \verb|%Uz|, \verb|%Vl|,
\verb|%Vu|. Наиболее полезна спецификация \verb|%Vl|, которая заменяется
на номер текущего языкового окружения --- для выбора подходящего
шаблона письма в зависимости от языкового окружения,
выбранного пользователем.

Если значением элемента является относительный путь, то полный путь
к файлу вычисляется относительно каталога конфигурационных файлов
турнира, определяемого с помощью элементов
\hyperlink{F:contest.xml,T:root_dir}{\V{root\_dir}} или
\hyperlink{F:contest.xml,T:conf_dir}{\V{conf\_dir}}.
Рекомендуется всегда использовать относительные пути.

Файл, указанный в данном элементе, также рассматривается как шаблон
\hyperlink{F:serve.cfg,S:format_substitutions}{форматной подстановки},
в котором можно использовать спецификации преобразования
\verb|%Ui|, \verb|%Ul|, \verb|%Ue|, \verb|%Uz|, \verb|%Vl|,
\verb|%Vu|.

\B{Пример.}
{\small
\begin{verbatim}
<register_email_file>regletter.txt</register_email_file>
\end{verbatim}
}

\subsection{Элемент \V{team\_url}}
\hypertarget{F:contest.xml,T:team_url}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{team\_url} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & URL \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задать URL для
CGI-программы \hyperlink{P:team}{\S{team}}, которая позволяет
пользователю непосредственно участвовать в турнире. Если данный
элемент задан, то ссылка на указанный URL будет выведена на
личной странице участника после успешной регистрации участника в
данном турнире, то есть когда статус регистрации участника
установлен в \V{OK}. Если элемент не задан, ссылка не демонстрируется.

\B{Пример.}
{\small
\begin{verbatim}
<team_url>http://www.supercontest.ru/cgi-bin/team</team_url>
\end{verbatim}
}

\subsection{Элемент \V{registration\_deadline}}
\hypertarget{F:contest.xml,T:registration_deadline}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{registration\_deadline} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & \I{астрономическое время} \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.} Данный элемент позволяет задавать крайний срок
приёма регистрационных заявок на данный турнир. Когда
астрономическое время станет больше указанного, заявки на
участие в данном турнире приниматься не будут, и информация о
возможности регистрации на данный турнир не будет выводиться на
личной странице участников. Если данный элемент не задан,
регистрация не имеет ограничений во времени.

Дата должна задаваться в формате
\V{\I{Year}/\I{Month}/\I{Day} \I{Hour}:\I{Min}:\I{Sec}}.
Здесь \I{Year} --- четырёхзначный номер года от 1906 до 2038
(диапазон представимых дат во внутреннем формате для систем
\S{POSIX}). \I{Month} --- номер месяца от 1 до 12,
\I{Day} --- номер дня в месяце от 1 до 31, \I{Hour} --- час
суток от 0 до 23, \I{Min} --- минуты от 0 до 59, \I{Sec} ---
секунды от 0 до 59. Элементы даты могут опускаться, начиная с
последнего. В этом случае подразумевается минимальное
значение. То есть, в спецификации календарного времени могут
быть опущены секунды (например, \V{2003/02/28 14:12}), секунды и
минуты (например, \V{2003/02/28 14}), секунды, минуты и часы
(например, \V{2003/02/28}).
Поскольку для конвертации астрономического времени во внутреннее
представление используется функция \V{mktime(3)}, проверка на
допустимость даты, например, \V{2003/02/30}, не
производится. Такая дата окажется автоматически преобразованной
в \V{2003/03/02}.

\B{Пример.}
{\small
\begin{verbatim}
<registration_deadline>2003/10/05 00:00:00</registration_deadline>
\end{verbatim}
}

\subsection{Элемент \V{root\_dir}}
\hypertarget{F:contest.xml,T:root_dir}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{root\_dir} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & \I{абсолютный путь к каталогу} \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет задавать домашний каталог турнира.
В подкаталогах домашнем каталоге турнира размещается конфигурационный
файл турнира \hyperlink{F:serve.cfg}{\V{serve.cfg}}, тесты,
проверяющие программы, базы посылок и т. д.

Этот элемент должен быть установлен для того, чтобы программа
\hyperlink{P:super-serve}{\S{super-serve}} могла управлять этим турниром.
Если значение элемента не установлено или не является абсолютным путём,
корректная работа системы \S{ejudge} не гарантируется.

При создании нового турнира с помощью программы
\hyperlink{P:serve-control}{\S{serve-control}} домашний каталог
для нового турнира устанавливается и создаётся автоматически,
основываясь на значении опции \verb|--enable-contests-home-dir|
программы \hyperlink{P:configure}{\S{configure}}.

\B{Пример.}
{\small
\begin{verbatim}
<root_dir>/home/judges/000111</root_dir>
\end{verbatim}
}

\subsection{Элемент \V{conf\_dir}}
\hypertarget{F:contest.xml,T:conf_dir}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{conf\_dir} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & \I{путь к каталогу} \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
Примечание:          & явное использование не рекомендуется \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет задавать каталог конфигурационных файлов
турнира. Если значение элемента не задано, используется значение
по умолчанию \verb|conf|. Если значение элемента (включая значение
по умолчанию) является относительным путем, абсолютный путь вычисляется
относительно домашнего каталога турнира, задаваемого с помощью
элемента \hyperlink{F:contest.xml,T:root_dir}{\V{root\_dir}}.
Рекомендуется всегда сохранять значение по умолчанию.

\B{Пример.}
{\small
\begin{verbatim}
<root_dir>/home/judges/000111</root_dir>
\end{verbatim}
}

\subsection{Элемент \V{serve\_user}}
\hypertarget{F:contest.xml,T:serve_user}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{serve\_user} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & регистрационное имя (login) пользователя в \S{Unix} \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
Примечание:          & в текущей версии \S{ejudge} игнорируется \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет указать регистрационное имя пользователя
в системе \S{Unix}, под которым будет запущена программа
\hyperlink{P:serve}{\S{serve}}. Значение элемента предназначено
для использования в программа \hyperlink{P:super-serve}{\S{super-serve}},
но в текущей версии \S{ejudge} программа \S{super-serve} не позволяет
работать из-под пользователя \V{root} и не позволяет запускать
другие программы из-под произвольного пользователя, поэтому
значение данного элемента игнорируется.

\subsection{Элемент \V{serve\_group}}
\hypertarget{F:contest.xml,T:serve_group}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{serve\_group} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & группа пользователя в \S{Unix} \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
Примечание:          & в текущей версии \S{ejudge} игнорируется \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет указать группу пользователя
в системе \S{Unix}, под которым будет запущена программа
\hyperlink{P:serve}{\S{serve}}. Значение элемента предназначено
для использования в программа \hyperlink{P:super-serve}{\S{super-serve}},
но в текущей версии \S{ejudge} программа \S{super-serve} не позволяет
работать из-под пользователя \V{root} и не позволяет запускать
другие программы из-под произвольного пользователя, поэтому
значение данного элемента игнорируется.

\subsection{Элемент \V{run\_user}}
\hypertarget{F:contest.xml,T:run_user}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{run\_user} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & регистрационное имя (login) пользователя в \S{Unix} \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
Примечание:          & в текущей версии \S{ejudge} игнорируется \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет указать регистрационное имя пользователя
в системе \S{Unix}, под которым будет запущена программа
\hyperlink{P:run}{\S{run}}. Значение элемента предназначено
для использования в программа \hyperlink{P:super-serve}{\S{super-serve}},
но в текущей версии \S{ejudge} программа \S{super-serve} не позволяет
работать из-под пользователя \V{root} и не позволяет запускать
другие программы из-под произвольного пользователя, поэтому
значение данного элемента игнорируется.

\subsection{Элемент \V{run\_group}}
\hypertarget{F:contest.xml,T:run_group}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{run\_group} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & группа пользователя в \S{Unix} \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
Примечание:          & в текущей версии \S{ejudge} игнорируется \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет указать группу пользователя
в системе \S{Unix}, под которым будет запущена программа
\hyperlink{P:run}{\S{run}}. Значение элемента предназначено
для использования в программа \hyperlink{P:super-serve}{\S{super-serve}},
но в текущей версии \S{ejudge} программа \S{super-serve} не позволяет
работать из-под пользователя \V{root} и не позволяет запускать
другие программы из-под произвольного пользователя, поэтому
значение данного элемента игнорируется.

\subsection{Элемент \V{standings\_url}}
\hypertarget{F:contest.xml,T:standings_url}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{standings\_url} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & URL страницы текущих результатов турнира \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет задать URL для страницы текущих результатов
турнира. Если значение элемента установлена, на личной странице
участника турнира, генерируемой CGI-программой
\hyperlink{P:team}{\S{team}}, после начала турнира будет отображаться
ссылка на таблицу текущих результатов турнира. Значение данного
элемента используется без изменений в атрибуте \verb|href|.

\B{Пример.}
{\small
\begin{verbatim}
<standings_url>/000100/standings.shtml</standings_url>
\end{verbatim}
}
Поскольку имя сервера не задано, данная ссылка будет вести на то же имя
сервера, которое было использовано при обращении к URL
программы \S{team}.

\subsection{Элемент \V{problems\_url}}
\hypertarget{F:contest.xml,T:problems_url}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{problems\_url} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & URL страницы условий задач \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет задать URL для условий задач турнира.
Если значение элемента установлена, на личной странице
участника турнира, генерируемой CGI-программой
\hyperlink{P:team}{\S{team}}, после начала турнира будет отображаться
ссылка на условия задач. Значение данного
элемента используется без изменений в атрибуте \verb|href|.

\B{Пример.}
{\small
\begin{verbatim}
<problems_url>/000100/problems.shtml</problems_url>
\end{verbatim}
}
Поскольку имя сервера не задано, данная ссылка будет вести на то же имя
сервера, которое было использовано при обращении к URL
программы \S{team}.

\subsection{Элемент \V{client\_flags}}
\hypertarget{F:contest.xml,T:client_flags}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{client\_flags} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & опции для CGI-программ \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет задавать различные опции для CGI-программ
при работе с данным турниром. Опции в элементе перечисляются через
запятую и могут разделяться произвольным количеством пробельных
символов.

Поддерживаются следующие опции:

\begin{center}
\begin{tabular}{|l|p{10cm}|}
\hline
\V{IGNORE\_TIME\_SKEW} &
  Разрешить рассинхронизацию времени между файлом состояния сервера
  турнира \hyperlink{P:serve}{\S{serve}} и текущим временем при работе
  турнира. Опция \B{необходима}, когда турнир управляется
  программой \hyperlink{P:super-serve}{\S{super-serve}}, поскольку
  при первом обращении к турниру CGI-программы могут прочитать
  устревший файл текущего состояния. \\
\V{DISABLE\_TEAM} &
  Запретить обращение к турниру с помощью программы
  \hyperlink{P:team}{\S{team}}. Если опция установлена, при попытке
  обращения к CGI-программе \S{team} для данного турнира клиенту будет
  выдано соответствующее сообщение. \\
\V{DISABLE\_MEMBER\_DELETE} &
  Запретить удаление членов команды и прочих участников при
  редактировании регистрационных данных пользователя. В этом случае
  в форме редактирования данных не отображается кнопка \V{Delete member}. \\
\hline
\end{tabular}
\end{center}

\B{Пример.}
{\small
\begin{verbatim}
<client_flags>IGNORE_TIME_SKEW, DISABLE_MEMBER_DELETE</client_flags>
\end{verbatim}
}

\subsection{Элемент \V{users\_table\_format}}
\hypertarget{F:contest.xml,T:users_table_format}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{users\_table\_format} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & формат таблицы зарегистрированных пользователей \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет управлять видом таблицы пользователей,
зарегистрированных на турнир. Элемент используется, когда таблица
зарегистрированных пользователей выводится на локальном языке
(\verb|locale_id| не равно 0).

Элемент позволяет изменять информацию,
которая выводится в колонках
таблицы со второй по предпоследнюю. Первая колонка таблицы
всегда называется \verb|NN| (порядковый номер в списке), а последняя - 
\verb|Status| (или \verb|Статус|) --- статус регистрации участника. 
Значение элемента --- это шаблоны
\hyperlink{F:serve.cfg,S:format_substitutions}{форматной подстановки}
для каждого столбца со второго по предпоследний. Шаблоны столбцов
разделяются знаком \verb"|" (вертикальная черта). Например, спецификация
{\small
\begin{verbatim}
<users_table_format>%Ui|%Un|%Ut|%Uf</users_table_format>
\end{verbatim}
}
означает, что таблица будет состоять из 6 столбцов: порядкового
номера, идентификатора пользователя, имени пользователя, краткой
формы записи учебного заведения, краткой формы записи
факультета, статуса регистрации. Из всех спецификаций форматной
подстановки допускаются только спецификации подстановки
информации о пользователе (\verb|%U*|).

Если значение данного элемента задано, обязательно должно быть
задано значение элемента
\hyperlink{F:contest.xml,T:users_table_legend}{\V{users\_table\_legend}},
при этом оба элемента должны определять равное число стобцов.

\subsection{Элемент \V{users\_table\_legend}}
\hypertarget{F:contest.xml,T:users_table_legend}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{users\_table\_legend} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & заголовок таблицы зарегистрированных пользователей \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет управлять видом таблицы пользователей,
зарегистрированных на турнир. Элемент используется, когда таблица
зарегистрированных пользователей выводится на локальном языке
(\verb|locale_id| не равно 0).

Элемент позволяет изменять
вид заголовка таблицы. Изменять можно заголовок столбцов таблицы
со второй по предпоследнюю. Первая колонка таблицы
всегда называется \verb|NN| (порядковый номер в списке), а последняя - 
\verb|Status| (или \verb|Статус|) --- статус регистрации участника. 
Заголовки колонок отделяются друг от друга символом \verb"|"
(вертикальная черта). Например,
{\scriptsize
\begin{verbatim}
<users_table_legend>Id|Имя участника|Учебное заведение|Факультет</users_table_legend>
\end{verbatim}
}
означает, что таблица зарегистрированных пользователей будет
содержать столбцы "NN", "Id", "Имя участника", "Учебное заведение",
"Факультет", "Статус". 

Если значение данного элемента задано, обязательно должно быть
задано значение элемента
\hyperlink{F:contest.xml,T:users_table_format}{\V{users\_table\_format}},
при этом оба элемента должны определять равное число стобцов.

\subsection{Элемент \V{users\_table\_format\_en}}
\hypertarget{F:contest.xml,T:users_table_format_en}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{users\_table\_format\_en} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & формат таблицы зарегистрированных пользователей \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет управлять видом таблицы пользователей,
зарегистрированных на турнир. Элемент используется, когда таблица
зарегистрированных пользователей выводится на английском языке
(\verb|locale_id| равно 0).

Элемент позволяет изменять информацию,
которая выводится в колонках
таблицы со второй по предпоследнюю. Первая колонка таблицы
всегда называется \verb|NN| (порядковый номер в списке), а последняя - 
\verb|Status| --- статус регистрации участника. 
Значение элемента --- это шаблоны
\hyperlink{F:serve.cfg,S:format_substitutions}{форматной подстановки}
для каждого столбца со второго по предпоследний. Шаблоны столбцов
разделяются знаком \verb"|" (вертикальная черта). Например, спецификация
{\small
\begin{verbatim}
<users_table_format>%Ui|%Un|%UT|%UF</users_table_format>
\end{verbatim}
}
означает, что таблица будет состоять из 6 столбцов: порядкового
номера, идентификатора пользователя, имени пользователя, краткой
формы записи учебного заведения, краткой формы записи
факультета, статуса регистрации. Из всех спецификаций форматной
подстановки допускаются только спецификации подстановки
информации о пользователе (\verb|%U*|).

Если значение данного элемента задано, обязательно должно быть
задано значение элемента
\hyperlink{F:contest.xml,T:users_table_legend_en}{\V{users\_table\_legend\_en}},
при этом оба элемента должны определять равное число стобцов.

\subsection{Элемент \V{users\_table\_legend\_en}}
\hypertarget{F:contest.xml,T:users_table_legend_en}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{users\_table\_legend\_en} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & заголовок таблицы зарегистрированных пользователей \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.}
Данный элемент позволяет управлять видом таблицы пользователей,
зарегистрированных на турнир. Элемент используется, когда таблица
зарегистрированных пользователей выводится на английском языке
(\verb|locale_id| равно 0).

Элемент позволяет изменять
вид заголовка таблицы. Изменять можно заголовок столбцов таблицы
со второй по предпоследнюю. Первая колонка таблицы
всегда называется \verb|NN| (порядковый номер в списке), а последняя - 
\verb|Status| --- статус регистрации участника. 
Заголовки колонок отделяются друг от друга символом \verb"|"
(вертикальная черта). Например,
{\scriptsize
\begin{verbatim}
<users_table_legend>Id|Name|Institution|Faculty</users_table_legend>
\end{verbatim}
}
означает, что таблица зарегистрированных пользователей будет
содержать столбцы "NN", "Id", "Name", "Institution",
"Faculty", "Status". 

Если значение данного элемента задано, обязательно должно быть
задано значение элемента
\hyperlink{F:contest.xml,T:users_table_format_en}{\V{users\_table\_format\_en}},
при этом оба элемента должны определять равное число стобцов.

\subsection{Элемент \V{user\_name\_comment}}
\hypertarget{F:contest.xml,T:user_name_comment}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{user\_name\_comment} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & Дополнительный комментарий для поля User Name
                       регистрационной анкеты. \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

\B{Описание.}
Данные элемент позволяет задавать дополнительный текст,
который будет выводиться рядом с полем ``User Name''
регистрационной анкеты. Этот текст может, например, содержать
инструкции по выбору названия команды.
Текст выводится без изменений и может использовать теги HTML,
которые, однако, должны быть соответствующим образом закодированы
в XML файле.

\B{Пример.}
{\small
\begin{verbatim}
<user_name_comment>&lt;u&gt;Обратите внимание:&lt;/u&gt;
в названии команды сначала должно идти название школы, а затем
(при желании, или если от школы выставляется более одной команды)
- название команды. Например: &quot;
Школа 1234: Монстры программирования&quot;
или &quot;Сборная школ 1, 2 и 3: Хакеры&quot;
</user_name_comment>
\end{verbatim}
}

\subsection{Элемент \V{allowed\_languages}}
\hypertarget{F:contest.xml,T:allowed_languages}{}

\begin{tabular}{@{}>{\bfseries}lp{10.5cm}}
Имя элемента:        & \K{allowed\_languages} \\
Содержится в:        & \strut%
  \hyperlink{F:contest.xml,T:contest}{\V{contest}} \\
Может содержать:     & \I{нет} \\
Атрибуты:            & \I{нет} \\
Тип содержимого:     & Список поддерживаемых языков/сред разработки. \\
Может отсутствовать: & \I{да} \\
Может повторяться:   & \I{нет} \\
\end{tabular}

{\tolerance=3000
\B{Описание.}
Значение элемента позволяет ограничить языки и среды
программирования, которые пользователи могут указывать при
регистрации на турнир. Элемент \V{allowed\_languages}
используется, только если поле
\hyperlink{F:contest.xml,S:registration_form}{\V{languages}}
указано среди разрешенных полей глобальной информации об участнике,
задаваемых элементом \hyperlink{F:contest.xml,T:field}{\V{field}}.

}

Если элемент \V{allowed\_languages} не задан, поле
`Programming languages' регистрационной формы по будет
обычной строкой ввода, в которой пользователь может вводить
произвольный текст. Если же элемент установлен, то вместо
строки будет выведен список допустимых языков или сред программирования,
каждый элемент которого может быть отмечен.
При определении списка допустимых языков, они должны перечисляться через
запятую. Пробельные символы вокруг запятой, в начале и конце строки
игнорируются.

{\small
\begin{verbatim}
<allowed_languages>
  Borland C/C++,
  Borland Pascal,
  Delphi
</allowed_languages>
\end{verbatim}
}

\clearpage

% Local variables:
%  compile-command: "make"
% End:
