Mercurial > emacs
changeset 82634:4c16e7f086d7
Move refcards from etc/ to etc/refcards/
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Wed, 22 Aug 2007 07:19:01 +0000 |
parents | f9b6a5d1a4bd |
children | 58c316c20961 |
files | etc/ru-refcard.tex |
diffstat | 1 files changed, 0 insertions(+), 525 deletions(-) [+] |
line wrap: on
line diff
--- a/etc/ru-refcard.tex Wed Aug 22 07:18:54 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,525 +0,0 @@ -% Copyright (C) 1997, 2002, 2003, 2004, 2005, -% 2006, 2007 Free Software Foundation, Inc. - -\documentclass[10pt]{article} -\usepackage{multicol,tabularx} -\usepackage[a4paper,hmargin={2cm,2cm},vmargin={2cm,2cm},nohead,twoside]{geometry} -\usepackage[T2A]{fontenc} -\usepackage[koi8-r]{inputenc} -\usepackage[english,russian]{babel} -\usepackage{verbatim} -%\usepackage{enumerate,calc} -%\usepackage{indentfirst,amsmath,graphicx,citehack,floatflt} -% -%\usepackage{pscyr} -%\renewcommand{\rmdefault}{fha} - -\newlength{\ColWidth} -\setlength{\ColWidth}{120mm} -\newlength{\ColThreeWidth} -\setlength{\ColThreeWidth}{25mm} - -\newcommand{\versionnumber}[0]{2.3} -\newcommand{\versionemacs}[0]{22} -\newcommand{\nyear}[0]{2007} - -\newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill - \centerline{\footnotesize \copyright\ \nyear\ Free Software Foundation, Inc. - Permissions on back. v\versionnumber}} - -\newcommand\copyrightnotice[0]{ -\vskip 1ex plus 2 fill\begingroup\footnotesize -\centerline{Copyright \copyright\ \nyear\ Free Software Foundation, Inc.} -\centerline{v\versionnumber{} for GNU Emacs version \versionemacs, June 2006} -\centerline{designed by Stephen Gildea} -\centerline{Перевод Alex Ott <alexott@gmail.com>} - -Permission is granted to make and distribute copies of -this card provided the copyright notice and this permission notice -are preserved on all copies. - -For copies of the GNU Emacs manual, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -\endgroup} - -\hyphenation{mini-buf-fer} - -\parindent 0pt -%\parskip 0.5ex plus .2ex minus .2ex - -\newcommand{\kbd}[1]{\texttt{#1}} - -\begin{document} - -%\begin{multicols}{3} - -\centerline{Справочник команд GNU Emacs} -\centerline{(для версии \versionemacs)} - -\section{Запуск Emacs} - -Для запуска GNU Emacs \versionemacs, просто наберите имя программы: \kbd{emacs} - -\section{Выход из Emacs} - -\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} -Приостановить работу Emacs (или свернуть в иконку при работе в X) & \kbd{C-z} \\ -Выйти из Emacs & \kbd{C-x C-c} \\ -\end{tabular} - -\section{Файлы} - -\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} -{\bf открыть} файл в Emacs & \kbd{C-x C-f} \\ -{\bf сохранить} файл обратно на диск & \kbd{C-x C-s} \\ -сохранить {\bf все} файлы & \kbd{C-x s} \\ -{\bf вставить} содержимое другого файла в текущий буфер & \kbd{C-x i} \\ -открыть нужный вам файл вместо текущего & \kbd{C-x C-v} \\ -сохранить буфер в указанном файле & \kbd{C-x C-w} \\ -Переключить состояние буфера ``только для чтения'' & \kbd{C-x C-q} \\ -\end{tabular} - -\section{Получение помощи} - -Справочная система достаточно проста. Hажмите \kbd{C-h} (или \kbd{F1}) и -следуйте инструкциям. Если вы в первый раз работаете с Emacs, то наберите -\kbd{C-u C-h t Russian RET} для вызова {\bf учебника}. - -\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} -Скрыть окно справки & \kbd{C-x 1} \\ -Прокрутить окно справки & \kbd{C-M-v} \\ - -apropos: показать команды, соответствующие строке & \kbd{C-h a} \\ -показать имя функции, которая запускается клавишей & \kbd{C-h k} \\ -получить информацию о функции & \kbd{C-h f} \\ -получить информацию о режиме & \kbd{C-h m} \\ -\end{tabular} - -\section{Исправление ошибок} - -\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} -{\bf прервать} частично набранную или исполняемую команду & \kbd{C-g} \\ -{\bf восстановить} файл, потерянный при крахе системы & \kbd{M-x recover-file} \\ -{\bf отменить} нежелательные изменения & \kbd{C-x u, C-\_ {\rm или} C-/} \\ -восстановить буфер в первоначальное состояние & \kbd{M-x revert-buffer} \\ -перерисовать заполненный мусором экран & \kbd{C-l} \\ -\end{tabular} - -\section{Hаращиваемый поиск} - -\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} -поиск вперед & \kbd{C-s} \\ -поиск назад & \kbd{C-r} \\ -поиск по регулярному выражению вперед & \kbd{C-M-s} \\ -поиск по регулярному выражению назад & \kbd{C-M-r} \\ - -выбрать предыдущую строку поиска & \kbd{M-p} \\ -выбрать следующую строку поиска & \kbd{M-n} \\ -прекратить наращиваемый поиск & \kbd{RET} \\ -отменить эффект ввода последнего символа & \kbd{DEL} \\ -прервать текущий поиск & \kbd{C-g} \\ -\end{tabular} - -Для повтора поиска в любом направлении используйте клавиши \kbd{C-s} или -\kbd{C-r}. Если Emacs все еще производит поиск, \kbd{C-g} отменит только -не выполненную часть. - -\section{Перемещение} - -\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} -{\bf единицы перемещения} & {\bf назад} & {\bf вперед} \\ -символ & \kbd{C-b} & \kbd{C-f} \\ -слово & \kbd{M-b} & \kbd{M-f} \\ -строка & \kbd{C-p} & \kbd{C-n} \\ -начало (или конец) строки & \kbd{C-a} & \kbd{C-e} \\ -предложение & \kbd{M-a} & \kbd{M-e} \\ -абзац & \kbd{M-\{} & \kbd{M-\}} \\ -страница & \kbd{C-x [} & \kbd{C-x ]} \\ -выражение (sexp) & \kbd{C-M-b} & \kbd{C-M-f} \\ -функция & \kbd{C-M-a} & \kbd{C-M-e} \\ -переход в начало (или конец) буфера & \kbd{M-<} & \kbd{M->} \\ - -\end{tabular} - -\begin{tabular}{p{\ColWidth}l} -прокрутка экрана вниз & \kbd{C-v} \\ -прокрутка экрана вверх & \kbd{M-v} \\ -прокрутка влево & \kbd{C-x <} \\ -прокрутка вправо & \kbd{C-x >} \\ -установка текущей строки в центр экрана & \kbd{C-u C-l} \\ -\end{tabular} - -\section{Уничтожение и удаление} - -\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} -{\bf уничтожаемый объект} & {\bf назад} & {\bf вперед} \\ -символ (удаление, а не уничтожение) & \kbd{DEL} & \kbd{C-d} \\ -слово & \kbd{M-DEL} & \kbd{M-d} \\ -строка (до конца строки) & \kbd{M-0 C-k} & \kbd{C-k} \\ -предложение & \kbd{C-x DEL} & \kbd{M-k} \\ -выражение & \kbd{M-- C-M-k} & \kbd{C-M-k} \\ -\end{tabular} - - -\begin{tabular}{p{\ColWidth}l} -уничтожить {\bf область} & \kbd{C-w} \\ -скопировать область в список уничтожений & \kbd{M-w} \\ -уничтожить до следующего вхождения символа {\it char} & \kbd{M-z {\it char}} \\ - -вставить последний уничтоженный объект & \kbd{C-y} \\ -заменить только что восстановленный текст предшествующим уничтоженным текстом & M-y \\ -\end{tabular} - -\section{Пометка} - -\begin{tabular}{p{\ColWidth}l} -установить пометки & \kbd{C-@ {\rm или} C-SPC} \\ -поменять местами курсор и пометку & \kbd{C-x C-x} \\ - -пометить {\it arg\/} {\bf слов} & \kbd{M-@} \\ -пометить {\bf параграф} & \kbd{M-h} \\ -пометить {\bf страницу} & \kbd{C-x C-p} \\ -пометить {\bf выражение} & \kbd{C-M-@} \\ -пометить {\bf функцию} & \kbd{C-M-h} \\ -пометить весь {\bf буфер} & \kbd{C-x h} \\ -\end{tabular} - -\section{Замена с запросом} - -\begin{tabular}{p{\ColWidth}l} -интерактивная замена текстовой строки & \kbd{M-\%} \\ -с использованием регулярных выражений & \kbd{M-x query-replace-regexp} \\ -\end{tabular} - -В режиме интерактивной замены пользователю доступны следующие команды: - -\begin{tabular}{p{\ColWidth}l} -{\bf заменить} данное соответствие, перейти к следующему & \kbd{SPC} \\ -заменить это соответствие, не перемещаться & \kbd{,} \\ -{\bf пропустить} соответствие без замены & \kbd{DEL} \\ -заменить все оставшиеся соответствия & \kbd{!} \\ -{\bf вернуться} к предыдущему соответствию & \kbd{\^} \\ -{\bf выйти} из режима ``замена с запросом'' & \kbd{RET} \\ -войти в режим рекурсивного редактирования (для выхода используется \kbd{C-M-c}) & \kbd{C-r} \\ -\end{tabular} - -\section{Использование нескольких окон} - -Команды, приведенные во втором столбце, применяются к другому -фрэйму (окну используемой оконной системы). - -\begin{tabular}{p{\ColWidth}l} -удалить все остальные окна & \kbd{C-x 1} \\ -\end{tabular} - -\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} -разбить окно по горизонтали & \kbd{C-x 2\ \ \ \ } & \kbd{C-x 5 2} \\ -удалить данное окно & \kbd{C-x 0\ \ \ \ } & \kbd{C-x 5 0} \\ - -разбить окно по вертикали & \kbd{C-x 3} \\ - -выполнить прокрутку в другом окне & \kbd{C-M-v} \\ -\end{tabular} - -\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} -переместить курсор в другое окно & \kbd{C-x o} & \kbd{C-x 5 o} \\ - -выбрать буфер в другом окне & \kbd{C-x 4 b} & \kbd{C-x 5 b} \\ -показать буфер в другом окне & \kbd{C-x 4 C-o} & \kbd{C-x 5 C-o} \\ -загрузить файл в другое окно & \kbd{C-x 4 f} & \kbd{C-x 5 f} \\ -открыть файл в режиме чтения в другом окне & \kbd{C-x 4 r} & \kbd{C-x 5 r} \\ -запустить Dired в другом окне & \kbd{C-x 4 d} & \kbd{C-x 5 d} \\ -найти таг в другом окне & \kbd{C-x 4 .} & \kbd{C-x 5 .} \\ - -\end{tabular} - -\begin{tabular}{p{\ColWidth}l} -увеличить высоту окна & \kbd{C-x \^} \\ -сузить текущее окно & \kbd{C-x \{} \\ -расширить текущее окно & \kbd{C-x \}} \\ -\end{tabular} - -\section{Форматирование} - -\begin{tabular}{p{\ColWidth}l} -сделать отступ для текущей {\bf строки} (в зависимости от режима) & \kbd{TAB} \\ -сделать отступ для {\bf области} (в зависимости от режима) & \kbd{C-M-$\backslash$} \\ -сделать отступ для {\bf выражения} (в зависимости от режима) & \kbd{C-M-q} \\ -сделать отступ к заданной {\it arg\/} колонке & \kbd{C-x TAB} \\ - -вставить новую строку после курсора & \kbd{C-o} \\ -сдвинуть остаток строки вертикально вниз & \kbd{C-M-o} \\ -удалить пустые строки вокруг курсора & \kbd{C-x C-o} \\ -объединить строку с предыдущей (со следующими arg) & \kbd{M-\^} \\ -удалить пустое пространство вокруг курсора & \kbd{M-$\backslash$} \\ -поместить только один пробел в позиции курсора & \kbd{M-SPC} \\ - -отформатировать текущий параграф & \kbd{M-q} \\ -установить столбец заполнения & \kbd{C-x f} \\ -установить префикс заполнения каждой строки & \kbd{C-x .} \\ - -установить начертание (face) & \kbd{M-g} \\ -\end{tabular} - -\section{Изменение регистра} - -\begin{tabular}{p{\ColWidth}l} -сделать буквы слова заглавными & \kbd{M-u} \\ -сделать буквы слова строчными & \kbd{M-l} \\ -сделать первую букву слова заглавной & \kbd{M-c} \\ - -сделать буквы области заглавными & \kbd{C-x C-u} \\ -сделать буквы области строчными & \kbd{C-x C-l} \\ -\end{tabular} - -\section{Минибуфер} - -Следующие клавиши (ключи) определены в минибуфере. - -\begin{tabular}{p{\ColWidth}l} -дополнить насколько возможно & \kbd{TAB} \\ -дополнить до одного слова & \kbd{SPC} \\ -дополнить и выполнить & \kbd{RET} \\ -показать возможные дополнения & \kbd{?} \\ -выбрать предыдущую строку из истории ввода & \kbd{M-p} \\ -выбрать следующую строку из истории ввода & \kbd{M-n} \\ -поиск в истории по регулярному выражению в обратном напрвлении & \kbd{M-r} \\ -поиск в истории по регулярному выражению в прямом напрвлении & \kbd{M-s} \\ -прервать команду & \kbd{C-g} \\ -\end{tabular} - -Наберите \kbd{C-x ESC ESC} для редактирования и повторения последней -команды набранной в минибуфере. Наберите \kbd{F10}, чтобы работать с -пунктами меню при помощи команд минибуфера. - -\section{Буфера} - -\begin{tabular}{p{\ColWidth}l} -выбрать другой буфер & \kbd{C-x b} \\ -выдать список всех буферов & \kbd{C-x C-b} \\ -уничтожить буфер & \kbd{C-x k} \\ -\end{tabular} - -\section{Перестановка данных} - -\begin{tabular}{p{\ColWidth}l} -обменять местами {\bf символы} & \kbd{C-t} \\ -обменять местами {\bf слова} & \kbd{M-t} \\ -обменять местами {\bf строки} & \kbd{C-x C-t} \\ -обменять местами {\bf выражения} & \kbd{C-M-t} \\ -\end{tabular} - -\section{Проверка правописания} - -\begin{tabular}{p{\ColWidth}l} -проверить текущее слово & \kbd{M-\$} \\ -проверить все слова в области & \kbd{M-x ispell-region} \\ -выполнить проверку всего буфера & \kbd{M-x ispell-buffer} \\ -\end{tabular} - -\section{Теги} - -\begin{tabular}{p{\ColWidth}l} -найти определение тега & \kbd{M-.} \\ -найти следующее вхождение тега & \kbd{C-u M-.} \\ -использовать новый файл с тегами & \kbd{M-x visit-tags-table} \\ - -поиск по шаблону по всей таблице тегов & \kbd{M-x tags-search} \\ -выполнить query-replace над всеми файлами & \kbd{M-x tags-query-replace} \\ -продолжить поиск или поиск-замену тега & \kbd{M-,} \\ -\end{tabular} - -\section{Командные процессоры} - -\begin{tabular}{p{\ColWidth}l} -Выполнить команду командного процессора & \kbd{M-!} \\ -выполнить команду командного процессора над областью & \kbd{M-|} \\ -пропустить содержимое области через команду командного процессора & \kbd{C-u M-|} \\ -запустить командный процессор в окне \kbd{*shell*} & \kbd{M-x shell} \\ -\end{tabular} - -\section{Прямоугольные области} - -\begin{tabular}{p{\ColWidth}l} -скопировать прямоугольную область в регистр & \kbd{C-x r r} \\ -удалить прямоугольную область & \kbd{C-x r k} \\ -вставить последную уничтоженную прямоугольную область & \kbd{C-x r y} \\ -открыть прямоугольную область, сдвигая текст вправо & \kbd{C-x r o} \\ -очистить прямоугольную область & \kbd{C-x r c} \\ -предварить каждую строку строкой текста & \kbd{C-x r t} \\ -\end{tabular} - -\section{Сокращения} - -\begin{tabular}{p{\ColWidth}l} -добавить глобальное сокращение & \kbd{C-x a g} \\ -добавить локальное для режима сокращение & \kbd{C-x a l} \\ -добавить глобальное значение для данного сокращения & \kbd{C-x a i g} \\ -добавить специфическое для режима значение данного сокращения & \kbd{C-x a i l} \\ -явно вставить значение для сокращения & \kbd{C-x a e} \\ - -динамически дополнить предыдущее слово & \kbd{M-/} \\ -\end{tabular} - -\section{Регулярные выражения} - -\begin{tabular}{p{\ColWidth}l} -любой одиночный символ (за исключением символа новой строки) & \kbd{. {\rm(dot)}} \\ -ноль или более повторений & \kbd{*} \\ -одно или более повторений & \kbd{+} \\ -ноль или одно повторение & \kbd{?} \\ -экранировать специальный символ {\it c\/} & \kbd{$\backslash${\it c}} \\ -выбор между альтернативами (``или'') & \kbd{$\backslash|$} \\ -группировка & \kbd{$\backslash$( {\rm$\ldots$} $\backslash$)} \\ -текст в {\it n\/}-й группе & \kbd{$\backslash${\it n}} \\ -граница слова & \kbd{$\backslash$b} \\ -не граница слова & \kbd{$\backslash$B} \\ -\end{tabular} - -\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} -{\bf объект} & {\bf начало соответствия} & {\bf конец соответствия} \\ -строка & \kbd{\^} & \kbd{\$} \\ -слово & \kbd{$\backslash$<} & \kbd{$\backslash$>} \\ -буфер & \kbd{$\backslash$`} & \kbd{$\backslash$'} \\ -\end{tabular} - -\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} -{\bf класс символов} & {\bf соответ\-ствует им} & {\bf соответ\-ствует другим} \\ -явный набор & \kbd{[ {\rm$\ldots$} ]} & \kbd{[\^ {\rm$\ldots$} ]} \\ -символ-буква & \kbd{$\backslash$w} & \kbd{$\backslash$W} \\ -символ с синтаксисом {\it c} & \kbd{$\backslash$s{\it c}} & \kbd{$\backslash$S{\it c}} \\ -\end{tabular} - -\section{Международные наборы символов} - -\begin{tabular}{p{\ColWidth}l} -выбрать язык & \kbd{C-x RET l} \\ -показать все возможные методы ввода & \kbd{M-x list-input-methods} \\ -разрешить или запретить метод ввода & \kbd{C-$\backslash$} \\ -установить систему кодирования для следующей команды & \kbd{C-x RET c} \\ -показать список всех систем кодирования & \kbd{M-x list-coding-systems} \\ -выбрать предпочтительную систему кодирования & \kbd{M-x prefer-coding-system} \\ -\end{tabular} - -\section{Информация (система Info)} - -\begin{tabular}{p{\ColWidth}l} -запустить систему доступа к документации & \kbd{C-h i} \\ -найти указанную функцию или переменную в документации & \kbd{C-h S} \\ -\end{tabular} - -Перемещение внутри узла (нодами): - -\begin{tabular}{p{\ColWidth}l} -прокрутка вперед & \kbd{SPC} \\ -прокрутка назад & \kbd{DEL} \\ -перейти к началу узла & \kbd{. {\rm (dot)}} \\ -\end{tabular} - -Перемещение между узлами: - -\begin{tabular}{p{\ColWidth}l} -{\bf следующий} узел & \kbd{n} \\ -{\bf предыдущий} узел & \kbd{p} \\ -перейти к {\bf верхнему} узлу & \kbd{u} \\ -выбрать пункт меню по имени & \kbd{m} \\ -выбрать {\it n\/}-й пункт меню по номеру (1--9) & \kbd{{\it n}} \\ -перейти по ссылке (возврат с помощью \kbd{l}) & \kbd{f} \\ -возвратится к последнему просмотренному узлу & \kbd{l} \\ -возвратится к узлу-каталогу & \kbd{d} \\ -Перейти к верхему узлу файла & \kbd{t} \\ -перейти к узлу, заданному именем & \kbd{g} \\ -\end{tabular} - -Другие команды: - -\begin{tabular}{p{\ColWidth}l} -запустить {\bf учебник} по системе документации & \kbd{h} \\ -поиск темы в индексе & \kbd{i} \\ -поиск в узлах с помощью регулярных выражений & \kbd{s} \\ -{\bf прекратить работу} с документацией & \kbd{q} \\ -\end{tabular} - -\section{Регистры} - -\begin{tabular}{p{\ColWidth}l} -сохранить область в регистре & \kbd{C-x r s} \\ -вставить содержимое регистра в буфер & \kbd{C-x r i} \\ - -сохранить положение курсора в регистре & \kbd{C-x r SPC} \\ -перейти к положению курсора, сохраненному в регистре & \kbd{C-x r j} \\ -\end{tabular} - -\section{Клавиатурные макросы} - -\begin{tabular}{p{\ColWidth}l} -{\bf начать} определение клавиатурного макроса & \kbd{C-x (} \\ -{\bf закончить} определение клавиатурного макроса & \kbd{C-x )} \\ -{\bf выполнить} последний определенный макрос & \kbd{C-x e} \\ -дополнить последний определенный макрос & \kbd{C-u C-x (} \\ -задать имя для последнего определенного макроса & \kbd{M-x name-last-kbd-macro} \\ -вставить в буфер определение макроса на языке Lisp & \kbd{M-x insert-kbd-macro} \\ -\end{tabular} - -\section{Команды, связанные с Emacs Lisp} - -\begin{tabular}{p{\ColWidth}l} -вычислить {\bf выражение} перед курсором & \kbd{C-x C-e} \\ -вычислить текущую функцию {\bf defun} & \kbd{C-M-x} \\ -вычислить {\bf область} как выражение & \kbd{M-x eval-region} \\ -считать и вычислить выражение из минибуфера & \kbd{M-:} \\ -загрузить из стандартного системного каталога & \kbd{M-x load-library} \\ -\end{tabular} - -\section{Простая настройка} - -\begin{tabular}{p{\ColWidth}l} -настроить переменные и оформление (faces) & \kbd{M-x customize} \\ -\end{tabular} - -% The intended audience here is the person who wants to make simple -% customizations and knows Lisp syntax. - -Создание глобальных привязок клавиш (ключей) на Emacs Lisp (примеры): - -\begin{verbatim} -(global-set-key "\C-cg" 'goto-line) -(global-set-key "\M-#" 'query-replace-regexp) -\end{verbatim} - -\section{Написание команд} - -\begin{verbatim} -(defun <command-name> (<args>) - "<documentation>" (interactive "<template>") - <body>) -\end{verbatim} - -Пример: - -\begin{verbatim} -(defun this-line-to-top-of-window (line) - "Reposition line point is on to top of window. -With ARG, put point on line ARG." - (interactive "P") - (recenter (if (null line) - 0 - (prefix-numeric-value line)))) -\end{verbatim} - -Спецификация \kbd{interactive} сообщает о том, что аргумент надо считывать -интерактивно. Для дополнительной информации наберите \kbd{C-h f interactive}. - -\copyrightnotice - -%\end{multicols} - -\end{document} - -% Local variables: -% compile-command: "latex ru-refcard" -% coding: cyrillic-koi8 -% End: - -% arch-tag: 868a12f6-4339-4a14-a56e-4a3937277a9e