rea/website/locales/uk/messages.po

13447 lines
570 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#
msgid ""
msgstr ""
"Project-Id-Version: REA website\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Initial-Translation: Machine-assisted baseline; see website/locales/README.md for review workflow\n"
#: website/public/blog/index.html:99
msgctxt "page:blog/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/blog/index.html:181
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "{ph0}Home{ph1} / Blog"
msgstr "{ph0}Головний{ph1} сторінка / Блог"
#: website/public/blog/index.html:182
msgctxt "page:blog/index.html"
msgid "Blog."
msgstr "Блог."
#: website/public/blog/index.html:183
msgctxt "page:blog/index.html"
msgid "Thoughts on reverse engineering."
msgstr "Думки про реверс-інжиніринг."
#. {ph0}: <br />
#: website/public/blog/index.html:187
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "Game reconstruction{ph0}Essay"
msgstr "Реконструкція гри{ph0}Вигадування"
#: website/public/blog/index.html:189
msgctxt "page:blog/index.html"
msgid "The industrial revolution in reverse engineering"
msgstr "Промислова революція в області реверс-інжинірингу"
#: website/public/blog/index.html:190
msgctxt "page:blog/index.html"
msgid ""
"What manual RE and reconstructing TH08, TH095 and TH04 taught me about "
"agents, verification and knowledge that compounds across projects."
msgstr ""
"Чому мене навчив посібник з оновлення та реконструкції TH08, TH095 та TH04 "
"про агентів, перевірку та знання, які використовуються в різних проектах."
#: website/public/blog/index.html:195
msgctxt "page:blog/index.html"
msgid "Read the article"
msgstr "Прочитайте статтю"
#: website/public/blog/index.html:198
msgctxt "page:blog/index.html"
msgid "By N0zoM1z0 · 10 October 2026"
msgstr "Автор: N0zoM1z0 · 10 жовтня 2026"
#. {ph0}: <span aria-hidden="true">
#. {ph1}: </span>
#: website/public/blog/index.html:217
#: website/public/blog/touhou-reconstruction/index.html:1067
#: website/public/examples/dino-lab/index.html:462
#: website/public/faq/index.html:560
#: website/public/first-investigation/index.html:510
#: website/public/get-started/index.html:869
#: website/public/guides/browser/index.html:485
#: website/public/guides/index.html:269
#: website/public/guides/javascript/index.html:490
#: website/public/guides/native/index.html:496 website/public/index.html:1173
#: website/public/showcase/aegis/index.html:795
#: website/public/showcase/ctf/index.html:764
#: website/public/showcase/dx-ball/index.html:772
#: website/public/showcase/index.html:304
#: website/public/showcase/notion/index.html:618
#: website/public/showcase/th04/index.html:787
#, python-brace-format
msgctxt "shared"
msgid "{ph0}↑{ph1} Top"
msgstr "{ph0}↑{ph1} Топ"
#: website/public/blog/index.html:6
msgctxt "page:blog/index.html"
msgid "REA Blog — Thoughts on Reverse Engineering"
msgstr "Блог REA - думки про реверс-інжиніринг"
#: website/public/blog/index.html:7
msgctxt "page:blog/index.html"
msgid ""
"Thoughts on reverse engineering, drawing on practical experience with REA "
"and AI agents."
msgstr ""
"Роздуми про реверс-інжиніринг, засновані на практичному досвіді роботи з REA"
" і агентами штучного інтелекту."
#: website/public/blog/index.html:75 website/public/blog/index.html:88
#: website/public/blog/touhou-reconstruction/index.html:75
#: website/public/blog/touhou-reconstruction/index.html:88
#: website/public/examples/dino-lab/index.html:75
#: website/public/examples/dino-lab/index.html:88
#: website/public/faq/index.html:75 website/public/faq/index.html:88
#: website/public/first-investigation/index.html:75
#: website/public/first-investigation/index.html:88
#: website/public/get-started/index.html:75
#: website/public/get-started/index.html:88
#: website/public/guides/browser/index.html:75
#: website/public/guides/browser/index.html:88
#: website/public/guides/index.html:75 website/public/guides/index.html:88
#: website/public/guides/javascript/index.html:75
#: website/public/guides/javascript/index.html:88
#: website/public/guides/native/index.html:75
#: website/public/guides/native/index.html:88 website/public/index.html:75
#: website/public/index.html:88 website/public/showcase/aegis/index.html:75
#: website/public/showcase/aegis/index.html:88
#: website/public/showcase/ctf/index.html:75
#: website/public/showcase/ctf/index.html:88
#: website/public/showcase/dx-ball/index.html:75
#: website/public/showcase/dx-ball/index.html:88
#: website/public/showcase/index.html:75 website/public/showcase/index.html:88
#: website/public/showcase/notion/index.html:75
#: website/public/showcase/notion/index.html:88
#: website/public/showcase/th04/index.html:75
#: website/public/showcase/th04/index.html:88
msgctxt "shared"
msgid ""
"REA — Find out how software works. Reverse engineering with your coding "
"agent."
msgstr ""
"REA-Дізнайтеся, як працює програмне забезпечення. Зворотне проектування за "
"допомогою вашого програміста."
#: website/public/blog/index.html:104
#: website/public/blog/touhou-reconstruction/index.html:104
#: website/public/examples/dino-lab/index.html:105
#: website/public/faq/index.html:104
#: website/public/first-investigation/index.html:104
#: website/public/get-started/index.html:104
#: website/public/guides/browser/index.html:104
#: website/public/guides/index.html:104
#: website/public/guides/javascript/index.html:104
#: website/public/guides/native/index.html:104 website/public/index.html:106
#: website/public/showcase/aegis/index.html:105
#: website/public/showcase/ctf/index.html:104
#: website/public/showcase/dx-ball/index.html:104
#: website/public/showcase/index.html:104
#: website/public/showcase/notion/index.html:104
#: website/public/showcase/th04/index.html:104
msgctxt "shared"
msgid "REA home"
msgstr "Головна REA"
#: website/public/blog/index.html:108
#: website/public/blog/touhou-reconstruction/index.html:108
#: website/public/examples/dino-lab/index.html:109
#: website/public/faq/index.html:108
#: website/public/first-investigation/index.html:108
#: website/public/get-started/index.html:108
#: website/public/guides/browser/index.html:108
#: website/public/guides/index.html:108
#: website/public/guides/javascript/index.html:108
#: website/public/guides/native/index.html:108 website/public/index.html:110
#: website/public/showcase/aegis/index.html:109
#: website/public/showcase/ctf/index.html:108
#: website/public/showcase/dx-ball/index.html:108
#: website/public/showcase/index.html:108
#: website/public/showcase/notion/index.html:108
#: website/public/showcase/th04/index.html:108
msgctxt "shared"
msgid "Main navigation"
msgstr "Основна навігація"
#: website/public/blog/index.html:117
#: website/public/blog/touhou-reconstruction/index.html:117
#: website/public/examples/dino-lab/index.html:118
#: website/public/faq/index.html:117
#: website/public/first-investigation/index.html:117
#: website/public/get-started/index.html:117
#: website/public/guides/browser/index.html:117
#: website/public/guides/index.html:117
#: website/public/guides/javascript/index.html:117
#: website/public/guides/native/index.html:117 website/public/index.html:119
#: website/public/showcase/aegis/index.html:118
#: website/public/showcase/ctf/index.html:117
#: website/public/showcase/dx-ball/index.html:117
#: website/public/showcase/index.html:117
#: website/public/showcase/notion/index.html:117
#: website/public/showcase/th04/index.html:117
msgctxt "shared"
msgid "REA on GitHub"
msgstr "REA на GitHub"
#: website/public/blog/index.html:137
#: website/public/blog/touhou-reconstruction/index.html:137
#: website/public/examples/dino-lab/index.html:138
#: website/public/faq/index.html:137
#: website/public/first-investigation/index.html:137
#: website/public/get-started/index.html:137
#: website/public/guides/browser/index.html:137
#: website/public/guides/index.html:137
#: website/public/guides/javascript/index.html:137
#: website/public/guides/native/index.html:137 website/public/index.html:139
#: website/public/showcase/aegis/index.html:138
#: website/public/showcase/ctf/index.html:137
#: website/public/showcase/dx-ball/index.html:137
#: website/public/showcase/index.html:137
#: website/public/showcase/notion/index.html:137
#: website/public/showcase/th04/index.html:137
msgctxt "shared"
msgid "Join REA on Discord"
msgstr "Приєднатися до REA в Discord"
#: website/public/blog/index.html:156
#: website/public/blog/touhou-reconstruction/index.html:156
#: website/public/examples/dino-lab/index.html:157
#: website/public/faq/index.html:156
#: website/public/first-investigation/index.html:156
#: website/public/get-started/index.html:156
#: website/public/guides/browser/index.html:156
#: website/public/guides/index.html:156
#: website/public/guides/javascript/index.html:156
#: website/public/guides/native/index.html:156 website/public/index.html:158
#: website/public/showcase/aegis/index.html:157
#: website/public/showcase/ctf/index.html:156
#: website/public/showcase/dx-ball/index.html:156
#: website/public/showcase/index.html:156
#: website/public/showcase/notion/index.html:156
#: website/public/showcase/th04/index.html:156
msgctxt "shared"
msgid "Follow REA on X"
msgstr "Стежити за REA в X"
#: website/public/blog/index.html:217
msgctxt "page:blog/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/blog/touhou-reconstruction/index.html:99
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:181
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Home{ph1} / {ph2}Blog{ph3} / Touhou reconstruction"
msgstr "{ph0}Головний{ph1} сторінка / {ph2}Блог{ph3} / Реконструкція Тохоу"
#: website/public/blog/touhou-reconstruction/index.html:185
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Essay · Touhou reconstruction"
msgstr "Есе · Реконструкція Тохоу"
#: website/public/blog/touhou-reconstruction/index.html:186
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The industrial revolution in reverse engineering."
msgstr "Промислова революція в області реверс-інжинірингу."
#: website/public/blog/touhou-reconstruction/index.html:187
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "By N0zoM1z0 · 10 October 2026"
msgstr "Автор: N0zoM1z0 · 10 жовтня 2026"
#: website/public/blog/touhou-reconstruction/index.html:189
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Takeaway"
msgstr "Головне"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:191
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Give agents autonomy over the investigation.{ph1} Set a clear goal and "
"acceptance criteria, then let the agent decide what to try next."
msgstr ""
"{ph0}Надайте агентам самостійність у проведенні розслідування.{ph1} "
"Встановіть чітку мету та критерії прийнятності, а потім дозвольте агенту "
"вирішити, що робити далі."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:196
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Use the repository and Git as working memory.{ph1} Keep the reasoning "
"with the code. Git checkpoints let the next session continue after the "
"conversation ends."
msgstr ""
"{ph0}Використовуйте сховище та Git як робочу пам'ять.{ph1} Зберігайте логіку"
" в коді. Контрольні точки Git дозволяють продовжити наступний сеанс після "
"завершення діалогу."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:201
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Let evidence decide what you claim.{ph1} A confident explanation still "
"needs testing. “Unknown” is a valid answer when the evidence is incomplete."
msgstr ""
"{ph0}Дозвольте доказам вирішити, що ви стверджуєте.{ph1} Переконливе "
"пояснення все ще потребує перевірки. \"Невідомо\" - це правильна відповідь, "
"коли докази неповні."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:206
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Test the oracle too.{ph1} Try cases it should reject. If it misses a "
"bug, revisit the earlier results that depended on it."
msgstr ""
"{ph0}Перевірте також посилання для перевірки (oracle).{ph1} Спробуйте "
"варіанти, які він повинен відхилити. Якщо помилка не виявлена, перегляньте "
"попередні результати, які залежали від неї."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:211
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}We are in the early days of RE's industrial revolution.{ph1} The "
"methods are still taking shape. There is plenty left to explore."
msgstr ""
"{ph0}Ми знаходимося на зорі промислової революції в RE.{ph1} Методи все ще "
"розробляються. Нам ще багато чого належить вивчити."
#: website/public/blog/touhou-reconstruction/index.html:223
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "How experience compounds"
msgstr "Як досвід з'єднує"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:224
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Human direction{ph1} · Goal and acceptance criteria"
msgstr "{ph0}Управління{ph1} персоналом * мета і критерії прийнятності"
#: website/public/blog/touhou-reconstruction/index.html:312
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Autonomy"
msgstr "Самостійність"
#: website/public/blog/touhou-reconstruction/index.html:313
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Agent"
msgstr "Агент"
#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:314
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Choose an experiment.{ph0}Propose a hypothesis."
msgstr "Виберіть експеримент.{ph0}Висуньте гіпотезу."
#: website/public/blog/touhou-reconstruction/index.html:317
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Verification"
msgstr "Перевірка"
#: website/public/blog/touhou-reconstruction/index.html:318
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Oracle"
msgstr "Еталон перевірки"
#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:319
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Test against a{ph0}concrete reference."
msgstr "Тестування на{ph0}конкретні посилання."
#: website/public/blog/touhou-reconstruction/index.html:322
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Repository"
msgstr "Репозиторій"
#: website/public/blog/touhou-reconstruction/index.html:323
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Working memory"
msgstr "Робоча пам’ять"
#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:324
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Code, evidence,{ph0}checks and lessons."
msgstr "Кодекс, докази,{ph0}перевірки та уроки."
#. {ph0}: <br />
#. {ph1}: <strong>
#. {ph2}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:326
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Mismatch{ph0}{ph1}Revise the hypothesis{ph2}"
msgstr "Невідповідність{ph0}{ph1}Перегляньте гіпотезу{ph2}"
#. {ph0}: <br />
#. {ph1}: <strong>
#. {ph2}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:329
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "A better{ph0}{ph1}starting point{ph2}"
msgstr "Краще{ph0}{ph1}вихідна точка{ph2}"
#: website/public/blog/touhou-reconstruction/index.html:332
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Reuse"
msgstr "Повторне використання"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:333
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Pass{ph1} · Keep the result and its evidence"
msgstr "{ph0}Минути{ph1} * Зберегти результат і його докази"
#: website/public/blog/touhou-reconstruction/index.html:345
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Each project leaves the next with a better starting point. That includes "
"fixing the checks when we discover a gap."
msgstr ""
"Кожен наступний проект стає найкращою відправною точкою. Це включає "
"виправлення перевірок, коли ми виявляємо прогалини."
#: website/public/blog/touhou-reconstruction/index.html:352
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "In this article"
msgstr "У цій статті"
#. {ph0}: <a href="#august">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:354
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}August 2026{ph1}"
msgstr "{ph0}Серпень 2026 року{ph1}"
#. {ph0}: <a href="#th08">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:355
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH08: the continuation{ph1}"
msgstr "{ph0} TH08: продовження{ph1}"
#. {ph0}: <a href="#different-approaches">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:356
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Two approaches{ph1}"
msgstr "{ph0}Два підходи{ph1}"
#. {ph0}: <a href="#th095">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:357
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH095: compounding{ph1}"
msgstr "{ph0} TH095: рецептура{ph1}"
#. {ph0}: <a href="#th04">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:358
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH04: across architectures{ph1}"
msgstr "{ph0} TH04: різні архітектури{ph1}"
#. {ph0}: <a href="#semantic-reconstruction">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:359
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}From exact to readable{ph1}"
msgstr "{ph0}Від точного до читабельного{ph1}"
#. {ph0}: <a href="#industrial-shift">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:362
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}The industrial shift{ph1}"
msgstr "{ph0}Промисловий зсув{ph1}"
#. {ph0}: <a href="#possibilities">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:363
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}What becomes possible{ph1}"
msgstr "{ph0}Що стає можливим{ph1}"
#: website/public/blog/touhou-reconstruction/index.html:368
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "What changed in August 2026"
msgstr "Що змінилося в серпні 2026 року"
#: website/public/blog/touhou-reconstruction/index.html:369
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Before this work, I had done a lot of manual reverse engineering. I would "
"inspect a function until I had an explanation, then test that explanation "
"against the program. Getting further meant spending more of my own time on "
"the next function. It also meant keeping an increasingly large picture in my"
" head."
msgstr ""
"До цієї роботи я багато займався зворотним проектуванням вручну. Я перевіряв"
" функцію, поки не знайшов пояснення, а потім перевірив це пояснення в "
"програмі. Просуваючись далі, я витрачав більше свого часу на наступну "
"функцію. Це також означало, що я тримав у голові все більш об'ємну картину."
#: website/public/blog/touhou-reconstruction/index.html:376
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Most of my RE work is on games. I reconstruct them so their behavior can be "
"understood and eventually carried into a port or a mod. That is the "
"experience behind this article. The method can be useful elsewhere, but each"
" field needs to establish what it can check against a reliable reference."
msgstr ""
"Велика частина моєї роботи пов'язана з іграми. Я реконструюю їх, щоб я міг "
"зрозуміти їх поведінку і врешті-решт перенести на програмний порт або мод. "
"Саме цей досвід лежить в основі цієї статті. Цей метод може бути корисним в "
"інших областях, але в кожній області потрібно встановити, що можна "
"перевірити за допомогою надійних посилань."
#: website/public/blog/touhou-reconstruction/index.html:383
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In August 2026, I started exploring agent-driven RE seriously. I wanted to "
"see how far an agent could get with access to the program and ordinary "
"development tools. Touhou reconstruction gave me a substantial project in "
"which to find out."
msgstr ""
"У серпні 2026 року я почав серйозно вивчати re, керований агентами. Я хотів "
"побачити, як далеко може зайти агент, маючи доступ до програми та звичайних "
"інструментів розробки. Touhou reconstruction дав мені значний проект, де я "
"міг це зрозуміти."
#: website/public/blog/touhou-reconstruction/index.html:389
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The early progress was startling. An investigation could keep moving without"
" me choosing every individual step. A failed comparison might send the agent"
" to another caller. It could write a small diagnostic and use the result to "
"decide what to try next. Giving it that freedom made a difference: I could "
"spend more attention on the project's direction and on whether its checks "
"were trustworthy."
msgstr ""
"Перші результати були вражаючими. Розслідування могло б тривати без моєї "
"участі у виборі кожного окремого кроку. Невдале порівняння могло б "
"відправити агента до іншого абонента. Можна було б написати невелику "
"діагностику і використати результат, щоб вирішити, що робити далі. Надання "
"цієї свободи змінило ситуацію на краще: я зміг приділяти більше уваги "
"напрямку проекту і тому, чи заслуговують довіри його перевірки."
#: website/public/blog/touhou-reconstruction/index.html:398
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The pace got my attention first. Then I began wondering what would survive "
"beyond the current project. Would the next game benefit from everything we "
"had just learned?"
msgstr ""
"В першу чергу мою увагу привернув темп. Потім я почав замислюватися над тим,"
" що залишиться після поточного проекту. Чи буде в наступній грі корисно все,"
" що ми тільки що дізналися?"
#: website/public/blog/touhou-reconstruction/index.html:405
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH08: building on human work"
msgstr "TH08: опора на людську працю"
#. {ph0}: <a href="https://github.com/N0zoM1z0/th08">
#. {ph1}: </a>
#. {ph2}: <a href="https://github.com/GensokyoClub/th08" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:406
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08{ph1}, Imperishable Night, began as a continuation of "
"{ph2}GensokyoClub's reconstruction{ph3}. Their public source gave me a "
"substantial foundation. It came with knowledge of the build and a history of"
" contributions that I preserved in the continuation."
msgstr ""
"{ph0} TH08{ph1} , \"Вічна ніч\", починався як продовження "
"{ph2}реконструкція{ph3} GensokyoClub. Їх відкрите джерело дало мені значну "
"основу. Це прийшло разом із знанням конструкції та історією внеску, яку я "
"зберіг у продовженні."
#: website/public/blog/touhou-reconstruction/index.html:415
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The imported history ends at the public 10 August checkpoint. My independent"
" continuation began on 13 August. By 19 August, the ledger recorded source "
"for all 1,107 identified game functions."
msgstr ""
"Імпортована історія закінчується на загальнодоступній контрольній точці 10 "
"серпня. Моє самостійне продовження почалося 13 серпня. До 19 серпня в "
"журналі були зареєстровані вихідні дані для всіх 1107 ідентифікованих "
"ігрових функцій."
#: website/public/blog/touhou-reconstruction/index.html:420
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A playable Linux reconstruction port was committed on 24 August, roughly "
"eleven days after the continuation began. A Web edition followed. The native"
" Linux 64-bit release arrived on 30 August."
msgstr ""
"Відтворюваний порт реконструкції Linux був випущений 24 серпня, приблизно "
"через одинадцять днів після початку роботи над продовженням. Потім була "
"випущена веб-версія. 64-розрядна версія Linux для власної версії вийшла 30 "
"Серпня."
#: website/public/blog/touhou-reconstruction/index.html:425
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"What struck me was that the work had reached a program people could run. "
"Getting there required following problems beyond an individual function. "
"Even when two functions looked correct in isolation, they could accidentally"
" use separate copies of state that should have been shared."
msgstr ""
"Мене вразило те, що в результаті роботи була створена програма, яку могли "
"запускати люди. Щоб досягти цього, потрібно було вирішити проблеми, що "
"виходять за рамки окремої функції. Навіть якщо дві функції виглядали "
"коректно окремо, вони могли випадково використовувати окремі копії state, "
"які повинні були бути спільними."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:432
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This made reference checks central to the work. I call them "
"{ph0}oracles{ph1}. A code comparison can tell us whether a reconstructed "
"function reproduces the original instructions. A runtime check can tell us "
"whether an exercised route reaches the expected state. The agent proposes an"
" explanation and tests it; a mismatch gives it something specific to "
"investigate."
msgstr ""
"Це зробило перевірку посилань центральною в роботі. Я називаю їх "
"{ph0}перевірочними посиланнями (оракулами){ph1}. Порівняння коду може "
"сказати нам, чи відновлена функція відтворює оригінальні інструкції. "
"Перевірка під час виконання може сказати нам, чи реалізований маршрут "
"досягає очікуваного стану. Агент пропонує пояснення та перевіряє його; "
"невідповідність дає йому можливість дослідити щось конкретне."
#: website/public/blog/touhou-reconstruction/index.html:440
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "An exact match with the wrong constant"
msgstr "Точний збіг з неправильною константою"
#: website/public/blog/touhou-reconstruction/index.html:441
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"An oracle is software someone wrote. TH08 gave me a clear reminder of how "
"much can depend on that software."
msgstr ""
"Посилання для перевірки (oracle)-це програмне забезпечення, яке хтось "
"написав. TH08 дав мені чітке нагадування про те, наскільки це програмне "
"забезпечення може залежати."
#. {ph0}: <code>0.0</code>
#. {ph1}: <code>128.0</code>
#: website/public/blog/touhou-reconstruction/index.html:445
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In September, a bug reported by a downstream Switch port led back to item "
"auto-collection. The reconstructed source checked player power against "
"{ph0}. The original used {ph1}, the maximum-power threshold."
msgstr ""
"У вересні помилка, про яку повідомив порт комутатора, знову призвела до "
"автоматичного збору предметів. У відновленому джерелі потужність програвача "
"була перевірена на рівні {ph0}. В оригіналі використовувалося значення {ph1}"
" - поріг максимальної потужності."
#: website/public/blog/touhou-reconstruction/index.html:451
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Normal power is non-negative, so the reconstructed power check was "
"effectively always satisfied. Above the collection line, the game could "
"attract items without requiring maximum power. The other exceptions in the "
"condition were correct. This one constant changed the behavior."
msgstr ""
"Нормальна потужність невід'ємна, тому перевірка відновленої потужності "
"фактично завжди виконувалася. Вище лінії збору гра могла залучати предмети, "
"не вимагаючи максимальної потужності. Інші винятки з умови були вірними. Ця "
"константа змінила поведінку."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:458
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Yet the function had already passed the exact comparison.{ph1}"
msgstr "{ph0}Однак функція вже пройшла точне порівняння.{ph1}"
#: website/public/blog/touhou-reconstruction/index.html:464
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A rebuild can put a constant at a different address. The comparison tool "
"accounted for that by adjusting addresses in the compiled instructions "
"before comparing them with the original. But it never checked the floating-"
"point value stored at the referenced address."
msgstr ""
"При перестроюванні константа може бути поміщена за іншою адресою. Інструмент"
" порівняння враховував це, коригуючи адреси в складених інструкціях, перш "
"ніж порівнювати їх з оригінальними. Але він ніколи не перевіряв значення з "
"плаваючою комою, збережене за вказаною адресою."
#. {ph0}: <code>128.0</code>
#. {ph1}: <code>0.0</code>
#: website/public/blog/touhou-reconstruction/index.html:471
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That left a hole in the check. It could point the reconstructed instruction "
"at the original's {ph0} while the source still said {ph1}. The instruction "
"bytes matched. The source meant something different."
msgstr ""
"Це залишило прогалину в перевірці. Це може призвести до того, що відновлена "
"команда вказує на початкове значення {ph0}, тоді як джерело все ще вказувало"
" {ph1}. Байти інструкції збіглися. Джерело мав на увазі щось інше."
#. {ph0}: <a href="https://github.com/N0zoM1z0/th08/pull/11" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/th08/pull/13">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:477
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The {ph0}2 September fix{ph1} corrected the source and made the comparison "
"check the referenced constant's actual bytes. A {ph2}wider audit{ph3} then "
"examined 1,548 floating-literal references. It found another twelve "
"incorrect references across five accepted functions."
msgstr ""
"Виправлення, випущене {ph0}2 вересня, виправило{ph1} вихідний код і змусило "
"при порівнянні перевіряти фактичні байти константи, на яку посилається "
"посилання. Потім було проведено більше {ph2}широкий аудит{ph3}, в ході якого"
" було проаналізовано 1548 посилань на константи з плаваючою комою. Було "
"виявлено ще дванадцять неправильних посилань у п'яти прийнятих функціях."
#: website/public/blog/touhou-reconstruction/index.html:488
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The comparison now checks every such floating literal. Its tests include "
"deliberately wrong values to make sure they are rejected. We also had to "
"revisit results that had passed the weaker check."
msgstr ""
"При порівнянні тепер перевіряється кожна така константа з плаваючою комою. "
"Тести використовують відомі неправильні значення, щоб переконатися, що вони "
"відхилені. Нам також довелося переглянути результати, які пройшли більш "
"слабку перевірку."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:493
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}The oracle needed reconstructing too.{ph1} Repairing it was part of "
"repairing the game."
msgstr ""
"{ph0}Посилання для перевірки (oracle) також потребувало відновлення.{ph1} Її"
" виправлення було частиною оновлення гри."
#: website/public/blog/touhou-reconstruction/index.html:497
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That matters when the team is mostly one person working with agents. I "
"cannot personally inspect every line they produce, so much of my confidence "
"rests on their checks. A shared oracle's blind spot can affect many "
"investigations before I notice it. I have to understand what the checker "
"actually verifies and test it against cases that ought to fail."
msgstr ""
"Це важливо, коли команда складається в основному з однієї людини, яка працює"
" з агентами. Я не можу особисто перевіряти кожен рядок, який вони створюють,"
" тому багато в чому я довіряю їх перевіркам. \"Сліпа пляма\" в системі "
"загального контролю (oracle) може вплинути на багато розслідувань, перш ніж "
"я це помічу. Я повинен зрозуміти, що насправді перевіряє засіб перевірки, і "
"протестувати його на предмет випадків, які повинні завершитися невдачею."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:505
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"As the work continued, those checks became part of the repository. So did "
"the reasons for source changes and notes that let a later session pick up "
"where an earlier one stopped. {ph0}The repository was becoming the project's"
" working memory.{ph1}"
msgstr ""
"У міру продовження роботи ці перевірки ставали частиною репозиторію. Так "
"само і причини змін вихідного коду і примітки, які дозволяли більш пізнього "
"сеансу продовжити роботу з того місця, на якому зупинилася попередня сесія. "
"{ph0}Репозиторій вихідного коду ставав робочою пам'яттю проекту.{ph1}"
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:514
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}A successful batch gave us both recovered code and a better environment"
" for the next batch.{ph1}"
msgstr ""
"{ph0}Успішний запуск пакета дозволив нам відновити код та покращити "
"середовище для наступного пакета.{ph1}"
#: website/public/blog/touhou-reconstruction/index.html:522
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Two different ideas of reconstruction"
msgstr "Дві різні ідеї реконструкції"
#. {ph0}: <a
#. href="https://web.archive.org/web/20260909051514/https://github.com/GensokyoClub/th08#important-
#. notice" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:523
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"GensokyoClub's {ph0}public README{ph1} makes its disagreement with this kind"
" of work explicit. The notice announces that further development will happen"
" privately until completion. One passage reads:"
msgstr ""
"{ph0}Публічний сайт GensokyoClub явно висловлює{ph1} свою незгоду з такого "
"роду роботою. У повідомленні повідомляється, що подальша розробка буде "
"вестися в приватному порядку до завершення. В одному уривку сказано:"
#: website/public/blog/touhou-reconstruction/index.html:534
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The rise of grifters (AI decompilations and ports) in this space taking from"
" our work paints a bad image for future decompilation efforts…"
msgstr ""
"Зростання кількості шахраїв (декомпіляторів та портаторів штучного "
"інтелекту) у цій галузі на основі нашої роботи створює погану картину для "
"майбутніх зусиль з декомпіляції…"
#: website/public/blog/touhou-reconstruction/index.html:540
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The notice also describes the psychological toll on the maintainers. Their "
"contribution policy excludes pull requests produced primarily with AI. They "
"have put their free time into difficult work, and that work helped make my "
"continuation possible. I respect the effort behind it. The disagreement I "
"want to discuss is about how reconstruction should proceed and how a "
"contribution should be judged."
msgstr ""
"У повідомленні також описується психологічне навантаження на супроводжуючих."
" Їх політика щодо вкладів виключає запити на перенесення, зроблені в "
"основному за допомогою штучного інтелекту. Вони присвятили свій вільний час "
"складній роботі, і ця робота допомогла мені продовжувати працювати. Я "
"поважаю зусилля, які стоять за цим. Розбіжності, які я хочу обговорити, "
"стосуються того, як повинна проходити реконструкція і як слід оцінювати "
"внесок."
#: website/public/blog/touhou-reconstruction/index.html:549
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In the manual workflow I knew, developing an understanding of a function and"
" reconstructing it usually fell to the same person. A project relied heavily"
" on that person's expertise. Trust in the contributor mattered because so "
"much of the reasoning happened while they worked."
msgstr ""
"У звичному мені ручному робочому процесі розробка розуміння функції і її "
"реконструкція зазвичай покладалися на одного і того ж людини. Проект значною"
" мірою залежав від досвіду цієї людини. Довіра до розробника мала значення, "
"оскільки більша частина міркувань виникла під час його роботи."
#: website/public/blog/touhou-reconstruction/index.html:556
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Existing projects already preserve knowledge in their source and build "
"tools. What changed for me was that an agent could use that knowledge to "
"pursue the next investigation on its own."
msgstr ""
"Існуючі проекти вже зберігають знання у своїх оригінальних текстах та "
"інструментах для створення. Для мене змінилося те, що агент може "
"використовувати ці знання для проведення наступного розслідування "
"самостійно."
#: website/public/blog/touhou-reconstruction/index.html:561
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In my continuation, I decide the objective and the standard for accepting a "
"result. The agent has broad freedom to investigate. Its proposed "
"reconstruction then has to survive the relevant checks. I want another "
"person to be able to examine why we chose an implementation, even if an "
"agent did most of the work."
msgstr ""
"У своєму продовженні я визначаю мету і стандарт прийняття результату. Агент "
"має широку свободу у проведенні розслідування. Потім запропонована "
"реконструкція повинна пройти відповідні перевірки. Я хочу, щоб інша людина "
"могла проаналізувати, чому ми вибрали певну реалізацію, навіть якщо агент "
"зробив більшу частину роботи."
#: website/public/blog/touhou-reconstruction/index.html:568
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This can be a difficult transition. Years of careful work may become the "
"foundation for a continuation that moves much faster. That raises real "
"questions about credit. It also changes what maintainers need to know before"
" accepting a contribution."
msgstr ""
"Це може бути важким переходом. Роки ретельної роботи можуть стати основою "
"для подальшого розвитку, яке буде просуватися набагато швидше. У зв'язку з "
"цим виникають серйозні питання про кредитоспроможність. Це також змінює те, "
"що розробники повинні знати, перш ніж приймати внесок."
#: website/public/blog/touhou-reconstruction/index.html:574
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The industrial analogy helps me think about this. In a craft, much of the "
"process depends on the skill of the person carrying it out. Machinery "
"changes where that skill is needed. Someone still has to design the process "
"and recognize when its output is wrong. Different communities can choose how"
" much of that change they want to take on."
msgstr ""
"Аналогія з промисловістю допомагає мені задуматися над цим. У ремеслі більша"
" частина процесу залежить від майстерності людини, яка його виконує. "
"Обладнання змінюється там, де потрібна ця навичка. Хтось все одно повинен "
"розробляти процес і розпізнавати, коли його результати неправильні. Різні "
"спільноти можуть вибрати, яку частину цих змін вони хочуть взяти на себе."
#: website/public/blog/touhou-reconstruction/index.html:582
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"My choice is to continue openly, with the inherited work credited and its "
"history preserved. I want the new work to be reviewable. That gives us a way"
" to ask how far this approach can go and to learn from what goes wrong along"
" the way."
msgstr ""
"Мій вибір - продовжувати відкрито, враховуючи успадковану роботу та "
"зберігаючи її історію. Я хочу, щоб нова робота була доступна для "
"рецензування. Це дає нам можливість оцінити, наскільки далеко може пройти "
"цей підхід, і навчитися з того, що на цьому шляху йде не так."
#. {ph0}: <a
#. href="https://github.com/GensokyoClub/th08/blob/e874b98e210b3be1ed21c5e03d54b883eac5069c/README.md#important-
#. notice" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/GensokyoClub/th08/blob/f345c7dee07b849f2ff93a0029ab5ede126bf12c/CODE_OF_CONDUCT.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/d2a00f4acb4a13916e07a00bd13f714961714628/README.md#credits-
#. and-provenance" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:588
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Source: GensokyoClub's {ph0}README notice{ph1}, checked on 10 October 2026, "
"and its {ph2}contribution policy{ph3}. The quotation is a shortened excerpt."
" TH08's {ph4}credits and provenance{ph5} record the continuation boundary."
msgstr ""
"Джерело: {ph0}Повідомлення GensokyoClub на README{ph1}, перевірене 10 жовтня"
" 2026 року, і його {ph2}Політика щодо внесків{ph3}. Цитата є скороченою "
"витримкою. {ph4}Титри та Походження{ph5} TH08 вказують на межу продовження."
#: website/public/blog/touhou-reconstruction/index.html:606
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH095: experience starts compounding"
msgstr "TH095: досвід починає накопичуватися"
#. {ph0}: <a href="https://github.com/N0zoM1z0/th095">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:607
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH095{ph1}, Shoot the Bullet, made the value of that experience much "
"easier to see. Its repository began on 29 August with zero confirmed game "
"functions in the ledger. We still had to learn the game. But we already knew"
" much more about how to begin a reconstruction and how to keep it moving."
msgstr ""
"{ph0} TH095{ph1}, Shoot the Bullet, значно спростив сприйняття цього "
"досвіду. 29 серпня почалося його оновлення з нульовими підтвердженими "
"ігровими функціями в реєстрі. Ми все ще мали вивчити гру. Але ми вже знали "
"набагато більше про те, як розпочати реконструкцію та як підтримувати її в "
"робочому стані."
#: website/public/blog/touhou-reconstruction/index.html:615
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"By 7 September, all 697 identified game functions had source. By 8 "
"September, 696 had been accepted as exact comparisons. The whole program "
"linked on 9 September. The Windows i386 reconstruction was marked playable "
"on 10 September, about twelve days after initialization."
msgstr ""
"До 7 вересня всі 697 ідентифікованих ігрових функцій мали вихідний код. До 8"
" вересня 696 були прийняті як точні порівняння. 9 вересня вся програма була "
"підключена. Реконструкція Windows i386 була позначена як відтворювана 10 "
"вересня, приблизно через дванадцять днів після ініціалізації."
#: website/public/blog/touhou-reconstruction/index.html:622
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I found this more exciting than the first project's speed. A fresh target "
"could benefit from work done on another game. The experience was already "
"present in the tools and in the way the project was organized."
msgstr ""
"Я знайшов це більш захоплюючим, ніж швидкість першого проекту. Нова мета "
"могла б отримати вигоду від роботи над іншою грою. Досвід вже був присутній "
"в інструментах і в тому, як був організований проект."
#: website/public/blog/touhou-reconstruction/index.html:628
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"For example, TH08 had taught us to pay attention to the assembled program "
"early. If several recovered functions depend on the same state, their "
"isolated comparisons leave an important question open. We need to see them "
"working together. That lesson helped shape how we approached TH095's whole-"
"program build."
msgstr ""
"Наприклад, TH08 навчив нас звертати увагу на зібрану програму з самого "
"початку. Якщо кілька відновлених функцій залежать від одного стану, їх "
"ізольоване порівняння залишає відкритим важливе питання. Нам потрібно "
"побачити, як вони працюють разом. Цей урок допоміг нам сформулювати підхід "
"до побудови всієї програми TH095."
#: website/public/blog/touhou-reconstruction/index.html:635
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A lesson that stays in my head is useful while I am there. Once it becomes a"
" check that another session can run, it can keep helping after I have moved "
"on. The next agent can use the result without repeating the investigation "
"that led to it."
msgstr ""
"Урок, який залишається в моїй голові, корисний, поки я там. Як тільки він "
"стає перевіркою, що можна запустити інший сеанс, він може продовжувати "
"допомагати і після того, як я перейду далі. Наступний агент може використати"
" результат, не повторюючи розслідування, яке призвело до нього."
#: website/public/blog/touhou-reconstruction/index.html:641
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The floating-literal bug belongs in that memory too. It explains why "
"checking a reference also requires checking the data behind it. Keeping that"
" correction with the code helps later projects avoid inheriting the old "
"check's blind spot."
msgstr ""
"Помилка, пов'язана з константою з плаваючою комою, також стосується цієї "
"пам'яті. Це пояснює, чому перевірка посилання також вимагає перевірки даних,"
" які стоять за ним. Збереження цього виправлення в коді допомагає подальшим "
"проектам уникнути\" сліпої плями \" Старої перевірки."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:647
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}The method becomes part of the starting material for the next "
"game.{ph1} We can spend more of the next project's effort on what is "
"actually new about its target."
msgstr ""
"{ph0}Цей метод стає частиною вихідного матеріалу для наступної гри.{ph1} У "
"наступному проекті ми можемо витратити більше зусиль, щоб внести щось "
"справді нове у свою мету."
#: website/public/blog/touhou-reconstruction/index.html:655
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The same benefit is available to people joining later. They can inspect a "
"decision and rerun its check before continuing the work. They do not have to"
" reconstruct the entire project's history to find out why the source looks "
"the way it does."
msgstr ""
"Ті ж переваги доступні для тих, хто приєднається пізніше. Вони можуть "
"переглянути рішення та повторно перевірити його, перш ніж продовжувати "
"роботу. Їм не потрібно відновлювати всю історію проекту, щоб з'ясувати, чому"
" вихідний код виглядає саме так."
#: website/public/blog/touhou-reconstruction/index.html:663
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH04: the workflow survives a different architecture"
msgstr "TH04: робочий процес функціонує відповідно до іншої архітектури"
#. {ph0}: <a href="https://github.com/N0zoM1z0/th04">
#. {ph1}: </a>
#. {ph2}: <a href="https://github.com/nmlgc/ReC98">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:664
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH04{ph1}, Lotus Land Story, took this work into the PC-98 DOS era. The"
" target was now a 16-bit environment with four cooperating programs. "
"Understanding its hardware behavior required different evidence from the "
"Windows games. Existing {ph2}ReC98 work{ph3} gave us valuable knowledge and "
"source material here too."
msgstr ""
"{ph0} TH04{ph1}, Розробник Lotus Land Story, переніс цю роботу в епоху PC-98"
" для DOS. Тепер метою було 16-розрядне середовище з чотирма взаємодіючими "
"програмами. Для розуміння поведінки апаратного забезпечення були потрібні "
"інші дані, отримані з ігор Windows. Існуючий {ph2}робота{ph3} за ReC98 також"
" дала нам цінні знання та вихідні матеріали."
#: website/public/blog/touhou-reconstruction/index.html:673
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The DOS reconstruction is now working. In my manual testing, I played "
"complete Normal routes through their endings and checked saves. The current "
"work is a native 64-bit port. Establishing a working DOS version first gives"
" that port a reference."
msgstr ""
"Відновлення DOS зараз працює. Під час мого ручного тестування я відтворив "
"усі звичайні маршрути до їх закінчення та перевірив збереження. В даний час "
"використовується власний 64-розрядний порт. При установці робочої версії DOS"
" спочатку вказується посилання на цей порт."
#: website/public/blog/touhou-reconstruction/index.html:679
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The architecture changed what we needed to investigate. It also changed the "
"compiler and runtime against which we checked our work. But the agent could "
"still follow a question through to a result and let that result guide the "
"next experiment."
msgstr ""
"Архітектура змінила те, що нам потрібно було дослідити. Це також змінило "
"компілятор та час виконання, за допомогою яких ми перевіряли свою роботу. "
"Але агент все-таки міг довести питання до результату і використати цей "
"результат для наступного експерименту."
#: website/public/blog/touhou-reconstruction/index.html:685
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Consider the transition from gameplay to an ending. We need to know what "
"state carries across that boundary and which program is responsible for it. "
"That is something we can investigate against the DOS product. Once the "
"evidence and checks are available, an agent can work through the question "
"much as it did on a Windows title."
msgstr ""
"Розглянемо перехід від ігрового процесу до завершення. Нам потрібно знати, "
"який стан переходить через цю межу і яка програма відповідає за це. Це те, "
"що ми можемо дослідити на прикладі продукту DOS. Як тільки докази та чеки "
"будуть доступні, агент зможе опрацювати питання приблизно так само, як це "
"було з заголовком Windows."
#: website/public/blog/touhou-reconstruction/index.html:693
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This is why TH04 matters to the argument. A substantial platform change did "
"not force us to start over with a new way of working. The architecture "
"defined the problem; the workflow still gave us a way to solve it."
msgstr ""
"Ось чому TH04 важливий для нашого аргументу. Суттєва зміна платформи не "
"змусила нас почати все спочатку з нового способу роботи. Архітектура "
"визначила проблему; робочий процес все ще давав нам можливість її вирішити."
#: website/public/blog/touhou-reconstruction/index.html:699
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"For the 64-bit port, we can now examine the new implementation against "
"behavior already recovered on DOS. The knowledge from reconstruction gives "
"the port something to build on."
msgstr ""
"Що стосується 64-розрядного порту, то тепер ми можемо порівняти нову "
"реалізацію з поведінкою, вже відновленою в DOS. Знання, отримані в "
"результаті реконструкції, дають порту основу для подальшого розвитку."
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/bb9faca54e2eb3c0d6c757c75d59ac29d2cd5e93/docs/RE_HANDOFF.md"
#. >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/th04/tree/port/modern-64" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:704
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Project state as of 10 October 2026: {ph0}DOS reconstruction and manual "
"testing{ph1} · {ph2}64-bit port{ph3}. The port remains in development."
msgstr ""
"Стан проекту на 10 жовтня 2026 року: {ph0}реконструкція DOS та ручне "
"тестування{ph1} · {ph2}64-розрядний порт{ph3}. Порт знаходиться в розробці."
#: website/public/blog/touhou-reconstruction/index.html:717
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "From exact code to readable code"
msgstr "Від точного коду до читабельного коду"
#: website/public/blog/touhou-reconstruction/index.html:718
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Once a reconstruction works, I want someone else to be able to understand "
"it."
msgstr ""
"Як тільки реконструкція завершиться, я хочу, щоб хтось інший міг це "
"зрозуміти."
#: website/public/blog/touhou-reconstruction/index.html:722
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"To me, assembly and raw offsets can feel like old friends. I realise this is"
" a slightly unusual definition of “readable.” Most people would prefer to "
"follow the game's logic without keeping the executable's memory layout in "
"their head."
msgstr ""
"Для мене асемблер і необроблені зміщення здаються старими друзями. Я "
"розумію, що це дещо незвичне визначення слова \"читабельний\". Більшість "
"людей воліли б слідувати логіці гри, не тримаючи в голові розташування "
"виконуваного файлу в пам'яті."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:728
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That is where {ph0}semantic reconstruction{ph1} comes in. A recovered field "
"may still be known mainly by its offset. We follow how the game uses it "
"until we can explain its role. Then we can give it a meaningful name and a "
"type that fits the evidence. We keep the reasoning with the source so the "
"next person can see where that interpretation came from."
msgstr ""
"Саме тут потрібно {ph0}семантична реконструкція{ph1}. Відновлене поле все ще"
" може бути відоме в основному з його зміщення. Ми стежимо за тим, як він "
"використовується в грі, поки не зможемо пояснити його роль. Тоді ми можемо "
"дати йому значущу назву та тип, який відповідає доказам. Ми аргументуємо "
"відповідно до джерела, щоб наступна людина могла зрозуміти, звідки походить "
"ця інтерпретація."
#: website/public/blog/touhou-reconstruction/index.html:736
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This becomes especially important for a port. An absolute address tells me "
"where something lived in the old executable. It gives a 64-bit "
"implementation little help in deciding which object should own that state. "
"To move the behavior safely, we need to recover the relationship behind the "
"old memory access."
msgstr ""
"Це стає особливо важливим для програмного порту. Абсолютна адреса вказує "
"мені, де щось було у Старому виконуваному файлі. Це мало допомагає "
"64-розрядної реалізації вирішити, якому об'єкту має належати цей стан. Щоб "
"безпечно змінити поведінку, нам потрібно відновити зв'язок, що стоїть за "
"старим доступом до пам'яті."
#: website/public/blog/touhou-reconstruction/index.html:743
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The order I now use is:"
msgstr "Порядок, який я зараз використовую, такий:"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:745
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Recover an exact baseline.{ph1} Compile the reconstructed pieces with "
"the historical compiler. Compare the relevant code and data with the "
"original executable. Record unresolved differences so the next phase has a "
"clear starting point."
msgstr ""
"{ph0}Відновіть точну базову лінію.{ph1} Скомпілюйте відновлені фрагменти за "
"допомогою історичного компілятора. Порівняйте відповідний код та дані з "
"оригінальним виконуваним файлом. Запишіть невирішені відмінності, щоб "
"наступний етап мав чітку відправну точку."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:752
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Build and play it on the original platform.{ph1} Link those pieces into"
" the real program using the original architecture and compiler. Exercise "
"important gameplay paths. This is where we can find problems with shared "
"state or initialization that an isolated function comparison missed."
msgstr ""
"{ph0}Створіть і грайте в неї на оригінальній платформі.{ph1} Об'єднайте ці "
"фрагменти в реальну програму, використовуючи оригінальну архітектуру і "
"компілятор. Використовуйте важливі елементи геймплея. Саме тут ми можемо "
"виявити проблеми із загальним станом або ініціалізацією, які були пропущені "
"при порівнянні ізольованих функцій."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:759
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Reconstruct the semantics against both references.{ph1} Take one "
"coherent part of the game at a time and establish what its recovered source "
"means. Improve its representation while preserving the exact comparisons and"
" the playable historical build."
msgstr ""
"{ph0}Реконструюйте семантику відповідно до обох посилань.{ph1} Виділіть одну"
" цілісну частину гри за раз і з'ясуйте, що означає Відновлене джерело. "
"Поліпшіть її уявлення, зберігши точні порівняння і відтворювану історичну "
"структуру."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:768
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Make the modern port.{ph1} Move the established behavior into the new "
"environment, such as a native 64-bit build. The reconstructed original-"
"platform game remains a reference for comparing how the port behaves."
msgstr ""
"{ph0}Створіть сучасний порт.{ph1} Перенесіть усталену поведінку в нове "
"середовище, наприклад, у власну 64-розрядну збірку. Реконструйована гра на "
"оригінальній платформі залишається еталоном для порівняння поведінки порту."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:775
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The playable build from the second stage becomes a {ph0}second oracle{ph1} "
"during the third. The first oracle checks whether our changed source still "
"reproduces the relevant original code and data. The second checks that the "
"reconstructed program still builds and behaves correctly along the paths we "
"exercise."
msgstr ""
"Відтворювана збірка, отримана на другому етапі, стає {ph0}друге посилання "
"для перевірки (oracle){ph1} на третьому етапі. Перше посилання для перевірки"
" (oracle) перевіряє, чи все ще наш змінений вихідний код відтворює "
"відповідний вихідний код та дані. Другий перевіряє, що відновлена програма "
"як і раніше будує і поводиться коректно відповідно до обраних нами шляхами."
#: website/public/blog/touhou-reconstruction/index.html:783
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"They catch different mistakes. A type change can alter the generated "
"instructions. An ownership change can leave two parts of the game using "
"different copies of state. Keeping both checks available gives the agent a "
"concrete failure to investigate before carrying a refactor further."
msgstr ""
"Вони виявляють різні помилки. Зміна типу може призвести до зміни "
"згенерованих інструкцій. Зміна власника може призвести до того, що дві "
"частини гри використовуватимуть різні копії state. Якщо обидві перевірки "
"будуть доступні, агенту не вдасться провести розслідування, перш ніж "
"проводити подальший рефакторинг."
#: website/public/blog/touhou-reconstruction/index.html:790
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A name needs evidence of its own. An exact comparison cannot tell us whether"
" a field really means “invulnerability time.” We have to establish that from"
" how the game writes and uses it. If the meaning remains uncertain, a "
"neutral name is more helpful to the next reader than a confident guess."
msgstr ""
"Назва сама по собі вимагає підтвердження. Точне порівняння не може сказати "
"нам, чи дійсно поле означає \"Час невразливості\". Ми повинні встановити це "
"по тому, як гра його записує і використовує. Якщо значення залишається "
"невизначеним, нейтральний заголовок буде кориснішим для наступного читача, "
"ніж впевнене припущення."
#. {ph0}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/717e1b8560783ed17a39fdf159d30aa16bb307a7/docs/semantic-
#. reconstruction.md" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:797
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"We learned this order through the projects. TH08 already had playable ports "
"before some of its later historical-platform audits. That made certain "
"defects harder to see. The {ph0}Factory's current workflow{ph1} puts the "
"original-platform build first, so semantic work can use it as a reference "
"before porting begins."
msgstr ""
"Ми вивчили цей порядок в ході роботи над проектами. TH08 вже мав доступні "
"для відтворення порти до деяких пізніших перевірок історичних платформ. Це "
"ускладнювало виявлення деяких дефектів. {ph0}Поточний робочий процес "
"фабрики{ph1} ставить збірку оригінальної платформи на перше місце, тому "
"semantic work може використовувати її як довідковий матеріал перед початком "
"перенесення."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:808
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Exact reconstruction gives us a reference. Semantic reconstruction "
"makes the recovered knowledge usable.{ph1} A port can then build on both."
msgstr ""
"{ph0}Точна реконструкція дає нам посилання. Семантична реконструкція "
"дозволяє використовувати відновлені знання.{ph1} Потім порт може "
"використовувати обидва."
#: website/public/blog/touhou-reconstruction/index.html:817
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "What makes this an industrial shift"
msgstr "Що робить це промисловим зрушенням"
#: website/public/blog/touhou-reconstruction/index.html:818
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"These projects changed where I spent my attention. Once agents could carry "
"much of an investigation forward, improving their working environment became"
" one of the most useful things I could do. A better tool could help with "
"every later function that needed it."
msgstr ""
"Ці проекти змінили напрямок моєї уваги. Після того, як агенти отримали "
"можливість проводити більшість розслідувань, покращення їх робочого "
"середовища стало однією з найкорисніших речей, які я міг зробити. Більш "
"досконалий інструмент міг би допомогти в будь-якій подальшій роботі, яка "
"його потребувала."
#: website/public/blog/touhou-reconstruction/index.html:825
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Autonomy matters here. The useful next step often becomes clear only after a"
" failed experiment. An agent needs enough freedom to follow that result "
"somewhere unexpected. If it has to wait for me to prescribe each step, much "
"of the work remains tied to my attention."
msgstr ""
"Тут важлива самостійність. Корисний наступний крок часто стає зрозумілим "
"лише після невдалого експерименту. Агенту потрібна достатня свобода, щоб "
"досягти результату в несподіваному місці. Якщо йому доводиться чекати, поки "
"я пропишу кожен крок, більша частина роботи залишається залежною від моєї "
"уваги."
#: website/public/blog/touhou-reconstruction/index.html:832
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I expect the agent to make wrong hypotheses. What matters is whether we can "
"test them and learn from the result. A failed check should help it "
"understand the mistake well enough to try again. I still have to decide "
"whether the accumulated evidence supports a project milestone."
msgstr ""
"Я очікую, що агент висуне неправильні гіпотези. Важливо те, чи зможемо ми "
"перевірити їх і навчитися з результату. Невдала перевірка повинна допомогти "
"йому зрозуміти помилку досить добре, щоб спробувати ще раз. Мені все ще "
"потрібно вирішити, чи зібрані дані відповідають етапу проекту."
#: website/public/blog/touhou-reconstruction/index.html:839
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"REA gives the agent access to analysis tools. A question about a function's "
"caller can lead straight into inspecting that caller. The reconstruction "
"project supplies the compiler and its own reference checks. The agent can "
"use those to test the source it proposes and see where its explanation holds"
" up."
msgstr ""
"REA надає агенту доступ до інструментів аналізу. Питання про викликає об'єкт"
" функції може привести безпосередньо до перевірки цього викликає об'єкта. "
"Проект реконструкції надає компілятор і свої власні перевірки посилань. "
"Агент може використовувати їх, щоб протестувати запропоноване джерело та "
"перевірити, чи відповідає його пояснення дійсності."
#: website/public/blog/touhou-reconstruction/index.html:846
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The TH08 bug shows why those checks deserve engineering attention of their "
"own. When the same comparison is used across hundreds of functions, a gap in"
" it can spread much further than a mistake in one implementation. Testing "
"the checker improves the feedback available to all that later work."
msgstr ""
"Помилка TH08 показує, чому ці перевірки самі по собі заслуговують на увагу "
"інженерів. Коли одне і те ж порівняння використовується в сотнях функцій, "
"пробіл у ньому може поширитися набагато далі, ніж помилка в одній "
"реалізації. Тестування засобу перевірки покращує зворотний зв'язок, "
"доступний для всієї подальшої роботи."
#. {ph0}: <a
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
#. steam-engine-indicator" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:853
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The industrial analogy has a useful historical example here. Boulton and "
"Watt introduced a {ph0}steam-engine indicator in 1796{ph1} to help adjust "
"engine valves. A recording version traced pressure through the piston "
"stroke. It made the engine's internal behavior available for inspection. Our"
" comparison tools serve a similar purpose: they let us examine what the "
"machinery is doing while we improve it."
msgstr ""
"Промислова аналогія має тут корисний історичний приклад. {ph0}У 1796 році "
"Боултон і Ватт представили індикатор для парової машини, який допомагав "
"регулювати клапани двигуна{ph1}. Версія для запису тиску відстежувала хід "
"поршня. Це зробило доступним для контролю внутрішній стан двигуна. Наші "
"інструменти порівняння служать тій же меті: вони дозволяють нам вивчати, що "
"робить обладнання, і одночасно вдосконалювати його."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:866
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}We are in the early stages of this industrial shift.{ph1} Much of the "
"infrastructure is still immature. Agents can move faster than our checks "
"were designed to support, so the process has to develop alongside them. When"
" we find a defect in a shared tool, we have to repair it and revisit the "
"results it affected. The next project can then inherit a stronger tool."
msgstr ""
"{ph0}Ми знаходимося на ранній стадії цього промислового зсуву.{ph1} Більша "
"частина інфраструктури все ще знаходиться в стадії розробки. Агенти можуть "
"працювати швидше, ніж це передбачено нашими чеками, тому процес повинен "
"розвиватися паралельно з ними. Коли ми виявляємо дефект у загальному "
"інструменті, ми повинні його усунути та переглянути результати, на які він "
"вплинув. Наступний проект може успадкувати більш потужний інструмент."
#: website/public/blog/touhou-reconstruction/index.html:876
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"There is also a practical limit to any one conversation. It will end before "
"a large reconstruction is finished. The repository has to make it possible "
"for another session to continue without losing the reason for the last "
"decision."
msgstr ""
"Також існує практична межа для будь-якого окремого діалогу. Він завершиться "
"до завершення масштабної реконструкції. Сховище вихідного коду повинно "
"забезпечувати можливість продовження наступного сеансу без втрати причини, "
"по якій було прийнято останнє рішення."
#. {ph0}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-factory"
#. >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:882
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The {ph0}Touhou Reconstruction Factory{ph1} grew out of that need. It gives "
"projects a shared way to carry their checks and lessons forward. Work on one"
" game can improve the starting conditions for another."
msgstr ""
"Проект {ph0}Touhou Reconstruction Factory{ph1} виріс з цієї потреби. Він дає"
" проектам можливість спільно проводити перевірки і витягувати уроки. Робота "
"над однією грою може покращити стартові умови для іншої."
#: website/public/blog/touhou-reconstruction/index.html:892
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That is what makes the industrial analogy meaningful to me. Experience "
"starts becoming part of tools that others can use. Improving those tools "
"changes how much the next person—or the next agent—can get done."
msgstr ""
"Саме це робить аналогію з промисловістю значущою для мене. Досвід стає "
"частиною інструментів, які можуть використовувати інші. Вдосконалення цих "
"інструментів впливає на те, скільки може зробити наступна людина — або "
"наступний агент."
#: website/public/blog/touhou-reconstruction/index.html:900
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The projects we can now consider"
msgstr "Проекти, які ми тепер можемо розглянути"
#: website/public/blog/touhou-reconstruction/index.html:901
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The pace matters because it changes the decision to begin. A game could be "
"fascinating to reverse engineer and still demand more of my own attention "
"than I could realistically give it. Many projects would stay ideas."
msgstr ""
"Темп важливий, оскільки він змінює рішення про початок роботи. Гра може бути"
" цікавою для реінжинірингу і все одно вимагати від мене більше уваги, ніж я "
"міг би їй приділити. Багато проектів так і залишаться ідеями."
#: website/public/blog/touhou-reconstruction/index.html:907
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Now I can see a way to keep such a project moving through repeated "
"investigations. Getting a working reconstruction makes a port more "
"practical. Recovering readable semantics makes it easier for someone else to"
" explore a mod. The effort put into understanding the game can keep paying "
"off after the first version runs."
msgstr ""
"Тепер я бачу спосіб просунути такий проект за допомогою повторних "
"досліджень. Отримання робочої реконструкції робить порт програмного "
"забезпечення більш практичним. Відновлення читабельної семантики полегшує "
"комусь іншому вивчення мода. Зусилля, витрачені на розуміння гри, можуть "
"окупитися після запуску першої версії."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:914
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I now look at an unfamiliar program and ask: {ph0}what access, feedback and "
"accumulated knowledge would let an agent work on this reliably?{ph1}"
msgstr ""
"Тепер я дивлюся на незнайому програму і запитую: {ph0}який доступ, зворотній"
" зв'язок та накопичені знання дозволили б агенту надійно працювати з "
"нею?{ph1}"
#: website/public/blog/touhou-reconstruction/index.html:921
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That question makes me consider projects I would previously have left alone."
" Each one can improve the way we approach the next. I want to keep exploring"
" how far that can take us."
msgstr ""
"Це питання змушує мене замислитися над проектами, які я б раніше залишив у "
"спокої. Кожен з них може покращити наш підхід до наступного. Я хочу "
"продовжувати вивчати, як далеко це може нас завести."
#: website/public/blog/touhou-reconstruction/index.html:929
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Project milestones and sources"
msgstr "Основні етапи та джерела реалізації проекту"
#: website/public/blog/touhou-reconstruction/index.html:930
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The dates describe recorded project checkpoints, checked against public "
"GitHub history on 10 October 2026. Elapsed time is calendar time between "
"commits. Source presence, exact comparisons, a build and a runtime result "
"each name a different milestone."
msgstr ""
"Дати описують зареєстровані контрольні точки проекту, звірені з "
"загальнодоступною історією GitHub на 10 жовтня 2026 року. Минулий час-це "
"календарний час між фіксаціями. Наявність вихідного коду, точні порівняння, "
"збірка та результат виконання - все це вказує на різні етапи."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/001bf3e9c91cc35b79c7a0e36b3565b86f494362"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/15caba73df6735fc44eac4783bc61b8d098ea830/docs/PROGRESS.md"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/da07b21c8cb63230142b0a66228d6aac66555f3f"
#. >
#. {ph7}: </a >
#. {ph8}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/529eb1a3afa05ae36467731eaccb12e3e50e132f"
#. >
#. {ph9}: </a >
#. {ph10}: <a
#. href="https://github.com/N0zoM1z0/th08/releases/tag/v0.2.0-linux-64bit" >
#. {ph11}: </a >
#: website/public/blog/touhou-reconstruction/index.html:938
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08:{ph1} {ph2}13 August continuation{ph3}, {ph4}19 August source "
"ledger{ph5}, {ph6}24 August Linux port{ph7}, {ph8}26 August Web "
"edition{ph9}, and {ph10}30 August 64-bit Linux release{ph11}."
msgstr ""
"{ph0} TH08:{ph1} {ph2}продовження від 13 серпня{ph3}, {ph4}вихідний код від "
"19 {ph5}серпня, порт Linux{ph6} від 24{ph7} серпень, {ph8}веб-версія від 26 "
"серпня{ph9} і {ph10}64-розрядний реліз Linux від 30 Серпня{ph11}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/8c31e6f892d945423b7f7b439747a2bd915f82d8/docs/PROGRESS.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/0fa857fb2b2ec6237732e4d6be8d0a28069c9330/docs/PROGRESS.md"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/74baddfccb712d1311a4d6e7487a63cd1100452e/docs/PROGRESS.md"
#. >
#. {ph7}: </a >
#. {ph8}: <a
#. href="https://github.com/N0zoM1z0/th095/commit/33d46a0ee48f37060d973125a1a7632a40f8d998"
#. >
#. {ph9}: </a >
#. {ph10}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/3442dcf29d9e0b5bef384a49bd0c9ad32a711826/docs/WHOLE_BUILD_TODO.md"
#. >
#. {ph11}: </a >
#: website/public/blog/touhou-reconstruction/index.html:961
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH095:{ph1} {ph2}29 August initial ledger{ph3}, {ph4}7 September source"
" ledger{ph5}, {ph6}8 September comparisons{ph7}, {ph8}9 September "
"linkage{ph9}, and {ph10}10 September playable-build record{ph11}."
msgstr ""
"{ph0} TH095 :{ph1} оригінальна бухгалтерська книга за {ph2}29 серпня, "
"{ph3}Початкова бухгалтерська{ph4} книга за 7 вересня{ph5}, {ph6}порівняння "
"за 8 вересня{ph7}, {ph8}прив'язка за 9 вересня{ph9} і {ph10}запис про "
"створення гри за 10 вересня{ph11}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/bb9faca54e2eb3c0d6c757c75d59ac29d2cd5e93/docs/RE_HANDOFF.md"
#. >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:984
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH04:{ph1} {ph2}10 October handoff{ph3} records the working DOS "
"reconstruction, the maintainer's complete Normal-route testing and the "
"current 64-bit phase."
msgstr ""
"{ph0} TH04 :{ph1} {ph2}передача від 10 жовтня{ph3} фіксує відновлення "
"робочої DOS, повне тестування розробником звичайного маршруту і поточну "
"64-розрядну фазу."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a href="https://github.com/N0zoM1z0/th08/issues/10" >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/7148a76ba224742677895c7160807a68897957d5"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/a393f400786e4cc6cbb1000af0dad3276da12c78"
#. >
#. {ph7}: </a >
#: website/public/blog/touhou-reconstruction/index.html:993
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08 oracle correction:{ph1} {ph2}the reported auto-collection "
"bug{ph3}, {ph4}the source and comparison fix{ph5}, and {ph6}the full "
"floating-literal audit{ph7}."
msgstr ""
"{ph0} Виправлення TH08 verification reference (oracle):{ph1} {ph2}помилка "
"автоматичного збору даних, {ph3}виправлення{ph4} вихідного коду та "
"порівняння{ph5}, а {ph6}також повний аудит констант з плаваючою комою{ph7}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/d2a00f4acb4a13916e07a00bd13f714961714628/docs/SEMANTIC_PLAYBOOK.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/717e1b8560783ed17a39fdf159d30aa16bb307a7/docs/semantic-
#. reconstruction.md" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1007
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Semantic reconstruction:{ph1} {ph2}TH08's readability playbook{ph3} and"
" {ph4}the Factory's phase order and two validation paths{ph5}."
msgstr ""
"{ph0}Семантична реконструкція:{ph1} {ph2}Керівництво по читабельності{ph3} "
"TH08, {ph4}заводський порядок етапів і два шляхи перевірки{ph5}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
#. steam-engine-indicator" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1019
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Industrial history:{ph1} {ph2}the Science Museum Group's steam-engine "
"indicator record{ph3} describes the 1796 introduction and the pressure-"
"recording mechanism."
msgstr ""
"{ph0}Промислова історія:{ph1} в {ph2}архіві групи наукових музеїв, "
"присвяченому індикаторам парових двигунів{ph3}, описується введення в "
"експлуатацію в 1796 році і механізм реєстрації тиску."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/038b6bed51d273c8b3680553b6f43e1b97d19bd1/docs/agent-
#. autonomy.md" >
#. {ph3}: </a >
#. {ph4}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/038b6bed51d273c8b3680553b6f43e1b97d19bd1/docs/knowledge-
#. base.md" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1028
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Method:{ph1} the Factory's {ph2}agent autonomy{ph3} and {ph4}cross-game"
" knowledge{ph5} documents retain the working principles and lessons."
msgstr ""
"{ph0}Метод:{ph1} у документах Factory по {ph2}автономії агентів{ph3} і "
"{ph4}знань про крос-іграх{ph5} зберігаються принципи роботи і уроки."
#. {ph0}: <a class="text-link" href="../">
#. {ph1}: </a>
#. {ph2}: <a class="text-link" href="../../showcase/th04/" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1043
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}More articles{ph1} · {ph2}Explore a TH04 investigation{ph3}"
msgstr ""
"{ph0}Додаткові статті{ph1} · {ph2}Ознайомтеся з дослідженням TH04{ph3}"
#: website/public/blog/touhou-reconstruction/index.html:6
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Reverse Engineering’s Industrial Revolution — REA"
msgstr "Промислова революція в галузі реверс-інжинірингу-REA"
#: website/public/blog/touhou-reconstruction/index.html:7
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"N0zoM1z0 reflects on manual reverse engineering, Touhou reconstruction with "
"AI agents, and how knowledge compounds across TH08, TH095 and PC-98 TH04."
msgstr ""
"N0zoM1z0 розповідає про ручне реінжиніринг, реконструкцію Touhou за "
"допомогою агентів штучного інтелекту та про те, як знання об'єднуються в "
"TH08, TH095 та PC-98, TH04 ."
#: website/public/blog/touhou-reconstruction/index.html:337
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Experience carried between projects"
msgstr "Досвід, накопичений в період між проектами"
#: website/public/blog/touhou-reconstruction/index.html:351
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/blog/touhou-reconstruction/index.html:366
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Touhou reconstruction essay"
msgstr "Есе про реконструкцію Тохоу"
#: website/public/blog/touhou-reconstruction/index.html:1067
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/examples/dino-lab/index.html:100
msgctxt "page:examples/dino-lab/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/examples/dino-lab/index.html:182
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Home{ph1}{ph2}/{ph3}Dinosaur speed lab"
msgstr ""
"{ph0}Головний{ph1}{ph2} сторінка/{ph3}Лабораторія швидкості динозаврів"
#: website/public/examples/dino-lab/index.html:185
msgctxt "page:examples/dino-lab/index.html"
msgid "Inspect → rebuild → change"
msgstr "Перевірити → перебудувати → змінити"
#: website/public/examples/dino-lab/index.html:186
msgctxt "page:examples/dino-lab/index.html"
msgid "Rebuild the dinosaur’s speed rule."
msgstr "Відновіть правило швидкості динозавра."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <mark class="prose-highlight">
#. {ph3}: </mark>
#: website/public/examples/dino-lab/index.html:187
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"To recreate the game’s acceleration, first find the rule that controls its "
"speed. {ph0}REA returned the running script;{ph1} we used its rule to build "
"this mini-game with {ph2}adjustable speed.{ph3}"
msgstr ""
"Щоб відтворити прискорення гри, спочатку знайдіть правило, яке керує її "
"швидкістю. {ph0}REA повернув запущений сценарій;{ph1} ми використовували "
"його правило для створення цієї міні-гри з {ph2}регульованою швидкістю.{ph3}"
#: website/public/examples/dino-lab/index.html:196
#: website/public/examples/dino-lab/index.html:195
msgctxt "page:examples/dino-lab/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#. {ph0}: <a href="#play">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:198
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Play and change the speed{ph1}"
msgstr "{ph0}Грайте і змінюйте швидкість{ph1}"
#. {ph0}: <a href="#rule">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:199
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Read the recovered rule{ph1}"
msgstr "{ph0}Прочитайте Відновлене правило{ph1}"
#. {ph0}: <a href="#check">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:200
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Check the reconstruction{ph1}"
msgstr "{ph0}Перевірте реконструкцію{ph1}"
#. {ph0}: <a href="#inspect">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:201
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Try the analysis{ph1}"
msgstr "{ph0}Спробуйте провести аналіз{ph1}"
#: website/public/examples/dino-lab/index.html:206
msgctxt "page:examples/dino-lab/index.html"
msgid "Play and change the speed"
msgstr "Грайте і змінюйте швидкість"
#: website/public/examples/dino-lab/index.html:207
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Press Play, then jump over the cactus. Move the speed slider to try a slower"
" or faster game; it switches to a fixed speed. Select the recovered rule to "
"start at 6 and gradually accelerate again."
msgstr ""
"Натисніть Play, потім перестрибніть через кактус. Перемістіть повзунок "
"швидкості, щоб вибрати повільнішу або швидшу гру; вона переключиться на "
"фіксовану швидкість. Виберіть Відновлене правило, щоб почати з 6 і поступово"
" збільшувати швидкість знову."
#: website/public/examples/dino-lab/index.html:213
msgctxt "page:examples/dino-lab/index.html"
msgid "Play the reconstruction"
msgstr "Грати у відтворену версію"
#: website/public/examples/dino-lab/index.html:245
msgctxt "page:examples/dino-lab/index.html"
msgid "Play"
msgstr "Грати"
#: website/public/examples/dino-lab/index.html:248
msgctxt "page:examples/dino-lab/index.html"
msgid "Jump ↑"
msgstr "Стрибок ↑"
#: website/public/examples/dino-lab/index.html:249
msgctxt "page:examples/dino-lab/index.html"
msgid "Restart"
msgstr "Почати знову"
#: website/public/examples/dino-lab/index.html:252
msgctxt "page:examples/dino-lab/index.html"
msgid "Speed"
msgstr "Швидкість"
#: website/public/examples/dino-lab/index.html:262
msgctxt "page:examples/dino-lab/index.html"
msgid "Use the recovered acceleration rule"
msgstr "Використовуйте правило відновленого прискорення"
#: website/public/examples/dino-lab/index.html:266
msgctxt "page:examples/dino-lab/index.html"
msgid "Original rule: start at 6, then increase toward 13."
msgstr "Початкове правило: починайте з 6, потім збільшуйте до 13."
#: website/public/examples/dino-lab/index.html:269
msgctxt "page:examples/dino-lab/index.html"
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
msgstr ""
"Перемістіть повзунок, щоб встановити власну швидкість. Пробіл або стрибок "
"прибирають кактус."
#: website/public/examples/dino-lab/index.html:274
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Enable JavaScript to play the reconstruction. The code and explanation above"
" remain readable."
msgstr ""
"Увімкніть JavaScript для відтворення реконструкції. Наведений вище код та "
"пояснення залишаються читабельними."
#: website/public/examples/dino-lab/index.html:282
msgctxt "page:examples/dino-lab/index.html"
msgid "Read the script REA returned"
msgstr "Прочитав повернутий скрипт REA"
#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph1}: </a >
#. {ph2}: <code>index.js</code>
#: website/public/examples/dino-lab/index.html:283
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"We inspected {ph0}wayou’s Chromium-derived browser edition{ph1} with REA. It"
" returned the loaded {ph2}, including this branch in the game’s update "
"function:"
msgstr ""
"Ми перевірили {ph0}версію браузера wayou, засновану{ph1} на Chromium, за "
"допомогою REA. Вона повернула завантажений {ph2} index.js, включивши цю тему"
" у функцію оновлення гри:"
#. {ph0}: <code>SPEED: 6</code>
#. {ph1}: <code>ACCELERATION: 0.001</code>
#. {ph2}: <code>MAX_SPEED: 13</code>
#: website/public/examples/dino-lab/index.html:299
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"The settings are {ph0}, {ph1} and {ph2}. The game runs this branch on an "
"update without a collision."
msgstr ""
"Задані наступні параметри: {ph0}, {ph1} і максимальна {ph2}. Гра запускає цю"
" гілку в оновленні без будь-яких колізій."
#: website/public/examples/dino-lab/index.html:304
msgctxt "page:examples/dino-lab/index.html"
msgid "Use the same rule in the new game"
msgstr "Використовуйте те саме правило в новій грі"
#: website/public/examples/dino-lab/index.html:310
#: website/public/examples/dino-lab/index.html:409
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy"
msgstr "Копіювати"
#: website/public/examples/dino-lab/index.html:323
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"The mini-game uses this function for automatic acceleration. Moving the "
"slider supplies a fixed speed instead. Drawing, jump physics and rectangle "
"collision checks are new code for this teaching game; its simulation "
"advances at 60 updates per second."
msgstr ""
"Міні-гра використовує цю функцію для автоматичного прискорення. Переміщення "
"повзунка забезпечує фіксовану швидкість. Малювання, Фізика стрибків і "
"перевірка зіткнень з прямокутниками - це новий код для цієї навчальної гри; "
"його симуляція оновлюється зі швидкістю 60 разів на секунду."
#. {ph0}: <a href="../../assets/dino-speed.js" download >
#. {ph1}: </a >
#. {ph2}: <a href="../../assets/dino-demo.js">
#. {ph3}: </a>
#: website/public/examples/dino-lab/index.html:329
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Download the speed rule{ph1} · {ph2}Read the game code{ph3}"
msgstr "{ph0}Скачайте правила швидкості{ph1} · {ph2}Прочитайте код гри{ph3}"
#: website/public/examples/dino-lab/index.html:337
msgctxt "page:examples/dino-lab/index.html"
msgid "Check the reconstruction"
msgstr "Перевірте реконструкцію"
#: website/public/examples/dino-lab/index.html:338
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"We called the original game’s update function with obstacles and automatic "
"scheduling disabled. Compare those recorded speeds with a replay of the "
"recovered rule."
msgstr ""
"Ми запустили функцію оновлення оригінальної гри з відключеними перешкодами і"
" автоматичним плануванням. Порівняйте ці записані швидкості з відтворенням "
"відновленого правила."
#: website/public/examples/dino-lab/index.html:347
msgctxt "page:examples/dino-lab/index.html"
msgid "Updates"
msgstr "Оновлення"
#: website/public/examples/dino-lab/index.html:348
msgctxt "page:examples/dino-lab/index.html"
msgid "Original game"
msgstr "Оригінальна гра"
#: website/public/examples/dino-lab/index.html:349
msgctxt "page:examples/dino-lab/index.html"
msgid "Reconstructed rule"
msgstr "Реконструйоване правило"
#: website/public/examples/dino-lab/index.html:376
msgctxt "page:examples/dino-lab/index.html"
msgid "Run the speed check"
msgstr "Запустіть перевірку швидкості"
#: website/public/examples/dino-lab/index.html:379
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Values rounded to three decimals. The branch checks before adding, so the "
"final increment can take speed just above 13."
msgstr ""
"Значення округлені до трьох знаків після коми. Розгалуження перевіряє перед "
"додаванням, тому кінцевий приріст може бути трохи вище 13."
#: website/public/examples/dino-lab/index.html:385
msgctxt "page:examples/dino-lab/index.html"
msgid "Try the analysis yourself"
msgstr "Спробуйте провести аналіз самостійно"
#. {ph0}: <a href="../../get-started/">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:387
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Set up REA{ph1} with your coding agent."
msgstr "{ph0}Налаштуйте REA{ph1} за допомогою вашого агента кодування."
#. {ph0}: <a href="../../guides/browser/#prepare" >
#. {ph1}: </a >
#. {ph2}: <code>https://wayou.github.io/t-rex-runner/</code>
#: website/public/examples/dino-lab/index.html:391
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Follow the {ph0}browser connection steps{ph1}, using {ph2} as the page URL."
msgstr ""
"Виконавши {ph0}дії по підключенню до браузеру{ph1}, використовувати {ph2} як"
" URL-адреса сторінки."
#: website/public/examples/dino-lab/index.html:398
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Give your agent the page URL and local debugging endpoint, then copy this "
"prompt."
msgstr ""
"Вкажіть своєму агенту URL-адресу сторінки та локальну кінцеву точку "
"налагодження, а потім скопіюйте цей запит."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/examples/dino-lab/index.html:405
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="lab-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/examples/dino-lab/index.html:418
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this dinosaur game. Why does it get "
"faster? Show the speed rule, then build a small version with an adjustable "
"speed.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA, щоб ознайомитися з цією грою "
"динозаврів. Чому вона стала швидше? Покажіть правило швидкості, а потім "
"створіть зменшену версію зі змінною швидкістю.{ph3}{ph4}{ph5}"
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/examples/dino-lab/index.html:427
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Ask a follow-up: {ph0}“Where is jump height calculated? Add a jump-height "
"control to the new version.”{ph1}"
msgstr ""
"Задайте наступне запитання: {ph0}\"Де розраховується висота стрибка? Додайте"
" елемент керування висотою стрибка до нової версії\".{ph1}"
#. {ph0}: <a href="https://github.com/wayou/t-rex-
#. runner/blob/5455bfa408ec6b707c7300ff194b7390733a766d/index.js#L565-L571" >
#. {ph1}: </a >
#. {ph2}: <a href="../../assets/licenses/dinosaur.txt" >
#. {ph3}: </a >
#: website/public/examples/dino-lab/index.html:434
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Source: {ph0}inspected speed code{ph1}, Chromium Authors. {ph2}Copyright and"
" BSD license{ph3}. REA 4.1.0 inspected the running HTTP edition in Chrome "
"150."
msgstr ""
"Джерело: {ph0}перевірений код швидкості{ph1}, автори Chromium. "
"{ph2}Авторське право та ліцензія BSD{ph3}. REA 4.1.0 перевірив запущену "
"версію HTTP у Chrome 150."
#: website/public/examples/dino-lab/index.html:6
msgctxt "page:examples/dino-lab/index.html"
msgid "Chrome Dinosaur Game: Rebuild Its Speed Rule — REA"
msgstr "Chrome гра про динозаврів: перебудувати правила швидкості-REA"
#: website/public/examples/dino-lab/index.html:7
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Read the dinosaur game’s speed rule with REA, rebuild it, then change the "
"speed and play."
msgstr ""
"Прочитайте правила швидкості в грі динозаврів за допомогою REA, перебудуйте "
"їх, потім змініть швидкість і грайте."
#: website/public/examples/dino-lab/index.html:204
msgctxt "page:examples/dino-lab/index.html"
msgid "Dinosaur speed reconstruction"
msgstr "Реконструкція швидкості динозавра"
#: website/public/examples/dino-lab/index.html:235
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
"focused."
msgstr ""
"Міні-гра про динозаврів. Використовуйте кнопку переходу або натисніть "
"пробіл, поки гра зосереджена."
#: website/public/examples/dino-lab/index.html:310
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy reconstructed speed rule"
msgstr "Скопіюйте Відновлене правило швидкості"
#: website/public/examples/dino-lab/index.html:409
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy dinosaur analysis prompt"
msgstr "Запит на копіювання результатів аналізу динозаврів"
#: website/public/examples/dino-lab/index.html:462
msgctxt "page:examples/dino-lab/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/faq/index.html:99
msgctxt "page:faq/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/faq/index.html:181
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Home{ph1} / FAQ"
msgstr "{ph0}Головний{ph1} сторінка / поширені запитання"
#: website/public/faq/index.html:182
msgctxt "page:faq/index.html"
msgid "REA FAQ."
msgstr "Поширені запитання щодо REA."
#: website/public/faq/index.html:183
msgctxt "page:faq/index.html"
msgid "Setup, updates, analysis and troubleshooting."
msgstr "Налаштування, Оновлення, аналіз та усунення несправностей."
#: website/public/faq/index.html:187
msgctxt "page:faq/index.html"
msgid "Topics"
msgstr "Тим"
#. {ph0}: <a href="#setup">
#. {ph1}: </a>
#: website/public/faq/index.html:189
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Setup and updates{ph1}"
msgstr "{ph0}Налаштування та оновлення{ph1}"
#. {ph0}: <a href="#analysis">
#. {ph1}: </a>
#: website/public/faq/index.html:190
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Analysis{ph1}"
msgstr "{ph0}Аналіз{ph1}"
#. {ph0}: <a href="#troubleshooting">
#. {ph1}: </a>
#: website/public/faq/index.html:191
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Troubleshooting{ph1}"
msgstr "{ph0}Діагностика{ph1}"
#. {ph0}: <a href="#sharing">
#. {ph1}: </a>
#: website/public/faq/index.html:192
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Data and sharing{ph1}"
msgstr "{ph0}Дані та обмін ними{ph1}"
#: website/public/faq/index.html:201
msgctxt "page:faq/index.html"
msgid "Setup and updates"
msgstr "Налаштування та оновлення"
#: website/public/faq/index.html:204
msgctxt "page:faq/index.html"
msgid "How do I install REA?"
msgstr "Як встановити REA ?"
#: website/public/faq/index.html:212
msgctxt "page:faq/index.html"
msgid "Terminal · agent setup"
msgstr "Термінал * Налаштування агента"
#: website/public/faq/index.html:213 website/public/faq/index.html:254
#: website/public/faq/index.html:272 website/public/faq/index.html:356
#: website/public/faq/index.html:403 website/public/faq/index.html:443
#: website/public/faq/index.html:463
msgctxt "page:faq/index.html"
msgid "Copy"
msgstr "Копіювати"
# Reviewed for readable setup and analysis terminology.
#. {ph0}: <a href="../get-started/">
#. {ph1}: </a>
#: website/public/faq/index.html:224
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Setup registers REA's MCP connection and installs the matching investigation"
" skill. Restart your agent when it finishes, then give it a target path and "
"a question. {ph0}Follow the setup guide{ph1} for prerequisites and your "
"first analysis."
msgstr ""
"Налаштування реєструє MCP-підключення REA та встановлює відповідну навичку "
"аналізу. Після завершення перезапустіть агента й передайте йому шлях до "
"файлу та запитання. Вимоги й перші кроки описані в {ph0}посібнику з "
"налаштування{ph1}."
#: website/public/faq/index.html:233
msgctxt "page:faq/index.html"
msgid "Which coding agents can use REA?"
msgstr "Які агенти кодування можуть використовувати REA?"
#: website/public/faq/index.html:234
msgctxt "page:faq/index.html"
msgid ""
"Any agent that supports local MCP servers. Setup includes Claude Code, "
"Claude Desktop, Codex, Cursor, Gemini CLI, Windsurf, Devin, OpenCode, "
"Antigravity, GitHub Copilot CLI, Command Code, Grok Build, OMP, and VS Code."
" Grok Bot's connector is added from its chat."
msgstr ""
"Будь-який агент, який підтримує локальні сервери MCP. Установка включає в "
"себе Claude Code, Claude для настільних комп'ютерів, Codex, Cursor, Gemini "
"CLI, Windsurf, Devin, OpenCode, Antigravity, GitHub Copilot CLI , Command "
"Code , Grok Build , OMP і VS Code . Коннектор Grok-бота доданий з його чату."
#. {ph0}: <a href="../get-started/#agent">
#. {ph1}: </a>
#: website/public/faq/index.html:241
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Connect your coding agent{ph1}."
msgstr "{ph0}Підключіть свій кодуючий агент{ph1}."
#: website/public/faq/index.html:246
msgctxt "page:faq/index.html"
msgid "How do I update REA?"
msgstr "Як оновити REA ?"
#: website/public/faq/index.html:247
msgctxt "page:faq/index.html"
msgid ""
"REA releases frequently, including bug fixes. If you installed the CLI with "
"npm:"
msgstr ""
"REA релізи часто, включаючи виправлення помилок. Якщо ви встановили CLI з "
"npm:"
#: website/public/faq/index.html:253
msgctxt "page:faq/index.html"
msgid "Terminal · installed CLI"
msgstr "Термінал * встановлений CLI"
#. {ph0}: <code>npx</code>
#: website/public/faq/index.html:265
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Follow the setup refresh command printed by the update. If you set up your "
"agent through {ph0}, run:"
msgstr ""
"Виконайте команду оновлення налаштувань, зазначену в оновленні. Якщо ви "
"налаштовуєте свого агента через {ph0}, запустивши:"
#: website/public/faq/index.html:271
msgctxt "page:faq/index.html"
msgid "Terminal · refresh agent setup"
msgstr "Термінал * Налаштування агента оновлення"
# Reviewed for readable setup and analysis terminology.
#. {ph0}: <code>npx -y rea-agents@latest</code>
#: website/public/faq/index.html:283
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Review the changes and restart your agent. Its REA connection pins a package"
" version, so refreshing setup makes it use the new release. For one-off CLI "
"commands, use {ph0} followed by the command."
msgstr ""
"Перевірте зміни й перезапустіть агента. Підключення до REA використовує "
"визначену версію пакета. Повторіть налаштування, щоб агент перейшов на нову "
"версію. Для разового виклику CLI додайте потрібну команду після {ph0}."
#: website/public/faq/index.html:291
msgctxt "page:faq/index.html"
msgid "Is installing the skill from skills.sh enough?"
msgstr "Встановлюється навик з навичок.цього достатньо?"
#. {ph0}: <a href="#install">
#. {ph1}: </a>
#: website/public/faq/index.html:294
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"The skill gives your agent investigation instructions. Run {ph0}REA "
"setup{ph1} to connect the MCP server and install the matching skill, then "
"restart your agent so it can call the tools."
msgstr ""
"Навик надає Вашому агенту інструкції з розслідування. Запустивши "
"{ph0}програму установки{ph1} REA, щоб підключити сервер MCP і встановити "
"відповідну навичку, а потім перезапустіть свій агент, щоб він міг викликати "
"інструменти."
#: website/public/faq/index.html:305
msgctxt "page:faq/index.html"
msgid "Analysis"
msgstr "Аналіз"
#: website/public/faq/index.html:308
msgctxt "page:faq/index.html"
msgid "What can I analyze with REA?"
msgstr "Що я можу проаналізувати за допомогою REA?"
#: website/public/faq/index.html:309
msgctxt "page:faq/index.html"
msgid "Start with the kind of software you have:"
msgstr "Почніть з того програмного забезпечення, яке у вас є:"
#. {ph0}: <a href="../guides/native/" >
#. {ph1}: </a >
#: website/public/faq/index.html:311
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}Native executables and libraries{ph1}: functions, assembly, pseudocode "
"and references."
msgstr ""
"{ph0}Власні виконувані файли та бібліотеки{ph1}: функції, збірка, псевдокод "
"та посилання."
#. {ph0}: <a href="../guides/javascript/" >
#. {ph1}: </a >
#: website/public/faq/index.html:316
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}JavaScript and Electron apps{ph1}: modules, imports, IPC and source "
"locations."
msgstr ""
"{ph0} Програми JavaScript та Electron{ph1}: модулі, імпорт, IPC та "
"розташування джерел."
#. {ph0}: <a href="../guides/browser/">
#. {ph1}: </a>
#: website/public/faq/index.html:321
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Browser pages{ph1}: scripts, requests and runtime observations."
msgstr ""
"{ph0}Сторінки браузера{ph1}: скрипти, запити та спостереження під час "
"виконання."
#. {ph0}: <a href="../showcase/">
#. {ph1}: </a>
#: website/public/faq/index.html:326
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"REA also has workflows for managed assemblies, Android APKs, firmware and "
"packaged resources. {ph0}See the case studies{ph1} for worked "
"investigations."
msgstr ""
"REA також підтримує робочі процеси для керованих збірок, додатків APK для "
"Android, вбудованого ПЗ і упакованих ресурсів. {ph0}Дивіться приклади "
"проведених досліджень{ph1}."
#: website/public/faq/index.html:334
msgctxt "page:faq/index.html"
msgid "Do I need Hopper, Ghidra or IDA?"
msgstr "Чи потрібен мені Hopper, Ghidra або IDA?"
#: website/public/faq/index.html:335
msgctxt "page:faq/index.html"
msgid ""
"Deep native analysis uses one of them. Static JavaScript and .NET inspection"
" work with the supplied files and do not need a native analysis engine."
msgstr ""
"Для глибокого аналізу програм з машинним кодом використовується один з них. "
"Статичний JavaScript і.NET inspection працюють з наданими файлами і не "
"вимагають аналізу движка програм з машинним кодом."
#. {ph0}: <a href="../get-started/#native">
#. {ph1}: </a>
#: website/public/faq/index.html:340
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Connect your existing Ghidra or IDA installation, or let setup detect Hopper"
" and propose an installation. Your host and target determine which provider "
"can be used. {ph0}Set up native analysis{ph1}."
msgstr ""
"Підключіть існуючу установку Ghidra або IDA або дозвольте програмі установки"
" виявити Hopper і запропонувати установку. Ваш хост і цільовий сервер "
"визначають, якого постачальника можна використовувати. {ph0}Налаштуйте "
"аналіз програм з машинним кодом{ph1}."
#: website/public/faq/index.html:348
msgctxt "page:faq/index.html"
msgid "Can I use REA without a coding agent?"
msgstr "Чи можу я використовувати REA без кодуючого агента?"
#: website/public/faq/index.html:349
msgctxt "page:faq/index.html"
msgid ""
"Yes. The CLI uses the same analysis workflows. For a local JavaScript or "
"Electron app:"
msgstr ""
"Так. У CLI використовуються ті ж робочі процеси аналізу. Для локальної "
"програми JavaScript або Electron:"
#: website/public/faq/index.html:355
msgctxt "page:faq/index.html"
msgid "Terminal · static application analysis"
msgstr "Термінал * статичний аналіз додатків"
#. {ph0}: <a href="../get-started/#terminal">
#. {ph1}: </a>
#: website/public/faq/index.html:368
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace the path with an extracted application folder or ASAR file. {ph0}Use"
" the CLI{ph1} for installation options."
msgstr ""
"Замініть шлях на папку витягнутої Програми або файл ASAR. "
"{ph0}Використовуйте CLI{ph1} для параметрів установки."
# Reviewed for readable setup and analysis terminology.
#: website/public/faq/index.html:375
msgctxt "page:faq/index.html"
msgid "What code does REA return?"
msgstr "Який код повертає REA?"
# Reviewed for readable setup and analysis terminology.
#: website/public/faq/index.html:376
msgctxt "page:faq/index.html"
msgid ""
"Native analysis returns assembly and pseudocode, with calls, references and "
"relevant constants. JavaScript analysis returns modules, their relationships"
" and source locations."
msgstr ""
"Аналіз машинного коду повертає асемблер і псевдокод, а також виклики "
"функцій, посилання та потрібні константи. Аналіз JavaScript повертає модулі,"
" зв’язки між ними та розташування у вихідному коді."
#. {ph0}: <a href="../showcase/dx-ball/#sound-pan" >
#. {ph1}: </a >
#. {ph2}: <a href="../showcase/ctf/">
#. {ph3}: </a>
#: website/public/faq/index.html:381
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Your agent uses these findings to explain the behavior or write and test an "
"implementation. The {ph0}DX-Ball calculation{ph1} and {ph2}CTF flag "
"checker{ph3} show how that process works."
msgstr ""
"Ваш агент використовує ці результати для пояснення поведінки або написання "
"та тестування реалізації. {ph0}Розрахунок{ph1} DX-Ball і {ph2}перевірка "
"прапора CTF{ph3} показують, як працює цей процес."
#: website/public/faq/index.html:392
msgctxt "page:faq/index.html"
msgid "What should I ask my agent?"
msgstr "Що запитати в помічника?"
#: website/public/faq/index.html:393
msgctxt "page:faq/index.html"
msgid ""
"Give it a local target and one behavior to investigate. For a JavaScript or "
"Electron app:"
msgstr ""
"Задайте йому локальну мету і одну поведінку для вивчення. Для програми "
"JavaScript або Electron:"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/faq/index.html:399
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#. {ph0}: <a href="../guides/">
#. {ph1}: </a>
#: website/public/faq/index.html:422
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace the path with your target. The {ph0}guides{ph1} provide prompts for "
"native, Electron and browser examples."
msgstr ""
"Замініть шлях на цільовий. В {ph0}керівництво{ph1} наведені підказки для "
"прикладів в native, Electron і браузері."
#: website/public/faq/index.html:432
msgctxt "page:faq/index.html"
msgid "Troubleshooting"
msgstr "Діагностика"
#: website/public/faq/index.html:435
msgctxt "page:faq/index.html"
msgid "Why can't my agent see the REA tools?"
msgstr "Чому мій агент не може бачити інструменти REA?"
#. {ph0}: <code>doctor</code>
#: website/public/faq/index.html:436
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Restart or reconnect your agent after setup. Check its REA registration with"
" {ph0}; for Codex:"
msgstr ""
"Перезапустіть або підключіть агент після налаштування. Перевірте його "
"реєстрацію REA в {ph0}; для Codex :"
#: website/public/faq/index.html:442
msgctxt "page:faq/index.html"
msgid "Terminal · check one client"
msgstr "Термінал * перевірте одного клієнта"
#. {ph0}: <code>codex</code>
#. {ph1}: <code>claude_code</code>
#. {ph2}: <code>cursor</code>
#: website/public/faq/index.html:454
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace {ph0} with your client ID, such as {ph1} or {ph2}. If the report "
"shows a missing or stale registration, run setup for that client:"
msgstr ""
"Замінивши {ph0} на свій ідентифікатор клієнта, наприклад, {ph1} або {ph2}. "
"Якщо у звіті відображається відсутність або застаріла реєстрація, запустіть "
"програму встановлення для цього клієнта:"
#: website/public/faq/index.html:462
msgctxt "page:faq/index.html"
msgid "Terminal · repair one client's setup"
msgstr "Термінал * виправлення налаштувань одного клієнта"
#. {ph0}: <a href="../get-started/#help">
#. {ph1}: </a>
#: website/public/faq/index.html:474
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Review its plan and restart the client. If registration is healthy but tools"
" remain absent, check the client's MCP connection error. {ph0}More setup "
"diagnostics{ph1}."
msgstr ""
"Перегляньте його план і перезапустіть клієнт. Якщо реєстрація успішна, але "
"інструменти все ще відсутні, перевірте помилку підключення клієнта MCP. "
"{ph0}Додаткова діагностика налаштування{ph1}."
#: website/public/faq/index.html:482
msgctxt "page:faq/index.html"
msgid "Do I need to start Hopper first?"
msgstr "Чи потрібно спочатку запускати Hopper?"
#. {ph0}: <a href="../get-started/#native">
#. {ph1}: </a >
#: website/public/faq/index.html:483
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"REA starts Hopper when an operation needs it. On macOS, complete the first-"
"run choice of demo mode or license activation before unattended analysis. "
"{ph0}See native provider setup{ph1}."
msgstr ""
"REA запускає Hopper, коли це необхідно для виконання операції. На macOS "
"перед автоматичним аналізом виконайте перший запуск, вибравши "
"демонстраційний режим або активацію ліцензії. {ph0}Дивіться розділ "
"Налаштування власного провайдера{ph1}."
#: website/public/faq/index.html:492
msgctxt "page:faq/index.html"
msgid "What should I do if I hit a bug?"
msgstr "Що робити, якщо я знайшов помилку?"
#. {ph0}: <a href="#update">
#. {ph1}: </a>
#: website/public/faq/index.html:493
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}Update REA{ph1}, restart your agent and retry the same task. A recent "
"release may already fix the problem."
msgstr ""
"{ph0}Оновіть REA{ph1} , перезапустіть свій агент і повторіть те саме "
"завдання. Можливо, проблема вже вирішена в недавньому випуску."
#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#: website/public/faq/index.html:497
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"If it persists, {ph0}open an issue{ph1} with your REA version, operating "
"system, target type, steps to reproduce and error output. Include the "
"provider name when the problem involves native analysis."
msgstr ""
"Якщо {ph0}проблема{ph1} чи не усувається, вкажіть версію REA, операційну "
"систему, тип пристрою, кроки для відтворення і висновок помилки. Вкажіть "
"ім'я постачальника, якщо проблема пов'язана з аналізом програм з машинним "
"кодом."
#: website/public/faq/index.html:511
msgctxt "page:faq/index.html"
msgid "Data and sharing"
msgstr "Дані та обмін ними"
#: website/public/faq/index.html:514
msgctxt "page:faq/index.html"
msgid "Does REA upload my app?"
msgstr "Чи завантажує REA мій додаток?"
#: website/public/faq/index.html:515
msgctxt "page:faq/index.html"
msgid ""
"REA analyzes targets on your machine. Your agent receives the results, and "
"its model provider's data policy applies to those results."
msgstr ""
"REA аналізує цілі на вашому комп'ютері. Ваш агент отримує результати, і до "
"цих результатів застосовується політика щодо даних, встановлена його "
"постачальником моделей."
#: website/public/faq/index.html:522
msgctxt "page:faq/index.html"
msgid "How can I share an example or contribute?"
msgstr "Як я можу поділитися прикладом або зробити свій внесок?"
#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/morluto/rea/pulls">
#. {ph3}: </a >
#: website/public/faq/index.html:523
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Have a useful REA example? We'd love to see it. Share the target, your "
"question, the findings and how you checked them in an {ph0}issue{ph1} or "
"{ph2}pull request{ph3}. Short code excerpts and figures help others follow "
"the investigation."
msgstr ""
"Чи є у вас корисний приклад REA? Ми були б раді його побачити. Розкажіть про"
" мету, своє запитання, результати та про те, як ви їх перевірили, у дописі "
"про {ph0}проблема{ph1} або {ph2}запит{ph3} на оновлення. Короткі витяги з "
"коду та цифри допомагають іншим стежити за ходом розслідування."
#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a>
#: website/public/faq/index.html:535
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Bug reports, feature requests, documentation and code improvements are "
"welcome too. You can also discuss an example in the {ph0}community{ph1}."
msgstr ""
"Також вітаються повідомлення про помилки, запити на функції, документація та"
" вдосконалення коду. Ви також можете обговорити приклад у "
"{ph0}товариство{ph1}."
#: website/public/faq/index.html:6
msgctxt "page:faq/index.html"
msgid "REA FAQ: Setup, Updates and Troubleshooting"
msgstr ""
"Поширені запитання щодо REA: Налаштування, Оновлення та усунення "
"несправностей"
#: website/public/faq/index.html:7
msgctxt "page:faq/index.html"
msgid ""
"Answers to common REA questions: installation, updates, analysis tools, "
"coding agents, troubleshooting and sharing examples."
msgstr ""
"Відповіді на поширені питання REA: установка, оновлення, інструменти "
"аналізу, засоби програмування, усунення неполадок і обмін прикладами."
#: website/public/faq/index.html:186
msgctxt "page:faq/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/faq/index.html:195
msgctxt "page:faq/index.html"
msgid "Frequently asked questions about REA"
msgstr "Поширені запитання про REA"
#: website/public/faq/index.html:213
msgctxt "page:faq/index.html"
msgid "Copy REA setup command"
msgstr "Скопіювати інсталяційну команду REA"
#: website/public/faq/index.html:254
msgctxt "page:faq/index.html"
msgid "Copy REA update command"
msgstr "Скопіювати команду оновлення REA"
#: website/public/faq/index.html:272
msgctxt "page:faq/index.html"
msgid "Copy agent setup refresh command"
msgstr "Команда оновлення Налаштування агента копіювання"
#: website/public/faq/index.html:356
msgctxt "page:faq/index.html"
msgid "Copy REA CLI analysis command"
msgstr "Скопіювати команду аналізу REA CLI"
#: website/public/faq/index.html:403
msgctxt "page:faq/index.html"
msgid "Copy example analysis prompt"
msgstr "Запит на копіювання прикладу аналізу"
#: website/public/faq/index.html:443
msgctxt "page:faq/index.html"
msgid "Copy client diagnosis command"
msgstr "Скопіювати команду діагностики клієнта"
#: website/public/faq/index.html:463
msgctxt "page:faq/index.html"
msgid "Copy scoped setup command"
msgstr "Команда налаштування в області копіювання"
#: website/public/faq/index.html:560
msgctxt "page:faq/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/first-investigation/index.html:99
msgctxt "page:first-investigation/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:181
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Home{ph1} / Your first investigation"
msgstr "{ph0}Головний{ph1} / Ваше перше розслідування"
#. {ph0}: <br />
#: website/public/first-investigation/index.html:184
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "Find out where{ph0}exported notes go."
msgstr "Дізнайтеся, куди відправляються{ph0}експортовані нотатки."
#: website/public/first-investigation/index.html:185
msgctxt "page:first-investigation/index.html"
msgid ""
"Use REA to inspect a small app, follow its Export notes button and check one"
" detail yourself."
msgstr ""
"Використовуйте REA для перевірки невеликого додатки, натисніть на кнопку "
"\"Експорт заміток\" і перевірте одну деталь самостійно."
#: website/public/first-investigation/index.html:196
msgctxt "page:first-investigation/index.html"
msgid "In this exercise"
msgstr "У цій вправі"
#. {ph0}: <a href="#setup">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:198
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}1. Set up{ph1}"
msgstr "{ph0}1. Настройка{ph1}"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:199
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}2. Ask about export{ph1}"
msgstr "{ph0}2. Запитайте про експорт{ph1}"
#. {ph0}: <a href="#answer">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:200
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}3. Follow the answer{ph1}"
msgstr "{ph0}3. Дотримуйтесь відповіді{ph1}"
#. {ph0}: <a href="#check">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:201
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}4. Check a prediction{ph1}"
msgstr "{ph0}4. Перевірте прогноз{ph1}"
#. {ph0}: <a href="#next">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:202
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}5. Ask another question{ph1}"
msgstr "{ph0}5. Задайте ще одне питання{ph1}"
#: website/public/first-investigation/index.html:207
msgctxt "page:first-investigation/index.html"
msgid "1. Connect your agent to REA"
msgstr "1. Підключіть свого агента до REA."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/first-investigation/index.html:216
#: website/public/first-investigation/index.html:266
#: website/public/first-investigation/index.html:388
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#: website/public/first-investigation/index.html:221
#: website/public/first-investigation/index.html:243
#: website/public/first-investigation/index.html:271
#: website/public/first-investigation/index.html:393
#: website/public/first-investigation/index.html:435
msgctxt "page:first-investigation/index.html"
msgid "Copy"
msgstr "Копіювати"
#: website/public/first-investigation/index.html:240
msgctxt "page:first-investigation/index.html"
msgid "Or run this command in your terminal:"
msgstr "Або запустіть цю команду у своєму терміналі:"
#: website/public/first-investigation/index.html:252
msgctxt "page:first-investigation/index.html"
msgid ""
"Review the plan, approve the setup, then restart your agent. Already "
"connected? Continue below."
msgstr ""
"Ознайомтеся з планом, схваліть налаштування, а потім перезапустіть свого "
"агента. Ви вже підключені? Продовження нижче."
#: website/public/first-investigation/index.html:258
msgctxt "page:first-investigation/index.html"
msgid "2. Ask where the CSV is written"
msgstr "2. Запитайте, де записаний CSV"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/first-investigation/index.html:259
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The example is a six-file Electron app with an {ph0}Export notes{ph1} "
"button. Your agent can inspect its code without installing or launching "
"Electron."
msgstr ""
"Прикладом може служити додаток Electron, що складається з шести файлів, з "
"кнопкою {ph0}експорту заміток{ph1}. Ваш агент може перевірити його код, не "
"встановлюючи та не запускаючи Electron."
#: website/public/first-investigation/index.html:294
msgctxt "page:first-investigation/index.html"
msgid ""
"Your agent downloads the files and gives the unpacked folder to REA for "
"inspection."
msgstr ""
"Ваш агент завантажує файли та передає розпаковану папку REA для перевірки."
#. {ph0}: <a class="button" href="../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/first-investigation/index.html:298
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}Приклад завантаження ZIP-файлу{ph1}"
#. {ph0}: <code>notes-example</code>
#: website/public/first-investigation/index.html:306
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"If your agent can’t download files, unzip this archive yourself. Give it the"
" path to the {ph0} folder and the same export question."
msgstr ""
"Якщо ваш агент не може завантажити файли, розпакуйте цей архів самостійно. "
"Вкажіть шлях до папки {ph0} і задайте те саме питання щодо експорту."
#: website/public/first-investigation/index.html:313
msgctxt "page:first-investigation/index.html"
msgid "3. Follow the answer back to the code"
msgstr "3. Дотримуйтесь відповіді назад до коду"
#: website/public/first-investigation/index.html:314
msgctxt "page:first-investigation/index.html"
msgid "Look for a short explanation with file and line references:"
msgstr "Шукайте коротке пояснення з посиланнями на файли та рядки:"
#. {ph0}: <code>notes:export</code>
#. {ph1}: <code>notes.csv</code>
#. {ph2}: <code>id</code>
#. {ph3}: <code>title</code>
#: website/public/first-investigation/index.html:316
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The button sends a {ph0} message. The main process formats the notes as CSV "
"and writes {ph1} in the user’s Downloads folder. The columns are {ph2} and "
"{ph3}."
msgstr ""
"Кнопка надсилає повідомлення {ph0}. Основний процес форматує нотатки як CSV "
"і записує {ph1} в папку завантажень користувача. Це стовпці {ph2} і {ph3}."
#: website/public/first-investigation/index.html:324
msgctxt "page:first-investigation/index.html"
msgid "From the button to the file writer"
msgstr "Від кнопки до пристрою запису файлів"
#: website/public/first-investigation/index.html:353
msgctxt "page:first-investigation/index.html"
msgid ""
"REA’s static analysis pairs the message with its handler. The destination is"
" read from code."
msgstr ""
"Статичний аналіз REA відображає повідомлення з його обробником. Адресат "
"зчитується з коду."
#: website/public/first-investigation/index.html:369
msgctxt "page:first-investigation/index.html"
msgid ""
"The file path, formatter and write call are together in this handler. Ask "
"your agent to show these lines if its answer leaves them out."
msgstr ""
"Шлях до файлу, інструмент форматування та виклик запису знаходяться в цьому "
"обробнику разом. Попросіть свого агента показати ці рядки, якщо у його "
"відповіді їх немає."
#. {ph0}: <a href="../guides/javascript/#follow" >
#. {ph1}: </a >
#: website/public/first-investigation/index.html:374
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}See the full code trace and recorded REA result{ph1}."
msgstr ""
"{ph0}Перегляньте повний трасування коду та записаний результат{ph1} REA."
#: website/public/first-investigation/index.html:381
msgctxt "page:first-investigation/index.html"
msgid "4. Check a prediction"
msgstr "4. Перевірте прогноз"
#: website/public/first-investigation/index.html:382
msgctxt "page:first-investigation/index.html"
msgid ""
"A comma separates CSV columns. What happens when a note title itself "
"contains a comma or quotation marks?"
msgstr ""
"Стовпці CSV розділені комою. Що відбувається, коли заголовок нотатки сам по "
"собі містить кому або лапки?"
#: website/public/first-investigation/index.html:426
msgctxt "page:first-investigation/index.html"
msgid "Run the check yourself"
msgstr "Проведіть перевірку самостійно"
#. {ph0}: <code>notes-example</code>
#: website/public/first-investigation/index.html:427
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "Open a terminal in the unpacked {ph0} folder:"
msgstr "Відкрийте термінал у розпакованій папці {ph0}:"
#: website/public/first-investigation/index.html:449
msgctxt "page:first-investigation/index.html"
msgid ""
"This command uses a shell with here-document support, such as Bash or Zsh. "
"Your agent can run the same JavaScript in your platform’s shell."
msgstr ""
"Ця команда використовує оболонку з підтримкою here-document, таку як Bash "
"або Zsh. Ваш агент може запустити той самий JavaScript в оболонці вашої "
"платформи."
#: website/public/first-investigation/index.html:457
msgctxt "page:first-investigation/index.html"
msgid "5. Ask another question"
msgstr "5. Задайте ще одне питання"
#: website/public/first-investigation/index.html:458
msgctxt "page:first-investigation/index.html"
msgid "Try a follow-up in the same conversation:"
msgstr "Спробуйте продовжити ту саму розмову:"
#: website/public/first-investigation/index.html:460
msgctxt "page:first-investigation/index.html"
msgid ""
"What happens if the file can’t be written? Follow the error back to the "
"page."
msgstr ""
"Що станеться, якщо файл не може бути записаний? Поверніться на сторінку, "
"вказану в повідомленні про помилку."
#: website/public/first-investigation/index.html:465
msgctxt "page:first-investigation/index.html"
msgid ""
"Or give your agent an app of your own and ask about one button, file or "
"behavior."
msgstr ""
"Або надайте своєму агенту власну програму та запитайте про одну кнопку, файл"
" чи поведінку."
#. {ph0}: <a href="../showcase/notion/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:470
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}How Notion copies text and HTML{ph1}{ph2}Follow a clipboard feature in "
"a packaged Electron app.{ph3}"
msgstr ""
"{ph0}Як Notion копіює текст та HTML{ph1}{ph2} за допомогою функції буфера "
"обміну в вбудованому додатку Electron.{ph3}"
#. {ph0}: <a href="../showcase/dx-ball/" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:476
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}How DX-Ball calculates sound panning{ph1}{ph2}Read the original "
"instructions and the reconstruction’s checks.{ph3}"
msgstr ""
"{ph0}Як DX-Ball обчислює розташування стереозвуку{ph1}{ph2}, читайте в "
"оригінальних інструкціях і перевірках реконструкції.{ph3}"
#. {ph0}: <a href="../faq/#troubleshooting" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:484
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Troubleshoot setup or analysis{ph1}{ph2}Update REA and check the "
"connection if you get stuck.{ph3}"
msgstr ""
"{ph0}Усуньте неполадки в програмі установки або аналітичному{ph1}{ph2} "
"оновіть REA і перевірте з'єднання, якщо воно не працює.{ph3}"
#: website/public/first-investigation/index.html:6
msgctxt "page:first-investigation/index.html"
msgid "Your First Reverse Engineering Investigation — REA"
msgstr "Ваше перше дослідження в області реверс-інжинірингу-REA"
#: website/public/first-investigation/index.html:7
msgctxt "page:first-investigation/index.html"
msgid ""
"Try REA on a small Notes app. Set up your agent, ask where exported notes "
"go, and check the CSV formatter with a sample title."
msgstr ""
"Спробуйте REA у невеликому додатку для нотаток. Налаштуйте свого агента, "
"запитайте, куди надсилаються експортовані нотатки, і перевірте форматування "
"CSV із прикладом заголовка."
#: website/public/first-investigation/index.html:195
msgctxt "page:first-investigation/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/first-investigation/index.html:205
msgctxt "page:first-investigation/index.html"
msgid "Your first REA investigation"
msgstr "Ваше перше розслідування REA"
#: website/public/first-investigation/index.html:221
msgctxt "page:first-investigation/index.html"
msgid "Copy REA installation prompt"
msgstr "Скопіюйте запит на встановлення REA"
#: website/public/first-investigation/index.html:243
msgctxt "page:first-investigation/index.html"
msgid "Copy setup command"
msgstr "Команда Налаштування Копіювання"
#: website/public/first-investigation/index.html:271
msgctxt "page:first-investigation/index.html"
msgid "Copy Notes investigation prompt"
msgstr "Запит на копіювання нотаток для розслідування"
#: website/public/first-investigation/index.html:393
msgctxt "page:first-investigation/index.html"
msgid "Copy CSV check prompt"
msgstr "Скопіювати запит перевірки CSV"
#: website/public/first-investigation/index.html:435
msgctxt "page:first-investigation/index.html"
msgid "Copy formatter check command"
msgstr "Команда перевірки форматування копії"
#: website/public/first-investigation/index.html:510
msgctxt "page:first-investigation/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/get-started/index.html:99
msgctxt "page:get-started/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/get-started/index.html:181
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Home{ph1} / Get started"
msgstr "{ph0}Головний{ph1} сторінка / початок роботи"
#: website/public/get-started/index.html:182
msgctxt "page:get-started/index.html"
msgid "Set up REA."
msgstr "Налаштуйте REA ."
#: website/public/get-started/index.html:183
msgctxt "page:get-started/index.html"
msgid ""
"Connect REA to your coding agent, or inspect a local app from your terminal."
msgstr ""
"Підключіть REA до свого програміста або перевірте локальну програму зі свого"
" терміналу."
#: website/public/get-started/index.html:195
msgctxt "page:get-started/index.html"
msgid "Open a terminal and check:"
msgstr "Відкрийте термінал і перевірте:"
#: website/public/get-started/index.html:198
#: website/public/get-started/index.html:455
msgctxt "page:get-started/index.html"
msgid "Terminal"
msgstr "Термінал"
#: website/public/get-started/index.html:199
#: website/public/get-started/index.html:220
#: website/public/get-started/index.html:243
#: website/public/get-started/index.html:259
#: website/public/get-started/index.html:274
#: website/public/get-started/index.html:289
#: website/public/get-started/index.html:305
#: website/public/get-started/index.html:324
#: website/public/get-started/index.html:410
#: website/public/get-started/index.html:456
#: website/public/get-started/index.html:532
#: website/public/get-started/index.html:591
#: website/public/get-started/index.html:632
#: website/public/get-started/index.html:664
#: website/public/get-started/index.html:721
#: website/public/get-started/index.html:762
#: website/public/get-started/index.html:802
#: website/public/get-started/index.html:818
msgctxt "page:get-started/index.html"
msgid "Copy"
msgstr "Копіювати"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:216
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Windows (PowerShell){ph1}"
msgstr "{ph0} Windows (PowerShell){ph1}"
#: website/public/get-started/index.html:219
#: website/public/get-started/index.html:242
msgctxt "page:get-started/index.html"
msgid "Windows PowerShell"
msgstr "Оболонка PowerShell Windows"
#. {ph0}: <code>node -v</code>
#: website/public/get-started/index.html:231
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Type Y if asked to accept the terms. Close PowerShell, open it again, then "
"run {ph0}."
msgstr ""
"Введіть Y, якщо вас попросять прийняти умови. Закрийте PowerShell, відкрийте"
" його знову, а потім запустіть {ph0}."
#. {ph0}: <em>
#. {ph1}: </em>
#. {ph2}: <code>npx</code>
#: website/public/get-started/index.html:235
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If PowerShell later says {ph0}\"running scripts is disabled on this "
"system\"{ph1} when you run {ph2}, run this once and try again:"
msgstr ""
"Якщо пізніше PowerShell повідомляє, що {ph0}\"запуск сценаріїв у цій системі"
" вимкнено\"{ph1}, коли ви запустите {ph2}, запустіть це один раз і повторіть"
" спробу:"
#: website/public/get-started/index.html:255
msgctxt "page:get-started/index.html"
msgid "If you use Homebrew:"
msgstr "Якщо ви використовуєте Homebrew :"
#: website/public/get-started/index.html:258
msgctxt "page:get-started/index.html"
msgid "macOS · Homebrew"
msgstr "macOS · Homebrew"
#: website/public/get-started/index.html:270
msgctxt "page:get-started/index.html"
msgid "Otherwise:"
msgstr "Не інакше як:"
#: website/public/get-started/index.html:285
msgctxt "page:get-started/index.html"
msgid "Close Terminal, open it again, then:"
msgstr "Закрийте термінал, відкрийте його знову, потім:"
#. {ph0}: <code>curl</code>
#. {ph1}: <code>unzip</code>
#. {ph2}: <code>sudo apt install curl unzip</code>
#: website/public/get-started/index.html:316
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The installer needs {ph0} and {ph1} (on Debian/Ubuntu: {ph2}). Close the "
"terminal, open it again, then:"
msgstr ""
"Для установки буде потрібно {ph0} і {ph1} файл (у Debian / Ubuntu: {ph2}). "
"Закрийте термінал, відкрийте його знову, потім:"
#. {ph0}: <code>nodejs</code>
#. {ph1}: <code>node -v</code>
#: website/public/get-started/index.html:336
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Your distribution's own {ph0} package is often older than 22.19, so check "
"{ph1} if you use it instead."
msgstr ""
"Власний пакет {ph0} ваш дистрибутив часто старший за версію 22.19, тому "
"перевірте {ph1}, якщо ви використовуєте його замість цього."
#. {ph0}: <a href="https://nodejs.org/en/download">
#. {ph1}: </a>
#: website/public/get-started/index.html:340
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Prefer a regular installer? Download the LTS version from "
"{ph0}nodejs.org{ph1}."
msgstr ""
"Віддаєте перевагу звичайному інсталятору? Завантажте версію LTS з сайту "
"{ph0}nodejs.org{ph1}."
#: website/public/get-started/index.html:348
msgctxt "page:get-started/index.html"
msgid "Setup options"
msgstr "Параметри налаштування"
#. {ph0}: <a href="#agent">
#. {ph1}: </a>
#: website/public/get-started/index.html:350
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Connect your coding agent{ph1}"
msgstr "{ph0}Підключіть свій кодуючий агент{ph1}"
#. {ph0}: <a href="#terminal">
#. {ph1}: </a>
#: website/public/get-started/index.html:351
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Use the CLI{ph1}"
msgstr "{ph0}Використовуйте CLI{ph1}"
#. {ph0}: <a href="#native">
#. {ph1}: </a>
#: website/public/get-started/index.html:352
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Set up native analysis{ph1}"
msgstr "{ph0}Налаштування аналізу програм з машинним кодом{ph1}"
#. {ph0}: <a href="#help">
#. {ph1}: </a>
#: website/public/get-started/index.html:353
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Getting help{ph1}"
msgstr "{ph0}Отримання допомоги{ph1}"
#: website/public/get-started/index.html:358
msgctxt "page:get-started/index.html"
msgid "Connect your coding agent"
msgstr "Підключіть свій кодуючий агент"
#: website/public/get-started/index.html:359
msgctxt "page:get-started/index.html"
msgid ""
"Run setup to connect REA to your coding agent. Client choices include Claude"
" Code, Codex, Cursor, Gemini CLI, Windsurf, Grok Build, and other supported "
"MCP clients. Grok Bot's connector is added from its chat."
msgstr ""
"Запустіть програму встановлення, щоб підключити REA до свого програміста. "
"Серед доступних клієнтів Claude Code, Codex, Cursor, Gemini CLI, Windsurf, "
"Grok Build та інші підтримувані клієнти MCP. Коннектор Grok-бота доданий з "
"його чату."
#: website/public/get-started/index.html:366
msgctxt "page:get-started/index.html"
msgid "New to coding agents?"
msgstr "Новачок у кодуванні агентів?"
#: website/public/get-started/index.html:367
msgctxt "page:get-started/index.html"
msgid ""
"A coding agent is an AI assistant that works on your computer instead of in "
"a browser tab. It can read files and run commands, and it asks before making"
" changes. REA gives it reverse-engineering tools."
msgstr ""
"Програміст-це помічник зі штучним інтелектом, який працює на вашому "
"комп'ютері, а не на вкладці браузера. Він може читати файли та виконувати "
"команди, а також запитує їх перед внесенням змін. REA надає йому "
"інструменти для зворотного проектування."
#: website/public/get-started/index.html:373
msgctxt "page:get-started/index.html"
msgid ""
"If you don't have one yet, pick one, follow its install page and sign in:"
msgstr ""
"Якщо у вас його ще немає, виберіть його, перейдіть на сторінку встановлення "
"та увійдіть:"
#. {ph0}: <strong >
#. {ph1}: <a href="https://code.claude.com/docs/en/setup" >
#. {ph2}: </a >
#. {ph3}: </strong >
#: website/public/get-started/index.html:378
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}{ph1}Claude Code{ph2}{ph3} by Anthropic. Needs a paid Claude plan."
msgstr ""
"{ph0}{ph1} Claude Code{ph2}{ph3} від Anthropic . Потрібен платний тарифний "
"план Claude."
#. {ph0}: <strong >
#. {ph1}: <a href="https://github.com/openai/codex">
#. {ph2}: </a>
#. {ph3}: </strong >
#: website/public/get-started/index.html:386
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}{ph1}Codex{ph2}{ph3} by OpenAI. Sign in with your ChatGPT account."
msgstr ""
"{ph0}{ph1} Codex{ph2}{ph3} за допомогою OpenAI . Увійдіть у свій обліковий "
"запис ChatGPT."
#. {ph0}: <strong >
#. {ph1}: <a href="https://opencode.ai/docs">
#. {ph2}: </a>
#. {ph3}: </strong >
#: website/public/get-started/index.html:392
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}{ph1}OpenCode{ph2}{ph3}, open source. Connect the model provider of "
"your choice."
msgstr ""
"{ph0}{ph1} OpenCode{ph2}{ph3} , з відкритим кодом. Підключіть Постачальника "
"моделі за вашим вибором."
#: website/public/get-started/index.html:398
msgctxt "page:get-started/index.html"
msgid ""
"Then open it and copy the prompt below into it. The agent runs REA's setup "
"and shows you the plan before changing anything."
msgstr ""
"Потім відкрийте його і скопіюйте в нього наведене нижче запрошення. Перш ніж"
" щось змінити, агент запустить Налаштування REA і покаже вам план."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/get-started/index.html:405
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#: website/public/get-started/index.html:430
msgctxt "page:get-started/index.html"
msgid "Or run setup yourself"
msgstr "Або запустіть програму налаштування самостійно"
#: website/public/get-started/index.html:432
msgctxt "page:get-started/index.html"
msgid "How do I open a terminal?"
msgstr "Як відкрити термінал?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:434
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Windows:{ph1} open the Start menu, type {ph2}PowerShell{ph3} and press "
"Enter."
msgstr ""
"{ph0} Windows :{ph1} відкрийте меню \"Пуск\", введіть {ph2}PowerShell{ph3} і"
" натисніть Enter."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>Space</kbd>
#. {ph4}: <em>
#. {ph5}: </em>
#: website/public/get-started/index.html:438
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} press {ph2} {ph3}, type {ph4}Terminal{ph5} and press Enter."
msgstr ""
"{ph0} macOS :{ph1} натиснути {ph2} {ph3}, ввівши {ph4}Terminal{ph5} і "
"натисніть Enter."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>Ctrl</kbd>
#. {ph3}: <kbd>Alt</kbd>
#. {ph4}: <kbd>T</kbd>
#: website/public/get-started/index.html:442
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux:{ph1} press {ph2} {ph3} {ph4} on most desktops."
msgstr ""
"{ph0} Linux :{ph1} натиснути {ph2} {ph3} {ph4} на більшості настільних "
"комп'ютерів."
#. {ph0}: <kbd>Ctrl</kbd>
#. {ph1}: <kbd>V</kbd>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>V</kbd>
#. {ph4}: <kbd>Ctrl</kbd>
#. {ph5}: <kbd>Shift</kbd>
#. {ph6}: <kbd>V</kbd>
#: website/public/get-started/index.html:447
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Paste a command with {ph0} {ph1} (macOS: {ph2} {ph3}; Linux terminals: {ph4}"
" {ph5} {ph6}), then press Enter."
msgstr ""
"Введіть команду за допомогою {ph0} {ph1} ( macOS : {ph2} {ph3}; Linux для "
"терміналів: {ph4} {ph5} {ph6}), потім натисніть Enter."
#: website/public/get-started/index.html:468
msgctxt "page:get-started/index.html"
msgid ""
"Choose your client and review the setup plan. REA adds its MCP connection "
"and the matching investigation skill, keeping a backup of existing "
"configuration. It asks before applying the changes."
msgstr ""
"Виберіть свого клієнта та ознайомтеся з планом Налаштування. REA додає "
"підключення MCP і відповідний навик дослідження, зберігаючи резервну копію "
"існуючої конфігурації. Перед застосуванням змін програма запитує доступ."
#: website/public/get-started/index.html:473
msgctxt "page:get-started/index.html"
msgid "Restart your client when setup finishes."
msgstr "Після завершення встановлення перезавантажте клієнт."
#: website/public/get-started/index.html:475
msgctxt "page:get-started/index.html"
msgid "How do I restart my client?"
msgstr "Як перезапустити клієнта?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>Q</kbd>
#: website/public/get-started/index.html:476
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Desktop apps{ph1} (Claude Desktop, Cursor, Windsurf, VS Code): quit the"
" app completely, then open it again. Closing the window isn't enough. On "
"macOS press {ph2} {ph3}; on Windows, also quit from the tray icon if there "
"is one."
msgstr ""
"{ph0}Додатки для настільних{ph1} комп'ютерів (Claude для настільних "
"комп'ютерів, Cursor, Windsurf, VS Code): повністю закрийте програму, а потім"
" відкрийте її знову. Закрити вікно недостатньо. На macOS натисніть {ph2} "
"{ph3}; на Windows також завершіть роботу за допомогою піктограми лотка, якщо"
" вона є."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:483
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Terminal agents{ph1} (Claude Code, Codex, Gemini CLI): exit the session"
" and start it again."
msgstr ""
"{ph0}Термінальні агенти{ph1} (Claude Code, Codex, Gemini CLI): вийдіть із "
"сеансу та запустіть його знову."
#: website/public/get-started/index.html:488
msgctxt "page:get-started/index.html"
msgid ""
"Give your agent a target path and a specific question. For a JavaScript or "
"Electron app, you might start with:"
msgstr ""
"Вкажіть своєму агенту цільовий шлях і задайте конкретне запитання. Для "
"програми JavaScript або Electron ви можете почати з:"
#. {ph0}: <code>/absolute/path/to/app</code>
#: website/public/get-started/index.html:493
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Look at {ph0} and find how it exports data. Show the entry points, calls and"
" dependencies involved, with the source locations for your findings."
msgstr ""
"Подивіться на {ph0} і дізнайтеся, як він експортує дані. Вкажіть точки "
"входу, виклики та залежності, а також вихідні місця для Ваших результатів."
#: website/public/get-started/index.html:499
msgctxt "page:get-started/index.html"
msgid "Replace the path with your local target."
msgstr "Замініть шлях на ваш локальний цільовий об'єкт."
#: website/public/get-started/index.html:501
msgctxt "page:get-started/index.html"
msgid "How do I get a folder's full path?"
msgstr "Як отримати повний шлях до папки?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:503
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Windows:{ph1} in File Explorer, right-click the folder and choose "
"{ph2}Copy as path{ph3}. On Windows 10, hold Shift while right-clicking."
msgstr ""
"{ph0} Windows :{ph1} у Провіднику файлів клацніть правою кнопкою миші папку "
"та виберіть \"{ph2}Копіювати як шлях{ph3}\". На Windows 10, утримуючи Shift,"
" клацніть правою кнопкою миші."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:508
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} in Finder, right-click the folder, hold Option and choose "
"{ph2}Copy \"…\" as Pathname{ph3}."
msgstr ""
"{ph0} macOS :{ph1} у Finder клацніть правою кнопкою миші папку, утримуйте "
"опцію та виберіть {ph2}Копіювати \"...\"як шлях{ph3}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:512
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Any system:{ph1} drag the folder into a terminal window and its path "
"appears."
msgstr ""
"{ph0}Будь-яка система:{ph1} перетягніть папку у вікно терміналу, і з'явиться"
" шлях до неї."
#: website/public/get-started/index.html:517
msgctxt "page:get-started/index.html"
msgid "In a terminal, put quotes around a path that contains spaces."
msgstr "У терміналі вкладіть шлях, що містить пробіли, у лапки."
#: website/public/get-started/index.html:524
msgctxt "page:get-started/index.html"
msgid "Use the CLI"
msgstr "Використовуйте CLI"
#: website/public/get-started/index.html:525
msgctxt "page:get-started/index.html"
msgid ""
"Analyze a JavaScript or Electron application folder or ASAR archive without "
"running the app:"
msgstr ""
"Проаналізуйте папку Програми JavaScript або Electron або архів ASAR, не "
"запускаючи програму:"
#: website/public/get-started/index.html:531
msgctxt "page:get-started/index.html"
msgid "Static application analysis"
msgstr "Статичний аналіз додатків"
#. {ph0}: <code>.asar</code>
#. {ph1}: <code>"D:/apps/example"</code>
#: website/public/get-started/index.html:544
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Replace the path with your extracted app directory or {ph0} file. On "
"Windows, a path such as {ph1} works here."
msgstr ""
"Замініть шлях на каталог витягнутої Програми або файл {ph0}. У Windows тут "
"працює шлях, наприклад {ph1}."
#: website/public/get-started/index.html:550
msgctxt "page:get-started/index.html"
msgid "Where do I find an app's .asar file?"
msgstr "Де я можу знайти файл програми asar?"
#. {ph0}: <code>resources</code>
#: website/public/get-started/index.html:551
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Electron apps usually keep it in a {ph0} folder:"
msgstr "Програми Electron зазвичай зберігають його в папці {ph0}:"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code
#. >C:\Users\&lt;you&gt;\AppData\Local\Programs\&lt;App&gt;\resources\app.asar</code
#. >
#: website/public/get-started/index.html:556
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Windows:{ph1} {ph2}"
msgstr "{ph0} Windows :{ph1} {ph2}"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code
#. >/Applications/&lt;App&gt;.app/Contents/Resources/app.asar</code >
#. {ph3}: <em>
#. {ph4}: </em>
#: website/public/get-started/index.html:562
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} {ph2} (right-click the app and choose {ph3}Show Package "
"Contents{ph4})"
msgstr ""
"{ph0} macOS :{ph1} {ph2} (клацніть правою кнопкою миші додаток і виберіть "
"{ph3}Показати вміст пакета{ph4})"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>/opt/&lt;App&gt;/resources/app.asar</code>
#: website/public/get-started/index.html:570
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux:{ph1} often {ph2}"
msgstr "{ph0} Linux :{ph1} часто {ph2}"
#. {ph0}: <code>app.asar</code>
#: website/public/get-started/index.html:575
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Some apps install elsewhere. Search the app's folder for {ph0}."
msgstr ""
"Деякі додатки встановлюються в іншому місці. Знайдіть у папці програми "
"{ph0}."
#: website/public/get-started/index.html:580
msgctxt "page:get-started/index.html"
msgid ""
"The result identifies the app, shows connections between modules and gives "
"their source locations. Connections REA cannot resolve are marked in the "
"result."
msgstr ""
"Результат ідентифікує додаток, показує з'єднання між модулями і вказує місце"
" розташування їх джерел. В результаті відзначаються з'єднання, які REA не "
"може вирішити."
#. {ph0}: <code>rea</code>
#: website/public/get-started/index.html:585
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "If you'd like a permanent {ph0} command in your shell:"
msgstr "Якщо ви хочете, щоб у вашій оболонці була постійна команда {ph0}:"
#: website/public/get-started/index.html:590
msgctxt "page:get-started/index.html"
msgid "Install the CLI"
msgstr "Встановіть CLI"
#. {ph0}: <a href="../guides/javascript/" >
#. {ph1}: </a >
#: website/public/get-started/index.html:602
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Continue with the JavaScript application guide{ph1}"
msgstr "{ph0}Продовжуйте читати посібник із застосування JavaScript{ph1}"
#: website/public/get-started/index.html:610
msgctxt "page:get-started/index.html"
msgid "Set up native analysis"
msgstr "Налаштування аналізу програм з машинним кодом"
#: website/public/get-started/index.html:611
msgctxt "page:get-started/index.html"
msgid ""
"Native binaries need a local analysis tool. Choose and configure one below, "
"then give REA your executable or library."
msgstr ""
"Програмам з машинним кодом потрібен локальний інструмент аналізу. Виберіть і"
" налаштуйте один із наведених нижче інструментів, а потім вкажіть REA ваш "
"виконуваний файл або бібліотеку."
#: website/public/get-started/index.html:616
msgctxt "page:get-started/index.html"
msgid "Choose a tool: Ghidra, Hopper or IDA"
msgstr "Виберіть інструмент: Ghidra, Hopper або IDA"
#: website/public/get-started/index.html:621
msgctxt "page:get-started/index.html"
msgid ""
"Use an existing Ghidra 12.1.x installation and a 64-bit JDK 21 or newer on "
"Linux or macOS, on x64 or arm64. Your Ghidra installation needs a native "
"decompiler for your host architecture. Set the paths before running setup:"
msgstr ""
"Використовуйте існуючу версію Ghidra 12.1.x і 64-розрядну версію JDK 21 або "
"новіше на Linux або macOS , на x64 або arm64. Для встановлення Ghidra "
"потрібен власний декомпілятор для архітектури вашого хоста. Задайте шляхи "
"перед запуском програми установки:"
#: website/public/get-started/index.html:628
msgctxt "page:get-started/index.html"
msgid "Connect your Ghidra installation"
msgstr "Підключіть вашу установку Ghidra"
#: website/public/get-started/index.html:631
msgctxt "page:get-started/index.html"
msgid "Ghidra connection · macOS / Linux"
msgstr "Підключення Ghidra * macOS / Linux"
#: website/public/get-started/index.html:646
msgctxt "page:get-started/index.html"
msgid ""
"Replace both paths with your existing installations. Setup checks them and "
"records valid settings for your selected client. On Linux arm64, you may "
"need to build Ghidra's native decompiler separately."
msgstr ""
"Замініть обидва шляхи на існуючі установки. Програма установки перевіряє їх "
"і записує коректні настройки для обраного Вами клієнта. У Linux arm64 вам "
"може знадобитися окремо зібрати власний декомпілятор Ghidra."
#: website/public/get-started/index.html:654
msgctxt "page:get-started/index.html"
msgid "Connect Ghidra on Windows"
msgstr "Підключіть Ghidra до Windows"
#: website/public/get-started/index.html:655
msgctxt "page:get-started/index.html"
msgid ""
"Windows x64 has experimental, read-only support for native x86 and x64 PE "
"applications and DLLs on fixed local NTFS drives. Use an existing Ghidra "
"12.1.x installation and a 64-bit JDK 21 or newer:"
msgstr ""
"Windows x64 має експериментальну підтримку лише для читання власних програм "
"x86 та x64 PE та бібліотек DLL на фіксованих локальних дисках NTFS. "
"Використовуйте існуючу установку Ghidra 12.1.x і 64-розрядну версію JDK 21 "
"або новіше:"
#: website/public/get-started/index.html:663
msgctxt "page:get-started/index.html"
msgid "Ghidra connection · Windows PowerShell"
msgstr "Підключення Ghidra * Windows PowerShell"
#: website/public/get-started/index.html:678
msgctxt "page:get-started/index.html"
msgid ""
"Replace the two paths with your installations, then review setup's plan."
msgstr ""
"Замініть ці два шляхи на свої установки, а потім перегляньте план "
"встановлення."
#: website/public/get-started/index.html:688
msgctxt "page:get-started/index.html"
msgid ""
"Connect Hopper on macOS or Linux. Run the setup command above; it detects an"
" existing installation or offers an installation plan for your approval."
msgstr ""
"Підключіть Hopper до macOS або Linux. Запустіть наведену вище команду "
"встановлення; вона виявить існуючу установку або запропонує план "
"встановлення для вашого схвалення."
#: website/public/get-started/index.html:693
msgctxt "page:get-started/index.html"
msgid ""
"On macOS, complete Hopper's first-run choice of demo mode or license "
"activation before an unattended analysis."
msgstr ""
"На macOS перед автоматичним аналізом виконайте перший запуск Hopper, "
"вибравши демонстраційний режим або активацію ліцензії."
#: website/public/get-started/index.html:702
msgctxt "page:get-started/index.html"
msgid ""
"The verified IDA setups use Windows, with an existing MCP registration for "
"an attached GUI or a headless database. Linux and macOS headless analysis "
"remains unverified."
msgstr ""
"Перевірені Налаштування IDA використовують Windows з наявною реєстрацією MCP"
" для підключеного графічного інтерфейсу користувача або безголової бази "
"даних. Аналіз Linux і macOS без урахування даних залишається неперевіреним."
#: website/public/get-started/index.html:708
msgctxt "page:get-started/index.html"
msgid "Connect an existing IDA MCP registration"
msgstr "Підключіть існуючу реєстрацію IDA MCP"
#. {ph0}: <code>command</code>
#. {ph1}: <code>args</code>
#. {ph2}: <code>env</code>
#. {ph3}: <code>mcpServers</code>
#. {ph4}: <code>ida-pro-mcp</code>
#: website/public/get-started/index.html:711
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Keep the upstream server's working {ph0}, {ph1} and optional {ph2} in a JSON"
" file. An existing {ph3} object with an {ph4} entry is also accepted. Point "
"REA at that file before setup:"
msgstr ""
"Збережіть робочу {ph0} вищого сервера, {ph1} і необов'язковий {ph2} у файлі "
"JSON. Також приймається існуючий {ph3}об'єкт mcpServers із записом {ph4}. "
"Вкажіть REA у цьому файлі перед встановленням:"
#: website/public/get-started/index.html:720
msgctxt "page:get-started/index.html"
msgid "IDA connection · Windows PowerShell"
msgstr "Підключення IDA * Windows PowerShell"
#. {ph0}: <code>"mode": "headless"</code>
#: website/public/get-started/index.html:735
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The attached profile uses upstream legacy 1.4.0 tools with the original "
"binary already open in IDA. The headless profile uses the upstream database-"
"supervisor API and a registration with {ph0}; real verification covers an "
"IDA 9.3 Windows x64 supervisor. Doctor checks the registration without "
"starting IDA."
msgstr ""
"Доданий профіль використовує застарілі інструменти версії 1.4.0, а вихідний "
"двійковий файл уже відкритий у IDA . У профілі headless використовується "
"вищестоящий API database-supervisor і реєстрація в {ph0}; для реальної "
"перевірки використовується супервізор IDA 9.3 Windows x64. Лікар перевіряє "
"реєстрацію, не запускаючи IDA ."
#. {ph0}: <code>--provider ida</code>
#. {ph1}: <code>REA_IDA_MCP_CONFIG</code>
#: website/public/get-started/index.html:744
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Give REA the original executable path, with {ph0} in a CLI query. For an "
"agent, include {ph1} in the REA registration's environment and select IDA "
"when opening the binary."
msgstr ""
"Вкажіть REA вихідний шлях до виконуваного файлу за допомогою {ph0} у запиті "
"CLI. Для агента включіть {ph1} у середу реєстрації REA і виберіть IDA при "
"відкритті двійкового файлу."
#: website/public/get-started/index.html:756
msgctxt "page:get-started/index.html"
msgid "For an existing Ghidra setup, inspect a function with:"
msgstr "Для існуючого Налаштування Ghidra перевірте функцію за допомогою:"
#: website/public/get-started/index.html:761
msgctxt "page:get-started/index.html"
msgid "Function analysis"
msgstr "Функціональний аналіз"
#. {ph0}: <code>main</code>
#: website/public/get-started/index.html:774
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Replace {ph0} with the function name or address you want to inspect."
msgstr "Замінивши {ph0} на ім'я функції або адресу, яку ви хочете перевірити."
#: website/public/get-started/index.html:779
msgctxt "page:get-started/index.html"
msgid "How native analysis sessions work"
msgstr "Як працюють сеанси аналізу програм з машинним кодом"
#: website/public/get-started/index.html:780
msgctxt "page:get-started/index.html"
msgid ""
"Each CLI command imports and analyzes the binary, then closes its session. "
"Your agent's MCP queries reuse the imported binary while that session is "
"open."
msgstr ""
"Кожна команда CLI імпортує та аналізує двійковий файл, а потім закриває свій"
" сеанс. Запити MCP вашого агента повторно використовують імпортований "
"двійковий файл, поки цей сеанс відкритий."
#. {ph0}: <a href="../guides/native/">
#. {ph1}: </a>
#: website/public/get-started/index.html:786
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Follow a native analysis example{ph1} to see how the function result "
"leads to a recovered calculation."
msgstr ""
"{ph0}Дотримуйтесь прикладу аналізу програм з машинним кодом{ph1}, щоб "
"побачити, як результат функції призводить до відновленого обчислення."
#: website/public/get-started/index.html:793
msgctxt "page:get-started/index.html"
msgid "Getting help"
msgstr "Отримання допомоги"
#: website/public/get-started/index.html:794
msgctxt "page:get-started/index.html"
msgid "If your agent doesn't see REA"
msgstr "Якщо ваш агент не бачить REA"
#. {ph0}: <code>doctor</code>
#: website/public/get-started/index.html:795
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Restart or reconnect the client after setup. Check its REA connection with "
"{ph0}; for Codex:"
msgstr ""
"Перезапустіть або підключіть клієнт після встановлення. Перевірте його "
"REA-з'єднання з {ph0}; для Codex :"
#: website/public/get-started/index.html:801
msgctxt "page:get-started/index.html"
msgid "Check one client"
msgstr "Перевірте одного клієнта"
#: website/public/get-started/index.html:813
msgctxt "page:get-started/index.html"
msgid "If a provider needs attention"
msgstr "Якщо постачальник послуг потребує уваги"
#: website/public/get-started/index.html:814
msgctxt "page:get-started/index.html"
msgid "Check the provider you're using. For Ghidra:"
msgstr "Перевірте, яким провайдером ви користуєтесь. Для Ghidra :"
#: website/public/get-started/index.html:817
msgctxt "page:get-started/index.html"
msgid "Check one provider"
msgstr "Перевірте одного постачальника"
#: website/public/get-started/index.html:829
msgctxt "page:get-started/index.html"
msgid "The report gives the failed check and a suggested next step."
msgstr ""
"У звіті міститься інформація про невдалу перевірку та запропонований "
"наступний крок."
#. {ph0}: <a href="../faq/">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:831
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}REA FAQ{ph1}{ph2}Quick answers on updates, agents and analysis.{ph3}"
msgstr ""
"{ph0}REA задаваний{ph1}{ph2} питання щодо оновлень, агентів та аналізу.{ph3}"
#. {ph0}: <a href="../guides/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/get-started/index.html:835
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Choose an investigation guide{ph1}{ph2}Worked examples for a binary, an"
" Electron app and a browser.{ph3}"
msgstr ""
"{ph0}Виберіть Посібник з дослідження{ph1}{ph2} і приклади для двійкового "
"файлу, програми Electron та браузера.{ph3}"
#. {ph0}: <a href="https://github.com/morluto/rea/issues">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:842
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}GitHub issues{ph1}{ph2}Report a problem with the command and "
"diagnostics.{ph3}"
msgstr ""
"{ph0} Проблема{ph1}{ph2} GitHub повідомляють про проблему з командою та "
"діагностикою.{ph3}"
#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:846
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}REA community{ph1}{ph2}Questions, investigations and work in "
"progress.{ph3}"
msgstr ""
"{ph0} REA питання спільноти{ph1}{ph2}, розслідування та поточна робота.{ph3}"
#: website/public/get-started/index.html:6
msgctxt "page:get-started/index.html"
msgid "Install REA and Set Up Your Coding Agent"
msgstr "Встановіть REA і налаштуйте свій кодуючий агент"
#: website/public/get-started/index.html:7
msgctxt "page:get-started/index.html"
msgid ""
"Connect REA to your coding agent or inspect a local JavaScript or Electron "
"app from the terminal. Setup, first questions and native provider guides."
msgstr ""
"Підключіть REA до Вашого програміста або скористайтеся локальним додатком "
"JavaScript або Electron з терміналу. Налаштування, перші Питання та "
"інструкції для місцевих провайдерів."
#: website/public/get-started/index.html:199
msgctxt "page:get-started/index.html"
msgid "Copy Node.js version check"
msgstr "Скопіюйте перевірку версії Node.js"
#: website/public/get-started/index.html:220
msgctxt "page:get-started/index.html"
msgid "Copy Node.js installation command for Windows"
msgstr "Скопіюйте команду встановлення Node.js для Windows"
#: website/public/get-started/index.html:243
msgctxt "page:get-started/index.html"
msgid "Copy PowerShell execution policy command"
msgstr "Скопіюйте команду політики виконання PowerShell"
#: website/public/get-started/index.html:259
msgctxt "page:get-started/index.html"
msgid "Copy Homebrew Node.js installation command"
msgstr "Скопіювати команду установки Homebrew Node.js"
#: website/public/get-started/index.html:274
msgctxt "page:get-started/index.html"
msgid "Copy fnm installation command for macOS"
msgstr "Скопіюйте команду встановлення fnm для macOS"
#: website/public/get-started/index.html:289
msgctxt "page:get-started/index.html"
msgid "Copy Node.js 24 commands for macOS"
msgstr "Скопіюйте 24 команди Node.js для macOS"
#: website/public/get-started/index.html:305
msgctxt "page:get-started/index.html"
msgid "Copy fnm installation command for Linux"
msgstr "Скопіюйте команду встановлення fnm для Linux"
#: website/public/get-started/index.html:324
msgctxt "page:get-started/index.html"
msgid "Copy Node.js 24 commands for Linux"
msgstr "Скопіюйте 24 команди Node.js для Linux"
#: website/public/get-started/index.html:347
msgctxt "page:get-started/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/get-started/index.html:356
msgctxt "page:get-started/index.html"
msgid "REA getting started guide"
msgstr "REA Керівництво по початку роботи"
#: website/public/get-started/index.html:410
msgctxt "page:get-started/index.html"
msgid "Copy REA installation prompt"
msgstr "Скопіюйте запит на встановлення REA"
#: website/public/get-started/index.html:456
msgctxt "page:get-started/index.html"
msgid "Copy agent setup command"
msgstr "Команда Налаштування агента копіювання"
#: website/public/get-started/index.html:532
msgctxt "page:get-started/index.html"
msgid "Copy JavaScript analysis command"
msgstr "Скопіювати команду аналізу JavaScript"
#: website/public/get-started/index.html:591
msgctxt "page:get-started/index.html"
msgid "Copy CLI installation command"
msgstr "Скопіювати команду установки CLI"
#: website/public/get-started/index.html:632
msgctxt "page:get-started/index.html"
msgid "Copy ghidra connection · macos / linux"
msgstr "Скопіюйте з'єднання з ghidra * macos / linux"
#: website/public/get-started/index.html:664
msgctxt "page:get-started/index.html"
msgid "Copy Ghidra connection for Windows PowerShell"
msgstr "Скопіюйте підключення Ghidra для Windows PowerShell"
#: website/public/get-started/index.html:721
msgctxt "page:get-started/index.html"
msgid "Copy IDA connection for Windows PowerShell"
msgstr "Скопіюйте підключення IDA для Windows PowerShell"
#: website/public/get-started/index.html:762
msgctxt "page:get-started/index.html"
msgid "Copy native function analysis command"
msgstr "Скопіювати команду аналізу власної функції"
#: website/public/get-started/index.html:802
msgctxt "page:get-started/index.html"
msgid "Copy client diagnosis command"
msgstr "Скопіювати команду діагностики клієнта"
#: website/public/get-started/index.html:818
msgctxt "page:get-started/index.html"
msgid "Copy provider diagnosis command"
msgstr "Команда діагностики Постачальника копіювання"
#: website/public/get-started/index.html:869
msgctxt "page:get-started/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/guides/browser/index.html:99
msgctxt "page:guides/browser/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/browser/index.html:181
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / Browser observation"
msgstr "{ph0}Головний{ph1} сторінка / {ph2}Керівництво{ph3} / Огляд браузера"
#. {ph0}: <br />
#: website/public/guides/browser/index.html:185
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "See what happens{ph0}when you click."
msgstr "Подивимося, що станеться{ph0}коли ви натиснете."
#: website/public/guides/browser/index.html:186
msgctxt "page:guides/browser/index.html"
msgid ""
"Use a small browser app to connect an action, its network request and the "
"JavaScript that builds a download."
msgstr ""
"Використовуйте невеликий додаток браузера для підключення дії, його "
"мережевого запиту та JavaScript, який створює завантаження."
#: website/public/guides/browser/index.html:193
msgctxt "page:guides/browser/index.html"
msgid "In this guide"
msgstr "У цьому керівництві"
#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:195
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}Навести приклад{ph1}"
#. {ph0}: <a href="#prepare">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:196
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Open the browser{ph1}"
msgstr "{ph0}Відкрийте браузер{ph1}"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:197
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Запитайте свого агента{ph1}"
#. {ph0}: <a href="#capture">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:198
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Capture from CLI{ph1}"
msgstr "{ph0}Захоплення з CLI{ph1}"
#. {ph0}: <a href="#result">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:199
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Read the request and script{ph1}"
msgstr "{ph0}Прочитайте запит і скрипт{ph1}"
#: website/public/guides/browser/index.html:204
msgctxt "page:guides/browser/index.html"
msgid "What happens when you click Export?"
msgstr "Що відбувається, коли ви натискаєте кнопку Експортувати?"
#. {ph0}: <a href="../../examples/notes-web/">
#. {ph1}: </a>
#. {ph2}: <strong>
#. {ph3}: </strong>
#. {ph4}: <code>notes.json</code>
#: website/public/guides/browser/index.html:205
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The {ph0}Notes browser example{ph1} has an {ph2}Export notes{ph3} button. "
"Clicking it loads {ph4}, formats the two notes as CSV, and starts a "
"download."
msgstr ""
"В {ph0}прикладі браузера Notes{ph1} є кнопка {ph2}експорту заміток{ph3}. При"
" натисканні на неї завантажується файл {ph4}, дві нотатки форматуються як "
"CSV і починається завантаження."
#: website/public/guides/browser/index.html:213
msgctxt "page:guides/browser/index.html"
msgid "From the click to the CSV download"
msgstr "Від кліка до завантаження CSV"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/guides/browser/index.html:215
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}01 · You{ph1}{ph2}Click Export notes{ph3}{ph4}Perform the action in "
"your browser while the capture is running.{ph5}"
msgstr ""
"{ph0}01 * ви{ph1}{ph2} натискаєте кнопку Експорт заміток{ph3}{ph4} і "
"виконуєте цю дію в своєму браузері під час виконання запису.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/guides/browser/index.html:223
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}02 · REA{ph1}{ph2}Record the request{ph3}{ph4}Capture the request URL, "
"response status and JSON structure from the selected page.{ph5}"
msgstr ""
"{ph0}02 · REA{ph1}{ph2} Запишіть запит{ph3}{ph4}, захопіть URL-адресу "
"запиту, статус відповіді та структуру JSON із вибраної сторінки.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>fetch("./notes.json")</code>
#. {ph6}: <code>export.js</code>
#. {ph7}: </span >
#: website/public/guides/browser/index.html:231
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}03 · Your agent{ph1}{ph2}Read the export code{ph3}{ph4}Connect the "
"observed request to {ph5} in {ph6}.{ph7}"
msgstr ""
"{ph0}03 * ваш агент{ph1}{ph2} прочитав експортний код{ph3}{ph4}, що "
"підключає спостережуваний запит до {ph5} в {ph6}.{ph7}"
#: website/public/guides/browser/index.html:244
msgctxt "page:guides/browser/index.html"
msgid "Start the capture before clicking Export notes."
msgstr "Запустіть запис, перш ніж натиснути кнопку Експортувати нотатки."
#: website/public/guides/browser/index.html:250
msgctxt "page:guides/browser/index.html"
msgid "Open Chrome with remote debugging"
msgstr "Відкрийте Chrome з віддаленою налагодженням"
#: website/public/guides/browser/index.html:251
msgctxt "page:guides/browser/index.html"
msgid ""
"Open the hosted Notes example with a separate browser profile and a local "
"debugging port. On Linux:"
msgstr ""
"Відкрийте хостинг-приклад Notes, використовуючи окремий профіль браузера та "
"локальний порт для налагодження. На Linux :"
#: website/public/guides/browser/index.html:257
msgctxt "page:guides/browser/index.html"
msgid "Start the example browser"
msgstr "Запустіть приблизний браузер"
#: website/public/guides/browser/index.html:258
#: website/public/guides/browser/index.html:290
#: website/public/guides/browser/index.html:324
#: website/public/guides/browser/index.html:343
#: website/public/guides/browser/index.html:408
msgctxt "page:guides/browser/index.html"
msgid "Copy"
msgstr "Копіювати"
#: website/public/guides/browser/index.html:272
msgctxt "page:guides/browser/index.html"
msgid ""
"Use your installed browser's executable path on macOS or Windows. You can "
"replace the page URL with another page you want to inspect."
msgstr ""
"Використовуйте шлях до виконуваного файлу встановленого браузера в macOS або"
" Windows . Ви можете замінити URL-адресу сторінки на іншу сторінку, яку ви "
"хочете переглянути."
#: website/public/guides/browser/index.html:277
msgctxt "page:guides/browser/index.html"
msgid ""
"REA connects to this existing browser. You keep control of the page, perform"
" the action, and close the browser when finished."
msgstr ""
"REA підключається до цього існуючого браузера. Ви зберігаєте контроль над "
"сторінкою, виконуєте дію та закриваєте браузер після завершення."
#: website/public/guides/browser/index.html:283
msgctxt "page:guides/browser/index.html"
msgid "Ask your agent to watch one action"
msgstr "Попросіть свого агента Переглянути одну дію"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/guides/browser/index.html:286
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="browser-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/browser/index.html:299
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this page while I click Export notes. "
"What request does it make, and how is the CSV built?{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA, щоб переглянути цю сторінку, поки я "
"натискаю \"експортувати нотатки\". Який запит вона надсилає та як працює "
"CSV?{ph3}{ph4}{ph5}"
#. {ph0}: <code>http://127.0.0.1:9222</code>
#: website/public/guides/browser/index.html:307
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Example prompt. Give your agent the debugging endpoint, {ph0}, and the page "
"URL. Let it start the capture before you click."
msgstr ""
"Приклад запиту. Вкажіть своєму агенту кінцеву точку налагодження, {ph0} і "
"URL-адреса сторінки. Нехай він запустить запис до того, як ви натиснете."
#: website/public/guides/browser/index.html:312
msgctxt "page:guides/browser/index.html"
msgid ""
"Your agent discovers the page target, starts an observation window, and "
"reads the resulting evidence. It can then inspect the script behind the "
"export."
msgstr ""
"Ваш агент виявляє цільову сторінку, запускає вікно перегляду та зчитує "
"отримані дані. Потім він може перевірити сценарій, що лежить в основі "
"експорту."
#: website/public/guides/browser/index.html:319
msgctxt "page:guides/browser/index.html"
msgid "Or capture from the terminal"
msgstr "Або захоплення з терміналу"
#: website/public/guides/browser/index.html:320
msgctxt "page:guides/browser/index.html"
msgid "Find the page's target ID:"
msgstr "Знайдіть цільовий ідентифікатор сторінки:"
#: website/public/guides/browser/index.html:323
msgctxt "page:guides/browser/index.html"
msgid "Find the page"
msgstr "Знайдіть потрібну сторінку"
#. {ph0}: <code>TARGET_ID</code>
#: website/public/guides/browser/index.html:336
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Choose the target with the Notes example URL. Replace {ph0} below with its "
"ID, then run:"
msgstr ""
"Виберіть цільовий об'єкт за допомогою URL-адреси, наведеної в прикладі "
"Notes. Замінивши {ph0} нижче на його ідентифікатор, потім запустіть:"
#: website/public/guides/browser/index.html:342
msgctxt "page:guides/browser/index.html"
msgid "Capture the next ten seconds"
msgstr "Зафіксуйте наступні десять секунд"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/browser/index.html:358
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Let the command connect for a few seconds, then click {ph0}Export notes{ph1}"
" in that browser. The result arrives after the observation window ends."
msgstr ""
"Дайте команді підключитися протягом декількох секунд, а потім натисніть "
"\"{ph0}Експортувати нотатки{ph1}\"у цьому браузері. Результат з'явиться "
"після завершення перегляду."
#: website/public/guides/browser/index.html:363
msgctxt "page:guides/browser/index.html"
msgid ""
"The captured result includes the selected page, network activity during that"
" window, and the shape of the JSON response. Earlier requests are outside "
"this capture."
msgstr ""
"Отриманий результат включає вибрану сторінку, мережеву активність протягом "
"цього вікна та форму відповіді у форматі JSON. Попередні запити не входять "
"до цього списку."
#: website/public/guides/browser/index.html:370
msgctxt "page:guides/browser/index.html"
msgid "Read the request and export script"
msgstr "Прочитайте запит і експортуйте скрипт"
#: website/public/guides/browser/index.html:373
msgctxt "page:guides/browser/index.html"
msgid "Recorded with REA 4.1.0 on the local Notes example"
msgstr "Записано за допомогою REA 4.1.0 на прикладі local Notes"
#: website/public/guides/browser/index.html:378
msgctxt "page:guides/browser/index.html"
msgid "Captured fact"
msgstr "Зафіксований факт"
#: website/public/guides/browser/index.html:379
msgctxt "page:guides/browser/index.html"
msgid "Value"
msgstr "Цінність"
#: website/public/guides/browser/index.html:384
msgctxt "page:guides/browser/index.html"
msgid "Request"
msgstr "Запит"
#: website/public/guides/browser/index.html:388
msgctxt "page:guides/browser/index.html"
msgid "Response"
msgstr "Відповідь"
#: website/public/guides/browser/index.html:392
msgctxt "page:guides/browser/index.html"
msgid "Request initiator"
msgstr "Ініціатор запиту"
#. {ph0}: <code>export.js</code>
#: website/public/guides/browser/index.html:393
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} · script"
msgstr "{ph0} · сценарій"
#: website/public/guides/browser/index.html:396
msgctxt "page:guides/browser/index.html"
msgid "Response structure"
msgstr "Структура відповіді"
#. {ph0}: <code>notes[]</code>
#. {ph1}: <code>id</code>
#. {ph2}: <code>title</code>
#: website/public/guides/browser/index.html:397
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} with {ph1} and {ph2} fields"
msgstr "{ph0} з полями {ph1} і {ph2}"
#: website/public/guides/browser/index.html:407
msgctxt "page:guides/browser/index.html"
msgid "Read the loaded scripts"
msgstr "Прочитайте завантажені скрипти"
#. {ph0}: <code>export.js</code>
#: website/public/guides/browser/index.html:421
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The request identifies the data source, and REA records {ph0} as its "
"initiator. Read the captured script source to see how the data is used:"
msgstr ""
"Запит ідентифікує джерело даних, а REA записує export.js {ph0} як ініціатор "
"запиту. Прочитайте захоплений вихідний код сценарію, щоб побачити, як "
"використовуються дані:"
#. {ph0}: <code>notes.json</code>
#: website/public/guides/browser/index.html:441
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The download is constructed in the page using the JSON response. The CSV "
"formatting step comes from the script; the network capture establishes that "
"this click requested {ph0}."
msgstr ""
"Завантаження виконується на сторінці за допомогою відповіді у форматі JSON. "
"Крок форматування CSV виконується зі сценарію; аналіз мережі показує, що при"
" цьому клацанні запитувався файл {ph0}."
#. {ph0}: <code>notes.json</code>
#: website/public/guides/browser/index.html:457
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Find the script that requests {ph0}. How does it escape titles containing "
"commas or quotation marks?"
msgstr ""
"Знайдіть скрипт, який запитує файл {ph0}. Як він уникає заголовків, що "
"містять коми чи лапки?"
#. {ph0}: <a href="../javascript/">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:462
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"For an installed JavaScript or Electron app, continue with the "
"{ph0}application workflow{ph1} to follow files and process boundaries."
msgstr ""
"Для встановленої програми JavaScript або Electron продовжуйте працювати з "
"робочим {ph0}процесом додатки{ph1}, щоб відстежувати файли та межі процесів."
#: website/public/guides/browser/index.html:6
msgctxt "page:guides/browser/index.html"
msgid "Browser and Network Analysis — REA"
msgstr "Аналіз браузера та мережі-REA"
#: website/public/guides/browser/index.html:7
msgctxt "page:guides/browser/index.html"
msgid ""
"Observe a Notes export with REA: select a browser page, capture a click, "
"inspect the request and follow the export script."
msgstr ""
"Спостерігайте за експортом нотаток за допомогою REA: виберіть сторінку "
"браузера, зафіксуйте клацання, перегляньте запит і дотримуйтесь сценарію "
"експорту."
#: website/public/guides/browser/index.html:192
msgctxt "page:guides/browser/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/guides/browser/index.html:202
msgctxt "page:guides/browser/index.html"
msgid "Browser observation"
msgstr "Спостереження в браузері"
#: website/public/guides/browser/index.html:258
msgctxt "page:guides/browser/index.html"
msgid "Copy start the example browser"
msgstr "Скопіюйте та запустіть приклад браузера"
#: website/public/guides/browser/index.html:290
msgctxt "page:guides/browser/index.html"
msgid "Copy example prompt"
msgstr "Запит на копіювання прикладу"
#: website/public/guides/browser/index.html:324
msgctxt "page:guides/browser/index.html"
msgid "Copy find the page"
msgstr "Скопіюйте знайдену сторінку"
#: website/public/guides/browser/index.html:343
msgctxt "page:guides/browser/index.html"
msgid "Copy capture the next ten seconds"
msgstr "Скопіюйте запис на наступні десять секунд"
#: website/public/guides/browser/index.html:408
msgctxt "page:guides/browser/index.html"
msgid "Copy read the loaded scripts"
msgstr "Копіювати читати завантажені скрипти"
#: website/public/guides/browser/index.html:485
msgctxt "page:guides/browser/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/guides/index.html:99
msgctxt "page:guides/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/guides/index.html:181
#, python-brace-format
msgctxt "page:guides/index.html"
msgid "{ph0}Home{ph1} / Guides"
msgstr "{ph0}Головний{ph1} сторінка / Путівники"
#: website/public/guides/index.html:182
msgctxt "page:guides/index.html"
msgid "REA guides."
msgstr "Напрямні REA."
#: website/public/guides/index.html:183
msgctxt "page:guides/index.html"
msgid ""
"Analyze a native function, an Electron export or a browser request. Each "
"guide includes a prompt, code and results."
msgstr ""
"Проаналізуйте вбудовану функцію, експорт Electron або запит браузера. Кожен "
"посібник містить підказку, код та результати."
#: website/public/guides/index.html:190
msgctxt "page:guides/index.html"
msgid "First investigation"
msgstr "Перше розслідування"
#: website/public/guides/index.html:192
msgctxt "page:guides/index.html"
msgid "Set up REA"
msgstr "Налаштування REA"
#: website/public/guides/index.html:193
msgctxt "page:guides/index.html"
msgid "Connect your coding agent or use REA from the terminal."
msgstr "Підключіть свій кодер або використовуйте REA з терміналу."
#: website/public/guides/index.html:194
msgctxt "page:guides/index.html"
msgid "Get started with REA"
msgstr "Почніть роботу з REA"
#: website/public/guides/index.html:198
msgctxt "page:guides/index.html"
msgid "Native binaries"
msgstr "Програми з машинним кодом"
#: website/public/guides/index.html:200
msgctxt "page:guides/index.html"
msgid "Recover a sound-pan calculation"
msgstr "Відновлення розрахунку положення звуку зліва / справа"
#: website/public/guides/index.html:201
msgctxt "page:guides/index.html"
msgid ""
"Start with a Windows game executable. Inspect instructions, follow a caller,"
" read numeric constants and check the recovered C."
msgstr ""
"Почніть з виконуваного файлу гри Windows. Ознайомтеся з інструкціями, "
"дотримуйтесь абонента, прочитайте Числові константи та перевірте відновлений"
" C."
#: website/public/guides/index.html:211
msgctxt "page:guides/index.html"
msgid "Native analysis guide"
msgstr "Керівництво по аналізу програм з машинним кодом"
#: website/public/guides/index.html:215
msgctxt "page:guides/index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript і Electron"
#: website/public/guides/index.html:217
msgctxt "page:guides/index.html"
msgid "Follow a CSV export"
msgstr "Слідкуйте за експортом CSV"
#: website/public/guides/index.html:218
msgctxt "page:guides/index.html"
msgid ""
"A small Notes app spreads one feature across the renderer, preload and main "
"process. Use REA to connect the API, IPC channel and file writer."
msgstr ""
"Невеликий додаток Notes поєднує в собі функції рендеринга, попереднього "
"завантаження і основного процесу. Використовуйте REA для підключення API, "
"каналу IPC та запису файлів."
#: website/public/guides/index.html:228
msgctxt "page:guides/index.html"
msgid "JavaScript & Electron guide"
msgstr "Керівництво по JavaScript і Electron"
#. {ph0}: <a href="../showcase/notion/">
#. {ph1}: </a>
#: website/public/guides/index.html:231
#, python-brace-format
msgctxt "page:guides/index.html"
msgid "For a larger packaged app, follow {ph0}Notion's clipboard bridge{ph1}."
msgstr ""
"Щоб створити більший упакований додаток, скористайтеся {ph0}мостом "
"буфера{ph1} обміну Notion."
#: website/public/guides/index.html:238
msgctxt "page:guides/index.html"
msgid "Browser behavior"
msgstr "Поведінка браузера"
#: website/public/guides/index.html:240
msgctxt "page:guides/index.html"
msgid "Observe a click"
msgstr "Спостерігайте за клацанням"
#: website/public/guides/index.html:241
msgctxt "page:guides/index.html"
msgid ""
"Open a working Notes example, capture an export request and find the code "
"that turns its response into a download."
msgstr ""
"Відкрийте приклад working Notes, запишіть запит на експорт і знайдіть код, "
"який перетворює його відповідь на завантаження."
#: website/public/guides/index.html:250
msgctxt "page:guides/index.html"
msgid "Browser observation guide"
msgstr "Керівництво по спостереженню за браузером"
#: website/public/guides/index.html:6
msgctxt "page:guides/index.html"
msgid "Reverse Engineering Guides — REA"
msgstr "Посібники з реверс-інжинірингу-REA"
#: website/public/guides/index.html:7
msgctxt "page:guides/index.html"
msgid ""
"Learn REA through short worked examples: a native calculation, an Electron "
"CSV export and a browser request."
msgstr ""
"Вивчіть REA на коротких прикладах: власні обчислення, експорт Electron, CSV "
"і запит з браузера."
#: website/public/guides/index.html:269
msgctxt "page:guides/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/guides/javascript/index.html:99
msgctxt "page:guides/javascript/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/javascript/index.html:181
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / JavaScript & Electron"
msgstr ""
"{ph0}Головний{ph1} сторінка / {ph2}Керівництво{ph3} / JavaScript і Electron"
#. {ph0}: <br />
#: website/public/guides/javascript/index.html:185
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "Trace an Electron{ph0}CSV export."
msgstr "Простежте експорт Electron {ph0} CSV."
#: website/public/guides/javascript/index.html:186
msgctxt "page:guides/javascript/index.html"
msgid ""
"Follow a button click from the page API, through Electron IPC, to the CSV "
"file writer."
msgstr ""
"Виконайте натискання кнопки на сторінці API, через Electron IPC, для запису "
"файлів CSV."
#: website/public/guides/javascript/index.html:193
msgctxt "page:guides/javascript/index.html"
msgid "In this guide"
msgstr "У цьому керівництві"
#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:195
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}Навести приклад{ph1}"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:196
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Запитайте свого агента{ph1}"
#. {ph0}: <a href="#follow">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:197
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Trace the export code{ph1}"
msgstr "{ph0}Відстеження експортного коду{ph1}"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:198
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Try the example{ph1}"
msgstr "{ph0}Спробуйте на прикладі{ph1}"
#. {ph0}: <a href="#next">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:199
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Inspect the CSV writer{ph1}"
msgstr "{ph0}Перевірте пристрій запису CSV{ph1}"
#: website/public/guides/javascript/index.html:204
msgctxt "page:guides/javascript/index.html"
msgid "Where does “Export notes” go?"
msgstr "Куди дівається \"експорт нотаток\"?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/javascript/index.html:205
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"This guide uses a small Electron app. Clicking {ph0}Export notes{ph1} calls "
"an API in the page, crosses into the main process, and writes a CSV. The "
"behavior is spread across several files."
msgstr ""
"У цьому посібнику використовується невеликий додаток Electron. При "
"натисканні кнопки {ph0}Експортувати нотатки{ph1} викликається API на "
"сторінці, виконується перехід до основного процесу і записується CSV . "
"Поведінка розподілена по декількох файлах."
#: website/public/guides/javascript/index.html:212
msgctxt "page:guides/javascript/index.html"
msgid "The CSV export across Electron processes"
msgstr "Експорт CSV в рамках процесів Electron"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>notes.exportCsv()</code>
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>renderer.js</code>
#. {ph7}: <code>preload.js</code>
#. {ph8}: </span >
#: website/public/guides/javascript/index.html:216
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Renderer → preload{ph1}{ph2}{ph3}{ph4}{ph5}{ph6} calls the API exposed "
"by {ph7}.{ph8}"
msgstr ""
"{ph0}Візуалізатор → попереднє завантаження{ph1}{ph2}{ph3}{ph4}{ph5}{ph6} "
"викликає API, наданий за допомогою {ph7}.{ph8}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>notes:export</code>
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/guides/javascript/index.html:224
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Between processes{ph1}{ph2}{ph3}{ph4}{ph5}The preload invokes an IPC "
"channel: a named message to the main process.{ph6}"
msgstr ""
"{ph0}Примітки: при експорті попереднього завантаження викликається IPC-"
"канал: іменоване повідомлення для основного "
"процесу{ph1}{ph2}{ph3}{ph4}{ph5}.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>main.js</code>
#. {ph6}: </span >
#: website/public/guides/javascript/index.html:232
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Main process{ph1}{ph2}An export handler{ph3}{ph4}{ph5} handles that "
"channel and calls the CSV writer.{ph6}"
msgstr ""
"{ph0}Основний процес{ph1}{ph2} - обробник експорту{ph3}{ph4}{ph5} main.js "
"обробляє цей канал і викликає CSV writer.{ph6}"
#. {ph0}: <code>csv.js</code>
#. {ph1}: <code>main.js</code>
#. {ph2}: <code>downloads/notes.csv</code>
#: website/public/guides/javascript/index.html:241
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0} formats the notes → {ph1} writes {ph2}."
msgstr "{ph0} форматує нотатки → {ph1} записує файли для {ph2}."
#: website/public/guides/javascript/index.html:245
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA matches the literal IPC call to its handler and identifies the exposed "
"API. The path is inferred from code; a runtime capture can check what "
"executes."
msgstr ""
"REA відображає буквальний виклик IPC до свого обробника та ідентифікує "
"відкритий API. Шлях виводиться з коду; під час перехоплення під час "
"виконання можна перевірити, що виконується."
#: website/public/guides/javascript/index.html:253
msgctxt "page:guides/javascript/index.html"
msgid "Ask about the CSV export"
msgstr "Запитайте про експорт CSV"
#. {ph0}: <a href="../../get-started/#agent">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:254
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Connect your agent to REA{ph1} and give it the app directory or ASAR "
"file:"
msgstr ""
"{ph0}Підключіть свій агент до REA{ph1} і передайте йому каталог програм або "
"файл ASAR:"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/guides/javascript/index.html:260
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#: website/public/guides/javascript/index.html:264
#: website/public/guides/javascript/index.html:413
msgctxt "page:guides/javascript/index.html"
msgid "Copy"
msgstr "Копіювати"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="javascript-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/javascript/index.html:273
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find what happens when I export notes in this "
"app. Where is the CSV created?{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA, щоб побачити, що відбувається, коли я "
"експортую нотатки до цієї програми. Де створено CSV?{ph3}{ph4}{ph5}"
#. {ph0}: <code>app.asar</code>
#: website/public/guides/javascript/index.html:281
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Example prompt. Include the absolute path to the application folder or "
"{ph0}."
msgstr "Приклад запиту. Вкажіть абсолютний шлях до папки програми або {ph0}."
#: website/public/guides/javascript/index.html:285
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA reads the application files and builds a map of entrypoints, modules and"
" process boundaries. Your agent uses that map to narrow the investigation to"
" the export feature."
msgstr ""
"REA зчитує файли програми та створює карту точок входу, модулів та меж "
"процесів. Ваш агент використовує цю карту, щоб звузити пошук до функції "
"експорту."
#: website/public/guides/javascript/index.html:292
msgctxt "page:guides/javascript/index.html"
msgid "Trace the export code"
msgstr "Відстеження експортного коду"
#: website/public/guides/javascript/index.html:293
msgctxt "page:guides/javascript/index.html"
msgid "The page calls a small API"
msgstr "Сторінка викликає невеликий API"
#: website/public/guides/javascript/index.html:306
msgctxt "page:guides/javascript/index.html"
msgid ""
"The page knows the method name. The implementation lives in the preload, "
"which exposes it to the renderer."
msgstr ""
"Сторінці відомо ім'я методу. Реалізація знаходиться в попередньому "
"завантаженні, яка надає її в розпорядження засоби візуалізації."
#. {ph0}: <code>notes.exportCsv</code>
#. {ph1}: <code>notes:export</code>
#: website/public/guides/javascript/index.html:320
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA records {ph0} and the literal channel {ph1}. It pairs that invocation "
"with the single matching handler in the main process."
msgstr ""
"REA записує {ph0} і буквений канал {ph1}. Він пов'язує цей виклик з єдиним "
"відповідним обробником в основному процесі."
#. {ph0}: <code>csv.js</code>
#. {ph1}: <code>notes.csv</code>
#: website/public/guides/javascript/index.html:337
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Reading the handler answers the original question: {ph0} formats the notes, "
"and the main process writes {ph1} into the user's Downloads folder."
msgstr ""
"Читання обробника дає відповідь на оригінальне запитання: {ph0} нотатки "
"форматуються, і основний процес записує файл {ph1} в папку завантажень "
"користувача."
#: website/public/guides/javascript/index.html:354
msgctxt "page:guides/javascript/index.html"
msgid ""
"Recorded by REA 4.1.0 on the downloadable example below. Source locations "
"accompany the API, channel and handler findings."
msgstr ""
"Записано за допомогою REA 4.1.0 на прикладі, який можна завантажити нижче. "
"Розташування вихідних текстів відповідає висновкам API, каналу та обробника."
#: website/public/guides/javascript/index.html:360
msgctxt "page:guides/javascript/index.html"
msgid "Analyze the example yourself"
msgstr "Проаналізуйте цей приклад самостійно"
#. {ph0}: <a class="button" href="../../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/guides/javascript/index.html:367
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}Приклад завантаження ZIP-файлу{ph1}"
#: website/public/guides/javascript/index.html:376
msgctxt "page:guides/javascript/index.html"
msgid "Browse the six source files"
msgstr "Перегляньте шість оригінальних файлів"
#: website/public/guides/javascript/index.html:412
msgctxt "page:guides/javascript/index.html"
msgid "Static application analysis"
msgstr "Статичний аналіз додатків"
#. {ph0}: <code>normalized_result.summary.ipc</code>
#. {ph1}: <code>normalized_result.graph</code>
#: website/public/guides/javascript/index.html:425
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Replace the path with the folder you unzipped. You should find one IPC "
"channel and one matching handler in {ph0}. Source locations are in {ph1}."
msgstr ""
"Замініть шлях на папку, яку ви розпакували. Ви повинні знайти один канал IPC"
" та один відповідний обробник у {ph0}. Місця розташування джерел вказані в "
"{ph1}."
#: website/public/guides/javascript/index.html:431
msgctxt "page:guides/javascript/index.html"
msgid ""
"For your own app, use the same command with its directory or ASAR path. An "
"agent can follow a literal string, API name or IPC channel with REA's "
"feature tracing tools."
msgstr ""
"Для власної програми використовуйте ту саму команду, вказавши її каталог або"
" шлях до ASAR. Агент може використовувати рядок літер, ІМ'Я API або канал "
"IPC за допомогою інструментів відстеження функцій REA."
#: website/public/guides/javascript/index.html:438
msgctxt "page:guides/javascript/index.html"
msgid "Inspect the CSV writer"
msgstr "Перевірте пристрій запису CSV"
#. {ph0}: <code>notes:export</code>
#: website/public/guides/javascript/index.html:440
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Follow {ph0} to its handler. Which inputs reach the CSV writer, and what "
"happens if writing the file fails?"
msgstr ""
"Випливати {ph0} в його обробник. Які вхідні дані надходять до CSV writer і "
"що станеться, якщо запис файлу не вдасться?"
#: website/public/guides/javascript/index.html:446
msgctxt "page:guides/javascript/index.html"
msgid ""
"Use the source locations to inspect those details. Computed channel names "
"and ambiguous handlers can remain unresolved; runtime observations give you "
"another way to investigate them."
msgstr ""
"Використовуйте розташування джерел для перевірки цих відомостей. Назви "
"обчислених каналів та неоднозначні обробники можуть залишатися невирішеними;"
" спостереження під час виконання дають вам інший спосіб їх вивчення."
#. {ph0}: <a href="../../showcase/notion/" >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/guides/javascript/index.html:452
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Follow Notion's clipboard bridge{ph1} {ph2}Apply the same approach to a"
" packaged Electron app.{ph3}"
msgstr ""
"{ph0}Скористайтеся мостом обміну{ph1} Notion і {ph2}застосуйте той самий "
"підхід до пакетної програми Electron.{ph3}"
#. {ph0}: <a href="../browser/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/guides/javascript/index.html:458
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Observe a browser export{ph1}{ph2}Capture a real click and see which "
"request it makes.{ph3}"
msgstr ""
"{ph0}Поспостерігайте, як браузер при експорті{ph1}{ph2} фіксує реальний "
"клік, і подивіться, який запит він робить.{ph3}"
#. {ph0}: <a href="../native/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/guides/javascript/index.html:464
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Follow a native function{ph1}{ph2}Continue into a binary when a feature"
" depends on native code.{ph3}"
msgstr ""
"{ph0}Виконання нативної функції{ph1}{ph2} продовжується у двійковому "
"форматі, коли функція залежить від рідного коду.{ph3}"
#: website/public/guides/javascript/index.html:6
msgctxt "page:guides/javascript/index.html"
msgid "JavaScript and Electron Analysis — REA"
msgstr "Аналіз JavaScript і Electron-REA"
#: website/public/guides/javascript/index.html:7
msgctxt "page:guides/javascript/index.html"
msgid ""
"Trace a Notes CSV export through a renderer API, preload and IPC handler "
"with REA. Includes downloadable example files and a verified analysis "
"result."
msgstr ""
"Відстежуйте експорт Notes CSV за допомогою API візуалізації, попереднього "
"завантаження та обробника IPC за допомогою REA. Включає завантажувані файли "
"прикладів і перевірений результат аналізу."
#: website/public/guides/javascript/index.html:192
msgctxt "page:guides/javascript/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/guides/javascript/index.html:202
msgctxt "page:guides/javascript/index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript і Electron"
#: website/public/guides/javascript/index.html:264
msgctxt "page:guides/javascript/index.html"
msgid "Copy example prompt"
msgstr "Запит на копіювання прикладу"
#: website/public/guides/javascript/index.html:413
msgctxt "page:guides/javascript/index.html"
msgid "Copy static application analysis"
msgstr "Копіювання статичного аналізу програми"
#: website/public/guides/javascript/index.html:490
msgctxt "page:guides/javascript/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/guides/native/index.html:99
msgctxt "page:guides/native/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/native/index.html:181
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / Native analysis"
msgstr ""
"{ph0}Головний{ph1} сторінка / {ph2}Керівництво{ph3} / Аналіз програм з "
"машинним кодом"
#. {ph0}: <br />
#: website/public/guides/native/index.html:184
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "Recover DX-Ball's{ph0}sound-pan calculation."
msgstr "Відновити дані DX-Ball{ph0}розрахунок положення звуку зліва / справа."
#: website/public/guides/native/index.html:185
msgctxt "page:guides/native/index.html"
msgid ""
"Inspect the original instructions, identify the input and constants, then "
"check the recovered C."
msgstr ""
"Перегляньте оригінальні інструкції, визначте вхідні дані та константи, а "
"потім перевірте відновлений C."
#: website/public/guides/native/index.html:192
msgctxt "page:guides/native/index.html"
msgid "In this guide"
msgstr "У цьому керівництві"
#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/native/index.html:194
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}Навести приклад{ph1}"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/native/index.html:195
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Запитайте свого агента{ph1}"
#. {ph0}: <a href="#follow">
#. {ph1}: </a>
#: website/public/guides/native/index.html:196
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Read the REA results{ph1}"
msgstr "{ph0}Ознайомтеся з результатами REA{ph1}"
#. {ph0}: <a href="#result">
#. {ph1}: </a>
#: website/public/guides/native/index.html:197
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Recover and check{ph1}"
msgstr "{ph0}Відновіть і перевірте{ph1}"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/guides/native/index.html:198
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Use your own binary{ph1}"
msgstr "{ph0}Використовуйте власний двійковий файл{ph1}"
#: website/public/guides/native/index.html:203
msgctxt "page:guides/native/index.html"
msgid "Calculate left/right sound panning"
msgstr "Розрахувати розташування стереозвуку зліва / справа"
#: website/public/guides/native/index.html:204
msgctxt "page:guides/native/index.html"
msgid ""
"In DX-Ball, a brick hit supplies a horizontal screen position. The sound "
"code turns it into a left/right panning value."
msgstr ""
"У DX-Ball удар цегли задає горизонтальне положення екрану. Звуковий код "
"перетворює його в значення повороту вліво / вправо."
#. {ph0}: <code>0x00406400</code>
#. {ph1}: <code>__ftol()</code>
#: website/public/guides/native/index.html:208
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"The starting function, {ph0}, has a short decompiler result: a call to "
"{ph1}. REA also returns its instructions and callers, which give the agent a"
" way to investigate the missing arithmetic."
msgstr ""
"Початкова функція, {ph0}, видає короткий результат декомпіляції: виклик "
"функції {ph1}. REA також повертає свої інструкції та пристрої виклику, які "
"дають агенту можливість знайти відсутню арифметику."
#: website/public/guides/native/index.html:215
msgctxt "page:guides/native/index.html"
msgid "New to these terms?"
msgstr "Ви знайомі з цими умовами?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>MOV</code>
#. {ph3}: <code>ADD</code>
#: website/public/guides/native/index.html:217
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Instructions:{ph1} the steps the processor runs, shown in readable form"
" such as {ph2} or {ph3}."
msgstr ""
"{ph0}Інструкція:{ph1} кроки, які виконує процесор, відображаються у зручній "
"для читання формі, такій як {ph2} або {ph3}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:222
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Decompiler result / pseudocode:{ph1} an analysis tool's attempt to turn"
" instructions back into C-like code. It can miss parts, as in this example."
msgstr ""
"{ph0}Результат декомпіляції / псевдокод:{ph1} спроба інструменту аналізу "
"перетворити інструкції назад у C-подібний код. У ньому можуть бути відсутні "
"окремі частини, як у цьому прикладі."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:227
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Caller:{ph1} a function that calls this one. It shows which values are "
"passed in."
msgstr ""
"{ph0}Викликаюча функція:{ph1} функція, яка викликає цю функцію. Вона "
"показує, які значення передаються."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>0x00406400</code>
#: website/public/guides/native/index.html:231
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Address:{ph1} a location in the program, written in hexadecimal, such "
"as {ph2}."
msgstr ""
"{ph0}Адрес:{ph1} розташування в програмі, записане в шістнадцятковому "
"форматі, наприклад, {ph2}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:235
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Constants:{ph1} fixed numbers stored in the program, read as raw bytes "
"and decoded."
msgstr ""
"{ph0}Константа:{ph1} фіксовані числа, що зберігаються в програмі, зчитуються"
" як необроблені байти та декодуються."
#: website/public/guides/native/index.html:242
msgctxt "page:guides/native/index.html"
msgid "Three pieces of evidence, one calculation"
msgstr "Три докази, один розрахунок"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/guides/native/index.html:246
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}01 · Instructions{ph1}{ph2}An integer input{ph3}{ph4}A stack read "
"supplies the value used by the floating-point instructions.{ph5}"
msgstr ""
"{ph0}01 * інструкції{ph1}{ph2} Ціле введення{ph3}{ph4}, прочитаний стеком, "
"надає значення, яке використовується інструкціями з плаваючою комою.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>20 + 30 × tile_x</code>
#. {ph6}: </span >
#: website/public/guides/native/index.html:254
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}02 · Caller{ph1}{ph2}A screen coordinate{ph3}{ph4}The brick-hit caller "
"passes {ph5}.{ph6}"
msgstr ""
"{ph0}02 * Абонент{ph1}{ph2} - Екранна координата{ph3}{ph4}, по якій абонент,"
" що вдарився цеглою, проходить {ph5}.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>1.5625</code>
#. {ph6}: <code>500.0</code>
#. {ph7}: </span >
#: website/public/guides/native/index.html:262
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}03 · Data bytes{ph1}{ph2}The numeric constants{ph3}{ph4}Referenced "
"bytes decode to {ph5}, {ph6} and a scale value.{ph7}"
msgstr ""
"{ph0}03 * байти даних{ph1}{ph2} Числова константа{ph3}{ph4}, на які "
"посилаються байти, декодуються як {ph5}, {ph6} і масштабне значення.{ph7}"
#: website/public/guides/native/index.html:274
msgctxt "page:guides/native/index.html"
msgid ""
"REA supplies the instructions, call relationship and bytes. The agent "
"interprets them together."
msgstr ""
"REA надає інструкції, зв'язок між викликами функцій і байти. Агент "
"інтерпретує їх разом."
#: website/public/guides/native/index.html:281
msgctxt "page:guides/native/index.html"
msgid "Ask about the behavior"
msgstr "Запитайте про поведінку"
#. {ph0}: <a href="../../get-started/#agent" >
#. {ph1}: </a >
#. {ph2}: <a href="../../get-started/#native" >
#. {ph3}: </a >
#: website/public/guides/native/index.html:282
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"After {ph0}connecting REA to your agent{ph1} and {ph2}setting up a native "
"analysis tool{ph3}, provide the local executable and a question:"
msgstr ""
"Після {ph0}підключення REA до вашого агента{ph1} і {ph2}налаштування "
"інструменту аналізу програм з машинним кодом{ph3} надайте локальний "
"виконуваний файл та запитання:"
#: website/public/guides/native/index.html:293
msgctxt "page:guides/native/index.html"
msgid "Which analysis tool should I use?"
msgstr "Який інструмент аналізу слід використовувати?"
#: website/public/guides/native/index.html:294
msgctxt "page:guides/native/index.html"
msgid "REA needs one of these to read native programs:"
msgstr "REA потрібен один з них для читання власних програм:"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:296
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Hopper{ph1} (macOS or Linux): REA's setup detects it or offers to "
"install it. On macOS, open Hopper once and choose demo mode or activate a "
"license before your first analysis."
msgstr ""
"{ph0} Hopper{ph1} (macOS або Linux ): програма встановлення REA виявляє його"
" або пропонує встановити. На macOS відкрийте Hopper один раз і виберіть "
"демонстраційний режим або активуйте ліцензію перед першим аналізом."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:302
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Ghidra{ph1} (macOS or Linux; experimental on Windows): free, but needs "
"an existing Ghidra 12.1.x installation and a 64-bit JDK 21 or newer."
msgstr ""
"{ph0} Ghidra{ph1} (macOS або Linux ; експериментальна версія Windows ): "
"безкоштовний, але вимагає існуючої установки Ghidra 12.1.x і 64-розрядної "
"версії JDK 21 або новіше."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:307
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}IDA{ph1} (Windows): for an existing IDA setup with an MCP registration."
msgstr ""
"{ph0} IDA{ph1} (Windows): для існуючого Налаштування IDA з реєстрацією MCP."
#. {ph0}: <a href="../../get-started/#native">
#. {ph1}: </a>
#: website/public/guides/native/index.html:312
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "See {ph0}Set up native analysis{ph1} for the steps."
msgstr ""
"Інструкції по налаштуванню аналізу програм з машинним кодом наведені в "
"розділі {ph0}Налаштування аналізу програм з машинним кодом{ph1}."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/guides/native/index.html:320
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#: website/public/guides/native/index.html:324
#: website/public/guides/native/index.html:455
msgctxt "page:guides/native/index.html"
msgid "Copy"
msgstr "Копіювати"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="native-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/native/index.html:333
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how DX-Ball calculates sound panning. "
"Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA, щоб дізнатися, як DX-Ball обчислює "
"розташування стереозвуку. Поясніть розрахунок і покажіть код.{ph3}{ph4}{ph5}"
#: website/public/guides/native/index.html:341
msgctxt "page:guides/native/index.html"
msgid ""
"Example prompt. Give your agent the path to your local DX-Ball 1.07 "
"executable. REA doesn't include DX-Ball, so use your own copy, or ask the "
"same kind of question about another small Windows program you have."
msgstr ""
"Приклад запиту. Вкажіть своєму агенту шлях до локального виконуваного файлу "
"DX-Ball 1.07. REA не включає DX-Ball, тому використовуйте власну копію або "
"задайте те саме питання про іншу невелику програму Windows, яку ви маєте."
#: website/public/guides/native/index.html:348
msgctxt "page:guides/native/index.html"
msgid "How do I get a file's full path?"
msgstr "Як отримати повний шлях до файлу?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/guides/native/index.html:350
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Windows:{ph1} in File Explorer, right-click the file and choose "
"{ph2}Copy as path{ph3}. On Windows 10, hold Shift while right-clicking."
msgstr ""
"{ph0} Windows :{ph1} у Провіднику файлів клацніть правою кнопкою миші файл і"
" виберіть \"{ph2}Копіювати як шлях{ph3}\". На Windows 10, утримуючи Shift, "
"клацніть правою кнопкою миші."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/guides/native/index.html:355
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}macOS:{ph1} in Finder, right-click the file, hold Option and choose "
"{ph2}Copy \"…\" as Pathname{ph3}."
msgstr ""
"{ph0} macOS :{ph1} у Finder клацніть файл правою кнопкою миші, утримуйте "
"опцію та виберіть {ph2}Копіювати \"...\"як шлях{ph3}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:359
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Any system:{ph1} drag the file into a terminal window and its path "
"appears."
msgstr ""
"{ph0}Будь-яка система:{ph1} перетягніть файл у вікно терміналу, і з'явиться "
"шлях до нього."
#: website/public/guides/native/index.html:367
msgctxt "page:guides/native/index.html"
msgid "Read the REA results"
msgstr "Ознайомтеся з результатами REA"
#: website/public/guides/native/index.html:368
msgctxt "page:guides/native/index.html"
msgid "Read the input"
msgstr "Прочитайте вхідні дані"
#: website/public/guides/native/index.html:377
msgctxt "page:guides/native/index.html"
msgid ""
"The instructions load an integer argument and convert it for floating-point "
"arithmetic. This is the input absent from the first pseudocode view."
msgstr ""
"Інструкції завантажують цілий аргумент і перетворюють його в арифметику з "
"плаваючою комою. Це вхідні дані, відсутні в першому поданні псевдокоду."
#: website/public/guides/native/index.html:382
msgctxt "page:guides/native/index.html"
msgid "Follow the caller"
msgstr "Слідуйте за абонентом"
#. {ph0}: <code>0x14</code>
#: website/public/guides/native/index.html:391
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"REA identifies the brick-hit caller. Its earlier instructions multiply the "
"tile coordinate by 30; adding {ph0} (20) gives the brick's screen position."
msgstr ""
"REA ідентифікує об'єкт, на який впала цегла. У попередніх інструкціях "
"координату плитки множили на 30; додавання {ph0} (20) дає положення цегли на"
" екрані."
#: website/public/guides/native/index.html:396
msgctxt "page:guides/native/index.html"
msgid "Read the referenced constants"
msgstr "Прочитайте зазначені константи"
#: website/public/guides/native/index.html:407
msgctxt "page:guides/native/index.html"
msgid ""
"The arithmetic references these addresses. Reading the bytes supplies the "
"actual values; the instruction order tells the agent how they are used."
msgstr ""
"Арифметика посилається на ці адреси. Зчитування байтів дозволяє отримати "
"фактичні значення; порядок команд повідомляє агенту, як вони "
"використовуються."
#: website/public/guides/native/index.html:414
msgctxt "page:guides/native/index.html"
msgid "Write and check the recovered function"
msgstr "Запишіть і перевірте відновлену функцію"
#: website/public/guides/native/index.html:423
msgctxt "page:guides/native/index.html"
msgid ""
"With a scale of 1.0, screen positions 0, 320 and 640 map to −500, 0 and 500 "
"before integer conversion. The calculation puts the center of the screen at "
"the center of the stereo field."
msgstr ""
"При масштабі 1,0 позиції екрану 0, 320 і 640 перетворюються в -500, 0 і 500 "
"до перетворення в ціле число. При обчисленні центр екрану виявляється в "
"центрі стереополя."
#: website/public/guides/native/index.html:428
msgctxt "page:guides/native/index.html"
msgid ""
"The agent used REA's findings to write the C. Separate checks compared 3,205"
" inputs against the original x86 function and reproduced all 63 compiled "
"bytes of the complete function."
msgstr ""
"Агент використовував результати REA для написання коду C. окремі перевірки "
"порівняли 3205 входів з оригінальною функцією x86 і відтворили всі 63 "
"скомпільовані байти повної функції."
#. {ph0}: <a href="../../showcase/dx-ball/#sound-pan" >
#. {ph1}: </a >
#: website/public/guides/native/index.html:433
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}See the full investigation and assembly-to-C comparison{ph1}"
msgstr "{ph0}Дивіться повне дослідження та порівняння збірки з C{ph1}"
#: website/public/guides/native/index.html:440
msgctxt "page:guides/native/index.html"
msgid "Try it with your own binary"
msgstr "Спробуйте це за допомогою власного двійкового коду"
#. {ph0}: <a href="../../get-started/#native" >
#. {ph1}: </a >
#: website/public/guides/native/index.html:441
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Connect a native analysis provider{ph1}, then give your agent a local "
"executable or library and a feature to investigate. Useful starting "
"questions include “How is this file parsed?” or “Which function handles this"
" menu action?”"
msgstr ""
"{ph0}Підключіть Постачальника програм для аналізу машинного коду{ph1}, потім"
" надайте своєму агенту локальний виконуваний файл або бібліотеку та функцію "
"для вивчення. Корисні початкові запитання включають “як обробляється цей "
"файл?\"або\" яка функція виконує цю дію в меню?”."
#: website/public/guides/native/index.html:448
msgctxt "page:guides/native/index.html"
msgid ""
"If you already know a function name or address, you can query it from the "
"terminal. For a configured Ghidra installation:"
msgstr ""
"Якщо ви вже знаєте назву функції або адресу, ви можете запитати її з "
"терміналу. Для налаштованої установки Ghidra:"
#: website/public/guides/native/index.html:454
msgctxt "page:guides/native/index.html"
msgid "Function analysis"
msgstr "Функціональний аналіз"
#. {ph0}: <code>main</code>
#: website/public/guides/native/index.html:467
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"Replace the target path and {ph0} with your own function name or address. "
"Each CLI invocation imports and analyzes the binary, then closes its "
"session. Your agent's MCP queries reuse the imported binary while that "
"session is open."
msgstr ""
"Замініть цільовий шлях і {ph0} на своє власне ім'я функції або адресу. Кожен"
" виклик CLI імпортує та аналізує двійковий файл, а потім закриває свій "
"сеанс. Запити вашого агента MCP повторно використовують імпортований "
"двійковий файл, поки цей сеанс відкритий."
#: website/public/guides/native/index.html:473
msgctxt "page:guides/native/index.html"
msgid ""
"Read the pseudocode alongside instructions and references. When a result "
"leaves a call or value unresolved, use that location as the next question."
msgstr ""
"Прочитайте псевдокод разом з інструкціями та посиланнями. Якщо в результаті "
"залишається невирішеним питання про виклик або значення, використовуйте це "
"місце як наступне запитання."
#: website/public/guides/native/index.html:6
msgctxt "page:guides/native/index.html"
msgid "Native Binary Analysis — REA"
msgstr "Власний Бінарний аналіз-REA"
#: website/public/guides/native/index.html:7
msgctxt "page:guides/native/index.html"
msgid ""
"Recover a native calculation with REA: inspect instructions, follow a "
"caller, read constants and check reconstructed C."
msgstr ""
"Відновіть власні обчислення за допомогою REA: перегляньте інструкції, "
"дотримуйтесь абонента, прочитайте константи та перевірте відновлений C."
#: website/public/guides/native/index.html:191
msgctxt "page:guides/native/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/guides/native/index.html:201
msgctxt "page:guides/native/index.html"
msgid "Native analysis"
msgstr "Аналіз програм з машинним кодом"
#: website/public/guides/native/index.html:324
msgctxt "page:guides/native/index.html"
msgid "Copy example prompt"
msgstr "Запит на копіювання прикладу"
#: website/public/guides/native/index.html:455
msgctxt "page:guides/native/index.html"
msgid "Copy function analysis"
msgstr "Аналіз функції копіювання"
#: website/public/guides/native/index.html:496
msgctxt "page:guides/native/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/index.html:101
msgctxt "page:index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#: website/public/index.html:183 website/public/index.html:193
#: website/public/index.html:191
msgctxt "page:index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/index.html:184 website/public/index.html:233
msgctxt "page:index.html"
msgid "Set up REA"
msgstr "Налаштування REA"
#. {ph0}: <a href="#setup" aria-current="location">
#. {ph1}: </a>
#: website/public/index.html:195
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Set up REA{ph1}"
msgstr "{ph0}Налаштування REA{ph1}"
#. {ph0}: <a href="#what-is-re">
#. {ph1}: </a>
#: website/public/index.html:196
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}What is RE?{ph1}"
msgstr "{ph0}Що таке вогонь?{ph1}"
#. {ph0}: <a href="#how-rea-helps">
#. {ph1}: </a>
#: website/public/index.html:197
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}How REA helps{ph1}"
msgstr "{ph0}Як допомагає REA{ph1}"
#. {ph0}: <a href="#dinosaur">
#. {ph1}: </a>
#: website/public/index.html:198
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Dinosaur game{ph1}"
msgstr "{ph0}Гра в динозаврів{ph1}"
#. {ph0}: <a href="#calculator">
#. {ph1}: </a>
#: website/public/index.html:199
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Calculator{ph1}"
msgstr "{ph0}Калькулятор{ph1}"
#. {ph0}: <a href="#try-rea">
#. {ph1}: </a>
#: website/public/index.html:200
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Try REA{ph1}"
msgstr "{ph0}Спробуйте REA{ph1}"
#. {ph0}: <a href="#analyze">
#. {ph1}: </a>
#: website/public/index.html:201
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Go deeper{ph1}"
msgstr "{ph0}Дізнатися більше{ph1}"
#. {ph0}: <a href="#questions">
#. {ph1}: </a>
#: website/public/index.html:202
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Help & feedback{ph1}"
msgstr "{ph0}Допомога та зворотній зв'язок{ph1}"
#. {ph0}: <a href="#community">
#. {ph1}: </a>
#: website/public/index.html:203
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Community{ph1}"
msgstr "{ph0}Товариство{ph1}"
#: website/public/index.html:212
msgctxt "page:index.html"
msgid "Reverse engineering, with your coding agent"
msgstr "Зворотне проектування за допомогою агента кодування"
#. {ph0}: <br />
#: website/public/index.html:213
#, python-brace-format
msgctxt "page:index.html"
msgid "Find out how{ph0}software works."
msgstr "Дізнайтеся, як{ph0}працює програма."
#: website/public/index.html:214
msgctxt "page:index.html"
msgid ""
"REA gives your agent the tools to inspect a program and explain what it "
"does."
msgstr ""
"REA надає вашому ШІ-помічнику інструменти, щоб дослідити програму й пояснити"
" її поведінку."
#. {ph0}: <a href="#analysis-guides">
#. {ph1}: </a>
#: website/public/index.html:223
#, python-brace-format
msgctxt "page:index.html"
msgid "Already know RE? {ph0}Skip to analysis guides →{ph1}"
msgstr "Вже знайомі з RE? {ph0}Перейти до посібників з аналізу →{ph1}"
#. {ph0}: <a href="blog/">
#. {ph1}: </a>
#: website/public/index.html:227
#, python-brace-format
msgctxt "page:index.html"
msgid "Want to go deeper? {ph0}Read the Blog →{ph1}"
msgstr "Хочете копнути глибше? {ph0}Читати блог →{ph1}"
#: website/public/index.html:234
msgctxt "page:index.html"
msgid "Copy this into your coding agent:"
msgstr "Вставте цей запит у свого ШІ-помічника для програмування:"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:237
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#: website/public/index.html:242 website/public/index.html:264
#: website/public/index.html:479 website/public/index.html:647
#: website/public/index.html:883 website/public/index.html:1045
#: website/public/index.html:1073
msgctxt "page:index.html"
msgid "Copy"
msgstr "Копіювати"
#: website/public/index.html:261
msgctxt "page:index.html"
msgid "Or run this in your terminal:"
msgstr "Або виконайте цю команду в терміналі:"
#: website/public/index.html:273
msgctxt "page:index.html"
msgid "Approve the setup plan, then restart your agent."
msgstr "Перевірте й схваліть план змін, а потім перезапустіть помічника."
#: website/public/index.html:288
msgctxt "page:index.html"
msgid "What is reverse engineering?"
msgstr "Що таке зворотна розробка?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:289
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Finding out how software works by {ph0}examining the program itself.{ph1}"
msgstr ""
"З’ясування того, як працює програма, через {ph0}дослідження самої "
"програми.{ph1}"
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#. {ph2}: <mark class="prose-highlight">
#. {ph3}: </mark>
#. {ph4}: <mark class="prose-highlight">
#. {ph5}: </mark>
#: website/public/index.html:294
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"The goal: understand a feature well enough to {ph0}explain it{ph1}, "
"{ph2}change it{ph3} or {ph4}rebuild it.{ph5}"
msgstr ""
"Мета: зрозуміти функцію досить добре, щоб {ph0}пояснити її{ph1}, "
"{ph2}змінивши{ph3} або {ph4}перебудувати заново.{ph5}"
#. {ph0}: <strong class="prose-highlight">
#. {ph1}: </strong>
#: website/public/index.html:312
#, python-brace-format
msgctxt "page:index.html"
msgid "Before REA · You investigate it {ph0}yourself{ph1}"
msgstr "До REA · Ви досліджуєте {ph0}самостійно{ph1}"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:321
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}01{ph1} Decode branches"
msgstr "{ph0}01{ph1} Декодування гілок"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:329
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}02{ph1} Trace calls"
msgstr "{ph0}02{ph1} Відстеження викликів"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:337
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}03{ph1} Recover the rule"
msgstr "{ph0}03{ph1} Відновіть правило"
#. {ph0}: <span>
#. {ph1}: </span>
#. {ph2}: <span class="assembly-disclosure" aria-hidden="true">
#. {ph3}: </span>
#: website/public/index.html:352
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Original x64 · selected instructions{ph1} {ph2}{ph3}"
msgstr "{ph0}Оригінальні вибрані інструкції для x64 ·{ph1}{ph2}{ph3}"
#: website/public/index.html:391
msgctxt "page:index.html"
msgid "01 · Which branch?"
msgstr "01 * в якій філії?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:392
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“{ph0}0x5b? 0x5c?{ph1} Two jumps to the same place. Which operators are "
"these?”"
msgstr ""
"“{ph0}0x5b? 0x5c?{ph1} Два переходи в одне і те ж місце. Що це за "
"оператори?”"
#: website/public/index.html:396
msgctxt "page:index.html"
msgid "Look up the command IDs, then label the branch."
msgstr "Знайдіть ідентифікатори команд, а потім позначте гілку."
#: website/public/index.html:402
msgctxt "page:index.html"
msgid "Divide ÷"
msgstr "Розділити ÷"
#: website/public/index.html:406
msgctxt "page:index.html"
msgid "Multiply ×"
msgstr "Помноживши ×"
#: website/public/index.html:411
msgctxt "page:index.html"
msgid "02 · What do the calls do?"
msgstr "02 · Що роблять викликані функції?"
#. {ph0}: <strong>
#. {ph1}: </strong >
#: website/public/index.html:412
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“100 is clear. The calls are just addresses. {ph0}Which one divides? Which "
"value goes in?{ph1}”"
msgstr ""
"\"100-це чисто. Дзвінки-це лише адреси. {ph0}Який з них ділиться? Яке "
"значення входить в?{ph1}”"
#: website/public/index.html:417
msgctxt "page:index.html"
msgid "Inspect the helpers and trace the stored values."
msgstr "Перевірте допоміжні функції та простежте збережені значення."
#: website/public/index.html:427
msgctxt "page:index.html"
msgid "Divide"
msgstr "Діливши"
#: website/public/index.html:432
msgctxt "page:index.html"
msgid "03 · What is the rule?"
msgstr "03 * яке це правило?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:433
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“This path multiplies by the other input. So {ph0}10% means 10% of 200{ph1} "
"after +.”"
msgstr ""
"\"Цей шлях множиться на інші вхідні дані. Таким чином, {ph0}10% означає 10% "
"від 200{ph1} після +”."
#: website/public/index.html:437
msgctxt "page:index.html"
msgid "Name the operands and check both operator paths."
msgstr "Назвіть операнди та перевірте обидва шляхи до операторів."
#: website/public/index.html:453 website/public/index.html:381
msgctxt "page:index.html"
msgid "Illustrative expert reasoning"
msgstr "Наочне міркування експерта"
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/index.html:456
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}You decode the instructions, follow the calls and reconstruct the "
"calculation.{ph1}"
msgstr ""
"{ph0}Ви розшифровуєте інструкції, виконуєте виклики функцій і відновлюєте "
"обчислення.{ph1}"
#. {ph0}: <strong class="prose-highlight">
#. {ph1}: </strong>
#: website/public/index.html:464
#, python-brace-format
msgctxt "page:index.html"
msgid "With REA · You ask {ph0}your agent{ph1}"
msgstr "З REA · Ви запитуєте {ph0}свого помічника{ph1}"
#: website/public/index.html:468
msgctxt "page:index.html"
msgid "One prompt."
msgstr "Лише один запит."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:469
#, python-brace-format
msgctxt "page:index.html"
msgid "Ask your agent {ph0}in plain English.{ph1}"
msgstr "Запитайте помічника {ph0}звичайними словами.{ph1}"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:474
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Calculator"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Приклад підказки * Калькулятор"
#: website/public/index.html:496
msgctxt "page:index.html"
msgid "Example answer · based on the findings"
msgstr "Приклад відповіді * заснований на результатах дослідження"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:499
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"After +, the % button takes {ph0}a percentage of the first number.{ph1}"
msgstr ""
"Після + кнопка % виводить {ph0}процентне значення від першого числа.{ph1}"
#: website/public/index.html:511
msgctxt "page:index.html"
msgid "REA supplies"
msgstr "REA надає"
#: website/public/index.html:512
msgctxt "page:index.html"
msgid "The handler’s instructions, decompiled code and calls."
msgstr "Інструкції обробника, декомпільований код та виклики."
#: website/public/index.html:517
msgctxt "page:index.html"
msgid "Your agent explains"
msgstr "Помічник пояснює"
#: website/public/index.html:518
msgctxt "page:index.html"
msgid "Which branch applies, what it calculates and how to rebuild it."
msgstr "Яка гілка застосовується, що вона обчислює і як її перебудувати."
#. {ph0}: <a href="#calculator">
#. {ph1}: </a>
#: website/public/index.html:525
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Selected assembly from the installed Calculator DLL. The thoughts and reply "
"illustrate the findings. {ph0}Continue with the Calculator example ↓{ph1}"
msgstr ""
"Виберіть збірку з встановленої бібліотеки DLL Calculator. Міркування та "
"відповідь ілюструють отримані результати. {ph0}Продовжимо з прикладом з "
"калькулятором ↓{ph1}"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:536
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Let's try two examples.{ph1} Change a game's speed, then return to "
"Calculator and rebuild its % button."
msgstr ""
"{ph0}Давайте розглянемо два приклади.{ph1} Змініть швидкість гри, потім "
"поверніться до калькулятора та відновіть його кнопку %."
#: website/public/index.html:542
msgctxt "page:index.html"
msgid "Example 01 · Chrome’s dinosaur game"
msgstr "Приклад 01 * гра в динозаврів Chrome"
#: website/public/index.html:543
msgctxt "page:index.html"
msgid "Why does the dinosaur get faster?"
msgstr "Чому динозавр прискорюється?"
#: website/public/index.html:547 website/public/index.html:785
msgctxt "page:index.html"
msgid "Goal"
msgstr "Мета"
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#: website/public/index.html:548
#, python-brace-format
msgctxt "page:index.html"
msgid "Rebuild the game with {ph0}adjustable speed.{ph1}"
msgstr "Перебудовуйте гру з {ph0}регульованою швидкістю.{ph1}"
#: website/public/index.html:554 website/public/index.html:792
msgctxt "page:index.html"
msgid "Why reverse engineer it?"
msgstr "Навіщо його перепроектувати?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:555
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"To reproduce its acceleration, we need {ph0}the rule in the running "
"game{ph1}: how fast it starts, how much it increases and when it stops."
msgstr ""
"Щоб відтворити його прискорення, нам потрібно {ph0}правило в біговій "
"грі{ph1}: як швидко воно починається, наскільки збільшується і коли "
"припиняється."
#: website/public/index.html:564
msgctxt "page:index.html"
msgid "Play the reconstruction"
msgstr "Грати у відтворену версію"
#: website/public/index.html:596
msgctxt "page:index.html"
msgid "Play"
msgstr "Грати"
#: website/public/index.html:599
msgctxt "page:index.html"
msgid "Jump ↑"
msgstr "Стрибок ↑"
#: website/public/index.html:600
msgctxt "page:index.html"
msgid "Restart"
msgstr "Почати знову"
#: website/public/index.html:603
msgctxt "page:index.html"
msgid "Speed"
msgstr "Швидкість"
#: website/public/index.html:613
msgctxt "page:index.html"
msgid "Use the recovered acceleration rule"
msgstr "Використовуйте правило відновленого прискорення"
#: website/public/index.html:617
msgctxt "page:index.html"
msgid "Original rule: start at 6, then increase toward 13."
msgstr "Початкове правило: починайте з 6, потім збільшуйте до 13."
#: website/public/index.html:620
msgctxt "page:index.html"
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
msgstr ""
"Перемістіть повзунок, щоб встановити власну швидкість. Пробіл або стрибок "
"прибирають кактус."
#: website/public/index.html:625
msgctxt "page:index.html"
msgid ""
"Enable JavaScript to play the reconstruction. The code and explanation above"
" remain readable."
msgstr ""
"Увімкніть JavaScript для відтворення реконструкції. Наведений вище код та "
"пояснення залишаються читабельними."
#: website/public/index.html:633 website/public/index.html:863
msgctxt "page:index.html"
msgid "REA returned"
msgstr "REA повернув"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:634
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}The script actually running in the page.{ph1} The agent reads its "
"update function and speed settings, then uses that rule in a new game."
msgstr ""
"{ph0}Скрипт, фактично запущений на сторінці.{ph1} Агент зчитує свою функцію "
"оновлення та налаштування швидкості, а потім використовує це правило в новій"
" грі."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:642
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Dinosaur game"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Приклад підказки * гра в динозаврів"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="dino-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:656
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this dinosaur game. Why does it get "
"faster? Show the speed rule, then build a small version with an adjustable "
"speed.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA, щоб ознайомитися з цією грою "
"динозаврів. Чому вона стала швидше? Покажіть правило швидкості, а потім "
"створіть зменшену версію зі змінною швидкістю.{ph3}{ph4}{ph5}"
#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph1}: </a >
#: website/public/index.html:665
#, python-brace-format
msgctxt "page:index.html"
msgid "Inspected target: {ph0}wayou’s Chromium-derived browser edition{ph1}."
msgstr ""
"Перевірена мета: {ph0}версія браузера wayou, заснована{ph1} на Chromium."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <strong>
#. {ph3}: </strong>
#. {ph4}: <strong>
#. {ph5}: </strong>
#: website/public/index.html:682
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Start at 6.{ph1} Add {ph2}0.001{ph3} each update without a collision, "
"while speed is below {ph4}13{ph5}."
msgstr ""
"{ph0}Почніть з 6.{ph1} Додавайте 0,001 при кожному оновленні без збоїв, поки"
" швидкість нижче 13.{ph2}{ph3}{ph4}{ph5}"
#: website/public/index.html:687
msgctxt "page:index.html"
msgid "Open the speed lab →"
msgstr "Відкрийте лабораторію швидкості →"
#: website/public/index.html:693
msgctxt "page:index.html"
msgid "What each part does"
msgstr "Що робить кожна частина"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:695
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}01 · REA{ph1}{ph2}Read the running game’s script{ph3}{ph4}Return its "
"actual code and settings to the agent.{ph5}"
msgstr ""
"{ph0}01 · REA{ph1}{ph2} Зчитує скрипт запущеної гри{ph3}{ph4} і повертає "
"його дійсний код та налаштування агенту.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:702
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}02 · Your agent{ph1}{ph2}Rebuild the rule, add a control{ph3}{ph4}Use "
"the recovered acceleration in a small game with a speed slider.{ph5}"
msgstr ""
"{ph0}02 * ваш агент{ph1}{ph2} перебудує правило, додасть елемент "
"управління{ph3}{ph4} і використовує Відновлене прискорення в невеликій грі з"
" повзунком швидкості.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:710
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}03 · You{ph1}{ph2}Change the speed and play{ph3}{ph4}Try the original "
"acceleration, then choose your own pace.{ph5}"
msgstr ""
"{ph0}03 * ви{ph1}{ph2} міняєте швидкість і граєте{ph3}{ph4} з оригінальним "
"прискоренням, потім вибираєте свій власний темп.{ph5}"
#: website/public/index.html:721
msgctxt "page:index.html"
msgid "See the script, checks and how to try the analysis"
msgstr "Ознайомтеся зі сценарієм, перевірками та як спробувати аналіз"
#. {ph0}: <code>index.js</code>
#: website/public/index.html:724
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"REA inspected the HTTP browser edition through a local debugging connection "
"and returned the loaded {ph0}, including its source and digest."
msgstr ""
"REA перевірив версію браузера HTTP через локальне з'єднання Налагодження та "
"повернув завантажений {ph0}, включаючи його вихідний код та дайджест."
#: website/public/index.html:737
msgctxt "page:index.html"
msgid ""
"We called the original game’s update function in a controlled browser check,"
" with obstacles and automatic scheduling disabled. After 4,000 updates, "
"speed was 10.0; after 10,000, it was 13.0, rounded to one decimal."
msgstr ""
"Ми запустили функцію оновлення оригінальної гри в контрольованій перевірці "
"браузера, вимкнувши перешкоди та автоматичне планування. Після 4000 оновлень"
" швидкість склала 10,0; після 10 000 - 13,0, округлена до одного знака після"
" коми."
#. {ph0}: <a href="examples/dino-lab/">
#. {ph1}: </a>
#: website/public/index.html:743
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"The new mini-game keeps that speed rule. Its drawing, jumping and collision "
"code are a small teaching implementation. {ph0}Open the lab{ph1} to see the "
"new code and run the same speed check."
msgstr ""
"У новій міні-грі збережено це правило швидкості. Її код для малювання, "
"стрибків і зіткнень - це невелика навчальна реалізація. {ph0}Відкрийте "
"лабораторію{ph1}, щоб ознайомитися з новим кодом і виконати ту ж перевірку "
"швидкості."
#. {ph0}: <a href="guides/browser/#prepare">
#. {ph1}: </a>
#. {ph2}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph3}: </a >
#: website/public/index.html:749
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"To inspect the target yourself, follow the {ph0}browser connection "
"steps{ph1} using {ph2}the dinosaur page{ph3}. Give your agent that page URL "
"and your local debugging endpoint, then copy the prompt above."
msgstr ""
"Щоб самостійно перевірити цільовий об'єкт, виконайте {ph0}дії по підключенню"
" до браузеру{ph1}, використовувати {ph2}сторінку dinosaur{ph3}. Вкажіть "
"своєму агенту URL - адресу цієї сторінки та локальну кінцеву точку "
"налагодження, а потім скопіюйте наведений вище запит."
#. {ph0}: <a href="https://github.com/wayou/t-rex-
#. runner/blob/5455bfa408ec6b707c7300ff194b7390733a766d/index.js#L565-L571" >
#. {ph1}: </a >
#. {ph2}: <a href="assets/licenses/dinosaur.txt" >
#. {ph3}: </a >
#: website/public/index.html:758
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Inspected speed code{ph1} · {ph2}Chromium Authors · BSD license{ph3}"
msgstr ""
"{ph0}Перевірений код швидкості{ph1} · {ph2}Автори Chromium * Ліцензія "
"BSD{ph3}"
#: website/public/index.html:775
msgctxt "page:index.html"
msgid "Example 02 · Windows Calculator"
msgstr "Приклад 02 * Калькулятор Windows"
#: website/public/index.html:776
msgctxt "page:index.html"
msgid "Rebuild Calculator’s % button."
msgstr "Відтворіть кнопку % калькулятора."
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#: website/public/index.html:786
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Build a small calculator that handles {ph0}both + and × correctly.{ph1}"
msgstr ""
"Створіть невеликий калькулятор, який {ph0}коректно обробляє як+, так і "
"×.{ph1}"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:793
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"The same button uses {ph0}different rules after + and ×.{ph1} We inspect the"
" installed app to find which number the percentage is applied to."
msgstr ""
"Одна і та ж кнопка використовує {ph0}різні правила після + і ×.{ph1} Ми "
"перевіряємо встановлене додаток, щоб визначити, до якого числа "
"застосовується процентне співвідношення."
#: website/public/index.html:802
msgctxt "page:index.html"
msgid "Try the calculation"
msgstr "Спробуйте зробити розрахунок"
#: website/public/index.html:846
msgctxt "page:index.html"
msgid "Reset"
msgstr "Скинути"
#: website/public/index.html:854
msgctxt "page:index.html"
msgid "10% of 200 = 20. Then 200 + 20 = 220."
msgstr "10% від 200 = 20. Тоді 200 + 20 = 220."
#: website/public/index.html:857
msgctxt "page:index.html"
msgid "Interactive illustration of the inspected percentage rule."
msgstr "Інтерактивна ілюстрація перевіряється процентного правила."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/index.html:864
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}One branch divides by 100. The other also multiplies by the first "
"number.{ph1} The agent uses both to recreate the % button."
msgstr ""
"{ph0}Одна гілка ділиться на 100. Інша також множиться на перше число.{ph1} "
"Агент використовує обидві гілки для відтворення кнопки%."
#. {ph0}: <code>previous = 200</code>
#. {ph1}: <code>current = 10</code>
#: website/public/index.html:872
#, python-brace-format
msgctxt "page:index.html"
msgid "For this example, {ph0} and {ph1}."
msgstr "У цьому прикладі {ph0}, а {ph1}."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:878
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Rebuild the % "
"button"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Приклад підказки · перебудувати "
"кнопку %"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="calculator-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:892
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator’s % button. Recover "
"the rules after + and ×, then build a small calculator that uses "
"both.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA для перевірки кнопки % у калькуляторі "
"Windows. Відновіть правила після + і×, а потім створіть невеликий "
"калькулятор, який використовує обидва параметри.{ph3}{ph4}{ph5}"
#: website/public/index.html:913
msgctxt "page:index.html"
msgid "With +"
msgstr "Со +"
#. {ph0}: <strong>
#. {ph1}: </strong >
#. {ph2}: <code>10% of 200 = 20 → 200 + 20 = 220</code>
#: website/public/index.html:914
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Take 10% of the first number.{ph1}{ph2}"
msgstr "{ph0}Візьмемо 10% від першого числа.{ph1}{ph2}"
#: website/public/index.html:920
msgctxt "page:index.html"
msgid "With ×"
msgstr "Со ×"
#. {ph0}: <strong>
#. {ph1}: </strong >
#. {ph2}: <code>200 × 0.1 = 20</code>
#: website/public/index.html:921
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Turn 10% into 0.1.{ph1}{ph2}"
msgstr "{ph0}Перетворіть 10% на 0,1200{ph1}{ph2}"
#: website/public/index.html:930
msgctxt "page:index.html"
msgid "From the installed app to a working % button"
msgstr "Від встановленого додатка до робочої кнопки %"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>100</code>
#. {ph6}: </span >
#: website/public/index.html:943
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}02 · REA reads the library{ph1}{ph2}Return the % handler’s "
"code{ph3}{ph4}The function checks the operator and uses the constant "
"{ph5}.{ph6}"
msgstr ""
"{ph0}02 * REA читає бібліотеку{ph1}{ph2}, повертає код обробника "
"%{ph3}{ph4}, функція перевіряє оператор і використовує константу {ph5}.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:951
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}03 · Your agent interprets it{ph1}{ph2}Explain and reproduce the "
"rules{ph3}{ph4}Crosscheck the branch with Microsoft’s source, then try + and"
" × above.{ph5}"
msgstr ""
"{ph0}03 * ваш агент інтерпретує це{ph1}{ph2}, пояснює та відтворює "
"правила{ph3}{ph4}, звіряє гілку з вихідним кодом Microsoft, а потім "
"спробуйте + і × вище.{ph5}"
#: website/public/index.html:962
msgctxt "page:index.html"
msgid "See the real code and how the answer was checked"
msgstr "Подивіться реальний код і те, як була перевірена відповідь"
#: website/public/index.html:988
msgctxt "page:index.html"
msgid ""
"Inspected with REA 4.1.0: Windows Calculator 11.2508.4.0, x64. The readable "
"summary uses names from Microsoft’s public source to explain the recovered "
"branch."
msgstr ""
"Перевірено за допомогою REA 4.1.0: Windows Calculator 11.2508.4.0, x64. "
"Резюме, доступне для читання, використовує імена з загальнодоступного "
"Джерела Microsoft для опису відновленої гілки."
#. {ph0}: <a
#. href="https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalcManager/CEngine/scifunc.cpp#L98-L111"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalculatorUnitTests/CalculatorManagerTest.cpp#L350-L370"
#. >
#. {ph3}: </a >
#. {ph4}: <a href="guides/native/">
#. {ph5}: </a>
#: website/public/index.html:993
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Percentage implementation{ph1} · {ph2}Microsoft’s test cases{ph3} · "
"{ph4}Native setup guide{ph5}"
msgstr ""
"{ph0}Відсоток реалізації{ph1} · {ph2}Тестові приклади Microsoft{ph3} * "
"Керівництво по {ph4}вбудованої налаштуванні{ph5}"
#: website/public/index.html:1012
msgctxt "page:index.html"
msgid "Your first investigation"
msgstr "Ваше перше розслідування"
#: website/public/index.html:1013
msgctxt "page:index.html"
msgid "Try REA on a small app."
msgstr "Спробуйте REA у невеликому додатку."
#: website/public/index.html:1014
msgctxt "page:index.html"
msgid ""
"Download our Notes example, trace its CSV export, and check one changed "
"input."
msgstr ""
"Завантажте наш приклад Notes, простежте його експорт CSV і перевірте один "
"змінений вхід."
#: website/public/index.html:1019
msgctxt "page:index.html"
msgid "Try the guided example"
msgstr "Спробуйте керуватися наведеним прикладом"
#: website/public/index.html:1028
msgctxt "page:index.html"
msgid "Want to go deeper?"
msgstr "Хочете дізнатися більше?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <strong>
#. {ph3}: </strong>
#: website/public/index.html:1029
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Tell your agent what you want to understand or build. With REA, you can work"
" together on anything from {ph0}cloning this website{ph1} to "
"{ph2}reconstructing a game from its executable.{ph3}"
msgstr ""
"Скажіть своєму агенту, що ви хочете зрозуміти або доопрацювати. З REA ви "
"можете працювати разом над чим завгодно-від {ph0}клонування цього веб-"
"сайту{ph1} до {ph2}відтворення гри по її виконуваному файлу.{ph3}"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:1040
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Website"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Приклад запиту * Веб-сайт"
#: website/public/index.html:1063
msgctxt "page:index.html"
msgid "Yes, this one."
msgstr "Так, ось цей."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:1068
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Game reconstruction"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Приклад підказки · Реконструкція гри"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="game-project-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:1082
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to reconstruct this game from its executable. "
"Recover the gameplay logic in C and test it against the "
"original.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA, щоб відтворити цю гру за її виконуваним"
" файлом. Відновіть логіку ігрового процесу на C і порівняйте її з "
"оригіналом.{ph3}{ph4}{ph5}"
#. {ph0}: <a href="showcase/dx-ball/">
#. {ph1}: </a>
#: website/public/index.html:1091
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}See the DX-Ball case study →{ph1}"
msgstr "{ph0}Дивіться тематичне дослідження DX-Ball →{ph1}"
#: website/public/index.html:1096
msgctxt "page:index.html"
msgid "For setup and analysis steps, choose your target:"
msgstr ""
"Для виконання етапів настройки і аналізу виберіть свій цільовий об'єкт:"
#: website/public/index.html:1101
msgctxt "page:index.html"
msgid "Native binaries"
msgstr "Програми з машинним кодом"
#: website/public/index.html:1102
msgctxt "page:index.html"
msgid ""
"Inspect functions, strings, references and call relationships in executables"
" and libraries."
msgstr ""
"Перевірте функції, рядки, посилання та зв'язки між викликами функцій у "
"виконуваних файлах та бібліотеках."
#: website/public/index.html:1106
msgctxt "page:index.html"
msgid "Native analysis guide"
msgstr "Керівництво по аналізу програм з машинним кодом"
#: website/public/index.html:1109
msgctxt "page:index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript і Electron"
#: website/public/index.html:1110
msgctxt "page:index.html"
msgid ""
"Map modules, routes, IPC and native dependencies from an application folder "
"or ASAR archive."
msgstr ""
"Відображайте модулі, маршрути, IPC та власні залежності з папки програми або"
" архіву ASAR."
#: website/public/index.html:1114
msgctxt "page:index.html"
msgid "Application workflows"
msgstr "Робочі процеси додатків"
#: website/public/index.html:1117
msgctxt "page:index.html"
msgid "Browser & runtime activity"
msgstr "Активність у браузері та під час виконання"
#: website/public/index.html:1118
msgctxt "page:index.html"
msgid ""
"Capture selected browser or process activity, then compare the results "
"across runs."
msgstr ""
"Фіксуйте активність обраного браузера або процесу, а потім порівнюйте "
"результати в різних запусках."
#: website/public/index.html:1122
msgctxt "page:index.html"
msgid "Browser observation guide"
msgstr "Керівництво по спостереженню за браузером"
#: website/public/index.html:1129
msgctxt "page:index.html"
msgid "Any questions?"
msgstr "Маєте запитання?"
#. {ph0}: <a href="faq/">
#. {ph1}: </a>
#. {ph2}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph3}: </a>
#. {ph4}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph5}: </a >
#: website/public/index.html:1130
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Read the FAQ{ph1}, {ph2}chat with us on Discord{ph3}, or {ph4}open a "
"GitHub issue{ph5} for bugs and feature requests."
msgstr ""
"{ph0}Ознайомтеся з часто{ph1} задавати питання, {ph2}поспілкуйтеся з нами по"
" Discord{ph3} або {ph4}відкрийте випуск{ph5} GitHub, щоб дізнатися про "
"помилки та запити функцій."
#: website/public/index.html:1143 website/public/index.html:1149
msgctxt "page:index.html"
msgid "Join the community"
msgstr "Приєднатися до спільноти"
#: website/public/index.html:1144
msgctxt "page:index.html"
msgid ""
"Share investigations and get help from other REA users on Discord. Follow "
"REA on X for project updates."
msgstr ""
"Діліться результатами досліджень і отримуйте допомогу від інших користувачів"
" REA на Discord. Слідкуйте за оновленнями проекту REA на X."
#: website/public/index.html:6
msgctxt "page:index.html"
msgid "REA — Reverse Engineering for Your Coding Agent"
msgstr "REA-реверс-інжиніринг для вашого програміста"
#: website/public/index.html:7
msgctxt "page:index.html"
msgid ""
"Reverse engineer apps, binaries and browser behavior with your coding agent."
" Follow clear guides and try interactive examples with REA."
msgstr ""
"Реінжиніринг програм, двійкових файлів та поведінки браузера за допомогою "
"агента кодування. Дотримуйтесь чітких інструкцій та спробуйте інтерактивні "
"приклади з REA."
#: website/public/index.html:242
msgctxt "page:index.html"
msgid "Copy REA installation prompt"
msgstr "Скопіюйте запит на встановлення REA"
#: website/public/index.html:264
msgctxt "page:index.html"
msgid "Copy setup command"
msgstr "Команда Налаштування Копіювання"
#: website/public/index.html:316
msgctxt "page:index.html"
msgid "Follow the manual Calculator analysis"
msgstr "Дотримуйтесь інструкцій ручного калькулятора для аналізу"
#: website/public/index.html:479
msgctxt "page:index.html"
msgid "Copy Calculator percentage question"
msgstr "Процентне питання калькулятора копіювання"
#: website/public/index.html:586
msgctxt "page:index.html"
msgid ""
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
"focused."
msgstr ""
"Міні-гра про динозаврів. Використовуйте кнопку переходу або натисніть "
"пробіл, поки гра зосереджена."
#: website/public/index.html:647
msgctxt "page:index.html"
msgid "Copy dinosaur analysis prompt"
msgstr "Запит на копіювання результатів аналізу динозаврів"
#: website/public/index.html:803
msgctxt "page:index.html"
msgid "Choose the calculation"
msgstr "Виберіть спосіб розрахунку"
#: website/public/index.html:883
msgctxt "page:index.html"
msgid "Copy Calculator analysis prompt"
msgstr "Запит на аналіз за допомогою калькулятора копіювання"
#: website/public/index.html:1045
msgctxt "page:index.html"
msgid "Copy website project prompt"
msgstr "Запит на копіювання проекту веб-сайту"
#: website/public/index.html:1073
msgctxt "page:index.html"
msgid "Copy game reconstruction prompt"
msgstr "Запит на копіювання реконструкції гри"
#: website/public/index.html:1173
msgctxt "page:index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/showcase/aegis/index.html:100
msgctxt "page:showcase/aegis/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/aegis/index.html:182
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Android"
msgstr "{ph0}Головний{ph1} сторінка / {ph2}Вітрина{ph3} / Android"
#: website/public/showcase/aegis/index.html:185
msgctxt "page:showcase/aegis/index.html"
msgid "Case study · Aegis Authenticator"
msgstr "Практичний приклад * аутентифікатор Aegis"
#. {ph0}: <br />
#: website/public/showcase/aegis/index.html:186
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "How does an authenticator{ph0}generate a login code?"
msgstr "Звідки Аутентифікатор{ph0}генерувати код авторизації?"
#: website/public/showcase/aegis/index.html:187
msgctxt "page:showcase/aegis/index.html"
msgid ""
"A six-digit code changes every 30 seconds. Use REA to find the calculation "
"in an Android APK, then rebuild it with a clock you can control."
msgstr ""
"Шестизначний код змінюється кожні 30 секунд. Використовуйте REA , щоб знайти"
" обчислення в Android APK, а потім відновіть їх за допомогою годинника, яким"
" ви можете керувати."
#: website/public/showcase/aegis/index.html:192
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis 3.4.3 · Android · Official release APK · 6.9 MB"
msgstr "Aegis 3.4.3 * Android * офіційний реліз APK * 6,9 МБ"
#: website/public/showcase/aegis/index.html:195
msgctxt "page:showcase/aegis/index.html"
msgid "View Aegis on GitHub"
msgstr "Переглянути Aegis на GitHub"
#: website/public/showcase/aegis/index.html:201
msgctxt "page:showcase/aegis/index.html"
msgid "From an APK to a code you can reproduce"
msgstr "Від APK до коду, який ви можете відтворити"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node" >
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:203
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}01 · Locate the feature{ph1}{ph2}3,077 classes → generating "
"methods{ph3}{ph4}REA searches the package and traces the code used by the "
"display and copy actions.{ph5}"
msgstr ""
"{ph0}01 * знайдіть функцію{ph1}{ph2} 3077 класи → методи генерації{ph3}{ph4}"
" REA здійснює пошук у пакеті та відстежує код, який використовується для "
"відображення та копіювання дій.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:212
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}02 · Read the calculation{ph1}{ph2}Time + account key → six "
"digits{ph3}{ph4}REA returns the methods and defaults. The agent explains how"
" they fit together.{ph5}"
msgstr ""
"{ph0}02 * Прочитайте час розрахунку{ph1}{ph2} + ключ облікового запису → "
"шестизначний{ph3}{ph4} REA повертає методи та значення за замовчуванням. "
"Агент пояснює, як вони поєднуються.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:220
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}03 · Rebuild and check{ph1}{ph2}Change the clock. Watch the "
"code.{ph3}{ph4}A new browser demo reproduces the rule and checks it against "
"public reference cases.{ph5}"
msgstr ""
"{ph0}03 * перебудуйте і встановіть прапорець{ph1}{ph2} \"Змінити час\". "
"Ознайомтеся з кодом.{ph3}{ph4}Нова демонстрація браузера відтворює правило і"
" перевіряє його на відповідність загальнодоступним посиланням.{ph5}"
#: website/public/showcase/aegis/index.html:233
msgctxt "page:showcase/aegis/index.html"
msgid "In this case study"
msgstr "У цьому тематичному дослідженні"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:235
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Запитайте свого агента{ph1}"
#. {ph0}: <a href="#demo">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:236
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Try the code generator{ph1}"
msgstr "{ph0}Спробуйте скористатися генератором коду{ph1}"
#. {ph0}: <a href="#find">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:237
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Find the code with REA{ph1}"
msgstr "{ph0}Знайдіть код за допомогою REA{ph1}"
#. {ph0}: <a href="#calculation">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:238
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Read the calculation{ph1}"
msgstr "{ph0}Ознайомтеся з розрахунком{ph1}"
#. {ph0}: <a href="#verify">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:239
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Check the reconstruction{ph1}"
msgstr "{ph0}Перевірте реконструкцію{ph1}"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:240
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Inspect the APK yourself{ph1}"
msgstr "{ph0}Перевірте APK самостійно{ph1}"
#: website/public/showcase/aegis/index.html:245
msgctxt "page:showcase/aegis/index.html"
msgid "Ask your agent"
msgstr "Запитайте свого агента"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:246
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The app shows a changing login code. We want to find {ph0}what makes it "
"change{ph1} and reproduce that behavior."
msgstr ""
"Додаток показує змінюється код для входу в систему. Ми хочемо з'ясувати, "
"{ph0}що змушує його змінюватися{ph1}, і відтворити цю поведінку."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/aegis/index.html:252
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#: website/public/showcase/aegis/index.html:256
#: website/public/showcase/aegis/index.html:719
msgctxt "page:showcase/aegis/index.html"
msgid "Copy"
msgstr "Копіювати"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:276
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"An example prompt for the downloaded APK, with REA's Android analysis "
"configured. {ph0}Get the APK and analysis setup ↓{ph1}"
msgstr ""
"Приклад запиту для завантаженого APK з налаштованим аналізом REA для "
"Android. {ph0}Отримайте APK і налаштування аналізу ↓{ph1}"
#: website/public/showcase/aegis/index.html:284
msgctxt "page:showcase/aegis/index.html"
msgid "Try the code generator"
msgstr "Спробуйте скористатися генератором коду"
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#: website/public/showcase/aegis/index.html:285
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The app groups time into {ph0}30-second blocks.{ph1} It combines the block "
"number with the account key to generate a code. The same key and block "
"produce the same code."
msgstr ""
"Додаток групує час в {ph0}30-секундні блоки.{ph1} Для генерації коду номер "
"блоку об'єднується з ключем облікового запису. Один і той же ключ і блок "
"генерують один і той же код."
#: website/public/showcase/aegis/index.html:292
msgctxt "page:showcase/aegis/index.html"
msgid "Move the clock across 60 seconds"
msgstr "Переведіть стрілки годинника на 60 секунд вперед"
#: website/public/showcase/aegis/index.html:295
msgctxt "page:showcase/aegis/index.html"
msgid "Time"
msgstr "Час"
#: website/public/showcase/aegis/index.html:297
msgctxt "page:showcase/aegis/index.html"
msgid "seconds"
msgstr "секунда"
#: website/public/showcase/aegis/index.html:298
msgctxt "page:showcase/aegis/index.html"
msgid "Our adjustable example clock"
msgstr "Наші регульовані зразкові годинник"
#: website/public/showcase/aegis/index.html:301
msgctxt "page:showcase/aegis/index.html"
msgid "30-second block"
msgstr "30-секундний блок"
#: website/public/showcase/aegis/index.html:303
#: website/public/showcase/aegis/index.html:630
msgctxt "page:showcase/aegis/index.html"
msgid "Block"
msgstr "Блок"
#. {ph0}: <code data-aegis-division>floor(59 / 30)</code>
#. {ph1}: <br />
#. {ph2}: <span data-aegis-window >
#. {ph3}: </span >
#: website/public/showcase/aegis/index.html:304
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}{ph1}{ph2}30–59 seconds{ph3}"
msgstr "{ph0}{ph1}{ph2}30-59 секунд{ph3}"
#: website/public/showcase/aegis/index.html:312
msgctxt "page:showcase/aegis/index.html"
msgid "Generated code"
msgstr "Згенерований код"
#: website/public/showcase/aegis/index.html:320
msgctxt "page:showcase/aegis/index.html"
msgid "Account key + block → six digits"
msgstr "Ключ облікового запису + блокування → шість цифр"
#: website/public/showcase/aegis/index.html:326
msgctxt "page:showcase/aegis/index.html"
msgid "Example time, in seconds"
msgstr "Приблизний час, в секундах"
#: website/public/showcase/aegis/index.html:341
#: website/public/showcase/aegis/index.html:641
msgctxt "page:showcase/aegis/index.html"
msgid "59 seconds"
msgstr "59 секунд"
#: website/public/showcase/aegis/index.html:348
#: website/public/showcase/aegis/index.html:646
msgctxt "page:showcase/aegis/index.html"
msgid "60 seconds"
msgstr "60 секунд"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <strong>
#. {ph3}: </strong>
#: website/public/showcase/aegis/index.html:357
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"At 59 seconds: {ph0}287082.{ph1} At 60 seconds: {ph2}359152.{ph3} Moving "
"within one block leaves the code unchanged."
msgstr ""
"На 59 секунді: {ph0}287082.{ph1} На 60 секунді: {ph2}359152.{ph3} При "
"переміщенні в межах одного блоку код залишається незмінним."
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:364
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The key is fixed, public {ph0}RFC 6238 test data{ph1}. The demo implements "
"the calculation recovered from the APK."
msgstr ""
"Ключ є фіксованим, загальнодоступні {ph0}тестові дані RFC 6238{ph1}. У "
"демонстрації реалізований розрахунок, відновлений з APK ."
#: website/public/showcase/aegis/index.html:371
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The diagram shows the result at 59 seconds. Enable JavaScript to change the "
"clock."
msgstr ""
"На діаграмі показано результат за 59 секунд. Увімкніть JavaScript, щоб "
"змінити час."
#: website/public/showcase/aegis/index.html:380
msgctxt "page:showcase/aegis/index.html"
msgid "Find the code with REA"
msgstr "Знайдіть код за допомогою REA"
#: website/public/showcase/aegis/index.html:383
msgctxt "page:showcase/aegis/index.html"
msgid "Narrow the APK to three classes"
msgstr "Скоротіть APK до трьох класів"
#. {ph0}: <code>TotpInfo</code>
#: website/public/showcase/aegis/index.html:408
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0} is the calculation candidate; the other two concern the progress bar "
"and imported accounts. TOTP means a time-based one-time password."
msgstr ""
"{ph0} обчислення використовується TotpInfo; два інші параметри стосуються "
"індикатора виконання та імпортованих облікових записів. TOTP означає "
"одноразовий пароль на основі часу."
#: website/public/showcase/aegis/index.html:415
msgctxt "page:showcase/aegis/index.html"
msgid "Connect the generator to the app's display"
msgstr "Підключіть генератор до дисплея програми"
#. {ph0}: <code>EntryHolder.getOtp</code>
#. {ph1}: <code>TotpInfo.getOtp(timestamp)</code>
#: website/public/showcase/aegis/index.html:443
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"REA identifies the timestamp overload and finds the base method's callers. "
"Inspecting {ph0} then shows the display calling {ph1}."
msgstr ""
"REA визначає перевантаження часової мітки і знаходить викликають базовий "
"метод. При перевірці {ph0} на дисплеї відображається виклик {ph1}."
#. {ph0}: <code>com.beemdevelopment.aegis</code>
#: website/public/showcase/aegis/index.html:451
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Requests show a shortened input path. Result class names omit the common "
"{ph0} prefix."
msgstr ""
"Запити показують скорочений шлях введення. В іменах результуючих КЛАСІВ "
"відсутній поширений префікс {ph0}."
#: website/public/showcase/aegis/index.html:458
msgctxt "page:showcase/aegis/index.html"
msgid "Read the calculation"
msgstr "Ознайомтеся з розрахунком"
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/showcase/aegis/index.html:459
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"REA returns {ph0}the clock conversion, default settings and generating "
"methods.{ph1} The constructors set a 30-second interval and six digits; the "
"timestamp method turns seconds into a block number."
msgstr ""
"REA повертає {ph0}перетворення годин, налаштування за замовчуванням і методи"
" генерації.{ph1} Розробники встановили 30-секундний інтервал і шість цифр; "
"метод часової позначки перетворює секунди в номер блоку."
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:474
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}01{ph1} Time block"
msgstr "{ph0}Часовий блок 01{ph1}"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:482
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}02{ph1} Key + block"
msgstr "{ph0}02{ph1} Клавіша + блок"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:490
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}03{ph1} Six digits"
msgstr "{ph0}03{ph1} Шість цифр"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:549
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Time chooses the block.{ph1} Seconds 30 through 59 all give block 1. At"
" 60 seconds, the block becomes 2."
msgstr ""
"{ph0}Час вибирає блок.{ph1} Усі секунди від 30 до 59 дають блок 1. Через 60 "
"секунд блок стає 2."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:555
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}The key matters too.{ph1} The generator combines the account key with "
"the block. An account with a different key can show a different code at the "
"same time."
msgstr ""
"{ph0}Ключ також має значення.{ph1} Генератор поєднує ключ облікового запису "
"з блоком. Обліковий запис з іншим ключем може одночасно відображати інший "
"код."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:562
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Keep six digits.{ph1} The remainder after division by 1,000,000 is "
"padded with zeroes when needed, so a code can begin with 0."
msgstr ""
"{ph0}Залиште шість цифр.{ph1} Залишок після ділення на 1 000 000 при "
"необхідності доповнюється нулями, так що код може починатися з 0."
#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/LICENSE"
#. >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:569
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Excerpts from several inspected methods, with line wrapping for display. The"
" right panel is an explanatory summary. {ph0}Aegis code is GPL-3.0.{ph1}"
msgstr ""
"Наведено витяги з декількох перевірених методів з перенесенням рядків для "
"відображення. Права панель являє собою пояснювальне резюме. {ph0}Код Aegis "
"відповідає GPL-3.0.{ph1}"
#: website/public/showcase/aegis/index.html:578
msgctxt "page:showcase/aegis/index.html"
msgid "Inside the generator"
msgstr "Всередині генератора"
#. {ph0}: <code>generateOTP</code>
#. {ph1}: <code>kotlin.ExceptionsKt</code>
#. {ph2}: <code>TotpInfo</code>
#. {ph3}: <code>HOTP</code>
#: website/public/showcase/aegis/index.html:579
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The released APK puts {ph0} in {ph1}. REA follows the call from {ph2} and "
"returns this body; the original source calls the helper {ph3}."
msgstr ""
"Випущений APK перекладає {ph0} в {ph1}. REA слідує за викликом з {ph2} і "
"повертає це тіло; оригінальне джерело викликає допоміжне {ph3}."
#: website/public/showcase/aegis/index.html:601
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The last hash byte selects a position. Four bytes at that position provide a"
" positive 31-bit number; formatting reduces it to the requested number of "
"digits. The constructor's last argument selects the code-formatting branch "
"introduced by compilation."
msgstr ""
"Останній байт хешу вибирає позицію. Чотири байти в цій позиції дають "
"позитивне 31-розрядне число; форматування зменшує його до необхідної "
"кількості цифр. Останній аргумент конструктора вибирає гілку форматування "
"коду, введену під час компіляції."
#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/app/src/main/java/com/beemdevelopment/aegis/crypto/otp/HOTP.java"
#. >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:608
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Compare with the matching release source{ph1}."
msgstr "{ph0}Порівняйте з відповідним джерелом випуску{ph1}."
#: website/public/showcase/aegis/index.html:618
msgctxt "page:showcase/aegis/index.html"
msgid "Check the reconstruction"
msgstr "Перевірте реконструкцію"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:619
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"We assembled the selected REA-returned Java methods in a small test program."
" Their output matched an independent reconstruction on {ph0}133 test "
"cases{ph1}, including time-block boundaries and codes beginning with zero."
msgstr ""
"Ми зібрали вибрані методи Java, повернуті REA, у невелику тестову програму. "
"Їх результати відповідали незалежній реконструкції {ph0}133 тестових "
"прикладів{ph1}, включаючи межі тимчасових блоків і коди, що починаються з "
"нуля."
#: website/public/showcase/aegis/index.html:629
msgctxt "page:showcase/aegis/index.html"
msgid "Example time"
msgstr "Приблизний час"
#: website/public/showcase/aegis/index.html:631
msgctxt "page:showcase/aegis/index.html"
msgid "Six-digit code"
msgstr "Шестизначний код"
#: website/public/showcase/aegis/index.html:636
msgctxt "page:showcase/aegis/index.html"
msgid "30 seconds"
msgstr "30 секунд"
#: website/public/showcase/aegis/index.html:651
msgctxt "page:showcase/aegis/index.html"
msgid "1,111,111,109 seconds"
msgstr "1,111,111,109 секунди"
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:658
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The generator also matches the six published SHA-1 reference cases in "
"{ph0}RFC 6238{ph1}. Check the browser implementation against them:"
msgstr ""
"Генератор також відповідає шести опублікованим посилальним варіантам SHA-1 в"
" {ph0}RFC 6238{ph1}. Перевірте їх реалізацію в браузері:"
#: website/public/showcase/aegis/index.html:666
msgctxt "page:showcase/aegis/index.html"
msgid "Run reference checks"
msgstr "Виконувати перевірку посилань"
#: website/public/showcase/aegis/index.html:673
msgctxt "page:showcase/aegis/index.html"
msgid "Read the demo's calculation"
msgstr "Ознайомтеся з демонстраційним розрахунком"
#: website/public/showcase/aegis/index.html:677
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The reference cases use eight digits. The check also verifies their six-"
"digit results."
msgstr ""
"У контрольних випадках використовуються восьмизначні значення. Перевірка "
"також підтверджує їх шестизначні результати."
#: website/public/showcase/aegis/index.html:686
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Verification runs extracted Java methods and the new demo. The Android APK "
"was inspected statically."
msgstr ""
"Для перевірки використовуються витягнуті методи Java та нова демонстрація. "
"Android APK був перевірений статично."
#: website/public/showcase/aegis/index.html:693
msgctxt "page:showcase/aegis/index.html"
msgid "Inspect the APK yourself"
msgstr "Перевірте APK самостійно"
#. {ph0}: <a href="../../get-started/">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:694
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Set up REA{ph1} on macOS or Linux, then download these two files into "
"the same folder. On Windows, use a Linux environment such as WSL."
msgstr ""
"{ph0}Налаштуйте REA{ph1} на macOS або Linux , потім завантажте ці два файли "
"в одну папку. У Windows використовуйте середовище Linux, таке як WSL."
#. {ph0}: <code>JAVA_HOME</code>
#. {ph1}: <code>PATH</code>
#: website/public/showcase/aegis/index.html:699
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Android analysis needs a full JDK 17 or later. Select it with {ph0} or "
"{ph1}. This case used JDK 21."
msgstr ""
"Для аналізу Android потрібен повний JDK 17 або новішої версії. Виберіть його"
" за допомогою {ph0} або {ph1}. У цьому випадку використовувався JDK 21."
#: website/public/showcase/aegis/index.html:715
msgctxt "page:showcase/aegis/index.html"
msgid "Point REA at the provider file and inspect the APK:"
msgstr "Наведіть курсор REA на файл постачальника та перевірте APK :"
#: website/public/showcase/aegis/index.html:718
msgctxt "page:showcase/aegis/index.html"
msgid "macOS / Linux"
msgstr "macOS / Linux"
#. {ph0}: <code>REA_JADX_MCP_JAR</code>
#: website/public/showcase/aegis/index.html:732
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Your agent can continue through REA's CLI using the prompt above. For MCP, "
"add {ph0} to the REA server's environment and reconnect it."
msgstr ""
"Ваш агент може продовжити роботу через CLI від REA, скориставшись наведеною "
"вище інструкцією. Для MCP додайте {ph0} у середу сервера REA і повторно "
"підключіть його."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/showcase/aegis/index.html:737
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"A next question: {ph0}what happens when an account uses eight digits or a "
"different time interval?{ph1}"
msgstr ""
"Наступне питання: {ph0}що відбувається, коли в обліковому записі "
"використовуються вісім цифр або інший інтервал часу?{ph1}"
#: website/public/showcase/aegis/index.html:747
msgctxt "page:showcase/aegis/index.html"
msgid "Sources"
msgstr "Джерело"
#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/releases/tag/v3.4.3" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/beemdevelopment/Aegis/tree/d6f4e5925a97e4e91593f1542085eae03432a759"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/LICENSE"
#. >
#. {ph5}: </a >
#: website/public/showcase/aegis/index.html:749
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Official Aegis 3.4.3 release{ph1} · {ph2}Matching source commit{ph3} · "
"{ph4}GPL-3.0 license{ph5}"
msgstr ""
"{ph0}Офіційний реліз Aegis 3.4.3{ph1} · {ph2}Відповідний оригінальний{ph3} "
"код · {ph4}Ліцензія GPL-3.0{ph5}"
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#. {ph2}: <a href="test-vectors.json">
#. {ph3}: </a>
#: website/public/showcase/aegis/index.html:765
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}RFC 6238 reference cases{ph1} · {ph2}Demo test data{ph3}"
msgstr ""
"{ph0}Довідкові приклади RFC 6238{ph1} · {ph2}Демонстраційні тестові "
"дані{ph3}"
#: website/public/showcase/aegis/index.html:772
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Inspected with REA 6.1.0 on 9 October 2026. Decompiled excerpts are credited"
" to Aegis; the diagram, readable summary and browser reconstruction are new "
"teaching material."
msgstr ""
"Перевірено за допомогою REA 6.1.0 9 жовтня 2026 року. Декомпільовані "
"фрагменти додаються до Aegis; діаграма, читабельне резюме та реконструкція "
"браузера-це новий навчальний матеріал."
#: website/public/showcase/aegis/index.html:6
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis APK Reverse Engineering: Login Codes — REA"
msgstr "Aegis APK зворотний інжиніринг: коди для входу-REA"
#: website/public/showcase/aegis/index.html:7
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Inspect the Aegis Android APK with REA, recover its six-digit login-code "
"calculation and try a reconstruction with an adjustable clock."
msgstr ""
"Перевірити Aegis Андроїд APK з REA, відновити його шестизначний логін-код "
"розрахунків і спробувати реконструкція з регульованим годинник."
#: website/public/showcase/aegis/index.html:232
msgctxt "page:showcase/aegis/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/showcase/aegis/index.html:243
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis APK case study"
msgstr "Тематичне дослідження Aegis APK"
#: website/public/showcase/aegis/index.html:256
msgctxt "page:showcase/aegis/index.html"
msgid "Copy Aegis example prompt"
msgstr "Скопіювати запит як приклад Aegis"
#: website/public/showcase/aegis/index.html:469
msgctxt "page:showcase/aegis/index.html"
msgid "Follow the login-code calculation"
msgstr "Дотримуйтесь інструкцій щодо введення реєстраційного коду"
#: website/public/showcase/aegis/index.html:719
msgctxt "page:showcase/aegis/index.html"
msgid "Copy APK inspection command"
msgstr "Скопіювати команду перевірки APK"
#: website/public/showcase/aegis/index.html:795
msgctxt "page:showcase/aegis/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/showcase/ctf/index.html:99
msgctxt "page:showcase/ctf/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/ctf/index.html:181
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / CTF"
msgstr "{ph0}Головний{ph1} сторінка / {ph2}Вітрина{ph3} / CTF"
#: website/public/showcase/ctf/index.html:184
msgctxt "page:showcase/ctf/index.html"
msgid "Case study · DownUnderCTF 2023"
msgstr "Тематичне дослідження * DownUnderCTF 2023"
#. {ph0}: <br />
#: website/public/showcase/ctf/index.html:185
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "Find the flag in{ph0}a CTF binary."
msgstr "Знайдіть прапор у{ph0}двійковому форматі CTF."
#. {ph0}: <code>Correct!</code>
#: website/public/showcase/ctf/index.html:186
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Use REA to inspect a small flag checker, turn its rules into equations and "
"find an input that makes the original program print {ph0}."
msgstr ""
"Використовуйте REA для перевірки невеликого засобу перевірки прапорів, "
"перетворіть його правила в рівняння та знайдіть вхідні дані, які {ph0}."
#: website/public/showcase/ctf/index.html:191
msgctxt "page:showcase/ctf/index.html"
msgid "masked squares flag checker · Easy · Linux x86-64"
msgstr ""
"пристрій для перевірки прапорців в маскованих квадратах * просте * Linux "
"x86-64"
#: website/public/showcase/ctf/index.html:194
msgctxt "page:showcase/ctf/index.html"
msgid "View the original challenge"
msgstr "Перегляньте оригінальну задачу"
#: website/public/showcase/ctf/index.html:202
msgctxt "page:showcase/ctf/index.html"
msgid "From a binary to a checked answer"
msgstr "Від двійкового коду до перевіреної відповіді"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/ctf/index.html:204
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}01 · Find the check{ph1}{ph2}Strings → checking functions{ph3}{ph4}REA "
"finds the prompt, its references and the code that accepts or rejects an "
"input.{ph5}"
msgstr ""
"{ph0}01 * знайдіть рядки перевірки{ph1}{ph2} → функція{ph3}{ph4} перевірки "
"REA знаходить запит, посилання на нього і код, який приймає або відхиляє "
"дані, що вводяться.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/ctf/index.html:212
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}02 · Extract the rules{ph1}{ph2}36 characters · 26 sums{ph3}{ph4}REA "
"returns the instructions and data behind each check. The agent turns them "
"into equations.{ph5}"
msgstr ""
"{ph0}02 * витягніть правила{ph1}{ph2} з 36 символів * 26 Сум{ph3}{ph4} REA "
"повертає інструкції та дані, що стоять за кожною перевіркою. Агент "
"перетворює їх у рівняння.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/ctf/index.html:220
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}03 · Solve and run{ph1}{ph2}Recovered flag → Correct!{ph3}{ph4}A Python"
" script solves the equations. REA captures the original program accepting "
"the result.{ph5}"
msgstr ""
"{ph0}03 * Вирішіть і запустіть{ph1}{ph2} відновлений прапор → "
"виправити!{ph3}{ph4}Рівняння вирішуються сценарієм Python. REA фіксує "
"вихідну програму, яка приймає результат.{ph5}"
#: website/public/showcase/ctf/index.html:229
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The challenge is by joseph, published in DownUnderCTF's official repository."
msgstr ""
"Завдання написано Джозефом і опубліковано в офіційному сховищі DownUnderCTF."
#: website/public/showcase/ctf/index.html:237
msgctxt "page:showcase/ctf/index.html"
msgid "In this case study"
msgstr "У цьому тематичному дослідженні"
#. {ph0}: <a href="#find">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:239
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Find the checking code{ph1}"
msgstr "{ph0}Знайдіть код підтвердження{ph1}"
#. {ph0}: <a href="#mask">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:240
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Read one mask{ph1}"
msgstr "{ph0}Прочитайте одну маску{ph1}"
#. {ph0}: <a href="#code">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:241
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Assembly to readable code{ph1}"
msgstr "{ph0}Збірка в читається код{ph1}"
#. {ph0}: <a href="#solve">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:242
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Solve the equations{ph1}"
msgstr "{ph0}Розв'яжіть рівняння{ph1}"
#. {ph0}: <a href="#verify">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:243
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Check the answer{ph1}"
msgstr "{ph0}Перевірте відповідь{ph1}"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:244
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Try it yourself{ph1}"
msgstr "{ph0}Спробуйте самі{ph1}"
#: website/public/showcase/ctf/index.html:249
msgctxt "page:showcase/ctf/index.html"
msgid "Find the checking code"
msgstr "Знайдіть код підтвердження"
#. {ph0}: <code>Correct!</code>
#. {ph1}: <code>Incorrect!</code>
#: website/public/showcase/ctf/index.html:250
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The handout is a 15 KB executable. It asks for a flag, then prints {ph0} or "
"{ph1}. Start with a simple request to your agent."
msgstr ""
"Роздатковий матеріал являє собою виконуваний файл розміром 15 КБ. Він "
"запитує прапорець, потім виводить \"{ph0} або \"{ph1}. Почніть з простого "
"запиту до свого агента."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/ctf/index.html:257
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#: website/public/showcase/ctf/index.html:262
#: website/public/showcase/ctf/index.html:481
#: website/public/showcase/ctf/index.html:505
#: website/public/showcase/ctf/index.html:575
#: website/public/showcase/ctf/index.html:722
msgctxt "page:showcase/ctf/index.html"
msgid "Copy"
msgstr "Копіювати"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="ctf-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/ctf/index.html:271
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to analyze ms_flag_checker and find the flag. "
"Explain how the checks work, then verify the answer with the original "
"program.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA для аналізу ms_flag_checker та пошуку "
"прапора. Поясніть, як працюють перевірки, а потім перевірте відповідь за "
"допомогою оригінальної програми.{ph3}{ph4}{ph5}"
#: website/public/showcase/ctf/index.html:280
msgctxt "page:showcase/ctf/index.html"
msgid ""
"An example prompt, with the downloaded challenge available locally and a "
"native analysis provider connected."
msgstr ""
"Приклад запиту із завантаженим завданням, доступним локально, та підключеним"
" постачальником програм для аналізу машинного коду."
#: website/public/showcase/ctf/index.html:286
msgctxt "page:showcase/ctf/index.html"
msgid "Follow the input prompt to its function"
msgstr "Дотримуйтесь інструкцій щодо введення, щоб перейти до його функції"
#: website/public/showcase/ctf/index.html:315
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The reference gives the agent a place to investigate, even though the "
"executable's original function names have been removed."
msgstr ""
"Посилання дає агенту можливість провести розслідування, навіть незважаючи на"
" те, що оригінальні імена функцій виконуваного файлу були видалені."
#: website/public/showcase/ctf/index.html:322
msgctxt "page:showcase/ctf/index.html"
msgid "Read the checker and its two helpers"
msgstr "Ознайомтеся з програмою перевірки і двома її помічниками"
#. {ph0}: <code>0x18</code>
#. {ph1}: <code>0x270</code>
#: website/public/showcase/ctf/index.html:350
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The first loop copies 36 character codes. The checking loop decodes a mask, "
"sums the selected codes and compares the result with a stored number. Its "
"{ph0}-byte steps across {ph1} bytes give 26 masks."
msgstr ""
"Перший цикл копіює коди з 36 символів. Цикл перевірки розшифровує маску, "
"підсумовує вибрані коди та порівнює результат із збереженим числом. Його "
"кроки розміром {ph0} байт по {ph1} байт дають 26 масок."
#: website/public/showcase/ctf/index.html:358
msgctxt "page:showcase/ctf/index.html"
msgid ""
"These are selected results from a fresh REA analysis. The local target path "
"is shortened for display; addresses refer to REA's imported image."
msgstr ""
"Це вибрані результати нового аналізу REA. Шлях до локального цільового "
"об'єкта скорочено для відображення; адреси стосуються імпортованого "
"зображення REA."
#: website/public/showcase/ctf/index.html:366
msgctxt "page:showcase/ctf/index.html"
msgid "One check reveals one character"
msgstr "Одна перевірка виявляє один символ"
#: website/public/showcase/ctf/index.html:367
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The checker arranges the input in a 6×6 grid. A mask chooses which cells "
"contribute to a sum. Its compact encoding uses negative numbers to skip "
"cells and positive numbers to select them."
msgstr ""
"Програма перевірки впорядковує вхідні дані у вигляді сітки розміром 6×6. "
"Маска визначає, які клітини беруть участь у сумі. Компактне кодування "
"використовує негативні числа для пропуску комірок і позитивні числа для їх "
"вибору."
#. {ph0}: <a href="../../assets/figures/ctf-mask-equation.svg" >
#. {ph1}: </a >
#: website/public/showcase/ctf/index.html:387
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "The seventh check selects just one position. {ph0}Open figure{ph1}."
msgstr ""
"При сьомій перевірці вибирається тільки одна позиція. {ph0}Відкрийте "
"малюнок{ph1}."
#: website/public/showcase/ctf/index.html:394
msgctxt "page:showcase/ctf/index.html"
msgid "Read the mask and its target from the binary"
msgstr "Порахуйте маску та її ціль із двійкового файлу"
#. {ph0}: <code>MOVSX</code>
#. {ph1}: <code>eb</code>
#. {ph2}: <code>code[21] = 55</code>
#. {ph3}: <code>7</code>
#: website/public/showcase/ctf/index.html:416
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The instruction {ph0} reads mask bytes as signed values. This is why {ph1} "
"means −21. The target is a little-endian integer. Together, these bytes tell"
" the agent that {ph2}, so that character is {ph3}."
msgstr ""
"Команда {ph0} зчитує байти маски як значення зі знаком. Ось чому {ph1} "
"означає -21. Метою є ціле число в порядку убування. Разом ці байти "
"повідомляють агенту, що {ph2}, так що цей символ дорівнює {ph3}."
#: website/public/showcase/ctf/index.html:425
msgctxt "page:showcase/ctf/index.html"
msgid "From instructions to a readable check"
msgstr "Від інструкцій до читабельного чеку"
#: website/public/showcase/ctf/index.html:426
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Select a step to connect the summing helper and its caller to the same rule "
"in C."
msgstr ""
"Виберіть крок для підключення допоміжного засобу підсумовування та об'єкта, "
"що його викликає, до того самого правила в C."
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:436
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}01{ph1} Start"
msgstr "{ph0}01{ph1} Почавши"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:444
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}02{ph1} Select"
msgstr "{ph0}02{ph1} Вибрати"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:452
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}03{ph1} Add"
msgstr "{ph0}03{ph1} Додавши"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:460
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}04{ph1} Advance"
msgstr "{ph0}04{ph1} Просування"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:468
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}05{ph1} Compare"
msgstr "{ph0}05{ph1} Порівнювати"
#: website/public/showcase/ctf/index.html:480
msgctxt "page:showcase/ctf/index.html"
msgid "REA · selected original instructions"
msgstr "REA * вибрані оригінальні інструкції"
#: website/public/showcase/ctf/index.html:504
msgctxt "page:showcase/ctf/index.html"
msgid "Readable C · one-check summary"
msgstr "Читабельний підсумок C * one-check"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>ECX</code>
#: website/public/showcase/ctf/index.html:533
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}01 · Start at zero.{ph1} {ph2} holds the running sum."
msgstr "{ph0}01 * почніть з нуля.{ph1} {ph2} містить поточну суму."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:537
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}02 · Check the mask cell.{ph1} A zero value skips the character; a "
"nonzero value includes it."
msgstr ""
"{ph0}02 * перевірте клітинку маски.{ph1} Нульове значення пропускає символ; "
"ненульове значення включає його."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:541
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}03 · Add a character code.{ph1} The input's integer at the same offset "
"is added to the sum."
msgstr ""
"{ph0}03 * додайте символьний код.{ph1} До суми додається ціле число, "
"отримане при введенні з тим же зміщенням."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:545
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}04 · Move to the next cell.{ph1} The original loop advances four bytes "
"per integer and visits six rows of six cells."
msgstr ""
"{ph0}04 * перехід до наступної комірки.{ph1} Початковий цикл просувається по"
" чотири байти на ціле число і відвідує шість рядків по шість комірок."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>EAX</code>
#. {ph3}: <code>Incorrect!</code>
#: website/public/showcase/ctf/index.html:550
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}05 · Compare with the stored target.{ph1} The caller receives the sum "
"in {ph2}. A mismatch jumps to {ph3}."
msgstr ""
"{ph0}05 * порівняти зі збереженим цільовим значенням.{ph1} Абонент отримує "
"суму в {ph2}. Невідповідність стає {ph3}."
#: website/public/showcase/ctf/index.html:557
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The instructions come from the summing helper and its caller. The C is an "
"explanatory summary with descriptive names and a flattened 36-cell loop."
msgstr ""
"Інструкції надходять від помічника по підсумовуванню і викликає його "
"пристрою. C - це пояснювальна записка з описовими назвами та згладженим "
"циклом із 36 клітинок."
#: website/public/showcase/ctf/index.html:565
msgctxt "page:showcase/ctf/index.html"
msgid "Solve the 26 equations"
msgstr "Розв'яжіть 26 рівнянь"
#: website/public/showcase/ctf/index.html:566
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Most masks select several cells. For example, the first check adds 16 "
"character codes and requires a total of 1441. The overlapping selections "
"give equations that a small Python script can solve together."
msgstr ""
"У більшості масок вибирається кілька осередків. Наприклад, при першій "
"перевірці додається 16 кодів символів, і потрібно в цілому 1441. "
"Перекриваються вибірки дають рівняння, які може вирішити невеликий скрипт "
"Python."
#: website/public/showcase/ctf/index.html:574
msgctxt "page:showcase/ctf/index.html"
msgid "Python · solver excerpt"
msgstr "Уривок з Python * solver"
#. {ph0}: <code>DUCTF{…}</code>
#: website/public/showcase/ctf/index.html:602
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Z3 is a solver that finds values satisfying these equations. This excerpt "
"uses the extracted checks and assumes a {ph0} flag with letters, digits, "
"underscores and braces. The complete download includes all 26 masks and "
"targets."
msgstr ""
"Z3-це програма-вирішувач, яка знаходить значення, що задовольняють цим "
"рівнянням. Цей фрагмент використовує витягнуті перевірки та використовує "
"{ph0} з буквами, цифрами, символами підкреслення і фігурними дужками. Повне "
"завантаження включає всі 26 масок і цільових об'єктів."
#: website/public/showcase/ctf/index.html:608
msgctxt "page:showcase/ctf/index.html"
msgid "Download the complete solver"
msgstr "Завантажте повний вирішувач"
#: website/public/showcase/ctf/index.html:614
msgctxt "page:showcase/ctf/index.html"
msgid "Check the answer with the original program"
msgstr "Перевірте відповідь за допомогою оригінальної програми"
#. {ph0}: <code>z</code>
#. {ph1}: <code>y</code>
#: website/public/showcase/ctf/index.html:615
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"REA's process capture records the original executable accepting the solved "
"flag. Changing one selected character from {ph0} to {ph1} makes the first "
"sum 1440 instead of 1441, and the program rejects it."
msgstr ""
"Програма захоплення процесу REA записує оригінальний виконуваний файл, який "
"приймає прапор solved. Зміна одного вибраного символу з {ph0} на {ph1} "
"призводить до отримання першої суми 1440 замість 1441, і програма відхиляє "
"її."
#: website/public/showcase/ctf/index.html:625
msgctxt "page:showcase/ctf/index.html"
msgid "Input"
msgstr "Уведення"
#: website/public/showcase/ctf/index.html:626
msgctxt "page:showcase/ctf/index.html"
msgid "Observed output"
msgstr "Спостережуваний результат"
#: website/public/showcase/ctf/index.html:627
msgctxt "page:showcase/ctf/index.html"
msgid "Exit code"
msgstr "Код виходу"
#: website/public/showcase/ctf/index.html:632
msgctxt "page:showcase/ctf/index.html"
msgid "Solver's flag"
msgstr "Прапор вирішувача"
#: website/public/showcase/ctf/index.html:637
msgctxt "page:showcase/ctf/index.html"
msgid "One character changed"
msgstr "Один персонаж змінено"
#: website/public/showcase/ctf/index.html:645
msgctxt "page:showcase/ctf/index.html"
msgid "Show the recovered flag and captured output"
msgstr "Відобразити відновлений прапор і захоплені вихідні дані"
#: website/public/showcase/ctf/index.html:648
msgctxt "page:showcase/ctf/index.html"
msgid "REA · original program output"
msgstr "REA * вихідний програмний результат"
#: website/public/showcase/ctf/index.html:649
msgctxt "page:showcase/ctf/index.html"
msgid "Copy flag"
msgstr "Прапор копіювання"
#: website/public/showcase/ctf/index.html:661
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The recovered value also matches the flag in the organizers' published "
"challenge metadata, checked after solving the binary."
msgstr ""
"Відновлене значення також відповідає прапору в опублікованих організаторами "
"метаданих задачі, який був перевірений після вирішення двійкової задачі."
#: website/public/showcase/ctf/index.html:667
msgctxt "page:showcase/ctf/index.html"
msgid "Source, target identity and analysis details"
msgstr "Ідентифікація джерела, цілі та деталі аналізу"
#: website/public/showcase/ctf/index.html:668
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Fresh analysis and two process captures on 8 October 2026, using REA 4.1.0 "
"with Ghidra 12.1.4 on Linux x64. The binary is a stripped x86-64 ELF, 15,248"
" bytes."
msgstr ""
"Новий аналіз та два записи процесів, опубліковані 8 жовтня 2026 року, "
"використовуючи REA 4.1.0 та Ghidra 12.1.4 на Linux x64. Двійковий файл являє"
" собою урізаний x86-64 ELF, об'ємом 15 248 байт."
#: website/public/showcase/ctf/index.html:679
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The string references, functions and constants were inspected before reading"
" the organizers' source or solution. The Python solver and the diagram were "
"built from those REA results."
msgstr ""
"Посилання на рядки, функції та константи були перевірені перед читанням "
"вихідного коду або рішення організаторів. На основі цих результатів REA було"
" створено вирішувач Python та діаграму."
#. {ph0}: <a
#. href="https://github.com/DownUnderCTF/Challenges_2023_Public/blob/b48f83db2984bc7fa2ec7879a32d7efb1be8d333/rev/masked-
#. squares-flag-checker/src/ms_flag_checker.c" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/DownUnderCTF/Challenges_2023_Public/blob/b48f83db2984bc7fa2ec7879a32d7efb1be8d333/rev/masked-
#. squares-flag-checker/ctfcli.yaml" >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/morluto/rea/blob/main/website/evidence/ctf-masked-
#. squares.md" >
#. {ph5}: </a >
#: website/public/showcase/ctf/index.html:684
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}Compare with the organizers' source{ph1} · {ph2}Challenge metadata and "
"flag{ph3} · {ph4}REA evidence notes{ph5}"
msgstr ""
"{ph0}Порівняйте з джерелом, наданим організаторами{ph1} · {ph2}Метадані та "
"прапор конкурсу{ph3} · {ph4}Примітки до доказів REA{ph5}"
#: website/public/showcase/ctf/index.html:704
msgctxt "page:showcase/ctf/index.html"
msgid "Try it yourself"
msgstr "Спробуйте самі"
#: website/public/showcase/ctf/index.html:705
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Download the original challenge and the solver into one folder. Use the "
"prompt above to investigate with your agent, or run the included script."
msgstr ""
"Завантажте оригінальне завдання та рішення в одну папку. Скористайтеся "
"наведеною вище інструкцією, щоб провести розслідування за допомогою свого "
"агента, або запустіть доданий сценарій."
#: website/public/showcase/ctf/index.html:721
msgctxt "page:showcase/ctf/index.html"
msgid "Terminal · solve and run"
msgstr "Термінал * вирішити і запустити"
#. {ph0}: <code>z3-solver</code>
#: website/public/showcase/ctf/index.html:738
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The script prints a candidate flag; paste it at the program's prompt. "
"Solving needs Python and {ph0}. Running the original executable needs Linux "
"x86-64."
msgstr ""
"Сценарій виводить прапор кандидата; вставте його в командний рядок програми."
" Для вирішення потрібен Python і {ph0}. Для запуску оригінального "
"виконуваного файлу потрібен Linux x86-64."
#: website/public/showcase/ctf/index.html:743
msgctxt "page:showcase/ctf/index.html"
msgid "Set up REA with your coding agent"
msgstr "Налаштуйте REA за допомогою агента кодування"
#: website/public/showcase/ctf/index.html:6
msgctxt "page:showcase/ctf/index.html"
msgid "CTF Reverse Engineering: DownUnderCTF Flag Checker — REA"
msgstr "Зворотна інженерія CTF: перевірка прапора DownUnderCTF-REA"
#: website/public/showcase/ctf/index.html:7
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Use REA to solve DownUnderCTF's masked squares flag checker. Find the "
"checking functions, extract the masks and compare a recovered flag with the "
"original program."
msgstr ""
"Використовуйте REA для вирішення проблеми перевірки прапорів маскованих "
"квадратів у DOWNDERCTF. Знайдіть функції перевірки, витягніть маски та "
"порівняйте відновлений прапор з оригінальною програмою."
#: website/public/showcase/ctf/index.html:236
msgctxt "page:showcase/ctf/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/showcase/ctf/index.html:247
msgctxt "page:showcase/ctf/index.html"
msgid "CTF flag-checker case study"
msgstr "Практичний приклад перевірки прапорів CTF"
#: website/public/showcase/ctf/index.html:262
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF example prompt"
msgstr "Запит на копіювання прикладу CTF"
#: website/public/showcase/ctf/index.html:373
msgctxt "page:showcase/ctf/index.html"
msgid "CTF mask equation; scroll horizontally on smaller screens"
msgstr "Рівняння маски CTF; горизонтальна прокрутка на менших екранах"
#: website/public/showcase/ctf/index.html:379
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The seventh mask skips 21 cells, selects position 21, then skips 14. Only "
"that cell contributes to the sum. Its required character code is 55, which "
"means the character is 7."
msgstr ""
"Сьома маска пропускає 21 клітинку, вибирає позицію 21, потім пропускає 14. "
"Тільки ця комірка вносить свій внесок у суму. Її обов'язковий код-55, що "
"означає, що символ дорівнює 7."
#: website/public/showcase/ctf/index.html:431
msgctxt "page:showcase/ctf/index.html"
msgid "Follow the CTF check"
msgstr "Виконайте перевірку CTF"
#: website/public/showcase/ctf/index.html:481
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF assembly"
msgstr "Скопіюйте збірку CTF"
#: website/public/showcase/ctf/index.html:505
msgctxt "page:showcase/ctf/index.html"
msgid "Copy readable CTF check"
msgstr "Копіюваний чек CTF для читання"
#: website/public/showcase/ctf/index.html:575
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver excerpt"
msgstr "Скопіюйте витяг із CTF-вирішувача"
#: website/public/showcase/ctf/index.html:649
msgctxt "page:showcase/ctf/index.html"
msgid "Copy recovered flag"
msgstr "Копіювати відновлений прапор"
#: website/public/showcase/ctf/index.html:722
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver commands"
msgstr "Копіювання команд вирішувача CTF"
#: website/public/showcase/ctf/index.html:764
msgctxt "page:showcase/ctf/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/showcase/dx-ball/index.html:99
msgctxt "page:showcase/dx-ball/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/dx-ball/index.html:181
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / DX-Ball"
msgstr "{ph0}Головний{ph1} сторінка / {ph2}Вітрина{ph3} / DX-Ball"
#: website/public/showcase/dx-ball/index.html:184
msgctxt "page:showcase/dx-ball/index.html"
msgid "Case study · DX-Ball 1.07"
msgstr "Тематичне дослідження * DX-Ball 1.07"
#. {ph0}: <br />
#: website/public/showcase/dx-ball/index.html:185
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Rebuilding DX-Ball{ph0}from its executable."
msgstr "Відновлюємо DX-Ball {ph0}з його виконуваного файлу."
#: website/public/showcase/dx-ball/index.html:186
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The goal is a maintainable C version of the 1996 Windows game. REA helps the"
" agent inspect the original, one function at a time."
msgstr ""
"Метою є створення підтримуваної версії гри Windows на мові C, випущеної в "
"1996 році. REA допомагає агенту перевіряти оригінал, по одній функції за "
"раз."
#: website/public/showcase/dx-ball/index.html:190
msgctxt "page:showcase/dx-ball/index.html"
msgid "Windows i386 · C · REA"
msgstr "Windows для i386 · s * REA"
#. {ph0}: <a href="../../assets/figures/dx-ball-sound-pan-investigation.svg" >
#. {ph1}: </a >
#: website/public/showcase/dx-ball/index.html:207
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"One function, from executable to checked C. REA supplies the instructions, "
"callers and data reads; the reconstruction project implements and tests the "
"result. {ph0}Open figure{ph1}"
msgstr ""
"Одна функція, від виконуваної до перевіряється C. REA надає інструкції, що "
"викликають пристрої і дані для читання; проект реконструкції реалізує і "
"тестує результат. {ph0}Відкрити малюнок{ph1}"
#: website/public/showcase/dx-ball/index.html:218
msgctxt "page:showcase/dx-ball/index.html"
msgid "In this case study"
msgstr "У цьому тематичному дослідженні"
#. {ph0}: <a href="#progress">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:220
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}The project{ph1}"
msgstr "{ph0}Проект{ph1}"
#. {ph0}: <a href="#sound-pan">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:221
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Sound pan{ph1}"
msgstr "{ph0}Звукова панорама{ph1}"
#. {ph0}: <a href="#checking">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:222
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Checking the result{ph1}"
msgstr "{ph0}Перевірка результату{ph1}"
#. {ph0}: <a href="#continue">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:223
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Continue the work{ph1}"
msgstr "{ph0}Продовжуйте роботу{ph1}"
#: website/public/showcase/dx-ball/index.html:231
msgctxt "page:showcase/dx-ball/index.html"
msgid "maintained C functions"
msgstr "підтримувані функції C"
#: website/public/showcase/dx-ball/index.html:235
msgctxt "page:showcase/dx-ball/index.html"
msgid "comparisons with original code"
msgstr "порівняння з вихідним кодом"
#: website/public/showcase/dx-ball/index.html:239
msgctxt "page:showcase/dx-ball/index.html"
msgid "functions with matching compiled bytes"
msgstr "функції з відповідними скомпільованими байтами"
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/PROGRESS.md" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/ORACLES.md" >
#. {ph3}: </a >
#: website/public/showcase/dx-ball/index.html:242
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Project checkpoint: 7 October 2026. {ph0}Progress ledger{ph1} · {ph2}Test "
"coverage{ph3}"
msgstr ""
"Контрольна точка проекту: 7 жовтня 2026 року. {ph0}Журнал виконання{ph1} "
"роботи · {ph2}Тестове покриття{ph3}"
#: website/public/showcase/dx-ball/index.html:254
msgctxt "page:showcase/dx-ball/index.html"
msgid "The project so far"
msgstr "Проект досі"
#: website/public/showcase/dx-ball/index.html:255
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The recovered code covers board and resource handling, brick hits, "
"animations, particles and bonus production. Current builds provide "
"inspection utilities and an analysis library. Work on the playable game "
"continues with ball and paddle physics, power-up handling and Windows "
"integration."
msgstr ""
"Відновлений код охоплює управління дошкою та ресурсами, удари цеглою, "
"анімацію, частинки та отримання бонусів. У поточних збірках доступні утиліти"
" перевірки та бібліотека аналізу. Триває робота над грою, в яку можна грати,"
" фізикою м'яча і весла, управлінням посиленнями і інтеграцією Windows."
#: website/public/showcase/dx-ball/index.html:265
msgctxt "page:showcase/dx-ball/index.html"
msgid "Finding the sound-pan calculation"
msgstr "Визначення положення звуку зліва / справа при розрахунку"
#: website/public/showcase/dx-ball/index.html:266
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"When a brick is hit, its horizontal position is passed to the sound code. "
"The investigation needed to recover how that screen coordinate becomes a "
"left/right panning value."
msgstr ""
"При ударі по цеглі його горизонтальне положення передається в звуковий код. "
"У ході дослідження було необхідно відновити, як ця координата екрану "
"перетворюється в значення повороту вліво/вправо."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/dx-ball/index.html:273
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#: website/public/showcase/dx-ball/index.html:277
#: website/public/showcase/dx-ball/index.html:468
#: website/public/showcase/dx-ball/index.html:489
#: website/public/showcase/dx-ball/index.html:560
#: website/public/showcase/dx-ball/index.html:714
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy"
msgstr "Копіювати"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="dxball-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/dx-ball/index.html:286
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how DX-Ball calculates sound panning. "
"Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA, щоб дізнатися, як DX-Ball обчислює "
"розташування стереозвуку. Поясніть розрахунок і покажіть код.{ph3}{ph4}{ph5}"
#: website/public/showcase/dx-ball/index.html:294
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"An example prompt for your coding agent, with the local executable "
"available. The investigation below shows the REA queries and evidence behind"
" the answer."
msgstr ""
"Приклад запиту для вашого coding agent з доступним локальним виконуваним "
"файлом. У наведеному нижче дослідженні Показані запити REA та докази, що "
"лежать в основі відповіді."
#: website/public/showcase/dx-ball/index.html:299
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The agent used REA to inspect the function, follow its brick-hit caller and "
"read the constants from the executable. Those results supplied the input and"
" arithmetic needed to write the C function below."
msgstr ""
"Агент використовував REA для перевірки функції, відстеження її абонента та "
"зчитування констант із виконуваного файлу. Ці результати надали вхідні дані "
"та арифметику, необхідні для написання функції на мові Сі, наведеної нижче."
#. {ph0}: <code>0x406400</code>
#. {ph1}: <code>FUN_00406400(void)</code>
#. {ph2}: <code>__ftol()</code>
#: website/public/showcase/dx-ball/index.html:305
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The first function result for {ph0} included pseudocode declaring {ph1} and "
"calling {ph2}. Its instruction view showed a stack input and floating-point "
"operations. That discrepancy gave the agent a concrete reason to keep "
"investigating."
msgstr ""
"Перший результат функції для {ph0} включав псевдокод, що оголошує {ph1} і "
"викликає {ph2}. У вікні команд відображалося Введення даних зі стека та "
"операції з плаваючою комою. Ця невідповідність дала агенту конкретну причину"
" продовжувати розслідування."
#: website/public/showcase/dx-ball/index.html:313
msgctxt "page:showcase/dx-ball/index.html"
msgid "The first decompiler view"
msgstr "Перше представлення декомпілятора"
#: website/public/showcase/dx-ball/index.html:326
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The output shows a conversion call. Reading the instructions below reveals "
"the input and the calculation feeding that call."
msgstr ""
"На виході відображається виклик перетворення. При читанні наведених нижче "
"інструкцій можна побачити вхідні дані і обчислення, які використовуються для"
" цього виклику."
#: website/public/showcase/dx-ball/index.html:332
msgctxt "page:showcase/dx-ball/index.html"
msgid "Three questions answered through REA"
msgstr "Відповіді на три запитання за допомогою REA"
#: website/public/showcase/dx-ball/index.html:335
msgctxt "page:showcase/dx-ball/index.html"
msgid "Recover the missing input"
msgstr "Відновіть відсутні вхідні дані"
#. {ph0}: <code>[EBP+8]</code>
#: website/public/showcase/dx-ball/index.html:352
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The function result includes instructions alongside pseudocode and callers. "
"Here, {ph0} exposes the integer input missing from the decompiler view."
msgstr ""
"Результат роботи функції включає інструкції поряд з псевдокодом і викликають"
" елементами. Тут {ph0} забезпечує цілочисельний вхід, відсутній у поданні "
"декомпілятора."
#: website/public/showcase/dx-ball/index.html:359
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the caller to understand the input"
msgstr "Слідкуйте за абонентом, щоб зрозуміти введені дані"
#. {ph0}: <code>tile_x</code>
#. {ph1}: <code>20 + 30 × tile_x</code>
#: website/public/showcase/dx-ball/index.html:376
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"REA identified this caller in the first result. Its preceding instructions "
"scale {ph0} by 30; adding 20 gives the brick's screen coordinate, {ph1}."
msgstr ""
"REA визначив цього абонента в першому результаті. У попередніх інструкціях "
"tile_x масштабується {ph0}на 30; додавання 20 дає екранну координату цегли, "
"{ph1}."
#: website/public/showcase/dx-ball/index.html:383
msgctxt "page:showcase/dx-ball/index.html"
msgid "Read the values behind the memory addresses"
msgstr "Порахуйте значення, що стоять за адресами пам'яті"
#: website/public/showcase/dx-ball/index.html:404
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The returned bytes establish the two arithmetic constants and initial pan "
"scale. The agent now has the values needed for the C expression."
msgstr ""
"Повернені байти задають дві арифметичні константи та початковий масштаб "
"панорамування. Тепер агент має значення, необхідні для вираження мовою Сі."
#: website/public/showcase/dx-ball/index.html:412
msgctxt "page:showcase/dx-ball/index.html"
msgid "From REA's findings to C"
msgstr "Від штифтів REA до C"
#: website/public/showcase/dx-ball/index.html:413
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Follow the five steps below. Each selection highlights the original "
"instructions and the C lines they informed."
msgstr ""
"Виконайте п'ять кроків, описаних нижче. У кожному обраному елементі виділені"
" вихідні інструкції і відповідні їм рядки."
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:423
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}01{ph1} Input"
msgstr "{ph0}Вхід 01{ph1}"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:431
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}02{ph1} Multiply"
msgstr "{ph0}02{ph1} Помноживши"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:439
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}03{ph1} Subtract"
msgstr "{ph0}03{ph1} Віднявши"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:447
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}04{ph1} Scale"
msgstr "{ph0}Шкала 04{ph1}"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:455
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}05{ph1} Return"
msgstr "{ph0}05{ph1} Повернення"
#: website/public/showcase/dx-ball/index.html:467
msgctxt "page:showcase/dx-ball/index.html"
msgid "Original x86 · excerpt"
msgstr "Оригінальний витяг з x86 ·"
#: website/public/showcase/dx-ball/index.html:488
msgctxt "page:showcase/dx-ball/index.html"
msgid "Reconstructed C"
msgstr "Реконструйований C"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>[EBP+8]</code>
#. {ph3}: <code>FILD</code>
#. {ph4}: <code>x</code>
#: website/public/showcase/dx-ball/index.html:515
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}01 · Read the input.{ph1} The instruction view in REA's function result"
" reads {ph2} and uses {ph3} to load the integer. Following its caller "
"through REA establishes the screen-coordinate meaning of the C parameter "
"{ph4}."
msgstr ""
"{ph0}01 * прочитайте вхідні дані.{ph1} У вікні команд в результаті роботи "
"функції REA відображається {ph2} і використовується {ph3} для завантаження "
"цілого числа. Відстеження абонента через REA встановлює значення екранної "
"координати параметра C {ph4}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FMUL</code>
#. {ph3}: <code>0x420068</code>
#. {ph4}: <code>read_bytes</code>
#. {ph5}: <code>1.5625</code>
#: website/public/showcase/dx-ball/index.html:522
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}02 · Multiply by 1.5625.{ph1} {ph2} reads the double at {ph3}. The "
"bytes returned by REA's {ph4} decode to {ph5}; the C uses the same constant."
msgstr ""
"{ph0}02 * помножити на 1,5625.{ph1} {ph2} зчитує подвоєне значення {ph3}. "
"Байти, повернуті функцією REA'S {ph4}, декодуються як {ph5}; C використовує "
"ту саму константу."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FSUB</code>
#. {ph3}: <code>0x420070</code>
#. {ph4}: <code>500.0</code>
#. {ph5}: <code>320</code>
#: website/public/showcase/dx-ball/index.html:528
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}03 · Subtract 500.0.{ph1} {ph2} reads the double at {ph3}. REA's byte "
"result decodes to {ph4}, shifting the calculation's center to screen "
"coordinate {ph5}."
msgstr ""
"{ph0}03 * відніміть 500,0.{ph1} {ph2} зчитує подвійне значення в {ph3}. "
"Результат у байтах REA розшифровується як {ph4}, зміщуючи центр обчислення "
"на екранну координату {ph5}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FMUL</code>
#. {ph3}: <code>0x4210a0</code>
#. {ph4}: <code>dxball_pan_scale</code>
#. {ph5}: <code>1.0</code>
#: website/public/showcase/dx-ball/index.html:534
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}04 · Apply the stored scale.{ph1} The second {ph2} reads {ph3}. That "
"global is named {ph4} in the maintained source. REA's second byte read "
"establishes its initial value of {ph5}."
msgstr ""
"{ph0}04 * застосуйте збережену шкалу.{ph1} Друге {ph2} показує значення "
"{ph3}. У підтримуваному джерелі цей глобал називається {ph4}. При читанні "
"другого байта REA його початкове значення дорівнює {ph5}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>0x406430</code>
#. {ph3}: <code>__ftol</code>
#. {ph4}: <code>DxBallInt</code>
#: website/public/showcase/dx-ball/index.html:541
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}05 · Return an integer.{ph1} The call at {ph2} reaches {ph3}, "
"identified in REA's callee results. The C casts the result to {ph4}; "
"original-x86 comparisons check the returned value."
msgstr ""
"{ph0}05 * повертає ціле число.{ph1} Виклик по {ph2} 0x406430 досягає "
"значення {ph3}, зазначеного в результатах пошуку абонента REA. C перетворює "
"результат у {ph4}; оригінальні порівняння з x86 перевіряють повернене "
"значення."
#: website/public/showcase/dx-ball/index.html:550
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The assembly excerpt selects the input, arithmetic and return instructions. "
"The full listing below also includes the intervening stores and function "
"setup and cleanup."
msgstr ""
"У наведеному нижче уривку зі збірки вибираються інструкції щодо введення, "
"арифметики та повернення. У наведений нижче повний список також включені "
"проміжні сховища, настройка і очищення функцій."
#: website/public/showcase/dx-ball/index.html:556
msgctxt "page:showcase/dx-ball/index.html"
msgid "Full assembly and supporting evidence"
msgstr "Повна збірка та підтверджуючі докази"
#: website/public/showcase/dx-ball/index.html:559
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA result · 0x406400–0x40643e"
msgstr "Результат REA · 0X406400–0X40643E"
#: website/public/showcase/dx-ball/index.html:593
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the caller supplies"
msgstr "Що надає Абонент"
#. {ph0}: <code>0x411f40</code>
#: website/public/showcase/dx-ball/index.html:594
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The brick-hit function at {ph0} scales its tile coordinate by 30, adds 20, "
"then pushes it before the call:"
msgstr ""
"Функція brick-hit в {ph0} масштабує координату плитки на 30, додає 20, а "
"потім переміщує її перед викликом:"
#: website/public/showcase/dx-ball/index.html:608
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the data reads establish"
msgstr "Те, що читають дані, встановлює"
#: website/public/showcase/dx-ball/index.html:611
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA byte reads, decoded as little-endian doubles"
msgstr "Зчитується байт REA, декодується як подвоєння в порядку убування"
#: website/public/showcase/dx-ball/index.html:616
msgctxt "page:showcase/dx-ball/index.html"
msgid "Address"
msgstr "Адрес"
#: website/public/showcase/dx-ball/index.html:617
msgctxt "page:showcase/dx-ball/index.html"
msgid "Value"
msgstr "Цінність"
#: website/public/showcase/dx-ball/index.html:618
msgctxt "page:showcase/dx-ball/index.html"
msgid "Used for"
msgstr "Використовується для"
#: website/public/showcase/dx-ball/index.html:625
msgctxt "page:showcase/dx-ball/index.html"
msgid "First multiplication"
msgstr "Перше множення"
#: website/public/showcase/dx-ball/index.html:630
msgctxt "page:showcase/dx-ball/index.html"
msgid "Subtraction"
msgstr "Віднімання"
#. {ph0}: <code>1.0</code>
#: website/public/showcase/dx-ball/index.html:634
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0} initially"
msgstr "{ph0} споконвічно"
#: website/public/showcase/dx-ball/index.html:635
msgctxt "page:showcase/dx-ball/index.html"
msgid "Stored pan scale"
msgstr "Збережені ваги для піддонів"
#: website/public/showcase/dx-ball/index.html:640
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Recorded with REA 4.1.0 for the hash-pinned DX-Ball 1.07 target. The linked "
"investigation notes retain the Evidence IDs."
msgstr ""
"Записано за допомогою REA 4.1.0 для цілі DX-Ball 1.07 з прив'язкою до хешу. "
"У пов'язаних матеріалах розслідування зберігаються ідентифікатори доказів."
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/src/gameplay.c#L41" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/GAMEPLAY_OWNER.md"
#. >
#. {ph3}: </a >
#: website/public/showcase/dx-ball/index.html:645
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}Maintained source{ph1} · {ph2}Investigation notes and evidence "
"references{ph3}"
msgstr ""
"{ph0}Підтримуване джерело{ph1} · {ph2}Примітки щодо розслідування та "
"посилання на докази{ph3}"
#: website/public/showcase/dx-ball/index.html:659
msgctxt "page:showcase/dx-ball/index.html"
msgid "Checking the recovered function"
msgstr "Перевірка відновленої функції"
#: website/public/showcase/dx-ball/index.html:660
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The recovered function passes two checks: its return values match the "
"original, and its compiled bytes match the executable."
msgstr ""
"Відновлена функція проходить дві перевірки: її повертаються значення "
"збігаються з вихідними, а скомпільовані байти відповідають виконуваному "
"файлу."
#: website/public/showcase/dx-ball/index.html:666
msgctxt "page:showcase/dx-ball/index.html"
msgid "3,205 behavior cases"
msgstr "3 205 випадків порушення поведінки"
#: website/public/showcase/dx-ball/index.html:667
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The tests execute the original x86 function and compare its return value "
"with the maintained C. They cover every integer position from 0 to 640 at "
"five pan scales: 0, 0.5, 1, 20 and −1."
msgstr ""
"Тести виконують вихідну функцію x86 і порівнюють значення, яке вона "
"повертає, із збереженим значенням C. Вони охоплюють усі цілі позиції від 0 "
"до 640 у п'яти масштабах панорамування: 0, 0,5, 1, 20 та -1."
#: website/public/showcase/dx-ball/index.html:675
msgctxt "page:showcase/dx-ball/index.html"
msgid "63 matching bytes"
msgstr "63 збігаються байти"
#: website/public/showcase/dx-ball/index.html:676
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The C function is compiled with the pinned VC4.0 toolchain. Compiler replay "
"matches the complete function after applying the reviewed relocations and "
"checking the referenced constants."
msgstr ""
"Функція C компілюється за допомогою закріпленого ланцюжка інструментів "
"VC4.0. Повторне відтворення компілятором відповідає повній функції після "
"застосування розглянутих змін і перевірки констант, на які дано посилання."
#: website/public/showcase/dx-ball/index.html:684
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"At a scale of 1, the recovered calculation returns −500 at the left edge, 0 "
"at the center and 500 at the right edge. The next part of the audio work is "
"integrating that value with the game's sound backend."
msgstr ""
"За шкалою 1 відновлені обчислення повертають значення -500 за лівим краєм, 0"
" за центром і 500 за правим краєм. Наступна частина роботи зі звуком-це "
"інтеграція цього значення зі звуковим супроводом гри."
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/BUILD_MATCHING.md"
#. >
#. {ph1}: </a >
#: website/public/showcase/dx-ball/index.html:690
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Read the compiler replay details{ph1}"
msgstr "{ph0}Ознайомтеся з подробицями відтворення компілятором{ph1}"
#: website/public/showcase/dx-ball/index.html:699
msgctxt "page:showcase/dx-ball/index.html"
msgid "Continue the investigation"
msgstr "Продовжуйте розслідування"
#: website/public/showcase/dx-ball/index.html:700
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The same approach is being used for particle updates, explosion queues and "
"bonus generation: inspect the relevant functions, recover their state and "
"dependencies, then compare the implementation with the original."
msgstr ""
"Той самий підхід використовується для оновлення частинок, створення черг із "
"розширенням та генерування бонусів: перевірте відповідні функції, відновіть "
"їх стан та залежності, а потім порівняйте реалізацію з оригінальною."
#: website/public/showcase/dx-ball/index.html:706
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"To inspect the sound-pan function yourself, follow the DX-Ball project's "
"setup instructions and supply its matching original target. Then run:"
msgstr ""
"Щоб самостійно перевірити функцію панорамування звуку, дотримуйтесь "
"інструкцій з налаштування DX-Ball project і вкажіть відповідну вихідну мету."
" Потім запустіть:"
#: website/public/showcase/dx-ball/index.html:713
msgctxt "page:showcase/dx-ball/index.html"
msgid "In the DX-Ball checkout"
msgstr "При оформленні замовлення DX-Ball"
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-ball" >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/showcase/dx-ball/index.html:727
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}DX-Ball repository{ph1}{ph2}Current source, progress and local "
"setup.{ph3}"
msgstr ""
"{ph0} Поточне джерело репозиторію{ph1}{ph2} DX-Ball, хід виконання і "
"локальна настройка.{ph3}"
#. {ph0}: <a href="../../guides/native/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/dx-ball/index.html:732
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}REA analysis workflow{ph1}{ph2}Follow the calculation, then use the "
"same approach with your own binary.{ph3}"
msgstr ""
"{ph0} Робочий процес аналізу{ph1}{ph2} REA завершується обчисленням, а потім"
" використовуйте той самий підхід із власним двійковим файлом.{ph3}"
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/ENTITIES_OWNER.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/dx-ball/index.html:739
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}Particles and bonus production{ph1}{ph2}A larger investigation into "
"state, queues and pixel writes.{ph3}"
msgstr ""
"{ph0}Створення частинок і бонусів{ph1}{ph2} - більш масштабне дослідження "
"стану, черг і запису пікселів.{ph3}"
#: website/public/showcase/dx-ball/index.html:6
msgctxt "page:showcase/dx-ball/index.html"
msgid "DX-Ball Reverse Engineering: Sound Panning — REA"
msgstr "DX-Ball зворотний інжиніринг: панорамування звуку-REA"
#: website/public/showcase/dx-ball/index.html:7
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Follow a DX-Ball reconstruction from binary analysis through REA to "
"maintained C, original-x86 tests and matching compiled function bytes."
msgstr ""
"Виконайте реконструкцію DX-Ball від бінарного аналізу через REA до "
"підтримуваних тестів на C, вихідних x86 і зіставлення скомпільованих байтів "
"функцій."
#: website/public/showcase/dx-ball/index.html:193
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"DX-Ball sound-pan investigation; scroll horizontally on smaller screens"
msgstr ""
"DX-Ball sound - дослідження панорамування; горизонтальна прокрутка на менших"
" екранах"
#: website/public/showcase/dx-ball/index.html:199
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"DXBALL.EXE function 0x00406400 is inspected with REA. A brick-hit caller "
"supplies 20 plus 30 times tile_x. Instructions load x, multiply by 1.5625, "
"subtract 500.0, apply pan_scale and return an integer. The maintained C is "
"checked independently against the original x86 in 3,205 cases and by VC4.0 "
"compiler replay matching 63 bytes."
msgstr ""
"DXBALL.EXE функція 0x00406400 перевіряється за допомогою REA . Абонент, який"
" потрапив у глухий кут, видає значення tile_x в 20 і 30 разів більше. "
"Інструкції завантажують x, множать на 1,5625, віднімають 500,0, застосовують"
" pan_scale і повертають ціле число. Підтримуваний C перевіряється незалежно "
"від вихідного x86 в 3205 випадках і за допомогою компілятора VC4.0 "
"відтворюється на відповідність 63 байтам."
#: website/public/showcase/dx-ball/index.html:217
msgctxt "page:showcase/dx-ball/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/showcase/dx-ball/index.html:226
msgctxt "page:showcase/dx-ball/index.html"
msgid "DX-Ball reconstruction case study"
msgstr "Тематичне дослідження реконструкції DX-Ball"
#: website/public/showcase/dx-ball/index.html:277
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy example prompt"
msgstr "Запит на копіювання прикладу"
#: website/public/showcase/dx-ball/index.html:418
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the sound-pan calculation"
msgstr "Слідкуйте за розрахунком положення звуку зліва / справа"
#: website/public/showcase/dx-ball/index.html:468
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy original assembly excerpt"
msgstr "Скопіюйте фрагмент оригінальної збірки"
#: website/public/showcase/dx-ball/index.html:489
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy sound-pan function"
msgstr "Функція копіювання звуку-панорамування"
#: website/public/showcase/dx-ball/index.html:560
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy complete sound-pan assembly"
msgstr "Скопіюйте повну збірку sound-pan"
#: website/public/showcase/dx-ball/index.html:714
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy DX-Ball analysis command"
msgstr "Скопіювати команду аналізу DX-Ball"
#: website/public/showcase/dx-ball/index.html:772
msgctxt "page:showcase/dx-ball/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/showcase/index.html:99
msgctxt "page:showcase/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/showcase/index.html:181
#, python-brace-format
msgctxt "page:showcase/index.html"
msgid "{ph0}Home{ph1} / Showcases"
msgstr "{ph0}Головний{ph1} сторінка / вітрини"
#: website/public/showcase/index.html:182
msgctxt "page:showcase/index.html"
msgid "REA case studies."
msgstr "Тематичні дослідження REA."
#: website/public/showcase/index.html:183
msgctxt "page:showcase/index.html"
msgid ""
"Android, games, Electron and a CTF challenge, with code, figures and checked"
" results."
msgstr ""
"Android, ігри, Electron і конкурс CTF з кодом, цифрами і перевіреними "
"результатами."
#: website/public/showcase/index.html:190
msgctxt "page:showcase/index.html"
msgid "Android · APK analysis"
msgstr "Android * аналіз APK"
#: website/public/showcase/index.html:192
msgctxt "page:showcase/index.html"
msgid "How an authenticator generates a login code"
msgstr "Як аутентифікатор генерує код входу"
#: website/public/showcase/index.html:193
msgctxt "page:showcase/index.html"
msgid ""
"Find Aegis's six-digit code calculation in its released APK. Trace the "
"generating methods with REA, then move a demo clock to see why the code "
"changes every 30 seconds."
msgstr ""
"Дізнайтеся, як Aegis обчислює шестизначний код у опублікованому APK . "
"Слідкуйте за методами генерації за допомогою REA, а потім подивіться на "
"демонстраційний годинник, щоб зрозуміти, чому код змінюється кожні 30 "
"секунд."
#: website/public/showcase/index.html:204
msgctxt "page:showcase/index.html"
msgid "Read the Android case study"
msgstr "Ознайомтеся з тематичним дослідженням Android"
#: website/public/showcase/index.html:208
msgctxt "page:showcase/index.html"
msgid "CTF · Native analysis"
msgstr "CTF * аналіз програм з машинним кодом"
#: website/public/showcase/index.html:210
msgctxt "page:showcase/index.html"
msgid "Solve a CTF flag checker"
msgstr "Вирішіть проблему перевірки прапора CTF"
#: website/public/showcase/index.html:211
msgctxt "page:showcase/index.html"
msgid ""
"Inspect an easy DownUnderCTF challenge with REA. Find its checking "
"functions, turn masks and sums into equations, then verify the solved flag "
"with the original program."
msgstr ""
"Вивчіть просте завдання DOWNDERCTF за допомогою REA. Знайдіть її функції "
"перевірки, Перетворіть маски та суми в рівняння, а потім перевірте прапорець"
" \"вирішено\" за допомогою оригінальної програми."
#: website/public/showcase/index.html:222
msgctxt "page:showcase/index.html"
msgid "Read the CTF case study"
msgstr "Ознайомтеся з тематичним дослідженням CTF"
#: website/public/showcase/index.html:226
msgctxt "page:showcase/index.html"
msgid "Native · Reconstruction"
msgstr "Нативна * Реконструкція"
#: website/public/showcase/index.html:228
msgctxt "page:showcase/index.html"
msgid "DX-Ball's sound-pan calculation"
msgstr "DX-Ball обчислює положення звуку зліва / справа"
#: website/public/showcase/index.html:229
msgctxt "page:showcase/index.html"
msgid ""
"Recover a sound-pan calculation from a 1996 Windows game. REA's "
"instructions, caller references and numeric constants lead to a small C "
"function, checked against the original behavior and all 63 compiled bytes."
msgstr ""
"Відновіть розрахунок положення звуку зліва / справа з гри Windows 1996 року "
"випуску. Інструкції REA, посилання на виклик та Числові константи "
"призводять до невеликої функції C, яка перевіряється на відповідність "
"вихідній поведінці та всім 63 скомпільованим байтам."
#: website/public/showcase/index.html:241
msgctxt "page:showcase/index.html"
msgid "Read the DX-Ball case study"
msgstr "Ознайомтеся з тематичним дослідженням DX-Ball"
#: website/public/showcase/index.html:245
msgctxt "page:showcase/index.html"
msgid "Electron · Feature tracing"
msgstr "Electron * відстеження об'єктів"
#: website/public/showcase/index.html:247
msgctxt "page:showcase/index.html"
msgid "How Notion copies text and HTML"
msgstr "Як Notion копіює текст та HTML"
#: website/public/showcase/index.html:248
msgctxt "page:showcase/index.html"
msgid ""
"Trace a page-facing API through Notion's packaged JavaScript. Follow its IPC"
" wrappers to the system clipboard, then see how a small HTML marker keeps "
"rich block data connected to a copy."
msgstr ""
"Відстежуйте API, що працює на сторінці, за допомогою JavaScript, вбудованого"
" в Notion. Слідкуйте за його оболонками IPC у системному буфері обміну, а "
"потім подивіться, як маленький маркер HTML пов'язує дані розширеного блоку з"
" копією."
#: website/public/showcase/index.html:259
msgctxt "page:showcase/index.html"
msgid "Read the Notion case study"
msgstr "Ознайомтеся з тематичним дослідженням Notion"
#: website/public/showcase/index.html:263
msgctxt "page:showcase/index.html"
msgid "PC-98 DOS · Reconstruction"
msgstr "PC-98 DOS * Реконструкція"
#: website/public/showcase/index.html:265
msgctxt "page:showcase/index.html"
msgid "How TH04 aims a ring of bullets"
msgstr "Як TH04 цілиться в кільце з куль"
#: website/public/showcase/index.html:266
msgctxt "page:showcase/index.html"
msgid ""
"Inspect the original 16-bit angle helper with REA. Match its multiply, "
"divide and coordinate operations to readable C++, then see how they produce "
"a ring aimed at the player."
msgstr ""
"Перевірте оригінальний 16-розрядний angle helper за допомогою REA . Зіставте"
" його операції множення, ділення та координації з зрозумілим C++, а потім "
"подивіться, як вони створюють кільце, спрямоване на гравця."
#: website/public/showcase/index.html:277
msgctxt "page:showcase/index.html"
msgid "Read the TH04 case study"
msgstr "Ознайомтеся з тематичним дослідженням TH04"
#: website/public/showcase/index.html:282
msgctxt "page:showcase/index.html"
msgid "Step-by-step guides"
msgstr "Покрокові керівництва"
#: website/public/showcase/index.html:283
msgctxt "page:showcase/index.html"
msgid ""
"The guides walk through a native calculation, an Electron export and a "
"browser request. Each starts with a prompt and a concrete target."
msgstr ""
"У посібниках описуються власні обчислення, експорт Electron і запит до "
"браузера. Кожне з них починається з запиту і конкретної мети."
#: website/public/showcase/index.html:287
msgctxt "page:showcase/index.html"
msgid "Read the guides"
msgstr "Ознайомтеся з посібниками"
#: website/public/showcase/index.html:6
msgctxt "page:showcase/index.html"
msgid "Reverse Engineering Case Studies — REA"
msgstr "Тематичні дослідження з реверс-інжинірингу-REA"
#: website/public/showcase/index.html:7
msgctxt "page:showcase/index.html"
msgid ""
"Follow REA investigations through code, figures and demos: an Android "
"authenticator, DX-Ball, Notion, TH04 and a DownUnderCTF flag checker."
msgstr ""
"Слідкуйте за розслідуваннями REA за допомогою коду, малюнків і демонстрацій:"
" Android authenticator, DX-Ball, Notion, TH04 і засоби перевірки прапора "
"downunderctf."
#: website/public/showcase/index.html:304
msgctxt "page:showcase/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/showcase/notion/index.html:99
msgctxt "page:showcase/notion/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/notion/index.html:181
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Notion"
msgstr "{ph0}Головний{ph1} сторінка / {ph2}Вітрина{ph3} / Notion"
#: website/public/showcase/notion/index.html:184
msgctxt "page:showcase/notion/index.html"
msgid "Case study · Electron"
msgstr "Тематичне дослідження * Electron"
#. {ph0}: <br />
#: website/public/showcase/notion/index.html:185
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "How Notion copies{ph0}text and HTML."
msgstr "Як Notion копіює{ph0}текст і HTML."
#: website/public/showcase/notion/index.html:186
msgctxt "page:showcase/notion/index.html"
msgid ""
"Trace a clipboard call from Notion's page API, through the preload and main "
"process, to Electron's clipboard writer."
msgstr ""
"Простежте виклик буфера обміну з API сторінки Notion, через попереднє "
"завантаження і основний процес, в програму запису буфера обміну Electron."
#: website/public/showcase/notion/index.html:190
msgctxt "page:showcase/notion/index.html"
msgid "Notion Desktop 7.6.1 · JavaScript · REA"
msgstr "Робочий стіл Notion 7.6.1 * JavaScript * REA"
#: website/public/showcase/notion/index.html:194
msgctxt "page:showcase/notion/index.html"
msgid "The bridge inside Notion's desktop package"
msgstr "Міст всередині настільного пакету Notion"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>clipboard.write(data)</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:196
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}01 · Page-facing API{ph1} {ph2}{ph3}{ph4} {ph5}The preload exposes a "
"callable method.{ph6}"
msgstr ""
"{ph0}01 · {ph1}Буфер обміну API, орієнтований на сторінку{ph2}{ph3}{ph4} "
"{ph5}Попереднє завантаження надає викликаний метод.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>ipcRenderer.invoke</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:203
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}02 · Preload wrapper{ph1} {ph2}{ph3}{ph4} {ph5}The wrapper sends the "
"channel and arguments.{ph6}"
msgstr ""
"{ph0}02 * попередньо завантажте оболонку{ph1} {ph2}{ph3}{ph4} {ph5}оболонки "
"надсилає канал та аргументи.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>ipcMain.handle</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:210
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}03 · Main-process handler{ph1} {ph2}{ph3}{ph4} {ph5}The receiver checks"
" which page sent it.{ph6}"
msgstr ""
"{ph0}03 * обробник основного процесу ipcMain{ph1}.обробник{ph2}{ph3}{ph4} "
"{ph5}одержувача перевіряє, з якої сторінки він був відправлений.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>clipboard.write(data)</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:217
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}04 · System clipboard{ph1} {ph2}{ph3}{ph4} {ph5}Electron writes the "
"supplied text and HTML.{ph6}"
msgstr ""
"{ph0}04 * системний буфер{ph1} обмін {ph2}{ph3}{ph4} {ph5}Electron записує "
"наданий текст і HTML-код.{ph6}"
#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:225
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "One channel joins the two sides: {ph0}"
msgstr "Один канал з'єднує дві сторони: {ph0}"
#: website/public/showcase/notion/index.html:229
msgctxt "page:showcase/notion/index.html"
msgid ""
"The packaged code uses the same channel in the preload and main process. "
"Resolving the wrappers reveals the Electron calls behind those names."
msgstr ""
"Упакований код використовує один і той же канал у процесі попереднього "
"завантаження та в основному процесі. При вирішенні оболонок виявляються "
"виклики Electron, що стоять за цими іменами."
#: website/public/showcase/notion/index.html:238
msgctxt "page:showcase/notion/index.html"
msgid "In this case study"
msgstr "У цьому тематичному дослідженні"
#. {ph0}: <a href="#clipboard">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:240
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Follow the clipboard bridge{ph1}"
msgstr "{ph0}Дотримуйтесь мосту з буфера обміну{ph1}"
#. {ph0}: <a href="#rich-clipboard">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:241
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Keeping a block's structure{ph1}"
msgstr "{ph0}Збереження структури блоку{ph1}"
#. {ph0}: <a href="#continue">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:242
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}More examples and sources{ph1}"
msgstr "{ph0}Додаткові приклади та джерела{ph1}"
#: website/public/showcase/notion/index.html:247
msgctxt "page:showcase/notion/index.html"
msgid "Where does the copy operation go?"
msgstr "Де виконується операція копіювання?"
#. {ph0}: <code>clipboard.write</code>
#: website/public/showcase/notion/index.html:248
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The page sees a method called {ph0}. Its implementation in the preload is a "
"wrapper. The useful question is what that wrapper sends, and which code "
"receives it."
msgstr ""
"На сторінці відображається метод під назвою {ph0}. Його реалізація в "
"попередньому завантаженні є оболонкою. Корисне питання полягає в тому, що "
"надсилає ця оболонка і який код її отримує."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/notion/index.html:255
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#: website/public/showcase/notion/index.html:259
#: website/public/showcase/notion/index.html:332
#: website/public/showcase/notion/index.html:361
#: website/public/showcase/notion/index.html:392
#: website/public/showcase/notion/index.html:420
msgctxt "page:showcase/notion/index.html"
msgid "Copy"
msgstr "Копіювати"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="notion-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/notion/index.html:268
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to trace how Notion copies text and HTML to the "
"system clipboard. Show the code at each step.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA, щоб простежити, як Notion копіює текст "
"і HTML в системний буфер обміну. Показуйте код на кожному "
"кроці.{ph3}{ph4}{ph5}"
#: website/public/showcase/notion/index.html:276
msgctxt "page:showcase/notion/index.html"
msgid ""
"An example prompt with Notion's local application package available to your "
"coding agent."
msgstr ""
"Приклад запиту з локальним пакетом додатків Notion, доступним вашому "
"програмісту."
#: website/public/showcase/notion/index.html:281
msgctxt "page:showcase/notion/index.html"
msgid "REA finds where to start reading"
msgstr "REA знаходить, з чого почати читання"
#: website/public/showcase/notion/index.html:282
msgctxt "page:showcase/notion/index.html"
msgid ""
"Analyzing the tab preload with REA locates the API exposed to the page and "
"the call that sends an IPC request. Both findings come with source ranges in"
" the minified bundle:"
msgstr ""
"Аналіз попереднього завантаження вкладок за допомогою REA дозволяє знайти "
"API, доступний для сторінки, і виклик, який відправляє запит IPC. Обидва "
"результати представлені з діапазонами вихідних текстів у зменшеному пакеті:"
#: website/public/showcase/notion/index.html:288
msgctxt "page:showcase/notion/index.html"
msgid "REA findings → two places to open"
msgstr "REA висновки → два місця для відкриття"
#. {ph0}: <code>analyze_javascript_application</code>
#: website/public/showcase/notion/index.html:303
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Selected fields from a fresh {ph0} result on Notion's tab preload, recorded "
"with REA 4.1.0. Positions use the original bundle's line and zero-based "
"column."
msgstr ""
"Вибрані поля з нового {ph0}результату застосування "
"analyze_javascript_application в попередньому завантаженні вкладки Notion, "
"записаного за допомогою REA 4.1.0. Для позицій використовуються рядок "
"вихідного пакета і стовпець, заснований на нулі."
#. {ph0}: <code>invokerInMain</code>
#. {ph1}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:310
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The agent opens those locations, finds the clipboard member in the assembled"
" API, and reads {ph0}. Its call site supplies {ph1}. That name gives the "
"agent something precise to look for in the main bundle. The four excerpts "
"below show the route it connects."
msgstr ""
"Агент відкриває ці папки, знаходить елемент clipboard у зібраному API та "
"читає {ph0}. Його сайт виклику надає {ph1}. Це ім'я дає Агенту точну "
"інформацію для пошуку в основному пакеті. У чотирьох наведених нижче витягах"
" показано маршрут, по якому він підключається."
#: website/public/showcase/notion/index.html:319
msgctxt "page:showcase/notion/index.html"
msgid "Four short pieces of code"
msgstr "Чотири короткі фрагменти коду"
#: website/public/showcase/notion/index.html:320
msgctxt "page:showcase/notion/index.html"
msgid ""
"Simplified from the packaged JavaScript, with readable variable names. "
"Unrelated members are omitted."
msgstr ""
"Спрощений порівняно з пакетом JavaScript, з читабельними іменами змінних. "
"Незв'язані елементи опущені."
#: website/public/showcase/notion/index.html:326
msgctxt "page:showcase/notion/index.html"
msgid "Start at the API exposed to the page"
msgstr "Почніть з API, доступного для цієї сторінки"
#. {ph0}: <code>invokerInMain</code>
#: website/public/showcase/notion/index.html:348
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"This member supplies the channel name. The implementation of {ph0} tells us "
"how the request leaves the page's process."
msgstr ""
"Цей учасник надає назву каналу. Реалізація {ph0} повідомляє нам, як запит "
"завершує обробку сторінки."
#: website/public/showcase/notion/index.html:355
msgctxt "page:showcase/notion/index.html"
msgid "Resolve the preload's wrapper"
msgstr "Усуньте оболонку попереднього завантаження"
#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:378
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The returned function forwards the arguments through Electron's request-and-"
"response IPC. We can now look for {ph0} on the main-process side."
msgstr ""
"Функція повернення перенаправляє аргументи через IPC запиту та відповіді "
"Electron. Тепер ми можемо шукати {ph0} на стороні основного процесу."
#: website/public/showcase/notion/index.html:386
msgctxt "page:showcase/notion/index.html"
msgid "Check how the receiver is registered"
msgstr "Перевірте, як зареєстрований одержувач"
#. {ph0}: <code>addListener</code>
#. {ph1}: <code>ipcMain.handle</code>
#: website/public/showcase/notion/index.html:407
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The main process uses another wrapper. Its {ph0} method registers an {ph1} "
"receiver for that channel."
msgstr ""
"Основний процес використовує іншу оболонку. Його метод {ph0} реєструвати "
"{ph1} для цього каналу."
#: website/public/showcase/notion/index.html:414
msgctxt "page:showcase/notion/index.html"
msgid "Find the write and its sender check"
msgstr "Знайдіть запис і перевірте його відправника"
#: website/public/showcase/notion/index.html:437
msgctxt "page:showcase/notion/index.html"
msgid ""
"This is the destination. After checking the sender, the handler passes the "
"supplied data to Electron's clipboard API. The channel and the two resolved "
"wrappers connect the exposed method to this call."
msgstr ""
"Це адресат. Після перевірки відправника обробник передає надані дані в API "
"буфера обміну Electron. Канал і дві дозволені оболонки підключають відкритий"
" метод до цього виклику."
#: website/public/showcase/notion/index.html:448
msgctxt "page:showcase/notion/index.html"
msgid "How does a copied block keep its structure?"
msgstr "Як скопійований блок зберігає свою структуру?"
#. {ph0}: <code>electronApi.clipboard.write</code>
#: website/public/showcase/notion/index.html:449
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion's web editor sends text and HTML through {ph0}. It keeps the block "
"data locally and puts an ID in the copied HTML to connect them."
msgstr ""
"Веб-редактор Notion надсилає текст та HTML-код через {ph0}. Він зберігає "
"дані блоку локально та вставляє ідентифікатор у скопійований HTML-код, щоб "
"зв'язати їх."
#: website/public/showcase/notion/index.html:455
msgctxt "page:showcase/notion/index.html"
msgid "HTML links to saved block data"
msgstr "HTML-посилання на збережені дані блоків"
#: website/public/showcase/notion/index.html:479
msgctxt "page:showcase/notion/index.html"
msgid "Read the HTML ID"
msgstr "Прочитайте ідентифікатор HTML"
#: website/public/showcase/notion/index.html:480
msgctxt "page:showcase/notion/index.html"
msgid "Find the same local ID"
msgstr "Знайдіть той самий локальний ідентифікатор"
#: website/public/showcase/notion/index.html:481
msgctxt "page:showcase/notion/index.html"
msgid "Restore Notion block data"
msgstr "Відновити дані блоку Notion"
#: website/public/showcase/notion/index.html:483
msgctxt "page:showcase/notion/index.html"
msgid ""
"Illustrative text and ID. The recorded module test restores the block data "
"when IDs match; a stale entry returns only text and HTML."
msgstr ""
"Ілюстративний текст та ідентифікатор. Записаний модульний тест відновлює "
"дані блоку, якщо ідентифікатори однакові; застарілий запис повертає лише "
"текст та HTML."
#: website/public/showcase/notion/index.html:489
msgctxt "page:showcase/notion/index.html"
msgid ""
"On paste, Notion looks for the HTML ID and checks it against the saved copy."
" Matching IDs restore the block data."
msgstr ""
"При вставці Notion шукає HTML-ідентифікатор і порівнює його зі збереженою "
"копією. Відповідні ідентифікатори відновлюють дані блоку."
#: website/public/showcase/notion/index.html:493
msgctxt "page:showcase/notion/index.html"
msgid "Clipboard format recorded from web assets cached on July 13, 2026."
msgstr ""
"Формат буфера обміну, записаний із веб-ресурсів, кешованих 13 липня 2026 "
"року."
#: website/public/showcase/notion/index.html:499
msgctxt "page:showcase/notion/index.html"
msgid "More examples and sources"
msgstr "Додаткові приклади та джерела"
#: website/public/showcase/notion/index.html:501
msgctxt "page:showcase/notion/index.html"
msgid "Another example: Markdown tables"
msgstr "Інший приклад: таблиці уцінки"
#: website/public/showcase/notion/index.html:502
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion parses Markdown into block data. This example shows how a table "
"becomes header and data rows."
msgstr ""
"Notion перетворює Markdown в блокові дані. У цьому прикладі показано, як "
"таблиця перетворюється на заголовок та рядки даних."
#: website/public/showcase/notion/index.html:507
msgctxt "page:showcase/notion/index.html"
msgid "A table through Notion's Markdown parser"
msgstr "Таблиця за допомогою аналізатора уцінки Notion"
#: website/public/showcase/notion/index.html:528
msgctxt "page:showcase/notion/index.html"
msgid ""
"Recorded output from an extracted Markdown parser. The table becomes rows "
"and cells."
msgstr ""
"Записаний вихід із витягнутого аналізатора Markdown. Таблиця перетворюється "
"в рядки і осередки."
#: website/public/showcase/notion/index.html:535
msgctxt "page:showcase/notion/index.html"
msgid "Another path: the offline SQLite connection"
msgstr "Інший шлях: автономне підключення до SQLite"
#. {ph0}: <code>getSqliteMeta</code>
#: website/public/showcase/notion/index.html:536
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion's renderer requests {ph0} through IPC. The main process creates a "
"message channel and gives one port to the renderer and the other to a SQLite"
" utility process. Subsequent statement batches and results travel over that "
"port."
msgstr ""
"Програма візуалізації Notion запитує {ph0} через IPC. Основний процес "
"створює канал передачі повідомлень і передає один порт програмі "
"візуалізації, а інший - службовому процесу SQLite. Наступні пакети "
"інструкцій та результати передаються через цей порт."
#: website/public/showcase/notion/index.html:542
msgctxt "page:showcase/notion/index.html"
msgid ""
"Following this handoff explains where the database work runs, and why "
"tracing only the initial IPC request misses the later conversation."
msgstr ""
"Після цієї передачі обслуговування пояснюється, як виконується робота з "
"базою даних і чому при відстеженні тільки початкового IPC-запиту не "
"враховується подальший діалог."
#: website/public/showcase/notion/index.html:549
msgctxt "page:showcase/notion/index.html"
msgid "Sources and how to read the excerpts"
msgstr "Джерела та як читати уривки"
#. {ph0}: <code>app.asar</code>
#. {ph1}: <code>main/index.js</code>
#. {ph2}: <code>isNotionWebContents</code>
#: website/public/showcase/notion/index.html:550
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The clipboard bridge comes from Notion Desktop 7.6.1's {ph0}: the tab "
"preload and {ph1}. The excerpts expand minified variable names and omit "
"unrelated code; the sender-check helper is shown with its underlying {ph2} "
"call."
msgstr ""
"Інтерфейс буфера обміну взято з NotionNotion{ph0}: попереднє завантаження "
"вкладки та {ph1}. У наведених витягах наведені скорочені імена змінних і "
"опущений незв'язаний код; показаний помічник для перевірки відправника з "
"базовим {ph2}викликом isNotionWebContents."
#. {ph0}: <code>747001</code>
#. {ph1}: <code>58169</code>
#. {ph2}: <code>736810</code>
#. {ph3}: <code>422457</code>
#: website/public/showcase/notion/index.html:558
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The virtual clipboard and Markdown examples come from web assets cached on "
"July 13, 2026, including modules {ph0}, {ph1}, {ph2} and {ph3}. Those assets"
" have their own version. Saved probes executed extracted modules and small "
"harnesses; their outputs describe those probes rather than a captured "
"desktop UI session."
msgstr ""
"Приклади віртуального буфера обміну та Markdown взяті з веб-ресурсів, "
"кешованих 13 липня 2026 року, включаючи модулі {ph0}, {ph1}, {ph2} і {ph3}. "
"У цих ресурсів є своя версія. Збережені тести запускали витягнуті модулі та "
"невеликі модулі управління; їх результати описують ці тести, а не захоплений"
" сеанс інтерфейсу робочого столу."
#: website/public/showcase/notion/index.html:566
msgctxt "page:showcase/notion/index.html"
msgid ""
"The REA result shown here is a focused analysis of the saved tab preload, "
"recorded with the published REA 4.1.0 package. It locates the API and invoke"
" operation. The clipboard member and matching receiver are connected by "
"reading their wrapper implementations in the package."
msgstr ""
"Показаний тут результат REA - це цілеспрямований аналіз збереженого "
"попереднього завантаження вкладок, записаний за допомогою опублікованого "
"пакету REA 4.1.0. Він визначає розташування API і запускає операцію. Елемент"
" буфера обміну і відповідний приймач підключаються шляхом зчитування їх "
"реалізацій-оболонок в пакеті."
#. {ph0}: <code>422457</code>
#: website/public/showcase/notion/index.html:573
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The Markdown example uses parser module {ph0}. Saved module tests show that "
"both page and chat filters preserve this table. The paste/import, structured"
" Markdown and AI/chat parsers have separate entry points and intermediate "
"formats."
msgstr ""
"У прикладі Markdown використовується модуль синтаксичного аналізу {ph0}. "
"Тести збереженого модуля показують, що і фільтри сторінки, і фільтри чату "
"зберігають цю таблицю. Парсери вставки / імпорту, структурованого Markdown і"
" AI / chat мають окремі точки входу і проміжні формати."
#. {ph0}: <a href="../../guides/javascript/" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/notion/index.html:581
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}JavaScript application guide{ph1}{ph2}Follow a small Electron "
"application's export feature.{ph3}"
msgstr ""
"{ph0} Керівництво по застосуванню{ph1}{ph2} JavaScript ознайомтеся з "
"невеликою функцією експорту програми Electron.{ph3}"
#. {ph0}: <a href="../dx-ball/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/notion/index.html:588
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}DX-Ball reconstruction{ph1}{ph2}Follow native instructions to a checked"
" C function.{ph3}"
msgstr ""
"{ph0} Реконструкція{ph1}{ph2} DX-Ball виконується відповідно до власних "
"інструкцій для перевіреної функції C.{ph3}"
#: website/public/showcase/notion/index.html:6
msgctxt "page:showcase/notion/index.html"
msgid "Notion Electron Reverse Engineering: Clipboard — REA"
msgstr "Notion Electron зворотна інженерія: Буфер обміну-REA"
#: website/public/showcase/notion/index.html:7
msgctxt "page:showcase/notion/index.html"
msgid ""
"Follow Notion's clipboard API through Electron's preload, IPC wrappers and "
"main process, with short code excerpts and a look at its rich clipboard "
"format."
msgstr ""
"Дотримуйтесь API буфера обміну Notion за допомогою попереднього завантаження"
" Electron, обгортки IPC та основного процесу, з короткими витягами коду та "
"ознайомтеся з його багатим форматом буфера обміну."
#: website/public/showcase/notion/index.html:237
msgctxt "page:showcase/notion/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/showcase/notion/index.html:245
msgctxt "page:showcase/notion/index.html"
msgid "Notion Electron case study"
msgstr "Тематичне дослідження Notion Electron"
#: website/public/showcase/notion/index.html:259
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion analysis prompt"
msgstr "Скопіювати запит на аналіз Notion"
#: website/public/showcase/notion/index.html:332
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion preload excerpt"
msgstr "Скопіювати фрагмент попереднього завантаження Notion"
#: website/public/showcase/notion/index.html:361
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion invoke wrapper excerpt"
msgstr "Скопіювати фрагмент коду Notion для виклику оболонки"
#: website/public/showcase/notion/index.html:392
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion handler wrapper excerpt"
msgstr "Скопіювати фрагмент оболонки обробника Notion"
#: website/public/showcase/notion/index.html:420
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion clipboard receiver excerpt"
msgstr "Скопіювати фрагмент приймача з буфера обміну Notion"
#: website/public/showcase/notion/index.html:475
msgctxt "page:showcase/notion/index.html"
msgid "Restoring rich clipboard data on paste"
msgstr "Відновлення розширених даних буфера обміну при вставці"
#: website/public/showcase/notion/index.html:618
msgctxt "page:showcase/notion/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/showcase/th04/index.html:99
msgctxt "page:showcase/th04/index.html"
msgid "Skip to content"
msgstr "Перейти до змісту"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/th04/index.html:181
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / TH04"
msgstr "{ph0}Головний{ph1} сторінка / {ph2}Вітрина{ph3} / TH04"
#: website/public/showcase/th04/index.html:184
msgctxt "page:showcase/th04/index.html"
msgid "Case study · Touhou 4: Lotus Land Story"
msgstr "Тематичне дослідження * Тохоу 4: історія Землі лотосів"
#. {ph0}: <br />
#: website/public/showcase/th04/index.html:185
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Reconstructing TH04's{ph0}bullet patterns."
msgstr "Реконструкції TH04 з{ph0}візерунки кулі."
#: website/public/showcase/th04/index.html:186
msgctxt "page:showcase/th04/index.html"
msgid ""
"A ring of bullets starts with a short angle calculation. Use REA to inspect "
"the original DOS function, then follow its instructions into readable C++."
msgstr ""
"Набір маркерів починається з обчислення короткого кута. Використовуйте REA "
"для перевірки оригінальної функції DOS, а потім дотримуйтесь її інструкцій "
"на читабельному C++."
#: website/public/showcase/th04/index.html:191
msgctxt "page:showcase/th04/index.html"
msgid "PC-98 · 16-bit DOS · C++ and assembly"
msgstr "PC-98 * 16-розрядна версія DOS * C++ та збірка"
#: website/public/showcase/th04/index.html:192
msgctxt "page:showcase/th04/index.html"
msgid "View the TH04 reconstruction"
msgstr "Переглянути реконструкцію TH04"
#: website/public/showcase/th04/index.html:198
msgctxt "page:showcase/th04/index.html"
msgid "From original instructions to checked source"
msgstr "Від оригінальних інструкцій до перевіреного джерела"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:200
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}01 · Original game{ph1}{ph2}MAIN.EXE{ph3}{ph4}The PC-98 executable and "
"its bullet-angle helper.{ph5}"
msgstr ""
"{ph0}01 * основна частина оригінальної гри{ph1}{ph2}.Запустіть "
"виконуваний{ph3}{ph4} файл PC-98 та його допоміжний інструмент Bullet-"
"angle.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:207
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}02 · Inspect with REA{ph1}{ph2}Instructions + "
"references{ph3}{ph4}Verify the loaded DOS code and read the angle "
"calculation from the executable.{ph5}"
msgstr ""
"{ph0}02 * перевірте за допомогою{ph1}{ph2} інструкцій REA + "
"посилань{ph3}{ph4}, перевірте завантажений код DOS і прочитайте розрахунок "
"кута з виконуваного файлу.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:215
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}03 · Read the C++{ph1}{ph2}Space → aim → rotate{ph3}{ph4}Connect each "
"operation to the maintained reconstruction.{ph5}"
msgstr ""
"{ph0}03 * Прочитайте пробіл C++{ph1}{ph2} → aim → rotate{ph3}{ph4}, щоб "
"пов'язати кожну операцію зі збереженою реконструкцією.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:222
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}04 · Check the source{ph1}{ph2}2,139 matching bytes{ph3}{ph4}Recorded "
"compiler checks cover the bullet-generation code that contains this "
"helper.{ph5}"
msgstr ""
"{ph0}04 * перевірте вихідні{ph1}{ph2} 2139 відповідних байт{ph3}{ph4}, "
"записаних компілятором, перевірки охоплюють код генерації маркерів, що "
"містить цей допоміжний елемент.{ph5}"
#: website/public/showcase/th04/index.html:231
msgctxt "page:showcase/th04/index.html"
msgid ""
"REA returns the original code and its analysis evidence. The TH04 project "
"supplies the maintained source and compiler checks."
msgstr ""
"REA повертає вихідний код і результати його аналізу. Проект TH04 забезпечує "
"підтримувані перевірки вихідного коду та компілятора."
#: website/public/showcase/th04/index.html:239
msgctxt "page:showcase/th04/index.html"
msgid "In this case study"
msgstr "У цьому тематичному дослідженні"
#. {ph0}: <a href="#ring">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:241
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}The bullet ring{ph1}"
msgstr "{ph0}Кільце з кулями{ph1}"
#. {ph0}: <a href="#rea">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:242
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}What REA returns{ph1}"
msgstr "{ph0}Що повертає REA{ph1}"
#. {ph0}: <a href="#source">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:243
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Assembly to C++{ph1}"
msgstr "{ph0}Збірка на C++{ph1}"
#. {ph0}: <a href="#checking">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:244
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Checking the source{ph1}"
msgstr "{ph0}Перевірка джерела{ph1}"
#. {ph0}: <a href="#project">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:245
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}The full project{ph1}"
msgstr "{ph0}Повний проект{ph1}"
#: website/public/showcase/th04/index.html:250
msgctxt "page:showcase/th04/index.html"
msgid "How a ring aims at the player"
msgstr "Як кільце націлюється на гравця"
#: website/public/showcase/th04/index.html:251
msgctxt "page:showcase/th04/index.html"
msgid ""
"Elly's attack requests an aimed ring with an initial count of 16. One helper"
" calculates the direction of each bullet. The same ring can face a fixed "
"direction or turn toward the player."
msgstr ""
"Для атаки Еллі потрібно прицільне кільце з початковим рахунком 16. Один з "
"помічників розраховує напрямок польоту кожної кулі. Одне і те ж кільце може "
"бути спрямоване у фіксованому напрямку або повернуто в бік гравця."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/th04/index.html:258
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодуючий агент"
#: website/public/showcase/th04/index.html:263
#: website/public/showcase/th04/index.html:319
#: website/public/showcase/th04/index.html:496
#: website/public/showcase/th04/index.html:530
msgctxt "page:showcase/th04/index.html"
msgid "Copy"
msgstr "Копіювати"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="th04-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/th04/index.html:272
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how TH04 creates a ring of bullets and aims "
"it at the player. Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA, щоб дізнатися, як TH04 створює кільце з"
" куль і направляє його на гравця. Поясніть розрахунок і покажіть "
"код.{ph3}{ph4}{ph5}"
#: website/public/showcase/th04/index.html:281
msgctxt "page:showcase/th04/index.html"
msgid ""
"An example prompt, with the original executable and reconstruction checkout "
"available locally."
msgstr ""
"Приклад запиту з оригінальним виконуваним файлом та відновленням, доступним "
"локально."
#. {ph0}: <code>0, 16, 32, …, 240</code>
#: website/public/showcase/th04/index.html:285
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"TH04 stores a full clockwise turn in 256 angle units. For 16 bullets, each "
"index adds 16 units: {ph0}. Adding the player's direction rotates those "
"positions together."
msgstr ""
"TH04 зберігає повний оборот за годинниковою стрілкою в 256 кутових одиницях."
" Для 16 куль кожен індекс додає по 16 одиниць.: {ph0}. При додаванні "
"напрямку руху гравця ці позиції міняються місцями."
#. {ph0}: <a href="../../assets/figures/th04-bullet-ring.svg" >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:305
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"An illustration of the recovered angle math for count 16, player direction "
"40 and template rotation 0. {ph0}Open figure{ph1}"
msgstr ""
"Ілюстрація відновленого математичного розрахунку кута для рахунку 16, "
"напрямку гравця 40 і повороту шаблону 0. {ph0}Відкрити малюнок{ph1}"
#: website/public/showcase/th04/index.html:313
msgctxt "page:showcase/th04/index.html"
msgid "The firing template in the recovered source"
msgstr "Шаблон запуску у відновленому джерелі"
#: website/public/showcase/th04/index.html:318
msgctxt "page:showcase/th04/index.html"
msgid "Elly's ring attack · source excerpt"
msgstr "Напад Еллі на кільце · уривок з джерела"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/boss/elly_phase_ring16.cpp#L26"
#. >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:333
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"These lines select the pattern before difficulty and performance tuning. "
"{ph0}Read the attack's source{ph1}."
msgstr ""
"У цих рядках вибирається шаблон перед налаштуванням складності та "
"продуктивності. {ph0}Прочитайте джерело атаки{ph1}."
#: website/public/showcase/th04/index.html:344
msgctxt "page:showcase/th04/index.html"
msgid "What REA returns"
msgstr "Що повертає REA"
#. {ph0}: <code>bullet_velocity_and_angle_set()</code>
#: website/public/showcase/th04/index.html:345
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"We inspect {ph0}, the function that sets each bullet's velocity and angle. "
"REA returns its instructions, pseudocode and references. Three parts of that"
" result explain the pattern."
msgstr ""
"Ми перевіряємо {ph0}, які задають швидкість і кут нахилу кожної кулі. REA "
"повертає свої інструкції, псевдокод та посилання. Три частини цього "
"результату пояснюють закономірність."
#: website/public/showcase/th04/index.html:353
msgctxt "page:showcase/th04/index.html"
msgid "Check the DOS image before reading its code"
msgstr "Перевірте зображення DOS, перш ніж читати його код"
#: website/public/showcase/th04/index.html:374
msgctxt "page:showcase/th04/index.html"
msgid ""
"The check ties the loaded code and relocation records to the supplied "
"executable. The path above is shortened for display."
msgstr ""
"Перевірка прив'язує завантажений код і записи про переміщення до наданого "
"виконуваного файлу. Шлях, зазначений вище, скорочений для відображення."
#: website/public/showcase/th04/index.html:380
msgctxt "page:showcase/th04/index.html"
msgid "Read the ring's multiply and divide"
msgstr "Прочитайте напис на кільці \"множ і Делі\""
#. {ph0}: <code>SI</code>
#. {ph1}: <code>DS:53AF</code>
#. {ph2}: <code>bullet_template.count</code>
#: website/public/showcase/th04/index.html:398
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0} holds the bullet index. The shift multiplies it by 256, then the "
"division uses the count read from {ph1}. The maintained source names that "
"field {ph2}. The complete sequence appears below."
msgstr ""
"{ph0} записаний загальний індекс. При зсуві значення множиться на 256, потім"
" при діленні використовується значення, прочитане з {ph1}. Імена "
"підтримуваних джерел, які вказані в полі {ph2}. Повна послідовність наведена"
" нижче."
#: website/public/showcase/th04/index.html:407
msgctxt "page:showcase/th04/index.html"
msgid "Find where the pattern turns toward the player"
msgstr "Знайдіть, де малюнок повертається в бік гравця"
#: website/public/showcase/th04/index.html:428
msgctxt "page:showcase/th04/index.html"
msgid ""
"The instruction operands expose two coordinate differences and a direction "
"helper. Its return value is added to the relative ring angle. Source names "
"make those addresses readable; REA lets the agent check the original "
"operations behind them."
msgstr ""
"Операнди команд надають дві різниці координат і допоміжне значення напрямку."
" Повернене значення додається до відносного кільцевого кута. Імена джерел "
"роблять ці адреси читабельними; REA дозволяє агенту перевіряти початкові "
"операції, що стоять за ними."
#: website/public/showcase/th04/index.html:439
msgctxt "page:showcase/th04/index.html"
msgid "From assembly to readable C++"
msgstr "Від асемблера до читабельного C++"
#: website/public/showcase/th04/index.html:440
msgctxt "page:showcase/th04/index.html"
msgid ""
"Select a step to match the original instructions with the angle calculation."
" This summary follows the aimed-ring path; the full source also handles "
"spreads, stacks and random patterns."
msgstr ""
"Виберіть крок, який відповідає початковим інструкціям з розрахунку кута. У "
"цьому огляді наведено схему прицільного кільця; повний вихідний код також "
"містить дані про розсіювання, стеки та випадкові моделі."
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:451
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}01{ph1} Index"
msgstr "{ph0}Індекс 01{ph1}"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:459
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}02{ph1} Space"
msgstr "{ph0}02{ph1} Простір"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:467
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}03{ph1} Aim"
msgstr "{ph0}03{ph1} Мета"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:475
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}04{ph1} Rotate"
msgstr "{ph0}04{ph1} Обертати"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:483
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}05{ph1} Store"
msgstr "{ph0}05{ph1} Магазин"
#: website/public/showcase/th04/index.html:495
msgctxt "page:showcase/th04/index.html"
msgid "REA · original 16-bit instructions"
msgstr "REA * оригінальні 16-розрядні інструкції"
#: website/public/showcase/th04/index.html:529
msgctxt "page:showcase/th04/index.html"
msgid "Readable C++ · aimed-ring summary"
msgstr "Читабельний c++ * короткий опис aimed-ring"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>SI</code>
#: website/public/showcase/th04/index.html:558
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}01 · Read the bullet index.{ph1} The stack argument is loaded into "
"{ph2}. In a 16-bullet ring, this member index runs from 0 through 15."
msgstr ""
"{ph0}01 * зчитуємо маркерний Індекс.{ph1} Аргумент stack завантажується в "
"{ph2}. У кільці з 16 маркерів цей індекс елемента знаходиться в діапазоні "
"від 0 до 15."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>SHL AX,8</code>
#. {ph3}: <code>IDIV</code>
#: website/public/showcase/th04/index.html:563
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}02 · Space the directions around a full turn.{ph1} {ph2} multiplies by "
"256. The count is zero-extended into a word, then {ph3} divides the product "
"by that count. For count 16, each index advances 16 angle units."
msgstr ""
"{ph0}02 * розставте напрямки на повний оборот.{ph1} {ph2} 8 множиться на "
"256. Число множиться на нуль і перетворюється в слово, потім {ph3} ділить "
"результат на це число. Для числа 16 кожен індекс множиться на 16 кутових "
"одиниць."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>AX</code>
#: website/public/showcase/th04/index.html:570
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}03 · Add the player direction.{ph1} The two subtractions form player-"
"minus-origin coordinates. The direction helper returns an angle in {ph2}; "
"adding it turns the whole ring toward the player."
msgstr ""
"{ph0}03 * додайте напрямок руху гравця.{ph1} Два віднімання утворюють "
"координати гравця мінус вихідна точка. Допоміжний інструмент direction "
"повертає кут у {ph2}; при додаванні все кільце повертається до гравця."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>ADD AL,[0x53ad]</code>
#: website/public/showcase/th04/index.html:576
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}04 · Add the pattern's rotation.{ph1} {ph2} adds the template angle. "
"Elly's initial template sets it to zero; other patterns can use the same "
"helper with a rotation."
msgstr ""
"{ph0}04 * додайте поворот шаблону.{ph1} {ph2} додає кут нахилу шаблону. У "
"вихідному шаблоні Elly він дорівнює нулю; інші шаблони можуть "
"використовувати той самий допоміжний елемент із поворотом."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>AL</code>
#: website/public/showcase/th04/index.html:582
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}05 · Keep the final angle in one byte.{ph1} The store writes {ph2} to "
"the spawn-angle field. Values wrap after 255, just as the unsigned-byte cast"
" does. The surrounding source also converts this angle and speed into "
"velocity."
msgstr ""
"{ph0}05 * Зберігайте кінцевий кут в одному байті.{ph1} Сховище записує {ph2}"
" в поле \"кут появи\". Значення переносяться після 255, так само, як це "
"відбувається при перетворенні беззнакових байт. Навколишнє джерело також "
"перетворює цей кут і швидкість у Швидкість обертання."
#: website/public/showcase/th04/index.html:591
msgctxt "page:showcase/th04/index.html"
msgid ""
"The assembly selects the aimed-ring branch, aim calculation and final store."
" The C++ above is a readable summary. Compiler checks below apply to the "
"maintained source in the linked project."
msgstr ""
"У збірці вибирається гілка aimed-ring, обчислення aim і кінцеве сховище. "
"Наведений вище текст на C++ - це читабельний підсумок. Наведені нижче "
"перевірки компілятора застосовуються до підтримуваного вихідного тексту у "
"зв'язаному проекті."
#: website/public/showcase/th04/index.html:597
msgctxt "page:showcase/th04/index.html"
msgid "Read the maintained ring and aim source"
msgstr "Ознайомтеся з збереженим кільцем і приціліться в джерело"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add_impl.hpp#L4"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add.cpp#L422"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/types.hpp#L6"
#. >
#. {ph5}: </a >
#: website/public/showcase/th04/index.html:626
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Ring macro{ph1} · {ph2}Aim and velocity source{ph3} · {ph4}Angle "
"representation{ph5}"
msgstr ""
"{ph0}Кільцевий макрос{ph1} · {ph2}Мета та джерело швидкості{ph3} · "
"{ph4}Представлення кута{ph5}"
#: website/public/showcase/th04/index.html:646
msgctxt "page:showcase/th04/index.html"
msgid "Checking the maintained source"
msgstr "Перевірка підтримуваного джерела"
#: website/public/showcase/th04/index.html:647
msgctxt "page:showcase/th04/index.html"
msgid ""
"The TH04 project's recorded checks compile the bullet-generation code, "
"including this helper, with its pinned Turbo C++ 4.0J toolchain."
msgstr ""
"Записані перевірки проекту TH04 дозволяють скомпілювати код для генерації "
"маркерів, включаючи цей помічник, за допомогою закріпленого набору "
"інструментів Turbo C++ 4.0 J."
#: website/public/showcase/th04/index.html:654
msgctxt "page:showcase/th04/index.html"
msgid "2,139 matching bytes"
msgstr "2,139 відповідних байтів"
#: website/public/showcase/th04/index.html:655
msgctxt "page:showcase/th04/index.html"
msgid ""
"The compiled bullet-generation code matches a 2,139-byte section of the "
"original executable."
msgstr ""
"Скомпільований код генерації маркерів відповідає 2139-байтовому розділу "
"оригінального виконуваного файлу."
#: website/public/showcase/th04/index.html:661
msgctxt "page:showcase/th04/index.html"
msgid "Two clean builds"
msgstr "Дві чисті збірки"
#: website/public/showcase/th04/index.html:662
msgctxt "page:showcase/th04/index.html"
msgid ""
"Two separate builds produce the same matching bytes. The recorded input "
"hashes match the maintained source shown here."
msgstr ""
"Дві окремі збірки генерують однакові відповідні байти. Записані вхідні хеші "
"відповідають показаному тут збереженому джерелу."
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/reconstruction/product/TH04_SEMANTIC_BULLET_GENERATION_V1236.md#validation"
#. >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:668
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Recorded on 3 October 2026. {ph0}Read the compiler checks{ph1}."
msgstr ""
"Записано 3 жовтня 2026 року. {ph0}Ознайомтеся з перевірками "
"компілятора{ph1}."
#: website/public/showcase/th04/index.html:676
msgctxt "page:showcase/th04/index.html"
msgid "Target identity and analysis scope"
msgstr "Ідентифікація мети і обсяг аналізу"
#: website/public/showcase/th04/index.html:681
msgctxt "page:showcase/th04/index.html"
msgid "Original target"
msgstr "Початкова мета"
#. {ph0}: <code>MAIN.EXE</code>
#: website/public/showcase/th04/index.html:682
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}, 156,258 bytes, DOS MZ"
msgstr "{ph0} , 156 258 байт, DOS MZ"
#: website/public/showcase/th04/index.html:685
msgctxt "page:showcase/th04/index.html"
msgid "Helper entry"
msgstr "Допоміжний запис"
#. {ph0}: <code>0x2cfc8</code>
#: website/public/showcase/th04/index.html:686
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0} in REA's loaded image"
msgstr "{ph0} у завантаженому зображенні REA"
#: website/public/showcase/th04/index.html:689
msgctxt "page:showcase/th04/index.html"
msgid "Original file offset"
msgstr "Зміщення вихідного файлу"
#. {ph0}: <code>0x1e7c8</code>
#. {ph1}: <code>address_to_file_offset</code>
#: website/public/showcase/th04/index.html:690
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}, returned by {ph1}"
msgstr "{ph0}, що повертається параметром {ph1}"
#: website/public/showcase/th04/index.html:696
msgctxt "page:showcase/th04/index.html"
msgid "Recorded code inspection"
msgstr "Перевірка записаного коду"
#: website/public/showcase/th04/index.html:697
msgctxt "page:showcase/th04/index.html"
msgid "REA 4.1.0 · 7 October 2026"
msgstr "REA 4.1.0 * 7 жовтня 2026"
#: website/public/showcase/th04/index.html:702
msgctxt "page:showcase/th04/index.html"
msgid ""
"Compiler checks cover the complete bullet-add code section, including this "
"helper. They also compare its MAP contribution and overlapping relocation."
msgstr ""
"Перевірки компілятора охоплюють весь розділ коду для додавання маркерів, "
"включаючи цей допоміжний інструмент. Вони також порівнюють його внесок у "
"відображення та перекриття переміщення."
#. {ph0}: <code>0x1000</code>
#: website/public/showcase/th04/index.html:707
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"REA verified the static DOS load image at load segment {ph0}. Its addresses "
"describe that analysis image. The function result reports 503 body bytes in "
"two ranges across a 517-byte span; the selected instructions above lie in "
"those reported ranges."
msgstr ""
"REA перевірив статичне зображення завантаження DOS у сегменті завантаження "
"{ph0}. Його адреси описують цей аналітичний образ. Результат функції "
"повідомляє про 503 байти тіла в двох діапазонах по 517 байт; вибрані "
"інструкції, наведені вище, знаходяться в цих повідомлених діапазонах."
#. {ph0}: <code>0d72e980</code>
#: website/public/showcase/th04/index.html:714
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"The source names and compiler checks come from TH04 checkpoint {ph0}. "
"Earlier reconstruction observations used the project's own analysis scripts;"
" this page adds a fresh REA inspection of the same original target. The "
"supplied game's identity is pinned by its repository manifest, with "
"independent pristine-dump provenance still open."
msgstr ""
"Імена вихідних текстів та перевірки компілятором походять з контрольної "
"точки TH04 {ph0}. Попередні спостереження за реконструкцією використовували "
"власні аналітичні сценарії проекту; на цій сторінці додано нову перевірку "
"REA для тієї ж початкової мети. Надана гра ідентифікується в маніфесті "
"сховища, при цьому незалежне Походження незайманого дампа все ще відкрите."
#: website/public/showcase/th04/index.html:722
msgctxt "page:showcase/th04/index.html"
msgid ""
"The figure illustrates the angle calculation. Full-game controls, timing and"
" PC-98 hardware behavior have separate runtime checks in the reconstruction "
"project."
msgstr ""
"На малюнку показаний розрахунок кута. Елементи управління в повній версії "
"гри, хронометраж і поведінку апаратного забезпечення PC-98 перевіряються під"
" час виконання в проекті реконструкції окремо."
#: website/public/showcase/th04/index.html:731
msgctxt "page:showcase/th04/index.html"
msgid "The full TH04 reconstruction"
msgstr "Повна реконструкція TH04"
#: website/public/showcase/th04/index.html:732
msgctxt "page:showcase/th04/index.html"
msgid ""
"The project builds the game's four DOS products from maintained C++ and "
"assembly. Beyond bullet generation, the source covers stages, bosses, "
"rendering, input, menus, endings and score handling."
msgstr ""
"Проект створює чотири dos-продукти для гри на підтримуваному C++ та "
"асемблері. Крім генерації маркерів, у вихідному коді описані етапи, боси, "
"рендеринг, введення, меню, кінцівки і обробка результатів."
#. {ph0}: <a class="text-link" href="https://github.com/N0zoM1z0/th04" >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:738
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Explore the TH04 repository{ph1}"
msgstr "{ph0}Вивчіть репозиторій TH04{ph1}"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add.cpp#L292"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/th04/index.html:744
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Bullet-generation source{ph1}{ph2}The complete helper, other pattern "
"types and template tuning.{ph3}"
msgstr ""
"{ph0}Джерело для генерації маркерів -{ph1}{ph2} це повний допоміжний "
"інструмент, інші типи шаблонів та налаштування шаблону.{ph3}"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/DOS_BUILD.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/th04/index.html:753
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}DOS build and run guide{ph1}{ph2}Build the source and test it in the "
"project's PC-98 emulator workflow.{ph3}"
msgstr ""
"{ph0}Керівництво по збірці та запуску DOS{ph1}{ph2} Створіть вихідний код і "
"протестуйте його в робочому процесі емулятора PC-98 проекту.{ph3}"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/RE_HANDOFF.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/showcase/th04/index.html:762
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Current project state{ph1}{ph2}DOS verification and the separate native"
" x64 port.{ph3}"
msgstr ""
"{ph0}Поточна перевірка стану проекту{ph1}{ph2} DOS та окремий власний порт "
"x64.{ph3}"
#: website/public/showcase/th04/index.html:6
msgctxt "page:showcase/th04/index.html"
msgid "TH04 Reverse Engineering: DOS Bullet Patterns — REA"
msgstr "TH04 зворотний інжиніринг: шаблони маркерів DOS-REA"
#: website/public/showcase/th04/index.html:7
msgctxt "page:showcase/th04/index.html"
msgid ""
"Inspect TH04's original 16-bit DOS code with REA. Follow the assembly and "
"recovered C++ to see how a ring of bullets is spaced and aimed at the "
"player."
msgstr ""
"Перевірте оригінальний 16-розрядний dos-код TH04 за допомогою REA . "
"Слідкуйте за збіркою та відновленим C++, щоб побачити, як розставлено кільце"
" куль і як вони націлені на гравця."
#: website/public/showcase/th04/index.html:238
msgctxt "page:showcase/th04/index.html"
msgid "On this page"
msgstr "На цій сторінці"
#: website/public/showcase/th04/index.html:248
msgctxt "page:showcase/th04/index.html"
msgid "TH04 bullet-pattern case study"
msgstr "Тематичне дослідження щодо маркування TH04"
#: website/public/showcase/th04/index.html:263
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 example prompt"
msgstr "Скопіювати запит як приклад TH04"
#: website/public/showcase/th04/index.html:291
msgctxt "page:showcase/th04/index.html"
msgid ""
"TH04 fixed and aimed bullet rings; scroll horizontally on smaller screens"
msgstr ""
"TH04 фіксовані та цільові кульові кільця; горизонтальна прокрутка на менших "
"екранах"
#: website/public/showcase/th04/index.html:297
msgctxt "page:showcase/th04/index.html"
msgid ""
"Two diagrams of a 16-bullet ring. The fixed ring starts at angle zero. "
"Adding a player direction of 40 rotates every direction by the same amount; "
"the highlighted first bullet points toward the player. Both keep a spacing "
"of 16 angle units, or 22.5 degrees."
msgstr ""
"Дві діаграми кільця з 16 точок. Нерухоме кільце починається з нульового "
"кута. При додаванні напрямку руху гравця, рівного 40, всі сторони "
"повертаються на однакову величину; виділена перша точка вказує на гравця. В "
"обох випадках відстань між точками становить 16 кутових одиниць, або 22,5 "
"градуса."
#: website/public/showcase/th04/index.html:319
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 firing template"
msgstr "Скопіювати шаблон запуску TH04"
#: website/public/showcase/th04/index.html:446
msgctxt "page:showcase/th04/index.html"
msgid "Follow the TH04 aimed-ring calculation"
msgstr "Дотримуйтесь розрахунку прицільного кільця TH04"
#: website/public/showcase/th04/index.html:496
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 assembly excerpt"
msgstr "Скопіюйте фрагмент збірки TH04"
#: website/public/showcase/th04/index.html:530
msgctxt "page:showcase/th04/index.html"
msgid "Copy readable aimed-ring calculation"
msgstr "Копіювально-читається розрахунок прицільного кільця"
#: website/public/showcase/th04/index.html:787
msgctxt "page:showcase/th04/index.html"
msgid "Back to top"
msgstr "Нагору"
#: website/public/assets/main.js:39
msgctxt "runtime"
msgid "Copy"
msgstr "Копіювати"
#: website/public/assets/main.js:20
msgctxt "runtime"
msgid "Copied"
msgstr "Скопійований"
#: website/public/assets/main.js:31
msgctxt "runtime"
msgid "Selected"
msgstr "Вибраний"
#: website/public/assets/main.js:22
msgctxt "runtime"
msgid "Code copied to clipboard."
msgstr "Код копіюється в буфер обміну."
#: website/public/assets/main.js:33
msgctxt "runtime"
msgid "Code selected. Use your keyboard to copy it."
msgstr "Обраний код. Скопіюйте його з клавіатури."
#: website/public/assets/main.js:147
#, python-brace-format
msgctxt "runtime"
msgid "REA on GitHub ({count})"
msgstr "REA на GitHub ({count})"
#: website/public/assets/dino-demo.js:71
#, python-brace-format
msgctxt "runtime"
msgid "Distance {distance}"
msgstr "Відстань {distance}"
#: website/public/assets/dino-demo.js:81
msgctxt "runtime"
msgid "Hit a cactus. Try another speed."
msgstr "Врізався в кактус. Перемкни швидкість."
#: website/public/assets/dino-demo.js:81
msgctxt "runtime"
msgid "Space or Jump ↑"
msgstr "Пробіл або стрибок ↑"
#: website/public/assets/dino-demo.js:91
msgctxt "runtime"
msgid "Play again"
msgstr "Зіграй ще раз"
#: website/public/assets/dino-demo.js:91
#: website/public/assets/dino-demo.js:105
msgctxt "runtime"
msgid "Play"
msgstr "Грати"
#: website/public/assets/dino-demo.js:165
msgctxt "runtime"
msgid "Pause"
msgstr "Пауза"
#: website/public/assets/dino-demo.js:106
msgctxt "runtime"
msgid "Press Play, then jump over the cactus."
msgstr "Натисніть Play, потім перестрибніть через кактус."
#: website/public/assets/dino-demo.js:141
msgctxt "runtime"
msgid "Hit a cactus. Press Play again, or change the speed and restart."
msgstr ""
"Потрапте по кактусу. Натисніть відтворення ще раз або змініть швидкість і "
"перезапустіть гру."
#: website/public/assets/dino-demo.js:166
msgctxt "runtime"
msgid "Running. Space or Jump clears a cactus."
msgstr "Рухомий. Пробіл або стрибок знищують кактус."
#: website/public/assets/dino-demo.js:177
#: website/public/assets/dino-demo.js:213
#: website/public/assets/dino-demo.js:218
msgctxt "runtime"
msgid "Paused. Press Play to continue."
msgstr "Призупинений. Натисніть відтворення, щоб продовжити."
#: website/public/assets/dino-demo.js:197
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}. Space or Jump clears a cactus."
msgstr "Фіксована швидкість: {speed}. Пробіл або стрибок прибирають кактус."
#: website/public/assets/dino-demo.js:200
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}. Press Play to try it."
msgstr ""
"Фіксована швидкість: збільшити {speed}. Натисніть Play, щоб спробувати."
#: website/public/assets/dino-demo.js:209
msgctxt "runtime"
msgid "Recovered rule: start at 6, then increase toward 13."
msgstr "Відновлене правило: починайте з 6, потім збільшуйте до 13."
#: website/public/assets/dino-demo.js:210
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}."
msgstr "Фіксована швидкість: {speed} обертання."
#: website/public/assets/dino-demo.js:242
msgctxt "runtime"
msgid ""
"Replayed the recovered rule. All four values match the controlled original-"
"game check when rounded to three decimals."
msgstr ""
"Відтворив Відновлене правило. Всі чотири значення відповідають "
"контрольованій перевірці в оригінальній грі, якщо округлити їх до трьох "
"знаків після коми."
#: website/public/assets/dino-demo.js:245
msgctxt "runtime"
msgid ""
"The replay differs from the recorded original-game values. Compare the speed"
" rule and settings above."
msgstr ""
"Відтворення відрізняється від значень, записаних в оригінальній грі. "
"Порівняйте наведені вище правила швидкості та налаштування."
#: website/public/assets/aegis-demo.js:22
#, python-brace-format
msgctxt "runtime"
msgid "{start}–{end} seconds"
msgstr "{start} і {end}"
#: website/public/assets/aegis-demo.js:29
#, python-brace-format
msgctxt "runtime"
msgid "{seconds} seconds, time block {block}"
msgstr "{seconds} секунди, часовий блок {block}"
#: website/public/assets/aegis-demo.js:35
msgctxt "runtime"
msgid ""
"Interactive calculation is unavailable in this browser. The example shows "
"the code at 59 seconds."
msgstr ""
"Інтерактивний розрахунок в цьому браузері недоступний. У прикладі код "
"відображається через 59 секунд."
#: website/public/assets/aegis-demo.js:62
msgctxt "runtime"
msgid "Checking…"
msgstr "Перевірка…"
#: website/public/assets/aegis-demo.js:76
#, python-brace-format
msgctxt "runtime"
msgid ""
"{passed} / {total} checks passed (six reference cases, at six and eight "
"digits)."
msgstr ""
"{passed} / {total} пройдено перевірок (шість контрольних випадків, "
"позначених шестизначними і восьмизначними цифрами)."
#: website/public/assets/aegis-demo.js:81
msgctxt "runtime"
msgid "Could not run the reference checks. Try again."
msgstr "Не вдалося виконати перевірку посилань. Пробувати знову."
#: website/public/assets/figures/analyst-thinking.svg:2
msgctxt "figure:analyst-thinking.svg"
msgid "An analyst thinking at a computer"
msgstr "Аналітик, який думає за комп'ютером"
#: website/public/assets/figures/ctf-mask-equation.svg:2
#: website/public/assets/figures/ctf-mask-equation.svg:7
msgctxt "figure:ctf-mask-equation.svg"
msgid "One check reveals one character"
msgstr "Одна перевірка виявляє один символ"
#: website/public/assets/figures/ctf-mask-equation.svg:3
msgctxt "figure:ctf-mask-equation.svg"
msgid ""
"The seventh mask selects only position 21 in the six by six input grid. Its "
"character code must equal 55, so the character is 7. The other masks select "
"different positions and give further equations."
msgstr ""
"Сьома маска вибирає лише позицію 21 у вхідній сітці шість на шість. Її "
"символьний код повинен дорівнювати 55, таким чином, символ дорівнює 7. Інші "
"маски вибирають інші позиції і дають додаткові рівняння."
#: website/public/assets/figures/ctf-mask-equation.svg:8
msgctxt "figure:ctf-mask-equation.svg"
msgid "The seventh check. Cell labels are input positions, starting at 0."
msgstr "Сьома перевірка. Мітки комірок-це Вхідні позиції, що починаються з 0."
#: website/public/assets/figures/ctf-mask-equation.svg:10
msgctxt "figure:ctf-mask-equation.svg"
msgid "Encoded mask: −21, +1, −14, 0"
msgstr "Кодована маска: -21, +1, -14, 0"
#: website/public/assets/figures/ctf-mask-equation.svg:11
msgctxt "figure:ctf-mask-equation.svg"
msgid "Skip 21 cells. Select 1. Skip 14. Stop at 0."
msgstr "Пропустіть 21 клітинку. Виберіть 1. Пропустіть 14. Зупиніться на 0."
#: website/public/assets/figures/ctf-mask-equation.svg:15
msgctxt "figure:ctf-mask-equation.svg"
msgid "Only one cell contributes to this sum"
msgstr "У сумі лише одна клітинка"
#: website/public/assets/figures/ctf-mask-equation.svg:18
msgctxt "figure:ctf-mask-equation.svg"
msgid "Position 21 in the flag must contain 7."
msgstr "Позиція 21 у прапорі повинна містити 7."
#: website/public/assets/figures/ctf-mask-equation.svg:20
msgctxt "figure:ctf-mask-equation.svg"
msgid "Selected: one cell"
msgstr "Виділено: одна клітинка"
#: website/public/assets/figures/ctf-mask-equation.svg:21
msgctxt "figure:ctf-mask-equation.svg"
msgid "26 masks give 26 equations."
msgstr "26 масок дають 26 рівнянь."
#: website/public/assets/figures/ctf-mask-equation.svg:22
msgctxt "figure:ctf-mask-equation.svg"
msgid "Solve them together to find the flag."
msgstr "Вирішіть їх разом, щоб знайти прапор."
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:2
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:9
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "DX-Ball sound-pan investigation"
msgstr "Дослідження звуку DX-Ball-панорамування"
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:3
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid ""
"REA provides the instruction, caller and byte-read evidence for one DX-Ball "
"function. A stack input is multiplied by 1.5625, offset by 500, scaled, and "
"converted to an integer. Maintained C is checked in 3,205 original-x86 cases"
" and a separate 63-byte compiler replay."
msgstr ""
"REA надає інструкцію, що викликає елемент і дані для зчитування байтів для "
"однієї функції DX-Ball. Вхідні дані стека множаться на 1,5625, зміщуються на"
" 500, масштабуються та перетворюються на ціле число. Підтримуваний C "
"перевіряється в 3205 оригінальних x86 випадках і в окремому 63-байтовому "
"відтворенні компілятором."
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:28
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Stack"
msgstr "Стек"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:29
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "input x"
msgstr "вхід x"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:33
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Integer"
msgstr "Ціле"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:34
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "return"
msgstr "return"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:35
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Reconstructed function"
msgstr "Відновлена функція"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:36
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Maintained C"
msgstr "Код на C"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:37
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Brick-hit caller"
msgstr "Виклик при ударі"
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:38
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "20 + 30 × tile_x"
msgstr "20 + 30 × tile_x"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:39
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Original code"
msgstr "Оригінал"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:40
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:43
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "comparison"
msgstr "порівняння"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:41
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "3,205 cases"
msgstr "3 205 тестів"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:42
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "VC4.0 build"
msgstr "Збірка VC4.0"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:44
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "63 matching bytes"
msgstr "Збіг 63 байтів"
#: website/public/assets/figures/rea-investigation-flow.svg:2
#: website/public/assets/figures/rea-investigation-flow.svg:10
msgctxt "figure:rea-investigation-flow.svg"
msgid "REA investigation flow"
msgstr "Хід розслідування REA"
#: website/public/assets/figures/rea-investigation-flow.svg:3
msgctxt "figure:rea-investigation-flow.svg"
msgid ""
"Ask a question about a local target. REA inspects and traces through local "
"analysis adapters, returns evidence, and supports follow-up questions as "
"your agent explains, implements and tests."
msgstr ""
"Задайте питання про локальний об'єкт. REA перевіряє та відстежує дані за "
"допомогою локальних адаптерів аналізу, повертає докази та підтримує подальші"
" запитання, коли ваш агент пояснює, впроваджує та тестує."
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:19
msgctxt "figure:rea-investigation-flow.svg"
msgid "1. Ask"
msgstr "1. Запитання"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:20
msgctxt "figure:rea-investigation-flow.svg"
msgid "Your agent + local target"
msgstr "Агент + локальний файл"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:21
msgctxt "figure:rea-investigation-flow.svg"
msgid "App / binary / browser"
msgstr "Програма / файл / Web"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:22
msgctxt "figure:rea-investigation-flow.svg"
msgid "2. Inspect & trace"
msgstr "2. Аналіз і пошук"
#: website/public/assets/figures/rea-investigation-flow.svg:24
msgctxt "figure:rea-investigation-flow.svg"
msgid "CLI / MCP"
msgstr "CLI / MCP"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:25
msgctxt "figure:rea-investigation-flow.svg"
msgid "3. Read the evidence"
msgstr "3. Читати докази"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:26
msgctxt "figure:rea-investigation-flow.svg"
msgid "Code / references /"
msgstr "Код / посилання /"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:27
msgctxt "figure:rea-investigation-flow.svg"
msgid "unknowns"
msgstr "невідоме"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:28
msgctxt "figure:rea-investigation-flow.svg"
msgid "4. Use what you learn"
msgstr "4. Застосувати"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:29
msgctxt "figure:rea-investigation-flow.svg"
msgid "Your agent"
msgstr "Ваш агент"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:30
msgctxt "figure:rea-investigation-flow.svg"
msgid "Explain / implement / test"
msgstr "Пояснити / створити / тест"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:31
msgctxt "figure:rea-investigation-flow.svg"
msgid "Analysis tools"
msgstr "Засоби аналізу"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:32
msgctxt "figure:rea-investigation-flow.svg"
msgid "Local analysis adapters"
msgstr "Локальні адаптери"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:33
msgctxt "figure:rea-investigation-flow.svg"
msgid "Follow-up question"
msgstr "Наступне запитання"
#: website/public/assets/figures/th04-bullet-ring.svg:2
msgctxt "figure:th04-bullet-ring.svg"
msgid "TH04: spacing and aiming a ring of bullets"
msgstr "TH04: відстань між кулями і наведення їх на ціль кільцем"
#: website/public/assets/figures/th04-bullet-ring.svg:3
msgctxt "figure:th04-bullet-ring.svg"
msgid ""
"A full clockwise turn has 256 angle units. Sixteen bullets start at angles "
"zero, sixteen, thirty-two, through 240. Adding an example player direction "
"of forty turns all sixteen directions together; the first bullet points at "
"the player. Template rotation is zero."
msgstr ""
"Повний поворот за годинниковою стрілкою має 256 кутових одиниць. Шістнадцять"
" точок відліку починаються з кутів від нуля, шістнадцяти, тридцяти двох до "
"240. Якщо додати приблизний напрямок гравця, що складається з сорока точок, "
"то вийде, що всі шістнадцять точок відліку збігаються; перша точка відліку "
"вказує на гравця. Обертання шаблону дорівнює нулю."
#: website/public/assets/figures/th04-bullet-ring.svg:8
msgctxt "figure:th04-bullet-ring.svg"
msgid "Fixed ring"
msgstr "Нерухоме кільце"
#: website/public/assets/figures/th04-bullet-ring.svg:9
msgctxt "figure:th04-bullet-ring.svg"
msgid "First bullet: angle 0"
msgstr "Перший маркер: кут 0"
#: website/public/assets/figures/th04-bullet-ring.svg:10
msgctxt "figure:th04-bullet-ring.svg"
msgid "Aimed ring"
msgstr "Націлене кільце"
#: website/public/assets/figures/th04-bullet-ring.svg:11
msgctxt "figure:th04-bullet-ring.svg"
msgid "First bullet: player direction"
msgstr "Перший пункт: напрямок руху гравця"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/th04-bullet-ring.svg:48
#: website/public/assets/figures/th04-bullet-ring.svg:86
msgctxt "figure:th04-bullet-ring.svg"
msgid "Origin"
msgstr "Центр"
#: website/public/assets/figures/th04-bullet-ring.svg:89
msgctxt "figure:th04-bullet-ring.svg"
msgid "Player"
msgstr "Гравець"
#: website/public/assets/figures/th04-bullet-ring.svg:94
msgctxt "figure:th04-bullet-ring.svg"
msgid "Same spacing: 256 ÷ 16 = 16 angle units = 22.5°"
msgstr "Однакова відстань: 256 ÷ 16 = 16 кутових одиниць = 22,5°"
#: website/public/blog/index.html:109
#: website/public/blog/touhou-reconstruction/index.html:109
#: website/public/examples/dino-lab/index.html:110
#: website/public/faq/index.html:109
#: website/public/first-investigation/index.html:109
#: website/public/get-started/index.html:109
#: website/public/guides/browser/index.html:109
#: website/public/guides/index.html:109
#: website/public/guides/javascript/index.html:109
#: website/public/guides/native/index.html:109 website/public/index.html:111
#: website/public/showcase/aegis/index.html:110
#: website/public/showcase/ctf/index.html:109
#: website/public/showcase/dx-ball/index.html:109
#: website/public/showcase/index.html:109
#: website/public/showcase/notion/index.html:109
#: website/public/showcase/th04/index.html:109
msgctxt "shared"
msgid "Showcases"
msgstr "Приклади"
#: website/public/blog/index.html:110
#: website/public/blog/touhou-reconstruction/index.html:110
#: website/public/examples/dino-lab/index.html:111
#: website/public/faq/index.html:110
#: website/public/first-investigation/index.html:110
#: website/public/get-started/index.html:110
#: website/public/guides/browser/index.html:110
#: website/public/guides/index.html:110
#: website/public/guides/javascript/index.html:110
#: website/public/guides/native/index.html:110 website/public/index.html:112
#: website/public/showcase/aegis/index.html:111
#: website/public/showcase/ctf/index.html:110
#: website/public/showcase/dx-ball/index.html:110
#: website/public/showcase/index.html:110
#: website/public/showcase/notion/index.html:110
#: website/public/showcase/th04/index.html:110
msgctxt "shared"
msgid "Blog"
msgstr "Блог"
#: website/public/blog/index.html:111
#: website/public/blog/touhou-reconstruction/index.html:111
#: website/public/examples/dino-lab/index.html:112
#: website/public/faq/index.html:111
#: website/public/first-investigation/index.html:111
#: website/public/get-started/index.html:111
#: website/public/guides/browser/index.html:111
#: website/public/guides/index.html:111
#: website/public/guides/javascript/index.html:111
#: website/public/guides/native/index.html:111 website/public/index.html:113
#: website/public/showcase/aegis/index.html:112
#: website/public/showcase/ctf/index.html:111
#: website/public/showcase/dx-ball/index.html:111
#: website/public/showcase/index.html:111
#: website/public/showcase/notion/index.html:111
#: website/public/showcase/th04/index.html:111
msgctxt "shared"
msgid "Get started"
msgstr "Почати"
#: website/public/blog/index.html:112
#: website/public/blog/touhou-reconstruction/index.html:112
#: website/public/examples/dino-lab/index.html:113
#: website/public/faq/index.html:112
#: website/public/first-investigation/index.html:112
#: website/public/get-started/index.html:112
#: website/public/guides/browser/index.html:112
#: website/public/guides/index.html:112
#: website/public/guides/javascript/index.html:112
#: website/public/guides/native/index.html:112 website/public/index.html:114
#: website/public/showcase/aegis/index.html:113
#: website/public/showcase/ctf/index.html:112
#: website/public/showcase/dx-ball/index.html:112
#: website/public/showcase/index.html:112
#: website/public/showcase/notion/index.html:112
#: website/public/showcase/th04/index.html:112
msgctxt "shared"
msgid "Guides"
msgstr "Посібники"
#: website/public/blog/index.html:209
#: website/public/blog/touhou-reconstruction/index.html:1059
#: website/public/examples/dino-lab/index.html:454
#: website/public/faq/index.html:552
#: website/public/first-investigation/index.html:502
#: website/public/get-started/index.html:861
#: website/public/guides/browser/index.html:477
#: website/public/guides/index.html:261
#: website/public/guides/javascript/index.html:482
#: website/public/guides/native/index.html:488 website/public/index.html:1165
#: website/public/showcase/aegis/index.html:787
#: website/public/showcase/ctf/index.html:756
#: website/public/showcase/dx-ball/index.html:764
#: website/public/showcase/index.html:296
#: website/public/showcase/notion/index.html:610
#: website/public/showcase/th04/index.html:779
msgctxt "shared"
msgid "Source"
msgstr "Вихідний код"
#: website/public/blog/index.html:210
#: website/public/blog/touhou-reconstruction/index.html:1060
#: website/public/examples/dino-lab/index.html:455
#: website/public/faq/index.html:553
#: website/public/first-investigation/index.html:503
#: website/public/get-started/index.html:862
#: website/public/guides/browser/index.html:478
#: website/public/guides/index.html:262
#: website/public/guides/javascript/index.html:483
#: website/public/guides/native/index.html:489 website/public/index.html:1166
#: website/public/showcase/aegis/index.html:788
#: website/public/showcase/ctf/index.html:757
#: website/public/showcase/dx-ball/index.html:765
#: website/public/showcase/index.html:297
#: website/public/showcase/notion/index.html:611
#: website/public/showcase/th04/index.html:780
msgctxt "shared"
msgid "MIT license"
msgstr "Ліцензія MIT"
#: website/public/blog/index.html:211
#: website/public/blog/touhou-reconstruction/index.html:1061
#: website/public/examples/dino-lab/index.html:456
#: website/public/faq/index.html:554
#: website/public/first-investigation/index.html:504
#: website/public/get-started/index.html:863
#: website/public/guides/browser/index.html:479
#: website/public/guides/index.html:263
#: website/public/guides/javascript/index.html:484
#: website/public/guides/native/index.html:490 website/public/index.html:1167
#: website/public/showcase/aegis/index.html:789
#: website/public/showcase/ctf/index.html:758
#: website/public/showcase/dx-ball/index.html:766
#: website/public/showcase/index.html:298
#: website/public/showcase/notion/index.html:612
#: website/public/showcase/th04/index.html:781
msgctxt "shared"
msgid "Join the community"
msgstr "Приєднатися до спільноти"
#: website/public/blog/index.html:212
#: website/public/blog/touhou-reconstruction/index.html:1062
#: website/public/examples/dino-lab/index.html:457
#: website/public/faq/index.html:555
#: website/public/first-investigation/index.html:505
#: website/public/get-started/index.html:864
#: website/public/guides/browser/index.html:480
#: website/public/guides/index.html:264
#: website/public/guides/javascript/index.html:485
#: website/public/guides/native/index.html:491 website/public/index.html:1168
#: website/public/showcase/aegis/index.html:790
#: website/public/showcase/ctf/index.html:759
#: website/public/showcase/dx-ball/index.html:767
#: website/public/showcase/index.html:299
#: website/public/showcase/notion/index.html:613
#: website/public/showcase/th04/index.html:782
msgctxt "shared"
msgid "Follow us on X"
msgstr "Стежити в X"
#: website/public/examples/dino-lab/index.html:293
msgctxt "page:examples/dino-lab/index.html"
msgid "REA · selected script source"
msgstr "REA * вибране джерело сценарію"
#: website/public/first-investigation/index.html:361
msgctxt "page:first-investigation/index.html"
msgid "Source"
msgstr "Вихідний код"
#: website/public/first-investigation/index.html:415
msgctxt "page:first-investigation/index.html"
msgid "Expected formatter output"
msgstr "Очікуваний результат форматування"
#: website/public/guides/index.html:206
msgctxt "page:guides/index.html"
msgid "Instructions"
msgstr "Інструкція"
#: website/public/guides/index.html:207
msgctxt "page:guides/index.html"
msgid "Caller"
msgstr "Абонент"
#: website/public/guides/index.html:208
msgctxt "page:guides/index.html"
msgid "Constants"
msgstr "Константа"
#: website/public/guides/index.html:209
msgctxt "page:guides/index.html"
msgid "C function"
msgstr "Функція C"
#: website/public/guides/index.html:224
msgctxt "page:guides/index.html"
msgid "Button"
msgstr "Кнопка"
#: website/public/guides/index.html:225
msgctxt "page:guides/index.html"
msgid "Preload API"
msgstr "API попереднього завантаження"
#: website/public/guides/index.html:226
msgctxt "page:guides/index.html"
msgid "IPC"
msgstr "МПК"
#: website/public/guides/index.html:226
msgctxt "page:guides/index.html"
msgid "CSV file"
msgstr "Файл CSV"
#: website/public/guides/index.html:246
msgctxt "page:guides/index.html"
msgid "Your click"
msgstr "Ваш клацання"
#: website/public/guides/index.html:247
msgctxt "page:guides/index.html"
msgid "Captured request"
msgstr "Захоплений запит"
#: website/public/guides/index.html:248
msgctxt "page:guides/index.html"
msgid "Export script"
msgstr "Експорт скрипта"
#: website/public/guides/javascript/index.html:344
msgctxt "page:guides/javascript/index.html"
msgid "REA result · summary.ipc excerpt"
msgstr "REA результат * підсумок.витяг з ipc"
#: website/public/guides/native/index.html:371
msgctxt "page:guides/native/index.html"
msgid "REA instruction excerpt · 0x406409"
msgstr "REA витяг з інструкції * 0x406409"
#: website/public/guides/native/index.html:385
msgctxt "page:guides/native/index.html"
msgid "REA caller excerpt · 0x411f5b"
msgstr "REA запит абонента * 0x411f5b"
#: website/public/guides/native/index.html:399
msgctxt "page:guides/native/index.html"
msgid "REA byte results · interpreted as little-endian doubles"
msgstr ""
"Результати в байтах REA * інтерпретуються як подвоєння в порядку зменшення"
#: website/public/guides/native/index.html:416
msgctxt "page:guides/native/index.html"
msgid "Recovered C · excerpt"
msgstr "Відновлений уривок з C ·"
#: website/public/index.html:219
msgctxt "page:index.html"
msgid "See how REA works ↓"
msgstr "Подивіться, як працює REA ↓"
#: website/public/index.html:220
msgctxt "page:index.html"
msgid "Setup guide"
msgstr "Посібник зі встановлення"
#: website/public/index.html:221
msgctxt "page:index.html"
msgid "Showcases →"
msgstr "Вітрина →"
#: website/public/index.html:731
msgctxt "page:index.html"
msgid "Selected settings from the inspected script"
msgstr "Вибрані налаштування з перевіреного скрипта"
#: website/public/index.html:903
msgctxt "page:index.html"
msgid "Readable summary of the % handler"
msgstr "Читається зведення про обробнику %"
#: website/public/index.html:967
msgctxt "page:index.html"
msgid "REA · selected original instructions"
msgstr "REA * вибрані оригінальні інструкції"
#: website/public/index.html:978
msgctxt "page:index.html"
msgid "Operator IDs · Microsoft’s source"
msgstr "Ідентифікатори операторів * вихідний код Microsoft"
#: website/public/index.html:1152
msgctxt "page:index.html"
msgid "Follow @reatools on X"
msgstr "Слідкуйте за @reatools на X"
#: website/public/showcase/aegis/index.html:386
#: website/public/showcase/aegis/index.html:418
msgctxt "page:showcase/aegis/index.html"
msgid "Agent → REA"
msgstr "Агент → REA"
#: website/public/showcase/aegis/index.html:396
msgctxt "page:showcase/aegis/index.html"
msgid "REA → agent · selected results"
msgstr "REA → агент * вибрані результати"
#: website/public/showcase/aegis/index.html:432
msgctxt "page:showcase/aegis/index.html"
msgid "REA → agent · methods and callers"
msgstr "REA → агент * методи та абоненти"
#: website/public/showcase/aegis/index.html:502
msgctxt "page:showcase/aegis/index.html"
msgid "REA · selected decompiled Java"
msgstr "REA * вибраний Декомпільований Java"
#: website/public/showcase/aegis/index.html:532
msgctxt "page:showcase/aegis/index.html"
msgid "Readable summary · agent's interpretation"
msgstr "Читабельне резюме * інтерпретація агента"
#: website/public/showcase/aegis/index.html:587
msgctxt "page:showcase/aegis/index.html"
msgid "REA · generateOTP, complete body"
msgstr "REA * generateOTP, повний корпус"
#: website/public/showcase/aegis/index.html:705
msgctxt "page:showcase/aegis/index.html"
msgid "Download Aegis APK"
msgstr "Завантажити Aegis APK"
#: website/public/showcase/aegis/index.html:709
msgctxt "page:showcase/aegis/index.html"
msgid "Download Android analysis provider"
msgstr "Завантажити Android analysis provider"
#: website/public/showcase/ctf/index.html:289
#: website/public/showcase/ctf/index.html:325
msgctxt "page:showcase/ctf/index.html"
msgid "Agent → REA"
msgstr "Агент → REA"
#: website/public/showcase/ctf/index.html:305
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · selected results"
msgstr "REA → агент * вибрані результати"
#: website/public/showcase/ctf/index.html:337
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · selected instructions"
msgstr "REA → агент * вибрані інструкції"
#: website/public/showcase/ctf/index.html:400
msgctxt "page:showcase/ctf/index.html"
msgid "Agent → REA · read_bytes"
msgstr "Агент → REA * прочитано_байт"
#: website/public/showcase/ctf/index.html:407
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · seventh entries"
msgstr "REA → агент * сьомі записи"
#: website/public/showcase/ctf/index.html:675
msgctxt "page:showcase/ctf/index.html"
msgid "Original executable · SHA-256"
msgstr "Оригінальний виконуваний файл * SHA-256"
#: website/public/showcase/ctf/index.html:711
msgctxt "page:showcase/ctf/index.html"
msgid "Download the original challenge"
msgstr "Скачайте оригінальну гру challenge"
#: website/public/showcase/ctf/index.html:715
msgctxt "page:showcase/ctf/index.html"
msgid "Download solver"
msgstr "Завантажити вирішувач"
#: website/public/showcase/dx-ball/index.html:316
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA result · pseudocode excerpt"
msgstr "Результат REA * фрагмент псевдокоду"
#. {ph0}: <code>analyze_function</code>
#: website/public/showcase/dx-ball/index.html:339
#: website/public/showcase/dx-ball/index.html:363
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Agent → REA · {ph0}"
msgstr "Агент → REA * функція {ph0}"
#: website/public/showcase/dx-ball/index.html:345
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA → agent · instruction excerpt"
msgstr "REA → агент * уривок з інструкції"
#: website/public/showcase/dx-ball/index.html:369
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA → agent · caller excerpt"
msgstr "REA → агент * уривок з повідомлення про абонента"
#. {ph0}: <code>read_bytes</code>
#: website/public/showcase/dx-ball/index.html:387
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Agent → REA · two {ph0} requests"
msgstr "Агент → REA * два {ph0}запиту на читання в байтах"
#: website/public/showcase/dx-ball/index.html:397
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA byte results · decoded as doubles"
msgstr "Результати в байтах REA * декодуються як подвійні"
#: website/public/showcase/dx-ball/index.html:750
msgctxt "page:showcase/dx-ball/index.html"
msgid "Start with your own target"
msgstr "Почніть зі своєї власної мети"
#: website/public/showcase/index.html:199
msgctxt "page:showcase/index.html"
msgid "APK"
msgstr "APK"
#: website/public/showcase/index.html:200
msgctxt "page:showcase/index.html"
msgid "Generating code"
msgstr "Генерація коду"
#: website/public/showcase/index.html:201
msgctxt "page:showcase/index.html"
msgid "Recovered rule"
msgstr "Відновлене правило"
#: website/public/showcase/index.html:202
msgctxt "page:showcase/index.html"
msgid "Adjustable clock"
msgstr "Регульований годинник"
#: website/public/showcase/index.html:217
msgctxt "page:showcase/index.html"
msgid "Binary"
msgstr "Двійковий"
#: website/public/showcase/index.html:218
msgctxt "page:showcase/index.html"
msgid "Checking code"
msgstr "Перевіряючий код"
#: website/public/showcase/index.html:219
msgctxt "page:showcase/index.html"
msgid "Equations"
msgstr "Рівняння"
#: website/public/showcase/index.html:220
msgctxt "page:showcase/index.html"
msgid "Correct!"
msgstr "Правильно!"
#: website/public/showcase/index.html:236
msgctxt "page:showcase/index.html"
msgid "Executable"
msgstr "Здійсненний"
#: website/public/showcase/index.html:237
msgctxt "page:showcase/index.html"
msgid "REA findings"
msgstr "Висновки REA"
#: website/public/showcase/index.html:238
msgctxt "page:showcase/index.html"
msgid "Recovered C"
msgstr "Відновлений C"
#: website/public/showcase/index.html:239
msgctxt "page:showcase/index.html"
msgid "Validation"
msgstr "Затвердження"
#: website/public/showcase/index.html:254
msgctxt "page:showcase/index.html"
msgid "Packaged app"
msgstr "Упакований додаток"
#: website/public/showcase/index.html:255
msgctxt "page:showcase/index.html"
msgid "Exposed API"
msgstr "Відкритий API"
#: website/public/showcase/index.html:256
msgctxt "page:showcase/index.html"
msgid "IPC wrappers"
msgstr "Оболонки IPC"
#: website/public/showcase/index.html:257
msgctxt "page:showcase/index.html"
msgid "Clipboard"
msgstr "Буфер обміну"
#: website/public/showcase/index.html:272
msgctxt "page:showcase/index.html"
msgid "Original DOS code"
msgstr "Вихідний код DOS"
#: website/public/showcase/index.html:273
msgctxt "page:showcase/index.html"
msgid "REA instructions"
msgstr "Інструкції щодо REA"
#: website/public/showcase/index.html:274
msgctxt "page:showcase/index.html"
msgid "Angle calculation"
msgstr "Розрахунок кута нахилу"
#: website/public/showcase/index.html:275
msgctxt "page:showcase/index.html"
msgid "Bullet ring"
msgstr "Кульове кільце"
#: website/public/showcase/notion/index.html:291
msgctxt "page:showcase/notion/index.html"
msgid "Exposed page API"
msgstr "Відкритий API сторінки"
#: website/public/showcase/notion/index.html:297
msgctxt "page:showcase/notion/index.html"
msgid "Renderer IPC call"
msgstr "Виклик IPC засобу візуалізації"
#: website/public/showcase/notion/index.html:459
msgctxt "page:showcase/notion/index.html"
msgid "Sent to the system clipboard"
msgstr "Надіслано до системного буфера обміну"
#: website/public/showcase/notion/index.html:467
msgctxt "page:showcase/notion/index.html"
msgid "Saved locally by Notion"
msgstr "Збережено локально за допомогою Notion"
#: website/public/showcase/notion/index.html:512
msgctxt "page:showcase/notion/index.html"
msgid "Markdown input"
msgstr "Введення даних для уцінки"
#: website/public/showcase/notion/index.html:519
msgctxt "page:showcase/notion/index.html"
msgid "Structured parser output · excerpt"
msgstr "Висновок структурованого синтаксичного аналізатора · Витяг"
#: website/public/showcase/notion/index.html:596
msgctxt "page:showcase/notion/index.html"
msgid "Analyze your own app"
msgstr "Проаналізуйте свій власний додаток"
#: website/public/showcase/th04/index.html:356
msgctxt "page:showcase/th04/index.html"
msgid "Agent → REA"
msgstr "Агент → REA"
#: website/public/showcase/th04/index.html:365
msgctxt "page:showcase/th04/index.html"
msgid "REA → agent · selected fields"
msgstr "REA → агент * вибрані поля"
#. {ph0}: <code>analyze_function</code>
#: website/public/showcase/th04/index.html:384
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Agent → REA · {ph0}"
msgstr "Агент → REA * функція {ph0}"
#: website/public/showcase/th04/index.html:390
msgctxt "page:showcase/th04/index.html"
msgid "REA → agent · instruction excerpt"
msgstr "REA → агент * уривок з інструкції"
#: website/public/showcase/th04/index.html:411
msgctxt "page:showcase/th04/index.html"
msgid "Same function result · aim excerpt"
msgstr "Результат тієї ж функції · витяг з aim"
#: website/public/showcase/th04/index.html:420
msgctxt "page:showcase/th04/index.html"
msgid "Corresponding maintained C++"
msgstr "Відповідний Підтримуваний c++"
#: website/public/showcase/th04/index.html:600
msgctxt "page:showcase/th04/index.html"
msgid "Ring macro · TH04 branch, excerpt"
msgstr "Кільцевий макрос * гілка TH04, фрагмент"
#: website/public/showcase/th04/index.html:610
msgctxt "page:showcase/th04/index.html"
msgid "Angle and velocity · source excerpt"
msgstr "Кут і швидкість * витяг з джерела"
#: website/public/assets/home.js:29
msgctxt "runtime"
msgid "Press % to see what happens to 10."
msgstr "Натисніть %, щоб побачити, що станеться з 10."
#: website/public/assets/home.js:32
msgctxt "runtime"
msgid "10% of 200 is 20. Press = to add it."
msgstr "10% від 200 дорівнює 20. Натисніть =, щоб додати це значення."
#: website/public/assets/home.js:33
msgctxt "runtime"
msgid "For multiplication, 10 becomes 0.1. Press = to multiply."
msgstr "При множенні 10 стає рівним 0,1. Натисніть = для множення."
#: scripts/website_i18n.py
msgctxt "runtime"
msgid "Translation is being updated. Read this page in English for now."
msgstr "Переклад оновлюється. Поки прочитайте цю сторінку англійською мовою."
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="faq-analysis-prompt" >
#. {ph3}: <span translate="no">/absolute/path/to/app</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/faq/index.html:412
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to analyze {ph3} and explain how it exports data. "
"Show the relevant code and source locations.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA для аналізу {ph3}і пояснення того, як "
"він експортує дані. Покажіть відповідний код та розташування "
"джерел.{ph4}{ph5}{ph6}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/first-investigation/index.html:230
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Встанови REA та підключи його до цього ШІ-помічника за "
"допомогою {ph3}. Спочатку покажи план змін і дочекайся мого схвалення. Потім"
" перевір встановлення.{ph4}{ph5}{ph6}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-analysis-prompt" >
#. {ph3}: <span translate="no" >https://rea.tools/examples/notes-
#. example.zip</span >
#. {ph4}: <span translate="no">notes.csv</span>
#. {ph5}: </span >
#. {ph6}: <span class="terminal-cursor" aria-hidden="true">
#. {ph7}: </span>
#: website/public/first-investigation/index.html:280
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Download {ph3} into a new example folder and unpack it. Use "
"REA to find what happens when I click Export notes. Show where {ph4} is "
"written, which fields it contains, and the relevant files and "
"lines.{ph5}{ph6}{ph7}"
msgstr ""
"{ph0}\"{ph1}{ph2}Завантаживши {ph3}в нову папку з прикладами і розпакуйте "
"її. Використовуйте REA, щоб побачити, що відбувається, коли я натискаю "
"\"експортувати нотатки\". Покажіть, де {ph4}що записано, які поля воно "
"містить, а також відповідні файли і рядки.{ph5}{ph6}{ph7}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="agent-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/get-started/index.html:419
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Встанови REA та підключи його до цього ШІ-помічника за "
"допомогою {ph3}. Спочатку покажи план змін і дочекайся мого схвалення. Потім"
" перевір встановлення.{ph4}{ph5}{ph6}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="home-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:251
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Встанови REA та підключи його до цього ШІ-помічника за "
"допомогою {ph3}. Спочатку покажи план змін і дочекайся мого схвалення. Потім"
" перевір встановлення.{ph4}{ph5}{ph6}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="website-project-prompt" >
#. {ph3}: <span translate="no">https://rea.tools/</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:1054
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect {ph3}. Clone this website for "
"me.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовуйте REA для перевірки {ph3}. Скопіюйте цей веб-"
"сайт для мене.{ph4}{ph5}{ph6}"
#. {ph0}: <span translate="no">dino-speed.js</span>
#: website/public/examples/dino-lab/index.html:307
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "Reconstruction · {ph0}"
msgstr "Реконструкція * {ph0}"
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/faq/index.html:205
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"With {ph0} and npm available, run setup, choose your coding agent and review"
" the proposed changes."
msgstr ""
"При {ph0}npm запустіть програму установки, виберіть свій кодуючий агент і "
"ознайомтеся з запропонованими змінами."
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:189
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "A supplied example · {ph0} and npm · Your coding agent"
msgstr "Наведений приклад · {ph0} та npm * ваш кодуючий агент"
#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <a href="../get-started/">
#. {ph2}: </a >
#: website/public/first-investigation/index.html:208
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"Use a coding agent such as Claude Code, Codex or Cursor. You’ll need {ph0} "
"and npm; the {ph1}setup guide lists supported versions{ph2}."
msgstr ""
"Використовуйте інструмент кодування, такий як Claude Code, Codex або Cursor."
" Вам знадобляться {ph0} і npm; в {ph1}керівництві по установці перераховані "
"підтримувані версії{ph2}."
#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">renderer.js</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>notes.exportCsv()</code>
#. {ph7}: </span >
#: website/public/first-investigation/index.html:326
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Page · {ph1}{ph2}{ph3}Export notes{ph4}{ph5}Calls {ph6}.{ph7}"
msgstr ""
"{ph0}Сторінка * {ph1}{ph2}{ph3} При експорті нотаток{ph4}{ph5} викликається "
"функція {ph6}.{ph7}"
#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">preload.js</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: <code>notes:export</code>
#. {ph5}: </span >
#. {ph6}: <span class="flow-note" >
#. {ph7}: </span >
#: website/public/first-investigation/index.html:334
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Bridge · {ph1}{ph2}{ph3}{ph4}{ph5}{ph6}Sends a named message to the "
"main process.{ph7}"
msgstr ""
"{ph0}Міст * {ph1}{ph2}{ph3}{ph4}{ph5}{ph6} в основний процес відправляється "
"іменоване повідомлення.{ph7}"
#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">main.js</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node" >
#. {ph4}: <span translate="no">notes.csv</span>
#. {ph5}: </span >
#. {ph6}: <span class="flow-note" >
#. {ph7}: <code>csv.js</code>
#. {ph8}: </span >
#: website/public/first-investigation/index.html:342
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Handler · {ph1}{ph2}{ph3}Write {ph4}{ph5}{ph6}Calls the formatter in "
"{ph7} and writes the file.{ph8}"
msgstr ""
"{ph0}Обробник · {ph1}{ph2}{ph3}Write {ph4}{ph5}{ph6}Викликає засіб "
"форматування в {ph7} і записує файл.{ph8}"
#. {ph0}: <span translate="no">main.js</span>
#: website/public/first-investigation/index.html:360
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0} · lines 8–12"
msgstr "{ph0} * рядки 8-12"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-check-prompt" >
#. {ph3}: <span translate="no">Hello, "REA"</span>
#. {ph4}: <span translate="no">toCsv</span>
#. {ph5}: <span translate="no">Node.js</span>
#. {ph6}: </span >
#. {ph7}: <span class="terminal-cursor" aria-hidden="true">
#. {ph8}: </span>
#: website/public/first-investigation/index.html:402
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Predict the CSV for a note with id 1 and title {ph3}. Then "
"run the example’s {ph4} formatter with {ph5} to check it. Show the "
"prediction and actual output.{ph6}{ph7}{ph8}"
msgstr ""
"{ph0}\"{ph1}{ph2}Прогнозуйте CSV для примітки з ідентифікатором 1 та "
"заголовком {ph3}. Потім запустіть {ph4}програму форматування прикладу "
"з{ph5}, щоб перевірити це. Покажіть прогноз і фактичний "
"результат.{ph6}{ph7}{ph8}"
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:420
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The title stays in one quoted field; each quotation mark is doubled. This "
"checks the formatter directly with {ph0}."
msgstr ""
"Заголовок залишається в одному полі, укладеному в лапки; кожна лапка "
"подвоюється. При цьому виконується пряма перевірка форматування за допомогою"
" {ph0}."
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:433
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0} · CSV formatter"
msgstr "{ph0} * Засіб форматування CSV"
#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:187
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
msgstr ""
"Вам знадобиться {ph0}22 (22.19+), 24 (24.11+) або 26+. У комплект поставки "
"входить {ph1}npm ."
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:192
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Don't have {ph0}, or not sure?"
msgstr "У вас немає {ph0} або ви не впевнені?"
#. {ph0}: <code>node -v</code>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:211
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
"Якщо {ph0} друкує версії v22.19+, v24.11+ або v26+, все готово. Якщо він "
"видає стару версію або \"не розпізнається\" / \"команда не знайдена\", "
"встановіть {ph1} 24 LTS:"
#. {ph0}: <span translate="no">export.js</span>
#: website/public/guides/browser/index.html:428
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} · example source excerpt"
msgstr "{ph0} * приклад витягу з джерела"
#. {ph0}: <a href="../../examples/notes-web/">
#. {ph1}: </a>
#. {ph2}: <a href="../../examples/notes-web/export.js" download >
#. {ph3}: <span translate="no">export.js</span>
#. {ph4}: </a >
#. {ph5}: <a href="../../examples/notes-web/notes.json" download >
#. {ph6}: <span translate="no">notes.json</span>
#. {ph7}: </a >
#: website/public/guides/browser/index.html:446
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}Open the example{ph1} · {ph2}Download {ph3}{ph4} · {ph5}Download "
"{ph6}{ph7}"
msgstr ""
"{ph0}Відкрийте приклад{ph1} · {ph2}Завантажити {ph3}{ph4} · {ph5}Завантажте "
"файл {ph6}{ph7}"
#. {ph0}: <span translate="no">renderer.js</span>
#: website/public/guides/javascript/index.html:296
#: website/public/guides/javascript/index.html:312
#: website/public/guides/javascript/index.html:327
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0} · example source"
msgstr "{ph0} * приклад джерела"
#. {ph0}: <code>notes-example</code>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/guides/javascript/index.html:361
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Download the example and unzip it. The archive contains the complete {ph0} "
"folder. Analyze it with {ph1} and npm; Electron is not needed for this "
"example."
msgstr ""
"Завантажте приклад і розпакуйте його. Архів містить повну папку з {ph0}. "
"Проаналізуйте його з {ph1}npm; Electron для цього прикладу не потрібен."
#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <a href="get-started/">
#. {ph2}: </a>
#: website/public/index.html:276
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"First time, or missing {ph0} or a coding agent? {ph1}Follow the step-by-step"
" setup guide →{ph2}"
msgstr ""
"Перший раз або відсутній {ph0} або використовується засіб кодування? "
"{ph1}Дотримуйтесь покрокового керівництва по налаштуванню →{ph2}"
#. {ph0}: <strong >
#. {ph1}: <span translate="no">200 + 10%</span>
#. {ph2}: </strong >
#: website/public/index.html:300
#, python-brace-format
msgctxt "page:index.html"
msgid "One question: {ph0}why does Calculator give 220 for {ph1}?{ph2}"
msgstr "Наприклад: {ph0}чому калькулятор дає 220 для {ph1}?{ph2}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="home-analysis-prompt" >
#. {ph3}: <span translate="no">200 + 10%</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:488
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator. Why does {ph3} give "
"220?{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовувати REA для перевірки Windows Calculator. Чому "
"{ph3} дають 220?{ph4}{ph5}{ph6}"
#. {ph0}: <span translate="no">index.js</span>
#: website/public/index.html:673
#, python-brace-format
msgctxt "page:index.html"
msgid "REA · loaded {ph0} · selected lines"
msgstr "REA · завантажено {ph0} * вибрані рядки"
#. {ph0}: <strong>
#. {ph1}: <span translate="no">200 + 10%</span>
#. {ph2}: </strong>
#: website/public/index.html:777
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"We saw why {ph0}{ph1} gives 220.{ph2} Now let’s recover the rules for both +"
" and ×, and try them."
msgstr ""
"Ми бачили, чому {ph0}{ph1} дають 220.{ph2} Тепер давайте відновимо правила "
"для + і × і спробуємо їх застосувати."
#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">calc.exe</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>ms-calculator:</code>
#. {ph7}: </span >
#: website/public/index.html:934
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}01 · REA reads {ph1}{ph2}{ph3}It launches the Calculator "
"app{ph4}{ph5}The code opens {ph6}. The agent then selects the installed "
"app’s library.{ph7}"
msgstr ""
"{ph0}01 · REA читає {ph1}{ph2}{ph3} При запуску програми "
"Calculator{ph4}{ph5} код відкриває {ph6}. Потім агент вибирає бібліотеку "
"встановленого додатка.{ph7}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="aegis-prompt" >
#. {ph3}: <span translate="no" >3.apk</span >
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/showcase/aegis/index.html:265
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect aegis-v3.4.{ph3}. Find how it generates "
"the six-digit login code, explain why it changes every 30 seconds, and "
"rebuild a small demo where I can change the time.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}\"{ph1}{ph2}Використовувати REA для перевірки aegis-v3.4. {ph3}. "
"Дізнайтеся, як він генерує шестизначний код для входу, поясніть, чому він "
"змінюється кожні 30 секунд, і відновіть невелику демонстрацію, де я можу "
"змінити час.{ph4}{ph5}{ph6}"
#. {ph0}: <span translate="no">preload.js</span>
#: website/public/showcase/notion/index.html:329
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "tab_browser_view/{ph0} · API member"
msgstr "tab_browser_view/{ph0} * Учасник API"
#. {ph0}: <span translate="no">preload.js</span>
#: website/public/showcase/notion/index.html:358
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "tab_browser_view/{ph0} · IPC helper"
msgstr "tab_browser_view/{ph0} * Помічник IPC"
#. {ph0}: <span translate="no">index.js</span>
#: website/public/showcase/notion/index.html:389
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "main/{ph0} · handler helper"
msgstr "main/{ph0} * помічник обробника"
#. {ph0}: <span translate="no">index.js</span>
#: website/public/showcase/notion/index.html:417
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "main/{ph0} · clipboard receiver"
msgstr "головний/{ph0} * приймач буфера обміну"
#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
#~ msgid "DXBALL.EXE"
#~ msgstr "DXBALL.EXE"
#~ msgctxt "page:examples/dino-lab/index.html"
#~ msgid "Reconstruction · dino-speed.js"
#~ msgstr "Реконструкція * dino-speed.js"
#~ msgctxt "page:faq/index.html"
#~ msgid ""
#~ "With Node.js and npm available, run setup, choose your coding agent and "
#~ "review the proposed changes."
#~ msgstr ""
#~ "При Node.js Node.js і npm запустіть програму встановлення, виберіть свого "
#~ "програміста та ознайомтесь із запропонованими змінами."
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "A supplied example · Node.js and npm · Your coding agent"
#~ msgstr "Наведений приклад · Node.js та npm * ваш кодуючий агент"
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "Use a coding agent such as Claude Code, Codex or Cursor. You’ll need Node.js"
#~ " and npm; the {ph0}setup guide lists supported versions{ph1}."
#~ msgstr ""
#~ "Використовуйте інструмент кодування, такий як Claude Code, Codex або Cursor."
#~ " Вам знадобляться Node.js і npm; в {ph0}керівництві по установці "
#~ "перераховані підтримувані версії{ph1}."
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}Page · renderer.js{ph1}{ph2}Export notes{ph3}{ph4}Calls {ph5}.{ph6}"
#~ msgstr ""
#~ "{ph0}Сторінка * renderer.js{ph1}{ph2} При експорті нотаток{ph3}{ph4} "
#~ "викликається функція {ph5}.{ph6}"
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}Bridge · preload.js{ph1}{ph2}{ph3}{ph4}{ph5}Sends a named message to "
#~ "the main process.{ph6}"
#~ msgstr ""
#~ "{ph0}Міст * preload.js{ph1}{ph2}{ph3}{ph4}{ph5} в основний процес "
#~ "відправляється іменоване повідомлення.{ph6}"
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}Handler · main.js{ph1}{ph2}Write notes.csv{ph3}{ph4}Calls the formatter"
#~ " in {ph5} and writes the file.{ph6}"
#~ msgstr ""
#~ "{ph0}Обробник * main.js{ph1}{ph2} Запис нотаток.csv{ph3}{ph4} Викликає засіб"
#~ " форматування в {ph5} і записує файл.{ph6}"
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Predict the CSV for a note with id 1 and title Hello, "
#~ "\"REA\". Then run the example’s toCsv formatter with Node.js to check it. "
#~ "Show the prediction and actual output.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}\"{ph1}{ph2}Спрогнозувавши CSV- файл для нотатки з ідентифікатором 1 та"
#~ " заголовком \" Привіт, REA\". Потім запустіть інструмент форматування toCsv "
#~ "у прикладі за допомогою Node.jsNode.js щоб перевірити його. Покажіть прогноз"
#~ " і фактичний результат.{ph3}{ph4}{ph5}"
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "The title stays in one quoted field; each quotation mark is doubled. This "
#~ "checks the formatter directly with Node.js."
#~ msgstr ""
#~ "Заголовок залишається в одному полі, укладеному в лапки; кожна лапка "
#~ "подвоюється. При цьому виконується пряма перевірка форматування за допомогою"
#~ " Node.js."
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "Node.js · CSV formatter"
#~ msgstr "Node.js * Засіб форматування CSV"
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "You'll need Node.js 22 (22.19+), 24 (24.11+) or 26+. npm comes with Node.js."
#~ msgstr ""
#~ "Вам знадобиться Node.js 22 (22.19+), 24 (24.11+) або 26+. npm поставляється "
#~ "з Node.js."
#~ msgctxt "page:get-started/index.html"
#~ msgid "Don't have Node.js, or not sure?"
#~ msgstr "У вас немає Node.js або ви не впевнені?"
#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
#~ "older version or \"not recognized\" / \"command not found\", install Node.js"
#~ " 24 LTS:"
#~ msgstr ""
#~ "Якщо {ph0} друкує версії v22.19+, v24.11+ або v26+, все готово. Якщо він "
#~ "видає стару версію або \"не розпізнається\" / \"команда не знайдена\", "
#~ "встановіть Node.js 24 LTS:"
#, python-brace-format
#~ msgctxt "page:guides/browser/index.html"
#~ msgid ""
#~ "{ph0}Open the example{ph1} · {ph2}Download export.js{ph3} · {ph4}Download "
#~ "notes.json{ph5}"
#~ msgstr ""
#~ "{ph0}Відкрийте приклад{ph1} · {ph2}Завантажити export.js{ph3} · "
#~ "{ph4}Завантажте файл notes.json{ph5}"
#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid ""
#~ "Download the example and unzip it. The archive contains the complete {ph0} "
#~ "folder. Analyze it with Node.js and npm; Electron is not needed for this "
#~ "example."
#~ msgstr ""
#~ "Завантажте приклад і розпакуйте його. Архів містить повну папку з {ph0}. "
#~ "Проаналізуйте це з Node.js Node.js і npm; у цьому прикладі Electron не "
#~ "потрібен."
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "First time, or missing Node.js or a coding agent? {ph0}Follow the step-by-"
#~ "step setup guide →{ph1}"
#~ msgstr ""
#~ "Перший раз або відсутній Node.js або використовується засіб кодування? "
#~ "{ph0}Дотримуйтесь покрокового керівництва по налаштуванню →{ph1}"
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "One question: {ph0}why does Calculator give 220 for 200 + 10%?{ph1}"
#~ msgstr "Наприклад: {ph0}чому калькулятор дає 220 для 200 + 10%?{ph1}"
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator. Why does 200 + 10% "
#~ "give 220?{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}\"{ph1}{ph2}Використовувати REA для перевірки Windows Calculator. Чому "
#~ "200 + 10% дають 220?{ph3}{ph4}{ph5}"
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "We saw why {ph0}200 + 10% gives 220.{ph1} Now let’s recover the rules for "
#~ "both + and ×, and try them."
#~ msgstr ""
#~ "Ми бачили, чому {ph0}200 + 10% дають 220.{ph1} Тепер давайте відновимо "
#~ "правила для + і × і спробуємо їх застосувати."
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}01 · REA reads calc.exe{ph1}{ph2}It launches the Calculator "
#~ "app{ph3}{ph4}The code opens {ph5}. The agent then selects the installed "
#~ "app’s library.{ph6}"
#~ msgstr ""
#~ "{ph0}01 · REA читає calc.exe{ph1}{ph2} При запуску програми "
#~ "Calculator{ph3}{ph4} код відкриває {ph5}. Потім агент вибирає бібліотеку "
#~ "встановленого додатка.{ph6}"
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Use REA to inspect aegis-v3.4.3.apk. Find how it generates "
#~ "the six-digit login code, explain why it changes every 30 seconds, and "
#~ "rebuild a small demo where I can change the time.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}\"{ph1}{ph2}Використовувати REA для перевірки aegis-v3.4. 3.apk. "
#~ "Дізнайтеся, як він генерує шестизначний код для входу, поясніть, чому він "
#~ "змінюється кожні 30 секунд, і відновіть невелику демонстрацію, де я можу "
#~ "змінити час.{ph3}{ph4}{ph5}"
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · API member"
#~ msgstr "tab_browser_view/preload.JS * член API"
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · IPC helper"
#~ msgstr "tab_browser_view/preload.JS * Помічник IPC"
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · handler helper"
#~ msgstr "main/index.js * помічник обробника"
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · clipboard receiver"
#~ msgstr "main/index.JS * приймач буфера обміну"
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "main.js · lines 8–12"
#~ msgstr "main.JS * рядки 8-12"
#~ msgctxt "page:guides/browser/index.html"
#~ msgid "export.js · example source excerpt"
#~ msgstr "export.js * приклад витягу з джерела"
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "renderer.js · example source"
#~ msgstr "renderer.js * приклад джерела"
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "preload.js · example source"
#~ msgstr "preload.js * приклад джерела"
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "main.js · example source"
#~ msgstr "main.js * приклад джерела"
#~ msgctxt "page:index.html"
#~ msgid "REA · loaded index.js · selected lines"
#~ msgstr "REA · завантажено index.js * вибрані рядки"
#, python-brace-format
#~ msgctxt "page:faq/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Use REA to analyze /absolute/path/to/app and explain how it "
#~ "exports data. Show the relevant code and source locations.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}\"{ph1}{ph2}Використовувати REA для аналізу / абсолютного / шляху/до / "
#~ "програми та поясніть, як вона експортує дані. Покажіть відповідний код та "
#~ "розташування джерел.{ph3}{ph4}{ph5}"
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using npx "
#~ "rea-agents@latest setup. Show me the setup plan for approval, then verify "
#~ "the installation.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}\"{ph1}{ph2}Установивши REA і підключіть його до цього агента "
#~ "програмування за допомогою npx rea-agents@latest setup. Покажіть мені план "
#~ "встановлення для затвердження, а потім перевірте правильність "
#~ "встановлення.{ph3}{ph4}{ph5}"
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Download https://rea.tools/examples/notes-example.zip into a"
#~ " new example folder and unpack it. Use REA to find what happens when I click"
#~ " Export notes. Show where notes.csv is written, which fields it contains, "
#~ "and the relevant files and lines.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}\"{ph1}{ph2}Завантаживши https://rea.tools/examples/notes-example.zip в"
#~ " нову папку з прикладами і розпакуйте її. Використовувати REA, щоб побачити,"
#~ " що відбувається, коли я натискаю \"експортувати нотатки\". Покажіть, де "
#~ "записаний файл notes.csv, які поля він містить, а також відповідні файли та "
#~ "рядки.{ph3}{ph4}{ph5}"
#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using npx "
#~ "rea-agents@latest setup. Show me the setup plan for approval, then verify "
#~ "the installation.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}\"{ph1}{ph2}Установивши REA і підключіть його до цього агента "
#~ "програмування за допомогою npx rea-agents@latest setup. Покажіть мені план "
#~ "встановлення для затвердження, а потім перевірте правильність "
#~ "встановлення.{ph3}{ph4}{ph5}"
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using npx "
#~ "rea-agents@latest setup. Show me the setup plan for approval, then verify "
#~ "the installation.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}\"{ph1}{ph2}Установивши REA і підключіть його до цього агента "
#~ "програмування за допомогою npx rea-agents@latest setup. Покажіть мені план "
#~ "встановлення для затвердження, а потім перевірте правильність "
#~ "встановлення.{ph3}{ph4}{ph5}"
#~ msgctxt "page:index.html"
#~ msgid "0x5b"
#~ msgstr "0x5b"
#~ msgctxt "page:index.html"
#~ msgid "0x5c"
#~ msgstr "0x5c"
#~ msgctxt "page:index.html"
#~ msgid "0x64"
#~ msgstr "0x64"
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Use REA to inspect https://rea.tools/. Clone this website "
#~ "for me.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}\"{ph1}{ph2}Використовувати REA для перевірки https://rea.tools/. "
#~ "Клонуйте цей веб-сайт для мене.{ph3}{ph4}{ph5}"
#~ msgctxt "figure:ctf-mask-equation.svg"
#~ msgid "code[21] = 55"
#~ msgstr "код[21] = 55"
#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
#~ msgid "0x00406400"
#~ msgstr "0x00406400"
#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
#~ msgid "× pan_scale"
#~ msgstr "× панорамний масштаб"
#, python-brace-format
#~ msgctxt "shared"
#~ msgid "{ph0}REA{ph1}{ph2}Reverse Engineer Anything{ph3}"
#~ msgstr "{ph0}REA{ph1}{ph2} зворотне проектування чого завгодно{ph3}"
#, python-brace-format
#~ msgctxt "shared"
#~ msgid ""
#~ "{ph0}Showcases{ph1} {ph2}Blog{ph3} {ph4}Get started{ph5} {ph6}Guides{ph7} "
#~ "{ph8}FAQ{ph9}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "shared"
#~ msgid ""
#~ "{ph0}Source{ph1}{ph2}MIT license{ph3}{ph4}Join the community{ph5}{ph6}Follow"
#~ " us on X{ph7}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:blog/touhou-reconstruction/index.html"
#~ msgid "{ph0}TH08{ph1}{ph2}→{ph3}{ph4}TH095{ph5}{ph6}→{ph7}{ph8}TH04{ph9}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:examples/dino-lab/index.html"
#~ msgid "{ph0}REA · selected script source{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "{ph0}main.js · lines 8–12{ph1}{ph2}Source{ph3}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "{ph0}Expected formatter output{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/browser/index.html"
#~ msgid "{ph0}export.js · example source excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/index.html"
#~ msgid ""
#~ "{ph0}Instructions{ph1} {ph2}→{ph3} {ph4}Caller{ph5} {ph6}→{ph7} "
#~ "{ph8}Constants{ph9} {ph10}→{ph11} {ph12}C function{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/index.html"
#~ msgid ""
#~ "{ph0}Button{ph1} {ph2}→{ph3} {ph4}Preload API{ph5} {ph6}→{ph7} {ph8}IPC{ph9}"
#~ " {ph10}→{ph11} {ph12}CSV file{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/index.html"
#~ msgid ""
#~ "{ph0}Your click{ph1} {ph2}→{ph3} {ph4}Captured request{ph5} {ph6}→{ph7} "
#~ "{ph8}Export script{ph9}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}renderer.js · example source{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}preload.js · example source{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}main.js · example source{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}REA result · summary.ipc excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}REA instruction excerpt · 0x406409{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}REA caller excerpt · 0x411f5b{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}REA byte results · interpreted as little-endian doubles{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}Recovered C · excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}See how REA works ↓{ph1} {ph2}Setup guide{ph3} {ph4}Showcases →{ph5}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}REA · loaded index.js · selected lines{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Selected settings from the inspected script{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Readable summary of the % handler{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}REA · selected original instructions{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Operator IDs · Microsoft’s source{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Join the community{ph1} {ph2}Follow @reatools on X{ph3}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}Agent → REA{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA → agent · selected results{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA → agent · methods and callers{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA · selected decompiled Java{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}Readable summary · agent's interpretation{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA · generateOTP, complete body{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid ""
#~ "{ph0}Download Aegis APK{ph1}{ph2}Download Android analysis provider{ph3}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Agent → REA{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}REA → agent · selected results{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}REA → agent · selected instructions{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Agent → REA · read_bytes{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}REA → agent · seventh entries{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Original executable · SHA-256{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Download the original challenge{ph1}{ph2}Download solver{ph3}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA result · pseudocode excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}Agent → REA · {ph1}{ph2}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA → agent · instruction excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA → agent · caller excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}Agent → REA · two {ph1} requests{ph2}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA byte results · decoded as doubles{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}Start with your own target{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}APK{ph1} {ph2}→{ph3} {ph4}Generating code{ph5} {ph6}→{ph7} "
#~ "{ph8}Recovered rule{ph9} {ph10}→{ph11} {ph12}Adjustable clock{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Binary{ph1} {ph2}→{ph3} {ph4}Checking code{ph5} {ph6}→{ph7} "
#~ "{ph8}Equations{ph9} {ph10}→{ph11} {ph12}Correct!{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Executable{ph1} {ph2}→{ph3} {ph4}REA findings{ph5} {ph6}→{ph7} "
#~ "{ph8}Recovered C{ph9} {ph10}→{ph11} {ph12}Validation{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Packaged app{ph1} {ph2}→{ph3} {ph4}Exposed API{ph5} {ph6}→{ph7} "
#~ "{ph8}IPC wrappers{ph9} {ph10}→{ph11} {ph12}Clipboard{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Original DOS code{ph1} {ph2}→{ph3} {ph4}REA instructions{ph5} "
#~ "{ph6}→{ph7} {ph8}Angle calculation{ph9} {ph10}→{ph11} {ph12}Bullet "
#~ "ring{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Exposed page API{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Renderer IPC call{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Sent to the system clipboard{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Saved locally by Notion{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Markdown input{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Structured parser output · excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Analyze your own app{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Agent → REA{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}REA → agent · selected fields{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Agent → REA · {ph1}{ph2}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}REA → agent · instruction excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Same function result · aim excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Corresponding maintained C++{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Ring macro · TH04 branch, excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Angle and velocity · source excerpt{ph1}"
#~ msgstr ""